Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Checksum.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Checksum.cs	(revision 14875)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Checksum.cs	(revision 14897)
@@ -1,3 +1,6 @@
 ﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Char;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Integer;
+
   public class Checksum : BenchmarkSuiteDataDescriptor {
     private const string name = "Checksum";
@@ -22,21 +25,15 @@
         TrainingCount = 100,
         TestCount = 1000,
-        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.Char | DataTypes.String,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.Char | DataTypes.String | DataTypes.Print,
         MaxSize = 800,
         EvalLimit = 1500,
         ErcOptions = {
           ErcProbability = 0.05,
-          IntegerErcOptions = {
-            IsEnabled = true,
-            Constants = new [] { 64 },
-            Start = -128,
-            End = 128
-          },
-          CharErcOptions = {
-            IsEnabled = true,
-            Constants = new [] { ' ' },
-            Start = 0x20,
-            End = 0x7e
-          }
+          IntegerErcOptions = new IntegerErcOptions(
+            new IntegerConstantErcValue(64),
+            new IntegerRangeErcValue(-128, 128)),
+          CharErcOptions = new CharErcOptions(
+            new IntegerConstantErcValue(' '),
+            new IntegerRangeErcValue(0x20, 0x7e))
         }
       };
@@ -48,5 +45,5 @@
         OutputArgs = output,
         InputString = input,
