diff --git a/Common/CreateFile.cpp b/Common/CreateFile.cpp
index 72d5f56e319db324820e252da2db158d69aaa894..c359a1d0a030c72a027da7b920ecac3f5cfef1f4 100644
--- a/Common/CreateFile.cpp
+++ b/Common/CreateFile.cpp
@@ -161,7 +161,7 @@ void CreateOutputFile(std::string fileName, int format)
   CTX::instance()->printing = 1;
 
   if(format != FORMAT_AUTO) 
-    Msg::StatusBar(2, true, "Writing '%s'", fileName.c_str());
+    Msg::StatusBar(2, true, "Writing '%s'...", fileName.c_str());
 
   bool printEndMessage = true;
 
diff --git a/Common/OpenFile.cpp b/Common/OpenFile.cpp
index 3c9069430a98427466bef8aea1601f45d2df491e..00218141cfbb4efd2e77342cc9cbecccff398c33 100644
--- a/Common/OpenFile.cpp
+++ b/Common/OpenFile.cpp
@@ -241,7 +241,7 @@ int MergeFile(std::string fileName, bool warnIfMissing)
   if(!fgets(header, sizeof(header), fp)) return 0;
   fclose(fp);
 
-  Msg::StatusBar(2, true, "Reading '%s'", fileName.c_str());
+  Msg::StatusBar(2, true, "Reading '%s'...", fileName.c_str());
 
   std::vector<std::string> split = SplitFileName(fileName);
   std::string noExt = split[0] + split[1], ext = split[2];
