diff --git a/Plugin/CutMap.cpp b/Plugin/CutMap.cpp
index b546d7e2b08b573ba40eb8b1a571e9ad384a909f..0515aa2bba82774c688844a343159e863213f1dd 100644
--- a/Plugin/CutMap.cpp
+++ b/Plugin/CutMap.cpp
@@ -1,4 +1,4 @@
-// $Id: CutMap.cpp,v 1.33 2003-11-22 18:45:40 geuzaine Exp $
+// $Id: CutMap.cpp,v 1.34 2003-11-23 02:56:02 geuzaine Exp $
 //
 // Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle
 //
@@ -63,7 +63,10 @@ void GMSH_CutMapPlugin::getInfos(char *author, char *copyright,
 	 "run on the current view. If 'dTimeStep' < 0, the\n"
 	 "plugin uses, for each time step in 'iView', the\n"
 	 "corresponding time step in 'dView'. If 'dView'\n"
-	 "< 0, the plugin uses 'iView' as the field source.\n");
+	 "< 0, the plugin uses 'iView' as the value source.\n"
+	 "\n"
+	 "Plugin(CutMap) creates (at most) as many views\n"
+	 "as there are time steps in 'iView'.\n");
 }
 
 int GMSH_CutMapPlugin::getNbOptions() const
diff --git a/Plugin/CutPlane.cpp b/Plugin/CutPlane.cpp
index e3a2eb6a03ea96116114a1589936ee9f59130d1b..9680c4c362cde9b36c956eb00e30e83f3b707528 100644
--- a/Plugin/CutPlane.cpp
+++ b/Plugin/CutPlane.cpp
@@ -1,4 +1,4 @@
-// $Id: CutPlane.cpp,v 1.29 2003-11-22 18:45:40 geuzaine Exp $
+// $Id: CutPlane.cpp,v 1.30 2003-11-23 02:56:02 geuzaine Exp $
 //
 // Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle
 //
@@ -61,7 +61,9 @@ void GMSH_CutPlanePlugin::getInfos(char *author, char *copyright,
          "Plugin(CutPlane) cuts the view 'iView' with\n"
 	 "the plane 'A'*X + 'B'*Y + 'C'*Z + 'D' = 0. If\n"
 	 "'iView' < 0, the plugin is run on the current\n"
-	 "view.\n");
+	 "view.\n"
+	 "\n"
+	 "Plugin(CutPlane) creates one new view.\n");
 }
 
 int GMSH_CutPlanePlugin::getNbOptions() const
diff --git a/Plugin/CutSphere.cpp b/Plugin/CutSphere.cpp
index ba748c6b692d51085a4173676c3ce10a57e6424a..18bb922858f462a63fb9f063dbed8869940f4247 100644
--- a/Plugin/CutSphere.cpp
+++ b/Plugin/CutSphere.cpp
@@ -1,4 +1,4 @@
-// $Id: CutSphere.cpp,v 1.28 2003-11-22 18:45:40 geuzaine Exp $
+// $Id: CutSphere.cpp,v 1.29 2003-11-23 02:56:02 geuzaine Exp $
 //
 // Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle
 //
@@ -62,7 +62,9 @@ void GMSH_CutSpherePlugin::getInfos(char *author, char *copyright,
          "Plugin(CutSphere) cuts the view 'iView' with the\n"
 	 "sphere (X-'Xc')^2 + (Y-'Yc')^2 + (Z-'Zc')^2 = 'R'^2.\n"
 	 "If 'iView' < 0, the plugin is run on the current\n"
-	 "view.\n");
+	 "view.\n"
+	 "\n"
+	 "Plugin(CutSphere) creates one new view.\n");
 }
 
 int GMSH_CutSpherePlugin::getNbOptions() const
diff --git a/Plugin/DecomposeInSimplex.cpp b/Plugin/DecomposeInSimplex.cpp
index f92c30d61b2a766a408866a050f0a29a0e6de0ba..e6a30569aed786914b7e89de607482cdb8c943c0 100644
--- a/Plugin/DecomposeInSimplex.cpp
+++ b/Plugin/DecomposeInSimplex.cpp
@@ -1,4 +1,4 @@
-// $Id: DecomposeInSimplex.cpp,v 1.4 2003-11-22 01:45:48 geuzaine Exp $
+// $Id: DecomposeInSimplex.cpp,v 1.5 2003-11-23 02:56:02 geuzaine Exp $
 //
 // Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle
 //
