Index: cpp/frams/_demos/f0_variants_test.cpp
===================================================================
--- cpp/frams/_demos/f0_variants_test.cpp	(revision 141)
+++ cpp/frams/_demos/f0_variants_test.cpp	(revision 145)
@@ -8,10 +8,7 @@
 #include <frams/virtfile/stdiofile.h>
 
+#include <frams/genetics/defgenoconv.h>
 #include <frams/model/model.h>
-#include <frams/genetics/defgenoconv.h>
 #include <frams/errmgr/stdouterr.h>
-
-StdoutErrorHandler err; //redirect model-related errors to stdout
-DefaultGenoConvManager gcm; //without this object the application would only handle "format 0" genotypes
 
 void save_as_f0(SString &gen,Model &m,bool omit_default_values)
@@ -77,4 +74,14 @@
 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)
+
+//without converters the application would only handle "format 0" genotypes
+DefaultGenoConvManager gcm;
+gcm.addDefaultConverters();
+Geno::useConverters(gcm);
+
+ModelGenoValidator model_validator;
+Geno::addValidator(&model_validator); //This simple validator handles all cases where a converter for a particular format is available but there is no genetic operator. Converters may be less strict in detecting invalid genotypes but it is better than nothing
+
 SString gen(argc>1?argv[1]:"X[|G:1.23]");
 if (!strcmp(gen,"-"))
Index: cpp/frams/_demos/full_props.cpp
===================================================================
--- cpp/frams/_demos/full_props.cpp	(revision 141)
+++ cpp/frams/_demos/full_props.cpp	(revision 145)
@@ -9,6 +9,6 @@
 
 #include <frams/model/model.h>
-#include <frams/genetics/defgenoconv.h>
 #include <frams/errmgr/stdouterr.h>
+#include <frams/genetics/preconfigured.h>
 
 /**
@@ -47,11 +47,10 @@
 */
 