-        OutputChar = output[0].ToCharArray(),
+        OutputPrint = output[0],
       };
     }
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/CollatzNumbers.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/CollatzNumbers.cs	(revision 14875)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/CollatzNumbers.cs	(revision 14897)
@@ -1,4 +1,4 @@
 ﻿namespace HeuristicLab.BenchmarkSuite.Problems {
-
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Integer;
 
   public class CollatzNumbers : BenchmarkSuiteDataDescriptor {
@@ -29,10 +29,7 @@
         ErcOptions = {
           ErcProbability = 0.05,
-          IntegerErcOptions = {
-            IsEnabled = true,
-            Constants = new [] { 0, 1 },
-            Start = -100,
-            End = 100
-          }
+          IntegerErcOptions = new IntegerErcOptions(
+            new IntegerConstantErcValue(0, 1),
+            new IntegerRangeErcValue(-100, 100))
         }
       };
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/CompareStringLengths.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/CompareStringLengths.cs	(revision 14875)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/CompareStringLengths.cs	(revision 14897)
@@ -1,4 +1,4 @@
 ﻿namespace HeuristicLab.BenchmarkSuite.Problems {
-  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Boolean;
 
   public class CompareStringLengths : BenchmarkSuiteDataDescriptor {
@@ -29,8 +29,9 @@
         ErcOptions = {
           ErcProbability = 0.05,
-          BooleanErcOptions = {
-            IsEnabled = true,
-            AllowTrue = true,
-            AllowFalse = true
+          BooleanErcOptions = new BooleanErcOptions {
+            new BooleanRandomErcValue {
+              AllowTrue = true,
+              AllowFalse = true
+            }
           }
         }
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/CountOdds.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/CountOdds.cs	(revision 14875)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/CountOdds.cs	(revision 14897)
@@ -1,4 +1,4 @@
 ﻿namespace HeuristicLab.BenchmarkSuite.Problems {
-  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Integer;
 
   public class CountOdds : BenchmarkSuiteDataDescriptor {
@@ -29,10 +29,7 @@
         ErcOptions = {
           ErcProbability = 0.05,
-          IntegerErcOptions = {
-            IsEnabled = true,
-            Constants = new [] { 0, 1, 2},
-            Start = -1000,
-            End = 1000
-          }
+          IntegerErcOptions = new IntegerErcOptions(
+            new IntegerConstantErcValue(0, 1, 2),
+            new IntegerRangeErcValue(-1000, 1000)),
         }
       };
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Digits.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Digits.cs	(revision 14875)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Digits.cs	(revision 14897)
@@ -1,3 +1,6 @@
 ﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Char;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Integer;
+
   public class Digits : BenchmarkSuiteDataDescriptor {
     private const string name = "Digits";
@@ -22,18 +25,13 @@
         TrainingCount = 100,
         TestCount = 1000,
-        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.Char | DataTypes.String,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.Char | DataTypes.String | DataTypes.Print,
         MaxSize = 300,
         EvalLimit = 600,
         ErcOptions = {
           ErcProbability = 0.05,
-          IntegerErcOptions = {
-            IsEnabled = true,
-            Start = -10,
-            End = 10
-          },
-          CharErcOptions = {
-            IsEnabled = true,
-            Constants = new [] { '\r' },
-          }
+          IntegerErcOptions = new IntegerErcOptions(
+            new IntegerRangeErcValue(-10, 10)),
+          CharErcOptions = new CharErcOptions(
+            new IntegerConstantErcValue('\r'))
         }
       };
@@ -45,5 +43,5 @@
         OutputArgs = output,
         InputInteger = ExampleArgumentConverter.ConvertIntegers(input[0]),
-        OutputString = output,
+        OutputPrint = output[0],
       };
     }
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/DoubleLetters.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/DoubleLetters.cs	(revision 14875)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/DoubleLetters.cs	(revision 14897)
@@ -1,4 +1,5 @@
 ﻿namespace HeuristicLab.BenchmarkSuite.Problems {
-  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Char;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Integer;
 
   public class DoubleLetters : BenchmarkSuiteDataDescriptor {
@@ -24,13 +25,11 @@
         TrainingCount = 100,
         TestCount = 1000,
-        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.String | DataTypes.Char,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.String | DataTypes.Char | DataTypes.Print,
         MaxSize = 800,
         EvalLimit = 1600,
         ErcOptions = {
           ErcProbability = 0.02,
-          CharErcOptions = {
-            IsEnabled = true,
-            Constants = new [] { '!' }
-          }
+          CharErcOptions = new CharErcOptions(
+            new IntegerConstantErcValue('!'))
         }
       };
@@ -42,5 +41,5 @@
         OutputArgs = output,
         InputString = input,
-        OutputString = output,
+        OutputPrint = output[0],
       };
     }
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/EvenSquares.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/EvenSquares.cs	(revision 14875)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/EvenSquares.cs	(revision 14897)
@@ -22,5 +22,5 @@
         TrainingCount = 100,
         TestCount = 1000,
-        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.Print,
         MaxSize = 400,
         EvalLimit = 2000,
@@ -33,5 +33,5 @@
         OutputArgs = output,
         InputInteger = ExampleArgumentConverter.ConvertIntegers(input),
-        OutputString = output,
+        OutputPrint = output[0],
       };
     }
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/ForLoopIndex.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/ForLoopIndex.cs	(revision 14875)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/ForLoopIndex.cs	(revision 14897)
@@ -23,8 +23,8 @@
         WorstResult = 1000,
         InputArgumentTypes = new[] { ExampleArgumentType.Integer, ExampleArgumentType.Integer, ExampleArgumentType.Integer },
-        OutputArgumentTypes = new[] { ExampleArgumentType.IntegerVector },
+        OutputArgumentTypes = new[] { ExampleArgumentType.String },
         TrainingCount = 100,
         TestCount = 1000,
-        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.IntegerVector,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.String | DataTypes.Print,
         MaxSize = 300,
         EvalLimit = 600,
@@ -37,5 +37,5 @@
         OutputArgs = output,
         InputInteger = ExampleArgumentConverter.ConvertIntegers(input),
-        OutputIntegerVector = new[] { ExampleArgumentConverter.ConvertIntegers(output[0]) }
+        OutputPrint = output[0]
       };
     }
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Grades.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Grades.cs	(revision 14875)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Grades.cs	(revision 14897)
@@ -1,3 +1,6 @@
 ﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Integer;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.String;
