diff --git a/Box/Box.cpp b/Box/Box.cpp
index 2ef2359d7b3a83fbf5e6dfcb4352adeeede8f8e6..4de38d58fde2a219049620e8eb0a976aac026bdf 100644
--- a/Box/Box.cpp
+++ b/Box/Box.cpp
@@ -1,4 +1,4 @@
-// $Id: Box.cpp,v 1.34 2007-03-18 14:12:20 geuzaine Exp $
+// $Id: Box.cpp,v 1.35 2007-04-21 19:39:59 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -25,7 +25,6 @@
 #include "Numeric.h"
 #include "Geo.h"
 #include "Generator.h"
-#include "Views.h"
 #include "Parser.h"
 #include "Context.h"
 #include "Options.h"
@@ -35,6 +34,8 @@
 #include "ParUtil.h"
 #include "PluginManager.h"
 #include "GModel.h"
+#include "Field.h"
+#include "BackgroundMesh.h"
 
 Context_T CTX;
 Mesh *THEM = 0;
@@ -110,9 +111,13 @@ int GMSHBOX(int argc, char *argv[])
       MergeFile(*(char**)List_Pointer(CTX.files, i));
     if(CTX.bgm_filename) {
       MergeFile(CTX.bgm_filename);
-      if(List_Nbr(CTX.post.list))
-        BGMWithView(*(Post_View **)
-                    List_Pointer(CTX.post.list, List_Nbr(CTX.post.list) - 1));
+      if(List_Nbr(CTX.post.list)){
+	Post_View *v;
+	List_Read(CTX.post.list, List_Nbr(CTX.post.list) - 1, &v);
+	Field *field = new PostViewField(v);
+	BGMAddField(field);
+	fields.insert(field);
+      }
       else{
         fprintf(stderr, ERROR_STR "Invalid background mesh (no view)\n");
 	exit(1);
diff --git a/Common/Context.h b/Common/Context.h
index d9180ebb3359a96ad14cd6ee3bb44325dc01e905..9af74778a8486c524f3e712191a8e3f93719b2fb 100644
--- a/Common/Context.h
+++ b/Common/Context.h
@@ -175,7 +175,7 @@ public :
     int format, nb_smoothing, algo2d, algo3d, algo_recombine;
     int order, second_order_linear, second_order_incomplete, smooth_internal_edges;
     int min_circ_points;
-    int bgmesh_view_num, constrained_bgmesh, lc_from_curvature;
+    int constrained_bgmesh, lc_from_curvature;
     double normals, tangents, explode;
     int color_carousel;
     int use_cut_plane, cut_plane_draw_intersect, cut_plane_only_volume;
diff --git a/Common/Makefile b/Common/Makefile
index dfb61b99b3f6d23c086daf70d609aae8ae0223c3..6980d934711aef37f6cf5f10d290d10c1c80f1be 100644
--- a/Common/Makefile
+++ b/Common/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.129 2007-04-16 09:08:26 remacle Exp $
+# $Id: Makefile,v 1.130 2007-04-21 19:39:59 geuzaine Exp $
 #
 # Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 #
@@ -71,14 +71,14 @@ Context.o: Context.cpp Gmsh.h Message.h ../DataStr/Malloc.h \
   VertexArray.h SmoothData.h AdaptiveViews.h GmshMatrix.h Trackball.h
 AdaptiveViews.o: AdaptiveViews.cpp AdaptiveViews.h ../DataStr/List.h \
   GmshMatrix.h ../Plugin/Plugin.h ../Common/Options.h ../Common/Message.h \
-  ../Common/Views.h ../Common/ColorTable.h ../DataStr/List.h \
-  ../Common/VertexArray.h ../Common/SmoothData.h ../Numeric/Numeric.h \
-  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h OS.h
+  ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \
+  ../Common/SmoothData.h ../Numeric/Numeric.h ../Common/AdaptiveViews.h \
+  ../Common/GmshMatrix.h OS.h
 Views.o: Views.cpp Gmsh.h Message.h ../DataStr/Malloc.h ../DataStr/List.h \
   ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h \
   ../DataStr/Tree.h ../Numeric/Numeric.h Views.h ColorTable.h \
   VertexArray.h SmoothData.h AdaptiveViews.h GmshMatrix.h Context.h \
-  Options.h
+  Options.h ../Mesh/BackgroundMesh.h
 ViewsIO.o: ViewsIO.cpp Gmsh.h Message.h ../DataStr/Malloc.h \
   ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
   ../DataStr/List.h ../DataStr/Tree.h ../Numeric/Numeric.h Views.h \
@@ -93,15 +93,13 @@ OctreePost.o: OctreePost.cpp Octree.h OctreeInternals.h OctreePost.h \
 Options.o: Options.cpp Gmsh.h Message.h ../DataStr/Malloc.h \
   ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
   ../DataStr/List.h ../DataStr/Tree.h GmshUI.h GmshDefines.h \
-  ../Graphics/Draw.h ../DataStr/List.h ../Common/Views.h \
-  ../Common/ColorTable.h ../DataStr/List.h ../Common/VertexArray.h \
-  ../Common/SmoothData.h ../Numeric/Numeric.h ../Common/AdaptiveViews.h \
-  ../Common/GmshMatrix.h ../Mesh/Generator.h Context.h Options.h \
-  ../Mesh/BackgroundMesh.h ../Plugin/PluginManager.h ../Plugin/Plugin.h \
-  ../Common/Options.h ../Common/Message.h ../Common/Views.h \
-  ../Common/GmshMatrix.h ../Fltk/Solvers.h ../Fltk/GUI.h \
-  ../Fltk/Opengl_Window.h ../Fltk/Colorbar_Window.h ../Common/GmshUI.h \
-  ../Common/ColorTable.h ../Fltk/Popup_Button.h \
+  ../Graphics/Draw.h ../Common/Views.h ../Common/ColorTable.h \
+  ../Common/VertexArray.h ../Common/SmoothData.h ../Numeric/Numeric.h \
+  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Mesh/Generator.h \
+  Context.h Options.h ../Mesh/BackgroundMesh.h ../Plugin/PluginManager.h \
+  ../Plugin/Plugin.h ../Common/Options.h ../Common/Message.h \
+  ../Fltk/Solvers.h ../Fltk/GUI.h ../Fltk/Opengl_Window.h \
+  ../Fltk/Colorbar_Window.h ../Common/GmshUI.h ../Fltk/Popup_Button.h \
   ../Fltk/SpherePosition_Widget.h
 CommandLine.o: CommandLine.cpp Gmsh.h Message.h ../DataStr/Malloc.h \
   ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
@@ -109,15 +107,22 @@ CommandLine.o: CommandLine.cpp Gmsh.h Message.h ../DataStr/Malloc.h \
   GmshVersion.h CommandLine.h ../Numeric/Numeric.h Context.h Options.h \
   ../Geo/Geo.h ../Common/GmshDefines.h ../Geo/gmshSurface.h ../Geo/Pair.h \
   ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \
-  ../Geo/SBoundingBox3d.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Numeric/Numeric.h \
-  Views.h ColorTable.h VertexArray.h SmoothData.h AdaptiveViews.h \
-  GmshMatrix.h ../Parser/OpenFile.h ../Parser/CreateFile.h \
-  ../Parser/Parser.h ../DataStr/List.h ../DataStr/Tree.h ../Geo/GModel.h \
-  ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/MVertex.h ../Geo/GPoint.h \
-  ../Geo/GEdge.h ../Geo/MElement.h ../Geo/MEdge.h ../Common/Hash.h \
-  ../Geo/MFace.h ../Numeric/Numeric.h ../Common/Context.h ../Geo/GFace.h \
-  ../Geo/GEdgeLoop.h ../Geo/GRegion.h OS.h
+  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
+  ../Geo/SPoint2.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h Views.h \
+  ColorTable.h VertexArray.h SmoothData.h AdaptiveViews.h GmshMatrix.h \
+  ../Parser/OpenFile.h ../Parser/CreateFile.h ../Parser/Parser.h \
+  ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \
+  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/MVertex.h \
+  ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h \
+  ../Geo/SPoint2.h ../Geo/MElement.h ../Geo/MVertex.h ../Geo/MEdge.h \
+  ../Geo/MVertex.h ../Geo/SVector3.h ../Common/Hash.h ../Geo/MFace.h \
+  ../Geo/MVertex.h ../Geo/SVector3.h ../Common/Context.h \
+  ../Geo/ExtrudeParams.h ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h \
+  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h \
+  ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h \
+  ../Geo/GEntity.h ../Geo/MElement.h ../Geo/ExtrudeParams.h \
+  ../Geo/SBoundingBox3d.h OS.h
 OS.o: OS.cpp Message.h
 ColorTable.o: ColorTable.cpp Gmsh.h Message.h ../DataStr/Malloc.h \
   ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
@@ -125,14 +130,20 @@ ColorTable.o: ColorTable.cpp Gmsh.h Message.h ../DataStr/Malloc.h \
   ../Numeric/Numeric.h
 Visibility.o: Visibility.cpp Visibility.h GmshDefines.h ../Geo/GVertex.h \
   ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/MElement.h ../Geo/MEdge.h ../Common/Hash.h \
-  ../Geo/MFace.h ../Numeric/Numeric.h ../Common/Context.h \
-  ../DataStr/List.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
-  ../Numeric/Numeric.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h \
-  ../Geo/Pair.h ../Geo/GRegion.h ../Geo/GModel.h ../Geo/GFace.h \
-  ../Geo/GRegion.h ../Parser/Parser.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Common/GmshDefines.h \
+  ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h \
+  ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h \
+  ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h \
+  ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
+  ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
+  ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
+  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Geo/GFace.h \
+  ../Geo/GPoint.h ../Geo/GEntity.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h \
+  ../Geo/MElement.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
+  ../Geo/ExtrudeParams.h ../Geo/GRegion.h ../Geo/GEntity.h \
+  ../Geo/MElement.h ../Geo/ExtrudeParams.h ../Geo/GModel.h \
+  ../Geo/GVertex.h ../Geo/GEdge.h ../Geo/GFace.h ../Geo/GRegion.h \
+  ../Geo/SBoundingBox3d.h ../Parser/Parser.h ../DataStr/Tree.h \
   ../DataStr/avl.h
 Trackball.o: Trackball.cpp Trackball.h
 VertexArray.o: VertexArray.cpp VertexArray.h Context.h ../DataStr/List.h \
diff --git a/Common/Options.cpp b/Common/Options.cpp
index 632757f8cb5f7ae1666e53899b806f6a3c077147..66a81897aa9b311915fffadbd3a2d3e8d501efad 100644
--- a/Common/Options.cpp
+++ b/Common/Options.cpp
@@ -1,4 +1,4 @@
-// $Id: Options.cpp,v 1.339 2007-04-05 12:51:28 geuzaine Exp $
+// $Id: Options.cpp,v 1.340 2007-04-21 19:39:59 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -144,7 +144,6 @@ void Init_Options(int num)
   CTX.post.force_num = 0;
   CTX.threads_lock = 0; // very primitive locking
   CTX.mesh.changed = 0;
-  CTX.mesh.bgmesh_view_num = -1;
   CTX.post.combine_time = 0; // try to combine_time views at startup
   CTX.post.plugin_draw_function = NULL;
 #if defined(HAVE_FLTK)
diff --git a/Common/Views.cpp b/Common/Views.cpp
index 9eb9ec1b3b7434005574bc1071f13c49527e47fe..7e77b7f8f1bd1405e86ac78a12c839962b4975d9 100644
--- a/Common/Views.cpp
+++ b/Common/Views.cpp
@@ -1,4 +1,4 @@
-// $Id: Views.cpp,v 1.194 2007-02-26 08:25:36 geuzaine Exp $
+// $Id: Views.cpp,v 1.195 2007-04-21 19:39:59 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -30,6 +30,7 @@
 #include "Options.h"
 #include "ColorTable.h"
 #include "SmoothData.h"
+#include "BackgroundMesh.h"
 
 #if defined(HAVE_MATH_EVAL)
 #include "matheval.h"
@@ -86,8 +87,10 @@ Post_View *BeginView(int allocate)
   else {
     v->Num = CTX.post.force_num;
     List_Replace(CTX.post.list, &v, fcmpPostViewNum);
-    // invalidate the background mesh
-    if(v->Num == CTX.mesh.bgmesh_view_num) CTX.mesh.bgmesh_view_num = -1;
+    // FIXME: need to check here if the old view is used as a field in
+    // a background mesh (and if it is, remove that field). Until we
+    // do this, let's just invalidate all the lc fields
+    BGMReset();
   }
   
   int i = List_ISearch(CTX.post.list, &v, fcmpPostViewNum);
diff --git a/Common/Views.h b/Common/Views.h
index ab8fe517b9cbdc8990d664e74c36edaac844ba1e..3ba4b108997e317dbcd5857126ad7df4d5125bbd 100644
--- a/Common/Views.h
+++ b/Common/Views.h
@@ -216,7 +216,6 @@ void WriteView(Post_View *v, char *filename, int format, int append);
 void CopyViewOptions(Post_View *src, Post_View *dest);
 void CombineViews(int time, int how, int remove);
 
-int BGMWithView(Post_View *ErrView);
 Post_View *Create2DGraph(char *xname, char *yname, int nbdata, double *x, double *y);
 
 GmshColorTable *Get_ColorTable(int num);
diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp
index 36aeb120ece77bca99838ab39858846008315efc..5ee1cbd7b1853c684f9e5b815bfe6fa9c15ed40f 100644
--- a/Fltk/Callbacks.cpp
+++ b/Fltk/Callbacks.cpp
@@ -1,4 +1,4 @@
-// $Id: Callbacks.cpp,v 1.522 2007-04-16 09:46:41 remacle Exp $
+// $Id: Callbacks.cpp,v 1.523 2007-04-21 19:39:59 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -4462,9 +4462,10 @@ void view_applybgmesh_cb(CALLBACK_ARGS)
     Msg(GERROR, "Background mesh generation impossible with non-scalar view");
     return;
   }
-  Field *field=new PostViewField(v);
-  fields.insert(field);
+  Field *field = new PostViewField(v);
+  BGMReset();
   BGMAddField(field);
+  fields.insert(field);
 }
 
 void view_plugin_cancel_cb(CALLBACK_ARGS)
diff --git a/Fltk/Main.cpp b/Fltk/Main.cpp
index 7524f9a00a032be6c5e20d9d46468433c30bed50..330c4b9ff3189c319cb75c0ad8cfbd3e30aab02d 100644
--- a/Fltk/Main.cpp
+++ b/Fltk/Main.cpp
@@ -1,4 +1,4 @@
-// $Id: Main.cpp,v 1.106 2007-04-16 09:08:27 remacle Exp $
+// $Id: Main.cpp,v 1.107 2007-04-21 19:40:00 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -130,10 +130,11 @@ int main(int argc, char *argv[])
       if(CTX.bgm_filename) {
         MergeFile(CTX.bgm_filename);
         if(List_Nbr(CTX.post.list)){
-          Field *field = new PostViewField(*(Post_View **) 
-            List_Pointer(CTX.post.list, List_Nbr(CTX.post.list) - 1));
-          BGMAddField(field);
-          fields.insert(field);
+	  Post_View *v;
+	  List_Read(CTX.post.list, List_Nbr(CTX.post.list) - 1, &v);
+	  Field *field = new PostViewField(v);
+	  BGMAddField(field);
+	  fields.insert(field);
         }
         else
           Msg(GERROR, "Invalid background mesh (no view)");
@@ -232,11 +233,13 @@ int main(int argc, char *argv[])
   if(CTX.bgm_filename) {
     MergeFile(CTX.bgm_filename);
     if(List_Nbr(CTX.post.list)){
-      Field *field = new PostViewField(*(Post_View **) 
-        List_Pointer(CTX.post.list, List_Nbr(CTX.post.list) - 1));
+      Post_View *v;
+      List_Read(CTX.post.list, List_Nbr(CTX.post.list) - 1, &v);
+      Field *field = new PostViewField(v);
       BGMAddField(field);
       fields.insert(field);
-    } else
+    }
+    else
       Msg(GERROR, "Invalid background mesh (no view)");
   }
 
diff --git a/Fltk/Makefile b/Fltk/Makefile
index 99dda99a73a6d9c0dcf23beeac7149151642fd75..38df86aee5ee12c1c52fed5c862e4c9cd26730b2 100644
--- a/Fltk/Makefile
+++ b/Fltk/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.130 2007-04-16 09:08:27 remacle Exp $
+# $Id: Makefile,v 1.131 2007-04-21 19:40:00 geuzaine Exp $
 #
 # Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 #
@@ -70,21 +70,28 @@ Main.o: Main.cpp GUI.h Opengl_Window.h Colorbar_Window.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
   ../Common/OS.h ../Geo/Geo.h ../Common/GmshDefines.h \
   ../Geo/gmshSurface.h ../Geo/Pair.h ../Geo/Range.h ../Geo/SPoint2.h \
-  ../Geo/SPoint3.h ../Geo/SVector3.h ../Geo/SBoundingBox3d.h \
-  ../DataStr/List.h ../DataStr/Tree.h ../Geo/ExtrudeParams.h \
-  ../Common/SmoothData.h ../Numeric/Numeric.h ../Mesh/Generator.h \
-  ../Parser/CreateFile.h ../Graphics/Draw.h ../DataStr/List.h \
+  ../Geo/SPoint3.h ../Geo/SVector3.h ../Geo/SPoint3.h \
+  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
+  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Numeric/Numeric.h \
+  ../Mesh/Generator.h ../Parser/CreateFile.h ../Graphics/Draw.h \
   ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \
   ../Common/SmoothData.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
   ../Common/Context.h ../Common/Options.h ../Parser/Parser.h \
-  ../DataStr/List.h ../DataStr/Tree.h ../Parser/OpenFile.h \
-  ../Common/CommandLine.h ../Numeric/Numeric.h Solvers.h \
-  ../Plugin/PluginManager.h ../Plugin/Plugin.h ../Common/Options.h \
-  ../Common/Message.h ../Common/Views.h ../Common/GmshMatrix.h \
-  ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/MVertex.h \
-  ../Geo/GPoint.h ../Geo/GEdge.h ../Geo/MElement.h ../Geo/MEdge.h \
-  ../Common/Hash.h ../Geo/MFace.h ../Numeric/Numeric.h \
-  ../Common/Context.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/GRegion.h
+  ../Parser/OpenFile.h ../Common/CommandLine.h Solvers.h \
+  ../Plugin/PluginManager.h ../Plugin/Plugin.h ../Geo/GModel.h \
+  ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
+  ../Geo/SBoundingBox3d.h ../Geo/MVertex.h ../Geo/SPoint3.h \
+  ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h \
+  ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
+  ../Geo/MElement.h ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h \
+  ../Geo/SVector3.h ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h \
+  ../Geo/SVector3.h ../Geo/ExtrudeParams.h ../Geo/GFace.h ../Geo/GPoint.h \
+  ../Geo/GEntity.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/MElement.h \
+  ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h \
+  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/MElement.h \
+  ../Geo/ExtrudeParams.h ../Geo/SBoundingBox3d.h ../Mesh/Field.h \
+  ../Common/OctreePost.h ../Common/Octree.h ../Common/OctreeInternals.h \
+  ../Mesh/BackgroundMesh.h
 Message.o: Message.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
@@ -95,101 +102,116 @@ GUI.o: GUI.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
   ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
   ../DataStr/List.h ../DataStr/Tree.h ../Common/GmshUI.h \
   ../Common/GmshDefines.h ../Numeric/Numeric.h ../Common/Context.h \
-  ../Common/Options.h ../Graphics/Draw.h ../DataStr/List.h \
-  ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \
-  ../Common/SmoothData.h ../Numeric/Numeric.h ../Common/AdaptiveViews.h \
-  ../Common/GmshMatrix.h GUI.h Opengl_Window.h Colorbar_Window.h \
-  ../Common/ColorTable.h Popup_Button.h SpherePosition_Widget.h \
-  Callbacks.h Bitmaps.h Win32Icon.h ../Parser/OpenFile.h \
-  ../Common/CommandLine.h ../Mesh/Generator.h Solvers.h \
-  ../Plugin/PluginManager.h ../Plugin/Plugin.h ../Common/Options.h \
-  ../Common/Message.h ../Common/Views.h ../Common/GmshMatrix.h \
-  Shortcut_Window.h
+  ../Common/Options.h ../Graphics/Draw.h ../Common/Views.h \
+  ../Common/ColorTable.h ../Common/VertexArray.h ../Common/SmoothData.h \
+  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h GUI.h Opengl_Window.h \
+  Colorbar_Window.h Popup_Button.h SpherePosition_Widget.h Callbacks.h \
+  Bitmaps.h Win32Icon.h ../Parser/OpenFile.h ../Common/CommandLine.h \
+  ../Mesh/Generator.h Solvers.h ../Plugin/PluginManager.h \
+  ../Plugin/Plugin.h Shortcut_Window.h
 GUI_Extras.o: GUI_Extras.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
   ../Common/GmshUI.h ../Common/GmshDefines.h File_Picker.h \
   Shortcut_Window.h ../Parser/CreateFile.h ../Common/Options.h \
-  ../Common/Context.h ../Graphics/Draw.h ../DataStr/List.h \
-  ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \
-  ../Common/SmoothData.h ../Numeric/Numeric.h ../Common/AdaptiveViews.h \
-  ../Common/GmshMatrix.h
+  ../Common/Context.h ../Graphics/Draw.h ../Common/Views.h \
+  ../Common/ColorTable.h ../Common/VertexArray.h ../Common/SmoothData.h \
+  ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h
 GUI_Projection.o: GUI_Projection.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
   ../Common/GmshUI.h ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h \
   ../Geo/Range.h ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h \
-  ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/SVector3.h ../Geo/MElement.h \
-  ../Geo/MEdge.h ../Common/Hash.h ../Geo/MFace.h ../Numeric/Numeric.h \
+  ../Geo/SPoint3.h ../Common/GmshDefines.h ../Geo/MVertex.h \
+  ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h \
+  ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h ../Geo/MVertex.h \
+  ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h ../Common/Hash.h \
+  ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h ../Numeric/Numeric.h \
   ../Common/Context.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
-  ../Numeric/Numeric.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/projectionFace.h ../Graphics/Draw.h \
-  ../DataStr/List.h ../Common/Views.h ../Common/ColorTable.h \
-  ../Common/VertexArray.h ../Common/SmoothData.h \
-  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/Options.h \
-  ../Common/Context.h Shortcut_Window.h
+  ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h ../Geo/GEdgeLoop.h \
+  ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h ../Geo/SVector3.h \
+  ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h ../Geo/GEntity.h \
+  ../Geo/MElement.h ../Geo/ExtrudeParams.h ../Geo/SBoundingBox3d.h \
+  ../Geo/projectionFace.h ../Geo/GFace.h ../Graphics/Draw.h \
+  ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \
+  ../Common/SmoothData.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
+  ../Common/Options.h Shortcut_Window.h
 Callbacks.o: Callbacks.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
   ../Common/GmshUI.h ../Geo/Geo.h ../Common/GmshDefines.h \
   ../Geo/gmshSurface.h ../Geo/Pair.h ../Geo/Range.h ../Geo/SPoint2.h \
