diff --git a/Fltk/Makefile b/Fltk/Makefile
index 7176aa43b0fd177d7f3b4b3d63bae40ca144fe59..b71c4af6e66a29940146d90ea5f11c77c541eb9a 100644
--- a/Fltk/Makefile
+++ b/Fltk/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.45 2003-03-21 00:52:37 geuzaine Exp $
+# $Id: Makefile,v 1.46 2003-05-09 16:29:57 geuzaine Exp $
 #
 # Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle
 #
@@ -22,8 +22,8 @@
 include ../variables
 
 LIB     = ../lib/libGmshFltk.a
-INCLUDE = -I../Common -I../DataStr -I../Graphics -I../Geo\
-          -I../Mesh -I../Numeric -I../Parser -I../Fltk -I../Plugin -I../utils
+INCLUDE = -I../Common -I../DataStr -I../Graphics -I../Geo -I../Mesh\
+          -I../Numeric -I../Parser -I../Fltk -I../Plugin -I../utils/solvers
 CFLAGS  = ${OPTIM} ${FLAGS} ${INCLUDE}
 
 SRC = Main.cpp \
@@ -123,7 +123,7 @@ Colorbar_Window.o: Colorbar_Window.cpp ../Common/Gmsh.h \
 GmshServer.o: GmshServer.cpp
 Solvers.o: Solvers.cpp ../Common/Gmsh.h ../Common/Message.h \
   ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
-  ../DataStr/avl.h ../DataStr/Tools.h ../utils/GmshClient.h GmshServer.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../utils/solvers/GmshClient.h GmshServer.h \
   ../Parser/OpenFile.h Solvers.h ../Common/GmshUI.h GUI.h Opengl_Window.h \
   Colorbar_Window.h ../Common/ColorTable.h ../Mesh/Mesh.h \
   ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
diff --git a/Makefile b/Makefile
index 8f7cb83b8a87387e5067dd96c82f4b3eb642e9ce..a43890150381811cc5591086ca090a088773f9ba 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.283 2003-04-21 01:38:40 geuzaine Exp $
+# $Id: Makefile,v 1.284 2003-05-09 16:29:57 geuzaine Exp $
 #
 # Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle
 #
@@ -59,10 +59,10 @@ variables: configure
 
 source-common:
 	rm -rf gmsh-${GMSH_RELEASE}
-	tar zcvf gmsh.tgz `ls TODO README* */README* configure *.in Makefile */Makefile\
-                           */*.[chylr] */*.[ch]pp */*.rc */*.res */*.ico */*.icns\
-                           */*.p[lm] */*.sh */*.opt */*.spec`\
-                           doc demos tutorial
+	tar zcvf gmsh.tgz `ls TODO README* */README* configure *.in *.spec Makefile\
+                           */Makefile */*.[chylr] */*.[ch]pp */*.rc */*.res */*.ico\
+                           */*.icns`\
+                           doc demos tutorial utils
 	mkdir gmsh-${GMSH_RELEASE}
 	cd gmsh-${GMSH_RELEASE} && tar zxvf ../gmsh.tgz
 	rm -f gmsh.tgz
@@ -79,8 +79,8 @@ source-nonfree: source-common
 parser:
 	cd Parser && ${MAKE} parser
 
-utilities:
-	cd utils && ${MAKE}
+converters:
+	cd utils/converters && ${MAKE}
 
 doc-info:
 	cd doc/texinfo && ${MAKE} info
@@ -188,13 +188,14 @@ package-windows:
 	cp doc/FAQ gmsh-${GMSH_RELEASE}/FAQ.txt
 	cp doc/CONTRIBUTORS gmsh-${GMSH_RELEASE}/CONTRIBUTORS.txt
 	cp doc/COPYING gmsh-${GMSH_RELEASE}/COPYING.txt
-	cd utils && unix2dos ../gmsh-${GMSH_RELEASE}/*.txt
+	cd utils/misc && unix2dos.bash ../../gmsh-${GMSH_RELEASE}/*.txt
 	cp -R tutorial gmsh-${GMSH_RELEASE}
 	cp -R demos gmsh-${GMSH_RELEASE}
 	rm -rf gmsh-${GMSH_RELEASE}/*/CVS
 	rm -f gmsh-${GMSH_RELEASE}/*/*.msh
 	rm -f gmsh-${GMSH_RELEASE}/*/*~
-	cd utils && unix2dos ../gmsh-${GMSH_RELEASE}/tutorial/* ../gmsh-${GMSH_RELEASE}/demos/*
+	cd utils/misc && unix2dos.bash ../../gmsh-${GMSH_RELEASE}/tutorial/*\
+                                       ../../gmsh-${GMSH_RELEASE}/demos/*
 	cd gmsh-${GMSH_RELEASE} && zip -r gmsh-${GMSH_RELEASE}-Windows.zip *
 	mv gmsh-${GMSH_RELEASE}/gmsh-${GMSH_RELEASE}-Windows.zip .
 
@@ -239,13 +240,13 @@ package-mac:
 rpmold:
 	tar zcvf gmsh-${GMSH_RELEASE}.tar.gz ${GMSH_SOURCES}
 	mv gmsh-${GMSH_RELEASE}.tar.gz /usr/src/redhat/SOURCES
-	rpm -bb --define 'gmshversion ${GMSH_RELEASE}' utils/gmsh.spec
+	rpm -bb --define 'gmshversion ${GMSH_RELEASE}' gmsh.spec
 	cp /usr/src/redhat/RPMS/i386/gmsh-${GMSH_RELEASE}-?.i386.rpm .
 	cp /usr/src/redhat/BUILD/gmsh-${GMSH_RELEASE}/gmsh-${GMSH_RELEASE}-${UNAME}.tgz .
 
 rpm:
 	tar zcvf gmsh-${GMSH_RELEASE}.tar.gz ${GMSH_SOURCES}
 	mv gmsh-${GMSH_RELEASE}.tar.gz /usr/src/redhat/SOURCES
-	rpmbuild -bb --define 'gmshversion ${GMSH_RELEASE}' utils/gmsh.spec
+	rpmbuild -bb --define 'gmshversion ${GMSH_RELEASE}' gmsh.spec
 	cp /usr/src/redhat/RPMS/i386/gmsh-${GMSH_RELEASE}-?.i386.rpm .
 	cp /usr/src/redhat/BUILD/gmsh-${GMSH_RELEASE}/gmsh-${GMSH_RELEASE}-${UNAME}.tgz .
diff --git a/doc/README.mac b/doc/README.mac
index 9dd0aadd611df7aa44b52a36d41f667191c9efbc..35d77cbaa06489a825e8b67666e3d228666ca2f8 100644
--- a/doc/README.mac
+++ b/doc/README.mac
@@ -1,4 +1,4 @@
-$Id: README.mac,v 1.4 2003-03-06 23:01:17 geuzaine Exp $
+$Id: README.mac,v 1.5 2003-05-09 16:29:57 geuzaine Exp $
 
 How to make a version recognized by the Mac Finder?
 
@@ -17,7 +17,7 @@ The old way (using resource forks):
 - a) use the DiskCopy utility to create a disk image (.dmg)
 
   b) you can also create the disk image on the command line, using
-     utils/make-dmg.sh (WARNING: modify the script to suit your needs)
+     utils/misc/makedmg.sh (WARNING: modify the script to suit your needs)
 
 The new way:
 
diff --git a/doc/texinfo/gmsh.texi b/doc/texinfo/gmsh.texi
index 91554376e9438826ed0baf609f07008144d63de2..4c10967ea42ff4bf12cdcc100879d396b97cbdac 100644
--- a/doc/texinfo/gmsh.texi
+++ b/doc/texinfo/gmsh.texi
@@ -1,5 +1,5 @@
 \input texinfo.tex @c -*-texinfo-*-
-@c $Id: gmsh.texi,v 1.54 2003-05-06 00:21:23 geuzaine Exp $
+@c $Id: gmsh.texi,v 1.55 2003-05-09 16:29:57 geuzaine Exp $
 @c
 @c Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle
 @c
@@ -2055,12 +2055,12 @@ available on @value{GMSH-WEB}.
 @cindex Example, solver
 
 Here is a small example of how to interface a C solver with Gmsh. The
-following listing reproduces the @file{utils/mysolver.c} file from the Gmsh
-source distribution.
+following listing reproduces the @file{utils/solvers/mysolver.c} file from
+the Gmsh source distribution.
 
 @sp 1
 
-@verbatiminclude ../../utils/mysolver.c
+@verbatiminclude ../../utils/solvers/mysolver.c
 
 @sp 1
 
@@ -2071,7 +2071,7 @@ options}):
 
 @sp 1
 
-@verbatiminclude ../../utils/mysolver.opt
+@verbatiminclude ../../utils/solvers/mysolver.opt
 
 @c =========================================================================
 @c Post-processing module
@@ -3106,10 +3106,10 @@ please enable full warnings for your compiler (e.g.@: add @code{-Wall} to
 @item
 always use the @code{Msg()} function to print information, errors, @dots{};
 @item 
-indent your files using @file{utils/indent.sh};
+indent your files using @file{utils/misc/indent.sh};
 @item
 if working on Windows, don't leave tabs in your files (e.g.@: untabify them
-with @file{utils/untabify}).
+with @file{utils/misc/untabify.sh}).
 @end enumerate
 
 @sp 2
diff --git a/utils/gmsh.spec b/gmsh.spec
similarity index 99%
rename from utils/gmsh.spec
rename to gmsh.spec
index 9fbfd09bac6d007d6f5014926af501e1044785ac..1ec6792991b8821d509cbb7d93859ed871478dca 100644
--- a/utils/gmsh.spec
+++ b/gmsh.spec
@@ -31,7 +31,7 @@ and/or post-processor.
 
 %build
 make distrib-unix
-make utilities
+make converters
 make doc-pdf
 make doc-info
 rm -rf CVS */CVS */*/CVS
diff --git a/utils/addId b/utils/addId
deleted file mode 100644
index c23389c525dabf58bd856b198249f3599aab49f6..0000000000000000000000000000000000000000
--- a/utils/addId
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/sh
-
-if [ $# -lt 1 ] ; then
-  echo "Usage: addId files" 1>&2
-  exit 1
-else 
-#  echo "/* \$Id\$ */" > _tmp_string_
-  echo "# \$Id\$" > _tmp_string_
-#  echo "c \$Id\$" > _tmp_string_
-
-  for file in $@; do
-    echo Modifying $file
-    mv $file $file~
-    cat _tmp_string_ $file~ > $file
-  done
-
-  rm -f _tmp_string_
-fi
-
-
diff --git a/utils/build_machines b/utils/build_machines
deleted file mode 100644
index c8698884abd8c371ead3bb757fcde42a336f4769..0000000000000000000000000000000000000000
--- a/utils/build_machines
+++ /dev/null
@@ -1,14 +0,0 @@
-Windows elap15.montefiore.ulg.ac.be
-Linux   elap21.montefiore.ulg.ac.be
-TRU64   elap53.montefiore.ulg.ac.be
-IRIX    elap20.montefiore.ulg.ac.be
-SunOS   montef01.montefiore.ulg.ac.be
-HP-UX   stokes.ltas.ulg.ac.be
-AIX     sp2s.ulg.ac.be
-
-
-Where to change the version number?
-1) Makfile
-2) doc/VERSIONS
-3) doc/gmsh.html
-
diff --git a/utils/converters/Makefile b/utils/converters/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..0847a67273666e820cc4f17f5624652333a9c29a
--- /dev/null
+++ b/utils/converters/Makefile
@@ -0,0 +1,32 @@
+# $Id: Makefile,v 1.1 2003-05-09 16:29:58 geuzaine Exp $
+#
+# Copyright (C) 1997-2003 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 ../../variables
+
+dxf2geo: dxf2geo.c message.c 
+	${CXX} ${OPTIM} -o ../../bin/dxf2geo -I../../DataStr\
+              dxf2geo.c message.c ../../lib/libGmshDataStr.a -lm
+
+clean:
+	rm -f *.o
+
+depend:
+	true
diff --git a/utils/dxf2geo.c b/utils/converters/dxf2geo.c
similarity index 99%
rename from utils/dxf2geo.c
rename to utils/converters/dxf2geo.c
index d5106a4d4a8c119ddaddf6c652af3733054f1fdc..8d3d06886fabcfbdf87d2a2062e9d2fcaf38d5b3 100644
--- a/utils/dxf2geo.c
+++ b/utils/converters/dxf2geo.c
@@ -1,4 +1,4 @@
-// $Id: dxf2geo.c,v 1.7 2003-03-21 00:52:49 geuzaine Exp $
+// $Id: dxf2geo.c,v 1.1 2003-05-09 16:29:59 geuzaine Exp $
 //
 // Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle
 //