+
   public class Grades : BenchmarkSuiteDataDescriptor {
     private const string name = "Grades";
@@ -22,18 +25,13 @@
         TrainingCount = 200,
         TestCount = 2000,
-        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.String,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.String | DataTypes.Print,
         MaxSize = 400,
         EvalLimit = 800,
         ErcOptions = {
           ErcProbability = 0.05,
-          IntegerErcOptions = {
-            IsEnabled = true,
-            Start = 0,
-            End = 100
-          },
-          StringErcOptions = {
-            IsEnabled = true,
-            Constants = new [] { "Student has a ", " grade", "A", "B", "C", "D", "F" },
-          }
+          IntegerErcOptions = new IntegerErcOptions(
+            new IntegerRangeErcValue(0, 100)),
+          StringErcOptions = new StringErcOptions(
+            new StringConstantErcValue("Student has a ", " grade", "A", "B", "C", "D", "F"))
         }
       };
@@ -45,5 +43,5 @@
         OutputArgs = output,
         InputInteger = ExampleArgumentConverter.ConvertIntegers(input),
-        OutputString = output,
+        OutputPrint = output[0],
       };
     }
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/LastIndexOfZero.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/LastIndexOfZero.cs	(revision 14875)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/LastIndexOfZero.cs	(revision 14897)
@@ -1,4 +1,4 @@
 ﻿namespace HeuristicLab.BenchmarkSuite.Problems {
-  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Integer;
 
   public class LastIndexOfZero : BenchmarkSuiteDataDescriptor {
@@ -29,11 +29,8 @@
         ErcOptions = {
           ErcProbability = 0.05,
-          IntegerErcOptions = {
-            IsEnabled = true,
-            Constants = new [] { 0 },
-            Start = -50,
-            End = 50
+          IntegerErcOptions = new IntegerErcOptions(
+            new IntegerConstantErcValue(0),
+            new IntegerRangeErcValue(-50, 50))
           }
-        }
       };
     }
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Median.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Median.cs	(revision 14875)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Median.cs	(revision 14897)
@@ -1,3 +1,5 @@
 ﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Integer;
+
   public class Median : BenchmarkSuiteDataDescriptor {
     private const string name = "Median";
@@ -27,9 +29,7 @@
         ErcOptions = {
           ErcProbability = 0.05,
-          IntegerErcOptions = {
-            IsEnabled = true,
-            Start = -100,
-            End = 100
-          }
+          IntegerErcOptions = new IntegerErcOptions(
+            new IntegerConstantErcValue(0),
+            new IntegerRangeErcValue(-1000, 100))
         }
       };
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/MirrorImage.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/MirrorImage.cs	(revision 14875)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/MirrorImage.cs	(revision 14897)
@@ -1,3 +1,4 @@
 ﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Boolean;
 
   public class MirrorImage : BenchmarkSuiteDataDescriptor {
@@ -28,9 +29,9 @@
         ErcOptions = {
           ErcProbability = 0.05,
-          BooleanErcOptions = {
-            IsEnabled = true,
-            AllowFalse = true,
-            AllowTrue = true
-          }
+          BooleanErcOptions = new BooleanErcOptions(
+            new BooleanRandomErcValue {
+              AllowFalse = true,
+              AllowTrue = true
+            })
         }
       };
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/NegativeToZero.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/NegativeToZero.cs	(revision 14875)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/NegativeToZero.cs	(revision 14897)
@@ -1,3 +1,6 @@
 ﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Integer;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.IntegerVector;
