diff --git a/Fltk/pluginWindow.cpp b/Fltk/pluginWindow.cpp
index 28bdcebebe44deae4d672f3e77b559e5967cbec2..bf4eb88226968f74e1991a2eb9686eadda5224b4 100644
--- a/Fltk/pluginWindow.cpp
+++ b/Fltk/pluginWindow.cpp
@@ -152,7 +152,7 @@ static void add_scripting(GMSH_PostPlugin *p, PView *view)
 
 static void plugin_run_cb(Fl_Widget *w, void *data)
 {
-  GMSH_PostPlugin *p = (GMSH_PostPlugin*)data;
+  GMSH_Plugin *p = (GMSH_Plugin*)data;
 
   // get the values from the GUI
   int m = p->getNbOptionsStr();
@@ -168,34 +168,40 @@ static void plugin_run_cb(Fl_Widget *w, void *data)
     sxn->def = p->dialogBox->value[i]->value();
   }
 
-  // run on all selected views
-  bool no_view_selected = true;
-  for(int i = 1; i <= FlGui::instance()->plugins->view_browser->size(); i++) {
-    if(FlGui::instance()->plugins->view_browser->selected(i)) {
-      no_view_selected = false;
-      try{
-        if(i - 1 >= 0 && i - 1 < (int)PView::list.size()){
-          PView *view = PView::list[i - 1];
-          if(view->getData()->isRemote())
-            p->executeRemote(view);
+  if(p->getType() == GMSH_Plugin::GMSH_POST_PLUGIN){
+    GMSH_PostPlugin *pp = (GMSH_PostPlugin*)p;
+    // run on all selected views
+    bool no_view_selected = true;
+    for(int i = 1; i <= FlGui::instance()->plugins->view_browser->size(); i++) {
+      if(FlGui::instance()->plugins->view_browser->selected(i)) {
+        no_view_selected = false;
+        try{
+          if(i - 1 >= 0 && i - 1 < (int)PView::list.size()){
+            PView *view = PView::list[i - 1];
+            if(view->getData()->isRemote())
+              pp->executeRemote(view);
+            else{
+              pp->execute(view);
+              add_scripting(pp, view);
+            }
+          }
           else{
-            p->execute(view);
-            add_scripting(p, view);
+            pp->execute(0);
+            add_scripting(pp, 0);
           }
         }
-        else{
-          p->execute(0);
-          add_scripting(p, 0);
+        catch(GMSH_Plugin * err) {
+          char tmp[256];
+          pp->catchErrorMessage(tmp);
+          Msg::Warning("%s", tmp);
         }
       }
-      catch(GMSH_Plugin * err) {
-        char tmp[256];
-        p->catchErrorMessage(tmp);
-        Msg::Warning("%s", tmp);
-      }
     }
+    if(no_view_selected) pp->execute(0);
+  }
+  else{
+    p->run();
   }
-  if(no_view_selected) p->execute(0);
 
   FlGui::instance()->updateViews();
   GMSH_Plugin::draw = 0;
@@ -337,7 +343,8 @@ pluginWindow::pluginWindow(int deltaFontSize)
   for(std::map<std::string, GMSH_Plugin*>::iterator it = PluginManager::
         instance()->begin(); it != PluginManager::instance()->end(); ++it) {
     GMSH_Plugin *p = it->second;
-    if(p->getType() == GMSH_Plugin::GMSH_POST_PLUGIN) {
+    if(p->getType() == GMSH_Plugin::GMSH_POST_PLUGIN ||
+       p->getType() == GMSH_Plugin::GMSH_MESH_PLUGIN) {
       browser->add(p->getName().c_str(), p);
       _createDialogBox(p, 2 * WB + L1 + L2, WB, width - L1 - L2 - 3 * WB, 
                        height - 2 * WB);
diff --git a/Plugin/CutMesh.cpp b/Plugin/CutMesh.cpp
index d941b77fcb70361c9b1a69b0951867364cfd18a1..cf53af11d54713b4c5e0550e6ad26c665e9db2a0 100644
--- a/Plugin/CutMesh.cpp
+++ b/Plugin/CutMesh.cpp
@@ -43,8 +43,8 @@ StringXNumber *GMSH_CutMeshPlugin::getOption(int iopt)
   return &CutMeshOptions_Number[iopt];
 }
 
-void GMSH_CutMeshPlugin::run(){
-  
+void GMSH_CutMeshPlugin::run()
+{
   int iView = (int)CutMeshOptions_Number[0].def;
   if(iView < 0)
     iView = PView::list.size() - 1;
@@ -54,6 +54,7 @@ void GMSH_CutMeshPlugin::run(){
   int split = (int)CutMeshOptions_Number[1].def;
   int saveTri = (int)CutMeshOptions_Number[2].def;
   GModel *gm = GModel::current();
-  gm->buildCutGModel(gLs, !split, saveTri);
+  GModel *cgm = gm->buildCutGModel(gLs, !split, saveTri);
+  cgm->setVisibility(1);
 }
 
diff --git a/benchmarks/levelset/square.geo b/benchmarks/levelset/square.geo
index 2d0f8b1511171d464a7bdf5176e0e6c66bd8ab69..ea6ac44c308f2ea03f486ac83071c80d84dfb123 100644
--- a/benchmarks/levelset/square.geo
+++ b/benchmarks/levelset/square.geo
@@ -8,7 +8,7 @@
 //Background Field = 1;
 
 Mesh.Algorithm=1;
-Mesh.CharacteristicLengthFactor=1.5;
+Mesh.CharacteristicLengthFactor=2;
 Mesh.ElementOrder=1;
 
 lc=0.1;
@@ -20,16 +20,23 @@ Line(1) = {2, 3};
 Line(2) = {3, 4};
 Line(3) = {4, 1};
 Line(4) = {1, 2};
+Physical Line ("top") = {1};
+Physical Line ("left") = {4};
 
 Line Loop(5) = {1, 2, 3, 4};
 Plane Surface(10) = {5};
 
+Physical Surface ("surf") = {10};
+
+Merge "squareV.pos";
+
 Mesh 2;
 Levelset Plane (1) = {0,1,0,-7};
 Levelset Sphere (2) = {{0,0,0},-10};
 //Levelset Point (1) = {{0.1, 2, 0},{3,2,0},{9,2,0},{5,2,0}, {0.1, 2.2, -1},{3,2.5,-1},{9,2,-1},{5,2,-1}, {0.2, 2, 1},{3,2,1},{9,2,1},{5,2,1}}; 
 Levelset Intersection (3) = {1,2};
-Levelset CutMeshTri {3};
+Levelset PostView (4) = {0};
+//Levelset CutMeshTri {4};
 
-Print "square_cut.msh";
+//Print "square_cut.msh";
 
diff --git a/benchmarks/levelset/squareV.pos b/benchmarks/levelset/squareV.pos
new file mode 100644
index 0000000000000000000000000000000000000000..8bb23c9868a316382bcd25c2cac2a2293a8cb0e5
--- /dev/null
+++ b/benchmarks/levelset/squareV.pos
@@ -0,0 +1,54 @@
+View "New view_MathEval_MathEval" {
+SL(0.1,10,0.1,2.574999999994313,10,0.1){-4.9,-2.425000000005687};
+SL(2.574999999994313,10,0.1,5.049999999986964,10,0.1){-2.425000000005687,0.04999999998696403};
+SL(5.049999999986964,10,0.1,7.524999999991573,10,0.1){0.04999999998696403,2.524999999991573};
+SL(7.524999999991573,10,0.1,10,10,0.1){2.524999999991573,5};
+SL(0.1,0.1,0.1,0.1,2.574999999994313,0.1){-4.9,-4.9};
+SL(0.1,2.574999999994313,0.1,0.1,5.049999999986964,0.1){-4.9,-4.9};
+SL(0.1,5.049999999986964,0.1,0.1,7.524999999991573,0.1){-4.9,-4.9};
+SL(0.1,7.524999999991573,0.1,0.1,10,0.1){-4.9,-4.9};
+ST(2.36044430461694,6.067995514511253,0.1,0.1,5.049999999986964,0.1,0.1,7.524999999991573,0.1){-2.63955569538306,-4.9,-4.9};
+ST(3.598465426055707,2.014538206248786,0.1,5.050000000013794,0.1,0.1,2.575000000007345,0.1,0.1){-1.401534573944293,0.05000000001379412,-2.424999999992655};
+ST(7.71514272650873,4.020328902186659,0.1,10,5.050000000013794,0.1,10,2.575000000007345,0.1){2.71514272650873,5,5};
+ST(2.36044430461694,6.067995514511253,0.1,3.700770119026196,8.151478613216065,0.1,5.142547865965409,5.697110637185145,0.1){-2.63955569538306,-1.299229880973804,0.1425478659654091};
+ST(3.700770119026196,8.151478613216065,0.1,2.574999999994313,10,0.1,5.049999999986964,10,0.1){-1.299229880973804,-2.425000000005687,0.04999999998696403};
+ST(1.949716673795976,3.569025765949217,0.1,0.1,5.049999999986964,0.1,2.36044430461694,6.067995514511253,0.1){-3.050283326204024,-4.9,-2.63955569538306};
+ST(1.949716673795976,3.569025765949217,0.1,0.1,2.574999999994313,0.1,0.1,5.049999999986964,0.1){-3.050283326204024,-4.9,-4.9};
+ST(3.598465426055707,2.014538206248786,0.1,5.87835667004227,2.526941299456859,0.1,5.050000000013794,0.1,0.1){-1.401534573944293,0.8783566700422698,0.05000000001379412};
+ST(7.71514272650873,4.020328902186659,0.1,5.87835667004227,2.526941299456859,0.1,5.142547865965409,5.697110637185145,0.1){2.71514272650873,0.8783566700422698,0.1425478659654091};
+ST(7.492800993506647,5.676422015850005,0.1,7.71514272650873,4.020328902186659,0.1,5.142547865965409,5.697110637185145,0.1){2.492800993506647,2.71514272650873,0.1425478659654091};
+ST(8.67851460446659,8.804574679663698,0.1,7.524999999991573,10,0.1,10,10,0.1){3.67851460446659,2.524999999991573,5};
+ST(10,7.525000000005944,0.1,8.67851460446659,8.804574679663698,0.1,10,10,0.1){5,3.67851460446659,5};
+ST(8.17926562389324,1.877717499523486,0.1,10,2.575000000007345,0.1,10,0.1,0.1){3.17926562389324,5,5};
+ST(7.525000000005944,0.1,0.1,8.17926562389324,1.877717499523486,0.1,10,0.1,0.1){2.525000000005944,3.17926562389324,5};
+ST(2.574999999994313,10,0.1,1.744169285301122,8.508231300619908,0.1,0.1,10,0.1){-2.425000000005687,-3.255830714698878,-4.9};
+ST(0.1,7.524999999991573,0.1,1.744169285301122,8.508231300619908,0.1,2.36044430461694,6.067995514511253,0.1){-4.9,-3.255830714698878,-2.63955569538306};
+ST(1.744169285301122,8.508231300619908,0.1,0.1,7.524999999991573,0.1,0.1,10,0.1){-3.255830714698878,-4.9,-4.9};
+ST(3.700770119026196,8.151478613216065,0.1,1.744169285301122,8.508231300619908,0.1,2.574999999994313,10,0.1){-1.299229880973804,-3.255830714698878,-2.425000000005687};
+ST(3.700770119026196,8.151478613216065,0.1,2.36044430461694,6.067995514511253,0.1,1.744169285301122,8.508231300619908,0.1){-1.299229880973804,-2.63955569538306,-3.255830714698878};
+ST(10,2.575000000007345,0.1,8.17926562389324,1.877717499523486,0.1,7.71514272650873,4.020328902186659,0.1){5,3.17926562389324,2.71514272650873};
+ST(7.71514272650873,4.020328902186659,0.1,7.492800993506647,5.676422015850005,0.1,10,5.050000000013794,0.1){2.71514272650873,2.492800993506647,5};
+ST(7.524999999991573,10,0.1,8.67851460446659,8.804574679663698,0.1,7.38014412423449,7.618172135495045,0.1){2.524999999991573,3.67851460446659,2.38014412423449};
+ST(7.38014412423449,7.618172135495045,0.1,7.492800993506647,5.676422015850005,0.1,5.142547865965409,5.697110637185145,0.1){2.38014412423449,2.492800993506647,0.1425478659654091};
+ST(8.67851460446659,8.804574679663698,0.1,10,7.525000000005944,0.1,7.38014412423449,7.618172135495045,0.1){3.67851460446659,5,2.38014412423449};
+ST(5.87835667004227,2.526941299456859,0.1,7.525000000005944,0.1,0.1,5.050000000013794,0.1,0.1){0.8783566700422698,2.525000000005944,0.05000000001379412};
+ST(8.17926562389324,1.877717499523486,0.1,5.87835667004227,2.526941299456859,0.1,7.71514272650873,4.020328902186659,0.1){3.17926562389324,0.8783566700422698,2.71514272650873};
+ST(5.87835667004227,2.526941299456859,0.1,8.17926562389324,1.877717499523486,0.1,7.525000000005944,0.1,0.1){0.8783566700422698,3.17926562389324,2.525000000005944};
+ST(7.492800993506647,5.676422015850005,0.1,10,7.525000000005944,0.1,10,5.050000000013794,0.1){2.492800993506647,5,5};
+ST(7.38014412423449,7.618172135495045,0.1,10,7.525000000005944,0.1,7.492800993506647,5.676422015850005,0.1){2.38014412423449,5,2.492800993506647};
+ST(3.78590618809526,3.975122284670252,0.1,5.87835667004227,2.526941299456859,0.1,3.598465426055707,2.014538206248786,0.1){-1.21409381190474,0.8783566700422698,-1.401534573944293};
+ST(5.87835667004227,2.526941299456859,0.1,3.78590618809526,3.975122284670252,0.1,5.142547865965409,5.697110637185145,0.1){0.8783566700422698,-1.21409381190474,0.1425478659654091};
+ST(1.949716673795976,3.569025765949217,0.1,3.78590618809526,3.975122284670252,0.1,3.598465426055707,2.014538206248786,0.1){-3.050283326204024,-1.21409381190474,-1.401534573944293};
+ST(3.700770119026196,8.151478613216065,0.1,5.759692421840926,8.293352277179251,0.1,5.142547865965409,5.697110637185145,0.1){-1.299229880973804,0.759692421840926,0.1425478659654091};
+ST(5.759692421840926,8.293352277179251,0.1,7.38014412423449,7.618172135495045,0.1,5.142547865965409,5.697110637185145,0.1){0.759692421840926,2.38014412423449,0.1425478659654091};
+ST(5.759692421840926,8.293352277179251,0.1,3.700770119026196,8.151478613216065,0.1,5.049999999986964,10,0.1){0.759692421840926,-1.299229880973804,0.04999999998696403};
+ST(7.524999999991573,10,0.1,5.759692421840926,8.293352277179251,0.1,5.049999999986964,10,0.1){2.524999999991573,0.759692421840926,0.04999999998696403};
+ST(7.524999999991573,10,0.1,7.38014412423449,7.618172135495045,0.1,5.759692421840926,8.293352277179251,0.1){2.524999999991573,2.38014412423449,0.759692421840926};
+ST(2.575000000007345,0.1,0.1,1.753484123960424,1.731498590297984,0.1,3.598465426055707,2.014538206248786,0.1){-2.424999999992655,-3.246515876039576,-1.401534573944293};
+ST(0.1,2.574999999994313,0.1,1.753484123960424,1.731498590297984,0.1,0.1,0.1,0.1){-4.9,-3.246515876039576,-4.9};
+ST(1.753484123960424,1.731498590297984,0.1,2.575000000007345,0.1,0.1,0.1,0.1,0.1){-3.246515876039576,-2.424999999992655,-4.9};
+ST(1.949716673795976,3.569025765949217,0.1,1.753484123960424,1.731498590297984,0.1,0.1,2.574999999994313,0.1){-3.050283326204024,-3.246515876039576,-4.9};
+ST(1.949716673795976,3.569025765949217,0.1,3.598465426055707,2.014538206248786,0.1,1.753484123960424,1.731498590297984,0.1){-3.050283326204024,-1.401534573944293,-3.246515876039576};
+ST(3.78590618809526,3.975122284670252,0.1,2.36044430461694,6.067995514511253,0.1,5.142547865965409,5.697110637185145,0.1){-1.21409381190474,-2.63955569538306,0.1425478659654091};
+ST(1.949716673795976,3.569025765949217,0.1,2.36044430461694,6.067995514511253,0.1,3.78590618809526,3.975122284670252,0.1){-3.050283326204024,-2.63955569538306,-1.21409381190474};
+};