diff --git a/Geo/GEdge.cpp b/Geo/GEdge.cpp
index 5f6829dcb32d07636e795342a85169092cb61efc..af59f8be2fe5c0a807b21d8add2fd7918b509388 100644
--- a/Geo/GEdge.cpp
+++ b/Geo/GEdge.cpp
@@ -1,4 +1,4 @@
-// $Id: GEdge.cpp,v 1.37 2008-02-17 08:47:58 geuzaine Exp $
+// $Id: GEdge.cpp,v 1.38 2008-02-17 09:30:25 geuzaine Exp $
 //
 // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 //
@@ -122,6 +122,12 @@ std::string GEdge::getAdditionalInfoString()
   return std::string(tmp);
 }
 
+int GEdge::containsParam(double pt) const
+{
+  Range<double> rg = parBounds(0);
+  return (pt >= rg.low() && pt <= rg.high());
+}
+
 SVector3 GEdge::secondDer(double par) const 
 {
   // use central differences
diff --git a/Geo/GEdge.h b/Geo/GEdge.h
index 75f1f104f3cb92fb00a93197248d8f5edf317755..0d6fd8c977ad7ce015bb0188dcace4b6a13e8469 100644
--- a/Geo/GEdge.h
+++ b/Geo/GEdge.h
@@ -68,7 +68,7 @@ class GEdge : public GEntity {
   virtual GPoint closestPoint(const SPoint3 & queryPoint) const { throw; }
 
   // True if the edge contains the given parameter.
-  virtual int containsParam(double pt) const = 0;
+  virtual int containsParam(double pt) const;
 
   // Get first derivative of edge at the given parameter.
   virtual SVector3 firstDer(double par) const = 0;
diff --git a/Geo/GFace.cpp b/Geo/GFace.cpp
index 3cc3c2368b69efee32aea916fee70610a4ad6117..64b004f87f1e916aa4d8750eefb0d9270551495b 100644
--- a/Geo/GFace.cpp
+++ b/Geo/GFace.cpp
@@ -1,4 +1,4 @@
-// $Id: GFace.cpp,v 1.50 2008-02-17 08:47:58 geuzaine Exp $
+// $Id: GFace.cpp,v 1.51 2008-02-17 09:30:28 geuzaine Exp $
 //
 // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 //
@@ -542,6 +542,17 @@ SPoint2 GFace::parFromPoint(const SPoint3 &p) const
   return SPoint2(U,V);
 }
 
+int GFace::containsParam(const SPoint2 &pt) const
+{
+  Range<double> uu = parBounds(0);
+  Range<double> vv = parBounds(1);
+  if((pt.x() >= uu.low() && pt.x() <= uu.high()) && 
+     (pt.y() >= vv.low() && pt.y() <= vv.high()))
+    return 1;
+  else 
+    return 0;
+}
+
 bool GFace::buildRepresentationCross()
 {
   if(geomType() != Plane){
diff --git a/Geo/GFace.h b/Geo/GFace.h
index 57829a31b8e902136634d08cec2814b1a8ffc5e0..995bc294370aea0d78de8a1d8ce33b33b68ddf0b 100644
--- a/Geo/GFace.h
+++ b/Geo/GFace.h
@@ -113,7 +113,7 @@ class GFace : public GEntity
   virtual SPoint2 parFromPoint(const SPoint3 &) const;
 
   // True if the parameter value is interior to the face.
-  virtual int containsParam(const SPoint2 &pt) const = 0;
+  virtual int containsParam(const SPoint2 &pt) const;
 
   // Return the point on the face closest to the given point.
   virtual GPoint closestPoint(const SPoint3 & queryPoint) const { throw; }
diff --git a/Geo/OCCEdge.cpp b/Geo/OCCEdge.cpp
index 29a65bcc2d7f98d98998a25ae147e1e0af84f5a4..a5083fb13bfaae56d04e1aa8052e9c820cf2492d 100644
--- a/Geo/OCCEdge.cpp
+++ b/Geo/OCCEdge.cpp
@@ -1,4 +1,4 @@
-// $Id: OCCEdge.cpp,v 1.33 2008-02-17 08:47:59 geuzaine Exp $
+// $Id: OCCEdge.cpp,v 1.34 2008-02-17 09:30:28 geuzaine Exp $
 //
 // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 //
@@ -134,12 +134,6 @@ GPoint OCCEdge::point(double par) const
   }
 }
 
-int OCCEdge::containsParam(double pt) const
-{
-  Range<double> rg = parBounds(0);
-  return (pt >= rg.low() && pt <= rg.high());
-}
-
 SVector3 OCCEdge::firstDer(double par) const
 {  
   BRepAdaptor_Curve brepc(c);
diff --git a/Geo/OCCEdge.h b/Geo/OCCEdge.h
index dd2a424c7790b9871f36ff5eb1617f8cbe86cc1f..ed22bfdaf1346ffa3133ff8f879ccdc7dec8c780 100644
--- a/Geo/OCCEdge.h
+++ b/Geo/OCCEdge.h
@@ -44,7 +44,6 @@ class OCCEdge : public GEdge {
   virtual GeomType geomType() const;
   virtual bool degenerate(int) const { return BRep_Tool::Degenerated(c); }
   virtual GPoint point(double p) const;
-  virtual int containsParam(double pt) const;
   virtual SVector3 firstDer(double par) const;
   virtual double curvature (double par) const;
   virtual SPoint2 reparamOnFace(GFace * face, double epar, int dir) const ;
diff --git a/Geo/OCCFace.cpp b/Geo/OCCFace.cpp
index 3fb7fe30c72dbb7c9910c76c4e93cefded0caccc..c67f2fe13a349fb1257376de25d8c2a59cbc8237 100644
--- a/Geo/OCCFace.cpp
+++ b/Geo/OCCFace.cpp
@@ -1,4 +1,4 @@
-// $Id: OCCFace.cpp,v 1.33 2008-02-17 08:47:59 geuzaine Exp $
+// $Id: OCCFace.cpp,v 1.34 2008-02-17 09:30:28 geuzaine Exp $
 //
 // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 //
@@ -159,17 +159,6 @@ GPoint OCCFace::closestPoint(const SPoint3 & qp) const
   return GPoint(pnt.X(), pnt.Y(), pnt.Z(), this, pp);
 }
 
-int OCCFace::containsParam(const SPoint2 &pt) const
-{
-  Range<double> uu = parBounds(0);
-  Range<double> vv = parBounds(1);
-  if((pt.x() >= uu.low() && pt.x() <= uu.high()) && 
-     (pt.y() >= vv.low() && pt.y() <= vv.high()))
-    return 1;
-  else 
-    return 0;
-}
-
 SPoint2 OCCFace::parFromPoint(const SPoint3 &qp) const
 {
   gp_Pnt pnt(qp.x(), qp.y(), qp.z());
diff --git a/Geo/OCCFace.h b/Geo/OCCFace.h
index c2658ab3e616255f94e63a437cf5f1b9b27bf6a2..6d634af9d31bc9461732b728d7acbef091ba29cc 100644
--- a/Geo/OCCFace.h
+++ b/Geo/OCCFace.h
@@ -42,7 +42,6 @@ class OCCFace : public GFace {
   virtual GPoint point(double par1, double par2) const; 
   virtual GPoint closestPoint(const SPoint3 & queryPoint) const; 
   virtual int containsPoint(const SPoint3 &pt) const;  
-  virtual int containsParam(const SPoint2 &pt) const; 
   virtual SVector3 normal(const SPoint2 &param) const; 
   virtual Pair<SVector3,SVector3> firstDer(const SPoint2 &param) const; 
   virtual GEntity::GeomType geomType() const; 
diff --git a/Geo/discreteEdge.h b/Geo/discreteEdge.h
index 182540be2c08efd1fc9197022b51093baaff754e..47c73fbd798fa413e6492549d0860db553c2df80 100644
--- a/Geo/discreteEdge.h
+++ b/Geo/discreteEdge.h
@@ -40,7 +40,6 @@ class discreteEdge : public GEdge {
   virtual ~discreteEdge() {}
   virtual GeomType geomType() const { return DiscreteCurve; }
   virtual GPoint point(double p) const { throw; }
-  virtual int containsParam(double pt) const { throw; }
   virtual SVector3 firstDer(double par) const { throw; }
   virtual double parFromPoint(const SPoint3 &pt) const { throw; }
 };
diff --git a/Geo/discreteFace.h b/Geo/discreteFace.h
index e7fe0e078584afaccdc95a9a666fdd3ff9a95c29..c5827b6a094300693fde8008d122d151fc71d8be 100644
--- a/Geo/discreteFace.h
+++ b/Geo/discreteFace.h
@@ -40,7 +40,6 @@ class discreteFace : public GFace {
   virtual ~discreteFace() {}
   virtual GPoint point(double par1, double par2) const { throw; }
   virtual SPoint2 parFromPoint(const SPoint3 &p) const { throw; }
-  virtual int containsParam(const SPoint2 &pt) const { throw; }
   virtual SVector3 normal(const SPoint2 &param) const { throw; }
   virtual GEntity::GeomType geomType() const { return DiscreteSurface; }
   virtual Pair<SVector3,SVector3> firstDer(const SPoint2 &param) const { throw; }
diff --git a/Geo/fourierEdge.h b/Geo/fourierEdge.h
index d95dddde8ea2b47ef08a3a27490d9528c5b08ac3..3307abd991ee76e331dd7038726b3511a6305d0b 100644
--- a/Geo/fourierEdge.h
+++ b/Geo/fourierEdge.h
@@ -20,7 +20,6 @@ class fourierEdge : public GEdge {
   virtual Range<double> parBounds(int i) const;
   virtual GeomType geomType() const { return ParametricCurve; }
   virtual GPoint point(double p) const;
-  virtual int containsParam(double pt) const { throw; }
   virtual SVector3 firstDer(double par) const;
   virtual double parFromPoint(const SPoint3 &pt) const;
   virtual int minimumMeshSegments () const;
diff --git a/Geo/fourierProjectionFace.h b/Geo/fourierProjectionFace.h
index 01fe85f3aad68edee668b277bb43a31dbf6fcc83..497e4fabb2e2b8499215e4b52e6fb52373bd1e78 100644
--- a/Geo/fourierProjectionFace.h
+++ b/Geo/fourierProjectionFace.h
@@ -19,7 +19,6 @@ class fourierProjectionFace : public GFace {
   SVector3 normal(const SPoint2 &param) const; 
   Pair<SVector3,SVector3> firstDer(const SPoint2 &param) const; 
   SPoint2 parFromPoint(const SPoint3 &) const;
-  virtual int containsParam(const SPoint2 &pt) const { throw; }
   virtual GEntity::GeomType geomType() const { return GEntity::ProjectionFace; }
   ModelType getNativeType() const { return UnknownModel; }
   void *getNativePtr() const { return ps_; } 
diff --git a/Geo/gmshEdge.cpp b/Geo/gmshEdge.cpp
index 54f1829907d3b1b63e22bce36322a8149be0e4fc..eb3d2115b8dcf3b54f8057db273bea27c318f87f 100644
--- a/Geo/gmshEdge.cpp
+++ b/Geo/gmshEdge.cpp
@@ -1,4 +1,4 @@
-// $Id: gmshEdge.cpp,v 1.44 2008-02-17 08:47:59 geuzaine Exp $
+// $Id: gmshEdge.cpp,v 1.45 2008-02-17 09:30:28 geuzaine Exp $
 //
 // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 //
@@ -46,7 +46,7 @@ void gmshEdge::resetMeshAttributes()
 
 Range<double> gmshEdge::parBounds(int i) const
 { 
-  return(Range<double>(c->ubeg, c->uend));
+  return Range<double>(c->ubeg, c->uend);
 }
 
 GPoint gmshEdge::point(double par) const
@@ -67,12 +67,6 @@ GPoint gmshEdge::closestPoint(const SPoint3 &qp) const
   return GPoint(a.Pos.X, a.Pos.Y, a.Pos.Z, this, a.u);
 }
 
-int gmshEdge::containsParam(double pt) const
-{
-  Range<double> rg = parBounds(0);
-  return (pt >= rg.low() && pt <= rg.high());
-}
-
 SVector3 gmshEdge::firstDer(double par) const
 {
   Vertex a = InterpolateCurve(c, par, 1);
diff --git a/Geo/gmshEdge.h b/Geo/gmshEdge.h
index eeae51aeef0dd4bd854930a9925ff2e9b940ff34..489919d02290aa7aee6e2634e784d2424ab5baed 100644
--- a/Geo/gmshEdge.h
+++ b/Geo/gmshEdge.h
@@ -34,7 +34,6 @@ class gmshEdge : public GEdge {
   virtual GeomType geomType() const;
   virtual GPoint point(double p) const;
   virtual GPoint closestPoint(const SPoint3 & queryPoint) const;
-  virtual int containsParam(double pt) const;
   virtual SVector3 firstDer(double par) const;
   ModelType getNativeType() const { return GmshModel; }
   void * getNativePtr() const { return c; }
diff --git a/Geo/gmshFace.cpp b/Geo/gmshFace.cpp
index 47ca8b4ceaed5a7d587821c265ed878c0f3184d8..4d1f92b6db36e8a6d53f88518c5b6ab80f785740 100644
--- a/Geo/gmshFace.cpp
+++ b/Geo/gmshFace.cpp
@@ -1,4 +1,4 @@
-// $Id: gmshFace.cpp,v 1.47 2008-02-17 08:47:59 geuzaine Exp $
+// $Id: gmshFace.cpp,v 1.48 2008-02-17 09:30:28 geuzaine Exp $
 //
 // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 //
@@ -202,17 +202,6 @@ GPoint gmshFace::closestPoint(const SPoint3 & qp) const
   return GPoint(v.Pos.X, v.Pos.Y, v.Pos.Z, this, u);
 }
 
-int gmshFace::containsParam(const SPoint2 &pt) const
-{
-  Range<double> uu = parBounds(0);
-  Range<double> vv = parBounds(1);
-  if((pt.x() >= uu.low() && pt.x() <= uu.high()) && 
-     (pt.y() >= vv.low() && pt.y() <= vv.high()))
-    return 1;
-  else 
-    return 0;
-}
-
 SPoint2 gmshFace::parFromPoint(const SPoint3 &qp) const
 {
   if(s->Typ == MSH_SURF_PLAN){
diff --git a/Geo/gmshFace.h b/Geo/gmshFace.h
index f03db765ff270789f1c0429fc07c31715e1973c0..e7736899b82d34f53f41288e269ad4710405870d 100644
--- a/Geo/gmshFace.h
+++ b/Geo/gmshFace.h
@@ -35,7 +35,6 @@ class gmshFace : public GFace {
   virtual GPoint point(double par1, double par2) const; 
   virtual GPoint closestPoint(const SPoint3 & queryPoint) const; 
   virtual int containsPoint(const SPoint3 &pt) const;  
-  virtual int containsParam(const SPoint2 &pt) const; 
   virtual double getMetricEigenvalue(const SPoint2 &);  
   virtual SVector3 normal(const SPoint2 &param) const; 
   virtual Pair<SVector3,SVector3> firstDer(const SPoint2 &param) const;