diff --git a/Common/CommandLine.cpp b/Common/CommandLine.cpp
index 21f3f622dce7d74d7038765a45c4fb44fb8e2137..87e4d52149e457d4fc968264163d7f2fa97d2741 100644
--- a/Common/CommandLine.cpp
+++ b/Common/CommandLine.cpp
@@ -1,4 +1,4 @@
-// $Id: CommandLine.cpp,v 1.40 2004-05-29 10:11:10 geuzaine Exp $
+// $Id: CommandLine.cpp,v 1.41 2004-05-31 18:36:20 geuzaine Exp $
 //
 // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 //
@@ -97,10 +97,7 @@ void Print_Usage(char *name){
   Msg(DIRECT, "  -nodb                 disable double buffering");
   Msg(DIRECT, "  -fontsize int         specify the font size for the GUI (default: 12)");
   Msg(DIRECT, "  -scheme string        specify FLTK GUI scheme");
-  Msg(DIRECT, "  -alpha                enable alpha blending");
-  Msg(DIRECT, "  -notrack              don't use trackball mode for rotations");
   Msg(DIRECT, "  -display string       specify display");
-  Msg(DIRECT, "  -perspective          set projection mode to perspective");
 #endif
   Msg(DIRECT, "Other options:");      
 #if defined(HAVE_FLTK)
@@ -133,6 +130,12 @@ char *Get_BuildOptions(void)
 #endif
 #if defined(HAVE_LIBPNG)
     strcat(opt, "PNG ");
+#endif
+#if defined(HAVE_LIBZ)
+    strcat(opt, "ZLIB ");
+#endif
+#if defined(HAVE_MATH_EVAL)
+    strcat(opt, "MATHEVAL ");
 #endif
     first = 0;
   }
@@ -213,11 +216,11 @@ void Get_Options(int argc, char *argv[], int *nbfiles)
         CTX.mesh.save_all = 1;
         i++;
       }
-      else if(!strcmp(argv[i] + 1, "extrude")) {        //old extrusion mesh generator
+      else if(!strcmp(argv[i] + 1, "extrude")) { // old extrusion mesh generator
         CTX.mesh.oldxtrude = 1;
         i++;
       }
-      else if(!strcmp(argv[i] + 1, "recombine")) {      //old extrusion mesh generator
+      else if(!strcmp(argv[i] + 1, "recombine")) { // old extrusion mesh generator
         CTX.mesh.oldxtrude_recombine = 1;
         i++;
       }
@@ -450,22 +453,10 @@ void Get_Options(int argc, char *argv[], int *nbfiles)
         }
       }
 #if defined(HAVE_FLTK)
-      else if(!strcmp(argv[i] + 1, "noterm")) {
-        CTX.terminal = 0;
-        i++;
-      }
       else if(!strcmp(argv[i] + 1, "term")) {
         CTX.terminal = 1;
         i++;
       }
-      else if(!strcmp(argv[i] + 1, "alpha")) {
-        CTX.alpha = 1;
-        i++;
-      }
-      else if(!strcmp(argv[i] + 1, "notrack")) {
-        CTX.useTrackball = 0;
-        i++;
-      }
       else if(!strcmp(argv[i] + 1, "dual")) {
         CTX.mesh.dual = 1;
         i++;
@@ -508,24 +499,6 @@ void Get_Options(int argc, char *argv[], int *nbfiles)
           exit(1);
         }
       }
