diff --git a/Mesh/delaunay3d_private.h b/Mesh/delaunay3d_private.h
index ac91bc1042efe71969d255e18982f16c058e11ee..343b701db285a377bd0bc161c146f96b88e3ddc7 100644
--- a/Mesh/delaunay3d_private.h
+++ b/Mesh/delaunay3d_private.h
@@ -4,6 +4,7 @@
 #include "SPoint3.h"
 #include <math.h>
 #include "robustPredicates.h"
+#include <stdio.h>
 
 #ifndef MAX_NUM_THREADS_
 #define MAX_NUM_THREADS_ 1
diff --git a/Mesh/meshGFace.cpp b/Mesh/meshGFace.cpp
index 40977c6e072ee21bd222c57417e98c6ffe17ea15..b64dc3cc65746fe1ab7bf9c6bbe6da46289f66e9 100644
--- a/Mesh/meshGFace.cpp
+++ b/Mesh/meshGFace.cpp
@@ -45,7 +45,6 @@
 #include "meshGFaceLloyd.h"
 #include "boundaryLayersData.h"
 #include "filterElements.h"
-#include "meshGFaceQuadDiscrete.h"
 
 // define this to use the old initial delaunay
 #define OLD_CODE_DELAUNAY 1
diff --git a/Mesh/meshGRegionDelaunayInsertion.cpp b/Mesh/meshGRegionDelaunayInsertion.cpp
index e43fb4fd26cc54773f3a5fb739f9deeff1026df6..4d252f5c96716f285c481a02c41c977263fa0a33 100644
--- a/Mesh/meshGRegionDelaunayInsertion.cpp
+++ b/Mesh/meshGRegionDelaunayInsertion.cpp
@@ -948,13 +948,17 @@ void optimizeMesh(GRegion *gr, const qmTetrahedron::Measures &qm)
     //    printf("coucou\n");
 
     // relocate vertices
-    for (CONTAINER::iterator it = allTets.begin();it!=allTets.end();++it){
-      if (!(*it)->isDeleted()){
-        double qq = (*it)->getQuality();
-        if (qq < qMin)
-          for (int i = 0; i < 4; i++){
-            if (smoothVertex(*it, i, qm)) nbReloc++;
-          }
+    if (!gr->hexahedra.size() && 
+        !gr->prisms.size() && 
+        !gr->pyramids.size()){
+      for (CONTAINER::iterator it = allTets.begin();it!=allTets.end();++it){
+	if (!(*it)->isDeleted()){
+	  double qq = (*it)->getQuality();
+	  if (qq < qMin)
+	    for (int i = 0; i < 4; i++){
+	      if (smoothVertex(*it, i, qm)) nbReloc++;
+	    }
+	}
       }
     }