diff --git a/Common/Options.cpp b/Common/Options.cpp
index 65c3db2f6442eb14a34b38b0251e6b17a88f8420..c50492bf6a3910c625b3674c3b1d75820e434c9b 100644
--- a/Common/Options.cpp
+++ b/Common/Options.cpp
@@ -1,4 +1,4 @@
-// $Id: Options.cpp,v 1.8 2001-04-06 12:30:34 geuzaine Exp $
+// $Id: Options.cpp,v 1.9 2001-04-08 12:49:31 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -53,16 +53,9 @@ void Init_Options(int num){
   // The following defaults cannot be set by the user 
   CTX.batch = 0 ;
   CTX.expose = 0 ;
-  CTX.db = 1 ; // motif only
-  CTX.overlay = 1 ; // motif only
   CTX.stream = TO_SCREEN ;
-  CTX.command_win = 0 ; // motif only
-  CTX.threads = 1 ; // motif only
-  CTX.threads_lock = 0 ; // motif only
   CTX.gl_fontheight = 12;
   CTX.gl_fontascent = 8;
-  CTX.font = "-*-helvetica-medium-r-*-*-*-*-*-*-*-*-*-*" ; // motif only
-  CTX.fixed_font = "fixed" ; // motif only
   CTX.lc = 1.0 ;
   CTX.viewport[0] = CTX.viewport[1] = 0 ;
   CTX.min[0] = CTX.min[1] = CTX.min[2] = 0.0 ;