+
   public class NegativeToZero : BenchmarkSuiteDataDescriptor {
     private const string name = "Negative to Zero";
@@ -27,12 +30,8 @@
         ErcOptions = {
           ErcProbability = 0.05,
-          IntegerErcOptions = {
-            IsEnabled = true,
-            Constants = new [] { 0 }
-          },
-          IntegerVectorErcOptions = {
-            IsEnabled = true,
-            Constants = new [] { new int[0] }
-          }
+          IntegerErcOptions = new IntegerErcOptions(
+            new IntegerConstantErcValue(0)),
+          IntegerVectorErcOptions = new IntegerVectorErcOptions(
+            new IntegerVectorConstantsErcValue(new int[0]))
         }
       };
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/NumberIo.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/NumberIo.cs	(revision 14875)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/NumberIo.cs	(revision 14897)
@@ -1,4 +1,5 @@
 ﻿namespace HeuristicLab.BenchmarkSuite.Problems {
-  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Float;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Integer;
 
   public class NumberIO : BenchmarkSuiteDataDescriptor {
@@ -28,15 +29,9 @@
         MaxSize = 200,
         ErcOptions = {
-          ErcProbability = 0.05,
-          IntegerErcOptions = {
-            IsEnabled = true,
-            Start = -100,
-            End = 100
-          },
-          FloatErcOptions = {
-            IsEnabled = true,
-            Start = -100.0,
-            End = 100.0
-          }
+          ErcProbability = 0.01,
+          IntegerErcOptions = new IntegerErcOptions(
+            new IntegerRangeErcValue(-100, 100)),
+          FloatErcOptions = new FloatErcOptions(
+            new FloatRangeErcValue(-100, 100))
         }
       };
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/PigLatin.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/PigLatin.cs	(revision 14875)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/PigLatin.cs	(revision 14897)
@@ -1,3 +1,7 @@
 ﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Char;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Integer;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.String;
+
   public class PigLatin : BenchmarkSuiteDataDescriptor {
     private const string name = "Pig Latin";
@@ -22,23 +26,21 @@
         TrainingCount = 200,
         TestCount = 1000,
-        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.Char | DataTypes.String,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.Char | DataTypes.String | DataTypes.Print,
         MaxSize = 1000,
         EvalLimit = 2000,
         ErcOptions = {
           ErcProbability = 0.05,
-          CharErcOptions = {
-            IsEnabled = true,
-            Constants = new [] { ' ', 'a', 'e', 'i', 'o', 'u' },
-            Start = 0x20,
-            End = 0x7e
-          },
-          StringErcOptions = {
-            IsEnabled = true,
-            Constants = new [] { "ay", "aeiou" },
-            AllowLowercaseLetters = true,
-            AllowUppercaseLetters = false,
-            AllowSpace = true,
-            SpaceProbability = 0.2,
-          }
+          CharErcOptions = new CharErcOptions(
+            new IntegerConstantErcValue(' ', 'a', 'e', 'i', 'o', 'u'),
+            new IntegerRangeErcValue(0x20, 0x7e)),
+          StringErcOptions = new StringErcOptions(
+            new StringConstantErcValue("ay", "aeiou"),
+            new StringRandomErcValue {
+              IsEnabled = true,
+              AllowLowercaseLetters = true,
+              AllowUppercaseLetters = false,
+              AllowSpace = true,
+              SpaceProbability = 0.2,
+          })
         }
       };
@@ -50,5 +52,5 @@
         OutputArgs = output,
         InputString = input,
-        OutputString = output,
+        OutputPrint = output[0],
       };
     }
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/ProblemData.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/ProblemData.cs	(revision 14875)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/ProblemData.cs	(revision 14897)
@@ -4,4 +4,5 @@
   using Core;
   using HeuristicLab.Problems.ProgramSynthesis.Base.Erc;