diff --git a/utils/converters/maya/edgeVertexOrder.mel b/utils/converters/maya/edgeVertexOrder.mel
new file mode 100644
index 0000000000000000000000000000000000000000..793556702a347a1cbe8a79b73a016480ab74602c
--- /dev/null
+++ b/utils/converters/maya/edgeVertexOrder.mel
@@ -0,0 +1,66 @@
+/***********************************************************
+
+  This mel script was written based on the
+  MEL How-to by Joey Ponthieux (Video
+  Applications Group, NASA Langley Research
+  Center). 
+
+  @see
+
+     http://www.ewertb.com/maya/mel/mel_a55.html
+
+ ***********************************************************/
+
+global proc string[] edgeVertexOrder( string $inputEdge, string $inputFace )
+{
+  string $edgeVertexOrder[];
+
+  string $vertexOrder[];
+
+  // Note: polyListComponentConversion will return the components relative
+  //       to the TRANSFORM node.  You may want to add an assertion/conversion
+  //       for the input arguments so they are relative to a transform.
+  //       If the input arguments are shape-relative then this procedure will FAIL.
+
+  // Get vertex order of face
+  string $vtxFace[] = `polyListComponentConversion -fromFace -toVertexFace $inputFace`;
+
+  // Use filterExpand to individualize each .vtxFace component in $vtxFace
+  $vtxFace = `filterExpand -sm 70 -expand true $vtxFace`;
+
+  for ( $vf in $vtxFace )
+  {
+    // Get vertex for this vtxFace
+    string $vertex[] = `polyListComponentConversion -fromVertexFace -toVertex $vf`;
+
+    // And append to our result
+    $vertexOrder[ size($vertexOrder) ] = $vertex[0];
+  }
+
+  // Now, check each vertex pair to see if it matches the specified edge
+  for ( $v = 0; $v < size($vertexOrder); $v++ )
+  {
+    int $nextVtx = ( $v < ( size($vertexOrder) - 1 ) ? $v + 1 : 0 );
+
+    // Use two successive vertices to derive internal edge
+
+    string $edge[] = `polyListComponentConversion -fromVertex -toEdge
+                    -internal $vertexOrder[$v] $vertexOrder[$nextVtx]`;
+
+    // Does this match?
+    if ( $edge[0] == $inputEdge )
+    {
+      $edgeVertexOrder[0] = $vertexOrder[$v];
+      $edgeVertexOrder[1] = $vertexOrder[$nextVtx];
+
+      // As soon as a match is found we can stop looking.
+      break;
+    }
+  }
+
+  // Warn if $inputEdge not found in $inputFace
+  if ( size( $edgeVertexOrder ) == 0 )
+    warning ( $inputEdge + " is not part of " + $inputFace );
+
+  return $edgeVertexOrder;
+}
diff --git a/utils/converters/maya/gmsh.mel b/utils/converters/maya/gmsh.mel
new file mode 100644
index 0000000000000000000000000000000000000000..8432e8df02f1e6babf108d15bf2638c7f93f5e67
--- /dev/null
+++ b/utils/converters/maya/gmsh.mel
@@ -0,0 +1,217 @@
+//-----------------------------------------------------------------
+//
+//  Copyright (c) 2003
+//
+//           Department of Computer Science
+//              University of Copenhagen
+//                      (DIKU)
+//
+//                       and
+//
+//  School of Dentistry, Dept. of Pediatric Dentistry
+//              University of Copenhagen
+//                       (3DLab)
+//
+//  All Rights Reserved.
+//
+//  This software is provided as is WITHOUT ANY WARRANTY; Use it on
+//  your own risk.
+//
+//  Please send remarks, questions and bug reports to simulation@diku.dk
+//
+//-------------------------------------------------------------------
+
+/**
+ * Maya to gmsh export MEL script.
+ * How to use:
+ *
+ *    1) Add mel-script to your script path
+ *    2) write for instance 
+ *
+ *         "gmsh pCube1 0.5 myfile.geo"
+ *
+ *       on the command line (in Maya)
+ *
+ *  This mel script uses the auxiliary script 
+ *  edgeVertexOrder.mel. Most of the mel code
+ *  was written based on the MEL How-to by Joey
+ *  Ponthieux (Video Applications Group, NASA
+ *  Langley Research Center
+ *
+ * @see
+ *
+ *    http://www.ewertb.com/maya/mel/mel_a55.html
+ *
+ * @param obj
+ * @param length
+ * @param fileName
+ */
+global proc gmsh(string $obj, float $length, string $fileName)
+{
+  if ($length <= 0)
+  {
+    error "length must be positive!";
+  }
+
+  if( !`objExists $obj` ) 
+  {
+    error "No object of that name!";
+  }
+
+  string $notPoly = "Nothing counted : no polygonal object is selected.";
+  if(`polyEvaluate -fmt -v $obj` == $notPoly)
+  {
+    error "Only works on polygons!";
+  }
+
+  string $out = "";
+
+  int $fileID = `fopen $fileName "w"`;
+
+  $out = "\n//--- Characteristic Length ---------\n\n";
+  fprint $fileID $out;
+  $out = "\tlength =" + $length +";\n";
+  fprint $fileID $out;
+
+  int $region = 100;
+ 
+    $out = "\n//--- vertices of mesh " + $obj + "--------------\n\n";
+    fprint $fileID $out;
+
+    //--- Get number of vertices in mesh
+    int $vertexCount[] = `polyEvaluate -v $obj`;
+
+    for ($i=0; $i < $vertexCount[0]; ++$i)
+    {
+      //--- get coordinates of the i'th vertex
+      float $coords[] = eval("pointPosition " +$obj + ".vtx["+$i+"]");
+      $out = "\tPoint(" +($i+1)+ ") = {" +$coords[0]+ "," +$coords[1]+ "," +$coords[2]+ ",length} ;\n";
+      fprint $fileID $out;
+    }
+
+    $out = "\n//--- edges of mesh " + $obj + "--------------\n\n";
+    fprint $fileID $out;
+
+
+
+    //--- Get number of edges in mesh
+    int $edgeCount[] = `polyEvaluate -e $obj`;
+
+    for ($i=0; $i < $edgeCount[0]; ++$i)
+    {
+      //--- get indices of the end nodes 
+      string $edge = $obj + ".e["+$i+"]";
+      string $attr[] = `listAttr $edge`;
+
+      int $idxA = match( "[0-9]+", $attr[0] );
+      int $idxB = match( "[0-9]+", $attr[4] );
+
+      $out = "\tLine(" +($i+1)+ ") = {" +($idxA+1)+ "," +($idxB+1)+ "} ;\n";
+      fprint $fileID $out;
+    }
+
+    $out = "\n\tn = " + $edgeCount[0] + " ; // Last edge index \n" ;
+    fprint $fileID $out;
+
+
+    $out = "\n//--- faces of mesh " + $obj + "--------------\n\n";
+    fprint $fileID $out;
+
+    int $faceCount[] = `polyEvaluate -f $obj`;
+    int $count = 0;
+
+    for ($i=0; $i < $faceCount[0]; ++$i) 
+    {
+      string $facet = $obj + ".f["+$i+"]";
+
+      string $vtxFace[] = `polyListComponentConversion -fromFace -toVertexFace $facet`;
+
+      $vtxFace = `filterExpand -sm 70 -expand true $vtxFace`;
+
+      // Array's to store our result
+      string $edgeOrder[];
+      int $edges[];
+      int $numEdges = 0;
+
+      for ( $vf in $vtxFace )
+      {
+        // Get edge for this vtxFace
+        string $edge[] = `polyListComponentConversion -fromVertexFace -toEdge $vf`;
+        $edge = `filterExpand -sm 32 -expand true $edge`;
+
+        // And append to our result
+        string $tmpStr = $edge[0];
+        $edgeOrder[ $numEdges ] = $tmpStr;
+
+        // Hack to get rid of object name, which includes a number as well
+        $tmpStr =  match( "\[[0-9]+\]", $tmpStr );
+        $edges[ $numEdges ] = match( "[0-9]+", $tmpStr );
+	$edges[ $numEdges ] = $edges[ $numEdges ] +1; // converting to gmsh idx
+
+
+	// Check order of vertices in edge for this face
+	string $attr[] = `listAttr $edge[0]`;
+
+        int $storedIdxA = match( "[0-9]+", $attr[0] );
+        int $storedIdxB = match( "[0-9]+", $attr[4] );
+
+	string $res[] = `edgeVertexOrder $edge[0] $facet`;
+	if ( size($res) > 0)
+	{
+          string $tmpIdxA = match( "\[[0-9]+\]", $res[0] );
+          string $tmpIdxB = match( "\[[0-9]+\]", $res[1] );
+          int $idxA = match( "[0-9]+", $tmpIdxA );
+          int $idxB = match( "[0-9]+", $tmpIdxB );
+	
+          if ( $idxA == $storedIdxB && $idxB == $storedIdxA )
+	    $edges[ $numEdges ] = - $edges[ $numEdges ];
+	}
+
+        $numEdges++;
+      }
+
+      $out = "\tLine Loop(n+"+ ($count+1)  +") =  {"+($edges[0]);
+      for( $k = 1; $k < $numEdges; ++$k)
+      {
+        $out = $out + "," + ($edges[$k]) ;
+      }
+      $out = $out + "};\n";
+      fprint $fileID $out;
+
+      $out = "\tPlane Surface(n+"+ ($count+2) +") = {n+"+ ($count+1)  +"} ;\n\n" ;
+      fprint $fileID $out;
+
+      $count = $count + 2 ;
+    }
+
+    $out = "\tm = n +" +$count+ " ; // Last face index \n";
+    fprint $fileID $out;
+
+    $out = "\n//--- Mesh " +$obj+ "---------------------------------------\n\n";
+    fprint $fileID $out;
+
+
+    string $faceIndices = "n+2";
+    for ($i=1; $i < $faceCount[0]; ++$i) 
+    {
+      $faceIndices = $faceIndices + ",n+" + (($i+1)*2);
+    }
+
+    $out = "\tSurface Loop(m+1) = {" +$faceIndices+ "} ;\n";
+    fprint $fileID $out;
+    $out = "\tVolume(m+2) = {m+1} ;\n";
+    fprint $fileID $out;
+
+    $out = "\n//--- Set region number of mesh " +$obj+ "---------------------\n\n";
+    fprint $fileID $out;
+
+    $out = "\tMyRegionNumber  = " + $region + " ;\n";
+    fprint $fileID $out;
+    $out = "\tPhysical Volume (MyRegionNumber) = {m+2} ;\n";
+    fprint $fileID $out;
+
+
+  string $fullPath = `file -q -exn $fileName`;
+  fclose $fileID;
+  print ("Done writing gmsh geometry file: "+$fullPath+"\n");
+}
diff --git a/utils/message.c b/utils/converters/message.c
similarity index 100%
rename from utils/message.c
rename to utils/converters/message.c
diff --git a/utils/gmsh128x128-smooth.png b/utils/icons/gmsh128x128-smooth.png
similarity index 100%
rename from utils/gmsh128x128-smooth.png
rename to utils/icons/gmsh128x128-smooth.png
diff --git a/utils/gmsh128x128.png b/utils/icons/gmsh128x128.png
similarity index 100%
rename from utils/gmsh128x128.png
rename to utils/icons/gmsh128x128.png
diff --git a/utils/gmsh16x16-smooth.png b/utils/icons/gmsh16x16-smooth.png
similarity index 100%
rename from utils/gmsh16x16-smooth.png
rename to utils/icons/gmsh16x16-smooth.png
diff --git a/utils/gmsh16x16.png b/utils/icons/gmsh16x16.png
similarity index 100%
rename from utils/gmsh16x16.png
rename to utils/icons/gmsh16x16.png
diff --git a/utils/gmsh32x32-smooth.png b/utils/icons/gmsh32x32-smooth.png
similarity index 100%
rename from utils/gmsh32x32-smooth.png
rename to utils/icons/gmsh32x32-smooth.png
diff --git a/utils/gmsh32x32.png b/utils/icons/gmsh32x32.png
similarity index 100%
rename from utils/gmsh32x32.png
rename to utils/icons/gmsh32x32.png
diff --git a/utils/gmsh48x48-smooth.png b/utils/icons/gmsh48x48-smooth.png
similarity index 100%
rename from utils/gmsh48x48-smooth.png
rename to utils/icons/gmsh48x48-smooth.png
diff --git a/utils/gmsh48x48.png b/utils/icons/gmsh48x48.png
similarity index 100%
rename from utils/gmsh48x48.png
rename to utils/icons/gmsh48x48.png
diff --git a/utils/gmsh64x64-smooth.png b/utils/icons/gmsh64x64-smooth.png
similarity index 100%
rename from utils/gmsh64x64-smooth.png
rename to utils/icons/gmsh64x64-smooth.png
diff --git a/utils/gmsh64x64.png b/utils/icons/gmsh64x64.png
similarity index 100%
rename from utils/gmsh64x64.png
rename to utils/icons/gmsh64x64.png
diff --git a/utils/indent.sh b/utils/misc/indent.sh
old mode 100644
new mode 100755
similarity index 100%
rename from utils/indent.sh
rename to utils/misc/indent.sh
diff --git a/utils/make-dmg.sh b/utils/misc/makedmg.sh
old mode 100644
new mode 100755
similarity index 100%
rename from utils/make-dmg.sh
rename to utils/misc/makedmg.sh
diff --git a/utils/modifs b/utils/misc/modifs.csh
similarity index 100%
rename from utils/modifs
rename to utils/misc/modifs.csh
diff --git a/utils/replace b/utils/misc/replace.bash
similarity index 100%
rename from utils/replace
rename to utils/misc/replace.bash
diff --git a/utils/test-gmsh b/utils/misc/testgeo.sh
old mode 100644
new mode 100755
similarity index 100%
rename from utils/test-gmsh
rename to utils/misc/testgeo.sh
diff --git a/utils/tut2html b/utils/misc/tut2html.sh
old mode 100644
new mode 100755
similarity index 100%
rename from utils/tut2html
rename to utils/misc/tut2html.sh
diff --git a/utils/unix2dos.awk b/utils/misc/unix2dos.awk
similarity index 100%
rename from utils/unix2dos.awk
rename to utils/misc/unix2dos.awk
diff --git a/utils/unix2dos b/utils/misc/unix2dos.bash
similarity index 100%
rename from utils/unix2dos
rename to utils/misc/unix2dos.bash
diff --git a/utils/untabify b/utils/misc/untabify.sh
old mode 100644
new mode 100755
similarity index 100%
rename from utils/untabify
rename to utils/misc/untabify.sh
diff --git a/utils/oldmake b/utils/oldmake
deleted file mode 100644
index f71966d6ad304ed4ed83c5f680bf827b2f637a0f..0000000000000000000000000000000000000000
--- a/utils/oldmake
+++ /dev/null
@@ -1,735 +0,0 @@
-# $Id: oldmake,v 1.1 2003-02-11 23:01:17 geuzaine Exp $
-
-GMSH_MAJOR_VERSION = 1
-GMSH_MINOR_VERSION = 37
-GMSH_PATCH_VERSION = 1
-
-MAKE = make
-CXX = c++
-CC = cc
-FLAGS = -g -Wall
-RM = rm
-RMFLAGS = -f 
-
-FLTK_DIR = $(HOME)/SOURCES/fltk-1.1
-
-# ----------------------------------------------------------------------
-#  Gmsh definitions
-# ----------------------------------------------------------------------
-
-GMSH_COMMON_DIR = Common DataStr Geo Mesh Numeric Parallel Parser Plugin Triangle
-GMSH_BOX_DIR =$(GMSH_COMMON_DIR) Box
-GMSH_FLTK_DIR = $(GMSH_COMMON_DIR) Graphics Fltk jpeg
-GMSH_DIR = $(GMSH_COMMON_DIR) Box Graphics Fltk jpeg utils
-GMSH_BIN_DIR = bin
-GMSH_LIB_DIR = lib
-GMSH_DOC_DIR = doc
-GMSH_DEMO_DIR = demos
-GMSH_TUTORIAL_DIR = tutorial
-GMSH_ARCHIVE_DIR = archives
-
-GMSH_BOX_LIB = -L$(GMSH_LIB_DIR) -lGmshBox -lGmshParser -lGmshMesh -lGmshGeo -lGmshNumeric\
-               -lGmshPlugin -lGmshCommon -lGmshDataStr -lGmshParallel -lGmshTriangle
-GMSH_FLTK_LIB = -L$(GMSH_LIB_DIR) -lGmshFltk -lGmshParser -lGmshGraphics -lGmshMesh\
-                -lGmshGeo -lGmshNumeric -lGmshCommon -lGmshDataStr -lGmshJpeg -lGmshPlugin\
-                -lGmshParallel -lGmshTriangle
-
-GMSH_VERSION_FILE = Common/GmshVersion.h
-GMSH_RELEASE = $(GMSH_MAJOR_VERSION).$(GMSH_MINOR_VERSION).$(GMSH_PATCH_VERSION)
-GMSH_ARCHIVE = $(GMSH_ARCHIVE_DIR)/gmsh-`date "+%Y.%m.%d"`
-GMSH_UNAME = `uname`
-GMSH_SOURCES = `find . \( ! -name "*.tar*" -a ! -name "*.tgz" \
-                       -a ! -name "*.o"    -a ! -name "lib*.a"   \
-                       -a ! -name "*.msh"  -a ! -name "*.bak" \
-                       -a ! -name "gmsh"   -a ! -name "gmsh-*"\
-                       -a ! -type d \)`
-
-default:
-	@echo "Type one of the following:"
-	@echo "  make aix                  for IBM RS/6000 with AIX"
-	@echo "  make cygwin               for Win95/NT using Cygnus-Win32"
-	@echo "  make gcc                  for a generic system with GCC"
-	@echo "  make hpux                 for HP systems with HPUX 9.x/10.x using GCC"
-	@echo "  make irix                 for SGI systems with IRIX"
-	@echo "  make linux                for Linux systems"
-	@echo "  make macosx               for Macintosh with Mac OS X and GCC"
-	@echo "  make osf1                 for DEC Alpha systems with OSF/1"
-	@echo "  make sunos                for Suns with SunOS"
-	@echo ""
-	@echo "You need fltk (http://www.fltk.org) version 1.1.x installed"
-	@echo "in $(FLTK_DIR) (or add \"FLTK_DIR=dir\""
-	@echo "to the above commands, e.g., make linux \"FLTK_DIR=/opt/fltk\")"
-	@echo ""
-	@echo "If your system is not listed above, edit the Makefile"
-
-# ----------------------------------------------------------------------
-# Ready to compile for some platforms
-# ----------------------------------------------------------------------
-
-#
-# Source distribution
-#
-source:
-	tar zcvf gmsh.tgz `ls README* Makefile */Makefile */*.[chyl] */*.[ch]pp\
-                           */*.rc */*.res */*.ico */*.icns */*.pl */*.pm */*.opt */*.spec`\
-                           doc demos tutorial
-	mkdir gmsh-$(GMSH_RELEASE)
-	cd gmsh-$(GMSH_RELEASE) && tar zxvf ../gmsh.tgz
-	rm -f gmsh.tgz
-	cd gmsh-$(GMSH_RELEASE) && rm -rf CVS */CVS */*/CVS */.globalrc $(GMSH_VERSION_FILE)
-#	cd gmsh-$(GMSH_RELEASE) && zip -r gmsh-$(GMSH_RELEASE)-source.zip *
-#	mv gmsh-$(GMSH_RELEASE)/gmsh-$(GMSH_RELEASE)-source.zip .
-	tar zcvf gmsh-$(GMSH_RELEASE)-source.tgz gmsh-$(GMSH_RELEASE)
-	rm -rf gmsh-$(GMSH_RELEASE)
-
-#
-# Generic little endian machine (e.g. with gcc)
-#
-compile: initialtag
-	@for i in $(GMSH_FLTK_DIR); do (cd $$i && $(MAKE) \
-           "CXX=$(CXX)" \
-           "CC=$(CC)" \
-           "OPT_FLAGS=$(FLAGS)" \
-           "OS_FLAGS=-D_LITTLE_ENDIAN" \
-           "VERSION_FLAGS=-D_FLTK" \
-           "GL_INCLUDE=" \
-           "GUI_INCLUDE=-I$(FLTK_DIR)" \
-        ); done
-link:
-	$(CXX) $(FLAGS) -o $(GMSH_BIN_DIR)/gmsh $(GMSH_FLTK_LIB)\
-               -L$(FLTK_DIR)/lib -lfltk_gl -lGLU -lGL -lfltk\
-               -L/usr/X11R6/lib -lX11 -lm
-gcc: compile link
-
-#
-# Linux
-#
-compile-linux: initialtag
-	@for i in $(GMSH_FLTK_DIR); do (cd $$i && $(MAKE) \
-           "CXX=$(CXX)" \
-           "CC=$(CC)" \
-           "OPT_FLAGS=-O3 -Wall -Wno-uninitialized" \
-           "OS_FLAGS=-D_LITTLE_ENDIAN" \
-           "VERSION_FLAGS=-D_FLTK" \
-           "GL_INCLUDE=" \
-           "GUI_INCLUDE=-I$(FLTK_DIR)" \
-        ); done
-link-linux:
-	$(CXX) -o $(GMSH_BIN_DIR)/gmsh $(GMSH_FLTK_LIB)\
-                 -L$(FLTK_DIR)/lib -lfltk_gl -lGLU -lGL -lfltk\
-                 -L/usr/X11R6/lib -lX11 -lm -ldl
-linux: compile-linux link-linux
-
-#
-# Linux fltk 2.0 (beta)
-#
-compile-fltk2: initialtag
-	@for i in $(GMSH_FLTK_DIR); do (cd $$i && $(MAKE) \
-           "CXX=$(CXX)" \
-           "CC=$(CC)" \
-           "OPT_FLAGS=-g -Wall" \
-           "OS_FLAGS=-D_LITTLE_ENDIAN" \
-           "VERSION_FLAGS=-D_FLTK" \
-           "GL_INCLUDE=" \
-           "GUI_INCLUDE=-I$(HOME)/SOURCES/fltk-2.0" \
-        ); done
-link-fltk2:
-	$(CXX) -o $(GMSH_BIN_DIR)/gmsh $(GMSH_FLTK_LIB)\
-                 $(HOME)/SOURCES/fltk-2.0/lib/libfltk_gl.so.2\
-                 -lGLU -lGL \
-                 $(HOME)/SOURCES/fltk-2.0/lib/libfltk.so.2 \
-                 -L/usr/X11R6/lib -lX11 -lm
-fltk2: compile-fltk2 link-fltk2
-
-#
-# Linux fltk 1.0 (obsolete)
-#
-compile-fltk1: initialtag
-	@for i in $(GMSH_FLTK_DIR); do (cd $$i && $(MAKE) \
-           "CXX=$(CXX)" \
-           "CC=$(CC)" \
-           "OPT_FLAGS=-g -Wall" \
-           "OS_FLAGS=-D_LITTLE_ENDIAN" \
-           "VERSION_FLAGS=-D_FLTK" \
-           "GL_INCLUDE=" \
-           "GUI_INCLUDE=-I$(HOME)/SOURCES/fltk" \
-        ); done
-link-fltk1:
-	$(CXX) -o $(GMSH_BIN_DIR)/gmsh $(GMSH_FLTK_LIB)\
-                -L$(HOME)/SOURCES/fltk/lib -lfltk -lGLU -lGL \
-                -L/usr/X11R6/lib -lX11 -lm
-fltk1: compile-fltk1 link-fltk1
-
-#
-# Linux, gcc-2.95.x (optimized build is very buggy)
-# 
-compile-linux-gcc-2.95: initialtag
-	@for i in $(GMSH_FLTK_DIR); do (cd $$i && $(MAKE) \
-           "CXX=$(HOME)/gcc-2.95.3/bin/g++" \
-           "CC=$(HOME)/gcc-2.95.3/bin/gcc" \
-           "OPT_FLAGS=-g" \
-           "OS_FLAGS=-D_LITTLE_ENDIAN" \
-           "VERSION_FLAGS=-D_FLTK" \
-           "GL_INCLUDE=-I/usr/X11R6/include" \
-           "GUI_INCLUDE=-I$(FLTK_DIR)" \
-        ); done
-link-linux-gcc-2.95:
-	$(HOME)/gcc-2.95.3/bin/g++ -o $(GMSH_BIN_DIR)/gmsh $(GMSH_FLTK_LIB)\
-                 -L$(FLTK_DIR)/lib -lfltk_gl -lGLU -lGL -lfltk\
-                 -L/usr/X11R6/lib -lX11 -lm -ldl
-linux-gcc-2.95: compile-linux-gcc-2.95 link-linux-gcc-2.95
-distrib-linux-gcc-2.95:
-	make clean
-	make tag
-	@for i in $(GMSH_BOX_DIR); do (cd $$i && $(MAKE) \
-           "CXX=$(HOME)/gcc-2.95.3/bin/g++" \
-           "CC=$(HOME)/gcc-2.95.3/bin/gcc" \
-           "OPT_FLAGS=-g" \
-           "OS_FLAGS=-D_LITTLE_ENDIAN" \
-           "VERSION_FLAGS=-D_BLACKBOX" \
-           "GL_INCLUDE=" \
-           "GUI_INCLUDE=" \
-        ); done
-	$(HOME)/gcc-2.95.3/bin/g++ -o $(GMSH_BIN_DIR)/gmsh-batch $(GMSH_BOX_LIB) -lm -ldl
-	make clean
-	make linux-gcc-2.95
-	make distrib
-rpm:
-	tar zcvf gmsh-$(GMSH_RELEASE).tar.gz $(GMSH_SOURCES)
-	mv gmsh-$(GMSH_RELEASE).tar.gz /usr/src/redhat/SOURCES
-	rpm -bb --define 'gmshversion $(GMSH_RELEASE)' utils/gmsh.spec
-	cp /usr/src/redhat/RPMS/i386/gmsh-$(GMSH_RELEASE)-?.i386.rpm .
-	cp /usr/src/redhat/BUILD/gmsh-$(GMSH_RELEASE)/gmsh-$(GMSH_RELEASE)-$(GMSH_UNAME).tgz .
-
-#
-# Linux SCOREC
-#
-compile-linux-scorec: initialtag
-	@for i in $(GMSH_FLTK_DIR); do (cd $$i && $(MAKE) \
-           "CXX=$(CXX)" \
-           "CC=$(CC)" \
-           "OPT_FLAGS=-O2" \
-           "VERSION_FLAGS=-D_FLTK" \
-           "OS_FLAGS=-D_LITTLE_ENDIAN" \
-           "GL_INCLUDE=" \
-           "GUI_INCLUDE=-I/users/develop/develop/visual/fltk/1.0/include" \
-        ); done
-link-linux-scorec:
-	$(CXX) -o $(GMSH_BIN_DIR)/gmsh-linux $(GMSH_FLTK_LIB) -lGLU -lGL \
-                 /users/develop/develop/visual/fltk/1.0/lib/x86_linux/libfltk.a\
-                 -L/usr/X11R6/lib -lX11 -lm -ldl 
-linux-scorec: compile-linux-scorec link-linux-scorec
-
-#
-# Digital (Compaq) OSF1/Digital Unix/Tru64
-#
-compile-osf1: initialtag
-	@for i in $(GMSH_FLTK_DIR); do (cd $$i && $(MAKE) \
-           "CXX=$(CXX)" \
-           "CC=$(CC)" \
-           "OPT_FLAGS=-O2" \
-           "OS_FLAGS=-D_LITTLE_ENDIAN" \
-           "VERSION_FLAGS=-D_FLTK" \
-           "GL_INCLUDE=" \
-           "GUI_INCLUDE=-I$(FLTK_DIR)" \
-        ); done
-link-osf1:
-	$(CXX) -o $(GMSH_BIN_DIR)/gmsh $(GMSH_FLTK_LIB)\
-                 -L$(FLTK_DIR)/lib -lfltk_gl -lGLU -lGL -lfltk\
-                 -lX11 -lm
-osf1: compile-osf1 link-osf1
-distrib-osf1:
-	make clean
-	make tag
-	@for i in $(GMSH_BOX_DIR); do (cd $$i && $(MAKE) \
-           "CXX=$(CXX)" \
-           "CC=$(CC)" \
-           "OPT_FLAGS=-O2" \
-           "OS_FLAGS=-D_LITTLE_ENDIAN" \
-           "VERSION_FLAGS=-D_BLACKBOX" \
-           "GL_INCLUDE=" \
-           "GUI_INCLUDE=" \
-        ); done
-	$(CXX) -o $(GMSH_BIN_DIR)/gmsh-batch $(GMSH_BOX_LIB) -lm
-	make clean
-	make osf1
-	make distrib
-#
-# HP-UX
-#
-compile-hpux: initialtag
-	@for i in $(GMSH_FLTK_DIR); do (cd $$i && $(MAKE) \
-           "CXX=g++" \
-           "CC=gcc" \
-           "OPT_FLAGS=-O2" \
-           "OS_FLAGS=" \
-           "VERSION_FLAGS=-D_FLTK -D_NODLL" \
-           "GL_INCLUDE=-I$(HOME)/SOURCES/Mesa-3.1/include" \
-           "GUI_INCLUDE=-I$(FLTK_DIR)" \
-        ); done
-link-hpux:
-	g++ -Wl,+s -o $(GMSH_BIN_DIR)/gmsh $(GMSH_FLTK_LIB)\
-                      -L$(FLTK_DIR)/lib -lfltk_gl\
-                      -L$(HOME)/SOURCES/Mesa-3.1/lib -lGLU -lGL -lfltk\
-                      -lX11 -lm
-hpux: compile-hpux link-hpux
-distrib-hpux:
-	make clean
-	make tag
-	@for i in $(GMSH_BOX_DIR); do (cd $$i && $(MAKE) \
-           "CXX=g++" \
-           "CC=gcc" \
-           "OPT_FLAGS=-O2" \
-           "OS_FLAGS=" \
-           "VERSION_FLAGS=-D_BLACKBOX -D_NODLL" \
-           "GL_INCLUDE=" \
-           "GUI_INCLUDE=" \
-        ); done
-	g++ -o $(GMSH_BIN_DIR)/gmsh-batch $(GMSH_BOX_LIB) -lm
-	make clean
-	make hpux
-	make distrib
-#
-# IBM AIX
-#
-compile-aix: initialtag
-	@for i in $(GMSH_FLTK_DIR); do (cd $$i && $(MAKE) \
-           "CXX=$(CXX)" \
-           "CC=$(CC)" \
-           "OPT_FLAGS=-O2" \
-           "OS_FLAGS=-D_BSD" \
-           "VERSION_FLAGS=-D_FLTK -D_NODLL" \
-           "GL_INCLUDE=" \
-           "GUI_INCLUDE=-I$(FLTK_DIR)" \
-        ); done
-link-aix:
-	$(CXX) -o $(GMSH_BIN_DIR)/gmsh $(GMSH_FLTK_LIB)\
-                 -L$(FLTK_DIR)/lib -lfltk_gl -lGLU -lGL -lfltk\
-                  -lX11 -lm
-aix: compile-aix link-aix
-distrib-aix:
-	make clean
-	make tag
-	@for i in $(GMSH_BOX_DIR); do (cd $$i && $(MAKE) \
-           "CXX=$(CXX)" \
-           "CC=$(CC)" \
-           "OPT_FLAGS=-O2" \
-           "OS_FLAGS=-D_BSD" \
-           "VERSION_FLAGS=-D_BLACKBOX -D_NODLL" \
-           "GL_INCLUDE=" \
-           "GUI_INCLUDE=" \
-        ); done
-	$(CXX) -o $(GMSH_BIN_DIR)/gmsh-batch $(GMSH_BOX_LIB) -lm
-	make clean
-	make aix
-	make distrib
-#
-# SGI Irix
-#
-compile-irix: initialtag
-	@for i in $(GMSH_FLTK_DIR); do (cd $$i && $(MAKE) \
-           "CXX=CC" \
-           "CC=cc" \
-           "OPT_FLAGS=-O2 -OPT:Olimit=0 -LANG:std" \
-           "RANLIB=true"\
-           "AR=CC -mips3 -n32 -ar -o"\
-           "OS_FLAGS=-mips3 -n32" \
-           "VERSION_FLAGS=-D_FLTK" \
-           "GL_INCLUDE=" \
-           "GUI_INCLUDE=-I$(FLTK_DIR)" \
-        ); done
-link-irix:
-	CC -O2 -mips3 -n32 -o $(GMSH_BIN_DIR)/gmsh $(GMSH_FLTK_LIB)\
-               -L$(FLTK_DIR)/lib -lfltk_gl -lfltk -lX11 -lGLU -lGL -lm
-irix: compile-irix link-irix
-distrib-irix:
-	make clean
-	make tag
-	@for i in $(GMSH_BOX_DIR); do (cd $$i && $(MAKE) \
-           "CXX=CC" \
-           "CC=cc" \
-           "OPT_FLAGS=-O2 -OPT:Olimit=0 -LANG:std" \
-           "RANLIB=true"\
-           "AR=CC -mips3 -n32 -ar -o"\
-           "OS_FLAGS=-mips3 -n32" \
-           "VERSION_FLAGS=-D_BLACKBOX" \
-           "GL_INCLUDE=" \
-           "GUI_INCLUDE=" \
-        ); done
-	CC -O2 -mips3 -n32 -o $(GMSH_BIN_DIR)/gmsh-batch $(GMSH_BOX_LIB) -lm
-	make clean
-	make irix
-	make distrib
-
-#
-# Cygwin
-#
-compile-cygwin: initialtag
-	@for i in $(GMSH_FLTK_DIR); do (cd $$i && $(MAKE) \
-           "CXX=g++" \
-           "CC=gcc" \
-           "OPT_FLAGS=-O2" \
-           "OS_FLAGS=-mwindows -DWIN32 -D_LITTLE_ENDIAN" \
-           "VERSION_FLAGS=-D_FLTK" \
-           "GL_INCLUDE=" \
-           "GUI_INCLUDE=-I$(FLTK_DIR)" \
-        ); done
-link-cygwin:
-	g++ -Wl,--subsystem,windows -mwindows -o $(GMSH_BIN_DIR)/gmsh.exe\
-                 $(GMSH_FLTK_LIB) Fltk/Win32Icon.res $(FLTK_DIR)/lib/libfltk_gl.a\
-                 -lglu32 -lopengl32 $(FLTK_DIR)/lib/libfltk.a \
-                 -lole32 -luuid -lcomctl32 -lwsock32 -lm
-cygwin: compile-cygwin link-cygwin
-distrib-cygwin:
-	make clean
-	make tag
-	make cygwin
-	make distrib-win
-
-#
-# Cygwin gertha-buro
-#
-cygwin-gertha-buro: initialtag
-	@for i in $(GMSH_FLTK_DIR); do (cd $$i && $(MAKE) \
-           "CXX=g++" \
-           "CC=gcc" \
-           "OPT_FLAGS=-O2" \
-           "OS_FLAGS=-DWIN32 -D_LITTLE_ENDIAN" \
-           "VERSION_FLAGS=-D_FLTK" \
-           "GL_INCLUDE=" \
-           "GUI_INCLUDE=-I../../fltk" \
-        ); done
-	g++ -Wl,--subsystem,windows -o $(GMSH_BIN_DIR)/gmsh.exe $(GMSH_FLTK_LIB)\
-                 Fltk/Win32Icon.res ../fltk/lib/libfltk.a\
-                 -lglu32 -lopengl32 -lgdi32 -lwsock32 -lm
-
-#
-# Cygwin laptop jf
-#
-cygwin-laptopjf: initialtag
-	@for i in $(GMSH_FLTK_DIR); do (cd $$i && $(MAKE) \
-           "CXX=g++" \
-           "CC=gcc" \
-           "OPT_FLAGS=-O2" \
-           "OS_FLAGS=-DWIN32 -D_LITTLE_ENDIAN" \
-           "VERSION_FLAGS=-D_FLTK" \
-           "GL_INCLUDE=" \
-           "GUI_INCLUDE=-I../../fltk-1.0.9" \
-        ); done
-	g++ -Wl,--subsystem,windows -o $(GMSH_BIN_DIR)/gmsh-cyg.exe $(GMSH_FLTK_LIB)\
-                 Fltk/Win32Icon.res ../fltk-1.0.9/lib/libfltk.a\
-                 -lglu32 -lopengl32 -lgdi32 -lwsock32 -lm
-cygwin-laptopjf_tag: tag cygwin-laptopjf
-
-#
-# Sun SunOS
-#
-compile-sunos: initialtag
-	@for i in $(GMSH_FLTK_DIR); do (cd $$i && $(MAKE) \
-           "CXX=g++" \
-           "CC=gcc" \
-           "OPT_FLAGS=-O2" \
-           "OS_FLAGS=" \
-           "VERSION_FLAGS=-D_FLTK -D_NODLL" \
-           "GL_INCLUDE=-I$(HOME)/SOURCES/Mesa-3.1/include" \
-           "GUI_INCLUDE=-I$(FLTK_DIR)" \
-        ); done
-link-sunos:
-	g++ -o $(GMSH_BIN_DIR)/gmsh $(GMSH_FLTK_LIB)\
-                 -L$(FLTK_DIR)/lib -lfltk_gl\
-                 -L$(HOME)/SOURCES/Mesa-3.1/lib -lGLU -lGL -lfltk\
-                 -lX11 -lXext -lsocket -lnsl -ldl -lm
-sunos: compile-sunos link-sunos
-distrib-sunos:
-	make clean
-	make tag
-	@for i in $(GMSH_BOX_DIR); do (cd $$i && $(MAKE) \
-           "CXX=g++" \
-           "CC=gcc" \
-           "OPT_FLAGS=-O2" \
-           "OS_FLAGS=" \
-           "VERSION_FLAGS=-D_BLACKBOX -D_NODLL" \
-           "GL_INCLUDE=" \
-           "GUI_INCLUDE=" \
-        ); done
-	g++ -o $(GMSH_BIN_DIR)/gmsh-batch $(GMSH_BOX_LIB) -lm
-	make clean
-	make sunos
-	make distrib
-#
-# Solaris SCOREC
-#
-compile-solaris-scorec: initialtag
-	@for i in $(GMSH_FLTK_DIR); do (cd $$i && $(MAKE) \
-           "CXX=$(CXX)" \
-           "CC=$(CC)" \
-           "OPT_FLAGS=-O3" \
-           "VERSION_FLAGS=-D_FLTK" \
-           "OS_FLAGS=" \
-           "GL_INCLUDE=" \
-           "GUI_INCLUDE=-I/users/develop/develop/visual/fltk/1.0/include" \
-        ); done
-link-solaris-scorec:
-	$(CXX) -o $(GMSH_BIN_DIR)/gmsh-sun $(GMSH_FLTK_LIB) -lGLU -lGL \
-                 /users/develop/develop/visual/fltk/1.0/lib/sun4_5/libfltk-gcc.a\
-                 -L/usr/X11R6/lib -lX11 -lm -ldl -lsocket
-solaris-scorec: compile-solaris-scorec link-solaris-scorec
-
-#
-# MacOS X
-# - we don't use resource forks anymore in the distributed version, but we
-# leave the Rez step so that one can still launch a working version
-# from the command line without having to do "distrib-mac".
-# - use 'otool -L' to check linked dynamic libraries
-#
-compile-macosx: initialtag
-	@for i in $(GMSH_FLTK_DIR); do (cd $$i && $(MAKE) \
-           "CXX=$(CXX)" \
-           "CC=$(CC)" \
-           "AR=ar ruv" \
-           "OPT_FLAGS=-O2" \
-           "OS_FLAGS=" \
-           "VERSION_FLAGS=-D_FLTK -D_NODLL" \
-           "GL_INCLUDE=" \
-           "GUI_INCLUDE=-I$(FLTK_DIR)" \
-        ); done
-link-macosx:
-	$(CXX) -o $(GMSH_BIN_DIR)/gmsh $(GMSH_FLTK_LIB) -L$(FLTK_DIR)/lib -lfltk_gl -lfltk \
-               -framework AGL -framework OpenGL -framework Carbon -framework ApplicationServices
-	/Developer/Tools/Rez -t APPL -o $(GMSH_BIN_DIR)/gmsh $(FLTK_DIR)/FL/mac.r
-macosx: compile-macosx link-macosx
-distrib-macosx:
-	make clean
-	make tag
-	make macosx
-	make distrib-mac
-
-# ----------------------------------------------------------------------
-# Rules for developers
-# ----------------------------------------------------------------------
-
-gmsh: link
-
-static:
-	@for i in $(GMSH_FLTK_DIR); do (cd $$i && $(MAKE) \
-           "CXX=$(CXX)" \
-           "CC=$(CC)" \
-           "OPT_FLAGS=-O3" \
-           "OS_FLAGS=-D_LITTLE_ENDIAN" \
-           "VERSION_FLAGS=-D_FLTK" \
-           "GL_INCLUDE=-I$(HOME)/SOURCES/Mesa-static/include" \
-           "GUI_INCLUDE=-I$(FLTK_DIR)" \
-        ); done
-	$(CXX) -o $(GMSH_BIN_DIR)/gmshm $(GMSH_FLTK_LIB)\
-                 $(FLTK_DIR)/lib/libfltk_gl.a\
-                 $(HOME)/SOURCES/Mesa-static/lib/libGLU.a\
-                 $(HOME)/SOURCES/Mesa-static/lib/libGL.a\
-                 $(FLTK_DIR)/lib/libfltk.a -lX11 -lm
-
-purify:
-	purify -cache-dir=/space g++ -o $(GMSH_BIN_DIR)/gmsh-sun $(GMSH_FLTK_LIB) -lGLU -lGL \
-                 /users/develop/develop/visual/fltk/1.0/lib/sun4_5/libfltk-gcc.a\
-                 -L/usr/X11R6/lib -lX11 -lm -ldl -lsocket
-
-efence:
-	$(CXX) -o $(GMSH_BIN_DIR)/gmsh $(GMSH_FLTK_LIB)\
-                 -L$(FLTK_DIR)/lib -lfltk_gl -lGLU -lGL -lfltk\
-                 -L/usr/X11R6/lib -lX11 -lefence -lm
-
-# ----------------------------------------------------------------------
-# Utilities
-# ----------------------------------------------------------------------
-
-parser:
-	cd Parser && $(MAKE) parser
-
-utilities:
-	cd utils && $(MAKE)
-
-purge:
-	for i in "." $(GMSH_DIR) $(GMSH_LIB_DIR) $(GMSH_ARCHIVE_DIR)\
-                     $(GMSH_DEMO_DIR) $(GMSH_TUTORIAL_DIR) $(GMSH_DOC_DIR); \
-        do (cd $$i && $(RM) $(RMFLAGS) *~ *~~ .gmsh-tmp .gmsh-errors gmon.out); \
-        done
-
-clean:
-	for i in $(GMSH_DIR) $(GMSH_DOC_DIR) $(GMSH_LIB_DIR) ; \
-        do (cd $$i && $(MAKE) clean); \
-        done
-	$(RM) $(RMFLAGS) $(GMSH_VERSION_FILE)
-
-depend:
-	for i in $(GMSH_DIR); \
-        do (cd $$i && $(MAKE) depend \
-           "CXX=$(CXX)" \
-           "CC=$(CC)" \
-           "VERSION_FLAGS=-D_FLTK" \
-           "GL_INCLUDE=" \
-           "GUI_INCLUDE=-I$(FLTK_DIR)" \
-        ); done
-
-nodepend:
-	for i in $(GMSH_DIR) ; do \
-          (cd $$i && (sed '/^# DO NOT DELETE THIS LINE/q' Makefile) > Makefile.new \
-          && cp Makefile Makefile.bak \
-          && cp Makefile.new Makefile \
-          && $(RM) $(RMFLAGS) Makefile.new); \
-        done 
-
-tag:
-	$(RM) $(RMFLAGS) $(GMSH_VERSION_FILE)
-	echo "#define GMSH_MAJOR_VERSION $(GMSH_MAJOR_VERSION)" >  $(GMSH_VERSION_FILE)
-	echo "#define GMSH_MINOR_VERSION $(GMSH_MINOR_VERSION)" >> $(GMSH_VERSION_FILE)
-	echo "#define GMSH_PATCH_VERSION $(GMSH_PATCH_VERSION)" >> $(GMSH_VERSION_FILE)
-	echo "#define GMSH_VERSION  ((double)GMSH_MAJOR_VERSION + \\" >> $(GMSH_VERSION_FILE)
-	echo "                0.01 * (double)GMSH_MINOR_VERSION + \\" >> $(GMSH_VERSION_FILE)
-	echo "              0.0001 * (double)GMSH_PATCH_VERSION)"     >> $(GMSH_VERSION_FILE)
-	echo "#define GMSH_DATE     \"`date`\""      >> $(GMSH_VERSION_FILE)
-	echo "#define GMSH_HOST     \"`hostname`\""  >> $(GMSH_VERSION_FILE)
-	echo "#define GMSH_PACKAGER \"`whoami`\""    >> $(GMSH_VERSION_FILE)
-	echo "#define GMSH_OS       \"`uname -sr`\"" >> $(GMSH_VERSION_FILE)
-
-initialtag:
-	@if [ ! -r $(GMSH_VERSION_FILE) ]; then \
-          $(MAKE) tag ; \
-        fi
-
-tags:
-	gtags
-	htags
-
-tgz:
-	if (test -f $(GMSH_ARCHIVE).tar.gz); then \
-	  mv -f $(GMSH_ARCHIVE).tar.gz $(GMSH_ARCHIVE).tar.gz~; \
-	fi
-	tar cvf $(GMSH_ARCHIVE).tar $(GMSH_SOURCES)
-	gzip $(GMSH_ARCHIVE).tar
-	chmod 640 $(GMSH_ARCHIVE).tar.gz
-
-minizip:
-	tar jcvf gmsh-`date "+%Y.%m.%d"`.tar.bz2 \
-        `ls Makefile */Makefile */*.[chyl] */*.[ch]pp */*.rc */*.res */*.ico`
-
-# Add doc/COPYING as soon as we are GPL'ed
-
-distrib:
-	rm -rf gmsh-$(GMSH_RELEASE)
-	mkdir gmsh-$(GMSH_RELEASE)
-	strip $(GMSH_BIN_DIR)/gmsh
-	cp $(GMSH_BIN_DIR)/gmsh gmsh-$(GMSH_RELEASE)
-	strip $(GMSH_BIN_DIR)/gmsh-batch
-	cp $(GMSH_BIN_DIR)/gmsh-batch gmsh-$(GMSH_RELEASE)
-	cp doc/gmsh.1 doc/FORMATS doc/VERSIONS doc/FAQ doc/CONTRIBUTORS gmsh-$(GMSH_RELEASE)
-	cp -R tutorial gmsh-$(GMSH_RELEASE)
-	cp -R demos gmsh-$(GMSH_RELEASE)
-	rm -rf gmsh-$(GMSH_RELEASE)/*/CVS
-	rm -f gmsh-$(GMSH_RELEASE)/*/*.msh
-	rm -f gmsh-$(GMSH_RELEASE)/*/*~
-	tar cvf gmsh-$(GMSH_RELEASE)-$(GMSH_UNAME).tar gmsh-$(GMSH_RELEASE)
-	gzip gmsh-$(GMSH_RELEASE)-$(GMSH_UNAME).tar
-	mv gmsh-$(GMSH_RELEASE)-$(GMSH_UNAME).tar.gz gmsh-$(GMSH_RELEASE)-$(GMSH_UNAME).tgz
-
-distrib-win:
-	strip $(GMSH_BIN_DIR)/gmsh.exe
-	cp $(GMSH_BIN_DIR)/gmsh.exe ../gmsh-distrib
-	cp doc/README.txt ../gmsh-distrib
-	cp doc/FORMATS ../gmsh-distrib/FORMATS.txt
-	cp doc/VERSIONS ../gmsh-distrib/VERSIONS.txt
-	cp doc/FAQ ../gmsh-distrib/FAQ.txt
-	cp doc/CONTRIBUTORS ../gmsh-distrib/CONTRIBUTORS.txt
-	cd utils && unix2dos ../../gmsh-distrib/*.txt
-	cp -R tutorial ../gmsh-distrib
-	cp -R demos ../gmsh-distrib
-	rm -rf ../gmsh-distrib/*/CVS
-	rm -f ../gmsh-distrib/*/*.msh
-	rm -f ../gmsh-distrib/*/*~
-	cd utils && unix2dos ../../gmsh-distrib/tutorial/* ../../gmsh-distrib/demos/*
-	cd ../gmsh-distrib && zip -r gmsh-$(GMSH_RELEASE)-Windows.zip *
-	mv ../gmsh-distrib/gmsh-$(GMSH_RELEASE)-Windows.zip .
-	rm -rf ../gmsh-distrib/*.txt
-	rm -rf ../gmsh-distrib/tutorial
-	rm -rf ../gmsh-distrib/demos
-
-distrib-mac:
-	rm -rf gmsh-$(GMSH_RELEASE)
-	mkdir gmsh-$(GMSH_RELEASE)
-	mkdir gmsh-$(GMSH_RELEASE)/Gmsh.app
-	mkdir gmsh-$(GMSH_RELEASE)/Gmsh.app/Contents
-	mkdir gmsh-$(GMSH_RELEASE)/Gmsh.app/Contents/Resources
-	mkdir gmsh-$(GMSH_RELEASE)/Gmsh.app/Contents/MacOS
-	echo "APPLGMSH" > gmsh-$(GMSH_RELEASE)/Gmsh.app/Contents/PkgInfo 
-	echo -e "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"\
-        "<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\""\
-                              " \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n"\
-        "<plist version=\"1.0\">\n"\
-        "  <dict>\n"\
-        "    <key>CFBundleName</key><string>Gmsh</string>\n"\
-        "    <key>CFBundleExecutable</key><string>Gmsh</string>\n"\
-        "    <key>CFBundlePackageType</key><string>APPL</string>\n"\
-        "    <key>CFBundleVersion</key><string>$(GMSH_RELEASE)</string>\n"\
-        "    <key>CFBundleShortVersionString</key><string>$(GMSH_RELEASE)</string>\n"\
-        "    <key>CFBundleIconFile</key><string>gmsh.icns</string>\n"\
-        "    <key>CFBundleSignature</key><string>GMSH</string>\n"\
-        "    <key>CFBundleGetInfoString</key><string>Gmsh $(GMSH_RELEASE),"\
-              "(c) C. Geuzaine and J.-F. Remacle, 1997-2003</string>\n"\
-        "    <key>CFBundleIdentifier</key><string>org.geuz.Gmsh</string>\n"\
-        "    <key>NSHelpFile</key><string>tutorial.html</string>\n"\
-        "  </dict>\n"\
-        "</plist>" > gmsh-$(GMSH_RELEASE)/Gmsh.app/Contents/Info.plist
-	strip $(GMSH_BIN_DIR)/gmsh
-	cp $(GMSH_BIN_DIR)/gmsh gmsh-$(GMSH_RELEASE)/Gmsh.app/Contents/MacOS/Gmsh
-	cp Fltk/MacIcons.icns gmsh-$(GMSH_RELEASE)/Gmsh.app/Contents/Resources/gmsh.icns
-	cp tutorial/tutorial.html gmsh-$(GMSH_RELEASE)/Gmsh.app/Contents/Resources
-	cp -R doc/gmsh.1 tutorial demos gmsh-$(GMSH_RELEASE)
-	cp doc/FORMATS gmsh-$(GMSH_RELEASE)/FORMATS.txt
-	cp doc/VERSIONS gmsh-$(GMSH_RELEASE)/VERSIONS.txt
-	cp doc/FAQ gmsh-$(GMSH_RELEASE)/FAQ.txt
-	cp doc/CONTRIBUTORS gmsh-$(GMSH_RELEASE)/CONTRIBUTORS.txt
-	rm -rf gmsh-$(GMSH_RELEASE)/*/CVS\
-               gmsh-$(GMSH_RELEASE)/*/*~\
-               gmsh-$(GMSH_RELEASE)/*/*.msh
-	tar zcvf gmsh-$(GMSH_RELEASE)-MacOSX.tgz gmsh-$(GMSH_RELEASE)
-
-dem:
-	gtar zcvf gmsh-demos.tgz $(GMSH_DEMO_DIR)
-	gtar zcvf gmsh-tutorial.tgz $(GMSH_TUTORIAL_DIR)
-
-# ----------------------------------------------------------------------
-# Black Box
-# ----------------------------------------------------------------------
-
-bb: initialtag
-	@for i in $(GMSH_BOX_DIR); do (cd $$i && $(MAKE) \
-           "CXX=$(CXX)" \
-           "CC=$(CC)" \
-           "OPT_FLAGS=$(FLAGS)" \
-           "OS_FLAGS=" \
-           "VERSION_FLAGS=-D_BLACKBOX" \
-           "GL_INCLUDE=" \
-           "GUI_INCLUDE=" \
-        ); done
-	$(CXX) -o $(GMSH_BIN_DIR)/gmsh-bb $(GMSH_BOX_LIB) -lm
-
-bb-parallel: initialtag
-	@for i in $(GMSH_BOX_DIR); do (cd $$i && $(MAKE) \
-           "CXX=mpiCC" \
-           "CC=mpicc" \
-           "OPT_FLAGS=-O3" \
-           "OS_FLAGS=" \
-           "VERSION_FLAGS=-D_BLACKBOX -DPARALLEL" \
-           "GL_INCLUDE=" \
-           "GUI_INCLUDE=" \
-        ); done
-	mpiCC -o $(GMSH_BIN_DIR)/gmsh-bb $(GMSH_BOX_LIB) -lm
-
-bb-mingw: initialtag
-	@for i in $(GMSH_BOX_DIR) ; do (cd $$i && $(MAKE) \
-           "CXX=g++" \
-           "CC=gcc" \
-           "OPT_FLAGS=-O3" \
-           "OS_FLAGS=-mno-cygwin -I/mingw/include" \
-           "VERSION_FLAGS=-D_BLACKBOX" \
-           "GL_INCLUDE=" \
-           "GUI_INCLUDE=" \
-        ); done
-	g++ -o $(GMSH_BIN_DIR)/gmsh.exe -mno-cygwin -L/mingw/lib $(GMSH_BOX_LIB) -lm
diff --git a/utils/GMSH_CLIENT.pm b/utils/solvers/GMSH_CLIENT.pm
similarity index 95%
rename from utils/GMSH_CLIENT.pm
rename to utils/solvers/GMSH_CLIENT.pm
index 192db0ddb10aa087ced5cb90a5ab89a08ac623f5..ad2e2d566a2a0119769e5ab8b7ed11fb2d52bd3e 100644
--- a/utils/GMSH_CLIENT.pm
+++ b/utils/solvers/GMSH_CLIENT.pm
@@ -1,4 +1,4 @@
-# $Id: GMSH_CLIENT.pm,v 1.1 2002-01-25 17:09:21 geuzaine Exp $
+# $Id: GMSH_CLIENT.pm,v 1.1 2003-05-09 16:30:01 geuzaine Exp $
 #
 # Copyright (c) 2002 Laurent CHAMPANEY <laurent.champaney@meca.uvsq.fr>. 
 # All rights reserved.