-  ../Geo/SPoint3.h ../Geo/SVector3.h ../Geo/SBoundingBox3d.h \
-  ../DataStr/List.h ../DataStr/Tree.h ../Geo/ExtrudeParams.h \
-  ../Common/SmoothData.h ../Numeric/Numeric.h ../Geo/GeoStringInterface.h \
-  ../Geo/Geo.h ../Geo/findLinks.h ../Mesh/Generator.h ../Mesh/HighOrder.h \
-  ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/MVertex.h \
-  ../Geo/GPoint.h ../Geo/GEdge.h ../Geo/MElement.h ../Geo/MEdge.h \
-  ../Common/Hash.h ../Geo/MFace.h ../Numeric/Numeric.h \
-  ../Common/Context.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/GRegion.h \
-  ../Graphics/Draw.h ../DataStr/List.h ../Common/Views.h \
-  ../Common/ColorTable.h ../Common/VertexArray.h ../Common/SmoothData.h \
+  ../Geo/SPoint3.h ../Geo/SVector3.h ../Geo/SPoint3.h \
+  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
+  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Numeric/Numeric.h \
+  ../Geo/GeoStringInterface.h ../Geo/Geo.h ../Geo/findLinks.h \
+  ../Mesh/Generator.h ../Mesh/HighOrder.h ../Geo/GModel.h \
+  ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
+  ../Geo/SBoundingBox3d.h ../Geo/MVertex.h ../Geo/SPoint3.h \
+  ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h \
+  ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
+  ../Geo/MElement.h ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h \
+  ../Geo/SVector3.h ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h \
+  ../Geo/SVector3.h ../Common/Context.h ../Geo/ExtrudeParams.h \
+  ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h ../Geo/GEdgeLoop.h \
+  ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h ../Geo/SVector3.h \
+  ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h ../Geo/GEntity.h \
+  ../Geo/MElement.h ../Geo/ExtrudeParams.h ../Geo/SBoundingBox3d.h \
+  ../Graphics/Draw.h ../Common/Views.h ../Common/ColorTable.h \
+  ../Common/VertexArray.h ../Common/SmoothData.h \
   ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
-  ../Graphics/SelectBuffer.h ../Geo/GVertex.h ../Geo/GEdge.h \
-  ../Geo/GFace.h ../Geo/GRegion.h ../Common/Views.h \
-  ../Parser/CreateFile.h ../Parser/OpenFile.h ../Common/CommandLine.h \
-  ../Common/Context.h ../Common/Options.h GUI.h Opengl_Window.h \
-  Colorbar_Window.h ../Common/ColorTable.h Popup_Button.h \
-  SpherePosition_Widget.h GUI_Extras.h Callbacks.h ../Plugin/Plugin.h \
-  ../Common/Options.h ../Common/Message.h ../Common/Views.h \
-  ../Common/GmshMatrix.h ../Plugin/PluginManager.h ../Plugin/Plugin.h \
-  ../Common/Visibility.h ../Common/GmshDefines.h ../Geo/GVertex.h \
-  ../Geo/GEdge.h ../Geo/GFace.h ../Geo/GRegion.h ../Numeric/Numeric.h \
-  Solvers.h ../Common/OS.h ../Geo/GModel.h
+  ../Graphics/SelectBuffer.h ../Parser/CreateFile.h ../Parser/OpenFile.h \
+  ../Common/CommandLine.h ../Common/Options.h GUI.h Opengl_Window.h \
+  Colorbar_Window.h Popup_Button.h SpherePosition_Widget.h GUI_Extras.h \
+  Callbacks.h ../Plugin/Plugin.h ../Plugin/PluginManager.h \
+  ../Plugin/Plugin.h ../Common/Visibility.h ../Common/GmshDefines.h \
+  Solvers.h ../Common/OS.h ../Mesh/Field.h ../Common/OctreePost.h \
+  ../Common/Octree.h ../Common/OctreeInternals.h ../Mesh/BackgroundMesh.h
 Opengl.o: Opengl.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
   ../Common/GmshUI.h ../Numeric/Numeric.h ../Common/Context.h \
-  ../Graphics/Draw.h ../DataStr/List.h ../Common/Views.h \
-  ../Common/ColorTable.h ../Common/VertexArray.h ../Common/SmoothData.h \
-  ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
+  ../Graphics/Draw.h ../Common/Views.h ../Common/ColorTable.h \
+  ../Common/VertexArray.h ../Common/SmoothData.h \
+  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
   ../Graphics/SelectBuffer.h ../Geo/GVertex.h ../Geo/GEntity.h \
   ../Geo/Range.h ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h \
-  ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GVertex.h ../Geo/SVector3.h \
-  ../Geo/MElement.h ../Geo/MEdge.h ../Common/Hash.h ../Geo/MFace.h \
-  ../Numeric/Numeric.h ../Common/Context.h ../Geo/ExtrudeParams.h \
-  ../Common/SmoothData.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h \
-  ../Geo/Pair.h ../Geo/GRegion.h GUI.h Opengl_Window.h Colorbar_Window.h \
-  ../Common/ColorTable.h Popup_Button.h SpherePosition_Widget.h \
-  ../Graphics/gl2ps.h
+  ../Geo/SPoint3.h ../Common/GmshDefines.h ../Geo/MVertex.h \
+  ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h \
+  ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h ../Geo/MVertex.h \
+  ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h ../Common/Hash.h \
+  ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
+  ../Geo/ExtrudeParams.h ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h \
+  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h \
+  ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h \
+  ../Geo/GEntity.h ../Geo/MElement.h ../Geo/ExtrudeParams.h GUI.h \
+  Opengl_Window.h Colorbar_Window.h Popup_Button.h \
+  SpherePosition_Widget.h ../Graphics/gl2ps.h
 Opengl_Window.o: Opengl_Window.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
   ../Numeric/Numeric.h ../Common/GmshUI.h ../Common/Context.h \
   ../Geo/Geo.h ../Common/GmshDefines.h ../Geo/gmshSurface.h ../Geo/Pair.h \
   ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \
-  ../Geo/SBoundingBox3d.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Numeric/Numeric.h \
-  ../Graphics/Draw.h ../DataStr/List.h ../Common/Views.h \
-  ../Common/ColorTable.h ../Common/VertexArray.h ../Common/SmoothData.h \
+  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
+  ../Geo/SPoint2.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
+  ../Graphics/Draw.h ../Common/Views.h ../Common/ColorTable.h \
+  ../Common/VertexArray.h ../Common/SmoothData.h \
   ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
   ../Graphics/SelectBuffer.h ../Geo/GVertex.h ../Geo/GEntity.h \
-  ../Geo/MVertex.h ../Geo/GPoint.h ../Geo/GEdge.h ../Geo/GVertex.h \
-  ../Geo/MElement.h ../Geo/MEdge.h ../Common/Hash.h ../Geo/MFace.h \
-  ../Numeric/Numeric.h ../Common/Context.h ../Geo/GFace.h \
-  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/GRegion.h GUI.h \
-  Opengl_Window.h Colorbar_Window.h ../Common/ColorTable.h Popup_Button.h \
+  ../Geo/Range.h ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h \
+  ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h \
+  ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h \
+  ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h ../Geo/MVertex.h \
+  ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h ../Common/Hash.h \
+  ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
+  ../Geo/ExtrudeParams.h ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h \
+  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h \
+  ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h \
+  ../Geo/GEntity.h ../Geo/MElement.h ../Geo/ExtrudeParams.h GUI.h \
+  Opengl_Window.h Colorbar_Window.h Popup_Button.h \
   SpherePosition_Widget.h
 Colorbar_Window.o: Colorbar_Window.cpp ../Common/Gmsh.h \
   ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
@@ -202,7 +224,7 @@ Solvers.o: Solvers.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
   Solvers.h GmshServer.h ../Parser/OpenFile.h ../Common/GmshUI.h GUI.h \
   Opengl_Window.h Colorbar_Window.h ../Common/ColorTable.h Popup_Button.h \
-  SpherePosition_Widget.h ../Graphics/Draw.h ../DataStr/List.h \
-  ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \
-  ../Common/SmoothData.h ../Numeric/Numeric.h ../Common/AdaptiveViews.h \
-  ../Common/GmshMatrix.h ../Common/Context.h
+  SpherePosition_Widget.h ../Graphics/Draw.h ../Common/Views.h \
+  ../Common/ColorTable.h ../Common/VertexArray.h ../Common/SmoothData.h \
+  ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
+  ../Common/Context.h
diff --git a/Geo/GModel.cpp b/Geo/GModel.cpp
index bab97acc764eb6220d21aff073283d97afab8915..2dff9f5ff6873bfe2c2ed23c08832420532e834b 100644
--- a/Geo/GModel.cpp
+++ b/Geo/GModel.cpp
@@ -1,4 +1,4 @@
-// $Id: GModel.cpp,v 1.39 2007-04-20 07:11:26 geuzaine Exp $
+// $Id: GModel.cpp,v 1.40 2007-04-21 19:40:00 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -157,34 +157,80 @@ void GModel::associateEntityWithVertices()
   }
 }
 
-int GModel::renumberMeshVertices()
+int GModel::renumberMeshVertices(bool saveAll)
 {
-  // FIXME: here, we should first:
-
-  // 0) set vertex num of all vertices to 0
-
-  // 1) loop over all point elements, and only set their vertex num
-  // if they are not connected to at least one edge or if they
-  // have a physical id
-
-  // 2) loop over all line, face and volume elements, and set num of
-  // used verts
-
-  // 3) change all save routines to only save verts with num > 0
+  // tag all mesh vertices with -1 (negative vertices will not be
+  // saved)
+  for(viter it = firstVertex(); it != lastVertex(); ++it)
+    for(unsigned int i = 0; i < (*it)->mesh_vertices.size(); i++) 
+      (*it)->mesh_vertices[i]->setNum(-1);
+  for(eiter it = firstEdge(); it != lastEdge(); ++it)
+    for(unsigned int i = 0; i < (*it)->mesh_vertices.size(); i++) 
+      (*it)->mesh_vertices[i]->setNum(-1);
+  for(fiter it = firstFace(); it != lastFace(); ++it)
+    for(unsigned int i = 0; i < (*it)->mesh_vertices.size(); i++) 
+      (*it)->mesh_vertices[i]->setNum(-1);
+  for(riter it = firstRegion(); it != lastRegion(); ++it)
+    for(unsigned int i = 0; i < (*it)->mesh_vertices.size(); i++) 
+      (*it)->mesh_vertices[i]->setNum(-1);
 
+  // tag all mesh vertices belonging to elements that need to be saved
+  // with 0
+  for(viter it = firstVertex(); it != lastVertex(); ++it)
+    if(saveAll || (*it)->physicals.size()){
+      for(unsigned int i = 0; i < (*it)->mesh_vertices.size(); i++) 
+	(*it)->mesh_vertices[i]->setNum(0);
+    }
+  for(eiter it = firstEdge(); it != lastEdge(); ++it)
+    if(saveAll || (*it)->physicals.size()){
+      for(unsigned int i = 0; i < (*it)->lines.size(); i++)
+	for(int j = 0; j < (*it)->lines[i]->getNumVertices(); j++)
+	  (*it)->lines[i]->getVertex(j)->setNum(0);
+    }
+  for(fiter it = firstFace(); it != lastFace(); ++it)
+    if(saveAll || (*it)->physicals.size()){
+      for(unsigned int i = 0; i < (*it)->triangles.size(); i++)
+	for(int j = 0; j < (*it)->triangles[i]->getNumVertices(); j++)
+	  (*it)->triangles[i]->getVertex(j)->setNum(0);
+      for(unsigned int i = 0; i < (*it)->quadrangles.size(); i++)
+	for(int j = 0; j < (*it)->quadrangles[i]->getNumVertices(); j++)
+	  (*it)->quadrangles[i]->getVertex(j)->setNum(0);
+    }
+  for(riter it = firstRegion(); it != lastRegion(); ++it)
+    if(saveAll || (*it)->physicals.size()){
+      for(unsigned int i = 0; i < (*it)->tetrahedra.size(); i++)
+	for(int j = 0; j < (*it)->tetrahedra[i]->getNumVertices(); j++)
+	  (*it)->tetrahedra[i]->getVertex(j)->setNum(0);
+      for(unsigned int i = 0; i < (*it)->hexahedra.size(); i++)
+	for(int j = 0; j < (*it)->hexahedra[i]->getNumVertices(); j++)
+	  (*it)->hexahedra[i]->getVertex(j)->setNum(0);
+      for(unsigned int i = 0; i < (*it)->prisms.size(); i++)
+	for(int j = 0; j < (*it)->prisms[i]->getNumVertices(); j++)
+	  (*it)->prisms[i]->getVertex(j)->setNum(0);
+      for(unsigned int i = 0; i < (*it)->pyramids.size(); i++)
+	for(int j = 0; j < (*it)->pyramids[i]->getNumVertices(); j++)
+	  (*it)->pyramids[i]->getVertex(j)->setNum(0);
+    }
+  
+  // renumber all the mesh vertices tagged with 0
   int numVertices = 0;
   for(viter it = firstVertex(); it != lastVertex(); ++it)
     for(unsigned int i = 0; i < (*it)->mesh_vertices.size(); i++) 
-      (*it)->mesh_vertices[i]->setNum(++numVertices);
+      if(!(*it)->mesh_vertices[i]->getNum())
+	(*it)->mesh_vertices[i]->setNum(++numVertices);
   for(eiter it = firstEdge(); it != lastEdge(); ++it)
     for(unsigned int i = 0; i < (*it)->mesh_vertices.size(); i++) 
-      (*it)->mesh_vertices[i]->setNum(++numVertices);
+      if(!(*it)->mesh_vertices[i]->getNum())
+	(*it)->mesh_vertices[i]->setNum(++numVertices);
   for(fiter it = firstFace(); it != lastFace(); ++it)
     for(unsigned int i = 0; i < (*it)->mesh_vertices.size(); i++) 
-      (*it)->mesh_vertices[i]->setNum(++numVertices);
+      if(!(*it)->mesh_vertices[i]->getNum())
+	(*it)->mesh_vertices[i]->setNum(++numVertices);
   for(riter it = firstRegion(); it != lastRegion(); ++it)
     for(unsigned int i = 0; i < (*it)->mesh_vertices.size(); i++) 
-      (*it)->mesh_vertices[i]->setNum(++numVertices);
+      if(!(*it)->mesh_vertices[i]->getNum())
+	(*it)->mesh_vertices[i]->setNum(++numVertices);
+
   return numVertices;
 }
 
diff --git a/Geo/GModel.h b/Geo/GModel.h
index 8aa8b1f554c0c84bfca95c14ac9450ff6e618049..d7ba50aa8a693f03d951d0b62f075c4754b109ca 100644
--- a/Geo/GModel.h
+++ b/Geo/GModel.h
@@ -102,7 +102,7 @@ class GModel
   void associateEntityWithVertices();
 
   // Renumber all the mesh vertices in a continuous sequence
-  int renumberMeshVertices();
+  int renumberMeshVertices(bool saveAll);
 
   // Deletes all invisble mesh elements
   void removeInvisibleElements();
diff --git a/Geo/GModelIO_Mesh.cpp b/Geo/GModelIO_Mesh.cpp
index 17cf823d430a1c011acdf1295eba0633be3d33d4..f00eebe113c43369d035411e80300f13f56cf640 100644
--- a/Geo/GModelIO_Mesh.cpp
+++ b/Geo/GModelIO_Mesh.cpp
@@ -1,4 +1,4 @@
-// $Id: GModelIO_Mesh.cpp,v 1.14 2007-04-08 23:06:53 geuzaine Exp $
+// $Id: GModelIO_Mesh.cpp,v 1.15 2007-04-21 19:40:00 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -579,7 +579,7 @@ int GModel::writeMSH(const std::string &name, double version, bool binary,
 
   // get the number of vertices and renumber the vertices in a
   // continuous sequence
-  int numVertices = renumberMeshVertices();
+  int numVertices = renumberMeshVertices(saveAll);
   
   // get the number of elements (we assume that all the elements in a
   // list have the same type, i.e., they are all of the same