+
   using Persistence.Default.CompositeSerializers.Storable;
 
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/ReplaceSpaceWithNewline.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/ReplaceSpaceWithNewline.cs	(revision 14875)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/ReplaceSpaceWithNewline.cs	(revision 14897)
@@ -1,4 +1,6 @@
 ﻿namespace HeuristicLab.BenchmarkSuite.Problems {
-  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Char;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Integer;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.String;
 
   public class ReplaceSpaceWithNewline : BenchmarkSuiteDataDescriptor {
@@ -24,22 +26,20 @@
         TrainingCount = 100,
         TestCount = 1000,
-        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.Char | DataTypes.String,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.Char | DataTypes.String | DataTypes.Print,
         MaxSize = 800,
         EvalLimit = 1600,
         ErcOptions = {
           ErcProbability = 0.05,
-          CharErcOptions = {
-            IsEnabled = true,
-            Constants = new [] { ' ', '\r' },
-            Start = 0x20,
-            End = 0x7e
-          },
-          StringErcOptions = {
-            IsEnabled = true,
-            AllowLowercaseLetters = true,
-            AllowUppercaseLetters = false,
-            AllowSpace = true,
-            SpaceProbability = 0.2
-          }
+          CharErcOptions = new CharErcOptions(
+            new IntegerConstantErcValue(' ', '\r'),
+            new IntegerRangeErcValue(0x20, 0x7e)),
+          StringErcOptions = new StringErcOptions(
+            new StringRandomErcValue {
+              IsEnabled = true,
+              AllowLowercaseLetters = true,
+              AllowUppercaseLetters = false,
+              AllowSpace = true,
+              SpaceProbability = 0.2
+            })
         }
       };
@@ -51,5 +51,5 @@
         OutputArgs = output,
         InputString = input,
-        OutputString = new[] { output[0] },
+        OutputPrint = output[0],
         OutputInteger = ExampleArgumentConverter.ConvertIntegers(output[1]),
       };
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/ScrabbleScore.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/ScrabbleScore.cs	(revision 14875)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/ScrabbleScore.cs	(revision 14897)
@@ -1,3 +1,6 @@
 ﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Char;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Integer;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.IntegerVector;
 
   public class ScrabbleScore : BenchmarkSuiteDataDescriptor {
@@ -58,12 +61,8 @@
         ErcOptions = {
           ErcProbability = 0.05,
-          IntegerErcOptions = {
-            IsEnabled = true,
-            Constants = ScrabbleValues
-          },
-          IntegerVectorErcOptions = {
-            IsEnabled = true,
-            Constants = new [] { ScrabbleValues }
-          }
+          IntegerErcOptions = new IntegerErcOptions(
+            new IntegerConstantErcValue(ScrabbleValues)),
+          IntegerVectorErcOptions = new IntegerVectorErcOptions(
+            new IntegerVectorConstantsErcValue(ScrabbleValues))
         }
       };
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/SmallOrLarge.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/SmallOrLarge.cs	(revision 14875)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/SmallOrLarge.cs	(revision 14897)
@@ -1,3 +1,6 @@
 ﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Integer;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.String;
+
   public class SmallOrLarge : BenchmarkSuiteDataDescriptor {
     private const string name = "Small or Large";
@@ -23,18 +26,13 @@
         TrainingCount = 100,
         TestCount = 1000,
-        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.String,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.String | DataTypes.Print,
         MaxSize = 200,
         EvalLimit = 300,
         ErcOptions = {
           ErcProbability = 0.05,
-          IntegerErcOptions = {
-            IsEnabled = true,
-            Start = -10000,
-            End = 10000
-          },
-          StringErcOptions = {
-            IsEnabled = true,
-            Constants = new [] { "small", "large" }
-          }
+          IntegerErcOptions = new IntegerErcOptions(
+            new IntegerRangeErcValue(-10000, 10000)),
+          StringErcOptions = new StringErcOptions(
+            new StringConstantErcValue("small", "large"))
         }
       };
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Smallest.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Smallest.cs	(revision 14875)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Smallest.cs	(revision 14897)
@@ -1,3 +1,5 @@
 ﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Integer;
