diff --git a/Geo/Geo.cpp b/Geo/Geo.cpp
index f18b51747acb4ed1ef7bd84dd9da3a00b38ebb14..268c55c3dbae200619c490ff4ef9eb53e0928480 100644
--- a/Geo/Geo.cpp
+++ b/Geo/Geo.cpp
@@ -1,4 +1,4 @@
-// $Id: Geo.cpp,v 1.55 2006-08-18 17:49:35 geuzaine Exp $
+// $Id: Geo.cpp,v 1.56 2006-08-18 18:00:42 geuzaine Exp $
 //
 // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
 //
@@ -77,7 +77,7 @@ double evaluate_scalarfunction(char *var, double val, char *funct)
   return *(double *)List_Pointer(TheSymbol_P->val, 0);
 }
 
-void add_infile(char *text, char *fich)
+void add_infile(char *text, char *fich, bool deleted_something)
 {
   FILE *file;
 
@@ -100,15 +100,17 @@ void add_infile(char *text, char *fich)
   fprintf(file, "%s\n", text);
   fclose(file);
 
-  // we need to start from scratch since the command just parsed could
-  // have deleted some entities
-  GMODEL->destroy();
+  if(deleted_something){
+    // we need to start from scratch since the command just parsed
+    // could have deleted some entities
+    GMODEL->destroy();
+  }
   GMODEL->import();
 }
 
 void coherence(char *fich)
 {
-  add_infile("Coherence;", fich);
+  add_infile("Coherence;", fich, true);
 }
 
 void strncat_list(char *text, List_T *list)
@@ -132,7 +134,7 @@ void delet(List_T *list, char *fich, char *what)
   snprintf(text, BUFFSIZE, "Delete {\n  %s{", what);
   strncat_list(text, list);
   strncat(text, "};\n}", BUFFSIZE-strlen(text));
-  add_infile(text, fich);
+  add_infile(text, fich, true);
 }
 
 void add_trsfellisurf(int type, int N, int *l, char *fich, char *dir)
diff --git a/Geo/Geo.h b/Geo/Geo.h
index 975f219c47c17d343212143f4c75633981dcff67..dab94a4e8c0a5c7938ad85a5bb1ab30c032ef1d2 100644
--- a/Geo/Geo.h
+++ b/Geo/Geo.h
@@ -86,7 +86,7 @@ double evaluate_scalarfunction (char *var, double val, char *funct);
 
 void coherence(char *fich);
 void delet(List_T *list, char *fich, char *what);
-void add_infile(char *text, char *fich);
+void add_infile(char *text, char *fich, bool deleted_something=false);
 void add_trsfline(int N, int *l, char *fich, char *type, char *typearg, char *pts);
 void add_trsfellisurf(int type, int N, int *l, char *fich, char *dir);
 void add_trsfvol(int N, int *l, char *fich);