diff --git a/Geo/GFace.cpp b/Geo/GFace.cpp
index 809eb708944dacea00cd89f69db9529a31b9f88f..5026a837d628c09f0ff9b61b3ce5e49a56ad8b02 100644
--- a/Geo/GFace.cpp
+++ b/Geo/GFace.cpp
@@ -1,4 +1,4 @@
-// $Id: GFace.cpp,v 1.63 2008-06-03 08:55:33 remacle Exp $
+// $Id: GFace.cpp,v 1.64 2008-06-03 21:39:01 geuzaine Exp $
 //
 // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 //
@@ -387,17 +387,16 @@ end:
   Msg::Debug("Surface: %d", tag());
   Msg::Debug("SVD    : %g,%g,%g (min=%d)", svd[0], svd[1], svd[2], min);
   Msg::Debug("Plane  : (%g x + %g y + %g z = %g)",
-      meanPlane.a, meanPlane.b, meanPlane.c, meanPlane.d);
+	     meanPlane.a, meanPlane.b, meanPlane.c, meanPlane.d);
   Msg::Debug("Normal : (%g , %g , %g )",
-      meanPlane.a, meanPlane.b, meanPlane.c);
+	     meanPlane.a, meanPlane.b, meanPlane.c);
   Msg::Debug("t1     : (%g , %g , %g )", t1[0], t1[1], t1[2]);
   Msg::Debug("t2     : (%g , %g , %g )", t2[0], t2[1], t2[2]);
   Msg::Debug("pt     : (%g , %g , %g )",
-      meanPlane.x, meanPlane.y, meanPlane.z);
+	     meanPlane.x, meanPlane.y, meanPlane.z);
 
   //check coherence for plane surfaces
-  //check commented out because parametric surfaces are not plane in this sense
-  /*if(geomType() == Plane) {
+  if(geomType() == Plane) {
     SBoundingBox3d bb = bounds();
     double lc = norm(SVector3(bb.max(), bb.min()));
     std::list<GVertex*> verts = vertices();
@@ -414,7 +413,7 @@ end:
         return;
       }
     }
-  }*/
+  }
 #endif
 }
 
diff --git a/Geo/gmshFace.cpp b/Geo/gmshFace.cpp
index 7f669b6750780dae2fc50f751fa237923092deb6..5cd383fa5427860a80edb0f4746a61aff56a70a6 100644
--- a/Geo/gmshFace.cpp
+++ b/Geo/gmshFace.cpp
@@ -1,4 +1,4 @@
-// $Id: gmshFace.cpp,v 1.56 2008-05-04 08:31:14 geuzaine Exp $
+// $Id: gmshFace.cpp,v 1.57 2008-06-03 21:39:01 geuzaine Exp $
 //
 // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 //
@@ -224,12 +224,20 @@ SPoint2 gmshFace::parFromPoint(const SPoint3 &qp) const
 GEntity::GeomType gmshFace::geomType() const
 {
   switch(s->Typ){
-  case MSH_SURF_PLAN: return Plane;
+  case MSH_SURF_PLAN: 
+    if(s->geometry) 
+      return ParametricSurface;
+    else
+      return Plane;
   case MSH_SURF_REGL:
-  case MSH_SURF_TRIC: return RuledSurface;
-  case MSH_SURF_DISCRETE: return DiscreteSurface;
-  case MSH_SURF_BND_LAYER: return BoundaryLayerSurface;
-  default: return Unknown;
+  case MSH_SURF_TRIC: 
+    return RuledSurface;
+  case MSH_SURF_DISCRETE: 
+    return DiscreteSurface;
+  case MSH_SURF_BND_LAYER:
+    return BoundaryLayerSurface;
+  default: 
+    return Unknown;
   }
 }
 
diff --git a/benchmarks/misc/adaptive_vector.pos b/benchmarks/misc/adaptive_vector.pos
index 9a32ea5a56f7fad079682cbd31768e3b521f3514..f4e00defdef9b2cb7f64e197b05f8002f61772e9 100644
--- a/benchmarks/misc/adaptive_vector.pos
+++ b/benchmarks/misc/adaptive_vector.pos
@@ -4,32 +4,12 @@ VQ(0.1,1,0,0,1,0,0,0.8,0,0.1,0.8,0){0,0,0,  0,0,0, 1,0,0, 0,0,0};
 
 INTERPOLATION_SCHEME 
 {
-  {.25,-.25,.25,-.25},
-  {.25,.25,-.25,-.25},
-  {.25,.25,.25,.25},
-  {.25,-.25,-.25,.25},
-
-  {.25,-.25,.25,-.25},
-  {.25,.25,-.25,-.25},
-  {.25,.25,.25,.25},
-  {.25,-.25,-.25,.25},
-
   {.25,-.25,.25,-.25},
   {.25,.25,-.25,-.25},
   {.25,.25,.25,.25},
   {.25,-.25,-.25,.25}
 }
 { 
-  {0,0,0},
-  {1,0,0},
-  {0,1,0},
-  {1,1,0},
-
-  {0,0,0},
-  {1,0,0},
-  {0,1,0},
-  {1,1,0},
-
   {0,0,0},
   {1,0,0},
   {0,1,0},