diff --git a/Frontend Angular 4/package-lock.json b/Frontend Angular 4/package-lock.json
index 8d5abe6220a5f358d410e366560486f3c52726ce..8e3b68b3eae701782c602d6b30a30a358f9bc89e 100644
--- a/Frontend Angular 4/package-lock.json	
+++ b/Frontend Angular 4/package-lock.json	
@@ -4506,6 +4506,11 @@
       "resolved": "https://registry.npmjs.org/double-bits/-/double-bits-1.1.1.tgz",
       "integrity": "sha512-BCLEIBq0O/DWoA7BsCu/R+RP0ZXiowP8BhtJT3qeuuQEBpnS8LK/Wo6UTJQv6v8mK1fj8n90YziHLwGdM5whSg=="
     },
+    "earcut": {
+      "version": "2.2.4",
+      "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz",
+      "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ=="
+    },
     "ecc-jsbn": {
       "version": "0.1.2",
       "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
@@ -5337,11 +5342,6 @@
         "assert-plus": "^1.0.0"
       }
     },
-    "gif.js": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/gif.js/-/gif.js-0.2.0.tgz",
-      "integrity": "sha512-bYxCoT8OZKmbxY8RN4qDiYuj4nrQDTzgLRcFVovyona1PTWNePzI4nzOmotnlOFIzTk/ZxAHtv+TfVLiBWj/hw=="
-    },
     "glob": {
       "version": "7.1.4",
       "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
@@ -5397,11 +5397,11 @@
       "dev": true
     },
     "graph3D": {
-      "version": "git+https://github.com/ifagian/graph3D.git#71770714d10f7ef67e6e7f430b6b90e926ce0b6d",
-      "from": "git+https://github.com/ifagian/graph3D.git#master",
+      "version": "git+https://github.com/ncamera/graph3D.git#8a7d10a4e93ab6a7010c6999c87b7dd9a2a629db",
+      "from": "git+https://github.com/ncamera/graph3D.git",
       "requires": {
-        "gif.js": "^0.2.0",
-        "three": "^0.90.0"
+        "earcut": "^2.2.4",
+        "three": "^0.140.0"
       }
     },
     "handle-thing": {
@@ -10286,9 +10286,9 @@
       "dev": true
     },
     "three": {
-      "version": "0.90.0",
-      "resolved": "https://registry.npmjs.org/three/-/three-0.90.0.tgz",
-      "integrity": "sha512-sCTgOp/0ITLy0bsUoNeUROq2Tt1G0+StfRBs9ljFTENRF5JkKlTjZ+RWSH6qyq6O3c5fDKRupfuqZE/+LbETiA=="
+      "version": "0.140.2",
+      "resolved": "https://registry.npmjs.org/three/-/three-0.140.2.tgz",
+      "integrity": "sha512-DdT/AHm/TbZXEhQKQpGt5/iSgBrmXpjU26FNtj1KhllVPTKj1eG4X/ShyD5W2fngE+I1s1wa4ttC4C3oCJt7Ag=="
     },
     "through": {
       "version": "2.3.8",
diff --git a/Frontend Angular 4/package.json b/Frontend Angular 4/package.json
index bf28c42764add8ca50bf8b95c8dce468ba398152..ec57545dc01beac4d41b11babe3a45c059082c6c 100755
--- a/Frontend Angular 4/package.json	
+++ b/Frontend Angular 4/package.json	
@@ -29,7 +29,7 @@
     "flag-icon-css": "^3.2.1",
     "font-awesome": "^4.7.0",
     "function-plot": "https://github.com/ncamera/function-plot",
-    "graph3D": "https://github.com/ifagian/graph3D#master",
+    "graph3D": "https://github.com/ncamera/graph3D",
     "ionicons": "^3.0.0",
     "jq-console": "^2.13.2",
     "jquery": "^3.2.1",
diff --git a/Frontend Angular 4/src/app/layout/matefun/codemirror/addons/hint_words.js b/Frontend Angular 4/src/app/layout/matefun/codemirror/addons/hint_words.js
index 0bf43908262d086986c9c90236b3950ebadc90c3..eb9ee0f342cccf8cc8e2005b42b9e89b3a0053d1 100755
--- a/Frontend Angular 4/src/app/layout/matefun/codemirror/addons/hint_words.js	
+++ b/Frontend Angular 4/src/app/layout/matefun/codemirror/addons/hint_words.js	
@@ -1,62 +1,175 @@
 // English words
 var EN_functions = [
-  '-', 'round', 'sin', 'cos', 'squareroot', 'rgb', 'rect', 'circ', 'segment', 'poli', 'join', 'color', 'move', 'rotate', 'scale', 'toFig', 'segment3D', 'sphere', 'cylinder', 'cube', 'ring', 'join3D', 'color3D', 'move3D', 'rotate3D', 'scale3D', 'range', 'first', 'rest'
-]
+  "-",
+  "round",
+  "sin",
+  "cos",
+  "squareroot",
+  "rgb",
+  "rect",
+  "circ",
+  "segment",
+  "poli",
+  "join",
+  "color",
+  "move",
+  "rotate",
+  "scale",
+  "toFig",
+  "segment3D",
+  "sphere",
+  "tetrahedron",
+  "prism",
+  "octahedron",
+  "dodecahedron",
+  "icosahedron",
+  "ring",
+  "joinFigIn3D",
+  "join3D",
+  "color3D",
+  "transparency3D",
+  "move3D",
+  "rotate3D",
+  "scale3D",
+  "range",
+  "first",
+  "rest",
+];
 