@@ -60,7 +60,9 @@ void GMSH_DecomposeInSimplexPlugin::getInfos(char *author, char *copyright,
          "Plugin(DecomposeInSimplex) decomposes any non-\n"
 	 "simplectic element in the view 'iView' into\n"
 	 "simplices. If 'iView' < 0, the plugin is run on\n"
-	 "the current view.\n");
+	 "the current view.\n"
+	 "\n"
+	 "Plugin(DecomposeInSimplex) is executed in-place.\n");
 }
 
 int GMSH_DecomposeInSimplexPlugin::getNbOptions() const
diff --git a/Plugin/DisplacementRaise.cpp b/Plugin/DisplacementRaise.cpp
index bbed035a51f054b01590636d49f0a3dd527bf250..2853582fd2a96cb2ce9ae16b3b0367f719be659f 100644
--- a/Plugin/DisplacementRaise.cpp
+++ b/Plugin/DisplacementRaise.cpp
@@ -1,4 +1,4 @@
-// $Id: DisplacementRaise.cpp,v 1.9 2003-11-22 18:45:40 geuzaine Exp $
+// $Id: DisplacementRaise.cpp,v 1.10 2003-11-23 02:56:02 geuzaine Exp $
 //
 // Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle
 //
@@ -68,7 +68,9 @@ void GMSH_DisplacementRaisePlugin::getInfos(char *author, char *copyright,
 	 "run on the current view. If 'dView' < 0, the\n"
 	 "plugin looks for the displacements in the\n"
 	 "view located just after 'iView' in the view\n"
-	 "list.\n");
+	 "list.\n"
+	 "\n"
+	 "Plugin(DisplacementRaise) is executed in-place.\n");
 }
 
 int GMSH_DisplacementRaisePlugin::getNbOptions() const
