diff --git a/Geo/GModel.h b/Geo/GModel.h
index dfea73d39f0a9b5538e81727d8a15e4c13aa3d0b..4c2fb7463d80c8447b339b0c4bf83c48255835da 100644
--- a/Geo/GModel.h
+++ b/Geo/GModel.h
@@ -369,11 +369,11 @@ class GModel
   GEdge *addCircleArc3Points(double x, double y, double z, GVertex *start, GVertex *end);
   GEdge *addBezier(GVertex *start, GVertex *end, std::vector<std::vector<double> > points);
   GEdge *addNURBS(GVertex *start, GVertex *end,
-		  std::vector<std::vector<double> > points, 
+		  std::vector<std::vector<double> > points,
 		  std::vector<double> knots,
-		  std::vector<double> weights, 
+		  std::vector<double> weights,
 		  std::vector<int> mult);
-  GEntity *revolve(GEntity *e, std::vector<double> p1, std::vector<double> p2, 
+  GEntity *revolve(GEntity *e, std::vector<double> p1, std::vector<double> p2,
                    double angle);
   GEntity *extrude(GEntity *e, std::vector<double> p1, std::vector<double> p2);
 
@@ -415,6 +415,15 @@ class GModel
     _associateEntityWithMeshVertices();
   }
 
+  void storeChain(std::vector<MVertex*> &vertices,int dim, std::map<int, std::vector<MElement*> > &entityMap,
+                  std::map<int, std::map<int, std::string> > &physicalMap)
+  {
+    _storeVerticesInEntities(vertices);
+    _storeElementsInEntities(entityMap);
+    _storePhysicalTagsInEntities(dim, physicalMap);
+    _associateEntityWithMeshVertices();
+  }
+
   // Gmsh native CAD format (readGEO is static, since it can create
   // multiple models)
   static int readGEO(const std::string &name);
@@ -434,21 +443,21 @@ class GModel
   int writeOCCSTEP(const std::string &name);
   int writeOCCBREP(const std::string &name);
   int importOCCShape(const void *shape);
-  
+
   // ACIS Model
   int readACISSAT(const std::string &name);
 
   // Gmsh mesh file format
   int readMSH(const std::string &name);
   int writeMSH(const std::string &name, double version=1.0, bool binary=false,
-               bool saveAll=false, bool saveParametric=false, 
-               double scalingFactor=1.0, int elementStartNum=0, 
+               bool saveAll=false, bool saveParametric=false,
+               double scalingFactor=1.0, int elementStartNum=0,
                int saveSinglePartition=0);
   int writePartitionedMSH(const std::string &baseName, bool binary=false,
-                          bool saveAll=false, bool saveParametric=false, 
+                          bool saveAll=false, bool saveParametric=false,
                           double scalingFactor=1.0);
   int writeDistanceMSH(const std::string &name, double version=1.0, bool binary=false,
-                       bool saveAll=false, bool saveParametric=false, 
+                       bool saveAll=false, bool saveParametric=false,
                        double scalingFactor=1.0);
 
   // Iridium file format