@@ -1110,7 +1110,7 @@ int GModel::writeVRML(const std::string &name, bool saveAll, double scalingFacto
 
   if(noPhysicalGroups()) saveAll = true;
 
-  renumberMeshVertices();
+  renumberMeshVertices(saveAll);
 
   fprintf(fp, "#VRML V1.0 ascii\n");
   fprintf(fp, "#created by Gmsh\n");
@@ -1327,7 +1327,7 @@ int GModel::writeUNV(const std::string &name, bool saveAll, double scalingFactor
 
   if(noPhysicalGroups()) saveAll = true;
 
-  renumberMeshVertices();
+  renumberMeshVertices(saveAll);
 
   // nodes
   fprintf(fp, "%6d\n", -1);
@@ -1479,11 +1479,12 @@ int GModel::writeMESH(const std::string &name, bool saveAll, double scalingFacto
 
   if(noPhysicalGroups()) saveAll = true;
 
+  int numVertices = renumberMeshVertices(saveAll);
+
   fprintf(fp, " MeshVersionFormatted 1\n");
   fprintf(fp, " Dimension\n");
   fprintf(fp, " 3\n");
 
-  int numVertices = renumberMeshVertices();
   fprintf(fp, " Vertices\n");
   fprintf(fp, " %d\n", numVertices);
   for(viter it = firstVertex(); it != lastVertex(); ++it)
@@ -1817,7 +1818,7 @@ int GModel::writeBDF(const std::string &name, int format, bool saveAll,
 
   if(noPhysicalGroups()) saveAll = true;
 
-  renumberMeshVertices();
+  renumberMeshVertices(saveAll);
 
   fprintf(fp, "$ Created by Gmsh\n");
 
diff --git a/Geo/MVertex.cpp b/Geo/MVertex.cpp
index 0989b2848a8a664198c7cd132d4f5a831f3e96a7..448766489261a5f6641d747dfe608746050431d2 100644
--- a/Geo/MVertex.cpp
+++ b/Geo/MVertex.cpp
@@ -1,4 +1,4 @@
-// $Id: MVertex.cpp,v 1.12 2007-03-18 12:05:16 geuzaine Exp $
+// $Id: MVertex.cpp,v 1.13 2007-04-21 19:40:00 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -27,6 +27,8 @@ double MVertexLessThanLexicographic::tolerance = 1.e-6;
 
 void MVertex::writeMSH(FILE *fp, bool binary, double scalingFactor)
 {
+  if(_num < 0) return; // negative vertices are never saved
+
   if(!binary){
     fprintf(fp, "%d %.16g %.16g %.16g\n", _num, 
 	    x() * scalingFactor, 
@@ -61,12 +63,16 @@ void MVertex::writeMSH(FILE *fp, double version, bool binary, int num,
 
 void MVertex::writeVRML(FILE *fp, double scalingFactor)
 {
+  if(_num < 0) return; // negative vertices are never saved
+
   fprintf(fp, "%.16g %.16g %.16g,\n",
 	  x() * scalingFactor, y() * scalingFactor, z() * scalingFactor);
 }
 
 void MVertex::writeUNV(FILE *fp, double scalingFactor)
 {
+  if(_num < 0) return; // negative vertices are never saved
+
   int coord_sys = 1;
   int displacement_coord_sys = 1;
   int color = 11;
@@ -81,6 +87,8 @@ void MVertex::writeUNV(FILE *fp, double scalingFactor)
 
 void MVertex::writeMESH(FILE *fp, double scalingFactor)
 {
+  if(_num < 0) return; // negative vertices are never saved
+
   fprintf(fp, " %20.14G      %20.14G      %20.14G      %d\n", 
 	  x() * scalingFactor, y() * scalingFactor, z() * scalingFactor, 0);
 }
@@ -103,6 +111,8 @@ static void double_to_char8(double val, char *str){
 
 void MVertex::writeBDF(FILE *fp, int format, double scalingFactor)
 {
+  if(_num < 0) return; // negative vertices are never saved
+
   char xs[17], ys[17], zs[17];
   double x1 = x() * scalingFactor;
   double y1 = y() * scalingFactor;
diff --git a/Geo/Makefile b/Geo/Makefile
index c3fad22340465aece60a89d82f3bae5591d76948..ed081810fa9bda47aa5c604e41512d854b6c045e 100644
--- a/Geo/Makefile
+++ b/Geo/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.141 2007-04-16 09:08:27 remacle Exp $
+# $Id: Makefile,v 1.142 2007-04-21 19:40:00 geuzaine Exp $
 #
 # Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 #
@@ -72,179 +72,170 @@ GEntity.o: GEntity.cpp GEntity.h Range.h SPoint3.h SBoundingBox3d.h \
   ../Common/GmshDefines.h MRep.h GEdge.h GVertex.h MVertex.h GPoint.h \
   SPoint2.h SVector3.h MElement.h MEdge.h ../Common/Hash.h MFace.h \
   ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
-  ExtrudeParams.h ../Common/SmoothData.h ../Numeric/Numeric.h GFace.h \
-  GEdgeLoop.h Pair.h GRegion.h ../Common/VertexArray.h \
-  ../Common/Message.h ../Common/OS.h
+  ExtrudeParams.h ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h \
+  GRegion.h ../Common/VertexArray.h ../Common/Message.h ../Common/OS.h
 GVertex.o: GVertex.cpp GVertex.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h SPoint2.h \
   GFace.h GEdgeLoop.h GEdge.h SVector3.h MElement.h MEdge.h \
   ../Common/Hash.h MFace.h ../Numeric/Numeric.h ../Common/Context.h \
-  ../DataStr/List.h ExtrudeParams.h ../Common/SmoothData.h \
-  ../Numeric/Numeric.h Pair.h
+  ../DataStr/List.h ExtrudeParams.h ../Common/SmoothData.h Pair.h
 GEdge.o: GEdge.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h SPoint2.h \
   GEdge.h SVector3.h MElement.h MEdge.h ../Common/Hash.h MFace.h \
   ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
-  ExtrudeParams.h ../Common/SmoothData.h ../Numeric/Numeric.h GFace.h \
-  GEdgeLoop.h Pair.h GRegion.h
+  ExtrudeParams.h ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h \
+  GRegion.h
 GEdgeLoop.o: GEdgeLoop.cpp GEdgeLoop.h GEdge.h GEntity.h Range.h \
   SPoint3.h SBoundingBox3d.h ../Common/GmshDefines.h GVertex.h MVertex.h \
   GPoint.h SPoint2.h SVector3.h MElement.h MEdge.h ../Common/Hash.h \
   MFace.h ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
-  ExtrudeParams.h ../Common/SmoothData.h ../Numeric/Numeric.h \
-  ../Common/Message.h
+  ExtrudeParams.h ../Common/SmoothData.h ../Common/Message.h
 GFace.o: GFace.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h SPoint2.h \
   GEdge.h SVector3.h MElement.h MEdge.h ../Common/Hash.h MFace.h \
   ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
-  ExtrudeParams.h ../Common/SmoothData.h ../Numeric/Numeric.h GFace.h \
-  GEdgeLoop.h Pair.h GRegion.h ../Common/Message.h
+  ExtrudeParams.h ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h \
+  GRegion.h ../Common/Message.h
 GRegion.o: GRegion.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h SPoint2.h \
   GEdge.h SVector3.h MElement.h MEdge.h ../Common/Hash.h MFace.h \
   ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
-  ExtrudeParams.h ../Common/SmoothData.h ../Numeric/Numeric.h GFace.h \
-  GEdgeLoop.h Pair.h GRegion.h
+  ExtrudeParams.h ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h \
+  GRegion.h
 gmshVertex.o: gmshVertex.cpp GFace.h GPoint.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h ../Common/GmshDefines.h GEdgeLoop.h GEdge.h GVertex.h \
   MVertex.h SPoint2.h SVector3.h MElement.h MEdge.h ../Common/Hash.h \
   MFace.h ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
-  ExtrudeParams.h ../Common/SmoothData.h ../Numeric/Numeric.h Pair.h \
-  gmshVertex.h Geo.h gmshSurface.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h GeoInterpolation.h ../Common/Message.h
+  ExtrudeParams.h ../Common/SmoothData.h Pair.h gmshVertex.h Geo.h \
+  gmshSurface.h ../DataStr/Tree.h ../DataStr/avl.h GeoInterpolation.h \
+  ../Common/Message.h
 gmshEdge.o: gmshEdge.cpp GFace.h GPoint.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h ../Common/GmshDefines.h GEdgeLoop.h GEdge.h GVertex.h \
   MVertex.h SPoint2.h SVector3.h MElement.h MEdge.h ../Common/Hash.h \
   MFace.h ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
-  ExtrudeParams.h ../Common/SmoothData.h ../Numeric/Numeric.h Pair.h \
-  gmshEdge.h Geo.h gmshSurface.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h gmshVertex.h GeoInterpolation.h ../Common/Message.h
+  ExtrudeParams.h ../Common/SmoothData.h Pair.h gmshEdge.h Geo.h \
+  gmshSurface.h ../DataStr/Tree.h ../DataStr/avl.h gmshVertex.h \
+  GeoInterpolation.h ../Common/Message.h
 gmshFace.o: gmshFace.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h SPoint2.h \
   GEdge.h SVector3.h MElement.h MEdge.h ../Common/Hash.h MFace.h \
   ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
-  ExtrudeParams.h ../Common/SmoothData.h ../Numeric/Numeric.h GFace.h \
-  GEdgeLoop.h Pair.h GRegion.h gmshVertex.h Geo.h gmshSurface.h \
-  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h gmshEdge.h \
-  gmshFace.h GeoInterpolation.h ../Common/Message.h
+  ExtrudeParams.h ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h \
+  GRegion.h gmshVertex.h Geo.h gmshSurface.h ../DataStr/Tree.h \
+  ../DataStr/avl.h gmshEdge.h gmshFace.h GeoInterpolation.h \
+  ../Common/Message.h
 gmshRegion.o: gmshRegion.cpp GModel.h GVertex.h GEntity.h Range.h \
   SPoint3.h SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h \
   SPoint2.h GEdge.h SVector3.h MElement.h MEdge.h ../Common/Hash.h \
   MFace.h ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
-  ExtrudeParams.h ../Common/SmoothData.h ../Numeric/Numeric.h GFace.h \
-  GEdgeLoop.h Pair.h GRegion.h gmshFace.h Geo.h gmshSurface.h \
-  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h gmshVertex.h \
-  gmshRegion.h ../Common/Message.h
+  ExtrudeParams.h ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h \
+  GRegion.h gmshFace.h Geo.h gmshSurface.h ../DataStr/Tree.h \
+  ../DataStr/avl.h gmshVertex.h gmshRegion.h ../Common/Message.h
 gmshSurface.o: gmshSurface.cpp gmshSurface.h Pair.h Range.h SPoint2.h \
   SPoint3.h SVector3.h SBoundingBox3d.h ../Common/Message.h
 OCCVertex.o: OCCVertex.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h SPoint2.h \
   GEdge.h SVector3.h MElement.h MEdge.h ../Common/Hash.h MFace.h \
   ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
-  ExtrudeParams.h ../Common/SmoothData.h ../Numeric/Numeric.h GFace.h \
-  GEdgeLoop.h Pair.h GRegion.h OCCVertex.h OCCIncludes.h OCCEdge.h \
-  OCCFace.h
+  ExtrudeParams.h ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h \
+  GRegion.h OCCVertex.h OCCIncludes.h OCCEdge.h OCCFace.h
 OCCEdge.o: OCCEdge.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h SPoint2.h \
   GEdge.h SVector3.h MElement.h MEdge.h ../Common/Hash.h MFace.h \
   ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
-  ExtrudeParams.h ../Common/SmoothData.h ../Numeric/Numeric.h GFace.h \
-  GEdgeLoop.h Pair.h GRegion.h ../Common/Message.h OCCEdge.h OCCVertex.h \
-  OCCIncludes.h OCCFace.h
+  ExtrudeParams.h ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h \
+  GRegion.h ../Common/Message.h OCCEdge.h OCCVertex.h OCCIncludes.h \
+  OCCFace.h
 OCCFace.o: OCCFace.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h SPoint2.h \
   GEdge.h SVector3.h MElement.h MEdge.h ../Common/Hash.h MFace.h \
   ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
-  ExtrudeParams.h ../Common/SmoothData.h ../Numeric/Numeric.h GFace.h \
-  GEdgeLoop.h Pair.h GRegion.h OCCVertex.h OCCIncludes.h OCCEdge.h \
-  OCCFace.h ../Common/Message.h
+  ExtrudeParams.h ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h \
+  GRegion.h OCCVertex.h OCCIncludes.h OCCEdge.h OCCFace.h \
+  ../Common/Message.h
 OCCRegion.o: OCCRegion.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h SPoint2.h \
   GEdge.h SVector3.h MElement.h MEdge.h ../Common/Hash.h MFace.h \
   ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
-  ExtrudeParams.h ../Common/SmoothData.h ../Numeric/Numeric.h GFace.h \
-  GEdgeLoop.h Pair.h GRegion.h OCCVertex.h OCCIncludes.h OCCEdge.h \
-  OCCFace.h OCCRegion.h ../Common/Message.h
+  ExtrudeParams.h ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h \
+  GRegion.h OCCVertex.h OCCIncludes.h OCCEdge.h OCCFace.h OCCRegion.h \
+  ../Common/Message.h
 projectionFace.o: projectionFace.cpp projectionFace.h GFace.h GPoint.h \
   GEntity.h Range.h SPoint3.h SBoundingBox3d.h ../Common/GmshDefines.h \
   GEdgeLoop.h GEdge.h GVertex.h MVertex.h SPoint2.h SVector3.h MElement.h \
   MEdge.h ../Common/Hash.h MFace.h ../Numeric/Numeric.h \
   ../Common/Context.h ../DataStr/List.h ExtrudeParams.h \
-  ../Common/SmoothData.h ../Numeric/Numeric.h Pair.h
+  ../Common/SmoothData.h Pair.h
 GModel.o: GModel.cpp GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h SPoint2.h \
   GEdge.h SVector3.h MElement.h MEdge.h ../Common/Hash.h MFace.h \
   ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
-  ExtrudeParams.h ../Common/SmoothData.h ../Numeric/Numeric.h GFace.h \
-  GEdgeLoop.h Pair.h GRegion.h gmshSurface.h ../Mesh/Field.h \
-  ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \
-  ../Common/SmoothData.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
-  ../Geo/Geo.h ../Common/GmshDefines.h ../Geo/gmshSurface.h \
-  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../Geo/SPoint2.h \
-  ../Geo/ExtrudeParams.h ../Geo/GEdge.h ../Common/OctreePost.h \
-  ../Common/Octree.h ../Common/OctreeInternals.h MRep.h \
-  ../Common/VertexArray.h ../Common/Message.h ../Common/OS.h
+  ExtrudeParams.h ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h \
+  GRegion.h gmshSurface.h ../Mesh/Field.h ../Common/Views.h \
+  ../Common/ColorTable.h ../Common/VertexArray.h ../Common/SmoothData.h \
+  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Geo/Geo.h \
+  ../Geo/gmshSurface.h ../DataStr/Tree.h ../DataStr/avl.h \
+  ../Geo/SPoint2.h ../Geo/ExtrudeParams.h ../Geo/GEdge.h \
+  ../Common/OctreePost.h ../Common/Octree.h ../Common/OctreeInternals.h \
+  MRep.h ../Common/Message.h ../Common/OS.h ../Mesh/BackgroundMesh.h
 GModelIO_Geo.o: GModelIO_Geo.cpp GModel.h GVertex.h GEntity.h Range.h \
   SPoint3.h SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h \
   SPoint2.h GEdge.h SVector3.h MElement.h MEdge.h ../Common/Hash.h \
   MFace.h ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
-  ExtrudeParams.h ../Common/SmoothData.h ../Numeric/Numeric.h GFace.h \
-  GEdgeLoop.h Pair.h GRegion.h Geo.h gmshSurface.h ../DataStr/List.h \
-  ../DataStr/Tree.h ../DataStr/avl.h ../Parser/OpenFile.h \
-  ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../Common/Message.h gmshVertex.h gmshFace.h gmshEdge.h gmshRegion.h \
-  ../Parser/Parser.h ../DataStr/List.h ../DataStr/Tree.h
+  ExtrudeParams.h ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h \
+  GRegion.h Geo.h gmshSurface.h ../DataStr/Tree.h ../DataStr/avl.h \
+  ../Parser/OpenFile.h ../DataStr/Tools.h ../DataStr/List.h \
+  ../DataStr/Tree.h ../Common/Message.h gmshVertex.h gmshFace.h \
+  gmshEdge.h gmshRegion.h ../Parser/Parser.h
 GModelIO_Mesh.o: GModelIO_Mesh.cpp ../Common/Message.h \
   ../Common/GmshDefines.h GModel.h GVertex.h GEntity.h Range.h SPoint3.h \
   SBoundingBox3d.h MVertex.h GPoint.h SPoint2.h GEdge.h SVector3.h \
   MElement.h MEdge.h ../Common/Hash.h MFace.h ../Numeric/Numeric.h \
   ../Common/Context.h ../DataStr/List.h ExtrudeParams.h \
-  ../Common/SmoothData.h ../Numeric/Numeric.h GFace.h GEdgeLoop.h Pair.h \
-  GRegion.h gmshRegion.h Geo.h gmshSurface.h ../DataStr/List.h \
-  ../DataStr/Tree.h ../DataStr/avl.h gmshFace.h gmshVertex.h gmshEdge.h
+  ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h GRegion.h \
+  gmshRegion.h Geo.h gmshSurface.h ../DataStr/Tree.h ../DataStr/avl.h \
+  gmshFace.h gmshVertex.h gmshEdge.h
 GModelIO_Fourier.o: GModelIO_Fourier.cpp GModel.h GVertex.h GEntity.h \
   Range.h SPoint3.h SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h \
   GPoint.h SPoint2.h GEdge.h SVector3.h MElement.h MEdge.h \
   ../Common/Hash.h MFace.h ../Numeric/Numeric.h ../Common/Context.h \
-  ../DataStr/List.h ExtrudeParams.h ../Common/SmoothData.h \
-  ../Numeric/Numeric.h GFace.h GEdgeLoop.h Pair.h GRegion.h fourierFace.h \
-  gmshFace.h Geo.h gmshSurface.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h gmshVertex.h ../Common/Message.h ../Common/Views.h \
-  ../Common/ColorTable.h ../Common/VertexArray.h ../Common/SmoothData.h \
+  ../DataStr/List.h ExtrudeParams.h ../Common/SmoothData.h GFace.h \
+  GEdgeLoop.h Pair.h GRegion.h fourierFace.h gmshFace.h Geo.h \
+  gmshSurface.h ../DataStr/Tree.h ../DataStr/avl.h gmshVertex.h \
+  ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \
+  ../Common/VertexArray.h ../Common/SmoothData.h \
   ../Common/AdaptiveViews.h ../Common/GmshMatrix.h
 GModelIO_OCC.o: GModelIO_OCC.cpp GModel.h GVertex.h GEntity.h Range.h \
   SPoint3.h SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h \
   SPoint2.h GEdge.h SVector3.h MElement.h MEdge.h ../Common/Hash.h \
   MFace.h ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
-  ExtrudeParams.h ../Common/SmoothData.h ../Numeric/Numeric.h GFace.h \
-  GEdgeLoop.h Pair.h GRegion.h ../Common/Message.h OCCIncludes.h \
-  OCCVertex.h OCCEdge.h OCCFace.h OCCRegion.h
+  ExtrudeParams.h ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h \
+  GRegion.h ../Common/Message.h OCCIncludes.h OCCVertex.h OCCEdge.h \
+  OCCFace.h OCCRegion.h
 GModelIO_CGNS.o: GModelIO_CGNS.cpp GModel.h GVertex.h GEntity.h Range.h \
   SPoint3.h SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h \
   SPoint2.h GEdge.h SVector3.h MElement.h MEdge.h ../Common/Hash.h \
   MFace.h ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
-  ExtrudeParams.h ../Common/SmoothData.h ../Numeric/Numeric.h GFace.h \
-  GEdgeLoop.h Pair.h GRegion.h ../Common/Message.h MNeighbour.h
+  ExtrudeParams.h ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h \
+  GRegion.h ../Common/Message.h MNeighbour.h
 GModelIO_MED.o: GModelIO_MED.cpp GModel.h GVertex.h GEntity.h Range.h \
   SPoint3.h SBoundingBox3d.h ../Common/GmshDefines.h MVertex.h GPoint.h \
   SPoint2.h GEdge.h SVector3.h MElement.h MEdge.h ../Common/Hash.h \
   MFace.h ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
-  ExtrudeParams.h ../Common/SmoothData.h ../Numeric/Numeric.h GFace.h \
-  GEdgeLoop.h Pair.h GRegion.h GModelIO_MED.h ../Common/Message.h
+  ExtrudeParams.h ../Common/SmoothData.h GFace.h GEdgeLoop.h Pair.h \
+  GRegion.h GModelIO_MED.h ../Common/Message.h
 ExtrudeParams.o: ExtrudeParams.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
   Geo.h ../Common/GmshDefines.h gmshSurface.h Pair.h Range.h SPoint2.h \
-  SPoint3.h SVector3.h SBoundingBox3d.h ../DataStr/List.h \
-  ../DataStr/Tree.h ExtrudeParams.h ../Common/SmoothData.h \
-  ../Numeric/Numeric.h
+  SPoint3.h SVector3.h SBoundingBox3d.h ExtrudeParams.h \
+  ../Common/SmoothData.h ../Numeric/Numeric.h
 Geo.o: Geo.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
   ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
   ../DataStr/List.h ../DataStr/Tree.h ../Numeric/Numeric.h Geo.h \
   ../Common/GmshDefines.h gmshSurface.h Pair.h Range.h SPoint2.h \
-  SPoint3.h SVector3.h SBoundingBox3d.h ../DataStr/List.h \
-  ../DataStr/Tree.h ExtrudeParams.h ../Common/SmoothData.h \
-  ../Numeric/Numeric.h GModel.h GVertex.h GEntity.h MVertex.h GPoint.h \
+  SPoint3.h SVector3.h SBoundingBox3d.h ExtrudeParams.h \
+  ../Common/SmoothData.h GModel.h GVertex.h GEntity.h MVertex.h GPoint.h \
   GEdge.h MElement.h MEdge.h ../Common/Hash.h MFace.h ../Common/Context.h \
   GFace.h GEdgeLoop.h GRegion.h GeoInterpolation.h
 GeoStringInterface.o: GeoStringInterface.cpp ../Common/Gmsh.h \
@@ -252,28 +243,26 @@ GeoStringInterface.o: GeoStringInterface.cpp ../Common/Gmsh.h \
   ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h \
   ../DataStr/Tree.h ../Numeric/Numeric.h Geo.h ../Common/GmshDefines.h \
   gmshSurface.h Pair.h Range.h SPoint2.h SPoint3.h SVector3.h \
-  SBoundingBox3d.h ../DataStr/List.h ../DataStr/Tree.h ExtrudeParams.h \
-  ../Common/SmoothData.h ../Numeric/Numeric.h GeoStringInterface.h \
-  ../Parser/Parser.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../Parser/OpenFile.h ../Common/Context.h GModel.h GVertex.h GEntity.h \
-  MVertex.h GPoint.h GEdge.h MElement.h MEdge.h ../Common/Hash.h MFace.h \
-  GFace.h GEdgeLoop.h GRegion.h
+  SBoundingBox3d.h ExtrudeParams.h ../Common/SmoothData.h \
+  GeoStringInterface.h ../Parser/Parser.h ../Parser/OpenFile.h \
+  ../Common/Context.h GModel.h GVertex.h GEntity.h MVertex.h GPoint.h \
+  GEdge.h MElement.h MEdge.h ../Common/Hash.h MFace.h GFace.h GEdgeLoop.h \
+  GRegion.h
 GeoInterpolation.o: GeoInterpolation.cpp ../Common/Gmsh.h \
   ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
   ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h \
   ../DataStr/Tree.h Geo.h ../Common/GmshDefines.h gmshSurface.h Pair.h \
-  Range.h SPoint2.h SPoint3.h SVector3.h SBoundingBox3d.h \
-  ../DataStr/List.h ../DataStr/Tree.h ExtrudeParams.h \
+  Range.h SPoint2.h SPoint3.h SVector3.h SBoundingBox3d.h ExtrudeParams.h \
   ../Common/SmoothData.h ../Numeric/Numeric.h GeoInterpolation.h \
-  GeoStringInterface.h ../Numeric/Numeric.h
+  GeoStringInterface.h
 findLinks.o: findLinks.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
   GModel.h GVertex.h GEntity.h Range.h SPoint3.h SBoundingBox3d.h \
   ../Common/GmshDefines.h MVertex.h GPoint.h SPoint2.h GEdge.h SVector3.h \
   MElement.h MEdge.h ../Common/Hash.h MFace.h ../Numeric/Numeric.h \
-  ../Common/Context.h ExtrudeParams.h ../Common/SmoothData.h \
-  ../Numeric/Numeric.h GFace.h GEdgeLoop.h Pair.h GRegion.h
+  ../Common/Context.h ExtrudeParams.h ../Common/SmoothData.h GFace.h \
+  GEdgeLoop.h Pair.h GRegion.h
 MVertex.o: MVertex.cpp MVertex.h SPoint3.h
 MElement.o: MElement.cpp MElement.h ../Common/GmshDefines.h MVertex.h \
   SPoint3.h MEdge.h SVector3.h ../Common/Hash.h MFace.h \
diff --git a/Graphics/Makefile b/Graphics/Makefile
index 1e7f814d87283ee9219acd9aa6f8ccdaf72238a3..bc8f5c85fc058bf9d2b7e0c7c0338dec97835bfc 100644
--- a/Graphics/Makefile
+++ b/Graphics/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.114 2007-04-16 09:08:28 remacle Exp $
+# $Id: Makefile,v 1.115 2007-04-21 19:40:00 geuzaine Exp $
 #
 # Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 #
@@ -71,90 +71,107 @@ depend:
 Draw.o: Draw.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
   ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
   ../DataStr/List.h ../DataStr/Tree.h ../Common/GmshUI.h \
-  ../Common/GmshDefines.h Draw.h ../DataStr/List.h ../Common/Views.h \
-  ../Common/ColorTable.h ../Common/VertexArray.h ../Common/SmoothData.h \
-  ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
-  ../Common/Context.h ../Numeric/Numeric.h ../Geo/GModel.h \
-  ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/SVector3.h \
-  ../Geo/MElement.h ../Geo/MEdge.h ../Common/Hash.h ../Geo/MFace.h \
-  ../Numeric/Numeric.h ../Common/Context.h ../Geo/ExtrudeParams.h \
-  ../Common/SmoothData.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h \
-  ../Geo/GRegion.h
+  ../Common/GmshDefines.h Draw.h ../Common/Views.h ../Common/ColorTable.h \
+  ../Common/VertexArray.h ../Common/SmoothData.h ../Numeric/Numeric.h \
+  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/Context.h \
+  ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \
+  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
+  ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h \
+  ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h \
+  ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h \
+  ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
+  ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
+  ../Geo/ExtrudeParams.h ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h \
+  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h \
+  ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h \
+  ../Geo/GEntity.h ../Geo/MElement.h ../Geo/ExtrudeParams.h \
+  ../Geo/SBoundingBox3d.h
 Mesh.o: Mesh.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
   ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
   ../DataStr/List.h ../DataStr/Tree.h ../Common/GmshUI.h ../Geo/GModel.h \
   ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/SVector3.h \
-  ../Geo/MElement.h ../Geo/MEdge.h ../Common/Hash.h ../Geo/MFace.h \
+  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Common/GmshDefines.h \
+  ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h \
+  ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h \
+  ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h \
+  ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
+  ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
   ../Numeric/Numeric.h ../Common/Context.h ../Geo/ExtrudeParams.h \
-  ../Common/SmoothData.h ../Numeric/Numeric.h ../Geo/GFace.h \
-  ../Geo/GEdgeLoop.h ../Geo/Pair.h ../Geo/GRegion.h Draw.h \
-  ../DataStr/List.h ../Common/Views.h ../Common/ColorTable.h \
+  ../Common/SmoothData.h ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h \
+  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h \
+  ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h \
+  ../Geo/GEntity.h ../Geo/MElement.h ../Geo/ExtrudeParams.h \
+  ../Geo/SBoundingBox3d.h Draw.h ../Common/Views.h ../Common/ColorTable.h \
   ../Common/VertexArray.h ../Common/SmoothData.h \
-  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/Context.h \
-  ../Geo/MRep.h ../Common/VertexArray.h ../Common/Message.h \
-  ../Common/OS.h ../Common/OS.h gl2ps.h
+  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Geo/MRep.h \
+  ../Geo/GEdge.h ../Geo/GFace.h ../Geo/GRegion.h ../Geo/MVertex.h \
+  ../Geo/MEdge.h ../Geo/MElement.h ../Common/OS.h gl2ps.h
 Geom.o: Geom.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
   ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
   ../DataStr/List.h ../DataStr/Tree.h ../Common/GmshUI.h Draw.h \
-  ../DataStr/List.h ../Common/Views.h ../Common/ColorTable.h \
-  ../Common/VertexArray.h ../Common/SmoothData.h ../Numeric/Numeric.h \
-  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/Context.h \
-  gl2ps.h ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h \
-  ../Geo/Range.h ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h \
-  ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/SVector3.h ../Geo/MElement.h \
-  ../Geo/MEdge.h ../Common/Hash.h ../Geo/MFace.h ../Numeric/Numeric.h \
-  ../Common/Context.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
-  ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h ../Geo/GRegion.h \
+  ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \
+  ../Common/SmoothData.h ../Numeric/Numeric.h ../Common/AdaptiveViews.h \
+  ../Common/GmshMatrix.h ../Common/Context.h gl2ps.h ../Geo/GModel.h \
+  ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
+  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Common/GmshDefines.h \
+  ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h \
+  ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h \
+  ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h \
+  ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
+  ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
+  ../Geo/ExtrudeParams.h ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h \
+  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h \
+  ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h \
+  ../Geo/GEntity.h ../Geo/MElement.h ../Geo/ExtrudeParams.h \
   ../Geo/SBoundingBox3d.h
 Post.o: Post.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
   ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
   ../DataStr/List.h ../DataStr/Tree.h ../Common/GmshUI.h \
-  ../Numeric/Numeric.h Draw.h ../DataStr/List.h ../Common/Views.h \
-  ../Common/ColorTable.h ../Common/VertexArray.h ../Common/SmoothData.h \
-  ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
-  ../Common/Context.h gl2ps.h
+  ../Numeric/Numeric.h Draw.h ../Common/Views.h ../Common/ColorTable.h \
+  ../Common/VertexArray.h ../Common/SmoothData.h \
+  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/Context.h \
+  gl2ps.h
 PostElement.o: PostElement.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../Common/GmshUI.h Draw.h ../DataStr/List.h ../Common/Views.h \
-  ../Common/ColorTable.h ../Common/VertexArray.h ../Common/SmoothData.h \
-  ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
-  Iso.h ../Common/Context.h ../Numeric/Numeric.h
+  ../Common/GmshUI.h Draw.h ../Common/Views.h ../Common/ColorTable.h \
+  ../Common/VertexArray.h ../Common/SmoothData.h ../Numeric/Numeric.h \
+  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h Iso.h \
+  ../Common/Context.h
 SelectBuffer.o: SelectBuffer.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../Common/GmshUI.h ../Common/GmshDefines.h Draw.h ../DataStr/List.h \
-  ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \
-  ../Common/SmoothData.h ../Numeric/Numeric.h ../Common/AdaptiveViews.h \
-  ../Common/GmshMatrix.h ../Common/Context.h SelectBuffer.h \
-  ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/MElement.h ../Geo/MEdge.h ../Common/Hash.h \
-  ../Geo/MFace.h ../Numeric/Numeric.h ../Common/Context.h \
-  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Geo/GFace.h \
-  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/Pair.h ../Geo/GRegion.h \
-  ../Geo/GModel.h ../Geo/GFace.h ../Geo/GRegion.h ../Geo/MRep.h \
-  ../Common/VertexArray.h ../Common/Message.h ../Common/OS.h
+  ../Common/GmshUI.h ../Common/GmshDefines.h Draw.h ../Common/Views.h \
+  ../Common/ColorTable.h ../Common/VertexArray.h ../Common/SmoothData.h \
+  ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
+  ../Common/Context.h SelectBuffer.h ../Geo/GVertex.h ../Geo/GEntity.h \
+  ../Geo/Range.h ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h \
+  ../Geo/SPoint3.h ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/GPoint.h \
+  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
+  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
+  ../Geo/MElement.h ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h \
+  ../Geo/SVector3.h ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h \
+  ../Geo/SVector3.h ../Geo/ExtrudeParams.h ../Geo/GFace.h ../Geo/GPoint.h \
+  ../Geo/GEntity.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/MElement.h \
+  ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h \
+  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/MElement.h \
+  ../Geo/ExtrudeParams.h ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEdge.h \
+  ../Geo/GFace.h ../Geo/GRegion.h ../Geo/SBoundingBox3d.h ../Geo/MRep.h \
+  ../Geo/GEdge.h ../Geo/GFace.h ../Geo/GRegion.h ../Geo/MVertex.h \
+  ../Geo/MEdge.h ../Geo/MElement.h ../Common/OS.h
 Iso.o: Iso.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
   ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
   ../DataStr/List.h ../DataStr/Tree.h ../Common/GmshUI.h Draw.h \
-  ../DataStr/List.h ../Common/Views.h ../Common/ColorTable.h \
-  ../Common/VertexArray.h ../Common/SmoothData.h ../Numeric/Numeric.h \
-  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/Context.h \
-  ../Numeric/Numeric.h
+  ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \
+  ../Common/SmoothData.h ../Numeric/Numeric.h ../Common/AdaptiveViews.h \
+  ../Common/GmshMatrix.h ../Common/Context.h
 Entity.o: Entity.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../Common/GmshUI.h ../Numeric/Numeric.h Draw.h ../DataStr/List.h \
-  ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \
-  ../Common/SmoothData.h ../Numeric/Numeric.h ../Common/AdaptiveViews.h \
-  ../Common/GmshMatrix.h ../Common/Context.h gl2ps.h
+  ../Common/GmshUI.h ../Numeric/Numeric.h Draw.h ../Common/Views.h \
+  ../Common/ColorTable.h ../Common/VertexArray.h ../Common/SmoothData.h \
+  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/Context.h \
+  gl2ps.h
 ReadImg.o: ReadImg.cpp ReadImg.h ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
@@ -164,50 +181,45 @@ ReadImg.o: ReadImg.cpp ReadImg.h ../Common/Gmsh.h ../Common/Message.h \
 Scale.o: Scale.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../Common/GmshUI.h ../Numeric/Numeric.h Draw.h ../DataStr/List.h \
-  ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \
-  ../Common/SmoothData.h ../Numeric/Numeric.h ../Common/AdaptiveViews.h \
-  ../Common/GmshMatrix.h ../Common/Context.h gl2ps.h
+  ../Common/GmshUI.h ../Numeric/Numeric.h Draw.h ../Common/Views.h \
+  ../Common/ColorTable.h ../Common/VertexArray.h ../Common/SmoothData.h \
+  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/Context.h \
+  gl2ps.h
 Graph2D.o: Graph2D.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
   ../Common/GmshUI.h ../Common/Context.h ../Numeric/Numeric.h Draw.h \
-  ../DataStr/List.h ../Common/Views.h ../Common/ColorTable.h \
-  ../Common/VertexArray.h ../Common/SmoothData.h ../Numeric/Numeric.h \
-  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h gl2ps.h
+  ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \
+  ../Common/SmoothData.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
+  gl2ps.h
 gl2ps.o: gl2ps.cpp gl2ps.h
 gl2gif.o: gl2gif.cpp gl2gif.h PixelBuffer.h ../Common/Gmsh.h \
   ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
   ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h \
-  ../DataStr/Tree.h ../Common/GmshUI.h Draw.h ../DataStr/List.h \
-  ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \
-  ../Common/SmoothData.h ../Numeric/Numeric.h ../Common/AdaptiveViews.h \
-  ../Common/GmshMatrix.h
+  ../DataStr/Tree.h ../Common/GmshUI.h Draw.h ../Common/Views.h \
+  ../Common/ColorTable.h ../Common/VertexArray.h ../Common/SmoothData.h \
+  ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h
 gl2jpeg.o: gl2jpeg.cpp gl2jpeg.h PixelBuffer.h ../Common/Gmsh.h \
   ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
   ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h \
-  ../DataStr/Tree.h ../Common/GmshUI.h Draw.h ../DataStr/List.h \
-  ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \
-  ../Common/SmoothData.h ../Numeric/Numeric.h ../Common/AdaptiveViews.h \
-  ../Common/GmshMatrix.h
+  ../DataStr/Tree.h ../Common/GmshUI.h Draw.h ../Common/Views.h \
+  ../Common/ColorTable.h ../Common/VertexArray.h ../Common/SmoothData.h \
+  ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h
 gl2png.o: gl2png.cpp gl2png.h PixelBuffer.h ../Common/Gmsh.h \
   ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
   ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h \
-  ../DataStr/Tree.h ../Common/GmshUI.h Draw.h ../DataStr/List.h \
-  ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \
-  ../Common/SmoothData.h ../Numeric/Numeric.h ../Common/AdaptiveViews.h \
-  ../Common/GmshMatrix.h
+  ../DataStr/Tree.h ../Common/GmshUI.h Draw.h ../Common/Views.h \
+  ../Common/ColorTable.h ../Common/VertexArray.h ../Common/SmoothData.h \
+  ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h
 gl2ppm.o: gl2ppm.cpp gl2ppm.h PixelBuffer.h ../Common/Gmsh.h \
   ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
   ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h \
-  ../DataStr/Tree.h ../Common/GmshUI.h Draw.h ../DataStr/List.h \
-  ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \
-  ../Common/SmoothData.h ../Numeric/Numeric.h ../Common/AdaptiveViews.h \
-  ../Common/GmshMatrix.h
+  ../DataStr/Tree.h ../Common/GmshUI.h Draw.h ../Common/Views.h \
+  ../Common/ColorTable.h ../Common/VertexArray.h ../Common/SmoothData.h \
+  ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h
 gl2yuv.o: gl2yuv.cpp gl2yuv.h PixelBuffer.h ../Common/Gmsh.h \
   ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
   ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h \
-  ../DataStr/Tree.h ../Common/GmshUI.h Draw.h ../DataStr/List.h \
-  ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \
-  ../Common/SmoothData.h ../Numeric/Numeric.h ../Common/AdaptiveViews.h \
-  ../Common/GmshMatrix.h
+  ../DataStr/Tree.h ../Common/GmshUI.h Draw.h ../Common/Views.h \
+  ../Common/ColorTable.h ../Common/VertexArray.h ../Common/SmoothData.h \
+  ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h
diff --git a/Mesh/BackgroundMesh.cpp b/Mesh/BackgroundMesh.cpp
index 98b224924f932a773767e6fa435b53614cc98a44..28268bc0c0984622391c54c31f7ee4dae71df014 100644
--- a/Mesh/BackgroundMesh.cpp
+++ b/Mesh/BackgroundMesh.cpp
@@ -1,4 +1,4 @@
-// $Id: BackgroundMesh.cpp,v 1.19 2007-04-16 09:08:28 remacle Exp $
+// $Id: BackgroundMesh.cpp,v 1.20 2007-04-21 19:40:00 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -34,26 +34,20 @@
 extern Context_T CTX;
 MinField lc_field;
 
-static OctreePost *BGM_OCTREE = NULL;
+#define MAX_LC 1.e22
 
-const double MAX_LC = 1.e22;
-
-/*int BGMWithView(Post_View * ErrView)
+bool BGMExists() 
 {
-  Msg(INFO, "Applying '%s' as background mesh", ErrView->Name);
-  if(BGM_OCTREE) delete BGM_OCTREE;
-  BGM_OCTREE = new OctreePost(ErrView);
-  CTX.mesh.bgmesh_view_num = ErrView->Num; // view numbers are unique
-  return 1 ;
-}*/
-
-bool BGMExists() {
   return lc_field.empty();
 }
-void BGMAddField(Field *field){
+
+void BGMAddField(Field *field)
+{
   lc_field.push_front(field);
 }
-void BGMReset(){
+
+void BGMReset()
+{
   lc_field.clear();
 }
 
@@ -163,7 +157,7 @@ double BGM_MeshSize(GEntity *ge, double U, double V, double X, double Y, double
   double l1 = MAX_LC;
   double l2 = MAX_LC;
   double l3 = CTX.lc;
-  double l4 = !lc_field.empty()?lc_field(X, Y, Z):MAX_LC;
+  double l4 = lc_field.empty() ? MAX_LC : lc_field(X, Y, Z);
 
   if(l4 < MAX_LC && !CTX.mesh.constrained_bgmesh)
     return l4 * CTX.mesh.lc_factor;
diff --git a/Mesh/Field.cpp b/Mesh/Field.cpp
index 8f257c75ad6c2a5131514c4ba64a667acaa338ac..eedd01e0b0ea58deb00ab958c947ce647caea2f7 100644
--- a/Mesh/Field.cpp
+++ b/Mesh/Field.cpp
@@ -1,130 +1,173 @@
-#include<fstream>
-#include "math.h"
-#include "Field.h"
+// $Id: Field.cpp,v 1.2 2007-04-21 19:40:00 geuzaine Exp $
+//
+// Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+// 
+// Please report all bugs and problems to <gmsh@geuz.org>.
+
+#include <fstream>
+#include <math.h>
 #include "Gmsh.h"
+#include "Field.h"
 #include "Context.h"
 #include "GeoInterpolation.h"
-#include "matheval.h"
 #ifdef HAVE_MATH_EVAL
 #include "matheval.h"
 #endif
-#define MAX_LC 1e22
+
+#define MAX_LC 1.e22
+
 extern Context_T CTX;
 FieldManager fields;
 
-void FieldManager::reset(){
-  for(std::map<int,Field*>::iterator it=id_map.begin();it!=id_map.end();it++){
+void FieldManager::reset()
+{
+  for(std::map<int,Field*>::iterator it = id_map.begin(); it != id_map.end(); it++){
     delete it->second;
   }
   id_map.clear();
 }
 
-Field *FieldManager::get(int id){
-  std::map<int,Field*>::iterator it=id_map.find(id);
-  if(it==id_map.end()){
-    Msg(GERROR,"Field id %i does not exist.\n",id);
+Field *FieldManager::get(int id)
+{
+  std::map<int,Field*>::iterator it = id_map.find(id);
+  if(it == id_map.end()){
+    Msg(GERROR, "Field id %i does not exist", id);
     return NULL;
   }
   return it->second;
 }
-int FieldManager::insert(Field *field,int id){
-  if(id==-1){ // get an automatic negative id starting from -1
-    if(id_map.begin()!=id_map.end()){
-      id=id_map.begin()->first-1;
+
+int FieldManager::insert(Field *field, int id)
+{
+  if(id == -1){ // get an automatic negative id starting from -1
+    if(id_map.begin() != id_map.end()){
+      id = id_map.begin()->first - 1;
     }
   }
-  if(id>0){
-    if(id_map.find(id)!=id_map.end()){
-      Msg(GERROR, "Field id %i is already defined, it will be deleted.\n");
+  if(id > 0){
+    if(id_map.find(id) != id_map.end()){
+      Msg(GERROR, "Field id %i is already defined, it will be deleted");
       delete id_map[id];
     }
-    id_map[id]=field;
-    return id;
+    id_map[id] = field;
   }
+  return id;
 }
 
-/* StructuredField*/
-StructuredField::StructuredField(const char *filename){
-	std::ifstream input(filename);
-	input.read((char*)o,3*sizeof(double));
-	input.read((char*)d,3*sizeof(double));
-	input.read((char*)n,3*sizeof(int));
-	int nt=n[0]*n[1]*n[2];
-	data=new double[nt];
-	input.read((char*)data,nt*sizeof(double));
-	input.close();
+// StructuredField
+StructuredField::StructuredField(const char *filename)
+{
+  std::ifstream input(filename);
+  input.read((char*)o, 3 * sizeof(double));
+  input.read((char*)d, 3 * sizeof(double));
+  input.read((char*)n, 3 * sizeof(int));
+  int nt = n[0] * n[1] * n[2];
+  data = new double[nt];
+  input.read((char*)data, nt * sizeof(double));
+  input.close();
 }
-StructuredField::~StructuredField(){
-	delete []data;
+
+StructuredField::~StructuredField()
+{
+  delete []data;
 }
-double StructuredField::operator()(double x,double y,double z){
-	//tri-linear
-	int id[2][3];
-	double xi[3];
-	double xyz[3]={x,y,z};
-	for(int i=0;i<3;i++){
-		id[0][i]=(int)floor((xyz[i]-o[i])/d[i]);
-		id[1][i]=id[0][i]+1;
-		id[0][i]=std::max(std::min(id[0][i],n[i]-1),0);
-		id[1][i]=std::max(std::min(id[1][i],n[i]-1),0);
-		xi[i]=xyz[i]-(o[i]+id[0][i]*d[i]);
-		xi[i]=std::max(std::min(xi[i],1.),0.);
-	}
-	double v=0;
-	for(int i=0;i<2;i++)for(int j=0;j<2;j++)for(int k=0;k<2;k++){
-		v+=data[id[i][0]*n[1]*n[2]+id[j][1]*n[2]+id[j][2]]
-			*(i*xi[0]+(1-i)*(1-xi[0]))
-			*(j*xi[1]+(1-j)*(1-xi[1]))
-			*(k*xi[2]+(1-k)*(1-xi[2]));
-	}
-	return v;
+
+double StructuredField::operator()(double x,double y,double z)
+{
+  //tri-linear
+  int id[2][3];
+  double xi[3];
+  double xyz[3]={x,y,z};
+  for(int i = 0; i < 3; i++){
+    id[0][i] = (int)floor((xyz[i] - o[i]) / d[i]);
+    id[1][i] = id[0][i] + 1;
+    id[0][i] = std::max(std::min(id[0][i], n[i] - 1), 0);
+    id[1][i] = std::max(std::min(id[1][i], n[i] - 1), 0);
+    xi[i] = xyz[i] - (o[i] + id[0][i] * d[i]);
+    xi[i] = std::max(std::min(xi[i], 1.), 0.);
+  }
+  double v = 0;
+  for(int i = 0; i < 2; i++) 
+    for(int j = 0;j < 2; j++)
+      for(int k = 0; k < 2; k++){
+	v += data[id[i][0] * n[1] * n[2] + id[j][1] * n[2] + id[j][2]]
+	  * (i * xi[0] + (1 - i) * (1 - xi[0]))
+	  * (j * xi[1] + (1 - j) * (1 - xi[1]))
+	  * (k * xi[2] + (1 - k) * (1 - xi[2]));
+      }
+  return v;
 }
 
-/*LatLonField*/
-double LatLonField::operator()(double x,double y,double z){
-	return (*field)(asin(z/sqrt(x*x+y*y+z*z)),atan2(y,x),0);
+// LatLonField
+double LatLonField::operator()(double x, double y, double z)
+{
+  return (*field)(asin(z / sqrt(x * x + y * y + z * z)), atan2(y, x), 0);
 }
 
-/*ThresholdField*/
+// ThresholdField
 ThresholdField::ThresholdField(Field *_field,
-	double _dmin,double _dmax,double _lcmin,double _lcmax):
-	field(_field),dmin(_dmin),dmax(_dmax),lcmin(_lcmin),lcmax(_lcmax){
+			       double _dmin, double _dmax, double _lcmin, double _lcmax)
+  : field(_field), dmin(_dmin), dmax(_dmax), lcmin(_lcmin), lcmax(_lcmax)
+{
 }
-double ThresholdField::operator()(double x,double y,double z){
-	double r=((*field)(x,y,z)-dmin)/(dmax-dmin);
-	r=std::max(std::min(r,1.),0.);
-	double lc=lcmin*(1-r)+lcmax*r;
-	return lc;
+
+double ThresholdField::operator()(double x, double y, double z)
+{
+  double r = ((*field)(x, y, z) - dmin) / (dmax - dmin);
+  r = std::max(std::min(r, 1.), 0.);
+  double lc = lcmin * (1 - r) + lcmax * r;
+  return lc;
 }
 
-/*GradField*/
-GradField::GradField(Field *_field,int _kind,double _delta):
-	field(_field),kind(_kind),delta(_delta){
-		if(delta<0) delta=CTX.lc/10000;
+//GradField
+GradField::GradField(Field *_field, int _kind, double _delta)
+  : field(_field), kind(_kind), delta(_delta)
+{
+  if(delta < 0) delta = CTX.lc / 10000;
 }
-double GradField::operator()(double x,double y,double z){
-	double gx,gy,gz;
-	switch(kind){
-		case 0 : /* x */
-			return ((*field)(x+delta/2,y,z)-(*field)(x-delta/2,y,z))/delta;
-		case 1 : /* y */
-			return ((*field)(x,y+delta/2,z)-(*field)(x,y-delta/2,z))/delta;
-		case 2 : /* z */
-			return ((*field)(x,y,z+delta/2)-(*field)(x,y,z-delta/2))/delta;
-		case 3 : /* max */
-			gx=((*field)(x+delta/2,y,z)-(*field)(x-delta/2,y,z))/delta;
-			gy=((*field)(x,y+delta/2,z)-(*field)(x,y-delta/2,z))/delta;
-			gz=((*field)(x,y,z+delta/2)-(*field)(x,y,z-delta/2))/delta;
-			return sqrt(gx*gx+gy*gy+gz*gz);
-		default :
-			Msg(GERROR, "Unknown kind (%i) for GradField.",kind);
-			return 0;
-	}
+
+double GradField::operator()(double x, double y, double z)
+{
+  double gx, gy, gz;
+  switch(kind){
+  case 0 : /* x */
+    return ((*field)(x + delta / 2, y, z) - (*field)(x - delta / 2, y, z)) / delta;
+  case 1 : /* y */
+    return ((*field)(x, y + delta / 2, z) - (*field)(x, y - delta / 2, z)) / delta;
+  case 2 : /* z */
+    return ((*field)(x, y, z + delta / 2) - (*field)(x, y, z - delta / 2)) / delta;
+  case 3 : /* max */
+    gx = ((*field)(x + delta / 2, y, z) - (*field)(x - delta / 2, y, z)) / delta;
+    gy = ((*field)(x, y + delta / 2, z) - (*field)(x, y - delta / 2, z)) / delta;
+    gz = ((*field)(x, y, z + delta / 2) - (*field)(x, y, z - delta / 2)) / delta;
+    return sqrt(gx * gx + gy * gy + gz * gz);
+  default :
+    Msg(GERROR, "Unknown kind (%i) for GradField", kind);
+    return 0;
+  }
 }
 
-/*ParametricField*/
-ParametricField::ParametricField(Field *_field,const char *strX,const char *strY,const char *strZ):field(_field){
-	char *sx=strdup(strX),*sy=strdup(strY),*sz=strdup(strZ);
+// ParametricField
+ParametricField::ParametricField(Field *_field, 
+				 const char *strX, const char *strY, const char *strZ)
+  : field(_field)
+{
+  char *sx = strdup(strX), *sy = strdup(strY), *sz = strdup(strZ);
 #if !defined(HAVE_MATH_EVAL)
   Msg(GERROR, "MathEval is not compiled in this version of Gmsh");
 #else
@@ -133,7 +176,9 @@ ParametricField::ParametricField(Field *_field,const char *strX,const char *strY
   evalZ = evaluator_create(sz);
 #endif
 }
-ParametricField::~ParametricField(){
+
+ParametricField::~ParametricField()
+{
 #if !defined(HAVE_MATH_EVAL)
   Msg(GERROR, "MathEval is not compiled in this version of Gmsh");
 #else
@@ -142,70 +187,82 @@ ParametricField::~ParametricField(){
   evaluator_destroy(evalZ);
 #endif
 }
-double ParametricField::operator()(double x,double y,double z){
+
+double ParametricField::operator()(double x, double y, double z)
+{
 #if !defined(HAVE_MATH_EVAL)
   Msg(GERROR, "MathEval is not compiled in this version of Gmsh");
 #else
-  static char *names[3] = {"x","y","z"};
-  double values [3] = {x,y,z};
+  static char *names[3] = {"x", "y", "z"};
+  double values [3] = {x, y, z};
   const double nx = evaluator_evaluate(evalX, 3, names, values);
   const double ny = evaluator_evaluate(evalY, 3, names, values);
   const double nz = evaluator_evaluate(evalZ, 3, names, values);
-  return (*field)(x,y,z);
+  return (*field)(nx, ny, nz);
 #endif
 }
 
-/* FunctionField */
-FunctionField::FunctionField(std::list<Field*> *_list,const char *str):list(_list){
+// FunctionField
+FunctionField::FunctionField(std::list<Field*> *_list, const char *str)
+  : list(_list)
+{
 #if !defined(HAVE_MATH_EVAL)
   Msg(GERROR, "MathEval is not compiled in this version of Gmsh");
 #else
-	char *s=strdup(str);
+  char *s = strdup(str);
   eval = evaluator_create(s);
-	values=new double[3+list->size()];
-	names=new char*[3+list->size()];
-	names[0]=strdup("x");
-	names[1]=strdup("y");
-	names[2]=strdup("z");
-	int p=3;
-	for(std::list<Field*>::iterator it=list->begin();it!=list->end();it++){
-		asprintf(names+p,"f%i",p-3);
-		p++;
-	}
+  values = new double[3 + list->size()];
+  names = new char*[3 + list->size()];
+  names[0] = strdup("x");
+  names[1] = strdup("y");
+  names[2] = strdup("z");
+  int p = 3;
+  for(std::list<Field*>::iterator it = list->begin(); it != list->end(); it++){
+    asprintf(names + p, "f%i", p - 3);
+    p++;
+  }
 #endif
 }
-double FunctionField::operator()(double x,double y,double z){
+
+double FunctionField::operator()(double x, double y, double z)
+{
 #if !defined(HAVE_MATH_EVAL)
   Msg(GERROR, "MathEval is not compiled in this version of Gmsh");
 #else
-	values[0]=x;
-	values[1]=y;
-	values[2]=z;
-	int p=3;
-	for(std::list<Field*>::iterator it=list->begin();it!=list->end();it++){
-		values[p]=(**it)(x,y,z);
-		p++;
-	}
-	return evaluator_evaluate(eval,p,names,values);
+  values[0] = x;
+  values[1] = y;
+  values[2] = z;
+  int p = 3;
+  for(std::list<Field*>::iterator it = list->begin(); it != list->end(); it++){
+    values[p]=(**it)(x, y ,z);
+    p++;
+  }
+  return evaluator_evaluate(eval, p, names, values);
 #endif
 }
-FunctionField::~FunctionField(){
+
+FunctionField::~FunctionField()
+{
 #if !defined(HAVE_MATH_EVAL)
   Msg(GERROR, "MathEval is not compiled in this version of Gmsh");
 #else
-	int n=3+list->size();
-	for(int i=0;i<n;i++){
-		free(names[i]);
-	}
-	delete []names;
-	delete []values;
-	delete list;
-	evaluator_destroy(eval);
+  int n = 3 + list->size();
+  for(int i = 0; i < n; i++){
+    free(names[i]);
+  }
+  delete [] names;
+  delete [] values;
+  delete list;
+  evaluator_destroy(eval);
 #endif
 }
 
-/* PostViewField */
-double PostViewField::operator()(double x, double y, double z) {
+// PostViewField
+double PostViewField::operator()(double x, double y, double z) 
+{
+  // FIXME: temp fix until we manage correctly the removal of post views
+  if(view_index < 0 || view_index >= List_Nbr(CTX.post.list)) return MAX_LC;
+
   double l = 0.;
   double fact[9] = {0.001, 0.0025, 0.005, 0.0075, 0.01, 0.025, 0.05, 0.075, 0.1};
   if(!octree->searchScalar(x, y, z, &l, 0)){
@@ -232,33 +289,42 @@ double PostViewField::operator()(double x, double y, double z) {
   return l;
 }
 
-PostViewField::PostViewField(Post_View *view){
-  Msg(INFO, "Field from '%s'.", view->Name);
+PostViewField::PostViewField(Post_View *view)
+{
+  Msg(INFO, "Field from '%s'", view->Name);
   octree = new OctreePost(view);
-  view_num = view->Num;
+  view_index = view->Index;
+}
+
+PostViewField::~PostViewField()
+{
+  delete octree;
 }
 
-/* Min Field */
-MinField::MinField(){};
-double MinField::operator()(double x,double y,double z){
-  if(size()==0){
-    Msg(GERROR, "Requesting minimum of a void list of field.");
+// Min Field
+double MinField::operator()(double x, double y, double z)
+{
+  if(size() == 0){
+    Msg(GERROR, "Requesting minimum of a void list of field");
     return 0;
   }
-  iterator it=begin();
-  double v=(**it++)(x,y,z);
-  while(it!=end()){
-    v=std::min(v,(**it++)(x,y,z));
+  iterator it = begin();
+  double v = (**it++)(x, y, z);
+  while(it != end()){
+    v = std::min(v, (**it++)(x, y, z));
   }
   return v;
 }
 
-/* Attractor Field */
+// Attractor Field
 #define maxpts  1
-void AttractorField::addPoint ( double X, double Y, double Z, double lc){
-  attractorPoints.push_back(SPoint3(X,Y,Z));
+void AttractorField::addPoint(double X, double Y, double Z, double lc)
+{
+  attractorPoints.push_back(SPoint3(X, Y, Z));
 }
-AttractorField::~AttractorField(){
+
+AttractorField::~AttractorField()
+{
 #ifdef HAVE_ANN_
   if(kdtree) delete kdtree;
   if(zeronodes) annDeallocPts(zeronodes);
@@ -266,6 +332,7 @@ AttractorField::~AttractorField(){
   delete [] dist;
 #endif
 }
+
 AttractorField::AttractorField()
 #ifdef HAVE_ANN_
   : kdtree (0), zeronodes(0)
@@ -277,7 +344,8 @@ AttractorField::AttractorField()
 #endif
 }
 
-void AttractorField::buildFastSearchStructures(){
+void AttractorField::buildFastSearchStructures()
+{
 #ifdef HAVE_ANN_
   if(zeronodes){
     annDeallocPts(zeronodes);
@@ -287,39 +355,46 @@ void AttractorField::buildFastSearchStructures(){
   if (totpoints)
     zeronodes = annAllocPts(totpoints, 4);
   int k = 0;
-    for (std::list <SPoint3>::iterator it2 = attractorPoints.begin();
-	 it2 != attractorPoints.end(); ++it2){
-      zeronodes[k][0]=it2->x();
-      zeronodes[k][1]=it2->y();
-      zeronodes[k++][2]=it2->z();
-    }
+  for(std::list <SPoint3>::iterator it2 = attractorPoints.begin();
+      it2 != attractorPoints.end(); ++it2){
+    zeronodes[k][0]=it2->x();
+    zeronodes[k][1]=it2->y();
+    zeronodes[k++][2]=it2->z();
+  }
   kdtree = new ANNkd_tree(zeronodes, totpoints, 3);
 #endif
 }
 
-double AttractorField::operator()(double X, double Y, double Z){
+double AttractorField::operator()(double X, double Y, double Z)
+{
   double xyz[3] = {X, Y, Z};
-	if(attractorPoints.size() == 1){
-		SPoint3 p = *(attractorPoints.begin());
-		return sqrt((p.x()-X)*(p.x()-X)+(p.y()-Y)*(p.y()-Y)+(p.z()-Z)*(p.z()-Z));
-	}
-	else{
+  if(attractorPoints.size() == 1){
+    SPoint3 p = *(attractorPoints.begin());
+    return sqrt((p.x() - X) * (p.x() - X) + 
+		(p.y() - Y) * (p.y() - Y) + 
+		(p.z() - Z) * (p.z() - Z));
+  }
+  else{
 #ifdef HAVE_ANN_
-		kdtree->annkSearch(xyz, maxpts, index, dist);
-		return sqrt(dist[0]);
+    kdtree->annkSearch(xyz, maxpts, index, dist);
+    return sqrt(dist[0]);
 #else
-		Msg(GERROR,"GMSH should be compiled with ANN in order to enable attractors !");
+    Msg(GERROR,"GMSH should be compiled with ANN in order to enable attractors");
 #endif
-	}
+  }
 }
-void AttractorField::addCurve(Curve *c, int N) {
+
+void AttractorField::addCurve(Curve *c, int N) 
+{
   for(int i = 0; i < N; i++){
     double u = (double)i / (N - 1);
-    Vertex V = InterpolateCurve (c, u, 0);
+    Vertex V = InterpolateCurve(c, u, 0);
     addPoint(V.Pos.X, V.Pos.Y, V.Pos.Z);
   }
 }
-void AttractorField::addGEdge(GEdge *c, int N) {
+
+void AttractorField::addGEdge(GEdge *c, int N) 
+{
   for(int i = 0; i < N; i++){
     double u = (double)i / (N - 1);
     Range<double> b = c->parBounds(0);
diff --git a/Mesh/Field.h b/Mesh/Field.h
index a4252db6aa2bcf61eb50f3eaa6d89a80b3bf85cf..4449416ad5f09e9ecd8507f88cb9ea7e314bd1b0 100644
--- a/Mesh/Field.h
+++ b/Mesh/Field.h
@@ -1,7 +1,27 @@
-#ifndef FIELD_H_
-#define FIELD_H_
-#include<map>
-#include<list>
+#ifndef _FIELD_H_
+#define _FIELD_H_
+
+// Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+// 
+// Please report all bugs and problems to <gmsh@geuz.org>.
+
+#include <map>
+#include <list>
 #include "Views.h"
 #ifdef HAVE_ANN_
 #include "ANN/ANN.h"
@@ -9,93 +29,105 @@
 #include "Geo.h"
 #include "GEdge.h"
 #include "OctreePost.h"
+
 class Field{
-	public:
-	virtual double operator()(double x,double y,double z)=0;
+public:
+  virtual double operator()(double x, double y, double z) = 0;
+  virtual ~Field(){}
 };
+
 class FieldManager{
-	std::map<int,Field*> id_map;
-  public:
-	void reset();
-  int insert(Field *field,int id=-1 /* -1= automatic id */); /* return the id */
+  std::map<int, Field*> id_map;
+public:
+  void reset();
+  int insert(Field *field, int id=-1 /* -1 = automatic id */); /* returns the id */
   Field *get(int id);
 };
+
 extern FieldManager fields;
 
-class StructuredField:public Field{
-	double o[3],d[3];
-	int n[3];
-	double *data;
-	public :
-	StructuredField(const char *filename);
-	virtual ~StructuredField();
-	double operator()(double x,double y,double z);
+class StructuredField : public Field{
+  double o[3], d[3];
+  int n[3];
+  double *data;
+public :
+  StructuredField(const char *filename);
+  virtual ~StructuredField();
+  double operator()(double x, double y, double z);
 };
-class LatLonField:public Field{
-	Field *field;
-	public:
-	LatLonField(Field *_field):field(_field){};
-	double operator()(double x,double y,double z);
+
+class LatLonField : public Field{
+  Field *field;
+public:
+  LatLonField(Field *_field) : field(_field){};
+  double operator()(double x, double y, double z);
 };
-class ParametricField:public Field{
-	void *evalX,*evalY,*evalZ;
-	Field *field;
-	public:
-	ParametricField(Field *_field,const char *strX,const char *strY,const char *strZ);
-	double operator()(double x,double y,double z);
-	~ParametricField();
+
+class ParametricField : public Field{
+  void *evalX, *evalY, *evalZ;
+  Field *field;
+public:
+  ParametricField(Field *_field, const char *strX, const char *strY, const char *strZ);
+  double operator()(double x, double y, double z);
+  virtual ~ParametricField();
 };
-class ThresholdField:public Field{
-	Field *field;
-	double dmin,dmax,lcmin,lcmax;
-	public:
-	ThresholdField(Field *field,double dmin,double dmax,double lcmin,double lcmax);
-	double operator()(double x,double y,double z);
+
+class ThresholdField : public Field{
+  Field *field;
+  double dmin, dmax, lcmin, lcmax;
+public:
+  ThresholdField(Field *field, double dmin, double dmax, double lcmin, double lcmax);
+  double operator()(double x, double y, double z);
 };
-class GradField:public Field{
-	Field *field;
-	int kind;/*0 x, 1 y, 2 z, 3 max */
-	double delta;
-	public:
-	GradField(Field *field,int _kind=2,double _delta=-1);
-	double operator()(double x,double y,double z);
+
+class GradField : public Field{
+  Field *field;
+  int kind; /* 0 x, 1 y, 2 z, 3 max */
+  double delta;
+public:
+  GradField(Field *field, int _kind=2, double _delta=-1);
+  double operator()(double x, double y, double z);
 };
-class FunctionField:public Field{
-	std::list<Field*> *list;
-	char **names;
-	double *values;
-	void *eval;
-	public:
-	FunctionField(std::list<Field*> *_list,const char *fct);
-	double operator()(double x,double y,double z);
-	~FunctionField();
+
+class FunctionField : public Field{
+  std::list<Field*> *list;
+  char **names;
+  double *values;
+  void *eval;
+public:
+  FunctionField(std::list<Field*> *_list, const char *fct);
+  double operator()(double x, double y, double z);
+  virtual ~FunctionField();
 };
-class PostViewField:public Field{
-	OctreePost *octree;
-	int view_num;
-	public:
-	PostViewField(Post_View *view);
-	double operator()(double x,double y,double z);
+
+class PostViewField : public Field{
+  OctreePost *octree;
+  int view_index;
+public:
+  PostViewField(Post_View *view);
+  double operator()(double x, double y, double z);
+  virtual ~PostViewField();
 };
-class MinField:public Field,public std::list<Field*>{
-  public:
-  MinField();
-	double operator()(double x,double y,double z);
+
+class MinField : public Field, public std::list<Field*>{
+public:
+  MinField(){}
+  double operator()(double x, double y, double z);
 };
 
-class AttractorField:public Field{
- protected :
+class AttractorField : public Field{
+protected :
 #ifdef HAVE_ANN_
   ANNkd_tree* kdtree;
   ANNpointArray zeronodes;
   ANNidxArray index;
   ANNdistArray dist;
 #endif
-  std::list <SPoint3> attractorPoints;  
+  std::list<SPoint3> attractorPoints;  
 public :
   AttractorField();
   virtual ~AttractorField();
-  void addPoint ( double X, double Y, double Z, double lc = -1.0);
+  void addPoint(double X, double Y, double Z, double lc = -1.0);
   void buildFastSearchStructures() ;
   void addGEdge(GEdge*, int);
   void addCurve(Curve*, int);
diff --git a/Mesh/Makefile b/Mesh/Makefile
index fa87380311cf8089729e0892596c46fdd78b08c8..04493c6c431b5f3e7a7dc3b1d1128a59c7e77a74 100644
--- a/Mesh/Makefile
+++ b/Mesh/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.169 2007-04-16 09:08:28 remacle Exp $
+# $Id: Makefile,v 1.170 2007-04-21 19:40:00 geuzaine Exp $
 #
 # Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 #
@@ -76,148 +76,206 @@ Generator.o: Generator.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
   ../Numeric/Numeric.h ../Common/Context.h ../Common/Views.h \
   ../Common/ColorTable.h ../Common/VertexArray.h ../Common/SmoothData.h \
-  ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
-  ../Common/OS.h ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h \
-  ../Geo/Range.h ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h \
-  ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/SVector3.h ../Geo/MElement.h \
-  ../Geo/MEdge.h ../Common/Hash.h ../Geo/MFace.h ../Numeric/Numeric.h \
-  ../Common/Context.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
-  ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h ../Geo/GRegion.h \
+  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/OS.h \
+  ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \
+  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
+  ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/SPoint3.h \
+  ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h \
+  ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h \
+  ../Geo/SPoint2.h ../Geo/MElement.h ../Geo/MVertex.h ../Geo/MEdge.h \
+  ../Geo/MVertex.h ../Geo/SVector3.h ../Common/Hash.h ../Geo/MFace.h \
+  ../Geo/MVertex.h ../Geo/SVector3.h ../Geo/ExtrudeParams.h \
+  ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h ../Geo/GEdgeLoop.h \
+  ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h ../Geo/SVector3.h \
+  ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h ../Geo/GEntity.h \
+  ../Geo/MElement.h ../Geo/ExtrudeParams.h ../Geo/SBoundingBox3d.h \
   meshGEdge.h meshGFace.h meshGRegion.h BackgroundMesh.h BoundaryLayer.h \
   HighOrder.h
-Field.o: Field.cpp Field.h ../Common/Views.h ../Common/ColorTable.h \
-  ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothData.h \
-  ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
-  ../Geo/Geo.h ../Common/GmshDefines.h ../Geo/gmshSurface.h ../Geo/Pair.h \
+Field.o: Field.cpp ../Common/Gmsh.h ../Common/Message.h \
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
+  Field.h ../Common/Views.h ../Common/ColorTable.h \
+  ../Common/VertexArray.h ../Common/SmoothData.h ../Numeric/Numeric.h \
+  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Geo/Geo.h \
+  ../Common/GmshDefines.h ../Geo/gmshSurface.h ../Geo/Pair.h \
   ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \
-  ../Geo/SBoundingBox3d.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
-  ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/MVertex.h \
-  ../Geo/GPoint.h ../Geo/MElement.h ../Geo/MEdge.h ../Common/Hash.h \
-  ../Geo/MFace.h ../Numeric/Numeric.h ../Common/Context.h \
-  ../Common/OctreePost.h ../Common/Octree.h ../Common/OctreeInternals.h \
-  ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
-  ../DataStr/Tree.h ../DataStr/Tools.h ../DataStr/List.h \
-  ../DataStr/Tree.h ../Common/Context.h ../Geo/GeoInterpolation.h \
-  ../Geo/Geo.h
+  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
+  ../Geo/SPoint2.h ../Geo/ExtrudeParams.h ../Geo/GEdge.h ../Geo/GEntity.h \
+  ../Geo/Range.h ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h \
+  ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/MVertex.h ../Geo/SPoint3.h \
+  ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/SPoint3.h \
+  ../Geo/SPoint2.h ../Geo/MElement.h ../Geo/MVertex.h ../Geo/MEdge.h \
+  ../Geo/MVertex.h ../Geo/SVector3.h ../Common/Hash.h ../Geo/MFace.h \
+  ../Geo/MVertex.h ../Geo/SVector3.h ../Common/Context.h \
+  ../Geo/ExtrudeParams.h ../Common/OctreePost.h ../Common/Octree.h \
+  ../Common/OctreeInternals.h ../Geo/GeoInterpolation.h ../Geo/Geo.h
 meshGEdge.o: meshGEdge.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
   meshGEdge.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/Range.h \
-  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Common/GmshDefines.h \
-  ../Geo/GVertex.h ../Geo/MVertex.h ../Geo/GPoint.h ../Geo/SPoint2.h \
-  ../Geo/SVector3.h ../Geo/MElement.h ../Geo/MEdge.h ../Common/Hash.h \
-  ../Geo/MFace.h ../Numeric/Numeric.h ../Common/Context.h \
-  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Numeric/Numeric.h \
-  ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/Pair.h \
-  ../Geo/MRep.h ../Geo/GFace.h ../Geo/GRegion.h ../Common/VertexArray.h \
-  ../Common/Message.h ../Common/OS.h BackgroundMesh.h ../Common/Message.h
+  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
+  ../Common/GmshDefines.h ../Geo/GVertex.h ../Geo/GEntity.h \
+  ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h \
+  ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
+  ../Geo/MElement.h ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h \
+  ../Geo/SVector3.h ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h \
+  ../Geo/SVector3.h ../Numeric/Numeric.h ../Common/Context.h \
+  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Geo/GFace.h \
+  ../Geo/GPoint.h ../Geo/GEntity.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h \
+  ../Geo/MElement.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
+  ../Geo/ExtrudeParams.h ../Geo/MRep.h ../Geo/GEdge.h ../Geo/GFace.h \
+  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/MElement.h \
+  ../Geo/ExtrudeParams.h ../Geo/MVertex.h ../Geo/MEdge.h \
+  ../Geo/MElement.h ../Common/VertexArray.h ../Common/OS.h \
+  BackgroundMesh.h
 meshGEdgeExtruded.o: meshGEdgeExtruded.cpp ../Geo/ExtrudeParams.h \
   ../Common/SmoothData.h ../Numeric/Numeric.h ../Geo/GModel.h \
   ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/SVector3.h \
-  ../Geo/MElement.h ../Geo/MEdge.h ../Common/Hash.h ../Geo/MFace.h \
-  ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
-  ../Geo/ExtrudeParams.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Common/Message.h
+  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Common/GmshDefines.h \
+  ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h \
+  ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h \
+  ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h \
+  ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
+  ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
+  ../Common/Context.h ../DataStr/List.h ../Geo/ExtrudeParams.h \
+  ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h ../Geo/GEdgeLoop.h \
+  ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h ../Geo/SVector3.h \
+  ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h ../Geo/GEntity.h \
+  ../Geo/MElement.h ../Geo/ExtrudeParams.h ../Geo/SBoundingBox3d.h \
+  ../Common/Message.h
 meshGFace.o: meshGFace.cpp meshGFace.h meshGFaceDelaunayInsertion.h \
   ../Geo/MElement.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/SVector3.h ../Common/Hash.h \
-  ../Geo/MFace.h ../Numeric/Numeric.h ../Common/Context.h \
+  ../Geo/SPoint3.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
+  ../Geo/SPoint3.h ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h \
+  ../Geo/SVector3.h ../Numeric/Numeric.h ../Common/Context.h \
   ../DataStr/List.h DivideAndConquer.h BackgroundMesh.h ../Geo/GVertex.h \
-  ../Geo/GEntity.h ../Geo/Range.h ../Geo/SBoundingBox3d.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GVertex.h ../Geo/MElement.h \
-  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Numeric/Numeric.h \
-  ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/Pair.h \
-  ../Geo/MVertex.h ../Geo/MRep.h ../Geo/GFace.h ../Geo/GRegion.h \
-  ../Common/VertexArray.h ../Common/Message.h ../Common/OS.h \
-  ../Common/Context.h ../Geo/GPoint.h ../Common/Message.h \
-  ../Numeric/Numeric.h BDS.h ../Common/Views.h ../Common/ColorTable.h \
+  ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
+  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/MVertex.h \
+  ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GEntity.h \
+  ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
+  ../Geo/MElement.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
+  ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h ../Geo/GEdgeLoop.h \
+  ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h ../Geo/SVector3.h \
+  ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/MRep.h ../Geo/GEdge.h \
+  ../Geo/GFace.h ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/MElement.h \
+  ../Geo/ExtrudeParams.h ../Geo/MVertex.h ../Geo/MEdge.h \
+  ../Geo/MElement.h ../Common/VertexArray.h ../Common/Message.h \
+  ../Common/OS.h BDS.h ../Common/Views.h ../Common/ColorTable.h \
   ../Common/VertexArray.h ../Common/SmoothData.h \
-  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h Field.h ../Geo/Geo.h \
-  ../Geo/gmshSurface.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../Common/OctreePost.h ../Common/Octree.h \
-  ../Common/OctreeInternals.h
+  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h
 meshGFaceTransfinite.o: meshGFaceTransfinite.cpp meshGFace.h \
   ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GVertex.h \
-  ../Geo/SVector3.h ../Geo/MElement.h ../Geo/MEdge.h ../Common/Hash.h \
-  ../Geo/MFace.h ../Numeric/Numeric.h ../Common/Context.h \
-  ../DataStr/List.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
-  ../Numeric/Numeric.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h \
-  ../Geo/Pair.h ../Geo/MVertex.h ../Geo/MElement.h ../Common/Context.h \
-  ../Common/Message.h
+  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Common/GmshDefines.h \
+  ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h \
+  ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h \
+  ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h \
+  ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
+  ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
+  ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
+  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Geo/GFace.h \
+  ../Geo/GPoint.h ../Geo/GEntity.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h \
+  ../Geo/MElement.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
+  ../Geo/ExtrudeParams.h ../Common/Message.h
 meshGFaceExtruded.o: meshGFaceExtruded.cpp ../Geo/ExtrudeParams.h \
   ../Common/SmoothData.h ../Numeric/Numeric.h ../Geo/GModel.h \
   ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/SVector3.h \
-  ../Geo/MElement.h ../Geo/MEdge.h ../Common/Hash.h ../Geo/MFace.h \
-  ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
-  ../Geo/ExtrudeParams.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Common/Context.h ../Common/Message.h
+  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Common/GmshDefines.h \
+  ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h \
+  ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h \
+  ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h \
+  ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
+  ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
+  ../Common/Context.h ../DataStr/List.h ../Geo/ExtrudeParams.h \
+  ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h ../Geo/GEdgeLoop.h \
+  ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h ../Geo/SVector3.h \
+  ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h ../Geo/GEntity.h \
+  ../Geo/MElement.h ../Geo/ExtrudeParams.h ../Geo/SBoundingBox3d.h \
+  ../Common/Message.h
 meshGFaceDelaunayInsertion.o: meshGFaceDelaunayInsertion.cpp BDS.h \
   ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h ../Geo/Range.h \
-  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Common/GmshDefines.h \
-  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/GVertex.h ../Geo/MVertex.h \
-  ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/MElement.h ../Geo/MEdge.h \
-  ../Common/Hash.h ../Geo/MFace.h ../Numeric/Numeric.h \
-  ../Common/Context.h ../DataStr/List.h ../Geo/ExtrudeParams.h \
-  ../Common/SmoothData.h ../Numeric/Numeric.h ../Geo/Pair.h \
+  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
+  ../Common/GmshDefines.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h \
+  ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/MVertex.h \
+  ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/SVector3.h \
+  ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h \
+  ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
+  ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
+  ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
+  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Geo/MElement.h \
+  ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h \
   ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \
   ../Common/SmoothData.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
-  BackgroundMesh.h meshGFaceDelaunayInsertion.h ../Geo/MElement.h \
-  ../Numeric/Numeric.h ../Common/Message.h
+  BackgroundMesh.h meshGFaceDelaunayInsertion.h ../Common/Message.h
 meshGRegion.o: meshGRegion.cpp meshGRegion.h \
   meshGRegionDelaunayInsertion.h ../Geo/MElement.h \
   ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/SPoint3.h \
-  ../Geo/MEdge.h ../Geo/SVector3.h ../Common/Hash.h ../Geo/MFace.h \
+  ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h \
+  ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
   ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
   ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \
-  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
-  ../Geo/MElement.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
-  ../Numeric/Numeric.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GRegion.h ../Geo/GFace.h ../Geo/GEdge.h \
-  ../Geo/gmshRegion.h ../Geo/Geo.h ../Geo/gmshSurface.h ../DataStr/List.h \
-  ../DataStr/Tree.h ../DataStr/avl.h ../Geo/MRep.h \
-  ../Common/VertexArray.h ../Common/Message.h ../Common/OS.h BDS.h \
-  ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \
-  ../Common/SmoothData.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
-  ../Common/Message.h
+  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
+  ../Geo/MVertex.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h \
+  ../Geo/SPoint2.h ../Geo/MElement.h ../Geo/ExtrudeParams.h \
+  ../Common/SmoothData.h ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h \
+  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h \
+  ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h \
+  ../Geo/GEntity.h ../Geo/MElement.h ../Geo/ExtrudeParams.h \
+  ../Geo/SBoundingBox3d.h ../Geo/gmshRegion.h ../Geo/Geo.h \
+  ../Geo/gmshSurface.h ../Geo/Pair.h ../Geo/Range.h ../Geo/SPoint2.h \
+  ../Geo/SPoint3.h ../Geo/SVector3.h ../Geo/SBoundingBox3d.h \
+  ../DataStr/Tree.h ../DataStr/avl.h ../Geo/SPoint2.h \
+  ../Geo/ExtrudeParams.h ../Geo/GRegion.h ../Geo/MRep.h ../Geo/GEdge.h \
+  ../Geo/GFace.h ../Geo/GRegion.h ../Geo/MVertex.h ../Geo/MEdge.h \
+  ../Geo/MElement.h ../Common/VertexArray.h ../Common/Message.h \
+  ../Common/OS.h BDS.h ../Common/Views.h ../Common/ColorTable.h \
+  ../Common/VertexArray.h ../Common/SmoothData.h \
+  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h
 meshGRegionDelaunayInsertion.o: meshGRegionDelaunayInsertion.cpp \
   BackgroundMesh.h meshGRegionDelaunayInsertion.h ../Geo/MElement.h \
   ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/SPoint3.h \
-  ../Geo/MEdge.h ../Geo/SVector3.h ../Common/Hash.h ../Geo/MFace.h \
+  ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h \
+  ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
   ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
   ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \
-  ../Geo/SBoundingBox3d.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
-  ../Geo/MElement.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
-  ../Numeric/Numeric.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/GRegion.h ../Numeric/Numeric.h \
-  ../Common/Message.h
+  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
+  ../Geo/MVertex.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h \
+  ../Geo/SPoint2.h ../Geo/MElement.h ../Geo/ExtrudeParams.h \
+  ../Common/SmoothData.h ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h \
+  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h \
+  ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h \
+  ../Geo/GEntity.h ../Geo/MElement.h ../Geo/ExtrudeParams.h \
+  ../Geo/SBoundingBox3d.h ../Common/Message.h
 meshGRegionTransfinite.o: meshGRegionTransfinite.cpp meshGFace.h \
   ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h ../Geo/Range.h \
-  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Common/GmshDefines.h \
-  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/GVertex.h ../Geo/MVertex.h \
-  ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/MElement.h ../Geo/MEdge.h \
-  ../Common/Hash.h ../Geo/MFace.h ../Numeric/Numeric.h \
-  ../Common/Context.h ../DataStr/List.h ../Geo/ExtrudeParams.h \
-  ../Common/SmoothData.h ../Numeric/Numeric.h ../Geo/Pair.h \
-  ../Geo/GRegion.h ../Geo/MVertex.h ../Geo/MElement.h ../Common/Context.h \
-  ../Common/Message.h
+  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
+  ../Common/GmshDefines.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h \
+  ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/MVertex.h \
+  ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/SVector3.h \
+  ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h \
+  ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
+  ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
+  ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
+  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Geo/MElement.h \
+  ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h \
+  ../Geo/GRegion.h ../Geo/GEntity.h ../Geo/MElement.h \
+  ../Geo/ExtrudeParams.h ../Common/Message.h
 meshGRegionExtruded.o: meshGRegionExtruded.cpp ../Geo/ExtrudeParams.h \
   ../Common/SmoothData.h ../Numeric/Numeric.h ../Geo/GModel.h \
   ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/SVector3.h \
-  ../Geo/MElement.h ../Geo/MEdge.h ../Common/Hash.h ../Geo/MFace.h \
-  ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
-  ../Geo/ExtrudeParams.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h \
-  ../Geo/GRegion.h meshGFace.h meshGRegion.h ../Common/Context.h \
-  ../Common/Message.h
+  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Common/GmshDefines.h \
+  ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h \
+  ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h \
+  ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h \
+  ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
+  ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
+  ../Common/Context.h ../DataStr/List.h ../Geo/ExtrudeParams.h \
+  ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h ../Geo/GEdgeLoop.h \
+  ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h ../Geo/SVector3.h \
+  ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h ../Geo/GEntity.h \
+  ../Geo/MElement.h ../Geo/ExtrudeParams.h ../Geo/SBoundingBox3d.h \
+  meshGFace.h meshGRegion.h ../Common/Message.h
 DivideAndConquer.o: DivideAndConquer.cpp ../Common/Gmsh.h \
   ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
   ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h \
@@ -227,46 +285,70 @@ BackgroundMesh.o: BackgroundMesh.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
   ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \
   ../Common/SmoothData.h ../Numeric/Numeric.h ../Common/AdaptiveViews.h \
-  ../Common/GmshMatrix.h BackgroundMesh.h ../Numeric/Numeric.h \
-  ../Common/Context.h ../Common/OctreePost.h ../Common/Octree.h \
-  ../Common/OctreeInternals.h ../Geo/GVertex.h ../Geo/GEntity.h \
-  ../Geo/Range.h ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h \
-  ../Common/GmshDefines.h ../Geo/MVertex.h ../Geo/GPoint.h \
-  ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/GVertex.h ../Geo/SVector3.h \
-  ../Geo/MElement.h ../Geo/MEdge.h ../Common/Hash.h ../Geo/MFace.h \
-  ../Numeric/Numeric.h ../Common/Context.h ../Geo/ExtrudeParams.h \
-  ../Common/SmoothData.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h \
-  ../Geo/Pair.h ../Geo/GModel.h ../Geo/GFace.h ../Geo/GRegion.h Field.h \
-  ../Geo/Geo.h ../Geo/gmshSurface.h ../DataStr/List.h ../DataStr/Tree.h
+  ../Common/GmshMatrix.h BackgroundMesh.h ../Common/Context.h \
+  ../Common/OctreePost.h ../Common/Octree.h ../Common/OctreeInternals.h \
+  ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
+  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Common/GmshDefines.h \
+  ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h \
+  ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h \
+  ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h \
+  ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
+  ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
+  ../Geo/ExtrudeParams.h ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h \
+  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h \
+  ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GModel.h \
+  ../Geo/GVertex.h ../Geo/GEdge.h ../Geo/GFace.h ../Geo/GRegion.h \
+  ../Geo/GEntity.h ../Geo/MElement.h ../Geo/ExtrudeParams.h \
+  ../Geo/SBoundingBox3d.h Field.h ../Geo/Geo.h ../Geo/gmshSurface.h \
+  ../Geo/Pair.h ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h \
+  ../Geo/SVector3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint2.h \
+  ../Geo/ExtrudeParams.h
 BoundaryLayer.o: BoundaryLayer.cpp BoundaryLayer.h ../Geo/GModel.h \
   ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/SVector3.h \
-  ../Geo/MElement.h ../Geo/MEdge.h ../Common/Hash.h ../Geo/MFace.h \
+  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Common/GmshDefines.h \
+  ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h \
+  ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h \
+  ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h \
+  ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
+  ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
   ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
-  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Numeric/Numeric.h \
-  ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h ../Geo/GRegion.h \
-  ../Geo/ExtrudeParams.h meshGEdge.h meshGFace.h ../Common/Message.h \
-  ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \
-  ../Common/SmoothData.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h
+  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Geo/GFace.h \
+  ../Geo/GPoint.h ../Geo/GEntity.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h \
+  ../Geo/MElement.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
+  ../Geo/ExtrudeParams.h ../Geo/GRegion.h ../Geo/GEntity.h \
+  ../Geo/MElement.h ../Geo/ExtrudeParams.h ../Geo/SBoundingBox3d.h \
+  meshGEdge.h meshGFace.h ../Common/Message.h ../Common/Views.h \
+  ../Common/ColorTable.h ../Common/VertexArray.h ../Common/SmoothData.h \
+  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h
 BDS.o: BDS.cpp ../Numeric/Numeric.h ../Common/GmshMatrix.h BDS.h \
   ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h ../Geo/Range.h \
-  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Common/GmshDefines.h \
-  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/GVertex.h ../Geo/MVertex.h \
-  ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/MElement.h ../Geo/MEdge.h \
-  ../Common/Hash.h ../Geo/MFace.h ../Numeric/Numeric.h \
+  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
+  ../Common/GmshDefines.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h \
+  ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/MVertex.h \
+  ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/SVector3.h \
+  ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h \
+  ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
+  ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
   ../Common/Context.h ../DataStr/List.h ../Geo/ExtrudeParams.h \
-  ../Common/SmoothData.h ../Numeric/Numeric.h ../Geo/Pair.h \
+  ../Common/SmoothData.h ../Geo/MElement.h ../Geo/SPoint2.h \
+  ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h \
   ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \
   ../Common/SmoothData.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
   ../Common/Message.h
 HighOrder.o: HighOrder.cpp HighOrder.h ../Geo/GModel.h ../Geo/GVertex.h \
   ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Common/GmshDefines.h ../Geo/MVertex.h \
-  ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h ../Geo/SVector3.h \
-  ../Geo/MElement.h ../Geo/MEdge.h ../Common/Hash.h ../Geo/MFace.h \
+  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Common/GmshDefines.h \
+  ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h \
+  ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h \
+  ../Geo/SPoint3.h ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h \
+  ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h \
+  ../Common/Hash.h ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
   ../Numeric/Numeric.h ../Common/Context.h ../DataStr/List.h \
-  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Numeric/Numeric.h \
-  ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/Pair.h ../Geo/GRegion.h \
-  ../Geo/MElement.h ../Geo/MRep.h ../Common/VertexArray.h \
-  ../Common/Message.h ../Common/OS.h ../Common/Message.h ../Common/OS.h
+  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Geo/GFace.h \
+  ../Geo/GPoint.h ../Geo/GEntity.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h \
+  ../Geo/MElement.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
+  ../Geo/ExtrudeParams.h ../Geo/GRegion.h ../Geo/GEntity.h \
+  ../Geo/MElement.h ../Geo/ExtrudeParams.h ../Geo/SBoundingBox3d.h \
+  ../Geo/MRep.h ../Geo/GEdge.h ../Geo/GFace.h ../Geo/GRegion.h \
+  ../Geo/MVertex.h ../Geo/MEdge.h ../Geo/MElement.h \
+  ../Common/VertexArray.h ../Common/Message.h ../Common/OS.h
diff --git a/Parser/Makefile b/Parser/Makefile
index 43b11f6229762c769cf07775d2cfe9783c286858..381c355ffd02bba707ae9ee0fc876e1c848b906c 100644
--- a/Parser/Makefile
+++ b/Parser/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.118 2007-04-16 09:08:33 remacle Exp $
+# $Id: Makefile,v 1.119 2007-04-21 19:40:00 geuzaine Exp $
 #
 # Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 #
@@ -80,54 +80,61 @@ Gmsh.tab.o: Gmsh.tab.cpp ../Plugin/PluginManager.h ../Plugin/Plugin.h \
   ../Common/Options.h ../Common/Message.h ../Common/Views.h \
   ../Common/ColorTable.h ../DataStr/List.h ../Common/VertexArray.h \
   ../Common/SmoothData.h ../Numeric/Numeric.h ../Common/AdaptiveViews.h \
-  ../Common/GmshMatrix.h ../Common/GmshMatrix.h ../Parallel/ParUtil.h \
-  ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
-  ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h \
-  ../DataStr/Tree.h ../Numeric/Numeric.h ../Common/Context.h \
-  ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/Range.h \
-  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Common/GmshDefines.h \
-  ../Geo/MVertex.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
-  ../Geo/SVector3.h ../Geo/MElement.h ../Geo/MEdge.h ../Common/Hash.h \
-  ../Geo/MFace.h ../Numeric/Numeric.h ../Common/Context.h \
-  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Geo/GFace.h \
-  ../Geo/GEdgeLoop.h ../Geo/Pair.h ../Geo/GRegion.h ../Geo/Geo.h \
-  ../Geo/gmshSurface.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../Common/GmshMatrix.h ../Parallel/ParUtil.h ../Common/Gmsh.h \
+  ../Common/Message.h ../DataStr/Malloc.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../Common/Context.h ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h \
+  ../Geo/Range.h ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h \
+  ../Geo/SPoint3.h ../Common/GmshDefines.h ../Geo/MVertex.h \
+  ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/GEdge.h \
+  ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h ../Geo/SPoint3.h \
+  ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h ../Geo/MVertex.h \
+  ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h ../Common/Hash.h \
+  ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
+  ../Geo/ExtrudeParams.h ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h \
+  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h \
+  ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h \
+  ../Geo/GEntity.h ../Geo/MElement.h ../Geo/ExtrudeParams.h \
+  ../Geo/SBoundingBox3d.h ../Geo/Geo.h ../Geo/gmshSurface.h ../Geo/Pair.h \
+  ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \
+  ../Geo/SBoundingBox3d.h ../Geo/SPoint2.h ../Geo/ExtrudeParams.h \
   ../Geo/GeoInterpolation.h ../Geo/Geo.h ../Mesh/Generator.h \
-  ../Graphics/Draw.h ../DataStr/List.h ../Common/Views.h \
-  ../Common/Views.h ../Common/Options.h ../Common/Colors.h \
-  ../Common/Options.h Parser.h ../DataStr/List.h ../DataStr/Tree.h \
-  OpenFile.h ../Common/CommandLine.h FunctionManager.h \
-  ../Common/ColorTable.h ../Common/OS.h CreateFile.h ../Geo/gmshSurface.h \
-  ../Mesh/Field.h ../Common/Views.h ../Geo/Geo.h ../Geo/GEdge.h \
-  ../Common/OctreePost.h ../Common/Octree.h ../Common/OctreeInternals.h
+  ../Graphics/Draw.h ../Common/Colors.h ../Common/Options.h Parser.h \
+  OpenFile.h ../Common/CommandLine.h FunctionManager.h ../Common/OS.h \
+  CreateFile.h ../Mesh/Field.h ../Common/OctreePost.h ../Common/Octree.h \
+  ../Common/OctreeInternals.h ../Mesh/BackgroundMesh.h
 Gmsh.yy.o: Gmsh.yy.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
   ../Numeric/Numeric.h ../Geo/Geo.h ../Common/GmshDefines.h \
   ../Geo/gmshSurface.h ../Geo/Pair.h ../Geo/Range.h ../Geo/SPoint2.h \
-  ../Geo/SPoint3.h ../Geo/SVector3.h ../Geo/SBoundingBox3d.h \
-  ../DataStr/List.h ../DataStr/Tree.h ../Geo/ExtrudeParams.h \
-  ../Common/SmoothData.h ../Numeric/Numeric.h Gmsh.tab.hpp
+  ../Geo/SPoint3.h ../Geo/SVector3.h ../Geo/SPoint3.h \
+  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Geo/SPoint2.h \
+  ../Geo/ExtrudeParams.h ../Common/SmoothData.h Gmsh.tab.hpp
 OpenFile.o: OpenFile.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
   ../Geo/Geo.h ../Common/GmshDefines.h ../Geo/gmshSurface.h ../Geo/Pair.h \
   ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \
-  ../Geo/SBoundingBox3d.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Numeric/Numeric.h \
-  ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/MVertex.h \
-  ../Geo/GPoint.h ../Geo/GEdge.h ../Geo/MElement.h ../Geo/MEdge.h \
-  ../Common/Hash.h ../Geo/MFace.h ../Numeric/Numeric.h \
-  ../Common/Context.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/GRegion.h \
-  ../Numeric/Numeric.h ../Common/Context.h Parser.h ../DataStr/List.h \
-  ../DataStr/Tree.h OpenFile.h ../Common/CommandLine.h ../Common/Views.h \
-  ../Common/ColorTable.h ../Common/VertexArray.h ../Common/SmoothData.h \
-  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Graphics/ReadImg.h \
-  ../Common/OS.h ../Mesh/HighOrder.h ../Geo/GModel.h ../Common/GmshUI.h \
-  ../Graphics/Draw.h ../DataStr/List.h ../Common/Views.h \
-  ../Graphics/SelectBuffer.h ../Geo/GVertex.h ../Geo/GEdge.h \
-  ../Geo/GFace.h ../Geo/GRegion.h ../Fltk/GUI.h ../Fltk/Opengl_Window.h \
-  ../Fltk/Colorbar_Window.h ../Common/GmshUI.h ../Common/ColorTable.h \
+  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
+  ../Geo/SPoint2.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
+  ../Numeric/Numeric.h ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h \
+  ../Geo/Range.h ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h \
+  ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h \
+  ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h \
+  ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h ../Geo/MVertex.h \
+  ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h ../Common/Hash.h \
+  ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h ../Common/Context.h \
+  ../Geo/ExtrudeParams.h ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h \
+  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h \
+  ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h \
+  ../Geo/GEntity.h ../Geo/MElement.h ../Geo/ExtrudeParams.h \
+  ../Geo/SBoundingBox3d.h Parser.h OpenFile.h ../Common/CommandLine.h \
+  ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \
+  ../Common/SmoothData.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
+  ../Graphics/ReadImg.h ../Common/OS.h ../Mesh/HighOrder.h \
+  ../Common/GmshUI.h ../Graphics/Draw.h ../Graphics/SelectBuffer.h \
+  ../Fltk/GUI.h ../Fltk/Opengl_Window.h ../Fltk/Colorbar_Window.h \
   ../Fltk/Popup_Button.h ../Fltk/SpherePosition_Widget.h
 CreateFile.o: CreateFile.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
@@ -135,16 +142,25 @@ CreateFile.o: CreateFile.cpp ../Common/Gmsh.h ../Common/Message.h \
   OpenFile.h ../Common/Context.h ../Common/Options.h ../Geo/Geo.h \
   ../Common/GmshDefines.h ../Geo/gmshSurface.h ../Geo/Pair.h \
   ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \
-  ../Geo/SBoundingBox3d.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Numeric/Numeric.h \
-  ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/MVertex.h \
-  ../Geo/GPoint.h ../Geo/GEdge.h ../Geo/MElement.h ../Geo/MEdge.h \
-  ../Common/Hash.h ../Geo/MFace.h ../Numeric/Numeric.h \
-  ../Common/Context.h ../Geo/GFace.h ../Geo/GEdgeLoop.h ../Geo/GRegion.h \
-  ../Common/GmshUI.h ../Graphics/gl2ps.h ../Graphics/gl2gif.h \
-  ../Graphics/PixelBuffer.h ../Common/Gmsh.h ../Common/GmshUI.h \
-  ../Graphics/Draw.h ../DataStr/List.h ../Common/Views.h \
-  ../Common/ColorTable.h ../Common/VertexArray.h ../Common/SmoothData.h \
-  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Graphics/gl2jpeg.h \
-  ../Graphics/gl2png.h ../Graphics/gl2ppm.h ../Graphics/gl2yuv.h
+  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
+  ../Geo/SPoint2.h ../Geo/ExtrudeParams.h ../Common/SmoothData.h \
+  ../Numeric/Numeric.h ../Geo/GModel.h ../Geo/GVertex.h ../Geo/GEntity.h \
+  ../Geo/Range.h ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h \
+  ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/GPoint.h ../Geo/SPoint2.h \
+  ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/SVector3.h \
+  ../Geo/SPoint3.h ../Geo/SPoint2.h ../Geo/MElement.h ../Geo/MVertex.h \
+  ../Geo/MEdge.h ../Geo/MVertex.h ../Geo/SVector3.h ../Common/Hash.h \
+  ../Geo/MFace.h ../Geo/MVertex.h ../Geo/SVector3.h \
+  ../Geo/ExtrudeParams.h ../Geo/GFace.h ../Geo/GPoint.h ../Geo/GEntity.h \
+  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/MElement.h ../Geo/SPoint2.h \
+  ../Geo/SVector3.h ../Geo/Pair.h ../Geo/ExtrudeParams.h ../Geo/GRegion.h \
+  ../Geo/GEntity.h ../Geo/MElement.h ../Geo/ExtrudeParams.h \
+  ../Geo/SBoundingBox3d.h ../Common/GmshUI.h ../Graphics/gl2ps.h \
+  ../Graphics/gl2gif.h ../Graphics/PixelBuffer.h ../Graphics/Draw.h \
+  ../Common/Views.h ../Common/ColorTable.h ../Common/VertexArray.h \
+  ../Common/SmoothData.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
+  ../Graphics/gl2jpeg.h ../Graphics/PixelBuffer.h ../Graphics/gl2png.h \
+  ../Graphics/PixelBuffer.h ../Graphics/gl2ppm.h \
+  ../Graphics/PixelBuffer.h ../Graphics/gl2yuv.h \
+  ../Graphics/PixelBuffer.h
 FunctionManager.o: FunctionManager.cpp FunctionManager.h
diff --git a/Plugin/Makefile b/Plugin/Makefile
index b88b75928789acbc6a9f3ff7d2edb3c8610e2438..c70909bc91963e35bb6523071a6241704710f092 100644
--- a/Plugin/Makefile
+++ b/Plugin/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.120 2007-04-16 09:08:33 remacle Exp $
+# $Id: Makefile,v 1.121 2007-04-21 19:40:01 geuzaine Exp $
 #
 # Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 #
@@ -72,219 +72,200 @@ depend:
 Plugin.o: Plugin.cpp Plugin.h ../Common/Options.h ../Common/Message.h \
   ../Common/Views.h ../Common/ColorTable.h ../DataStr/List.h \
   ../Common/VertexArray.h ../Common/SmoothData.h ../Numeric/Numeric.h \
-  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/GmshMatrix.h \
-  PluginManager.h CutMap.h Levelset.h CutGrid.h StreamLines.h CutPlane.h \
-  CutParametric.h CutSphere.h Skin.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h Extract.h ExtractElements.h ExtractEdges.h \
-  HarmonicToTime.h ModulusPhase.h Integrate.h Gradient.h Curl.h \
-  Divergence.h Annotate.h Remove.h DecomposeInSimplex.h Smooth.h \
-  Transform.h Triangulate.h Warp.h Eigenvectors.h Eigenvalues.h Lambda2.h \
-  ../Numeric/Numeric.h Evaluate.h ../Common/OctreePost.h \
-  ../Common/Octree.h ../Common/OctreeInternals.h Probe.h \
-  ../Common/Context.h
+  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h PluginManager.h \
+  CutMap.h Levelset.h CutGrid.h StreamLines.h CutPlane.h CutParametric.h \
+  CutSphere.h Skin.h ../DataStr/Tree.h ../DataStr/avl.h Extract.h \
+  ExtractElements.h ExtractEdges.h HarmonicToTime.h ModulusPhase.h \
+  Integrate.h Gradient.h Curl.h Divergence.h Annotate.h Remove.h \
+  DecomposeInSimplex.h Smooth.h Transform.h Triangulate.h Warp.h \
+  Eigenvectors.h Eigenvalues.h Lambda2.h Evaluate.h \
+  ../Common/OctreePost.h ../Common/Octree.h ../Common/OctreeInternals.h \
+  Probe.h ../Common/Context.h
 Levelset.o: Levelset.cpp Levelset.h Plugin.h ../Common/Options.h \
   ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \
   ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothData.h \
   ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
-  ../Common/GmshMatrix.h DecomposeInSimplex.h ../DataStr/List.h \
-  ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h \
-  ../Graphics/Iso.h ../Common/Views.h ../Numeric/Numeric.h \
+  DecomposeInSimplex.h ../DataStr/Tools.h ../DataStr/List.h \
+  ../DataStr/Tree.h ../DataStr/avl.h ../Graphics/Iso.h \
   ../Common/Context.h ../DataStr/Malloc.h
 CutPlane.o: CutPlane.cpp CutPlane.h Levelset.h Plugin.h \
   ../Common/Options.h ../Common/Message.h ../Common/Views.h \
   ../Common/ColorTable.h ../DataStr/List.h ../Common/VertexArray.h \
   ../Common/SmoothData.h ../Numeric/Numeric.h ../Common/AdaptiveViews.h \
-  ../Common/GmshMatrix.h ../Common/GmshMatrix.h ../DataStr/List.h \
-  ../Common/Context.h ../Common/GmshUI.h ../Graphics/Draw.h \
-  ../DataStr/List.h ../Common/Views.h
+  ../Common/GmshMatrix.h ../Common/Context.h ../Common/GmshUI.h \
+  ../Graphics/Draw.h
 CutSphere.o: CutSphere.cpp CutSphere.h Levelset.h Plugin.h \
   ../Common/Options.h ../Common/Message.h ../Common/Views.h \
   ../Common/ColorTable.h ../DataStr/List.h ../Common/VertexArray.h \
   ../Common/SmoothData.h ../Numeric/Numeric.h ../Common/AdaptiveViews.h \
-  ../Common/GmshMatrix.h ../Common/GmshMatrix.h ../DataStr/List.h \
-  ../Common/Context.h ../Common/GmshUI.h ../Graphics/Draw.h \
-  ../DataStr/List.h ../Common/Views.h
+  ../Common/GmshMatrix.h ../Common/Context.h ../Common/GmshUI.h \
+  ../Graphics/Draw.h
 CutMap.o: CutMap.cpp CutMap.h Levelset.h Plugin.h ../Common/Options.h \
   ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \
   ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothData.h \
   ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
-  ../Common/GmshMatrix.h ../DataStr/List.h ../Common/Context.h
+  ../Common/Context.h
 Smooth.o: Smooth.cpp Plugin.h ../Common/Options.h ../Common/Message.h \
   ../Common/Views.h ../Common/ColorTable.h ../DataStr/List.h \
   ../Common/VertexArray.h ../Common/SmoothData.h ../Numeric/Numeric.h \
-  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/GmshMatrix.h \
-  Smooth.h ../DataStr/List.h ../Common/Context.h
+  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h Smooth.h \
+  ../Common/Context.h
 CutParametric.o: CutParametric.cpp ../Common/OctreePost.h \
   ../Common/Octree.h ../Common/OctreeInternals.h CutParametric.h Plugin.h \
   ../Common/Options.h ../Common/Message.h ../Common/Views.h \
   ../Common/ColorTable.h ../DataStr/List.h ../Common/VertexArray.h \
   ../Common/SmoothData.h ../Numeric/Numeric.h ../Common/AdaptiveViews.h \
-  ../Common/GmshMatrix.h ../Common/GmshMatrix.h ../DataStr/List.h \
-  ../Common/Context.h ../Common/GmshUI.h ../Graphics/Draw.h \
-  ../DataStr/List.h ../Common/Views.h
+  ../Common/GmshMatrix.h ../Common/Context.h ../Common/GmshUI.h \
+  ../Graphics/Draw.h
 Lambda2.o: Lambda2.cpp Plugin.h ../Common/Options.h ../Common/Message.h \
   ../Common/Views.h ../Common/ColorTable.h ../DataStr/List.h \
   ../Common/VertexArray.h ../Common/SmoothData.h ../Numeric/Numeric.h \
-  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/GmshMatrix.h \
-  Lambda2.h ../DataStr/List.h ../Numeric/Numeric.h ../Common/Context.h \
-  ../Common/ShapeFunctions.h
+  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h Lambda2.h \
+  ../Common/Context.h ../Common/ShapeFunctions.h
 Eigenvectors.o: Eigenvectors.cpp Plugin.h ../Common/Options.h \
   ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \
   ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothData.h \
   ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
-  ../Common/GmshMatrix.h Eigenvectors.h ../DataStr/List.h \
-  ../Common/Context.h ../DataStr/Malloc.h ../Numeric/Numeric.h \
+  Eigenvectors.h ../Common/Context.h ../DataStr/Malloc.h \
   ../Numeric/EigSolve.h
 Eigenvalues.o: Eigenvalues.cpp Plugin.h ../Common/Options.h \
   ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \
   ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothData.h \
   ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
-  ../Common/GmshMatrix.h Eigenvalues.h ../DataStr/List.h \
-  ../Common/Context.h ../DataStr/Malloc.h ../Numeric/Numeric.h
+  Eigenvalues.h ../Common/Context.h ../DataStr/Malloc.h
 StreamLines.o: StreamLines.cpp ../Common/OctreePost.h ../Common/Octree.h \
   ../Common/OctreeInternals.h StreamLines.h Plugin.h ../Common/Options.h \
   ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \
   ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothData.h \
   ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
-  ../Common/GmshMatrix.h ../DataStr/List.h ../Common/Context.h \
-  ../Common/GmshUI.h ../Graphics/Draw.h ../DataStr/List.h \
-  ../Common/Views.h
+  ../Common/Context.h ../Common/GmshUI.h ../Graphics/Draw.h
 CutGrid.o: CutGrid.cpp ../Common/OctreePost.h ../Common/Octree.h \
   ../Common/OctreeInternals.h CutGrid.h Plugin.h ../Common/Options.h \
   ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \
   ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothData.h \
   ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
-  ../Common/GmshMatrix.h ../DataStr/List.h ../Common/Context.h \
-  ../Common/GmshUI.h ../Graphics/Draw.h ../DataStr/List.h \
-  ../Common/Views.h
+  ../Common/Context.h ../Common/GmshUI.h ../Graphics/Draw.h
 Transform.o: Transform.cpp Plugin.h ../Common/Options.h \
   ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \
   ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothData.h \
   ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
-  ../Common/GmshMatrix.h Transform.h ../DataStr/List.h \
-  ../Common/Context.h
+  Transform.h ../Common/Context.h
 Triangulate.o: Triangulate.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
   ../DataStr/avl.h ../DataStr/Tools.h ../DataStr/List.h ../DataStr/Tree.h \
-  Plugin.h ../Common/Options.h ../Common/Message.h ../Common/Views.h \
-  ../Common/ColorTable.h ../Common/VertexArray.h ../Common/SmoothData.h \
-  ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
-  ../Common/GmshMatrix.h Triangulate.h ../Common/Context.h \
-  ../DataStr/Malloc.h ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/gmshFace.h \
+  Plugin.h ../Common/Options.h ../Common/Views.h ../Common/ColorTable.h \
+  ../Common/VertexArray.h ../Common/SmoothData.h ../Numeric/Numeric.h \
+  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h Triangulate.h \
+  ../Common/Context.h ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/gmshFace.h \
   ../Geo/Geo.h ../Common/GmshDefines.h ../Geo/gmshSurface.h ../Geo/Pair.h \
-  ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SVector3.h \
-  ../Geo/SBoundingBox3d.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Geo/GFace.h \
-  ../Geo/GPoint.h ../Geo/GEntity.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h \
-  ../Geo/GVertex.h ../Geo/MVertex.h ../Geo/MElement.h ../Geo/MEdge.h \
-  ../Common/Hash.h ../Geo/MFace.h ../Numeric/Numeric.h \
-  ../Common/Context.h ../Geo/gmshVertex.h
+  ../Geo/Range.h ../Geo/SPoint2.h ../Geo/SPoint3.h ../Geo/SVector3.h \
+  ../Geo/SPoint3.h ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h \
+  ../Geo/SPoint2.h ../Geo/ExtrudeParams.h ../Geo/GFace.h ../Geo/GPoint.h \
+  ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
+  ../Geo/SBoundingBox3d.h ../Geo/GEdgeLoop.h ../Geo/GEdge.h \
+  ../Geo/GEntity.h ../Geo/GVertex.h ../Geo/GEntity.h ../Geo/MVertex.h \
+  ../Geo/GPoint.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/SPoint3.h \
+  ../Geo/SPoint2.h ../Geo/MElement.h ../Geo/MVertex.h ../Geo/MEdge.h \
+  ../Geo/MVertex.h ../Geo/SVector3.h ../Common/Hash.h ../Geo/MFace.h \
+  ../Geo/MVertex.h ../Geo/SVector3.h ../Geo/ExtrudeParams.h \
+  ../Geo/MElement.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
+  ../Geo/ExtrudeParams.h ../Geo/gmshVertex.h ../Geo/Geo.h \
+  ../Geo/GVertex.h ../Geo/Range.h
 Warp.o: Warp.cpp Plugin.h ../Common/Options.h ../Common/Message.h \
   ../Common/Views.h ../Common/ColorTable.h ../DataStr/List.h \
   ../Common/VertexArray.h ../Common/SmoothData.h ../Numeric/Numeric.h \
-  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/GmshMatrix.h \
-  Warp.h ../DataStr/List.h ../Common/Context.h ../Numeric/Numeric.h \
-  ../Common/SmoothData.h
+  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h Warp.h \
+  ../Common/Context.h
 Skin.o: Skin.cpp Plugin.h ../Common/Options.h ../Common/Message.h \
   ../Common/Views.h ../Common/ColorTable.h ../DataStr/List.h \
   ../Common/VertexArray.h ../Common/SmoothData.h ../Numeric/Numeric.h \
-  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/GmshMatrix.h \
-  Skin.h ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h \
-  ../Common/Context.h ../DataStr/Malloc.h
+  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h Skin.h \
+  ../DataStr/Tree.h ../DataStr/avl.h ../Common/Context.h \
+  ../DataStr/Malloc.h
 Extract.o: Extract.cpp Plugin.h ../Common/Options.h ../Common/Message.h \
   ../Common/Views.h ../Common/ColorTable.h ../DataStr/List.h \
   ../Common/VertexArray.h ../Common/SmoothData.h ../Numeric/Numeric.h \
-  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/GmshMatrix.h \
-  Extract.h ../DataStr/List.h ../Common/Context.h ../DataStr/Malloc.h
+  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h Extract.h \
+  ../Common/Context.h ../DataStr/Malloc.h
 ExtractElements.o: ExtractElements.cpp Plugin.h ../Common/Options.h \
   ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \
   ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothData.h \
   ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
-  ../Common/GmshMatrix.h ExtractElements.h ../DataStr/List.h \
-  ../Common/Context.h ../DataStr/Malloc.h
+  ExtractElements.h ../Common/Context.h ../DataStr/Malloc.h
 ExtractEdges.o: ExtractEdges.cpp Plugin.h ../Common/Options.h \
   ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \
   ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothData.h \
   ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
-  ../Common/GmshMatrix.h ExtractEdges.h ../DataStr/List.h \
-  ../DataStr/Tree.h ../DataStr/avl.h ../Common/Context.h \
+  ExtractEdges.h ../DataStr/Tree.h ../DataStr/avl.h ../Common/Context.h \
   ../DataStr/Malloc.h ../Mesh/BDS.h ../Geo/GFace.h ../Geo/GPoint.h \
   ../Geo/GEntity.h ../Geo/Range.h ../Geo/SPoint3.h \
-  ../Geo/SBoundingBox3d.h ../Common/GmshDefines.h ../Geo/GEdgeLoop.h \
-  ../Geo/GEdge.h ../Geo/GVertex.h ../Geo/MVertex.h ../Geo/SPoint2.h \
-  ../Geo/SVector3.h ../Geo/MElement.h ../Geo/MEdge.h ../Common/Hash.h \
-  ../Geo/MFace.h ../Numeric/Numeric.h ../Common/Context.h \
-  ../Geo/ExtrudeParams.h ../Common/SmoothData.h ../Geo/Pair.h \
-  ../Common/Views.h
+  ../Geo/SBoundingBox3d.h ../Geo/SPoint3.h ../Common/GmshDefines.h \
+  ../Geo/GEdgeLoop.h ../Geo/GEdge.h ../Geo/GEntity.h ../Geo/GVertex.h \
+  ../Geo/GEntity.h ../Geo/MVertex.h ../Geo/SPoint3.h ../Geo/GPoint.h \
+  ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/SPoint3.h ../Geo/SPoint3.h \
+  ../Geo/SPoint2.h ../Geo/MElement.h ../Geo/MVertex.h ../Geo/MEdge.h \
+  ../Geo/MVertex.h ../Geo/SVector3.h ../Common/Hash.h ../Geo/MFace.h \
+  ../Geo/MVertex.h ../Geo/SVector3.h ../Geo/ExtrudeParams.h \
+  ../Geo/MElement.h ../Geo/SPoint2.h ../Geo/SVector3.h ../Geo/Pair.h \
+  ../Geo/ExtrudeParams.h
 DecomposeInSimplex.o: DecomposeInSimplex.cpp Plugin.h ../Common/Options.h \
   ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \
   ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothData.h \
   ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
-  ../Common/GmshMatrix.h DecomposeInSimplex.h ../DataStr/List.h \
-  ../DataStr/Tree.h ../DataStr/avl.h ../Common/Context.h \
-  ../DataStr/Malloc.h ../Numeric/Numeric.h
+  DecomposeInSimplex.h ../DataStr/Tree.h ../DataStr/avl.h \
+  ../Common/Context.h ../DataStr/Malloc.h
 Evaluate.o: Evaluate.cpp Plugin.h ../Common/Options.h ../Common/Message.h \
   ../Common/Views.h ../Common/ColorTable.h ../DataStr/List.h \
   ../Common/VertexArray.h ../Common/SmoothData.h ../Numeric/Numeric.h \
-  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/GmshMatrix.h \
-  Evaluate.h ../Common/OctreePost.h ../Common/Octree.h \
-  ../Common/OctreeInternals.h ../DataStr/List.h ../Common/Context.h \
-  ../Numeric/Numeric.h
+  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h Evaluate.h \
+  ../Common/OctreePost.h ../Common/Octree.h ../Common/OctreeInternals.h \
+  ../Common/Context.h
 Integrate.o: Integrate.cpp Plugin.h ../Common/Options.h \
   ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \
   ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothData.h \
   ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
-  ../Common/GmshMatrix.h Integrate.h ../DataStr/List.h \
-  ../Common/Context.h ../Numeric/Numeric.h ../Common/ShapeFunctions.h
+  Integrate.h ../Common/Context.h ../Common/ShapeFunctions.h
 Gradient.o: Gradient.cpp Plugin.h ../Common/Options.h ../Common/Message.h \
   ../Common/Views.h ../Common/ColorTable.h ../DataStr/List.h \
   ../Common/VertexArray.h ../Common/SmoothData.h ../Numeric/Numeric.h \
-  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/GmshMatrix.h \
-  Gradient.h ../DataStr/List.h ../Common/Context.h ../Numeric/Numeric.h \
-  ../Common/ShapeFunctions.h
+  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h Gradient.h \
+  ../Common/Context.h ../Common/ShapeFunctions.h
 Curl.o: Curl.cpp Plugin.h ../Common/Options.h ../Common/Message.h \
   ../Common/Views.h ../Common/ColorTable.h ../DataStr/List.h \
   ../Common/VertexArray.h ../Common/SmoothData.h ../Numeric/Numeric.h \
-  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/GmshMatrix.h \
-  Curl.h ../DataStr/List.h ../Common/Context.h ../Numeric/Numeric.h \
-  ../Common/ShapeFunctions.h
+  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h Curl.h \
+  ../Common/Context.h ../Common/ShapeFunctions.h
 Divergence.o: Divergence.cpp Plugin.h ../Common/Options.h \
   ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \
   ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothData.h \
   ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
-  ../Common/GmshMatrix.h Divergence.h ../DataStr/List.h \
-  ../Common/Context.h ../Numeric/Numeric.h ../Common/ShapeFunctions.h
+  Divergence.h ../Common/Context.h ../Common/ShapeFunctions.h
 Annotate.o: Annotate.cpp Plugin.h ../Common/Options.h ../Common/Message.h \
   ../Common/Views.h ../Common/ColorTable.h ../DataStr/List.h \
   ../Common/VertexArray.h ../Common/SmoothData.h ../Numeric/Numeric.h \
-  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/GmshMatrix.h \
-  Annotate.h ../DataStr/List.h ../Common/Context.h ../Numeric/Numeric.h \
-  ../Common/GmshUI.h ../Fltk/GUI.h ../Fltk/Opengl_Window.h \
-  ../Fltk/Colorbar_Window.h ../Common/GmshUI.h ../Common/ColorTable.h \
+  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h Annotate.h \
+  ../Common/Context.h ../Common/GmshUI.h ../Fltk/GUI.h \
+  ../Fltk/Opengl_Window.h ../Fltk/Colorbar_Window.h \
   ../Fltk/Popup_Button.h ../Fltk/SpherePosition_Widget.h \
-  ../Graphics/Draw.h ../DataStr/List.h ../Common/Views.h
+  ../Graphics/Draw.h
 Remove.o: Remove.cpp Plugin.h ../Common/Options.h ../Common/Message.h \
   ../Common/Views.h ../Common/ColorTable.h ../DataStr/List.h \
   ../Common/VertexArray.h ../Common/SmoothData.h ../Numeric/Numeric.h \
-  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h ../Common/GmshMatrix.h \
-  Remove.h ../DataStr/List.h ../Common/Context.h ../Numeric/Numeric.h
+  ../Common/AdaptiveViews.h ../Common/GmshMatrix.h Remove.h \
+  ../Common/Context.h
 Probe.o: Probe.cpp Probe.h Plugin.h ../Common/Options.h \
   ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \
   ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothData.h \
   ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
-  ../Common/GmshMatrix.h ../DataStr/List.h ../Common/Context.h \
-  ../Common/GmshUI.h ../Graphics/Draw.h ../DataStr/List.h \
-  ../Common/Views.h ../Common/OctreePost.h ../Common/Octree.h \
-  ../Common/OctreeInternals.h
+  ../Common/Context.h ../Common/GmshUI.h ../Graphics/Draw.h \
+  ../Common/OctreePost.h ../Common/Octree.h ../Common/OctreeInternals.h
 HarmonicToTime.o: HarmonicToTime.cpp Plugin.h ../Common/Options.h \
   ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \
   ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothData.h \
   ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
-  ../Common/GmshMatrix.h HarmonicToTime.h ../DataStr/List.h \
-  ../Common/Context.h ../Numeric/Numeric.h
+  HarmonicToTime.h ../Common/Context.h
 ModulusPhase.o: ModulusPhase.cpp Plugin.h ../Common/Options.h \
   ../Common/Message.h ../Common/Views.h ../Common/ColorTable.h \
   ../DataStr/List.h ../Common/VertexArray.h ../Common/SmoothData.h \
   ../Numeric/Numeric.h ../Common/AdaptiveViews.h ../Common/GmshMatrix.h \
-  ../Common/GmshMatrix.h ModulusPhase.h ../DataStr/List.h \
-  ../Common/Context.h ../Numeric/Numeric.h
+  ModulusPhase.h ../Common/Context.h
diff --git a/contrib/Netgen/Makefile b/contrib/Netgen/Makefile
index 42294a1d07aa16e8c4698a26ec1d0ef120311a37..6ffb1230d727a5aec992c9b895aedbf8cdde59ab 100644
--- a/contrib/Netgen/Makefile
+++ b/contrib/Netgen/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.15 2007-04-16 09:08:34 remacle Exp $
+# $Id: Makefile,v 1.16 2007-04-21 19:40:01 geuzaine Exp $
 #
 # Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 #
@@ -334,9 +334,10 @@ meshtool.o: libsrc/meshing/meshtool.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
   libsrc/meshing/specials.hpp libsrc/include/csg.hpp \
-  libsrc/include/../csg/csg.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/../csg/surface.hpp \
-  libsrc/include/../csg/solid.hpp libsrc/include/../csg/identify.hpp \
+  libsrc/include/../csg/csg.hpp libsrc/include/../gprim/gprim.hpp \
+  libsrc/include/meshing.hpp libsrc/include/../meshing/meshing.hpp \
+  libsrc/include/../csg/surface.hpp libsrc/include/../csg/solid.hpp \
+  libsrc/include/../csg/identify.hpp \
   libsrc/include/../csg/singularref.hpp libsrc/include/../csg/csgeom.hpp \
   libsrc/include/../csg/triapprox.hpp libsrc/include/../csg/algprim.hpp \
   libsrc/include/../csg/brick.hpp libsrc/include/../csg/spline3d.hpp \
@@ -347,7 +348,7 @@ meshtool.o: libsrc/meshing/meshtool.cpp libsrc/include/mystdlib.h \
   libsrc/include/../csg/revolution.hpp libsrc/include/../csg/specpoin.hpp \
   libsrc/include/../csg/edgeflw.hpp libsrc/include/../csg/meshsurf.hpp \
   libsrc/include/geometry2d.hpp libsrc/include/../geom2d/geometry2d.hpp \
-  libsrc/include/../geom2d/spline2d.hpp \
+  libsrc/include/../gprim/gprim.hpp libsrc/include/../geom2d/spline2d.hpp \
   libsrc/include/../geom2d/splinegeometry2.hpp \
   libsrc/include/../geom2d/geom2dmesh.hpp
 refine.o: libsrc/meshing/refine.cpp libsrc/include/mystdlib.h \
@@ -475,7 +476,7 @@ improve3.o: libsrc/meshing/improve3.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/curvedelems.hpp libsrc/meshing/bisect.hpp \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
-  libsrc/meshing/specials.hpp
+  libsrc/meshing/specials.hpp libsrc/include/../opti/opti.hpp
 smoothing3.o: libsrc/meshing/smoothing3.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -517,7 +518,7 @@ smoothing3.o: libsrc/meshing/smoothing3.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/curvedelems.hpp libsrc/meshing/bisect.hpp \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
-  libsrc/meshing/specials.hpp
+  libsrc/meshing/specials.hpp libsrc/include/../opti/opti.hpp
 adfront3.o: libsrc/meshing/adfront3.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -731,7 +732,7 @@ improve2.o: libsrc/meshing/improve2.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/curvedelems.hpp libsrc/meshing/bisect.hpp \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
-  libsrc/meshing/specials.hpp
+  libsrc/meshing/specials.hpp libsrc/include/../opti/opti.hpp
 smoothing2.o: libsrc/meshing/smoothing2.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -773,7 +774,7 @@ smoothing2.o: libsrc/meshing/smoothing2.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/curvedelems.hpp libsrc/meshing/bisect.hpp \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
-  libsrc/meshing/specials.hpp
+  libsrc/meshing/specials.hpp libsrc/include/../opti/opti.hpp
 adfront2.o: libsrc/meshing/adfront2.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -1321,7 +1322,7 @@ improve2gen.o: libsrc/meshing/improve2gen.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/curvedelems.hpp libsrc/meshing/bisect.hpp \
   libsrc/meshing/clusters.hpp libsrc/meshing/meshfunc.hpp \
   libsrc/meshing/hprefinement.hpp libsrc/meshing/boundarylayer.hpp \
-  libsrc/meshing/specials.hpp
+  libsrc/meshing/specials.hpp libsrc/include/../opti/opti.hpp
 delaunay.o: libsrc/meshing/delaunay.cpp libsrc/include/mystdlib.h \
   libsrc/meshing/meshing.hpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mydefs.hpp \
@@ -1743,7 +1744,8 @@ nglib.o: libsrc/interface/nglib.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
+  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -1781,12 +1783,13 @@ nglib.o: libsrc/interface/nglib.cpp libsrc/include/mystdlib.h \
   libsrc/include/../csg/revolution.hpp libsrc/include/../csg/specpoin.hpp \
   libsrc/include/../csg/edgeflw.hpp libsrc/include/../csg/meshsurf.hpp \
   libsrc/include/stlgeom.hpp libsrc/include/../stlgeom/stlgeom.hpp \
+  libsrc/include/../gprim/gprim.hpp \
   libsrc/include/../stlgeom/stltopology.hpp \
   libsrc/include/../stlgeom/stltool.hpp \
   libsrc/include/../stlgeom/stlline.hpp \
   libsrc/include/../stlgeom/meshstlsurface.hpp \
   libsrc/include/geometry2d.hpp libsrc/include/../geom2d/geometry2d.hpp \
-  libsrc/include/../geom2d/spline2d.hpp \
+  libsrc/include/../gprim/gprim.hpp libsrc/include/../geom2d/spline2d.hpp \
   libsrc/include/../geom2d/splinegeometry2.hpp \
   libsrc/include/../geom2d/geom2dmesh.hpp libsrc/interface/nglib.h
 geomtest3d.o: libsrc/gprim/geomtest3d.cpp libsrc/include/mystdlib.h \
@@ -2018,7 +2021,8 @@ algprim.o: libsrc/csg/algprim.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
+  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -2085,7 +2089,8 @@ brick.o: libsrc/csg/brick.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
+  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -2148,8 +2153,9 @@ manifold.o: libsrc/csg/manifold.cpp libsrc/include/csg.hpp \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/linalg.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/../linalg/vector.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
+  libsrc/include/linalg.hpp libsrc/include/../linalg/linalg.hpp \
+  libsrc/include/../linalg/vector.hpp \
   libsrc/include/../linalg/densemat.hpp \
   libsrc/include/../linalg/polynomial.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
@@ -2214,8 +2220,9 @@ bspline2d.o: libsrc/csg/bspline2d.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/linalg.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/../linalg/vector.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
+  libsrc/include/linalg.hpp libsrc/include/../linalg/linalg.hpp \
+  libsrc/include/../linalg/vector.hpp \
   libsrc/include/../linalg/densemat.hpp \
   libsrc/include/../linalg/polynomial.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
@@ -2280,8 +2287,9 @@ meshsurf.o: libsrc/csg/meshsurf.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/linalg.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/../linalg/vector.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
+  libsrc/include/linalg.hpp libsrc/include/../linalg/linalg.hpp \
+  libsrc/include/../linalg/vector.hpp \
   libsrc/include/../linalg/densemat.hpp \
   libsrc/include/../linalg/polynomial.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
@@ -2349,7 +2357,8 @@ csgeom.o: libsrc/csg/csgeom.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
+  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -2416,7 +2425,8 @@ polyhedra.o: libsrc/csg/polyhedra.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
+  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -2479,8 +2489,9 @@ curve2d.o: libsrc/csg/curve2d.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/linalg.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/../linalg/vector.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
+  libsrc/include/linalg.hpp libsrc/include/../linalg/linalg.hpp \
+  libsrc/include/../linalg/vector.hpp \
   libsrc/include/../linalg/densemat.hpp \
   libsrc/include/../linalg/polynomial.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
@@ -2548,7 +2559,8 @@ singularref.o: libsrc/csg/singularref.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
+  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -2639,8 +2651,9 @@ edgeflw.o: libsrc/csg/edgeflw.cpp libsrc/include/mystdlib.h \
   libsrc/include/../meshing/hprefinement.hpp \
   libsrc/include/../meshing/boundarylayer.hpp \
   libsrc/include/../meshing/specials.hpp libsrc/include/csg.hpp \
-  libsrc/include/../csg/csg.hpp libsrc/include/../csg/surface.hpp \
-  libsrc/include/../csg/solid.hpp libsrc/include/../csg/identify.hpp \
+  libsrc/include/../csg/csg.hpp libsrc/include/../gprim/gprim.hpp \
+  libsrc/include/../csg/surface.hpp libsrc/include/../csg/solid.hpp \
+  libsrc/include/../csg/identify.hpp \
   libsrc/include/../csg/singularref.hpp libsrc/include/../csg/csgeom.hpp \
   libsrc/include/../csg/triapprox.hpp libsrc/include/../csg/algprim.hpp \
   libsrc/include/../csg/brick.hpp libsrc/include/../csg/spline3d.hpp \
@@ -2680,7 +2693,8 @@ solid.o: libsrc/csg/solid.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
+  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -2744,8 +2758,9 @@ explicitcurve2d.o: libsrc/csg/explicitcurve2d.cpp \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/linalg.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/../linalg/vector.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
+  libsrc/include/linalg.hpp libsrc/include/../linalg/linalg.hpp \
+  libsrc/include/../linalg/vector.hpp \
   libsrc/include/../linalg/densemat.hpp \
   libsrc/include/../linalg/polynomial.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
@@ -2838,8 +2853,9 @@ specpoin.o: libsrc/csg/specpoin.cpp libsrc/include/mystdlib.h \
   libsrc/include/../meshing/hprefinement.hpp \
   libsrc/include/../meshing/boundarylayer.hpp \
   libsrc/include/../meshing/specials.hpp libsrc/include/csg.hpp \
-  libsrc/include/../csg/csg.hpp libsrc/include/../csg/surface.hpp \
-  libsrc/include/../csg/solid.hpp libsrc/include/../csg/identify.hpp \
+  libsrc/include/../csg/csg.hpp libsrc/include/../gprim/gprim.hpp \
+  libsrc/include/../csg/surface.hpp libsrc/include/../csg/solid.hpp \
+  libsrc/include/../csg/identify.hpp \
   libsrc/include/../csg/singularref.hpp libsrc/include/../csg/csgeom.hpp \
   libsrc/include/../csg/triapprox.hpp libsrc/include/../csg/algprim.hpp \
   libsrc/include/../csg/brick.hpp libsrc/include/../csg/spline3d.hpp \
@@ -2879,7 +2895,8 @@ gencyl.o: libsrc/csg/gencyl.cpp libsrc/include/linalg.hpp \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
+  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -2946,7 +2963,8 @@ revolution.o: libsrc/csg/revolution.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
+  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -3012,7 +3030,8 @@ genmesh.o: libsrc/csg/genmesh.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
+  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -3078,7 +3097,8 @@ spline3d.o: libsrc/csg/spline3d.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
+  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -3141,8 +3161,9 @@ surface.o: libsrc/csg/surface.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/linalg.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/../linalg/vector.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
+  libsrc/include/linalg.hpp libsrc/include/../linalg/linalg.hpp \
+  libsrc/include/../linalg/vector.hpp \
   libsrc/include/../linalg/densemat.hpp \
   libsrc/include/../linalg/polynomial.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
@@ -3180,7 +3201,8 @@ surface.o: libsrc/csg/surface.cpp libsrc/include/mystdlib.h \
   libsrc/include/../csg/gencyl.hpp libsrc/include/../csg/polyhedra.hpp \
   libsrc/include/../csg/extrusion.hpp \
   libsrc/include/../csg/revolution.hpp libsrc/include/../csg/specpoin.hpp \
-  libsrc/include/../csg/edgeflw.hpp libsrc/include/../csg/meshsurf.hpp
+  libsrc/include/../csg/edgeflw.hpp libsrc/include/../csg/meshsurf.hpp \
+  libsrc/include/../linalg/linalg.hpp
 identify.o: libsrc/csg/identify.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -3210,7 +3232,8 @@ identify.o: libsrc/csg/identify.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
+  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -3276,7 +3299,8 @@ triapprox.o: libsrc/csg/triapprox.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
+  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -3339,8 +3363,9 @@ geom2dmesh.o: libsrc/geom2d/geom2dmesh.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/linalg.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/../linalg/vector.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
+  libsrc/include/linalg.hpp libsrc/include/../linalg/linalg.hpp \
+  libsrc/include/../linalg/vector.hpp \
   libsrc/include/../linalg/densemat.hpp \
   libsrc/include/../linalg/polynomial.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
@@ -3380,7 +3405,7 @@ geom2dmesh.o: libsrc/geom2d/geom2dmesh.cpp libsrc/include/mystdlib.h \
   libsrc/include/../csg/revolution.hpp libsrc/include/../csg/specpoin.hpp \
   libsrc/include/../csg/edgeflw.hpp libsrc/include/../csg/meshsurf.hpp \
   libsrc/include/geometry2d.hpp libsrc/include/../geom2d/geometry2d.hpp \
-  libsrc/include/../geom2d/spline2d.hpp \
+  libsrc/include/../gprim/gprim.hpp libsrc/include/../geom2d/spline2d.hpp \
   libsrc/include/../geom2d/splinegeometry2.hpp \
   libsrc/include/../geom2d/geom2dmesh.hpp
 spline2d.o: libsrc/geom2d/spline2d.cpp libsrc/include/mystdlib.h \
@@ -3409,8 +3434,9 @@ spline2d.o: libsrc/geom2d/spline2d.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/linalg.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/../linalg/vector.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
+  libsrc/include/linalg.hpp libsrc/include/../linalg/linalg.hpp \
+  libsrc/include/../linalg/vector.hpp \
   libsrc/include/../linalg/densemat.hpp \
   libsrc/include/../linalg/polynomial.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
@@ -3449,7 +3475,7 @@ spline2d.o: libsrc/geom2d/spline2d.cpp libsrc/include/mystdlib.h \
   libsrc/include/../csg/extrusion.hpp \
   libsrc/include/../csg/revolution.hpp libsrc/include/../csg/specpoin.hpp \
   libsrc/include/../csg/edgeflw.hpp libsrc/include/../csg/meshsurf.hpp \
-  libsrc/geom2d/spline2d.hpp
+  libsrc/include/../linalg/linalg.hpp libsrc/geom2d/spline2d.hpp
 splinegeometry2.o: libsrc/geom2d/splinegeometry2.cpp \
   libsrc/include/mystdlib.h libsrc/include/csg.hpp \
   libsrc/include/../csg/csg.hpp libsrc/include/myadt.hpp \
@@ -3477,8 +3503,9 @@ splinegeometry2.o: libsrc/geom2d/splinegeometry2.cpp \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/linalg.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/../linalg/vector.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
+  libsrc/include/linalg.hpp libsrc/include/../linalg/linalg.hpp \
+  libsrc/include/../linalg/vector.hpp \
   libsrc/include/../linalg/densemat.hpp \
   libsrc/include/../linalg/polynomial.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
@@ -3517,7 +3544,8 @@ splinegeometry2.o: libsrc/geom2d/splinegeometry2.cpp \
   libsrc/include/../csg/extrusion.hpp \
   libsrc/include/../csg/revolution.hpp libsrc/include/../csg/specpoin.hpp \
   libsrc/include/../csg/edgeflw.hpp libsrc/include/../csg/meshsurf.hpp \
-  libsrc/geom2d/spline2d.hpp libsrc/geom2d/splinegeometry2.hpp
+  libsrc/include/../linalg/linalg.hpp libsrc/geom2d/spline2d.hpp \
+  libsrc/geom2d/splinegeometry2.hpp
 genmesh2d.o: libsrc/geom2d/genmesh2d.cpp libsrc/include/mystdlib.h \
   libsrc/include/csg.hpp libsrc/include/../csg/csg.hpp \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
@@ -3544,8 +3572,9 @@ genmesh2d.o: libsrc/geom2d/genmesh2d.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/linalg.hpp \
-  libsrc/include/../linalg/linalg.hpp libsrc/include/../linalg/vector.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
+  libsrc/include/linalg.hpp libsrc/include/../linalg/linalg.hpp \
+  libsrc/include/../linalg/vector.hpp \
   libsrc/include/../linalg/densemat.hpp \
   libsrc/include/../linalg/polynomial.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
@@ -3585,7 +3614,7 @@ genmesh2d.o: libsrc/geom2d/genmesh2d.cpp libsrc/include/mystdlib.h \
   libsrc/include/../csg/revolution.hpp libsrc/include/../csg/specpoin.hpp \
   libsrc/include/../csg/edgeflw.hpp libsrc/include/../csg/meshsurf.hpp \
   libsrc/include/geometry2d.hpp libsrc/include/../geom2d/geometry2d.hpp \
-  libsrc/include/../geom2d/spline2d.hpp \
+  libsrc/include/../gprim/gprim.hpp libsrc/include/../geom2d/spline2d.hpp \
   libsrc/include/../geom2d/splinegeometry2.hpp \
   libsrc/include/../geom2d/geom2dmesh.hpp
 meshstlsurface.o: libsrc/stlgeom/meshstlsurface.cpp \
@@ -3617,7 +3646,8 @@ meshstlsurface.o: libsrc/stlgeom/meshstlsurface.cpp \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
+  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -3643,8 +3673,9 @@ meshstlsurface.o: libsrc/stlgeom/meshstlsurface.cpp \
   libsrc/include/../meshing/hprefinement.hpp \
   libsrc/include/../meshing/boundarylayer.hpp \
   libsrc/include/../meshing/specials.hpp libsrc/stlgeom/stlgeom.hpp \
-  libsrc/stlgeom/stltopology.hpp libsrc/stlgeom/stltool.hpp \
-  libsrc/stlgeom/stlline.hpp libsrc/stlgeom/meshstlsurface.hpp
+  libsrc/include/../gprim/gprim.hpp libsrc/stlgeom/stltopology.hpp \
+  libsrc/stlgeom/stltool.hpp libsrc/stlgeom/stlline.hpp \
+  libsrc/stlgeom/meshstlsurface.hpp
 stlline.o: libsrc/stlgeom/stlline.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -3673,7 +3704,8 @@ stlline.o: libsrc/stlgeom/stlline.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
+  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -3699,8 +3731,9 @@ stlline.o: libsrc/stlgeom/stlline.cpp libsrc/include/mystdlib.h \
   libsrc/include/../meshing/hprefinement.hpp \
   libsrc/include/../meshing/boundarylayer.hpp \
   libsrc/include/../meshing/specials.hpp libsrc/stlgeom/stlgeom.hpp \
-  libsrc/stlgeom/stltopology.hpp libsrc/stlgeom/stltool.hpp \
-  libsrc/stlgeom/stlline.hpp libsrc/stlgeom/meshstlsurface.hpp
+  libsrc/include/../gprim/gprim.hpp libsrc/stlgeom/stltopology.hpp \
+  libsrc/stlgeom/stltool.hpp libsrc/stlgeom/stlline.hpp \
+  libsrc/stlgeom/meshstlsurface.hpp
 stltopology.o: libsrc/stlgeom/stltopology.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -3729,7 +3762,8 @@ stltopology.o: libsrc/stlgeom/stltopology.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
+  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -3755,8 +3789,9 @@ stltopology.o: libsrc/stlgeom/stltopology.cpp libsrc/include/mystdlib.h \
   libsrc/include/../meshing/hprefinement.hpp \
   libsrc/include/../meshing/boundarylayer.hpp \
   libsrc/include/../meshing/specials.hpp libsrc/stlgeom/stlgeom.hpp \
-  libsrc/stlgeom/stltopology.hpp libsrc/stlgeom/stltool.hpp \
-  libsrc/stlgeom/stlline.hpp libsrc/stlgeom/meshstlsurface.hpp
+  libsrc/include/../gprim/gprim.hpp libsrc/stlgeom/stltopology.hpp \
+  libsrc/stlgeom/stltool.hpp libsrc/stlgeom/stlline.hpp \
+  libsrc/stlgeom/meshstlsurface.hpp
 stltool.o: libsrc/stlgeom/stltool.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -3785,7 +3820,8 @@ stltool.o: libsrc/stlgeom/stltool.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
+  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -3811,8 +3847,9 @@ stltool.o: libsrc/stlgeom/stltool.cpp libsrc/include/mystdlib.h \
   libsrc/include/../meshing/hprefinement.hpp \
   libsrc/include/../meshing/boundarylayer.hpp \
   libsrc/include/../meshing/specials.hpp libsrc/stlgeom/stlgeom.hpp \
-  libsrc/stlgeom/stltopology.hpp libsrc/stlgeom/stltool.hpp \
-  libsrc/stlgeom/stlline.hpp libsrc/stlgeom/meshstlsurface.hpp
+  libsrc/include/../gprim/gprim.hpp libsrc/stlgeom/stltopology.hpp \
+  libsrc/stlgeom/stltool.hpp libsrc/stlgeom/stlline.hpp \
+  libsrc/stlgeom/meshstlsurface.hpp
 stlgeom.o: libsrc/stlgeom/stlgeom.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -3841,7 +3878,8 @@ stlgeom.o: libsrc/stlgeom/stlgeom.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
+  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -3867,8 +3905,9 @@ stlgeom.o: libsrc/stlgeom/stlgeom.cpp libsrc/include/mystdlib.h \
   libsrc/include/../meshing/hprefinement.hpp \
   libsrc/include/../meshing/boundarylayer.hpp \
   libsrc/include/../meshing/specials.hpp libsrc/stlgeom/stlgeom.hpp \
-  libsrc/stlgeom/stltopology.hpp libsrc/stlgeom/stltool.hpp \
-  libsrc/stlgeom/stlline.hpp libsrc/stlgeom/meshstlsurface.hpp
+  libsrc/include/../gprim/gprim.hpp libsrc/stlgeom/stltopology.hpp \
+  libsrc/stlgeom/stltool.hpp libsrc/stlgeom/stlline.hpp \
+  libsrc/stlgeom/meshstlsurface.hpp
 stlgeomchart.o: libsrc/stlgeom/stlgeomchart.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -3897,7 +3936,8 @@ stlgeomchart.o: libsrc/stlgeom/stlgeomchart.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
+  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -3923,8 +3963,9 @@ stlgeomchart.o: libsrc/stlgeom/stlgeomchart.cpp libsrc/include/mystdlib.h \
   libsrc/include/../meshing/hprefinement.hpp \
   libsrc/include/../meshing/boundarylayer.hpp \
   libsrc/include/../meshing/specials.hpp libsrc/stlgeom/stlgeom.hpp \
-  libsrc/stlgeom/stltopology.hpp libsrc/stlgeom/stltool.hpp \
-  libsrc/stlgeom/stlline.hpp libsrc/stlgeom/meshstlsurface.hpp
+  libsrc/include/../gprim/gprim.hpp libsrc/stlgeom/stltopology.hpp \
+  libsrc/stlgeom/stltool.hpp libsrc/stlgeom/stlline.hpp \
+  libsrc/stlgeom/meshstlsurface.hpp
 stlgeommesh.o: libsrc/stlgeom/stlgeommesh.cpp libsrc/include/mystdlib.h \
   libsrc/include/myadt.hpp libsrc/include/../general/myadt.hpp \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
@@ -3953,7 +3994,8 @@ stlgeommesh.o: libsrc/stlgeom/stlgeommesh.cpp libsrc/include/mystdlib.h \
   libsrc/include/../gprim/geomtest3d.hpp \
   libsrc/include/../gprim/transform3d.hpp \
   libsrc/include/../gprim/adtree.hpp libsrc/include/meshing.hpp \
-  libsrc/include/../meshing/meshing.hpp libsrc/include/opti.hpp \
+  libsrc/include/../meshing/meshing.hpp libsrc/include/../gprim/gprim.hpp \
+  libsrc/include/../linalg/linalg.hpp libsrc/include/opti.hpp \
   libsrc/include/../opti/opti.hpp \
   libsrc/include/../meshing/msghandler.hpp \
   libsrc/include/../meshing/meshtype.hpp \
@@ -3979,8 +4021,9 @@ stlgeommesh.o: libsrc/stlgeom/stlgeommesh.cpp libsrc/include/mystdlib.h \
   libsrc/include/../meshing/hprefinement.hpp \
   libsrc/include/../meshing/boundarylayer.hpp \
   libsrc/include/../meshing/specials.hpp libsrc/stlgeom/stlgeom.hpp \
-  libsrc/stlgeom/stltopology.hpp libsrc/stlgeom/stltool.hpp \
-  libsrc/stlgeom/stlline.hpp libsrc/stlgeom/meshstlsurface.hpp
+  libsrc/include/../gprim/gprim.hpp libsrc/stlgeom/stltopology.hpp \
+  libsrc/stlgeom/stltool.hpp libsrc/stlgeom/stlline.hpp \
+  libsrc/stlgeom/meshstlsurface.hpp
 moveablemem.o: libsrc/general/moveablemem.cpp libsrc/include/myadt.hpp \
   libsrc/include/../general/myadt.hpp libsrc/include/mystdlib.h \
   libsrc/include/mydefs.hpp libsrc/include/../general/ngexception.hpp \
diff --git a/doc/VERSIONS b/doc/VERSIONS
index 6c69e92ca6a972676fa61af1fe8b3f9cbca07d9d..edb92136f58f22e9fe7231c0e3b27739553a9afb 100644
--- a/doc/VERSIONS
+++ b/doc/VERSIONS
@@ -1,4 +1,4 @@
-$Id: VERSIONS,v 1.382 2007-03-23 08:44:41 geuzaine Exp $
+$Id: VERSIONS,v 1.383 2007-04-21 19:40:01 geuzaine Exp $
 
 new since 2.0: volumes can now be defined from external CAD surfaces;
 Delaunay/Tetgen algorithm is now used by default when available;
@@ -7,7 +7,8 @@ export external CAD models as GEO files (this only works for the
 limited set of geometrical primitives available in the GEO language,
 of course--so trying to convert e.g. a trimmed NURBS from a STEP file
 into a GEO file will fail); "lateral" entities are now added at the
-end of the list returned by extrusion commands; fixed various bugs.
+end of the list returned by extrusion commands; unused vertices are
+not saved in mesh files anymore; fixed various bugs.
 
 2.0 (February 5, 2007): new geometry and mesh databases, with support
 for STEP and IGES import via OpenCascade; complete rewrite of geometry