-//optional:
-DefaultGenoConvManager gcm; //without this object the application would only handle "format 0" genotypes
-
 int main(int argc,char*argv[])
 {
 StdioFILE::setStdio();//setup VirtFILE::Vstdin/out/err
 StdoutErrorHandler err(ErrorHandlerBase::DontBlock,VirtFILE::Vstderr); //errors -> stderr, don't interfere with stdout
+
+PreconfiguredGenetics genetics;
 
 bool reverse=false;
Index: cpp/frams/_demos/gdk_test.cpp
===================================================================
--- cpp/frams/_demos/gdk_test.cpp	(revision 141)
+++ cpp/frams/_demos/gdk_test.cpp	(revision 145)
@@ -9,5 +9,5 @@
 
 #include <frams/model/model.h>
-#include <frams/genetics/defgenoconv.h>
+#include <frams/genetics/preconfigured.h>
 #include <frams/errmgr/stdouterr.h>
 
@@ -18,5 +18,5 @@
 
 StdoutErrorHandler err; //redirect model-related errors to stdout
-DefaultGenoConvManager gcm; //without this object the application would only handle "format 0" genotypes
+PreconfiguredGenetics genetics;
 
 void printNiceBanner(const char* title)
@@ -258,8 +258,8 @@
 void findingConverters()
 {
-GenoConverter *gc=gcm.findConverters(0,'1');
+GenoConverter *gc=Geno::getConverters().findConverters(0,'1');
 if (gc) printf("found converter accepting f1: \"%s\"\n",gc->name);
 SListTempl<GenoConverter*> found;
-gcm.findConverters(&found,-1,'0');
+Geno::getConverters().findConverters(&found,-1,'0');
 printf("found %d converter(s) producing f0\n",found.size());
 }
Index: cpp/frams/_demos/geno_test.cpp
===================================================================
--- cpp/frams/_demos/geno_test.cpp	(revision 141)
+++ cpp/frams/_demos/geno_test.cpp	(revision 145)
@@ -3,9 +3,7 @@
 // Refer to http://www.framsticks.com/ for further information.
 
-#include <frams/genetics/geno.h>
 #include <frams/virtfile/stdiofile.h>
 #include <frams/util/sstringutils.h>
-#include <frams/genetics/defgenoconv.h>
-#include <frams/genetics/genman.h>
+#include <frams/genetics/preconfigured.h>
 
 /**
@@ -16,12 +14,8 @@
 */
 
-DefaultGenoConvManager gcm; //without this object the application would only handle "format 0" genotypes
-
 int main(int argc,char*argv[])
 {
-GenMan gm;
-Geno::validators.insert(0,&gm); //GenMan is available in this application so let's use the extended validity checking!
-// Note: insert() makes it the first validator in the list, this is important for formats that rely on genetic operators to perform reasonable validation,
-// otherwise the default validator (genotype converter) would "win" and most converters are less strict in detecting invalid genotypes.
+PreconfiguredGenetics genetics;
+
 if (argc<=1)
 	{
Index: cpp/frams/_demos/genoconv_test.cpp
===================================================================
--- cpp/frams/_demos/genoconv_test.cpp	(revision 141)
+++ cpp/frams/_demos/genoconv_test.cpp	(revision 145)
@@ -10,6 +10,4 @@
 #include "printconvmap.h"
 #include <frams/errmgr/stdouterr.h>
-
-StdoutErrorHandler err;
 
 /**
@@ -119,8 +117,15 @@
 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)
+
 DefaultGenoConvManager gcm;
+gcm.addDefaultConverters();
 gcm.addConverter(new GenoConv_Test());
 gcm.addConverter(new GenoConv_Test2());
 gcm.addConverter(new GenoConv_Test3());
+Geno::useConverters(gcm);
+
+ModelGenoValidator model_validator;
+Geno::addValidator(&model_validator);
 
 const char* src=(argc>1)?argv[1]:"X";
Index: cpp/frams/_demos/genooper_test.cpp
===================================================================
--- cpp/frams/_demos/genooper_test.cpp	(revision 141)
+++ cpp/frams/_demos/genooper_test.cpp	(revision 145)
@@ -3,10 +3,6 @@
 // Refer to http://www.framsticks.com/ for further information.
 
-#include <frams/genetics/genman.h>
 #include <frams/errmgr/stdouterr.h>
-#include <frams/genetics/defgenoconv.h>
-
-StdoutErrorHandler err;
-DefaultGenoConvManager gcm; //without this object the application would only handle "format 0" genotypes
+#include <frams/genetics/preconfigured.h>
 
 void printGen(Geno &g)
@@ -25,30 +21,31 @@
 int main(int argc, char *argv[])
 {
-	GenMan gm;
-	Geno::validators.insert(0,&gm); //GenMan is available in this application so let's use the extended validity checking!
-	// Note: insert() makes it the first validator in the list, this is important for formats that rely on genetic operators to perform reasonable validation,
-	// otherwise the default validator (genotype converter) would "win" and most converters are less strict in detecting invalid genotypes.
-	gm.p_report(NULL, NULL);
+	StdoutErrorHandler err;//the default ErrorHandler constructor automatically registers this object to receive framsg messages (and in this case, redirect them to standard output)
+	PreconfiguredGenetics genetics;
+
+	rndGetInstance().randomize();
+	genetics.genman.p_report(NULL, NULL);
 
 	const char* src = (argc > 1) ? argv[1] : "/*9*/UUU";
 	Geno gsrc(src, -1, "First");
 	printGenAndTitle(gsrc, "source genotype (gsrc)");
+	char format = gsrc.getFormat();
 
-	Geno gmut = gm.Mutate(gsrc);
+	Geno gmut = genetics.genman.Mutate(gsrc);
 	printGenAndTitle(gmut, "mutated (gmut)");
 
-	Geno gxover = gm.CrossOver(gsrc, gmut);
+	Geno gxover = genetics.genman.CrossOver(gsrc, gmut);
 	printGenAndTitle(gxover, "crossed over (gsrc and gmut)");
 
-	Geno gsimplest = gm.GetSimplest('9');
+	Geno gsimplest = genetics.genman.GetSimplest(format);
 	printGenAndTitle(gsimplest, "simplest");
 
-	Geno ginvalid("IT'S REALLY WRONG", '9');
+	Geno ginvalid("IT'S REALLY WRONG", format);
 	printGenAndTitle(ginvalid, "invalid");
 
-	Geno gvalidated = gm.Validate(ginvalid);
+	Geno gvalidated = genetics.genman.Validate(ginvalid);
 	printGenAndTitle(gvalidated, "validated");
 
-	printf("\nHTMLized: %s\n", (const char*)gm.HTMLize((const char*)gvalidated.getGene()));
+	printf("\nHTMLized: %s\n", (const char*)genetics.genman.HTMLize((const char*)gvalidated.getGene()));
 
 	return 0;
Index: cpp/frams/_demos/multiline_f0_test.cpp
===================================================================
--- cpp/frams/_demos/multiline_f0_test.cpp	(revision 141)
+++ cpp/frams/_demos/multiline_f0_test.cpp	(revision 145)
@@ -8,14 +8,14 @@
 #include <frams/virtfile/stdiofile.h>
 
+#include <frams/genetics/preconfigured.h>
 #include <frams/model/model.h>
-#include <frams/genetics/defgenoconv.h>
 #include <frams/errmgr/stdouterr.h>
 #include <frams/virtfile/stringfile.h>
 
-StdoutErrorHandler err; //redirect model-related errors to stdout
-DefaultGenoConvManager gcm; //without this object the application would only handle "format 0" genotypes
-
 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)
+PreconfiguredGenetics genetics;
+
 SString gen(argc>1?argv[1]:"X[|G:1.23]");
 if (!strcmp(gen,"-"))
Index: cpp/frams/_demos/neuro_layout_test.cpp
===================================================================
--- cpp/frams/_demos/neuro_layout_test.cpp	(revision 141)
+++ cpp/frams/_demos/neuro_layout_test.cpp	(revision 145)
@@ -3,8 +3,7 @@
 // Refer to http://www.framsticks.com/ for further information.
 
-#include <frams/genetics/geno.h>
 #include <frams/virtfile/stdiofile.h>
 #include <frams/util/sstringutils.h>
-#include <frams/genetics/defgenoconv.h>
+#include <frams/genetics/preconfigured.h>
 #include <frams/model/model.h>
 #include <frams/errmgr/stdouterr.h>
@@ -20,7 +19,4 @@
  loader_test "data/walking.gen" "Walking Lizard" | neuro_layout_test -
 */
-
-StdoutErrorHandler err; //redirect model-related errors to stdout
-DefaultGenoConvManager gcm; //without this object the application would only handle "format 0" genotypes
 
 // stl is fun? ;-) ForwardIterator implementation for element coordinates (required by min_element/max_element)
@@ -87,4 +83,7 @@
 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)
+PreconfiguredGenetics genetics;
+
 if (argc<=1)
 	{
Index: cpp/frams/_demos/neuro_test.cpp
===================================================================
--- cpp/frams/_demos/neuro_test.cpp	(revision 141)
+++ cpp/frams/_demos/neuro_test.cpp	(revision 145)
@@ -6,5 +6,5 @@
 #include <frams/virtfile/stdiofile.h>
 #include <frams/util/sstringutils.h>
-#include <frams/genetics/defgenoconv.h>
+#include <frams/genetics/preconfigured.h>
 #include <frams/neuro/neuroimpl.h>
 #include <frams/neuro/neurofactory.h>
@@ -15,7 +15,4 @@
  Sample code: Neural network tester (can run your custom neurons)
 */
-
-StdoutErrorHandler err; //redirect model-related errors to stdout
-DefaultGenoConvManager gcm; //without this object the application would only handle "format 0" genotypes
 
 #ifndef GDK_WITHOUT_FRAMS
@@ -63,4 +60,7 @@
 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)
+PreconfiguredGenetics genetics;
+
 if (argc<=1)
 	{