@@ -76,6 +69,14 @@ void Init_Options(int num){
   CTX.mesh.vis_type = 0 ;
   CTX.mesh.draw = 1 ;  
   CTX.post.draw = 1 ;
+
+  // For motif versions only:
+  CTX.overlay = 1 ;
+  CTX.command_win = 0 ;
+  CTX.threads = 1 ;
+  CTX.threads_lock = 0 ;
+  CTX.font = "-*-helvetica-medium-r-*-*-*-*-*-*-*-*-*-*" ;
+  CTX.fixed_font = "fixed" ;
 }
 
 void Init_Options_GUI(int num){
diff --git a/Fltk/Message.cpp b/Fltk/Message.cpp
index 29538d8efea92ec13dcaea46a507000fb52c8fe6..0bb7686aef3cae3de36b3ae65e90c6256816a258 100644
--- a/Fltk/Message.cpp
+++ b/Fltk/Message.cpp
@@ -1,4 +1,4 @@
-// $Id: Message.cpp,v 1.16 2001-03-17 21:33:13 geuzaine Exp $
+// $Id: Message.cpp,v 1.17 2001-04-08 12:49:31 geuzaine Exp $
 
 #include <signal.h>
 #if !defined(WIN32) || defined(__CYGWIN__)
@@ -25,9 +25,9 @@ void Signal (int sig_num){
   case SIGSEGV : 
     Msg(FATAL1, "Segmentation Violation (Invalid Memory Reference)");
     Msg(FATAL2, "------------------------------------------------------");
-    Msg(FATAL2, "You have discovered a bug in Gmsh. You may e-mail the");
-    Msg(FATAL2, "context in which it occurred to one of the authors:");
-    Msg(FATAL3, "type 'gmsh -info' to get feedback information"); 
+    Msg(FATAL2, "You have discovered a bug in Gmsh! You may report it");
+    Msg(FATAL2, "by e-mail (together with any helpful data permitting to");
+    Msg(FATAL3, "reproduce it) to <gmsh@geuz.org>"); 
     break;
   case SIGFPE : 
     Msg(FATAL, "Floating Point Exception (Division by Zero?)"); 
diff --git a/Geo/DataBase.cpp b/Geo/DataBase.cpp
index 65da00be9c519703286b9917eb575b481ca34321..78ffb2379cc89d3174a36a0fde87e0eb6b52a3af 100644
--- a/Geo/DataBase.cpp
+++ b/Geo/DataBase.cpp
@@ -1,4 +1,4 @@
-// $Id: DataBase.cpp,v 1.10 2001-04-07 07:20:22 geuzaine Exp $
+// $Id: DataBase.cpp,v 1.11 2001-04-08 12:49:31 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "Const.h"
@@ -250,7 +250,7 @@ void Cdbz101(int izon, int typzon,int o1, int o2, int nbu, int nbv,
   int      i,j;
   double   f;
   List_T  *templist;
-  Curve   *c, **pc1, **pc2;
+  Curve   *c, *c0, *c1, *c2;
 
   if(liste){
     templist = List_Create(List_Nbr(liste),1,sizeof(int));
@@ -289,23 +289,35 @@ void Cdbz101(int izon, int typzon,int o1, int o2, int nbu, int nbv,
 	    *(int*)List_Pointer(templist,i), izon);
     }
     List_Reset(templist);
-    pc1 = (Curve**)List_Pointer(curves, 0);
-    List_Add(templist, &(*pc1)->Num);
-    int j=0;
+
+    int j = 0;
+    c0 = c1 = *(Curve**)List_Pointer(curves, 0);
+    List_Add(templist, &c1->Num);
+    List_PSuppress(curves, 0);
     while(List_Nbr(templist) < NbCurves){
-      for(i=0 ; i<NbCurves ; i++){
-	pc2 = (Curve**)List_Pointer(curves, i);
-	if((*pc1)->end == (*pc2)->beg){
-	  List_Add(templist, &(*pc2)->Num);
-	  pc1 = pc2 ;
+      for(i=0 ; i<List_Nbr(curves); i++){
+	c2 = *(Curve**)List_Pointer(curves, i);
+	if(c1->end == c2->beg){
+	  List_Add(templist, &c2->Num);
+	  List_PSuppress(curves, i);
+	  c1 = c2 ;
+	  if(c2->end == c0->beg){
+	    if(List_Nbr(curves)){
+	      Msg(INFO, "Starting new sub loop in Line Loop %d: are you sure about this?", izon);
+	      c0 = c1 = *(Curve**)List_Pointer(curves, 0);
+	      List_Add(templist, &c1->Num);
+	      List_PSuppress(curves, 0);
+	    }
+	  }
 	  break;
 	}
       }
       if(j++ > NbCurves){
-	Msg(GERROR, "Wrong Line Loop %d", izon);
+	Msg(GERROR, "Line Loop %d is wrong", izon);
 	break;
       }
     }  
+    List_Delete(curves);
 
     Add_EdgeLoop(izon,templist,THEM);
   }
diff --git a/Makefile b/Makefile
index b119e8c7803d80a4b281ac0a2f0abbeff2dcfeb8..0c33ed78ef514b5302d09c5a4b64f9c41dcb83a2 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.85 2001-03-23 14:41:52 geuzaine Exp $
+# $Id: Makefile,v 1.86 2001-04-08 12:49:31 geuzaine Exp $
 # ----------------------------------------------------------------------
 #  Makefile for Gmsh  
 # ----------------------------------------------------------------------
@@ -39,7 +39,7 @@ FLTK_LIB_LINUX_SCOREC = /users/develop/develop/visual/fltk/1.0/lib/x86_linux/lib
 
            THREAD_LIB = -L/usr/lib -lpthread
 
-             GMSH_DIR = Adapt Common DataStr Geo Graphics Mesh Parser Motif Fltk\
+             GMSH_DIR = Adapt Common DataStr Geo Graphics Mesh Parser Motif Fltk Plugin\
                         jpeg utils
       GMSH_XMOTIF_DIR = Adapt Common DataStr Geo Graphics Mesh Parser Motif jpeg
         GMSH_FLTK_DIR = Adapt Common DataStr Geo Graphics Mesh Parser Fltk jpeg Plugin
diff --git a/Plugin/PluginManager.h b/Plugin/PluginManager.h
index 8190fb6d75dbd6c54fd8b93cc7b2d9c481598de9..413d6f059f20457095d44c13aef58bb5a317d44f 100644
--- a/Plugin/PluginManager.h
+++ b/Plugin/PluginManager.h
@@ -23,10 +23,10 @@ struct ltstrpg
 class GMSH_PluginManager
 {
   GMSH_PluginManager();
-  virtual ~GMSH_PluginManager();
   static GMSH_PluginManager *instance;
   std::map<char*,GMSH_Plugin*,ltstrpg> allPlugins;
 public :
+  virtual ~GMSH_PluginManager();
   typedef std::map<char*,GMSH_Plugin*,ltstrpg>::iterator iter;
 /**
   Registering all default plugins that are in $(GMSHPLUGINSHOME)
diff --git a/doc/VERSIONS b/doc/VERSIONS
index f5dace9f96585d035db35265b90106492609b5ad..9326b39bca81733f44dbc252e881c6559404a4b3 100644
--- a/doc/VERSIONS
+++ b/doc/VERSIONS
@@ -1,9 +1,11 @@
-$Id: VERSIONS,v 1.5 2001-04-06 12:29:32 geuzaine Exp $
+$Id: VERSIONS,v 1.6 2001-04-08 12:49:31 geuzaine Exp $
 
 New in 1.17: Corrected physical points saving; fixed parsing of DOS
 files (carriage return problems); easier geometrical selections
 (cursor change); plugin manager; Fatal error dialog; enhanced variable
-arrays (sublist selection and affectation); line loop check;
+arrays (sublist selection and affectation); line loop check; New arrow
+display; reduced number of 'fatal' errors + better handling in
+interactive mode;
 
 New in 1.16: Added single/double buffer selection (only useful for
 Unix versions of Gmsh run from remote hosts without GLX); fixed a bug