+
   public class Smallest : BenchmarkSuiteDataDescriptor {
     private const string name = "Smallest";
@@ -27,9 +29,6 @@
         ErcOptions = {
           ErcProbability = 0.05,
-          IntegerErcOptions = {
-            IsEnabled = true,
-            Start = -100,
-            End = 100
-          }
+          IntegerErcOptions = new IntegerErcOptions(
+            new IntegerRangeErcValue(-100, 100)),
         }
       };
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/StringDifferences.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/StringDifferences.cs	(revision 14875)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/StringDifferences.cs	(revision 14897)
@@ -1,4 +1,5 @@
 ﻿namespace HeuristicLab.BenchmarkSuite.Problems {
-  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Char;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Integer;
 
   public class StringDifferences : BenchmarkSuiteDataDescriptor {
@@ -24,18 +25,13 @@
         TrainingCount = 200,
         TestCount = 2000,
-        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.Char | DataTypes.String,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.Char | DataTypes.String | DataTypes.Print,
         MaxSize = 1000,
         EvalLimit = 2000,
         ErcOptions = {
           ErcProbability = 0.05,
-          CharErcOptions = {
-            IsEnabled = true,
-            Constants = new [] { ' ', '\r' },
-          },
-          IntegerErcOptions = {
-            IsEnabled = true,
-            Start = -10,
-            End = 10
-          }
+          CharErcOptions = new CharErcOptions(
+            new IntegerConstantErcValue(' ', '\r')),
+          IntegerErcOptions = new IntegerErcOptions(
+            new IntegerRangeErcValue(-10, 10))
         }
       };
@@ -47,5 +43,5 @@
         OutputArgs = output,
         InputString = input,
-        OutputString = output,
+        OutputPrint = output[0],
       };
     }
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/StringLengthsBackwards.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/StringLengthsBackwards.cs	(revision 14875)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/StringLengthsBackwards.cs	(revision 14897)
@@ -1,8 +1,8 @@
 ﻿namespace HeuristicLab.BenchmarkSuite.Problems {
-  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Integer;
 
   public class StringLengthsBackwards : BenchmarkSuiteDataDescriptor {
     private const string name = "String Length Backwards";
-    private const string fileName = "StringLengthBackwards.csv";
+    private const string fileName = "StringLengthsBackwards.csv";
     private const string description = "Given a vector of strings, print the length of each string in the vector starting with the last and ending with the first.";
 
@@ -24,14 +24,11 @@
         TrainingCount = 100,
         TestCount = 1000,
-        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.String | DataTypes.StringVector,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.String | DataTypes.StringVector | DataTypes.Print,
         MaxSize = 300,
         EvalLimit = 600,
         ErcOptions = {
           ErcProbability = 0.05,
-          IntegerErcOptions = {
-            IsEnabled = true,
-            Start = -100,
-            End = 100
-          }
+          IntegerErcOptions = new IntegerErcOptions(
+            new IntegerRangeErcValue(-100, 100))
         }
       };
@@ -43,5 +40,5 @@
         OutputArgs = output,
         InputStringVector = new[] { ExampleArgumentConverter.ConvertStringVector(input[0]) },
-        OutputString = output,
+        OutputPrint = output[0],
       };
     }
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/SumOfSquares.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/SumOfSquares.cs	(revision 14875)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/SumOfSquares.cs	(revision 14897)
@@ -1,3 +1,5 @@
 ﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Integer;
+
   public class SumOfSquares : BenchmarkSuiteDataDescriptor {
     private const string name = "Sum of Squares";
@@ -27,9 +29,6 @@
         ErcOptions = {
           ErcProbability = 0.05,
-          IntegerErcOptions = {
-            IsEnabled = true,
-            Start = -100,
-            End = 100
-          }
+          IntegerErcOptions = new IntegerErcOptions(
+            new IntegerRangeErcValue(-100, 100))
         }
       };
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/SuperAnagrams.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/SuperAnagrams.cs	(revision 14875)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/SuperAnagrams.cs	(revision 14897)
@@ -1,3 +1,7 @@
 ﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Boolean;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Char;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Integer;