diff --git a/Fltk/fileDialogs.cpp b/Fltk/fileDialogs.cpp
index 0013d9aed53bde45dbd0dd7c1f9b1f7560d79c82..bea2ceba0da492a8bbbe04873c84cc4d75404668 100644
--- a/Fltk/fileDialogs.cpp
+++ b/Fltk/fileDialogs.cpp
@@ -669,7 +669,7 @@ int optionsFileDialog(const char *name)
       Fl_Widget* o = Fl::readqueue();
       if (!o) break;
       if (o == dialog->ok) {
-        Msg::StatusBar(2, true, "Writing '%s'", name);
+        Msg::StatusBar(2, true, "Writing '%s'...", name);
         PrintOptions(0, GMSH_FULLRC, dialog->b[0]->value(), dialog->b[1]->value(), name);
         Msg::StatusBar(2, true, "Done writing '%s'", name);
         dialog->window->hide();
diff --git a/Fltk/graphicWindow.cpp b/Fltk/graphicWindow.cpp
index fc10b346d3b9161f9c5d5d50f1dd519ad0e4e0d2..bcabd7d010eab181e744be9c3185fe6579bb9d10 100644
--- a/Fltk/graphicWindow.cpp
+++ b/Fltk/graphicWindow.cpp
@@ -221,6 +221,7 @@ void status_options_cb(Fl_Widget *w, void *data)
     static int old_ve = (int)opt_mesh_volumes_edges(0, GMSH_GET, 0.);
     static int old_vf = (int)opt_mesh_volumes_faces(0, GMSH_GET, 0.);
     if(!value){ // retore visibility
+      Msg::StatusBar(2, false, "Mesh display restored");
       value = 1;
       opt_mesh_points(0, GMSH_SET | GMSH_GUI, old_p);
       opt_mesh_lines(0, GMSH_SET | GMSH_GUI, old_l);
@@ -230,6 +231,7 @@ void status_options_cb(Fl_Widget *w, void *data)
       opt_mesh_volumes_faces(0, GMSH_SET | GMSH_GUI, old_vf);
     }
     else{
+      Msg::StatusBar(2, false, "Mesh display OFF");
       value = 0;
       old_p = (int)opt_mesh_points(0, GMSH_GET, 0.);
       old_l = (int)opt_mesh_lines(0, GMSH_GET, 0.);
diff --git a/Fltk/menuWindow.cpp b/Fltk/menuWindow.cpp
index 9c38895d04cee24c134978393d29477df2b199db..01e2c3b01b811d7232aa15463244b292113956fd 100644
--- a/Fltk/menuWindow.cpp
+++ b/Fltk/menuWindow.cpp
@@ -418,7 +418,7 @@ static void file_options_save_cb(Fl_Widget *w, void *data)
     fileName = GModel::current()->getFileName() + ".opt";
   else
     fileName = CTX::instance()->homeDir + CTX::instance()->optionsFileName;
-  Msg::StatusBar(2, true, "Writing '%s'", fileName.c_str());
+  Msg::StatusBar(2, true, "Writing '%s'...", fileName.c_str());
   if(str == "file")
     PrintOptions(0, GMSH_FULLRC, 1, 0, fileName.c_str());
   else
diff --git a/Fltk/messageWindow.cpp b/Fltk/messageWindow.cpp
index 1dfb229a9a7504dc034261f8275d2d9de2579330..ead6327d57a94146d55106e9877774d9da3d1b17 100644
--- a/Fltk/messageWindow.cpp
+++ b/Fltk/messageWindow.cpp
@@ -124,7 +124,7 @@ void messageWindow::save(const char *filename)
     return;
   }
 
-  Msg::StatusBar(2, true, "Writing '%s'", filename);
+  Msg::StatusBar(2, true, "Writing '%s'...", filename);
   for(int i = 1; i <= browser->size(); i++) {
     const char *c = browser->text(i);
     if(c[0] == '@')
diff --git a/Geo/GeoStringInterface.cpp b/Geo/GeoStringInterface.cpp
index 2d316ffeaa12cef5e1e2c82394ef85d4e2416676..ad30bcb3d71a674ab85770752caded3d45b8cd21 100644
--- a/Geo/GeoStringInterface.cpp
+++ b/Geo/GeoStringInterface.cpp
@@ -71,7 +71,6 @@ void add_infile(std::string text, std::string fileName, bool forceDestroy)
     return;
   }
   fprintf(gmsh_yyin, "%s\n", text.c_str());
-  Msg::StatusBar(2, true, "%s", text.c_str());
   fclose(gmsh_yyin);
   gmsh_yyin = fopen(tmpFileName.c_str(), "r");
   while(!feof(gmsh_yyin)) {
diff --git a/Geo/Homology.cpp b/Geo/Homology.cpp
index debcba1a0aa8978db5662af6f74bba6a9c28d226..a484730d50a6c02a4163866bd7558e7168c7e1f6 100644
--- a/Geo/Homology.cpp
+++ b/Geo/Homology.cpp
@@ -63,14 +63,12 @@ Homology::Homology(GModel* model, std::vector<int> physicalDomain,
 
 CellComplex* Homology::createCellComplex(std::vector<GEntity*>& domainEntities,
 			    std::vector<GEntity*>& subdomainEntities){
-  Msg::Info("Creating a Cell Complex...");
-  Msg::StatusBar(1, false, "Cell Complex...");
-  Msg::StatusBar(2, false, "");
+  Msg::StatusBar(2, true, "Creating cell complex...");
   double t1 = Cpu();
 
   
-  if(domainEntities.empty()) Msg::Error("Domain is empty.");
-  if(subdomainEntities.empty()) Msg::Info("Subdomain is empty.");
+  if(domainEntities.empty()) Msg::Error("Domain is empty");
+  if(subdomainEntities.empty()) Msg::Info("Subdomain is empty");
   
   std::vector<MElement*> domainElements;
   std::vector<MElement*> subdomainElements;
@@ -93,16 +91,13 @@ CellComplex* Homology::createCellComplex(std::vector<GEntity*>& domainEntities,
 
   if(cellComplex->getSize(0) == 0){ 
     Msg::Error("Cell Complex is empty!");
-    Msg::Error("Check the domain & the mesh.");
+    Msg::Error("Check the domain & the mesh");
   }
   double t2 = Cpu();
-  Msg::Info("Cell Complex complete (%g s).", t2 - t1);
-  Msg::Info("%d volumes, %d faces, %d edges and %d vertices.",
+  Msg::StatusBar(2, true, "Done creating cell complex (%g s)", t2 - t1);
+  Msg::Info("%d volumes, %d faces, %d edges and %d vertices",
             cellComplex->getSize(3), cellComplex->getSize(2), 
 	    cellComplex->getSize(1), cellComplex->getSize(0));
-  Msg::StatusBar(2, false, "%d V, %d F, %d E, %d V.",
-		 cellComplex->getSize(3), cellComplex->getSize(2), 
-		 cellComplex->getSize(1), cellComplex->getSize(0));
   return cellComplex;
 }
 
@@ -121,28 +116,23 @@ void Homology::findGenerators(CellComplex* cellComplex)
   }
   std::string domainString = getDomainString(_domain, _subdomain);
 
-  Msg::Info("Reducing the Cell Complex...");
-  Msg::StatusBar(1, false, "Reducing...");
+  Msg::StatusBar(2, true, "Reducing cell complex...");
 
   double t1 = Cpu();
   int omitted = cellComplex->reduceComplex();
   
   double t2 = Cpu();
-  Msg::Info("Cell Complex reduction complete (%g s).", t2 - t1);
-  Msg::Info("%d volumes, %d faces, %d edges and %d vertices.",
+  Msg::StatusBar(2, true, "Done reducing cell complex (%g s)", t2 - t1);
+  Msg::Info("%d volumes, %d faces, %d edges and %d vertices",
             cellComplex->getSize(3), cellComplex->getSize(2), 
 	    cellComplex->getSize(1), cellComplex->getSize(0));
-  Msg::StatusBar(2, false, "%d V, %d F, %d E, %d N.",
-		 cellComplex->getSize(3), cellComplex->getSize(2), 
-		 cellComplex->getSize(1), cellComplex->getSize(0));
   
-  Msg::Info("Computing homology spaces...");
-  Msg::StatusBar(1, false, "Computing...");
+  Msg::StatusBar(2, true, "Computing homology spaces...");
   t1 = Cpu();
   ChainComplex* chains = new ChainComplex(cellComplex);
   chains->computeHomology();
   t2 = Cpu();
-  Msg::Info("Homology Computation complete (%g s).", t2 - t1);
+  Msg::StatusBar(2, true, "Done computing homology spaces (%g s)", t2 - t1);
   
   int HRank[4];
   for(int j = 0; j < 4; j++){
@@ -183,10 +173,9 @@ void Homology::findGenerators(CellComplex* cellComplex)
   Msg::Info("H1 = %d", HRank[1]);
   Msg::Info("H2 = %d", HRank[2]);
   Msg::Info("H3 = %d", HRank[3]);
-  if(omitted != 0) Msg::Info("The computation of generators in the highest dimension was omitted.");
+  if(omitted != 0) Msg::Info("The computation of generators in the highest dimension was omitted");
   
-  Msg::StatusBar(1, false, "Homology");
-  Msg::StatusBar(2, false, "H0: %d, H1: %d, H2: %d, H3: %d.", 
+  Msg::StatusBar(2, false, "H0: %d, H1: %d, H2: %d, H3: %d", 
 		 HRank[0], HRank[1], HRank[2], HRank[3]);
 }
 
@@ -199,29 +188,24 @@ void Homology::findDualGenerators(CellComplex* cellComplex)
     ownComplex = true;
   }
 
-  Msg::Info("Reducing Cell Complex...");
-  Msg::StatusBar(1, false, "Reducing...");
+  Msg::StatusBar(2, true, "Reducing cell complex...");
   
   double t1 = Cpu();
   int omitted = cellComplex->coreduceComplex();
   double t2 = Cpu();
   
-  Msg::Info("Cell Complex reduction complete (%g s).", t2 - t1);
-  Msg::Info("%d volumes, %d faces, %d edges and %d vertices.",
+  Msg::StatusBar(2, true, "Done reducing cell complex (%g s)", t2 - t1);
+  Msg::Info("%d volumes, %d faces, %d edges and %d vertices",
             cellComplex->getSize(3), cellComplex->getSize(2), 
 	    cellComplex->getSize(1), cellComplex->getSize(0));
-  Msg::StatusBar(2, false, "%d V, %d F, %d E, %d N.",
-		 cellComplex->getSize(3), cellComplex->getSize(2), 
-		 cellComplex->getSize(1), cellComplex->getSize(0));
    
-  Msg::Info("Computing homology spaces...");
-  Msg::StatusBar(1, false, "Computing...");
+  Msg::StatusBar(2, true, "Computing homology spaces...");
   t1 = Cpu();
   ChainComplex* chains = new ChainComplex(cellComplex);
   chains->transposeHMatrices();
   chains->computeHomology(true);
   t2 = Cpu();
-  Msg::Info("Homology Computation complete (%g s).", t2- t1);
+  Msg::StatusBar(2, true, "Done computing homology spaces (%g s)", t2- t1);
   
   int dim = cellComplex->getDim();
  
@@ -265,33 +249,27 @@ void Homology::findDualGenerators(CellComplex* cellComplex)
   Msg::Info("H1* = %d", HRank[1]);
   Msg::Info("H2* = %d", HRank[2]);
   Msg::Info("H3* = %d", HRank[3]);
-  if(omitted != 0) Msg::Info("The computation of %d highest dimension dual generators was omitted.", omitted);
+  if(omitted != 0) Msg::Info("The computation of %d highest dimension dual generators was omitted", omitted);
   
-  Msg::StatusBar(1, false, "Homology");
-  Msg::StatusBar(2, false, "H0*: %d, H1*: %d, H2*: %d, H3*: %d.", 
+  Msg::StatusBar(2, false, "H0*: %d, H1*: %d, H2*: %d, H3*: %d", 
 		 HRank[0], HRank[1], HRank[2], HRank[3]);
 }
 
 void Homology::findHomSequence(){
   CellComplex* cellComplex = createCellComplex(_domainEntities, 
 					       _subdomainEntities);
-  Msg::Info("Reducing the Cell Complex...");
-  Msg::StatusBar(1, false, "Reducing...");
+  Msg::StatusBar(2, true, "Reducing cell complex...");
 
   double t1 = Cpu();
   cellComplex->reduceComplex();
   double t2 = Cpu();
 
-  Msg::Info("Cell Complex reduction complete (%g s).", t2 - t1);
-  Msg::Info("%d volumes, %d faces, %d edges and %d vertices.",
+  Msg::StatusBar(2, true, "Done reducing cell complex (%g s)", t2 - t1);
+  Msg::Info("%d volumes, %d faces, %d edges and %d vertices",
             cellComplex->getSize(3), cellComplex->getSize(2), 
 	    cellComplex->getSize(1), cellComplex->getSize(0));
-  Msg::StatusBar(2, false, "%d V, %d F, %d E, %d N.",
-		 cellComplex->getSize(3), cellComplex->getSize(2), 
-		 cellComplex->getSize(1), cellComplex->getSize(0));
   
-  Msg::Info("Computing homology spaces...");
-  Msg::StatusBar(1, false, "Computing...");
+  Msg::StatusBar(2, true, "Computing homology spaces...");
   t1 = Cpu();
   
   ChainComplex* subcomplex = new ChainComplex(cellComplex, 2);
@@ -303,13 +281,13 @@ void Homology::findHomSequence(){
   relcomplex->computeHomology();  
 
   t2 = Cpu();
-  Msg::Info("Homology computation complete (%g s).", t2 - t1);
+  Msg::StatusBar(2, true, "Done compuring homology spaces (%g s)", t2 - t1);
 
-  Msg::Info("Computing homology sequence...");
+  Msg::StatusBar(2, true, "Computing homology sequence...");
   HomologySequence* seq = new HomologySequence(subcomplex, 
 					       complex, relcomplex);
   t1 = Cpu();
-  Msg::Info("Homology sequence computation complete (%g s).", t1 - t2);
+  Msg::StatusBar(2, true, "Done computing homology sequence (%g s)", t1 - t2);
   
   for(int task = 0; task < 3; task++){
     ChainComplex* chains;
@@ -372,8 +350,7 @@ void Homology::findHomSequence(){
     Msg::Info("H2 = %d", HRank[2]);
     Msg::Info("H3 = %d", HRank[3]);
 
-    Msg::StatusBar(1, false, "Homology");
-    Msg::StatusBar(2, false, "H0: %d, H1: %d, H2: %d, H3: %d.",
+    Msg::StatusBar(2, false, "H0: %d, H1: %d, H2: %d, H3: %d",
 		   HRank[0], HRank[1], HRank[2], HRank[3]);
   }
 
@@ -423,7 +400,7 @@ bool Homology::writeGeneratorsMSH(bool binary)
 {
   if(_fileName.empty()) return false;
   if(!_model->writeMSH(_fileName, 2.0, binary)) return false;
-  Msg::Info("Wrote homology computation results to %s.", _fileName.c_str());
+  Msg::Info("Wrote homology computation results to %s", _fileName.c_str());
   return true;
 }
 Chain::Chain(std::set<Cell*, Less_Cell> cells, std::vector<int> coeffs, 
@@ -513,8 +490,7 @@ int Chain::writeChainMSH(const std::string &name)
   FILE *fp = fopen(name.c_str(), "a");
   if(!fp){
     Msg::Error("Unable to open file '%s'", name.c_str());
-    Msg::Debug("Unable to open file.");
-      return 0;
+    return 0;
   }
  
   fprintf(fp, "\n$ElementData\n");
@@ -623,7 +599,7 @@ void Chain::addCell(Cell* cell, int coeff)
     (*insert.first).second = coeff; 
   }
   else if (!insert.second && (*insert.first).second != 0){
-    Msg::Debug("Error: invalid chain smoothening add! \n");
+    Msg::Debug("Error: invalid chain smoothening add!");
   }
   return;
 }
diff --git a/Mesh/HighOrder.cpp b/Mesh/HighOrder.cpp
index 788dbf0fef12843487d019b2e79c1770c1d7842f..a11aa2ebe55a009558e4432b995c8f34cab0751f 100644
--- a/Mesh/HighOrder.cpp
+++ b/Mesh/HighOrder.cpp
@@ -899,8 +899,6 @@ static void removeHighOrderVertices(GEntity *e)
 
 void SetOrder1(GModel *m)
 {
-  Msg::StatusBar(2, true, "Meshing order 1...");
-
   m->destroyMeshCaches();
 
   // replace all elements with first order elements
@@ -925,8 +923,6 @@ void SetOrder1(GModel *m)
     removeHighOrderVertices(*it);
   for(GModel::riter it = m->firstRegion(); it != m->lastRegion(); ++it)
     removeHighOrderVertices(*it);
-
-  Msg::StatusBar(2, true, "Done meshing order 1");
 }
 
 void checkHighOrderTriangles(const char* cc, GModel *m, 
diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp
index aa36829bdf964c1da9bf976262d299e1ea22939d..73bef4572be9f5a9bacccd8f1c9333679346be7f 100644
--- a/Parser/Gmsh.tab.cpp
+++ b/Parser/Gmsh.tab.cpp
@@ -6330,7 +6330,7 @@ yyreduce:
 	// open simultaneously. The right solution would be of course
 	// to modify FunctionManager to reopen the files instead of
 	// using the FILE pointer, but hey, I'm lazy...
-	Msg::StatusBar(2, true, "Reading '%s'", tmp.c_str());
+	Msg::StatusBar(2, true, "Reading '%s'...", tmp.c_str());
 	ParseFile(tmp, false, true);
 	SetBoundingBox();
 	Msg::StatusBar(2, true, "Done reading '%s'", tmp.c_str());
diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y
index f959bb5a600e6f85e515e43c9f42f36f31d468bf..f24379e1dfb3e9f3c7c728222854a7cfdb3d11b0 100644
--- a/Parser/Gmsh.y
+++ b/Parser/Gmsh.y
@@ -2263,7 +2263,7 @@ Command :
 	// open simultaneously. The right solution would be of course
 	// to modify FunctionManager to reopen the files instead of
 	// using the FILE pointer, but hey, I'm lazy...
-	Msg::StatusBar(2, true, "Reading '%s'", tmp.c_str());
+	Msg::StatusBar(2, true, "Reading '%s'...", tmp.c_str());
 	ParseFile(tmp, false, true);
 	SetBoundingBox();
 	Msg::StatusBar(2, true, "Done reading '%s'", tmp.c_str());
diff --git a/Post/PViewIO.cpp b/Post/PViewIO.cpp
index 232a0ddcf3925f76b25dad7e1921f34225ea48d5..ab4bfdee36dfd764fbe295f3c6f1759dc6f984b3 100644
--- a/Post/PViewIO.cpp
+++ b/Post/PViewIO.cpp
@@ -255,7 +255,7 @@ bool PView::readMED(std::string fileName, int fileIndex)
 
 bool PView::write(std::string fileName, int format, bool append)
 {
-  Msg::StatusBar(2, true, "Writing '%s'", fileName.c_str());
+  Msg::StatusBar(2, true, "Writing '%s'...", fileName.c_str());
   
   bool ret;
   switch(format){