diff --git a/Mesh/BDS.cpp b/Mesh/BDS.cpp
index 38ff6e8295f9f5e4a62a832bcd63394a1a4c4416..310b1b7d48248a6b64efc66afde28c876e819439 100644
--- a/Mesh/BDS.cpp
+++ b/Mesh/BDS.cpp
@@ -1,4 +1,4 @@
-// $Id: BDS.cpp,v 1.56 2006-08-19 08:26:47 remacle Exp $
+// $Id: BDS.cpp,v 1.57 2006-08-19 20:51:44 geuzaine Exp $
 //
 // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 //
@@ -1376,316 +1376,6 @@ void BDS_Mesh::classify(double angle, int NB_T)
 double PointLessThanLexicographic::t = 0;
 double BDS_Vector::t = 0;
 
-bool BDS_Mesh::read_stl(const char *filename, const double tolerance)
-{
-  // add 'b' for pure Windows programs, since some of these files
-  // contain binary data
-  FILE *f = fopen(filename, "rb");
-  if(!f)
-    return false;
-  char buffer[256], name[256];
-
-  PointLessThanLexicographic::t = tolerance;
-
-  fgets(buffer, 255, f);
-
-  std::set < BDS_Point *, PointLessThanLexicographic > pts;
-
-  sscanf(buffer, "%s", name);
-  // ASCII STL    
-  if(!strcmp(name, "solid")) {
-    rewind(f);
-    fgets(buffer, 255, f);
-
-    Min[0] = Min[1] = Min[2] = 1.e12;
-    Max[0] = Max[1] = Max[2] = -1.e12;
-
-    double XCG = 0;
-    double YCG = 0;
-    double ZCG = 0;
-
-    int Nf = 0;
-    while(!feof(f)) {
-      char s1[256], s2[256];
-      float x, y, z;
-      fgets(buffer, 255, f);
-      sscanf(buffer, "%s", s1);
-      if(!strcmp(s1, "endsolid"))
-        break;
-      sscanf(buffer, "%s %s %f %f %f", s1, s2, &x, &y, &z);
-      fgets(buffer, 255, f);
-      fgets(buffer, 255, f);    // 1st point
-      sscanf(buffer, "%s %f %f %f", s2, &x, &y, &z);
-      BDS_Point P1(0, x, y, z);
-      fgets(buffer, 255, f);    // 2nd point
-      sscanf(buffer, "%s %f %f %f", s2, &x, &y, &z);
-      BDS_Point P2(0, x, y, z);
-      fgets(buffer, 255, f);    // 3rd point
-      sscanf(buffer, "%s %f %f %f", s2, &x, &y, &z);
-      BDS_Point P3(0, x, y, z);
-      fgets(buffer, 255, f);    // end loop
-      fgets(buffer, 255, f);    // end facet
-
-      Nf++;
-
-      if(P1.X < Min[0])
-        Min[0] = P1.X;
-      if(P2.X < Min[0])
-        Min[0] = P2.X;
-      if(P3.X < Min[0])
-        Min[0] = P3.X;
-
-      if(P1.Y < Min[1])
-        Min[1] = P1.Y;
-      if(P2.Y < Min[1])
-        Min[1] = P2.Y;
-      if(P3.Y < Min[1])
-        Min[1] = P3.Y;
-
-      if(P1.Z < Min[2])
-        Min[2] = P1.Z;
-      if(P2.Z < Min[2])
-        Min[2] = P2.Z;
-      if(P3.Z < Min[2])
-        Min[2] = P3.Z;
-
-      if(P1.X > Max[0])
-        Max[0] = P1.X;
-      if(P2.X > Max[0])
-        Max[0] = P2.X;
-      if(P3.X > Max[0])
-        Max[0] = P3.X;
-
-      if(P1.Y > Max[1])
-        Max[1] = P1.Y;
-      if(P2.Y > Max[1])
-        Max[1] = P2.Y;
-      if(P3.Y > Max[1])
-        Max[1] = P3.Y;
-
-      if(P1.Z > Max[2])
-        Max[2] = P1.Z;
-      if(P2.Z > Max[2])
-        Max[2] = P2.Z;
-      if(P3.Z > Max[2])
-        Max[2] = P3.Z;
-
-      XCG += (P1.X + P2.X + P3.X);
-      YCG += (P1.Y + P2.Y + P3.Y);
-      ZCG += (P1.Z + P2.Z + P3.Z);
-    }
-
-    XCG /= (3 * Nf);
-    YCG /= (3 * Nf);
-    ZCG /= (3 * Nf);
-
-    Min[0] -= XCG;
-    Min[1] -= YCG;
-    Min[2] -= ZCG;
-    Max[0] -= XCG;
-    Max[1] -= YCG;
-    Max[2] -= ZCG;
-
-    LC = sqrt((Min[0] - Max[0]) * (Min[0] - Max[0]) +
-              (Min[1] - Max[1]) * (Min[1] - Max[1]) +
-              (Min[2] - Max[2]) * (Min[2] - Max[2]));
-
-    // printf("LC = %g\n",LC);
-
-    PointLessThanLexicographic::t = LC * tolerance;
-
-    rewind(f);
-    fgets(buffer, 255, f);
-    while(!feof(f)) {
-      char s1[256], s2[256];
-      float x, y, z;
-      fgets(buffer, 255, f);
-      sscanf(buffer, "%s", s1);
-      if(!strcmp(s1, "endsolid"))
-        break;
-      sscanf(buffer, "%s %s %f %f %f", s1, s2, &x, &y, &z);
-      fgets(buffer, 255, f);
-      fgets(buffer, 255, f);    // 1st point
-      sscanf(buffer, "%s %f %f %f", s2, &x, &y, &z);
-      BDS_Point P1(0, x - XCG, y - YCG, z - ZCG);
-      fgets(buffer, 255, f);    // 2nd point
-      sscanf(buffer, "%s %f %f %f", s2, &x, &y, &z);
-      BDS_Point P2(0, x - XCG, y - YCG, z - ZCG);
-      fgets(buffer, 255, f);    // 3rd point
-      sscanf(buffer, "%s %f %f %f", s2, &x, &y, &z);
-      BDS_Point P3(0, x - XCG, y - YCG, z - ZCG);
-      fgets(buffer, 255, f);    // end loop
-      fgets(buffer, 255, f);    // end facet
-      BDS_Point *p1 = 0;
-      BDS_Point *p2 = 0;
-      BDS_Point *p3 = 0;
-      std::set < BDS_Point *, PointLessThanLexicographic >::iterator it1 =
-        pts.find(&P1);
-      if(it1 != pts.end()) {
-        p1 = *it1;
-      }
-      else {
-        MAXPOINTNUMBER++;
-        p1 = add_point(MAXPOINTNUMBER, P1.X, P1.Y, P1.Z);
-        pts.insert(p1);
-      }
-      std::set < BDS_Point *, PointLessThanLexicographic >::iterator it2 =
-        pts.find(&P2);
-      if(it2 != pts.end()) {
-        p2 = *it2;
-      }
-      else {
-        MAXPOINTNUMBER++;
-        p2 = add_point(MAXPOINTNUMBER, P2.X, P2.Y, P2.Z);
-        pts.insert(p2);
-      }
-      std::set < BDS_Point *, PointLessThanLexicographic >::iterator it3 =
-        pts.find(&P3);
-      if(it3 != pts.end()) {
-        p3 = *it3;
-      }
-      else {
-        MAXPOINTNUMBER++;
-        p3 = add_point(MAXPOINTNUMBER, P3.X, P3.Y, P3.Z);
-        pts.insert(p3);
-      }
-      add_triangle(p1->iD, p2->iD, p3->iD);
-    }
-  }
-  // BINARY STL 
-  else {
-    rewind(f);
-    char DUMMY[80];
-    fread(DUMMY, 1, 80, f);
-
-    unsigned long int Nf;
-    size_t x = fread(&Nf, sizeof(unsigned long int), 1, f);
-    char *DATA = new char[Nf * 50 * sizeof(char)];
-    x = fread(DATA, sizeof(char), Nf * 50, f);
-
-    Msg(INFO, "BINARY STL data read, %ld facets", Nf);
-
-    Min[0] = Min[1] = Min[2] = 1.e12;
-    Max[0] = Max[1] = Max[2] = -1.e12;
-
-    double XCG = 0;
-    double YCG = 0;
-    double ZCG = 0;
-
-    for(unsigned int i = 0; i < Nf; ++i) {
-      float *X = (float *)&DATA[i * 50 * sizeof(char)];
-
-      if(X[3] < Min[0])
-        Min[0] = X[3];
-      if(X[6] < Min[0])
-        Min[0] = X[6];
-      if(X[9] < Min[0])
-        Min[0] = X[9];
-
-      if(X[4] < Min[1])
-        Min[1] = X[4];
-      if(X[7] < Min[1])
-        Min[1] = X[7];
-      if(X[10] < Min[1])
-        Min[1] = X[10];
-
-      if(X[5] < Min[2])
-        Min[2] = X[5];
-      if(X[8] < Min[2])
-        Min[2] = X[8];
-      if(X[11] < Min[2])
-        Min[2] = X[11];
-
-      if(X[3] > Max[0])
-        Max[0] = X[3];
-      if(X[6] > Max[0])
-        Max[0] = X[6];
-      if(X[9] > Max[0])
-        Max[0] = X[9];
-
-      if(X[4] > Max[1])
-        Max[1] = X[4];
-      if(X[7] > Max[1])
-        Max[1] = X[7];
-      if(X[10] > Max[1])
-        Max[1] = X[10];
-
-      if(X[5] > Max[2])
-        Max[2] = X[5];
-      if(X[8] > Max[2])
-        Max[2] = X[8];
-      if(X[11] > Max[2])
-        Max[2] = X[11];
-      XCG += (X[3] + X[6] + X[9]);
-      YCG += (X[4] + X[7] + X[10]);
-      ZCG += (X[5] + X[8] + X[11]);
-    }
-
-    XCG /= (3 * Nf);
-    YCG /= (3 * Nf);
-    ZCG /= (3 * Nf);
-
-    Min[0] -= XCG;
-    Min[1] -= YCG;
-    Min[2] -= ZCG;
-    Max[0] -= XCG;
-    Max[1] -= YCG;
-    Max[2] -= ZCG;
-    LC = sqrt((Min[0] - Max[0]) * (Min[0] - Max[0]) +
-              (Min[1] - Max[1]) * (Min[1] - Max[1]) +
-              (Min[2] - Max[2]) * (Min[2] - Max[2]));
-
-    PointLessThanLexicographic::t = LC * tolerance;
-
-    for(unsigned int i = 0; i < Nf; ++i) {
-      float *X = (float *)&DATA[i * 50 * sizeof(char)];
-      // printf("%g %g %g %g %g %g %g %g %g %g %g %g\n",
-      //        X[0],X[1],X[2],X[3],X[4],X[5],X[6],X[7],X[8],X[9],X[10],X[11]);
-      BDS_Point P1(0, X[3] - XCG, X[4] - YCG, X[5] - ZCG);
-      BDS_Point P2(0, X[6] - XCG, X[7] - YCG, X[8] - ZCG);
-      BDS_Point P3(0, X[9] - XCG, X[10] - YCG, X[11] - ZCG);
-      BDS_Point *p1 = 0;
-      BDS_Point *p2 = 0;
-      BDS_Point *p3 = 0;
-      std::set < BDS_Point *, PointLessThanLexicographic >::iterator it1 =
-        pts.find(&P1);
-      if(it1 != pts.end()) {
-        p1 = *it1;
-      }
-      else {
-        MAXPOINTNUMBER++;
-        p1 = add_point(MAXPOINTNUMBER, P1.X, P1.Y, P1.Z);
-        pts.insert(p1);
-      }
-      std::set < BDS_Point *, PointLessThanLexicographic >::iterator it2 =
-        pts.find(&P2);
-      if(it2 != pts.end()) {
-        p2 = *it2;
-      }
-      else {
-        MAXPOINTNUMBER++;
-        p2 = add_point(MAXPOINTNUMBER, P2.X, P2.Y, P2.Z);
-        pts.insert(p2);
-      }
-      std::set < BDS_Point *, PointLessThanLexicographic >::iterator it3 =
-        pts.find(&P3);
-      if(it3 != pts.end()) {
-        p3 = *it3;
-      }
-      else {
-        MAXPOINTNUMBER++;
-        p3 = add_point(MAXPOINTNUMBER, P3.X, P3.Y, P3.Z);
-        pts.insert(p3);
-      }
-      add_triangle(p1->iD, p2->iD, p3->iD);
-    }
-    delete[]DATA;
-  }
-  fclose(f);
-  // classify(M_PI);
-  return true;
-}
-
 bool BDS_Mesh::import_view(Post_View *view, const double tolerance)
 {
   // imports all the tris+quads from a post-processing view
@@ -1743,197 +1433,6 @@ bool BDS_Mesh::import_view(Post_View *view, const double tolerance)
   return true;
 }
 
