diff --git a/Geo/GModelIO.cpp b/Geo/GModelIO.cpp
index 4ea273fa3977a98ce2fd2cabc74ff29d68d67118..e0b64aa7b215a1bd088eda090fb31f49ea8cd84e 100644
--- a/Geo/GModelIO.cpp
+++ b/Geo/GModelIO.cpp
@@ -1,4 +1,4 @@
-// $Id: GModelIO.cpp,v 1.41 2006-09-03 17:26:07 geuzaine Exp $
+// $Id: GModelIO.cpp,v 1.42 2006-09-04 15:58:22 geuzaine Exp $
 //
 // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 //
@@ -246,7 +246,7 @@ static void createElementMSH(GModel *m, int num, int type, int physical,
     break;
   case TRI2:
     elements[1][elementary].push_back
-      (new MTriangle2(v[n[0]], v[n[1]], v[n[2]], v[n[3]], v[n[4]], v[n[5]], 
+      (new MTriangle6(v[n[0]], v[n[1]], v[n[2]], v[n[3]], v[n[4]], v[n[5]], 
 		      num, partition));
     dim = 2;
     break;
@@ -257,7 +257,7 @@ static void createElementMSH(GModel *m, int num, int type, int physical,
     break;
   case QUA2:
     elements[2][elementary].push_back
-      (new MQuadrangle2(v[n[0]], v[n[1]], v[n[2]], v[n[3]], v[n[4]], v[n[5]], 
+      (new MQuadrangle9(v[n[0]], v[n[1]], v[n[2]], v[n[3]], v[n[4]], v[n[5]], 
 			v[n[6]], v[n[7]], v[n[8]], num, partition));
     dim = 2;
     break;
@@ -268,8 +268,8 @@ static void createElementMSH(GModel *m, int num, int type, int physical,
     break;
   case TET2:
     elements[3][elementary].push_back
-      (new MTetrahedron2(v[n[0]], v[n[1]], v[n[2]], v[n[3]], v[n[4]], v[n[5]], 
-			 v[n[6]], v[n[7]], v[n[8]], v[n[9]], num, partition));
+      (new MTetrahedron10(v[n[0]], v[n[1]], v[n[2]], v[n[3]], v[n[4]], v[n[5]], 
+			  v[n[6]], v[n[7]], v[n[8]], v[n[9]], num, partition));
     dim = 3; 
     break;
   case HEX1:
@@ -280,11 +280,11 @@ static void createElementMSH(GModel *m, int num, int type, int physical,
     break;
   case HEX2:
     elements[4][elementary].push_back
-      (new MHexahedron2(v[n[0]], v[n[1]], v[n[2]], v[n[3]], v[n[4]], v[n[5]], 
-			v[n[6]], v[n[7]], v[n[8]], v[n[9]], v[n[10]], v[n[11]], 
-			v[n[12]], v[n[13]], v[n[14]], v[n[15]], v[n[16]], v[n[17]], 
-			v[n[18]], v[n[19]], v[n[20]], v[n[21]], v[n[22]], v[n[23]], 
-			v[n[24]], v[n[25]], v[n[26]], num, partition));
+      (new MHexahedron27(v[n[0]], v[n[1]], v[n[2]], v[n[3]], v[n[4]], v[n[5]], 
+			 v[n[6]], v[n[7]], v[n[8]], v[n[9]], v[n[10]], v[n[11]], 
+			 v[n[12]], v[n[13]], v[n[14]], v[n[15]], v[n[16]], v[n[17]], 
+			 v[n[18]], v[n[19]], v[n[20]], v[n[21]], v[n[22]], v[n[23]], 
+			 v[n[24]], v[n[25]], v[n[26]], num, partition));
     dim = 3; 
     break;
   case PRI1: 
@@ -295,10 +295,10 @@ static void createElementMSH(GModel *m, int num, int type, int physical,
     break;
   case PRI2: 
     elements[5][elementary].push_back
-      (new MPrism2(v[n[0]], v[n[1]], v[n[2]], v[n[3]], v[n[4]], v[n[5]], 
-		   v[n[6]], v[n[7]], v[n[8]], v[n[9]], v[n[10]], v[n[11]], 
-		   v[n[12]], v[n[13]], v[n[14]], v[n[15]], v[n[16]], v[n[17]], 
-		   num, partition));
+      (new MPrism18(v[n[0]], v[n[1]], v[n[2]], v[n[3]], v[n[4]], v[n[5]], 
+		    v[n[6]], v[n[7]], v[n[8]], v[n[9]], v[n[10]], v[n[11]], 
+		    v[n[12]], v[n[13]], v[n[14]], v[n[15]], v[n[16]], v[n[17]], 
+		    num, partition));
     dim = 3; 
     break;
   case PYR1: 
@@ -308,9 +308,9 @@ static void createElementMSH(GModel *m, int num, int type, int physical,
     break;
   case PYR2: 
     elements[6][elementary].push_back
-      (new MPyramid2(v[n[0]], v[n[1]], v[n[2]], v[n[3]], v[n[4]], v[n[5]], 
-		     v[n[6]], v[n[7]], v[n[8]], v[n[9]], v[n[10]], v[n[11]], 
-		     v[n[12]], v[n[13]], num, partition));
+      (new MPyramid14(v[n[0]], v[n[1]], v[n[2]], v[n[3]], v[n[4]], v[n[5]], 
+		      v[n[6]], v[n[7]], v[n[8]], v[n[9]], v[n[10]], v[n[11]], 
+		      v[n[12]], v[n[13]], num, partition));
     dim = 3; 
     break;
   default:
@@ -1625,7 +1625,7 @@ int GModel::readBDF(const std::string &name)
       }
       else if(!strncmp(buffer, "CTRIA6", 6)){
 	if(readElementBDF(fp, buffer, 6, 6, &num, &region, n, vertices))
-	  elements[1][region].push_back(new MTriangle2(n, num));
+	  elements[1][region].push_back(new MTriangle6(n, num));
       }
       else if(!strncmp(buffer, "CQUAD4", 6)){
 	if(readElementBDF(fp, buffer, 6, 4, &num, &region, n, vertices))
diff --git a/Geo/MElement.h b/Geo/MElement.h
index 654195e0e727ba65aae3d49b6a2f5be118eefd58..7f639644abea8b5f8d88fc3f2b39c5fac78b02f0 100644
--- a/Geo/MElement.h
+++ b/Geo/MElement.h
@@ -247,22 +247,22 @@ class MTriangle : public MElement {
   virtual char *getStringForBDF(){ return "CTRIA3"; }
 };
 
-class MTriangle2 : public MTriangle {
+class MTriangle6 : public MTriangle {
  protected:
   MVertex *_vs[3];
  public :
-  MTriangle2(MVertex *v0, MVertex *v1, MVertex *v2, MVertex *v3, MVertex *v4,
+  MTriangle6(MVertex *v0, MVertex *v1, MVertex *v2, MVertex *v3, MVertex *v4,
 	     MVertex *v5, int num=0, int part=0) 
     : MTriangle(v0, v1, v2, num, part)
   {
     _vs[0] = v3; _vs[1] = v4; _vs[2] = v5;
   }
-  MTriangle2(std::vector<MVertex*> &v, int num=0, int part=0) 
+  MTriangle6(std::vector<MVertex*> &v, int num=0, int part=0) 
     : MTriangle(v, num, part)
   {
     for(int i = 0; i < 3; i++) _vs[i] = v[3 + i];
   }
-  ~MTriangle2(){}
+  ~MTriangle6(){}
   virtual int getPolynomialOrder(){ return 2; }
   virtual int getNumVertices(){ return 6; }
   virtual MVertex *getVertex(int num){ return num < 3 ? _v[num] : _vs[num - 3]; }
@@ -332,22 +332,22 @@ class MQuadrangle : public MElement {
   virtual char *getStringForBDF(){ return "CQUAD4"; }
 };
 
-class MQuadrangle2 : public MQuadrangle {
+class MQuadrangle9 : public MQuadrangle {
  protected:
   MVertex *_vs[5];
  public :
-  MQuadrangle2(MVertex *v0, MVertex *v1, MVertex *v2, MVertex *v3, MVertex *v4, 
+  MQuadrangle9(MVertex *v0, MVertex *v1, MVertex *v2, MVertex *v3, MVertex *v4, 
 	       MVertex *v5, MVertex *v6, MVertex *v7, MVertex *v8, int num=0, int part=0) 
     : MQuadrangle(v0, v1, v2, v3, num, part)
   {
     _vs[0] = v4; _vs[1] = v5; _vs[2] = v6; _vs[3] = v7; _vs[4] = v8;
   }
-  MQuadrangle2(std::vector<MVertex*> &v, int num=0, int part=0) 
+  MQuadrangle9(std::vector<MVertex*> &v, int num=0, int part=0) 
     : MQuadrangle(v, num, part)
   {
     for(int i = 0; i < 5; i++) _vs[i] = v[4 + i];
   }
-  ~MQuadrangle2(){}
+  ~MQuadrangle9(){}
   virtual int getPolynomialOrder(){ return 2; }
   virtual int getNumVertices(){ return 9; }
   virtual MVertex *getVertex(int num){ return num < 4 ? _v[num] : _vs[num - 4]; }
@@ -420,23 +420,23 @@ class MTetrahedron : public MElement {
   virtual double etaShapeMeasure();
 };
 
-class MTetrahedron2 : public MTetrahedron {
+class MTetrahedron10 : public MTetrahedron {
  protected:
   MVertex *_vs[6];
  public :
-  MTetrahedron2(MVertex *v0, MVertex *v1, MVertex *v2, MVertex *v3, MVertex *v4, 
-		MVertex *v5, MVertex *v6, MVertex *v7, MVertex *v8, MVertex *v9,
-		int num=0, int part=0) 
+  MTetrahedron10(MVertex *v0, MVertex *v1, MVertex *v2, MVertex *v3, MVertex *v4, 
+		 MVertex *v5, MVertex *v6, MVertex *v7, MVertex *v8, MVertex *v9,
+		 int num=0, int part=0) 
     : MTetrahedron(v0, v1, v2, v3, num, part)
   {
     _vs[0] = v4; _vs[1] = v5; _vs[2] = v6; _vs[3] = v7; _vs[4] = v8; _vs[5] = v9;
   }
-  MTetrahedron2(std::vector<MVertex*> &v, int num=0, int part=0) 
+  MTetrahedron10(std::vector<MVertex*> &v, int num=0, int part=0) 
     : MTetrahedron(v, num, part)
   {
     for(int i = 0; i < 6; i++) _vs[i] = v[4 + i];
   }
-  ~MTetrahedron2(){}
+  ~MTetrahedron10(){}
   virtual int getPolynomialOrder(){ return 2; }
   virtual int getNumVertices(){ return 10; }
   virtual MVertex *getVertex(int num){ return num < 4 ? _v[num] : _vs[num - 4]; }
@@ -518,16 +518,16 @@ class MHexahedron : public MElement {
   }
 };
 
-class MHexahedron2 : public MHexahedron {
+class MHexahedron27 : public MHexahedron {
  protected:
   MVertex *_vs[19];
  public :
-  MHexahedron2(MVertex *v0, MVertex *v1, MVertex *v2, MVertex *v3, MVertex *v4, 
-	       MVertex *v5, MVertex *v6, MVertex *v7, MVertex *v8, MVertex *v9,
-	       MVertex *v10, MVertex *v11, MVertex *v12, MVertex *v13, MVertex *v14,
-	       MVertex *v15, MVertex *v16, MVertex *v17, MVertex *v18, MVertex *v19,
-	       MVertex *v20, MVertex *v21, MVertex *v22, MVertex *v23, MVertex *v24,
-	       MVertex *v25, MVertex *v26, int num=0, int part=0) 
+  MHexahedron27(MVertex *v0, MVertex *v1, MVertex *v2, MVertex *v3, MVertex *v4, 
+		MVertex *v5, MVertex *v6, MVertex *v7, MVertex *v8, MVertex *v9,
+		MVertex *v10, MVertex *v11, MVertex *v12, MVertex *v13, MVertex *v14,
+		MVertex *v15, MVertex *v16, MVertex *v17, MVertex *v18, MVertex *v19,
+		MVertex *v20, MVertex *v21, MVertex *v22, MVertex *v23, MVertex *v24,
+		MVertex *v25, MVertex *v26, int num=0, int part=0) 
     : MHexahedron(v0, v1, v2, v3, v4, v5, v6, v7, num, part)
   {
     _vs[0] = v8; _vs[1] = v9; _vs[2] = v10; _vs[3] = v11; _vs[4] = v12; 
@@ -535,12 +535,12 @@ class MHexahedron2 : public MHexahedron {
     _vs[10] = v18; _vs[11] = v19; _vs[12] = v20; _vs[13] = v21; _vs[14] = v22;
     _vs[15] = v23; _vs[16] = v24; _vs[17] = v25; _vs[18] = v26;
   }
-  MHexahedron2(std::vector<MVertex*> &v, int num=0, int part=0) 
+  MHexahedron27(std::vector<MVertex*> &v, int num=0, int part=0) 
     : MHexahedron(v, num, part)
   {
     for(int i = 0; i < 19; i++) _vs[i] = v[8 + i];
   }
-  ~MHexahedron2(){}
+  ~MHexahedron27(){}
   virtual int getPolynomialOrder(){ return 2; }
   virtual int getNumVertices(){ return 27; }
   virtual MVertex *getVertex(int num){ return num < 8 ? _v[num] : _vs[num - 8]; }
@@ -634,26 +634,26 @@ class MPrism : public MElement {
   }
 };
 
-class MPrism2 : public MPrism {
+class MPrism18 : public MPrism {
  protected:
   MVertex *_vs[12];
  public :
-  MPrism2(MVertex *v0, MVertex *v1, MVertex *v2, MVertex *v3, MVertex *v4, 
-	  MVertex *v5, MVertex *v6, MVertex *v7, MVertex *v8, MVertex *v9,
-	  MVertex *v10, MVertex *v11, MVertex *v12, MVertex *v13, MVertex *v14,
-	  MVertex *v15, MVertex *v16, MVertex *v17, int num=0, int part=0) 
+  MPrism18(MVertex *v0, MVertex *v1, MVertex *v2, MVertex *v3, MVertex *v4, 
+	   MVertex *v5, MVertex *v6, MVertex *v7, MVertex *v8, MVertex *v9,
+	   MVertex *v10, MVertex *v11, MVertex *v12, MVertex *v13, MVertex *v14,
+	   MVertex *v15, MVertex *v16, MVertex *v17, int num=0, int part=0) 
     : MPrism(v0, v1, v2, v3, v4, v5, num, part)
   {
     _vs[0] = v6; _vs[1] = v7; _vs[2] = v8; _vs[3] = v9; _vs[4] = v10; 
     _vs[5] = v11; _vs[6] = v12; _vs[7] = v13; _vs[8] = v14; _vs[9] = v15; 
     _vs[10] = v16; _vs[11] = v17; 
   }
-  MPrism2(std::vector<MVertex*> &v, int num=0, int part=0) 
+  MPrism18(std::vector<MVertex*> &v, int num=0, int part=0) 
     : MPrism(v, num, part)
   {
     for(int i = 0; i < 12; i++) _vs[i] = v[6 + i];
   }
-  ~MPrism2(){}
+  ~MPrism18(){}
   virtual int getPolynomialOrder(){ return 2; }
   virtual int getNumVertices(){ return 18; }
   virtual MVertex *getVertex(int num){ return num < 6 ? _v[num] : _vs[num - 6]; }
@@ -741,25 +741,25 @@ class MPyramid : public MElement {
   }
 };
 
-class MPyramid2 : public MPyramid {
+class MPyramid14 : public MPyramid {
  protected:
   MVertex *_vs[9];
  public :
-  MPyramid2(MVertex *v0, MVertex *v1, MVertex *v2, MVertex *v3, MVertex *v4, 
-	    MVertex *v5, MVertex *v6, MVertex *v7, MVertex *v8, MVertex *v9,
-	    MVertex *v10, MVertex *v11, MVertex *v12, MVertex *v13, 
-	    int num=0, int part=0) 
+  MPyramid14(MVertex *v0, MVertex *v1, MVertex *v2, MVertex *v3, MVertex *v4, 
+	     MVertex *v5, MVertex *v6, MVertex *v7, MVertex *v8, MVertex *v9,
+	     MVertex *v10, MVertex *v11, MVertex *v12, MVertex *v13, 
+	     int num=0, int part=0) 
     : MPyramid(v0, v1, v2, v3, v4, num, part)
   {
     _vs[0] = v5; _vs[1] = v6; _vs[2] = v7; _vs[3] = v8; _vs[4] = v9; 
     _vs[5] = v10; _vs[6] = v11; _vs[7] = v12; _vs[8] = v13; 
   }
-  MPyramid2(std::vector<MVertex*> &v, int num=0, int part=0) 
+  MPyramid14(std::vector<MVertex*> &v, int num=0, int part=0) 
     : MPyramid(v, num, part)
   {
     for(int i = 0; i < 9; i++) _vs[i] = v[5 + i];
   }
-  ~MPyramid2(){}
+  ~MPyramid14(){}
   virtual int getPolynomialOrder(){ return 2; }
   virtual int getNumVertices(){ return 14; }
   virtual MVertex *getVertex(int num){ return num < 5 ? _v[num] : _vs[num - 5]; }
diff --git a/Mesh/SecondOrder.cpp b/Mesh/SecondOrder.cpp
index ad20d1ee22b6e08fe0a92b727c7cee59fd78b96f..ff4316d90f6ba869559a374d8c6c639f0ce42fe6 100644
--- a/Mesh/SecondOrder.cpp
+++ b/Mesh/SecondOrder.cpp
@@ -1,4 +1,4 @@
-// $Id: SecondOrder.cpp,v 1.43 2006-08-22 01:58:35 geuzaine Exp $
+// $Id: SecondOrder.cpp,v 1.44 2006-09-04 15:58:22 geuzaine Exp $
 //
 // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 //
@@ -214,7 +214,7 @@ void setSecondOrder(GFace *gf,
     std::vector<MVertex*> ve;
     getEdgeVertices(gf, t, ve, edgeVertices, linear);
     triangles2.push_back
-      (new MTriangle2(t->getVertex(0), t->getVertex(1), t->getVertex(2),
+      (new MTriangle6(t->getVertex(0), t->getVertex(1), t->getVertex(2),
 		      ve[0], ve[1], ve[2]));
     delete t;
   }
@@ -227,7 +227,7 @@ void setSecondOrder(GFace *gf,
     getEdgeVertices(gf, q, ve, edgeVertices, linear);
     getFaceVertices(gf, q, vf, faceVertices, linear);
     quadrangles2.push_back
-      (new MQuadrangle2(q->getVertex(0), q->getVertex(1), q->getVertex(2),
+      (new MQuadrangle9(q->getVertex(0), q->getVertex(1), q->getVertex(2),
 			q->getVertex(3), ve[0], ve[1], ve[2], ve[3], vf[0]));
     delete q;
   }
@@ -247,8 +247,8 @@ void setSecondOrder(GRegion *gr,
     std::vector<MVertex*> ve;
     getEdgeVertices(gr, t, ve, edgeVertices, linear);
     tetrahedra2.push_back
-      (new MTetrahedron2(t->getVertex(0), t->getVertex(1), t->getVertex(2), 
-			 t->getVertex(3), ve[0], ve[1], ve[2], ve[3], ve[4], ve[5]));
+      (new MTetrahedron10(t->getVertex(0), t->getVertex(1), t->getVertex(2), 
+			  t->getVertex(3), ve[0], ve[1], ve[2], ve[3], ve[4], ve[5]));
     delete t;
   }
   gr->tetrahedra = tetrahedra2;
@@ -263,11 +263,11 @@ void setSecondOrder(GRegion *gr,
     MVertex *v = new MVertex(pc.x(), pc.y(), pc.z(), gr);
     gr->mesh_vertices.push_back(v);
     hexahedra2.push_back
-      (new MHexahedron2(h->getVertex(0), h->getVertex(1), h->getVertex(2), 
-			h->getVertex(3), h->getVertex(4), h->getVertex(5), 
-			h->getVertex(6), h->getVertex(7), ve[0], ve[1], ve[2], 
-			ve[3], ve[4], ve[5], ve[6], ve[7], ve[8], ve[9], ve[10], 
-			ve[11], vf[0], vf[1], vf[2], vf[3], vf[4], vf[5], v));
+      (new MHexahedron27(h->getVertex(0), h->getVertex(1), h->getVertex(2), 
+			 h->getVertex(3), h->getVertex(4), h->getVertex(5), 
+			 h->getVertex(6), h->getVertex(7), ve[0], ve[1], ve[2], 
+			 ve[3], ve[4], ve[5], ve[6], ve[7], ve[8], ve[9], ve[10], 
+			 ve[11], vf[0], vf[1], vf[2], vf[3], vf[4], vf[5], v));
     delete h;
   }
   gr->hexahedra = hexahedra2;
@@ -279,10 +279,10 @@ void setSecondOrder(GRegion *gr,
     getEdgeVertices(gr, p, ve, edgeVertices, linear);
     getFaceVertices(gr, p, vf, faceVertices, linear);
     prisms2.push_back
-      (new MPrism2(p->getVertex(0), p->getVertex(1), p->getVertex(2), 
-		   p->getVertex(3), p->getVertex(4), p->getVertex(5), 
-		   ve[0], ve[1], ve[2], ve[3], ve[4], ve[5], ve[6], ve[7],
-		   ve[8], vf[0], vf[1], vf[2]));
+      (new MPrism18(p->getVertex(0), p->getVertex(1), p->getVertex(2), 
+		    p->getVertex(3), p->getVertex(4), p->getVertex(5), 
+		    ve[0], ve[1], ve[2], ve[3], ve[4], ve[5], ve[6], ve[7],
+		    ve[8], vf[0], vf[1], vf[2]));
     delete p;
   }
   gr->prisms = prisms2;
@@ -294,9 +294,9 @@ void setSecondOrder(GRegion *gr,
     getEdgeVertices(gr, p, ve, edgeVertices, linear);
     getFaceVertices(gr, p, vf, faceVertices, linear);
     pyramids2.push_back
-      (new MPyramid2(p->getVertex(0), p->getVertex(1), p->getVertex(2), 
-		     p->getVertex(3), p->getVertex(4), ve[0], ve[1], ve[2], 
-		     ve[3], ve[4], ve[5], ve[6], ve[7], vf[0]));
+      (new MPyramid14(p->getVertex(0), p->getVertex(1), p->getVertex(2), 
+		      p->getVertex(3), p->getVertex(4), ve[0], ve[1], ve[2], 
+		      ve[3], ve[4], ve[5], ve[6], ve[7], vf[0]));
     delete p;
   }
   gr->pyramids = pyramids2;