-var EN_default_sets = [
-  'R', 'Color', 'Fig', 'A', 'Fig3D'
-]
+var EN_default_sets = ["R", "Color", "Fig", "A", "Fig3D"];
 
 var EN_typed_functions = [
-  '- :: R -> R', 'round :: R -> R', 'sin :: R -> R', 'cos :: R -> R', 'squareroot :: R -> R',
-  'rgb :: (R X R X R) -> Color', 'rect :: (R X R) -> Fig', 'circ :: R -> Fig', 'segment :: ((R X R) X (R X R)) -> Fig',
-  'poli :: (R X R)* -> Fig', 'join :: (Fig X Fig) -> Fig', 'color :: (Fig X Color) -> Fig', 'move :: (Fig X (R X R)) -> Fig', 
-  'rotate :: (Fig X R) -> Fig', 'scale :: (Fig X R) -> Fig', 'toFig :: A -> Fig', 'segment3D :: ((R X R X R) X (R X R X R)) -> Fig3D', 
-  'sphere :: R -> Fig3D', 'cylinder :: (R X R X R) -> Fig3D', 'cube :: (R X R X R) -> Fig3D', 'ring :: (R X R X R) -> Fig3D', 
-  'join3D :: (Fig3D X Fig3D) -> Fig3D', 'color3D :: (Fig3D X Color) -> Fig3D', 'move3D :: (Fig3D X (R X R X R)) -> Fig3D', 
-  'rotate3D :: (Fig3D X (R X R X R)) -> Fig3D', 'scale3D :: (Fig3D X R) -> Fig3D', 'range :: (R X R X R) -> R*', 
-  'first :: A* -> A', 'rest :: A* -> A*'
-]
+  "- :: R -> R",
+  "round :: R -> R",
+  "sin :: R -> R",
+  "cos :: R -> R",
+  "squareroot :: R -> R",
+  "rgb :: (R X R X R) -> Color",
+  "rect :: (R X R) -> Fig",
+  "circ :: R -> Fig",
+  "segment :: ((R X R) X (R X R)) -> Fig",
+  "poli :: (R X R)* -> Fig",
+  "join :: (Fig X Fig) -> Fig",
+  "color :: (Fig X Color) -> Fig",
+  "move :: (Fig X (R X R)) -> Fig",
+  "rotate :: (Fig X R) -> Fig",
+  "scale :: (Fig X R) -> Fig",
+  "toFig :: A -> Fig",
+  "segment3D :: ((R X R X R) X (R X R X R)) -> Fig3D",
+  "sphere :: R -> Fig3D",
+  "tetrahedron :: R -> Fig3D",
+  "prism :: (R X R X R) -> Fig3D",
+  "octahedron :: R -> Fig3D",
+  "dodecahedron :: R -> Fig3D",
+  "icosahedron :: R -> Fig3D",
+  "ring :: (R X R X R) -> Fig3D",
+  "joinFigIn3D :: (Fig X Fig X R) -> Fig3D",
+  "join3D :: (Fig3D X Fig3D) -> Fig3D",
+  "color3D :: (Fig3D X Color) -> Fig3D",
+  "transparency3D :: (Fig3D X R) -> Fig3D",
+  "move3D :: (Fig3D X (R X R X R)) -> Fig3D",
+  "rotate3D :: (Fig3D X (R X R X R)) -> Fig3D",
+  "scale3D :: (Fig3D X R) -> Fig3D",
+  "range :: (R X R X R) -> R*",
+  "first :: A* -> A",
+  "rest :: A* -> A*",
+];
 
 // Spanish words
 
 var ES_functions = [
-  '-', 'red', 'sen', 'cos', 'raizcuad', 'rgb', 'rect', 'circ', 'segmento', 'poli', 'juntar', 'color', 'mover', 'rotar', 'escalar', 'aFig', 'segmento3D', 'esfera', 'cilindro', 'cubo', 'anillo', 'juntar3D', 'color3D', 'mover3D', 'rotar3D', 'escalar3D', 'rango', 'primero', 'resto'
-]
+  "-",
+  "red",
+  "sen",
+  "cos",
+  "raizcuad",
+  "rgb",
+  "rect",
+  "circ",
+  "segmento",
+  "poli",
+  "juntar",
+  "color",
+  "mover",
+  "rotar",
+  "escalar",
+  "aFig",
+  "segmento3D",
+  "esfera",
+  "tetraedro",
+  "prisma",
+  "octaedro",
+  "dodecaedro",
+  "icosaedro",
+  "anillo",
+  "juntarFigEn3D",
+  "juntar3D",
+  "color3D",
+  "transparencia3D",
+  "mover3D",
+  "rotar3D",
+  "escalar3D",
+  "rango",
+  "primero",
+  "resto",
+];
 