+
   public class SuperAnagrams : BenchmarkSuiteDataDescriptor {
     private const string name = "Super Anagrams";
@@ -27,19 +31,14 @@
         ErcOptions = {
           ErcProbability = 0.05,
-          BooleanErcOptions = {
-            IsEnabled = true,
-            AllowFalse = true,
-            AllowTrue = true
-          },
-          IntegerErcOptions = {
-            IsEnabled = true,
-            Start = -1000,
-            End = 1000
-          },
-          CharErcOptions = {
-            IsEnabled = true,
-            Start = 0x20,
-            End = 0x7e
-          }
+          BooleanErcOptions = new BooleanErcOptions(
+            new BooleanRandomErcValue {
+              IsEnabled = true,
+              AllowFalse = true,
+              AllowTrue = true
+            }),
+          IntegerErcOptions = new IntegerErcOptions(
+            new IntegerRangeErcValue(-1000, 1000)),
+          CharErcOptions = new CharErcOptions(
+            new IntegerRangeErcValue(0x20, 0x7e))
         }
       };
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Syllables.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Syllables.cs	(revision 14875)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Syllables.cs	(revision 14897)
@@ -1,3 +1,7 @@
 ﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Char;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Integer;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.String;
+
   public class Syllables : BenchmarkSuiteDataDescriptor {
     private const string name = "Syllables";
@@ -27,21 +31,18 @@
         ErcOptions = {
           ErcProbability = 0.05,
-          StringErcOptions = {
-            IsEnabled = true,
-            Constants = new [] { "The number of syllables is ", "aeiouy" },
-            AllowLowercaseLetters = true,
-            AllowUppercaseLetters = false,
-            AllowDigits = true,
-            AllowSymbols = true,
-            AllowSpace = true,
-            SpaceProbability = 0.2,
-            VowelProbability = 0.2
-          },
-          CharErcOptions = {
-            IsEnabled = true,
-            Constants = new [] { 'a', 'e', 'i', 'o', 'u' },
-            Start = 0x20,
-            End = 0x7e
-          }
+          StringErcOptions = new StringErcOptions(
+            new StringConstantErcValue("The number of syllables is ", "aeiouy" ),
+            new StringRandomErcValue {
+              AllowLowercaseLetters = true,
+              AllowUppercaseLetters = false,
+              AllowDigits = true,
+              AllowSymbols = true,
+              AllowSpace = true,
+              SpaceProbability = 0.2,
+              VowelProbability = 0.2
+            }),
+          CharErcOptions = new CharErcOptions (
+            new IntegerConstantErcValue('a', 'e', 'i', 'o', 'u'),
+            new IntegerRangeErcValue(0x20, 0x7e))
         }
       };
@@ -53,5 +54,5 @@
         OutputArgs = output,
         InputString = input,
-        OutputInteger = ExampleArgumentConverter.ConvertIntegers(output[0]),
+        OutputPrint = output[0],
       };
     }
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/VectorSummed.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/VectorSummed.cs	(revision 14875)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/VectorSummed.cs	(revision 14897)
@@ -1,3 +1,6 @@
 ﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Integer;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.IntegerVector;
+
   public class VectorSummed : BenchmarkSuiteDataDescriptor {
     private const string name = "Vector Summed";
@@ -27,13 +30,8 @@
         ErcOptions = {
           ErcProbability = 0.05,
-          IntegerVectorErcOptions = {
-            IsEnabled = true,
-            Constants = new [] { new int[0] }
-          },
-          IntegerErcOptions = {
-            IsEnabled = true,
-            Start = -1000,
-            End = 1000
-          }
+          IntegerVectorErcOptions = new IntegerVectorErcOptions(
+            new IntegerVectorConstantsErcValue(new int[0])),
+          IntegerErcOptions = new IntegerErcOptions(
+            new IntegerRangeErcValue(-1000, 1000))
         }
       };
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/WallisPi.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/WallisPi.cs	(revision 14875)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/WallisPi.cs	(revision 14897)
@@ -1,3 +1,6 @@
 ﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Float;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Integer;