@@ -88,7 +90,7 @@ void GMSH_DisplacementRaisePlugin::catchErrorMessage(char *errorMessage) const
 
 static void displacementRaiseList(Post_View * iView, List_T * iList, int iNbElm, 
 				  Post_View * dView, List_T * dList, int dNbElm,
-				  int nbVert, double factor, int dTimeStep)
+				  int nbNod, double factor, int dTimeStep)
 {
   if(!iNbElm || !dNbElm)
     return;
@@ -117,13 +119,13 @@ static void displacementRaiseList(Post_View * iView, List_T * iList, int iNbElm,
   int dNb = List_Nbr(dList) / dNbElm;
   for(int i = 0, j = 0; i < List_Nbr(iList); i += iNb, j += dNb) {
     double *x = (double *)List_Pointer_Fast(iList, i);
-    double *y = (double *)List_Pointer_Fast(iList, i + nbVert);
-    double *z = (double *)List_Pointer_Fast(iList, i + 2 * nbVert);
-    double *val = (double *)List_Pointer_Fast(dList, j + 3 * nbVert);
-    for(int k = 0; k < nbVert; k++) {
-      x[k] += factor * val[3 * nbVert * dTimeStep + 3 * k];
-      y[k] += factor * val[3 * nbVert * dTimeStep + 3 * k + 1];
-      z[k] += factor * val[3 * nbVert * dTimeStep + 3 * k + 2];
+    double *y = (double *)List_Pointer_Fast(iList, i + nbNod);
+    double *z = (double *)List_Pointer_Fast(iList, i + 2 * nbNod);
+    double *val = (double *)List_Pointer_Fast(dList, j + 3 * nbNod);
+    for(int k = 0; k < nbNod; k++) {
+      x[k] += factor * val[3 * nbNod * dTimeStep + 3 * k];
+      y[k] += factor * val[3 * nbNod * dTimeStep + 3 * k + 1];
+      z[k] += factor * val[3 * nbNod * dTimeStep + 3 * k + 2];
     }
   }
 
diff --git a/Plugin/Harmonic2Time.cpp b/Plugin/Harmonic2Time.cpp
index f9dbcbac1fb156b2539395f670ac192c4cf0b833..1b91bdc8f4e6a5222a6604e8e34c01d5e38130c6 100644
--- a/Plugin/Harmonic2Time.cpp
+++ b/Plugin/Harmonic2Time.cpp
@@ -1,4 +1,4 @@
-// $Id: Harmonic2Time.cpp,v 1.7 2003-11-21 07:56:32 geuzaine Exp $
+// $Id: Harmonic2Time.cpp,v 1.8 2003-11-23 02:56:02 geuzaine Exp $
 //
 // Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle
 //
@@ -67,7 +67,9 @@ void GMSH_Harmonic2TimePlugin::getInfos(char *author, char *copyright,
          "'iView'['imaginaryPart'] * sin(p)), with\n"
          "p = 2*Pi*k/'nbSteps', k = 0, ..., 'nbSteps'-1.\n"
 	 "If 'iView' < 0, the plugin is run on the\n"
-	 "current view.\n");
+	 "current view.\n"
+	 "\n"
+	 "Plugin(Harmonic2Time) creates one new view.\n");
 }
 
 int GMSH_Harmonic2TimePlugin::getNbOptions() const
diff --git a/Plugin/Levelset.cpp b/Plugin/Levelset.cpp
index e97cdcf9a40043f8620363d931f498116aaedd89..888fdc707296ce05f2180ff89c1e3557e7ae3d8f 100644
--- a/Plugin/Levelset.cpp
+++ b/Plugin/Levelset.cpp
@@ -1,4 +1,4 @@
-// $Id: Levelset.cpp,v 1.5 2003-11-22 18:45:40 geuzaine Exp $
+// $Id: Levelset.cpp,v 1.6 2003-11-23 02:56:02 geuzaine Exp $
 //
 // Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle
 //
@@ -52,7 +52,7 @@ static void affect(double *xpi, double *ypi, double *zpi, double valpi[12][9], i
 }
 
 int GMSH_LevelsetPlugin::zeroLevelset(int timeStep, 
-				      int nbVert, int nbEdg, int exn[12][2],
+				      int nbNod, int nbEdg, int exn[12][2],
 				      double *x, double *y, double *z, 
 				      double *iVal, int iNbComp,
 				      double *dVal, int dNbComp,
@@ -62,11 +62,11 @@ int GMSH_LevelsetPlugin::zeroLevelset(int timeStep,
 
   // compute the value of the levelset function at each node
   if(_valueIndependent) {
-    for(int k = 0; k < nbVert; k++)
+    for(int k = 0; k < nbNod; k++)
       levels[k] = levelset(x[k], y[k], z[k], 0.0);
   }
   else{
-    for(int k = 0; k < nbVert; k++) {
+    for(int k = 0; k < nbNod; k++) {
       double *vals = &iVal[iNbComp * k];
       switch(iNbComp) {
       case 1: // scalar
@@ -220,24 +220,11 @@ int GMSH_LevelsetPlugin::zeroLevelset(int timeStep,
   return 0;
 }
 
-static int getTimeStep(int timeStep, int ts, Post_View *dView)
-{
-  if(timeStep < 0) {
-    return ts;
-  }
-  if(timeStep >= dView->NbTimeStep) {
-    Msg(WARNING, "Wrong TimeStep %d in View[%d]: reverting to TimeStep 0",
-	timeStep, dView->Index);
-    return 0;
-  }
-  return timeStep;
-}
-
 void GMSH_LevelsetPlugin::executeList(Post_View * iView, List_T * iList, 
 				      int iNbElm, int iNbComp,
 				      Post_View * dView, List_T * dList, 
 				      int dNbElm, int dNbComp,
-				      int nbVert, int nbEdg, int exn[12][2], 
+				      int nbNod, int nbEdg, int exn[12][2], 
 				      vector<Post_View *> out)
 {
   if(!iNbElm || !dNbElm) 
@@ -249,35 +236,42 @@ void GMSH_LevelsetPlugin::executeList(Post_View * iView, List_T * iList,
     return;
   }
 
+  int dTimeStep = _valueTimeStep;
+  if(dTimeStep >= dView->NbTimeStep) {
+    Msg(WARNING, "Wrong time step %d in View[%d]: reverting to time step 0",
+	dTimeStep, dView->Index);
+    dTimeStep = 0;
+  }
+
   int iNb = List_Nbr(iList) / iNbElm;
   int dNb = List_Nbr(dList) / dNbElm;
   for(int i = 0, j = 0; i < List_Nbr(iList); i += iNb, j += dNb) {
     double *x = (double *)List_Pointer_Fast(iList, i);
-    double *y = (double *)List_Pointer_Fast(iList, i + nbVert);
-    double *z = (double *)List_Pointer_Fast(iList, i + 2 * nbVert);
+    double *y = (double *)List_Pointer_Fast(iList, i + nbNod);
+    double *z = (double *)List_Pointer_Fast(iList, i + 2 * nbNod);
 
-    if(nbVert == 2 || nbVert == 3 || (nbVert == 4 && nbEdg == 6)) {
+    if(nbNod == 2 || nbNod == 3 || (nbNod == 4 && nbEdg == 6)) {
       // easy for simplices: at most one element is created per time step 
       for(int iTS = 0; iTS < iView->NbTimeStep; iTS++) {
-	int dTS = getTimeStep(_valueTimeStep, iTS, dView);
+	int dTS = (dTimeStep < 0) ? iTS : dTimeStep;
 	// don't compute the zero levelset of the value view
-	if(_valueTimeStep < 0 || iView != dView || dTS != iTS){
-	  double *iVal = (double *)List_Pointer_Fast(iList, i + 3 * nbVert + 
-						     iNbComp * nbVert * iTS); 
-	  double *dVal = (double *)List_Pointer_Fast(dList, j + 3 * nbVert + 
-						     dNbComp * nbVert * dTS);
-	  zeroLevelset(iTS, nbVert, nbEdg, exn, x, y, z, 
+	if(dTimeStep < 0 || iView != dView || dTS != iTS){
+	  double *iVal = (double *)List_Pointer_Fast(iList, i + 3 * nbNod + 
+						     iNbComp * nbNod * iTS); 
+	  double *dVal = (double *)List_Pointer_Fast(dList, j + 3 * nbNod + 
+						     dNbComp * nbNod * dTS);
+	  zeroLevelset(iTS, nbNod, nbEdg, exn, x, y, z, 
 		       iVal, iNbComp, dVal, dNbComp, out);
 	}
       }
     }
     else{
       // we decompose the element into simplices
-      DecomposeInSimplex iDec(nbVert, iNbComp);
-      DecomposeInSimplex dDec(nbVert, dNbComp);
+      DecomposeInSimplex iDec(nbNod, iNbComp);
+      DecomposeInSimplex dDec(nbNod, dNbComp);
       
-      int nbVertNew = iDec.numSimplexNodes();
-      int nbEdgNew = (nbVertNew == 4) ? 6 : 3;
+      int nbNodNew = iDec.numSimplexNodes();
+      int nbEdgNew = (nbNodNew == 4) ? 6 : 3;
       int exnTri[12][2] = {{0,1},{0,2},{1,2}};
       int exnTet[12][2] = {{0,1},{0,2},{0,3},{1,2},{1,3},{2,3}};
       double xNew[4], yNew[4], zNew[4];
@@ -289,20 +283,20 @@ void GMSH_LevelsetPlugin::executeList(Post_View * iView, List_T * iList,
 	// the time steps so that only one element gets created per
 	// time step. This allows us to still easily generate a
 	// *single* multi-timestep view.
-	if(zeroLevelset(0, nbVert, nbEdg, exn, x, y, z, NULL, 0, 
+	if(zeroLevelset(0, nbNod, nbEdg, exn, x, y, z, NULL, 0, 
 			NULL, 0, out)) {
 	  for(int k = 0; k < iDec.numSimplices(); k++) {
 	    for(int iTS = 0; iTS < iView->NbTimeStep; iTS++) {
-	      int dTS = getTimeStep(_valueTimeStep, iTS, dView);
+	      int dTS = (dTimeStep < 0) ? iTS : dTimeStep;
 	      // don't compute the zero levelset of the value view
-	      if(_valueTimeStep < 0 || iView != dView || dTS != iTS){
-		double *iVal = (double *)List_Pointer_Fast(iList, i + 3 * nbVert + 
-							   iNbComp * nbVert * iTS); 
-		double *dVal = (double *)List_Pointer_Fast(dList, j + 3 * nbVert + 
-							   dNbComp * nbVert * dTS);
+	      if(dTimeStep < 0 || iView != dView || dTS != iTS){
+		double *iVal = (double *)List_Pointer_Fast(iList, i + 3 * nbNod + 
+							   iNbComp * nbNod * iTS); 
+		double *dVal = (double *)List_Pointer_Fast(dList, j + 3 * nbNod + 
+							   dNbComp * nbNod * dTS);
 		iDec.decompose(k, x, y, z, iVal, xNew, yNew, zNew, iValNew);
 		dDec.decompose(k, x, y, z, dVal, xNew, yNew, zNew, dValNew);
-		zeroLevelset(iTS, nbVertNew, nbEdgNew, (nbVertNew == 4) ? exnTet : exnTri, 
+		zeroLevelset(iTS, nbNodNew, nbEdgNew, (nbNodNew == 4) ? exnTet : exnTri, 
 			     xNew, yNew, zNew, iValNew, iNbComp, dValNew, dNbComp, out);
 	      }
 	    }
@@ -313,19 +307,19 @@ void GMSH_LevelsetPlugin::executeList(Post_View * iView, List_T * iList,
 	// since we generate one view for each time step, we can
 	// generate multiple elements per time step without problem.
 	for(int iTS = 0; iTS < iView->NbTimeStep; iTS++) {
-	  int dTS = getTimeStep(_valueTimeStep, iTS, dView);
+	  int dTS = (dTimeStep < 0) ? iTS : dTimeStep;
 	  // don't compute the zero levelset of the value view
-	  if(_valueTimeStep < 0 || iView != dView || dTS != iTS){
-	    double *iVal = (double *)List_Pointer_Fast(iList, i + 3 * nbVert +
-						       iNbComp * nbVert * iTS); 
-	    if(zeroLevelset(iTS, nbVert, nbEdg, exn, x, y, z, iVal, iNbComp, 
+	  if(dTimeStep < 0 || iView != dView || dTS != iTS){
+	    double *iVal = (double *)List_Pointer_Fast(iList, i + 3 * nbNod +
+						       iNbComp * nbNod * iTS); 
+	    if(zeroLevelset(iTS, nbNod, nbEdg, exn, x, y, z, iVal, iNbComp, 
 			    NULL, 0, out)) {
-	      double *dVal = (double *)List_Pointer_Fast(dList, j + 3 * nbVert +
-							 dNbComp * nbVert * dTS);
+	      double *dVal = (double *)List_Pointer_Fast(dList, j + 3 * nbNod +
+							 dNbComp * nbNod * dTS);
 	      for(int k = 0; k < iDec.numSimplices(); k++) {
 		iDec.decompose(k, x, y, z, iVal, xNew, yNew, zNew, iValNew);
 		dDec.decompose(k, x, y, z, dVal, xNew, yNew, zNew, dValNew);
-		zeroLevelset(iTS, nbVertNew, nbEdgNew, (nbVertNew == 4) ? exnTet : exnTri, 
+		zeroLevelset(iTS, nbNodNew, nbEdgNew, (nbNodNew == 4) ? exnTet : exnTri, 
 			     xNew, yNew, zNew, iValNew, iNbComp, dValNew, dNbComp, out);
 	      }
 	    }
@@ -542,4 +536,3 @@ Post_View *GMSH_LevelsetPlugin::execute(Post_View * v)
 
   return 0;
 }
-
diff --git a/Plugin/Smooth.cpp b/Plugin/Smooth.cpp
index c8b1ff973ffd6e28f21b40a6365bb7c129a65523..79de0cac9913112a104b50950e04ad03c7265bb2 100644
--- a/Plugin/Smooth.cpp
+++ b/Plugin/Smooth.cpp
@@ -1,4 +1,4 @@
-// $Id: Smooth.cpp,v 1.15 2003-11-21 07:56:32 geuzaine Exp $
+// $Id: Smooth.cpp,v 1.16 2003-11-23 02:56:02 geuzaine Exp $
 //
 // Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle
 //
@@ -58,7 +58,9 @@ void GMSH_SmoothPlugin::getInfos(char *author, char *copyright,
   strcpy(help_text,
          "Plugin(Smooth) averages the values at the nodes\n"
 	 "of the scalar view 'iView'. If 'iView' < 0, the\n"
-	 "plugin is run on the current view.\n");
+	 "plugin is run on the current view.\n"
+	 "\n"
+	 "Plugin(Smooth) is executed in-place.\n");
 }
 
 int GMSH_SmoothPlugin::getNbOptions() const
diff --git a/Plugin/SphericalRaise.cpp b/Plugin/SphericalRaise.cpp
index 0d97ec475abb512f6c826b89e0bce64870b1636b..88cb0084a28d14fb2fcde1caee05317e68516498 100644
--- a/Plugin/SphericalRaise.cpp
+++ b/Plugin/SphericalRaise.cpp
@@ -1,4 +1,4 @@
-// $Id: SphericalRaise.cpp,v 1.9 2003-11-21 07:56:32 geuzaine Exp $
+// $Id: SphericalRaise.cpp,v 1.10 2003-11-23 02:56:02 geuzaine Exp $
 //
 // Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle
 //
@@ -71,7 +71,9 @@ void GMSH_SphericalRaisePlugin::getInfos(char *author, char *copyright,
 	 "and View['iView'].RaiseZ, the raise is applied\n"
 	 " along the radius of a sphere centered at ('Xc',\n"
 	 "'Yc', 'Zc'). If 'iView' < 0, the plugin is run\n"
-	 "on the current view.\n");
+	 "on the current view.\n"
+	 "\n"
+	 "Plugin(SphericalRaise) is executed in-place.\n");
 }
 
 int GMSH_SphericalRaisePlugin::getNbOptions() const
@@ -89,14 +91,14 @@ void GMSH_SphericalRaisePlugin::catchErrorMessage(char *errorMessage) const
   strcpy(errorMessage, "SphericalRaise failed...");
 }
 
-static void sphericalRaiseList(Post_View * v, List_T * list, int nbelm,
-                               int nbvert, int timeStep, double center[3], 
+static void sphericalRaiseList(Post_View * v, List_T * list, int nbElm,
+                               int nbNod, int timeStep, double center[3], 
 			       double raise)
 {
   double *x, *y, *z, *val, d[3], coef;
   int nb, i, j;
 
-  if(nbelm)
+  if(nbElm)
     v->Changed = 1;
   else
     return;
@@ -114,18 +116,18 @@ static void sphericalRaiseList(Post_View * v, List_T * list, int nbelm,
   //      get nodal value val at xyz
   //      compute (x,y,z)_new = (x,y,z)_old + raise*val*(dx,dy,dz)
 
-  nb = List_Nbr(list) / nbelm;
+  nb = List_Nbr(list) / nbElm;
   for(i = 0; i < List_Nbr(list); i += nb) {
     x = (double *)List_Pointer_Fast(list, i);
-    y = (double *)List_Pointer_Fast(list, i + nbvert);
-    z = (double *)List_Pointer_Fast(list, i + 2 * nbvert);
-    val = (double *)List_Pointer_Fast(list, i + 3 * nbvert);
-    for(j = 0; j < nbvert; j++) {
+    y = (double *)List_Pointer_Fast(list, i + nbNod);
+    z = (double *)List_Pointer_Fast(list, i + 2 * nbNod);
+    val = (double *)List_Pointer_Fast(list, i + 3 * nbNod);
+    for(j = 0; j < nbNod; j++) {
       d[0] = x[j] - center[0];
       d[1] = y[j] - center[1];
       d[2] = z[j] - center[2];
       norme(d);
-      coef = raise * val[nbvert * timeStep + j];
+      coef = raise * val[nbNod * timeStep + j];
       x[j] += coef * d[0];
       y[j] += coef * d[1];
       z[j] += coef * d[2];
diff --git a/Plugin/Transform.cpp b/Plugin/Transform.cpp
index dbfe9b994a9289bf326a222d35da3451b44dad26..35e4fe0200595b987b2f6b9afc293f8499f7e687 100644
--- a/Plugin/Transform.cpp
+++ b/Plugin/Transform.cpp
@@ -1,4 +1,4 @@
-// $Id: Transform.cpp,v 1.19 2003-11-21 07:56:32 geuzaine Exp $
+// $Id: Transform.cpp,v 1.20 2003-11-23 02:56:02 geuzaine Exp $
 //
 // Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle
 //
@@ -71,7 +71,9 @@ void GMSH_TransformPlugin::getInfos(char *author, char *copyright,
 	 "['A21' 'A22' 'A23']\n"
 	 "['A31' 'A32' 'A33'].\n"
 	 "If 'iView' < 0, the plugin is run on the current\n"
-	 "view.\n");
+	 "view.\n"
+	 "\n"
+	 "Plugin(Transform) is executed in-place.\n");
 }
 
 int GMSH_TransformPlugin::getNbOptions() const
diff --git a/Plugin/Triangulate.cpp b/Plugin/Triangulate.cpp
index fcfb538edd4396a6e2ad01b1cc5e494fef57df3c..f7dce6edb4c30d8671dd8bca00163294358a9ce0 100644
--- a/Plugin/Triangulate.cpp
+++ b/Plugin/Triangulate.cpp
@@ -1,4 +1,4 @@
-// $Id: Triangulate.cpp,v 1.13 2003-11-21 07:56:32 geuzaine Exp $
+// $Id: Triangulate.cpp,v 1.14 2003-11-23 02:56:02 geuzaine Exp $
 //
 // Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle
 //
@@ -66,7 +66,9 @@ void GMSH_TriangulatePlugin::getInfos(char *author, char *copyright,
 	 "in the scalar view 'iView', assuming that all\n"
          "the points belong to a surface than can be\n"
 	 "univoquely projected into a plane. If 'iView'\n"
-	 "< 0, the plugin is run on the current view.\n");
+	 "< 0, the plugin is run on the current view.\n"
+	 "\n"
+	 "Plugin(Triangulate) creates one new view.\n");
 }
 
 int GMSH_TriangulatePlugin::getNbOptions() const
@@ -226,7 +228,7 @@ Post_View *GMSH_TriangulatePlugin::execute(Post_View * v)
     return View;
   }
   else {
-    Msg(WARNING, "No scalar points to triangulate in view '%s'", vv->Name);
+    Msg(WARNING, "No scalar points to triangulate in View[%d]", vv->Index);
     return 0;
   }
 
diff --git a/doc/VERSIONS b/doc/VERSIONS
index 81f8937fde3938421c7b50595b5198e170ff38bc..842a2014b5edfc1a170e5ef13df47c24a179a968 100644
--- a/doc/VERSIONS
+++ b/doc/VERSIONS
@@ -1,10 +1,11 @@
-$Id: VERSIONS,v 1.161 2003-11-22 01:45:48 geuzaine Exp $
-
-New since 1.47: new DisplacementRaise plugin to plot arbitrary fields
-on deformed meshes; generalized CutMap, CutPlane and CutSphere
-plugins; small bug fixes (configure tests for libpng, handling of
-erroneous options, multi timestep scalar prism drawings, copy of
-surface mesh attributes);
+$Id: VERSIONS,v 1.162 2003-11-23 02:56:02 geuzaine Exp $
+
+New in 1.48: new DisplacementRaise plugin to plot arbitrary fields on
+deformed meshes; generalized CutMap, CutPlane, CutSphere and Skin
+plugins to handle all kinds of elements and fields; new "Save View[n]"
+command to save views from a script; small bug fixes (configure tests
+for libpng, handling of erroneous options, multi time step scalar
+prism drawings, copy of surface mesh attributes);
 
 New in 1.47: fixed extrusion of surfaces defined by only two curves;
 new syntax to retrieve point coordinates and indices of entities