-// INRIA FORMAT
-bool BDS_Mesh::read_mesh(const char *filename)
-{
-  FILE *f = fopen(filename, "r");
-  if(!f)
-    return false;
-  char buffer[256], name[256];
-
-  fgets(buffer, 255, f);
-
-  int format;
-
-  sscanf(buffer, "%s %d", name, &format);
-  // ASCII MESH  
-  if(format == 1) {
-
-    while(!feof(f)) {
-      fgets(buffer, 255, f);
-      if(buffer[0] != '#') {    // skip comments
-        sscanf(buffer, "%s", name);
-
-        if(!strcmp(name, "Dimension"))
-          fgets(buffer, 255, f);
-        else if(!strcmp(name, "Vertices")) {
-          Min[0] = Min[1] = Min[2] = 1.e12;
-          Max[0] = Max[1] = Max[2] = -1.e12;
-          int nbv, cl;
-          double x, y, z;
-          fgets(buffer, 255, f);
-          sscanf(buffer, "%d", &nbv);
-          for(int i = 0; i < nbv; i++) {
-            fgets(buffer, 255, f);
-            sscanf(buffer, "%lf %lf %lf %d", &x, &y, &z, &cl);
-            Min[0] = (Min[0] < x) ? Min[0] : x;
-            Min[1] = (Min[1] < y) ? Min[1] : y;
-            Min[2] = (Min[2] < z) ? Min[2] : z;
-            Max[0] = (Max[0] > x) ? Max[0] : x;
-            Max[1] = (Max[1] > y) ? Max[1] : y;
-            Max[2] = (Max[2] > z) ? Max[2] : z;
-            add_point(i + 1, x, y, z);
-          }
-
-	  // NORMALIZE HERE
-
-	  LC = sqrt((Min[0] - Max[0]) * (Min[0] - Max[0]) +
-		    (Min[1] - Max[1]) * (Min[1] - Max[1]) +
-		    (Min[2] - Max[2]) * (Min[2] - Max[2]));
-	  	  
-	  std::set < BDS_Point *, PointLessThan >::iterator it = points.begin();
-	  std::set < BDS_Point *, PointLessThan >::iterator ite = points.end();
-	  
-	  while(it != ite) 
-	    {
-	      (*it)->X /= LC;
-	      (*it)->Y /= LC;
-	      (*it)->Z /= LC;
-	      ++it;
-	    }
-	  Min[0]/=LC;Min[1]/=LC;Min[2]/=LC;
-	  Max[0]/=LC;Max[1]/=LC;Max[2]/=LC;
-	  LC = 1;
-
-          MAXPOINTNUMBER = nbv + 1;
-        }
-        else if(!strcmp(name, "Triangles")) {
-          int nbt, cl, n1, n2, n3;
-          fgets(buffer, 255, f);
-          sscanf(buffer, "%d", &nbt);
-          for(int i = 0; i < nbt; i++) {
-            fgets(buffer, 255, f);
-            sscanf(buffer, "%d %d %d %d", &n1, &n2, &n3, &cl);
-            BDS_Triangle *t = add_triangle(n1, n2, n3);
-            t->status = cl;
-          }
-        }
-        else if(!strcmp(name, "Quadrilaterals")) {
-          int nbt, cl, n1, n2, n3, n4;
-          fgets(buffer, 255, f);
-          sscanf(buffer, "%d", &nbt);
-          for(int i = 0; i < nbt; i++) {
-            fgets(buffer, 255, f);
-            sscanf(buffer, "%d %d %d %d %d", &n1, &n2, &n3, &n4, &cl);
-            BDS_Triangle *t1 = add_triangle(n1, n2, n3);
-            // pas 12
-            // pas 13
-            BDS_Triangle *t2 = add_triangle(n1, n3, n4);
-            t1->status = cl;
-            t2->status = cl;
-          }
-        }
-      }
-    }
-
-
-
-  }
-  else {
-    throw;
-  }
-
-  return true;
-}
-
-void BDS_Mesh::save_gmsh_format(const char *filename)
-{
-  cleanup();
-
-  int nbModelVertex = 0;
-
-  FILE *f = fopen(filename, "w");
-  {
-    std::set < BDS_Point *, PointLessThan >::iterator it = points.begin();
-    std::set < BDS_Point *, PointLessThan >::iterator ite = points.end();
-
-    fprintf(f, "$NOD\n");
-    fprintf(f, "%d\n", (int)points.size());
-    while(it != ite) {
-      if((*it)->g && (*it)->g->classif_degree == 0)
-        nbModelVertex++;
-      fprintf(f, "%d %g %g %g\n", (*it)->iD, (*it)->X, (*it)->Y, (*it)->Z);
-      ++it;
-    }
-    fprintf(f, "$ENDNOD\n");
-  }
-  {
-    fprintf(f, "$ELM\n");
-
-    int nbClasEdges = 0;
-    {
-      std::list < BDS_Edge * >::iterator it = edges.begin();
-      std::list < BDS_Edge * >::iterator ite = edges.end();
-      while(it != ite) {
-        if((*it)->g && (*it)->g->classif_degree == 1)
-          nbClasEdges++;
-        ++it;
-      }
-    }
-
-    fprintf(f, "%d\n", nbClasEdges + nbModelVertex + triangles.size());
-
-    int k = 1;
-    {
-      std::set < BDS_Point *, PointLessThan >::iterator it = points.begin();
-      std::set < BDS_Point *, PointLessThan >::iterator ite = points.end();
-      while(it != ite) {
-        if((*it)->g && (*it)->g->classif_degree == 0) {
-          fprintf(f, "%d %d %d %d %d %d\n",
-                  k++, 15, (*it)->g->classif_tag, (*it)->g->classif_tag, 1,
-                  (*it)->iD);
-        }
-        ++it;
-      }
-    }
-    {
-      std::list < BDS_Edge * >::iterator it = edges.begin();
-      std::list < BDS_Edge * >::iterator ite = edges.end();
-      while(it != ite) {
-        if((*it)->g && (*it)->g->classif_degree == 1)
-          fprintf(f, "%d %d %d %d %d %d %d\n",
-                  k++, 1, (*it)->g->classif_tag, (*it)->g->classif_tag, 2,
-                  (*it)->p1->iD, (*it)->p2->iD);
-        ++it;
-
-      }
-    }
-    {
-      std::list < BDS_Triangle * >::iterator it = triangles.begin();
-      std::list < BDS_Triangle * >::iterator ite = triangles.end();
-      while(it != ite) {
-        if((*it)->deleted) {
-	  Msg(GERROR, "Error in BDS");
-          throw;
-        }
-        BDS_Point *nod[3];
-        (*it)->getNodes(nod);
-        if((*it)->g)
-          fprintf(f, "%d %d %d %d %d %d %d %d\n",
-                  k++, 2, (*it)->g->classif_tag, (*it)->g->classif_tag, 3,
-                  nod[0]->iD, nod[1]->iD, nod[2]->iD);
-        else
-          fprintf(f, "%d %d %d %d %d %d %d %d\n",
-                  k++, 2, 1, 1, 3, nod[0]->iD, nod[1]->iD, nod[2]->iD);
-        ++it;
-
-      }
-    }
-    fprintf(f, "$ENDELM\n");
-  }
-  fclose(f);
-}
-
 template < class IT > void DESTROOOY(IT beg, IT end)
 {
   while(beg != end) {
diff --git a/Mesh/BDS.h b/Mesh/BDS.h
index 9940da7fad971eabb6777311adf0002fb1fd315e..e331480e049ce3c2d704d044bdd8f9a66badcdd3 100644
--- a/Mesh/BDS.h
+++ b/Mesh/BDS.h
@@ -257,7 +257,7 @@ public:
   void getTriangles(std::list<BDS_Triangle *> &t) const; 	
   void compute_curvature();
   BDS_Point(int id, double x=0, double y=0, double z=0)
-    : X(x),Y(y),Z(z),u(0),v(0),iD(id),radius_of_curvature(1.e22),g(0)
+    : radius_of_curvature(1.e22),X(x),Y(y),Z(z),u(0),v(0),iD(id),g(0)
   {	    
   }
 };
@@ -720,13 +720,7 @@ public:
   void cleanup();
   bool extractVolumes();
   // io's 
-  // STL
-  bool read_stl(const char *filename, const double tolerance);
-  // INRIA MESH
-  bool read_mesh(const char *filename);
-  bool read_vrml(const char *filename);
   bool import_view(Post_View *view, const double tolerance);
-  void save_gmsh_format(const char *filename);
   void applyOptimizationPatterns();
 };