-var ES_default_sets = [
-  'R', 'Color', 'Fig', 'A', 'Fig3D'
-]
+var ES_default_sets = ["R", "Color", "Fig", "A", "Fig3D"];
 
 var ES_typed_functions = [
-  '- :: R -> R', 'red :: R -> R', 'sen :: R -> R', 'cos :: R -> R', 'raizcuad :: R -> R', 
-  'rgb :: (R X R X R) -> Color', 'rect :: (R X R) -> Fig', 'circ :: R -> Fig', 'segmento :: ((R X R) X (R X R)) -> Fig', 
-  'poli :: (R X R)* -> Fig', 'juntar :: (Fig X Fig) -> Fig', 'color :: (Fig X Color) -> Fig', 
-  'mover :: (Fig X (R X R)) -> Fig', 'rotar :: (Fig X R) -> Fig', 'escalar :: (Fig X R) -> Fig', 
-  'aFig :: A -> Fig', 'segmento3D :: ((R X R X R) X (R X R X R)) -> Fig3D', 'esfera :: R -> Fig3D', 'cilindro :: (R X R X R) -> Fig3D', 
-  'cubo :: (R X R X R) -> Fig3D', 'anillo :: (R X R X R) -> Fig3D', 'juntar3D :: (Fig3D X Fig3D) -> Fig3D', 
-  'color3D :: (Fig3D X Color) -> Fig3D', 'mover3D :: (Fig3D X (R X R X R)) -> Fig3D', 
-  'rotar3D :: (Fig3D X (R X R X R)) -> Fig3D', 'escalar3D :: (Fig3D X R) -> Fig3D', 'rango :: (R X R X R) -> R*', 
-  'primero :: A* -> A', 'resto :: A* -> A*'
-]
+  "- :: R -> R",
+  "red :: R -> R",
+  "sen :: R -> R",
+  "cos :: R -> R",
+  "raizcuad :: R -> R",
+  "rgb :: (R X R X R) -> Color",
+  "rect :: (R X R) -> Fig",
+  "circ :: R -> Fig",
+  "segmento :: ((R X R) X (R X R)) -> Fig",
+  "poli :: (R X R)* -> Fig",
+  "juntar :: (Fig X Fig) -> Fig",
+  "color :: (Fig X Color) -> Fig",
+  "mover :: (Fig X (R X R)) -> Fig",
+  "rotar :: (Fig X R) -> Fig",
+  "escalar :: (Fig X R) -> Fig",
+  "aFig :: A -> Fig",
+  "segmento3D :: ((R X R X R) X (R X R X R)) -> Fig3D",
+  "esfera :: R -> Fig3D",
+  "tetraedro :: R -> Fig3D",
+  "prisma :: (R X R X R) -> Fig3D",
+  "octaedro :: R -> Fig3D",
+  "dodecaedro :: R -> Fig3D",
+  "icosaedro :: R -> Fig3D",
+  "anillo :: (R X R X R) -> Fig3D",
+  "juntarFigEn3D :: (Fig X Fig X R) -> Fig3D",
+  "juntar3D :: (Fig3D X Fig3D) -> Fig3D",
+  "color3D :: (Fig3D X Color) -> Fig3D",
+  "transparencia3D :: (Fig3D X R) -> Fig3D",
+  "mover3D :: (Fig3D X (R X R X R)) -> Fig3D",
+  "rotar3D :: (Fig3D X (R X R X R)) -> Fig3D",
+  "escalar3D :: (Fig3D X R) -> Fig3D",
+  "rango :: (R X R X R) -> R*",
+  "primero :: A* -> A",
+  "resto :: A* -> A*",
+];
 
 module.exports = {
-  EN_default_sets: function() {
+  EN_default_sets: function () {
     return EN_default_sets;
   },
-  EN_functions: function() {
+  EN_functions: function () {
     return EN_functions;
   },
-  EN_typed_functions: function() {
+  EN_typed_functions: function () {
     return EN_typed_functions;
   },
-  ES_default_sets: function() {
+  ES_default_sets: function () {
     return ES_default_sets;
   },
-  ES_functions: function() {
+  ES_functions: function () {
     return ES_functions;
   },
-  ES_typed_functions: function() {
+  ES_typed_functions: function () {
     return ES_typed_functions;
-  }
-}
+  },
+};
diff --git a/Frontend Angular 4/src/app/layout/plotter/graph3D/graph3D.component.html b/Frontend Angular 4/src/app/layout/plotter/graph3D/graph3D.component.html
index f1ca970be29055d0499ea8e340b8df187736fd2d..35803b45dba866459ead572e5b9985b99ab59514 100755
--- a/Frontend Angular 4/src/app/layout/plotter/graph3D/graph3D.component.html	
+++ b/Frontend Angular 4/src/app/layout/plotter/graph3D/graph3D.component.html	
@@ -167,6 +167,15 @@
 
     <ng-template #popoverConfig>
       <div style="width: 140px">
+        <label class="d-block">
+          <input
+            type="checkbox"
+            [checked]="graphProps.showEdges"
+            (click)="changeEdgesVisibility()"
+          />
+          {{ "i18n.object.edges" | translate | titleCase }}
+        </label>
+
         <label class="d-block">
           <input
             type="checkbox"
@@ -176,6 +185,15 @@
           {{ "i18n.object.grid" | translate | titleCase }}
         </label>
 
+        <label class="d-block">
+          <input
+            type="checkbox"
+            [checked]="graphProps.showVertices"
+            (click)="changeVerticesVisibility()"
+          />
+          {{ "i18n.object.vertices" | translate | titleCase }}
+        </label>
+
         <div style="display: flex">
           <span style="margin-right: 8px; align-self: center">
             {{ "i18n.object.quality" | translate | titleCase }}:
@@ -191,6 +209,17 @@
             style="width: 55px"
           />
         </div>
+
+        <hr style="margin-block: 0.75rem 0.5rem" />
+
+        <label class="d-block">
+          <input
+            type="checkbox"
+            [checked]="graphProps.showMetaData"
+            (click)="changeMetaDataVisibility()"
+          />
+          {{ "i18n.object.metaData" | translate | titleCase }}
+        </label>
       </div>
     </ng-template>
   </div>
diff --git a/Frontend Angular 4/src/app/layout/plotter/graph3D/graph3D.component.ts b/Frontend Angular 4/src/app/layout/plotter/graph3D/graph3D.component.ts
index d66f99c095566609cfa1a97a7d9fe071ff829cc3..959651263e5ecf31d2aed7896dad3ec16856da10 100755
--- a/Frontend Angular 4/src/app/layout/plotter/graph3D/graph3D.component.ts	
+++ b/Frontend Angular 4/src/app/layout/plotter/graph3D/graph3D.component.ts	
@@ -154,11 +154,26 @@ export class Graph3DComponent implements AfterViewInit {
     graph3DLib.changeZoomType(this.graphProps.zoomType);
   };
 
+  public changeEdgesVisibility = () => {
+    this.graphProps.showEdges = !this.graphProps.showEdges;
+    graph3DLib.showEdges(this.graphProps.showEdges);
+  };
+
   public changeAxesVisibility = () => {
     this.graphProps.showAxes = !this.graphProps.showAxes;
     graph3DLib.showAxes(this.graphProps.showAxes);
   };
 
+  public changeVerticesVisibility = () => {
+    this.graphProps.showVertices = !this.graphProps.showVertices;
+    graph3DLib.showVertices(this.graphProps.showVertices);
+  };
+
+  public changeMetaDataVisibility = () => {
+    this.graphProps.showMetaData = !this.graphProps.showMetaData;
+    graph3DLib.showMetaData(this.graphProps.showMetaData);
+  };
+
   handleAxesRangeDebounced = debounce(function () {
     setTimeout(() => graph3DLib.changeAxesSize(this.graphProps.range));
   }, 500);
@@ -208,7 +223,7 @@ export class Graph3DComponent implements AfterViewInit {
   public clear = () => {
     this.animationProps.visible = false;
 
-    graph3DLib.clear();
+    graph3DLib.clearSceneObjects();
   };
 
   public center = () => {
diff --git a/Frontend Angular 4/src/app/layout/plotter/graph3D/graph3D.helper.ts b/Frontend Angular 4/src/app/layout/plotter/graph3D/graph3D.helper.ts
index 662e9c485621224932abd7774de75edad61b9c8e..52c4e6bcbd896db676101daa5256f73d3d258875 100755
--- a/Frontend Angular 4/src/app/layout/plotter/graph3D/graph3D.helper.ts	
+++ b/Frontend Angular 4/src/app/layout/plotter/graph3D/graph3D.helper.ts	
@@ -29,6 +29,9 @@ export enum Zoom3DType {
 export interface GraphProps {
   zoomType?: Zoom3DType;
   showAxes?: boolean;
+  showEdges?: boolean;
+  showMetaData?: boolean;
+  showVertices?: boolean;
   quality?: number;
   range: {
     xMin?: number;
@@ -43,6 +46,9 @@ export interface GraphProps {
 export const Default_GraphProps: GraphProps = {
   zoomType: Zoom3DType.Normal,
   showAxes: true,
+  showEdges: false,
+  showMetaData: false,
+  showVertices: false,
   quality: 30,
   range: {
     xMin: -10,
diff --git a/Frontend Angular 4/src/assets/i18n/en.json b/Frontend Angular 4/src/assets/i18n/en.json
index 56fbc955ae5b8c9062ccc4d63cb5fc5edfd7a9e8..e64e27162608f3456b486d8210f0e749929e2671 100755
--- a/Frontend Angular 4/src/assets/i18n/en.json	
+++ b/Frontend Angular 4/src/assets/i18n/en.json	
@@ -50,6 +50,9 @@
       "axis": "axis",
       "axes": "axes",
       "grid": "grid",
+      "metaData": "other information",
+      "edges": "edges",
+      "vertices": "vertices",
       "tip": "tip",
       "normal": "normal",
       "quality": "quality",
diff --git a/Frontend Angular 4/src/assets/i18n/es.json b/Frontend Angular 4/src/assets/i18n/es.json
index 13ab990f919deb017d0fd2e1fe241a1a5ac78531..ba2c8acaea6d148cd0fc27178fda26538288be1c 100755
--- a/Frontend Angular 4/src/assets/i18n/es.json	
+++ b/Frontend Angular 4/src/assets/i18n/es.json	
@@ -50,6 +50,9 @@
       "axis": "eje",
       "axes": "ejes",
       "grid": "grilla",
+      "metaData": "otra información",
+      "edges": "aristas",
+      "vertices": "vertices",
       "tip": "tip",
       "normal": "normal",
       "quality": "calidad",
diff --git a/Servidor JEE/src/main/java/edu/proygrado/binarios/internationalization/en.po b/Servidor JEE/src/main/java/edu/proygrado/binarios/internationalization/en.po
index 51bd0e9815fc05c9fbbd74a04a02f9da785fd2bd..445c24c9182da28c1cf9a7047c1f1a93c3461ffc 100755
--- a/Servidor JEE/src/main/java/edu/proygrado/binarios/internationalization/en.po	
+++ b/Servidor JEE/src/main/java/edu/proygrado/binarios/internationalization/en.po	
@@ -329,10 +329,14 @@ msgstr "circ"
 msgid "color"
 msgstr "color"
 
-#: src/MateFun/ReservedNames.hs:52
+#: src/MateFun/ReservedNames.hs:64
 msgid "color3D"
 msgstr "color3D"
 
+#: src/MateFun/ReservedNames.hs:65
+msgid "transparency3D"
+msgstr "transparency3D"
+
 #: src/MateFun/TypeCheck.hs:92
 msgid "column"
 msgstr "column"
@@ -341,13 +345,25 @@ msgstr "column"
 msgid "cos"
 msgstr "cos"
 
-#: src/MateFun/ReservedNames.hs:49
+#: src/MateFun/ReservedNames.hs:51
+msgid "tetrahedron"
+msgstr "tetrahedron"
+
+#: src/MateFun/ReservedNames.hs:52
 msgid "cube"
-msgstr "cube"
+msgstr "prism"
+
+#: src/MateFun/ReservedNames.hs:53
+msgid "octahedron"
+msgstr "octahedron"
 
-#: src/MateFun/ReservedNames.hs:48
-msgid "cylinder"
-msgstr "cylinder"
+#: src/MateFun/ReservedNames.hs:54
+msgid "dodecahedron"
+msgstr "dodecahedron"
+
+#: src/MateFun/ReservedNames.hs:55
+msgid "icosahedron"
+msgstr "icosahedron"
 
 #: src/MateFun/Parser.hs:279
 msgid "depends on itself."
@@ -445,6 +461,14 @@ msgstr "join3D"
 msgid "line"
 msgstr "line"
 
+#: src/MateFun/TypeCheck.hs:85
+msgid "Two circles, two rectangles or two polygons are expected"
+msgstr "Two circles, two rectangles or two polygons are expected"
+
+#: src/MateFun/TypeCheck.hs:86
+msgid "Polygons are expected whose number of vertices matches"
+msgstr "Polygons are expected whose number of vertices matches"
+
 #: src/MateFun/ReservedNames.hs:36
 msgid "line2D"
 msgstr "segment"
@@ -530,8 +554,8 @@ msgid "reload actual program"
 msgstr "reload actual program"
 
 #: src/MateFun/ReservedNames.hs:108
-msgid "required is a subset of resulting"
-msgstr "required is a subset of resulting"
+msgid "obtained is not a subset of required"
+msgstr "obtained is not a subset of required"
 
 #: src/MateFun/ReservedNames.hs:60
 msgid "rest"
@@ -541,10 +565,14 @@ msgstr "rest"
 msgid "rgb"
 msgstr "rgb"
 
-#: src/MateFun/ReservedNames.hs:50
+#: src/MateFun/ReservedNames.hs:58
 msgid "ring"
 msgstr "ring"
 
+#: src/MateFun/ReservedNames.hs:61
+msgid "joinFigIn3D"
+msgstr "joinFigIn3D"
+
 #: src/MateFun/ReservedNames.hs:41
 msgid "rotate"
 msgstr "rotate"
diff --git a/Servidor JEE/src/main/java/edu/proygrado/binarios/internationalization/en/LC_MESSAGES/mate-fun.mo b/Servidor JEE/src/main/java/edu/proygrado/binarios/internationalization/en/LC_MESSAGES/mate-fun.mo
index 831188d3b124d9009101aabc63862d134d6e2ebd..b53df3184a5fc2b7c3c3889a2496786813bd5bda 100755
Binary files a/Servidor JEE/src/main/java/edu/proygrado/binarios/internationalization/en/LC_MESSAGES/mate-fun.mo and b/Servidor JEE/src/main/java/edu/proygrado/binarios/internationalization/en/LC_MESSAGES/mate-fun.mo differ
diff --git a/Servidor JEE/src/main/java/edu/proygrado/binarios/internationalization/es.po b/Servidor JEE/src/main/java/edu/proygrado/binarios/internationalization/es.po
index 4a414c32a36f208e31f1b8f23e3a652e8e9a7d56..a6d4763bfb7c91b241857dc9a9714a8b2731614d 100755
--- a/Servidor JEE/src/main/java/edu/proygrado/binarios/internationalization/es.po	
+++ b/Servidor JEE/src/main/java/edu/proygrado/binarios/internationalization/es.po	
@@ -331,10 +331,14 @@ msgstr "circ"
 msgid "color"
 msgstr "color"
 
-#: src/MateFun/ReservedNames.hs:52
+#: src/MateFun/ReservedNames.hs:64
 msgid "color3D"
 msgstr "color3D"
 
+#: src/MateFun/ReservedNames.hs:65
+msgid "transparency3D"
+msgstr "transparencia3D"
+
 #: src/MateFun/TypeCheck.hs:92
 msgid "column"
 msgstr "columna"
@@ -343,13 +347,25 @@ msgstr "columna"
 msgid "cos"
 msgstr "cos"
 
-#: src/MateFun/ReservedNames.hs:49
+#: src/MateFun/ReservedNames.hs:51
+msgid "tetrahedron"
+msgstr "tetraedro"
+
+#: src/MateFun/ReservedNames.hs:52
 msgid "cube"
-msgstr "cubo"
+msgstr "prisma"
+
+#: src/MateFun/ReservedNames.hs:53
+msgid "octahedron"
+msgstr "octaedro"
 
-#: src/MateFun/ReservedNames.hs:48
-msgid "cylinder"
-msgstr "cilindro"
+#: src/MateFun/ReservedNames.hs:54
+msgid "dodecahedron"
+msgstr "dodecaedro"
+
+#: src/MateFun/ReservedNames.hs:55
+msgid "icosahedron"
+msgstr "icosaedro"
 
 #: src/MateFun/Parser.hs:279
 msgid "depends on itself."
@@ -447,6 +463,14 @@ msgstr "juntar3D"
 msgid "line"
 msgstr "linea"
 
+#: src/MateFun/TypeCheck.hs:85
+msgid "Two circles, two rectangles or two polygons are expected"
+msgstr "Se esperan dos circulos, dos rectangulos o dos poligonos"
+
+#: src/MateFun/TypeCheck.hs:86
+msgid "Polygons are expected whose number of vertices matches"
+msgstr "Se esperan poligonos cuya cantidad de vertices coincida"
+
 #: src/MateFun/ReservedNames.hs:36
 msgid "line2D"
 msgstr "segmento"
@@ -532,8 +556,8 @@ msgid "reload actual program"
 msgstr "volver a cargar el programa actual"
 
 #: src/MateFun/ReservedNames.hs:108
-msgid "required is a subset of resulting"
-msgstr "requerido es subconjunto del resultante"
+msgid "obtained is not a subset of required"
+msgstr "obtenido no es subconjunto del requerido"
 
 #: src/MateFun/ReservedNames.hs:60
 msgid "rest"
@@ -543,10 +567,14 @@ msgstr "resto"
 msgid "rgb"
 msgstr "rgb"
 
-#: src/MateFun/ReservedNames.hs:50
+#: src/MateFun/ReservedNames.hs:58
 msgid "ring"
 msgstr "anillo"
 
+#: src/MateFun/ReservedNames.hs:61
+msgid "joinFigIn3D"
+msgstr "juntarFigEn3D"
+
 #: src/MateFun/ReservedNames.hs:41
 msgid "rotate"
 msgstr "rotar"
diff --git a/Servidor JEE/src/main/java/edu/proygrado/binarios/internationalization/es/LC_MESSAGES/mate-fun.mo b/Servidor JEE/src/main/java/edu/proygrado/binarios/internationalization/es/LC_MESSAGES/mate-fun.mo
index 9ce2d08e52d339d4468d439a797d45bf008fd73a..be1028dc42270d035e1d37db71a454f8193e0237 100755
Binary files a/Servidor JEE/src/main/java/edu/proygrado/binarios/internationalization/es/LC_MESSAGES/mate-fun.mo and b/Servidor JEE/src/main/java/edu/proygrado/binarios/internationalization/es/LC_MESSAGES/mate-fun.mo differ