diff --git a/Geo/MHexahedron.h b/Geo/MHexahedron.h
index b128eb268011564b351873d76ec7863eaed826aa..d2f460d102aaefa319befcce232d5b11649ced5d 100644
--- a/Geo/MHexahedron.h
+++ b/Geo/MHexahedron.h
@@ -511,9 +511,9 @@ class MHexahedronN : public MHexahedron {
     for (int i = 0; i < 4; i++){
       for (int j = 0; j < _order - 1; j++) v[count++] = _vs[(_order-1)*f[num][i]+j];
     }
-    for (int i = 0; i < (_order + 1) * (_order + 1); i++){
-      int N = _order - 1;
-      int start = 8 + 12 * N + num * (_order - 1) * (_order - 1);
+    int N = _order - 1;
+    int start = 8 + 12 * N + num * (_order - 1) * (_order - 1);
+    for (int i = 0; i < (_order - 1) * (_order - 1); i++){
       v[count++] = _vs[start + i];
     }
   }
diff --git a/Geo/MTetrahedron.h b/Geo/MTetrahedron.h
index 30dedd43161afbc459d75f43dda3be8d1c4559af..8ac0f1e003857a535da5596423c869b48377744c 100644
--- a/Geo/MTetrahedron.h
+++ b/Geo/MTetrahedron.h
@@ -128,7 +128,7 @@ class MTetrahedron : public MElement {
   virtual double getInnerRadius();
   virtual double getCircumRadius();
   virtual double etaShapeMeasure();
-  void xyz2uvw(double xyz[3], double uvw[3]) const;
+  virtual void xyz2uvw(double xyz[3], double uvw[3]) const;
   virtual const nodalBasis* getFunctionSpace(int o=-1) const;
   virtual const JacobianBasis* getJacobianFuncSpace(int o=-1) const;
   virtual void getNode(int num, double &u, double &v, double &w) const
@@ -273,6 +273,10 @@ class MTetrahedron10 : public MTetrahedron {
   {
     num < 4 ? MTetrahedron::getNode(num, u, v, w) : MElement::getNode(num, u, v, w);
   }
+  void xyz2uvw(double xyz[3], double uvw[3]) const
+  {
+    return MElement::xyz2uvw(xyz,uvw);
+  }
 };
 
 /* tet order 3 FIXME: check the plot
@@ -393,6 +397,10 @@ class MTetrahedronN : public MTetrahedron {
   {
     num < 4 ? MTetrahedron::getNode(num, u, v, w) : MElement::getNode(num, u, v, w);
   }
+  void xyz2uvw(double xyz[3], double uvw[3]) const
+  {
+    return MElement::xyz2uvw(xyz,uvw);
+  }
 };
 
 #endif