diff --git a/utils/GmshClient.c b/utils/solvers/GmshClient.c
similarity index 97%
rename from utils/GmshClient.c
rename to utils/solvers/GmshClient.c
index 32e686e9b8de6edbf311cb1367d88027f58fe943..7e4c4d16d47cebb439342b8efdd44b508849c366 100644
--- a/utils/GmshClient.c
+++ b/utils/solvers/GmshClient.c
@@ -1,4 +1,4 @@
-/* $Id: GmshClient.c,v 1.6 2003-03-21 00:52:48 geuzaine Exp $ */
+/* $Id: GmshClient.c,v 1.1 2003-05-09 16:30:01 geuzaine Exp $ */
 /*
   Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle
 
diff --git a/utils/GmshClient.h b/utils/solvers/GmshClient.h
similarity index 100%
rename from utils/GmshClient.h
rename to utils/solvers/GmshClient.h
diff --git a/utils/Makefile b/utils/solvers/Makefile
similarity index 82%
rename from utils/Makefile
rename to utils/solvers/Makefile
index ab063936e2e6d9628fbc4421f8524cf41ad217d3..2d5cadef9386b5f2aa7c2e9ee73b459e8d7b28d8 100644
--- a/utils/Makefile
+++ b/utils/solvers/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.14 2003-03-21 00:52:49 geuzaine Exp $
+# $Id: Makefile,v 1.1 2003-05-09 16:30:01 geuzaine Exp $
 #
 # Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle
 #
@@ -19,11 +19,7 @@
 # 
 # Please report all bugs and problems to "gmsh@geuz.org".
 
-include ../variables
-
-dxf2geo: dxf2geo.c message.c 
-	${CXX} ${OPTIM} -o ../bin/dxf2geo -I../DataStr\
-              dxf2geo.c message.c ../lib/libGmshDataStr.a -lm
+include ../../variables
 
 mysolver: mysolver.c
 	${CXX} ${OPTIM} -o mysolver.exe mysolver.c GmshClient.c
@@ -35,7 +31,7 @@ myperlsolvertgz:
 	gtar zcvf myperlsolver.tgz myperlsolver.pl myperlsolver.opt GMSH_CLIENT.pm
 
 clean:
-	rm -f *.o
+	rm -f *.o *.exe
 
 depend:
 	true
diff --git a/utils/myperlsolver.opt b/utils/solvers/myperlsolver.opt
similarity index 100%
rename from utils/myperlsolver.opt
rename to utils/solvers/myperlsolver.opt
diff --git a/utils/myperlsolver.pl b/utils/solvers/myperlsolver.pl
old mode 100644
new mode 100755
similarity index 98%
rename from utils/myperlsolver.pl
rename to utils/solvers/myperlsolver.pl
index f0dbb5d7019e6bba0801f85bf5592267f7e83cd0..5098501c417e434ee832e7db23aa1ff70158054f
--- a/utils/myperlsolver.pl
+++ b/utils/solvers/myperlsolver.pl
@@ -1,6 +1,6 @@
 #!/usr/bin/perl
 #
-# $Id: myperlsolver.pl,v 1.3 2003-04-19 04:14:53 geuzaine Exp $
+# $Id: myperlsolver.pl,v 1.1 2003-05-09 16:30:01 geuzaine Exp $
 #
 # Copyright (c) 2002 Laurent CHAMPANEY <laurent.champaney@meca.uvsq.fr>. 
 #
diff --git a/utils/mysolver.c b/utils/solvers/mysolver.c
similarity index 98%
rename from utils/mysolver.c
rename to utils/solvers/mysolver.c
index b450d54a8019d508392c532f195e187d61eb5cd1..4ff6ca711b04f8a37aae45d4080812139db839b0 100644
--- a/utils/mysolver.c
+++ b/utils/solvers/mysolver.c
@@ -1,4 +1,4 @@
-/* $Id: mysolver.c,v 1.9 2003-04-19 04:14:53 geuzaine Exp $ */
+/* $Id: mysolver.c,v 1.1 2003-05-09 16:30:01 geuzaine Exp $ */
 /*
   Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle
 
diff --git a/utils/mysolver.opt b/utils/solvers/mysolver.opt
similarity index 100%
rename from utils/mysolver.opt
rename to utils/solvers/mysolver.opt