diff --git a/Common/CommandLine.cpp b/Common/CommandLine.cpp
index 95143df72832c1abd6999f7bd0f58fe10d4e0310..04d53d6d081b0c48fa45d444edca5e979dbdb6de 100644
--- a/Common/CommandLine.cpp
+++ b/Common/CommandLine.cpp
@@ -1,4 +1,4 @@
-// $Id: CommandLine.cpp,v 1.97 2007-03-23 08:44:41 geuzaine Exp $
+// $Id: CommandLine.cpp,v 1.98 2007-04-20 07:11:26 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -81,8 +81,8 @@ void Print_Usage(char *name){
   Msg(DIRECT, "  -1, -2, -3            Perform 1D, 2D or 3D mesh generation, then exit");
   Msg(DIRECT, "  -saveall              Save all elements (discard physical group definitions)");
   Msg(DIRECT, "  -o file               Specify mesh output file name");
-  Msg(DIRECT, "  -format string        Set output mesh format (msh, msh1, msh2, unv, vrml, stl, mesh");
-  Msg(DIRECT, "                        bdf, p3d, cgns, med)");
+  Msg(DIRECT, "  -format string        Set output mesh format (msh, msh1, msh2, unv, vrml, stl, mesh,");
+  Msg(DIRECT, "                          bdf, p3d, cgns, med)");
   Msg(DIRECT, "  -algo string          Select mesh algorithm (iso, netgen, tetgen)");
   Msg(DIRECT, "  -smooth int           Set number of mesh smoothing steps");
   Msg(DIRECT, "  -optimize             Optimize quality of tetrahedral elements");
diff --git a/Geo/GModel.cpp b/Geo/GModel.cpp
index 57bef333570489f163db690beea329e6f13e6f9e..bab97acc764eb6220d21aff073283d97afab8915 100644
--- a/Geo/GModel.cpp
+++ b/Geo/GModel.cpp
@@ -1,4 +1,4 @@
-// $Id: GModel.cpp,v 1.38 2007-04-16 09:08:27 remacle Exp $
+// $Id: GModel.cpp,v 1.39 2007-04-20 07:11:26 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -160,10 +160,17 @@ void GModel::associateEntityWithVertices()
 int GModel::renumberMeshVertices()
 {
   // FIXME: here, we should first:
-  // 1) loop over all elements, and tag all unused vertices in a
-  // special way (I think the best would be to set their associated
-  // entity to 0)
-  // 2) delete all untagged (i.e., unused) vertices
+
+  // 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
 
   int numVertices = 0;
   for(viter it = firstVertex(); it != lastVertex(); ++it)
diff --git a/Mesh/Generator.cpp b/Mesh/Generator.cpp
index 88f281471f4492680016e4ad26966f2fa53e7abe..eaf9ffe446a328a3ff34f971e199700b00841472 100644
--- a/Mesh/Generator.cpp
+++ b/Mesh/Generator.cpp
@@ -1,4 +1,4 @@
-// $Id: Generator.cpp,v 1.117 2007-02-28 06:58:46 geuzaine Exp $
+// $Id: Generator.cpp,v 1.118 2007-04-20 07:11:26 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -179,7 +179,8 @@ void GetStatistics(double stat[50], double quality[3][100])
 
 }
 
-bool TooManyElements(int dim){
+bool TooManyElements(int dim)
+{
   if(CTX.expert_mode || !GMODEL->numVertex()) return false;
 
   // try to detect obvious mistakes in characteristic lenghts (one of
@@ -308,10 +309,10 @@ void GenerateMesh(int ask)
   if(GMODEL->getMeshStatus() == 3 && CTX.mesh.optimize)
     OptimizeMesh();
   
-  // Create second order elements
+  // Create high order elements
   if(GMODEL->getMeshStatus() && CTX.mesh.order > 1) 
-    SetOrderN(GMODEL, CTX.mesh.order, 
-	      CTX.mesh.second_order_linear, CTX.mesh.second_order_incomplete);
+    SetOrderN(GMODEL, CTX.mesh.order, CTX.mesh.second_order_linear, 
+	      CTX.mesh.second_order_incomplete);
 
   Msg(INFO, "%d vertices %d elements", GMODEL->numVertices(), GMODEL->numElements());
 
diff --git a/benchmarks/step/linkrods_in_a_box.geo b/benchmarks/step/linkrods_in_a_box.geo
index 7162a6bfcc53c3eef46f143d76e635f0af7571c3..1c2cea0f4b6a372fa0c79ba41fe99bde0d0bfe1c 100644
--- a/benchmarks/step/linkrods_in_a_box.geo
+++ b/benchmarks/step/linkrods_in_a_box.geo
@@ -24,3 +24,12 @@ Plane Surface(10006) = {10005};
 tmp[] = Extrude {0, 0, (zmax - zmin) + 2 * l} {
   Surface{10006};
 };
+
+Delete { Volume{tmp[1]}; }
+  	 
+Surface Loop(10029) = {10027,10006,10015,10019,10023,10028}; 	 
+Surface Loop(10030) = {7,9,10,11,8,6,28,26,36,15,2,4,5,12,3,1,13,24,23,14,
+		       16,22,21,18,20,37,34,19,17,35,31,33,32,30,29,27,25}; 	 
+Volume(10031) = {10029,10030}; 	 
+  	 
+//Mesh.CharacteristicLengthFactor = 0.3;