-      else if(!strcmp(argv[i] + 1, "command") || !strcmp(argv[i] + 1, "c")) {
-        CTX.command_win = 1;
-        i++;
-      }
-      else if(!strcmp(argv[i] + 1, "nocommand") ||
-              !strcmp(argv[i] + 1, "noc")) {
-        CTX.command_win = 0;
-        i++;
-      }
-      else if(!strcmp(argv[i] + 1, "perspective") ||
-              !strcmp(argv[i] + 1, "p")) {
-        CTX.ortho = 0;
-        i++;
-      }
-      else if(!strcmp(argv[i] + 1, "ortho") || !strcmp(argv[i] + 1, "o")) {
-        CTX.ortho = 0;
-        i++;
-      }
       else if(!strcmp(argv[i] + 1, "threads")) {
         CTX.threads = 1;
         i++;
diff --git a/Common/Context.h b/Common/Context.h
index 56a9672d0786abfe83d16f31e1eaff98aa7aa3a3..63adb0f512c2fb8b5e2c971f1d376a6b5fb8dd38 100644
--- a/Common/Context.h
+++ b/Common/Context.h
@@ -104,7 +104,6 @@ public :
   int db;                     // double buffer? 
   int ortho;                  // orthogonal projection? 
   int fast;                   // inhibit mesh and postpro drawing when changing r,s,t 
-  int command_win;            // command window? 
   int axes, small_axes;       // draw axes? 
   int small_axes_pos[2];      // small axes position 
   int threads, threads_lock;  // threads?, lock (should be a mutex...) 
diff --git a/Graphics/Geom.cpp b/Graphics/Geom.cpp
index 3bad1b9bbe5ec670d442e26108305f848c1d9690..0a88f23cca2efe062d66a97b2d9f4bf8e950b529 100644
--- a/Graphics/Geom.cpp
+++ b/Graphics/Geom.cpp
@@ -1,4 +1,4 @@
-// $Id: Geom.cpp,v 1.64 2004-05-30 19:17:58 geuzaine Exp $
+// $Id: Geom.cpp,v 1.65 2004-05-31 18:36:20 geuzaine Exp $
 //
 // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 //
@@ -37,12 +37,11 @@ extern Mesh *THEM;
 
 // Points
 
-void Draw_GeoPoint(void *a, void *b)
+void Draw_Geo_Point(void *a, void *b)
 {
-  Vertex *v;
   char Num[100];
 
-  v = *(Vertex **) a;
+  Vertex *v = *(Vertex **) a;
 
   if(!(v->Visible & VIS_GEOM))
     return;
@@ -97,13 +96,12 @@ void Draw_GeoPoint(void *a, void *b)
 
 void Draw_Curve(void *a, void *b)
 {
-  int i, N;
+  int N;
   double mod, x[2], y[2], z[2];
   char Num[100];
-  Curve *c;
   Vertex v, dv;
 
-  c = *(Curve **) a;
+  Curve *c = *(Curve **) a;
 
   if(c->Num < 0 || !(c->Visible & VIS_GEOM) || c->Dirty)
     return;
@@ -143,7 +141,7 @@ void Draw_Curve(void *a, void *b)
     if(c->Typ == MSH_SEGM_DISCRETE) {
       Simplex *s;
       List_T *temp = Tree2List(c->Simplexes);
-      for(i = 0; i < List_Nbr(temp); i++) {
+      for(int i = 0; i < List_Nbr(temp); i++) {
         List_Read(temp, i, &s);
         glBegin(GL_LINE_STRIP);
         glVertex3d(s->V[0]->Pos.X, s->V[0]->Pos.Y, s->V[0]->Pos.Z);
@@ -154,7 +152,7 @@ void Draw_Curve(void *a, void *b)
     }
     else {
       if(CTX.geom.line_type) {
-        for(i = 0; i < N - 1; i++) {
+        for(int i = 0; i < N - 1; i++) {
           v = InterpolateCurve(c, (double)i / (double)(N - 1), 0);
           dv = InterpolateCurve(c, (double)(i + 1) / (double)(N - 1), 0);
           x[0] = v.Pos.X;
@@ -169,7 +167,7 @@ void Draw_Curve(void *a, void *b)
       }
       else {
         glBegin(GL_LINE_STRIP);
-        for(i = 0; i < N; i++) {
+        for(int i = 0; i < N; i++) {
           v = InterpolateCurve(c, (double)i / (double)(N - 1), 0);
           glVertex3d(v.Pos.X, v.Pos.Y, v.Pos.Z);
         }
@@ -227,30 +225,24 @@ void put_Z(Vertex * v, Surface * s)
 int isPointOnPlanarSurface(Surface * S, double X, double Y, double Z,
                            double n[3])
 {
-  Curve *C;
-  Vertex V, P1, P2;
-  int i, j, N;
-  double Angle, u1, u2;
-
-  Angle = 0.0;
+  double Angle = 0.0;
+  Vertex V;
   V.Pos.X = X;
   V.Pos.Y = Y;
   V.Pos.Z = Z;
 
-  for(i = 0; i < List_Nbr(S->Generatrices); i++) {
+  for(int i = 0; i < List_Nbr(S->Generatrices); i++) {
 
+    Curve *C;
     List_Read(S->Generatrices, i, &C);
 
-    if(C->Typ == MSH_SEGM_LINE)
-      N = 1;
-    else
-      N = 10;
+    int N = (C->Typ == MSH_SEGM_LINE) ? 1 : 10;
 
-    for(j = 0; j < N; j++) {
-      u1 = (double)j / (double)(N);
-      u2 = (double)(j + 1) / (double)(N);
-      P1 = InterpolateCurve(C, u1, 0);
-      P2 = InterpolateCurve(C, u2, 0);
+    for(int j = 0; j < N; j++) {
+      double u1 = (double)j / (double)(N);
+      double u2 = (double)(j + 1) / (double)(N);
+      Vertex P1 = InterpolateCurve(C, u1, 0);
+      Vertex P2 = InterpolateCurve(C, u2, 0);
       Angle += angle_plan(&V, &P1, &P2, n);
     }
 
@@ -549,9 +541,7 @@ void Draw_NonPlane_Surface(Surface * s)
 
 void Draw_Surface(void *a, void *b)
 {
-  Surface *s;
-
-  s = *(Surface **) a;
+  Surface *s = *(Surface **) a;
 
   if(!s || !s->Support || !(s->Visible & VIS_GEOM) || s->Dirty)
     return;
@@ -603,7 +593,7 @@ void Draw_Geom(Mesh * m)
     return;
 
   if(CTX.geom.points || CTX.geom.points_num)
-    Tree_Action(m->Points, Draw_GeoPoint);
+    Tree_Action(m->Points, Draw_Geo_Point);
   if(CTX.geom.lines || CTX.geom.lines_num || CTX.geom.tangents)
     Tree_Action(m->Curves, Draw_Curve);
   if(CTX.geom.surfaces || CTX.geom.surfaces_num || CTX.geom.normals)
@@ -618,7 +608,6 @@ void HighlightEntity(Vertex * v, Curve * c, Surface * s, int permanent)
 {
   Curve *cc;
   char Message[256], temp[256];
-  int i, nbg;
 
   if(permanent){
     // we want to draw incrementally (in-between to "Draw()" calls):
@@ -629,7 +618,7 @@ void HighlightEntity(Vertex * v, Curve * c, Surface * s, int permanent)
   if(v) {
     if(permanent){
       v->Frozen = 1;
-      Draw_GeoPoint(&v,NULL);
+      Draw_Geo_Point(&v,NULL);
     }
     else{
       Msg(STATUS1N, "Point %d {%.5g,%.5g,%.5g} (%.5g)", v->Num, v->Pos.X,
@@ -652,9 +641,9 @@ void HighlightEntity(Vertex * v, Curve * c, Surface * s, int permanent)
     }
     else{
       sprintf(Message, "Surface %d {", s->Num);
-      nbg = List_Nbr(s->Generatrices);
+      int nbg = List_Nbr(s->Generatrices);
       if(nbg < 10) {
-	for(i = 0; i < nbg; i++) {
+	for(int i = 0; i < nbg; i++) {
 	  List_Read(s->Generatrices, i, &cc);
 	  if(!i)
 	    sprintf(temp, "%d", cc->Num);
diff --git a/Graphics/Mesh.cpp b/Graphics/Mesh.cpp
index 2d097d11ae8a6d641d5d3a6329270b0fe305543f..dbd3f25f861ecf0f30c10d44158e1ffa6c41690d 100644
--- a/Graphics/Mesh.cpp
+++ b/Graphics/Mesh.cpp
@@ -1,4 +1,4 @@
-// $Id: Mesh.cpp,v 1.94 2004-05-30 19:17:58 geuzaine Exp $
+// $Id: Mesh.cpp,v 1.95 2004-05-31 18:36:20 geuzaine Exp $
 //
 // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 //
@@ -220,7 +220,6 @@ void Draw_Mesh(Mesh * M)
   // draw the post-processing views
 
   Draw_Post();
-
 }
 
 void Draw_Mesh_Volume(void *a, void *b)
@@ -294,10 +293,10 @@ void Draw_Mesh_Curve(void *a, void *b)
   Curve *c = *(Curve **) a;
   if(c->Num < 0)
     return;
-  theColor = c->Color;
-  thePhysical = getFirstPhysical(MSH_PHYSICAL_LINE, c->Num);
   if(!(c->Visible & VIS_MESH))
     return;
+  theColor = c->Color;
+  thePhysical = getFirstPhysical(MSH_PHYSICAL_LINE, c->Num);
   Tree_Action(c->Simplexes, Draw_Mesh_Line);
 }
 
@@ -532,7 +531,7 @@ void Draw_Mesh_Array(VertexArray *va, int faces, int edges)
   }
       
   if(edges){
-    if(faces || CTX.mesh.surfaces_faces){
+    if(faces){
       glDisableClientState(GL_COLOR_ARRAY);
       glColor4ubv((GLubyte *) & CTX.color.mesh.line);
     }
diff --git a/doc/gmsh.1 b/doc/gmsh.1
index 290d6e82b0df97f1535c0b8df24bbc93d0a20354..245aea7eef8379048592e1a2c43f7d8a60a00b97 100644
--- a/doc/gmsh.1
+++ b/doc/gmsh.1
@@ -1,4 +1,4 @@
-.\" $Id: gmsh.1,v 1.53 2004-05-29 10:11:12 geuzaine Exp $
+.\" $Id: gmsh.1,v 1.54 2004-05-31 18:36:20 geuzaine Exp $
 .TH Gmsh 1 "14 June 2003" "Gmsh 1.45" "Gmsh Manual Pages"
 .UC 4
 .\" ********************************************************************
@@ -123,17 +123,8 @@ specify the font size for the GUI (default: 12)
 .B \-scheme string
 specify FLTK scheme
 .TP 4
-.B \-alpha
-enable alpha blending.
-.TP 4
-.B \-notrack
-don't use trackball mode for rotations.
-.TP 4
 .B \-display string
 specify display.
-.TP 4
-.B \-perspective
-use perspective instead of orthographic projection.
 .\" ********************************************************************
 .SH OTHER OPTIONS
 .TP 4
diff --git a/doc/texinfo/command_line.texi b/doc/texinfo/command_line.texi
index 03cf4c0f7e2a15aadd1e5690c93a9b58e625d7d9..9eefdd874db6ebfd706d582fe0d21aba7cde22c0 100644
--- a/doc/texinfo/command_line.texi
+++ b/doc/texinfo/command_line.texi
@@ -72,14 +72,8 @@ disable double buffering
 specify the font size for the GUI (default: 12)
 @item -scheme string
 specify FLTK scheme
-@item -alpha
-enable alpha blending
-@item -notrack
-don't use trackball mode for rotations
 @item -display string
 specify display
-@item -perspective
-set projection mode to perspective
 @end ftable
 
 @sp 1