diff --git a/Geo/GModel.cpp b/Geo/GModel.cpp
index 820c2475d88069a745025e1f471c1de2f812f401..b22b3ac6e3dad5894a9606dc184f7363e463301f 100644
--- a/Geo/GModel.cpp
+++ b/Geo/GModel.cpp
@@ -195,6 +195,26 @@ bool GModel::empty() const
   return vertices.empty() && edges.empty() && faces.empty() && regions.empty();
 }
 
+std::vector<GRegion*> GModel::bindingsGetRegions()
+{
+  return std::vector<GRegion*> (regions.begin(), regions.end());
+}
+
+std::vector<GFace*> GModel::bindingsGetFaces()
+{
+  return std::vector<GFace*> (faces.begin(), faces.end());
+}
+
+std::vector<GEdge*> GModel::bindingsGetEdges()
+{
+  return std::vector<GEdge*> (edges.begin(), edges.end());
+}
+
+std::vector<GVertex*> GModel::bindingsGetVertices()
+{
+  return std::vector<GVertex*> (vertices.begin(), vertices.end());
+}
+
 GRegion *GModel::getRegionByTag(int n) const
 {
   GEntity tmp((GModel*)this, n);
diff --git a/Geo/GModel.h b/Geo/GModel.h
index 177b92658978b0822c385125569bac01b6547207..7880a2b6331bc9d8acd631d279dbf65ee21dde76 100644
--- a/Geo/GModel.h
+++ b/Geo/GModel.h
@@ -204,6 +204,12 @@ class GModel
   GFace *getFaceByTag(int n) const;
   GEdge *getEdgeByTag(int n) const;
   GVertex *getVertexByTag(int n) const;
+
+  // for python, temporary solution while iterator are not binded
+  std::vector<GRegion*> bindingsGetRegions();
+  std::vector<GFace*> bindingsGetFaces();
+  std::vector<GEdge*> bindingsGetEdges();
+  std::vector<GVertex*> bindingsGetVertices();
   
   // add/remove an entity in the model
   void add(GRegion *r) { regions.insert(r); }