diff --git a/Mesh/3D_Extrude.cpp b/Mesh/3D_Extrude.cpp
index 3c37ee28d4b6593ba8574cf58d8a919699da4750..45393e02317db767fdf2f91adb37a5a357ccdb32 100644
--- a/Mesh/3D_Extrude.cpp
+++ b/Mesh/3D_Extrude.cpp
@@ -1,4 +1,4 @@
-// $Id: 3D_Extrude.cpp,v 1.89 2005-06-10 20:59:15 geuzaine Exp $
+// $Id: 3D_Extrude.cpp,v 1.90 2005-06-10 22:50:49 geuzaine Exp $
 //
 // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle
 //
@@ -96,7 +96,6 @@ List_T *getnxl(Vertex * v, Volume * vol)
 
 List_T *getnxl(Vertex * v, int dim)
 {
-  int i, j;
   Curve *c;
   Surface *s;
   List_T *list;
@@ -112,7 +111,7 @@ List_T *getnxl(Vertex * v, int dim)
     if((list = getnxl(v, THES)))
       return list;
     else {
-      for(i = 0; i < List_Nbr(THES->Generatrices); i++) {
+      for(int i = 0; i < List_Nbr(THES->Generatrices); i++) {
         if((abs(ep->geo.Source) != c->Num) && (list = getnxl(v, c)))
           return list;
       }
@@ -122,15 +121,15 @@ List_T *getnxl(Vertex * v, int dim)
     if((list = getnxl(v, THEV)))
       return list;
     else {
-      for(i = 0; i < List_Nbr(THEV->Surfaces); i++) {
+      for(int i = 0; i < List_Nbr(THEV->Surfaces); i++) {
         List_Read(THEV->Surfaces, i, &s);
         if((ep->geo.Source != s->Num) && (list = getnxl(v, s)))
           return list;
       }
-      for(i = 0; i < List_Nbr(THEV->Surfaces); i++) {
+      for(int i = 0; i < List_Nbr(THEV->Surfaces); i++) {
         List_Read(THEV->Surfaces, i, &s);
         if(ep->geo.Source != s->Num) {
-          for(j = 0; j < List_Nbr(s->Generatrices); j++) {
+          for(int j = 0; j < List_Nbr(s->Generatrices); j++) {
             List_Read(s->Generatrices, j, &c);
             if((list = getnxl(v, c)))
               return list;
@@ -349,7 +348,7 @@ void Extrude_Simplex_Phase2(void *data, void *dum)
 
 void Create_HexPri(int iEnt, Vertex * v[8])
 {
-  int i, j = 0, dup[4];
+  int dup[4];
   Hexahedron *newh;
   Prism *newp;
 
@@ -360,7 +359,8 @@ void Create_HexPri(int iEnt, Vertex * v[8])
     return;
   }
 
-  for(i = 0; i < 4; i++)
+  int j = 0;
+  for(int i = 0; i < 4; i++)
     if(v[i]->Num == v[i + 4]->Num)
       dup[j++] = i;
 
@@ -393,7 +393,7 @@ void Create_HexPri(int iEnt, Vertex * v[8])
 
 void Create_PriPyrTet(int iEnt, Vertex * v[6])
 {
-  int i, j = 0, dup[3];
+  int dup[3];
   Prism *newp;
   Pyramid *newpyr;
   Simplex *news;
@@ -405,7 +405,8 @@ void Create_PriPyrTet(int iEnt, Vertex * v[6])
     return;
   }
 
-  for(i = 0; i < 3; i++)
+  int j = 0;
+  for(int i = 0; i < 3; i++)
     if(v[i]->Num == v[i + 3]->Num)
       dup[j++] = i;
 
@@ -454,7 +455,6 @@ void Create_Sim(int iEnt, Vertex * v1, Vertex * v2, Vertex * v3, Vertex * v4)
 
 void Extrude_Simplex_Phase3(void *data, void *dum)
 {
-  int i, j, k;
   Vertex *v[8];
 
   Simplex *s = *(Simplex **) data;
@@ -465,9 +465,9 @@ void Extrude_Simplex_Phase3(void *data, void *dum)
 
   if(!L0 || !L1 || !L2) return;
 
-  k = 0;
-  for(i = 0; i < ep->mesh.NbLayer; i++) {
-    for(j = 0; j < ep->mesh.NbElmLayer[i]; j++) {
+  int k = 0;
+  for(int i = 0; i < ep->mesh.NbLayer; i++) {
+    for(int j = 0; j < ep->mesh.NbElmLayer[i]; j++) {
       List_Read(L0, k, &v[0]);
       List_Read(L1, k, &v[1]);
       List_Read(L2, k, &v[2]);
@@ -528,7 +528,6 @@ void Extrude_Simplex_Phase3(void *data, void *dum)
 
 void Extrude_Quadrangle_Phase3(void *data, void *dum)
 {
-  int i, j, k;
   Vertex *v[8];
 
   Quadrangle *q = *(Quadrangle **) data;
@@ -545,9 +544,9 @@ void Extrude_Quadrangle_Phase3(void *data, void *dum)
 
   if(!L0 || !L1 || !L2 || !L3) return;
 
-  k = 0;
-  for(i = 0; i < ep->mesh.NbLayer; i++) {
-    for(j = 0; j < ep->mesh.NbElmLayer[i]; j++) {
+  int k = 0;
+  for(int i = 0; i < ep->mesh.NbLayer; i++) {
+    for(int j = 0; j < ep->mesh.NbElmLayer[i]; j++) {
       List_Read(L0, k, &v[0]);
       List_Read(L1, k, &v[1]);
       List_Read(L2, k, &v[2]);
@@ -565,7 +564,6 @@ void Extrude_Quadrangle_Phase3(void *data, void *dum)
 void Extrude_Vertex(void *data, void *dum)
 {
   Vertex **vexist, *v, *newv;
-  int i, j;
   nxl NXL;
 
   v = *((Vertex **) data);
@@ -582,8 +580,8 @@ void Extrude_Vertex(void *data, void *dum)
 
   List_Add(NXL.List, &v);
 
-  for(i = 0; i < ep->mesh.NbLayer; i++) {
-    for(j = 0; j < ep->mesh.NbElmLayer[i]; j++) {
+  for(int i = 0; i < ep->mesh.NbLayer; i++) {
+    for(int j = 0; j < ep->mesh.NbElmLayer[i]; j++) {
       newv = Create_Vertex(++THEM->MaxPointNum, v->Pos.X,
                            v->Pos.Y, v->Pos.Z, v->lc, v->u);
       ep->Extrude(i, j + 1, newv->Pos.X, newv->Pos.Y, newv->Pos.Z);
@@ -640,8 +638,12 @@ void Create_Tri(int iEnt, Vertex * v1, Vertex * v2, Vertex * v3)
   }
 }
 
-void Extrude_Seg(Vertex * V1, Vertex * V2)
+void Extrude_Seg(void *data, void *dum)
 {
+  Simplex *ll = *(Simplex**)data;
+  Vertex *V1 = ll->V[0];
+  Vertex *V2 = ll->V[1];
+
   Vertex *v1, *v2, *v3, *v4;
 
   List_T *L1 = getnxl(V1, DIM);
@@ -709,20 +711,18 @@ void Extrude_Seg(Vertex * V1, Vertex * V2)
 
 void Extrude_Curve(void *data, void *dum)
 {
-  Vertex *v1, *v2;
   Curve *c = *(Curve **) data;
 
   //if (c->Num < 0) return;
 
-  for(int i = 0; i < List_Nbr(c->Vertices) - 1; i++) {
-    List_Read(c->Vertices, i, &v1);
-    List_Read(c->Vertices, i + 1, &v2);
-    Extrude_Seg(v1, v2);
-  }
+  Tree_Action(c->Simplexes, Extrude_Seg);
 }
 
 void copy_mesh(Curve * from, Curve * to, int direction)
 {
+  // Warning: this routine relies on the fact that the vertex lists
+  // are ordered...
+
   List_T *list = from->Vertices;
   Vertex **vexist, *v, *newv;
 
@@ -810,7 +810,6 @@ void copy_mesh(Curve * from, Curve * to, int direction)
 
 int Extrude_Mesh(Curve * c)
 {
-  int i, j;
   Vertex **vexist, *v, *newv, *v1, *v2;
   List_T *L;
 
@@ -843,7 +842,7 @@ int Extrude_Mesh(Curve * c)
       List_Add(c->Vertices, &newv);
     }
 
-    for(i = 1; i < List_Nbr(L) - 1; i++) {
+    for(int i = 1; i < List_Nbr(L) - 1; i++) {
       List_Read(L, i, &v);
       if(!v->ListCurves)
         v->ListCurves = List_Create(1, 1, sizeof(Curve *));
@@ -871,8 +870,8 @@ int Extrude_Mesh(Curve * c)
     }
 
     int k = 0;
-    for(i = 0; i < ep->mesh.NbLayer; i++) {
-      for(j = 0; j < ep->mesh.NbElmLayer[i]; j++) {
+    for(int i = 0; i < ep->mesh.NbLayer; i++) {
+      for(int j = 0; j < ep->mesh.NbElmLayer[i]; j++) {
 	if(k >= List_Nbr(c->Vertices) - 1){
 	  Msg(GERROR, "Something wrong in number of elements in extruded curve %d",
 	      c->Num);
@@ -1000,7 +999,6 @@ void AddQuadVertsInSurf(void *a, void *b)
 
 int Extrude_Mesh(Surface * s)
 {
-  int i;
   Vertex *v1;
   Curve *c;
   extern int FACE_DIMENSION;
@@ -1019,7 +1017,7 @@ int Extrude_Mesh(Surface * s)
     c = FindCurve(abs(ep->geo.Source), THEM);
     if(!c)
       return false;
-    for(i = 0; i < List_Nbr(c->Vertices); i++) {
+    for(int i = 0; i < List_Nbr(c->Vertices); i++) {
       List_Read(c->Vertices, i, &v1);
       Extrude_Vertex(&v1, NULL);
     }
@@ -1067,7 +1065,7 @@ int Extrude_Mesh(Volume * v)
 
 int Extrude_Mesh(Tree_T * Volumes)
 {
-  int i, j, extrude = 0;
+  int extrude = 0;
   Surface *s;
   List_T *list;
 
@@ -1100,7 +1098,7 @@ int Extrude_Mesh(Tree_T * Volumes)
     }
   }
 
-  j = 0;
+  int j = 0;
   do {
     BAD_TETS = 0;
     for(int ivol = 0; ivol < List_Nbr(vol); ivol++) {
@@ -1143,14 +1141,14 @@ int Extrude_Mesh(Tree_T * Volumes)
     ep = THEV->Extrude;
     if(ep && ep->mesh.ExtrudeMesh && ep->geo.Mode == EXTRUDED_ENTITY &&
        !ep->mesh.Recombine) {
-      for(i = 0; i < List_Nbr(THEV->Surfaces); i++) {
+      for(int i = 0; i < List_Nbr(THEV->Surfaces); i++) {
         List_Read(THEV->Surfaces, i, &s);
         if(!List_Search(list, &s, compareSurface))
           List_Add(list, &s);
       }
     }
   }
-  for(i = 0; i < List_Nbr(list); i++) {
+  for(int i = 0; i < List_Nbr(list); i++) {
     List_Read(list, i, &s);
     tmp = Tree_Create(sizeof(Simplex *), compareQuality);
     Tree_Action(s->Simplexes, Free_NegativeSimplex);
diff --git a/Mesh/3D_Extrude_Old.cpp b/Mesh/3D_Extrude_Old.cpp
index 779cae54a4fcac44501c2729edffa7fdf2a9369d..e0724aa60939c82edcd10e3c4b0cd4530999d294 100644
--- a/Mesh/3D_Extrude_Old.cpp
+++ b/Mesh/3D_Extrude_Old.cpp
@@ -1,4 +1,4 @@
-// $Id: 3D_Extrude_Old.cpp,v 1.34 2005-06-10 20:59:15 geuzaine Exp $
+// $Id: 3D_Extrude_Old.cpp,v 1.35 2005-06-10 22:50:49 geuzaine Exp $
 //
 // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle
 //
@@ -167,14 +167,13 @@ static void are_del(Vertex * v1, Vertex * v2, Tree_T * t)
 
 static void Extrude_Simplex_Phase1(void *data, void *dum)
 {
-  int i, j, k;
   Vertex *v1, *v2, *v3, *v4, *v5, *v6;
 
   Simplex *s = *(Simplex **) data;
 
-  k = 0;
-  for(i = 0; i < NbLayer; i++) {
-    for(j = 0; j < NbElmLayer[i]; j++) {
+  int k = 0;
+  for(int i = 0; i < NbLayer; i++) {
+    for(int j = 0; j < NbElmLayer[i]; j++) {
       List_Read(s->V[0]->Extruded_Points, k, &v1);
       List_Read(s->V[1]->Extruded_Points, k, &v2);
       List_Read(s->V[2]->Extruded_Points, k, &v3);
@@ -194,15 +193,14 @@ static void Extrude_Simplex_Phase1(void *data, void *dum)
 
 static void Extrude_Simplex_Phase3(void *data, void *dum)
 {
-  Simplex  *news;
+  Simplex *news;
   Prism *newp;
-  int i, j, k;
   Vertex *v1, *v2, *v3, *v4, *v5, *v6;
 
   Simplex *s = *(Simplex **) data;
 
-  k = 0;
-  for(i = 0; i <= NbLayer; i++) {
+  int k = 0;
+  for(int i = 0; i <= NbLayer; i++) {
     if(SurfLayer[i]) {
       List_Read(s->V[0]->Extruded_Points, k, &v1);
       List_Read(s->V[1]->Extruded_Points, k, &v2);
@@ -211,14 +209,14 @@ static void Extrude_Simplex_Phase3(void *data, void *dum)
       news->iEnt = SurfLayer[i];
       Tree_Add(THEV->Simp_Surf, &news);
     }
-    for(j = 0; j < NbElmLayer[i]; j++) {
+    for(int j = 0; j < NbElmLayer[i]; j++) {
       k++;
     }
   }
 
   k = 0;
-  for(i = 0; i < NbLayer; i++) {
-    for(j = 0; j < NbElmLayer[i]; j++) {
+  for(int i = 0; i < NbLayer; i++) {
+    for(int j = 0; j < NbElmLayer[i]; j++) {
       List_Read(s->V[0]->Extruded_Points, k, &v1);
       List_Read(s->V[1]->Extruded_Points, k, &v2);
       List_Read(s->V[2]->Extruded_Points, k, &v3);
@@ -320,8 +318,6 @@ static void Extrude_Simplex_Phase3(void *data, void *dum)
 
 static void Extrude_Quadrangle_Phase3(void *data, void *dum)
 {
-  int i, j, k;
-  Vertex *v1, *v2, *v3, *v4, *v5, *v6, *v7, *v8;
 
   Quadrangle *q = *(Quadrangle **) data;
 
@@ -330,8 +326,10 @@ static void Extrude_Quadrangle_Phase3(void *data, void *dum)
     return;
   }
 
-  k = 0;
-  for(i = 0; i <= NbLayer; i++) {
+  Vertex *v1, *v2, *v3, *v4, *v5, *v6, *v7, *v8;
+
+  int k = 0;
+  for(int i = 0; i <= NbLayer; i++) {
     if(SurfLayer[i]) {
       List_Read(q->V[0]->Extruded_Points, k, &v1);
       List_Read(q->V[1]->Extruded_Points, k, &v2);
@@ -341,14 +339,14 @@ static void Extrude_Quadrangle_Phase3(void *data, void *dum)
       newq->iEnt = SurfLayer[i];
       Tree_Add(THEV->Quad_Surf, &newq);
     }
-    for(j = 0; j < NbElmLayer[i]; j++) {
+    for(int j = 0; j < NbElmLayer[i]; j++) {
       k++;
     }
   }
 
   k = 0;
-  for(i = 0; i < NbLayer; i++) {
-    for(j = 0; j < NbElmLayer[i]; j++) {
+  for(int i = 0; i < NbLayer; i++) {
+    for(int j = 0; j < NbElmLayer[i]; j++) {
       List_Read(q->V[0]->Extruded_Points, k, &v1);
       List_Read(q->V[1]->Extruded_Points, k, &v2);
       List_Read(q->V[2]->Extruded_Points, k, &v3);
@@ -370,14 +368,12 @@ static void Extrude_Quadrangle_Phase3(void *data, void *dum)
 
 static void Extrude_Simplex_Phase2(void *data, void *dum)
 {
-  int i, j, k;
-  Vertex *v1, *v2, *v3, *v4, *v5, *v6;
-
   Simplex *s = *(Simplex **) data;
 
-  k = 0;
-  for(i = 0; i < NbLayer; i++) {
-    for(j = 0; j < NbElmLayer[i]; j++) {
+  int k = 0;
+  for(int i = 0; i < NbLayer; i++) {
+    for(int j = 0; j < NbElmLayer[i]; j++) {
+      Vertex *v1, *v2, *v3, *v4, *v5, *v6;
       List_Read(s->V[0]->Extruded_Points, k, &v1);
       List_Read(s->V[1]->Extruded_Points, k, &v2);
       List_Read(s->V[2]->Extruded_Points, k, &v3);
@@ -435,38 +431,37 @@ static void Extrude_Simplex_Phase2(void *data, void *dum)
 
 static void Extrude_Vertex(void *data, void *dum)
 {
-  Vertex **pV, *v, *newv;
-  int i, j;
-  double h, a;
+  Vertex *v = *(Vertex **) data;
 
-  pV = (Vertex **) data;
-  v = *pV;
   if(v->Extruded_Points)
     return;
+
   v->Extruded_Points = List_Create(NbLayer, 1, sizeof(Vertex *));
   List_Add(v->Extruded_Points, &v);
-  h = 0.0;
 
   //printf("-extruding vertex %d %p\n", v->Num, v);
 
-  for(i = 0; i < NbLayer; i++) {
+  double h = 0.0;
+
+  for(int i = 0; i < NbLayer; i++) {
 
     // Geometric progression ar^i
     // Sum of n (=NbElmLayer[i]) terms = hLayer[i] = a (r^n-1)/(r-1)
     
+    double a;
     if(parLayer[i] == 1.)
       a = hLayer[i] / (double)NbElmLayer[i];
     else
       a = hLayer[i] * (parLayer[i] - 1.) / 
 	(pow(parLayer[i], NbElmLayer[i]) - 1.);
     
-    for(j = 0; j < NbElmLayer[i]; j++) {
+    for(int j = 0; j < NbElmLayer[i]; j++) {
      
       //h += hLayer[i]/(double)NbElmLayer[i];
 
       h += a * pow(parLayer[i], j);
 
-      newv = Create_Vertex(++THEM->MaxPointNum, v->Pos.X, v->Pos.Y, 
+      Vertex *newv = Create_Vertex(++THEM->MaxPointNum, v->Pos.X, v->Pos.Y, 
 			   v->Pos.Z + h, v->lc, v->u);
       Tree_Add(THEM->Vertices, &newv);
       List_Add(v->Extruded_Points, &newv);
@@ -499,7 +494,6 @@ static void Extrude_Surface2(void *data, void *dum)
 
 static void Extrude_Surface3(void *data, void *dum)
 {
-  int i;
   if(!NbLayer)
     return;
 
@@ -507,11 +501,11 @@ static void Extrude_Surface3(void *data, void *dum)
   THES = s;
 
   Msg(INFO, "Extruding Surface %d", s->Num);
-  for(i = 0; i < NbLayer; i++) {
+  for(int i = 0; i < NbLayer; i++) {
     ZonLayer[i] = (int)(3 * K1) + (int)((i + 1) * K2) + s->Num;
   }
   SurfLayer[0] = s->Num;
-  for(i = 0; i < NbLayer; i++) {
+  for(int i = 0; i < NbLayer; i++) {
     SurfLayer[i + 1] = (int)(2 * K1) + (int)((i + 1) * K2) + s->Num;
   }
 
@@ -521,7 +515,7 @@ static void Extrude_Surface3(void *data, void *dum)
 
 static void Extrude_Seg(void *data, void *dum)
 {
-  Simplex *ll = *(Simplex **) data;
+  Simplex *ll = *(Simplex**)data;
   Vertex *V1 = ll->V[0];
   Vertex *V2 = ll->V[1];
 
@@ -583,12 +577,10 @@ static void Extrude_Seg(void *data, void *dum)
 
 static void Extrude_Curve(void *data, void *dum)
 {
-  Curve **pC, *c;
-  int i;
   if(!NbLayer)
     return;
-  pC = (Curve **) data;
-  c = *pC;
+
+  Curve *c = *(Curve **) data;
 
   if(c->Num < 0)
     return;
@@ -596,29 +588,24 @@ static void Extrude_Curve(void *data, void *dum)
   Msg(INFO, "Extruding Curve %d", c->Num);
 
   LineLayer[0] = c->Num;
-  for(i = 0; i < NbLayer; i++) {
+  for(int i = 0; i < NbLayer; i++) {
     SurfLayer[i] = (int)(1 * K1) + (int)((i + 1) * K2) + c->Num;
     LineLayer[i + 1] = (int)(5 * K1) + (int)((i + 1) * K2) + c->Num;
   }
 
-  // This is better than extruding based on c->Vertices (since it also
-  // works if for some reason v->Vertices is not ordered)
   Tree_Action(c->Simplexes, Extrude_Seg);
 }
 
 static void Extrude_Pnt(Vertex * V1)
 {
-  int i, j, k;
-  Vertex *v1, *v2;
-  Simplex *s;
-
-  k = 0;
-  for(i = 0; i < NbLayer; i++) {
-    for(j = 0; j < NbElmLayer[i]; j++) {
+  int k = 0;
+  for(int i = 0; i < NbLayer; i++) {
+    for(int j = 0; j < NbElmLayer[i]; j++) {
+      Vertex *v1, *v2;
       List_Read(V1->Extruded_Points, k, &v1);
       List_Read(V1->Extruded_Points, k + 1, &v2);
       if(LineLayer[i]) {
-        s = Create_Simplex(v1, v2, NULL, NULL);
+        Simplex *s = Create_Simplex(v1, v2, NULL, NULL);
         s->iEnt = LineLayer[i];
         Tree_Add(THEV->Simp_Surf, &s);
       }
@@ -630,31 +617,29 @@ static void Extrude_Pnt(Vertex * V1)
 
 static void Extrude_Point(void *data, void *dum)
 {
-  Vertex **pV, *v, **pV2;
-  int i;
-
   if(!NbLayer)
     return;
-  pV = (Vertex **) data;
-  v = *pV;
+
+  Vertex *v = *(Vertex **) data;
 
   Msg(INFO, "Extruding Vertex %d", v->Num);
-  for(i = 0; i < NbLayer; i++) {
+  for(int i = 0; i < NbLayer; i++) {
     LineLayer[i] = (int)(4 * K1) + (int)((i + 1) * K2) + v->Num;
   }
 
   // only extrude points for which a mesh vertex exists with the same
   // number (i.e., start & end points of curves)
-  if((pV2 = (Vertex **) Tree_PQuery(THEM->Vertices, pV))) {
-    Extrude_Vertex(pV2, NULL);
-    Extrude_Pnt(*pV2);
+  Vertex **pV;
+  if((pV = (Vertex **) Tree_PQuery(THEM->Vertices, &v))) {
+    Extrude_Vertex(pV, NULL);
+    Extrude_Pnt(*pV);
   }
 
 }
 
 void FreeEP(void *a, void *b)
 {
-  Vertex *v = *((Vertex **) a);
+  Vertex *v = *(Vertex **) a;
   Free_ExtrudedPoints(v->Extruded_Points);
   v->Extruded_Points = NULL;
 }
diff --git a/Mesh/Create.cpp b/Mesh/Create.cpp
index cf017ea875602031047d8173f0e8554f5d6f960b..9d4192c59d193ba144475414d120c07e184e9e72 100644
--- a/Mesh/Create.cpp
+++ b/Mesh/Create.cpp
@@ -1,4 +1,4 @@
-// $Id: Create.cpp,v 1.74 2005-05-21 01:10:47 geuzaine Exp $
+// $Id: Create.cpp,v 1.75 2005-06-10 22:50:49 geuzaine Exp $
 //
 // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle
 //
@@ -530,7 +530,6 @@ Curve *Create_Curve(int Num, int Typ, int Order, List_T * Liste,
   pC->Visible = VIS_GEOM | VIS_MESH;
   pC->cp = NULL;
   pC->Vertices = List_Create(2, 20, sizeof(Vertex *));
-  pC->VerticesTemp = NULL;
   pC->Extrude = NULL;
   pC->Typ = Typ;
   pC->Num = Num;
diff --git a/Mesh/Mesh.h b/Mesh/Mesh.h
index 95db93d30a7990263df4cc669294e63037759a0d..84564bc8e85ca87c48ba68b864b281ffbd8d23d2 100644
--- a/Mesh/Mesh.h
+++ b/Mesh/Mesh.h
@@ -365,7 +365,6 @@ typedef struct{
   double ubeg, uend;
   List_T *Control_Points;
   List_T *Vertices;
-  Tree_T *VerticesTemp; // a temp tree for fast vertex insertion
   Tree_T *Simplexes, *SimplexesBase;
   ExtrudeParams *Extrude;
   float *k, *cp;
diff --git a/Mesh/Read_Mesh.cpp b/Mesh/Read_Mesh.cpp
index 8f091d6671a52225dd6390655054191e4d280789..cdd76cd7ee03dd830370f931475a37d88334b35d 100644
--- a/Mesh/Read_Mesh.cpp
+++ b/Mesh/Read_Mesh.cpp
@@ -1,4 +1,4 @@
-// $Id: Read_Mesh.cpp,v 1.91 2005-06-10 20:59:15 geuzaine Exp $
+// $Id: Read_Mesh.cpp,v 1.92 2005-06-10 22:50:49 geuzaine Exp $
 //
 // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle
 //
@@ -162,21 +162,6 @@ double SetLC(Vertex *v1, Vertex *v2, Vertex *v3, Vertex *v4 = 0)
   return lc;
 }
 
-static Curve *theCurve = NULL;
-
-static void TransferVertex(void *a, void *b)
-{
-  List_Add(theCurve->Vertices, a);
-}
-
-static void Transfer_VertexTree2List(void *a, void *b)
-{
-  theCurve = *(Curve**)a;
-  Tree_Action(theCurve->VerticesTemp, TransferVertex);
-  Tree_Delete(theCurve->VerticesTemp);
-  theCurve->VerticesTemp = NULL;
-}
-
 void Read_Mesh_MSH(Mesh * M, FILE * fp)
 {
   char String[256];
@@ -383,20 +368,9 @@ void Read_Mesh_MSH(Mesh * M, FILE * fp)
 	    Free_SimplexBase(&simp, 0);
 	  }
 	  else{
-	    // This is dog slow when there is a large num of verts per curve:
-	    //
-	    // for(i = 0; i < Nbr_Nodes; i++)
-	    //    List_Insert(c->Vertices, &vertsp[i], fcmp_int);
-	    //
-	    // So we use a temp tree instead. Note that this can cause
-	    // problems in some algos since this can destroy the
-	    // "natural" ordering of the vertices in the list (two
-	    // successive vertices do not necessarily define an
-	    // element).
-	    if(!c->VerticesTemp)
-	      c->VerticesTemp = Tree_Create(sizeof(Vertex *), compareVertex);
+	    // this can be quite slow if there are many nodes on the curve...
 	    for(i = 0; i < Nbr_Nodes; i++)
-	      Tree_Insert(c->VerticesTemp, &vertsp[i]);
+	      List_Insert(c->Vertices, &vertsp[i], fcmp_int);
 	  }
           break;
         case TRI1:
@@ -609,9 +583,6 @@ void Read_Mesh_MSH(Mesh * M, FILE * fp)
   // access through List_Pointer & co.
   List_Sort(M->Partitions, compareMeshPartitionIndex);
 
-  // Transfer the vertices from temp trees into lists
-  Tree_Action(M->Curves, Transfer_VertexTree2List);
-
   // Transfer the temp group tree back into the mesh
   List_Delete(M->PhysicalGroups);
   M->PhysicalGroups = Tree2List(groups);