+
   public class WallisPi : BenchmarkSuiteDataDescriptor {
     private const string name = "Wallis Pi";
@@ -27,14 +30,8 @@
         ErcOptions = {
           ErcProbability = 0.05,
-          FloatErcOptions = {
-            IsEnabled = true,
-            Start = -500,
-            End = 500,
-          },
-          IntegerErcOptions = {
-            IsEnabled = true,
-            Start = -500,
-            End = 500
-          }
+          FloatErcOptions = new FloatErcOptions(
+            new FloatRangeErcValue(-500, 500)),
+          IntegerErcOptions = new IntegerErcOptions(
+            new IntegerRangeErcValue(-500, 500))
         }
       };
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/WordStats.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/WordStats.cs	(revision 14875)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/WordStats.cs	(revision 14897)
@@ -1,3 +1,8 @@
 ﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Char;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Integer;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.IntegerVector;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.String;
+
   public class WordStats : BenchmarkSuiteDataDescriptor {
     private const string name = "Word Stats";
@@ -22,26 +27,17 @@
         TrainingCount = 100,
         TestCount = 1000,
-        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Float | DataTypes.Boolean | DataTypes.Char | DataTypes.String | DataTypes.IntegerVector | DataTypes.FloatVector | DataTypes.StringVector,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Float | DataTypes.Boolean | DataTypes.Char | DataTypes.String | DataTypes.IntegerVector | DataTypes.FloatVector | DataTypes.StringVector | DataTypes.Print,
         MaxSize = 1000,
         EvalLimit = 6000,
         ErcOptions = {
           ErcProbability = 0.05,
-          IntegerErcOptions = {
-            IsEnabled = true,
-            Start = 100,
-            End = 100
-          },
-          IntegerVectorErcOptions = {
-            IsEnabled = true,
-            Constants = new [] { new int[0] }
-          },
-          CharErcOptions = {
-            IsEnabled = true,
-            Constants = new [] { '.', '?', '!', ' ', '\t', '\r', ':' }
-          },
-          StringErcOptions = {
-            IsEnabled = true,
-            Constants = new [] { "words of length ", ": ", "number of sentences: ", "average sentence length: " }
-          }
+          IntegerErcOptions = new IntegerErcOptions(
+            new IntegerRangeErcValue(-100, 100)),
+          IntegerVectorErcOptions = new IntegerVectorErcOptions(
+            new IntegerVectorConstantsErcValue(new int[0])),
+          CharErcOptions = new CharErcOptions(
+            new IntegerConstantErcValue('.', '?', '!', ' ', '\t', '\r', ':')),
+          StringErcOptions = new StringErcOptions(
+            new StringConstantErcValue("words of length ", ": ", "number of sentences: ", "average sentence length: "))
         }
       };
@@ -53,5 +49,5 @@
         OutputArgs = output,
         InputString = input,
-        OutputString = output,
+        OutputPrint = output[0]
       };
     }
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/XWordLines.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/XWordLines.cs	(revision 14875)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/XWordLines.cs	(revision 14897)
@@ -1,3 +1,6 @@
 ﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Char;
+  using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Integer;
+
   public class XWordLines : BenchmarkSuiteDataDescriptor {
     private const string name = "X-Word Lines";
@@ -22,13 +25,11 @@
         TrainingCount = 150,
         TestCount = 2000,
-        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.Char | DataTypes.String,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.Char | DataTypes.String | DataTypes.Print,
         MaxSize = 800,
         EvalLimit = 1600,
         ErcOptions = {
           ErcProbability = 0.05,
-          CharErcOptions = {
-            IsEnabled = true,
-            Constants = new [] { ' ', '\r' }
-          }
+          CharErcOptions = new CharErcOptions(
+            new IntegerConstantErcValue(' ', '\r')),
         }
       };
@@ -39,7 +40,7 @@
         InputArgs = input,
         OutputArgs = output,
-        InputInteger = ExampleArgumentConverter.ConvertIntegers(input[0]),
-        InputString = new[] { input[1] },
-        OutputString = output,
+        InputInteger = ExampleArgumentConverter.ConvertIntegers(input[1]),
+        InputString = new[] { input[0] },
+        OutputPrint = output[0],
       };
     }
