diff --git a/Geo/GModelFactory.h b/Geo/GModelFactory.h
index c227f1db29b47b7f8f5abc34c94ca986d3dcb175..f4bbceb1b31fc3c83eb9b07a54705860c87d2489 100644
--- a/Geo/GModelFactory.h
+++ b/Geo/GModelFactory.h
@@ -3,7 +3,7 @@
 // See the LICENSE.txt file for license information. Please report all
 // bugs and problems to <gmsh@geuz.org>.
 
-#ifndef _GMODEL_FACT@ORY_H_
+#ifndef _GMODEL_FACTORY_H_
 #define _GMODEL_FACTORY_H_
 
 #include <vector>
diff --git a/Geo/GModelIO_Mesh.cpp b/Geo/GModelIO_Mesh.cpp
index 8ff7dc399288f3e56562864fad0d0de49180ba5b..997c8cf560a072e08ebe14215e89d992f5b5bd41 100644
--- a/Geo/GModelIO_Mesh.cpp
+++ b/Geo/GModelIO_Mesh.cpp
@@ -54,8 +54,11 @@ void GModel::_storePhysicalTagsInEntities(int dim,
       std::map<int, std::string>::const_iterator it2 = it->second.begin();
       for(; it2 != it->second.end(); ++it2){
         if(std::find(ge->physicals.begin(), ge->physicals.end(), it2->first) ==
-           ge->physicals.end())
+           ge->physicals.end()){
           ge->physicals.push_back(it2->first);
+          if(it2->second != "")
+            setPhysicalName(it2->second, dim, it2->first);
+        }
       }
     }
   }
diff --git a/Geo/MElementCut.cpp b/Geo/MElementCut.cpp
index a438ffba8ae41220d227375428ff34ebf26bfd66..05501126c4a57f73e058960f1e3b76741d83d2d7 100644
--- a/Geo/MElementCut.cpp
+++ b/Geo/MElementCut.cpp
@@ -1313,7 +1313,13 @@ GModel *buildCutMesh(GModel *gm, gLevelset *ls,
         printf("\n");
       }
     }
-  }printf("\n");
+  }
+  printf("PHYS\n");
+  for(int i=0;i<4;i++)
+    for(std::map<int, std::map<int, std::string> >::iterator it=physicals[i].begin();it!=physicals[i].end();it++) 
+      for(std::map<int, std::string>::iterator it2 = it->second.begin(); it2!=it->second.end(); it2++)
+        printf(" dim=%d reg=%d phys=%d \"%s\"\n",i,it->first,it2->first,it2->second.c_str());
+  printf("\n");
 #endif
 
   for(newVerticesContainer::iterator it = newVertices.begin() ; it != newVertices.end(); ++it) {