Index: cpp/frams/_demos/f0_variants_test.cpp
===================================================================
--- cpp/frams/_demos/f0_variants_test.cpp	(revision 365)
+++ cpp/frams/_demos/f0_variants_test.cpp	(revision 372)
@@ -10,5 +10,5 @@
 #include <frams/genetics/defgenoconv.h>
 #include <frams/model/model.h>
-#include <frams/errmgr/stdouterr.h>
+#include <frams/mhandlers/stdouthandler.h>
 
 void save_as_f0(SString &gen,Model &m,bool omit_default_values)
@@ -74,5 +74,5 @@
 int main(int argc,char*argv[])
 {
-StdoutErrorHandler err;//the default ErrorHandler constructor automatically registers this object to receive framsg messages (and in this case, redirect them to standard output)
+MessageHandlerToStdout messages_to_stdout(MessageHandlerBase::Enable);
 
 //without converters the application would only handle "format 0" genotypes
Index: cpp/frams/_demos/full_props.cpp
===================================================================
--- cpp/frams/_demos/full_props.cpp	(revision 365)
+++ cpp/frams/_demos/full_props.cpp	(revision 372)
@@ -9,5 +9,5 @@
 
 #include <frams/model/model.h>
-#include <frams/errmgr/stdouterr.h>
+#include <frams/mhandlers/stdouthandler.h>
 #include <frams/genetics/preconfigured.h>
 
@@ -50,5 +50,5 @@
 {
 StdioFILE::setStdio();//setup VirtFILE::Vstdin/out/err
-StdoutErrorHandler err(ErrorHandlerBase::DontBlock,VirtFILE::Vstderr); //errors -> stderr, don't interfere with stdout
+MessageHandlerToStdout messages_to_stderr(MessageHandlerBase::Enable | MessageHandlerBase::DontBlock,VirtFILE::Vstderr); //errors -> stderr, don't interfere with stdout
 
 PreconfiguredGenetics genetics;
@@ -79,5 +79,5 @@
 if (!m.isValid())
 	{
-	FMprintf("","full_props",FMLV_ERROR,"Cannot build Model from the supplied genotype\n");
+	Hprintf("","full_props",HMLV_ERROR,"Cannot build Model from the supplied genotype\n");
 	return 2;	
 	}
Index: cpp/frams/_demos/geno_test.cpp
===================================================================
--- cpp/frams/_demos/geno_test.cpp	(revision 365)
+++ cpp/frams/_demos/geno_test.cpp	(revision 372)
@@ -6,5 +6,5 @@
 #include <frams/util/sstringutils.h>
 #include <frams/genetics/preconfigured.h>
-#include <frams/errmgr/stdouterr.h>
+#include <frams/mhandlers/stdouthandler.h>
 
 /**
@@ -18,5 +18,5 @@
 {
 	PreconfiguredGenetics genetics;
-	StdoutErrorHandler stdouterr; //comment this object out to mute error/warning messages
+	MessageHandlerToStdout messages_to_stdout(MessageHandlerBase::Enable); //comment this object out to mute error/warning messages
 
 	if (argc <= 1)
Index: cpp/frams/_demos/genoconv_test.cpp
===================================================================
--- cpp/frams/_demos/genoconv_test.cpp	(revision 365)
+++ cpp/frams/_demos/genoconv_test.cpp	(revision 372)
@@ -9,5 +9,5 @@
 
 #include "printconvmap.h"
-#include <frams/errmgr/stdouterr.h>
+#include <frams/mhandlers/stdouthandler.h>
 
 /**
@@ -117,5 +117,5 @@
 int main(int argc,char *argv[])
 {
-StdoutErrorHandler err;//the default ErrorHandler constructor automatically registers this object to receive framsg messages (and in this case, redirect them to standard output)
+MessageHandlerToStdout messages_to_stdout(MessageHandlerBase::Enable);
 
 DefaultGenoConvManager gcm;
Index: cpp/frams/_demos/genomanipulation.cpp
===================================================================
--- cpp/frams/_demos/genomanipulation.cpp	(revision 365)
+++ cpp/frams/_demos/genomanipulation.cpp	(revision 372)
@@ -10,5 +10,5 @@
 #include <frams/model/model.h>
 #include <frams/genetics/preconfigured.h>
-#include <frams/errmgr/stdouterr.h>
+#include <frams/mhandlers/stdouthandler.h>
 
 /**
@@ -266,5 +266,5 @@
 int main(int argc,char*argv[])
 {
-StdoutErrorHandler err; //redirect model-related errors to stdout
+MessageHandlerToStdout messages_to_stdout(MessageHandlerBase::Enable); //redirect model-related errors to stdout
 
 srand(time(0));
Index: cpp/frams/_demos/genooper_test.cpp
===================================================================
--- cpp/frams/_demos/genooper_test.cpp	(revision 365)
+++ cpp/frams/_demos/genooper_test.cpp	(revision 372)
@@ -3,5 +3,5 @@
 // See LICENSE.txt for details.
 
-#include <frams/errmgr/stdouterr.h>
+#include <frams/mhandlers/stdouthandler.h>
 #include <frams/genetics/preconfigured.h>
 
@@ -21,5 +21,5 @@
 int main(int argc, char *argv[])
 {
-	StdoutErrorHandler err;//the default ErrorHandler constructor automatically registers this object to receive framsg messages (and in this case, redirect them to standard output)
+	MessageHandlerToStdout messages_to_stdout(MessageHandlerBase::Enable);
 	PreconfiguredGenetics genetics;
 
Index: cpp/frams/_demos/loader_test_param.cpp
===================================================================
--- cpp/frams/_demos/loader_test_param.cpp	(revision 365)
+++ cpp/frams/_demos/loader_test_param.cpp	(revision 372)
@@ -5,5 +5,5 @@
 #include <frams/param/multiparamload.h>
 #include <frams/virtfile/stdiofile.h>
-#include <frams/errmgr/stdouterr.h>
+#include <frams/mhandlers/stdouthandler.h>
 
 /**
@@ -66,5 +66,5 @@
 	StdioFILEDontClose virt_stderr(stderr);
 	StdioFILEDontClose virt_stdout(stdout);
-	StdoutErrorHandler error_handler(0, &virt_stderr);
+	MessageHandlerToStdout messages_to_stderr(MessageHandlerBase::Enable, &virt_stderr);
 	StdioFileSystem_autoselect stdiofilesys;
 	MultiParamLoader loader(argv[1]);
Index: cpp/frams/_demos/loader_test_param.in
===================================================================
--- cpp/frams/_demos/loader_test_param.in	(revision 365)
+++ cpp/frams/_demos/loader_test_param.in	(revision 372)
Index: cpp/frams/_demos/multiline_f0_test.cpp
===================================================================
--- cpp/frams/_demos/multiline_f0_test.cpp	(revision 365)
+++ cpp/frams/_demos/multiline_f0_test.cpp	(revision 372)
@@ -10,10 +10,10 @@
 #include <frams/genetics/preconfigured.h>
 #include <frams/model/model.h>
-#include <frams/errmgr/stdouterr.h>
+#include <frams/mhandlers/stdouthandler.h>
 #include <frams/virtfile/stringfile.h>
 
 int main(int argc,char*argv[])
 {
-StdoutErrorHandler err;//the default ErrorHandler constructor automatically registers this object to receive framsg messages (and in this case, redirect them to standard output)
+MessageHandlerToStdout messages_to_stdout(MessageHandlerBase::Enable);
 PreconfiguredGenetics genetics;
 
Index: cpp/frams/_demos/neuro_layout_test.cpp
===================================================================
--- cpp/frams/_demos/neuro_layout_test.cpp	(revision 365)
+++ cpp/frams/_demos/neuro_layout_test.cpp	(revision 372)
@@ -7,5 +7,5 @@
 #include <frams/genetics/preconfigured.h>
 #include <frams/model/model.h>
-#include <frams/errmgr/stdouterr.h>
+#include <frams/mhandlers/stdouthandler.h>
 #include <frams/canvas/nn_layout_model.h>
 
@@ -83,5 +83,5 @@
 int main(int argc,char*argv[])
 {
-StdoutErrorHandler err;//the default ErrorHandler constructor automatically registers this object to receive framsg messages (and in this case, redirect them to standard output)
+MessageHandlerToStdout messages_to_stdout(MessageHandlerBase::Enable);
 PreconfiguredGenetics genetics;
 
Index: cpp/frams/_demos/neuro_test.cpp
===================================================================
--- cpp/frams/_demos/neuro_test.cpp	(revision 365)
+++ cpp/frams/_demos/neuro_test.cpp	(revision 372)
@@ -9,5 +9,5 @@
 #include <frams/neuro/neuroimpl.h>
 #include <frams/neuro/neurofactory.h>
-#include <frams/errmgr/stdouterr.h>
+#include <frams/mhandlers/stdouthandler.h>
 
 /**
@@ -60,5 +60,5 @@
 int main(int argc,char*argv[])
 {
-StdoutErrorHandler err;//the default ErrorHandler constructor automatically registers this object to receive framsg messages (and in this case, redirect them to standard output)
+MessageHandlerToStdout messages_to_stdout(MessageHandlerBase::Enable);
 PreconfiguredGenetics genetics;
 
Index: cpp/frams/_demos/shapeconvert.cpp
===================================================================
--- cpp/frams/_demos/shapeconvert.cpp	(revision 365)
+++ cpp/frams/_demos/shapeconvert.cpp	(revision 372)
@@ -9,5 +9,5 @@
 
 #include <frams/model/model.h>
-#include <frams/errmgr/stdouterr.h>
+#include <frams/mhandlers/stdouthandler.h>
 #include <frams/genetics/preconfigured.h>
 
@@ -34,5 +34,5 @@
 {
 	StdioFILE::setStdio();//setup VirtFILE::Vstdin/out/err
-	StdoutErrorHandler err(ErrorHandlerBase::DontBlock, VirtFILE::Vstderr); //errors -> stderr, don't interfere with stdout
+	MessageHandlerToStdout messages_to_stderr(MessageHandlerBase::Enable | MessageHandlerBase::DontBlock, VirtFILE::Vstderr); //errors -> stderr, don't interfere with stdout
 
 	PreconfiguredGenetics genetics;
@@ -50,5 +50,5 @@
 				if ((shape != Part::SHAPE_ELLIPSOID) && (shape != Part::SHAPE_CUBOID) && (shape != Part::SHAPE_CYLINDER))
 				{
-					FMprintf("", "shapeconvert", FMLV_ERROR, "Invalid shape");
+					Hprintf("", "shapeconvert", HMLV_ERROR, "Invalid shape");
 					return 4;
 				}
@@ -71,5 +71,5 @@
 	if (!m.isValid())
 	{
-		FMprintf("", "shapeconvert", FMLV_ERROR, "Cannot build Model from the supplied genotype");
+		Hprintf("", "shapeconvert", HMLV_ERROR, "Cannot build Model from the supplied genotype");
 		return 2;
 	}
@@ -77,5 +77,5 @@
 	if (m.getShape() != Model::SHAPE_OLD)
 	{
-		FMprintf("", "shapeconvert", FMLV_ERROR, "Only old style shapes can be converted");
+		Hprintf("", "shapeconvert", HMLV_ERROR, "Only old style shapes can be converted");
 		return 3;
 	}
Index: cpp/frams/_demos/simil_test.cpp
===================================================================
--- cpp/frams/_demos/simil_test.cpp	(revision 365)
+++ cpp/frams/_demos/simil_test.cpp	(revision 372)
@@ -5,5 +5,5 @@
 
 #include <vector>
-#include "frams/errmgr/stdouterr.h"
+#include "frams/mhandlers/stdouthandler.h"
 #include "frams/_demos/genotypeloader.h"
 #include "frams/genetics/preconfigured.h"
@@ -39,5 +39,5 @@
 int main(int argc, char *argv[])
 {
-    StdoutErrorHandler stdouterr; //comment this object out to mute error/warning messages 
+    MessageHandlerToStdout messages_to_stdout(MessageHandlerBase::Enable);
     typedef double *pDouble;
     int iCurrParam = 0; // index of the currently processed parameter
