Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/CountOdds.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/CountOdds.cs	(revision 14777)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/CountOdds.cs	(revision 14834)
@@ -1,5 +1,3 @@
 ﻿namespace HeuristicLab.BenchmarkSuite.Problems {
-  using HeuristicLab.BenchmarkSuite.ERC;
-  using HeuristicLab.Data;
 
   public class CountOdds : BenchmarkSuiteDataDescriptor {
@@ -7,34 +5,29 @@
     private const string fileName = "CountOdds.csv";
     private const string description = "";
-    private readonly ExampleArgumentType[] inputArgumentTypes = { ExampleArgumentType.IntegerCollection };
-    private readonly ExampleArgumentType[] outputArgumentTypes = { ExampleArgumentType.Integer };
 
-    private readonly DataTypes enabledDataTypeses = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.IntegerVector;
-    private readonly ProblemErcOptions problemErcOptions = new ProblemErcOptions {
-      IntegerErcRange = new ErcOptionRange<IntValue>(
-        new IntValue(-1000),
-        new IntValue(1000),
-        new IntValue(0),
-        new IntValue(1),
-        new IntValue(2))
-    };
-
+    protected override string FileName { get { return fileName; } }
     public override string Name { get { return name; } }
     public override string Description { get { return description; } }
-    protected override string FileName { get { return fileName; } }
-    public override ExampleArgumentType[] InputArgumentTypes { get { return inputArgumentTypes; } }
-    public override ExampleArgumentType[] OutputArgumentTypes { get { return outputArgumentTypes; } }
-    public override int OriginalTrainingCount { get { return 200; } }
-    public override int OriginalTestCount { get { return 2000; } }
-    public override int BestResult { get { return 0; } }
-    public override int WorstResult { get { return 50; } }
-    public override ProblemErcOptions ProblemErcOptions { get { return this.problemErcOptions; } }
-    public override DataTypes EnabledDataTypes { get { return this.enabledDataTypeses; } }
-    public override int MaxSize { get { return 500; } }
-    public override int EvalLimit { get { return 1500; } }
-    public override int MaxGenerations { get { return 300; } }
-    public override int ProgEvalBudget { get { return 60000000; } }
+    protected override int InputArgumentCount { get { return 1; } }
+    protected override int OutputArgumentCount { get { return 1; } }
 
-    public override Example ParseExample(string[] input, string[] output) {
+    public override Data CreateProblemData() {
+      return new Data {
+        Name = Name,
+        Description = Description,
+        Examples = CloneExamples(),
+        BestResult = 0,
+        WorstResult = 50,
+        InputArgumentTypes = new[] { ExampleArgumentType.IntegerCollection },
+        OutputArgumentTypes = new[] { ExampleArgumentType.Integer },
+        OriginalTestCount = 2000,
+        OriginalTrainingCount = 200,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.IntegerVector,
+        EvalLimit = 1500,
+        MaxSize = 500,
+      };
+    }
+
+    protected override Example ParseExample(string[] input, string[] output) {
       return new Example {
         InputArgs = input,
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Data.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Data.cs	(revision 14777)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Data.cs	(revision 14834)
@@ -2,5 +2,4 @@
   using System.Linq;
 
-  using HeuristicLab.BenchmarkSuite.ERC;
   using HeuristicLab.Common;
   using HeuristicLab.Core;
@@ -16,6 +15,4 @@
 
     public Data(Data origin, Cloner cloner) : base(origin, cloner) {
-      Name = origin.Name;
-      Description = origin.Description;
       OriginalTrainingCount = origin.OriginalTrainingCount;
       OriginalTestCount = origin.OriginalTestCount;
@@ -24,13 +21,11 @@
       InputArgumentTypes = origin.InputArgumentTypes;
       OutputArgumentTypes = origin.OutputArgumentTypes;
-      Examples = origin.Examples.ToArray();
+
+      if (origin.Examples != null)
+        Examples = origin.Examples.Select(e => (Example)e.Clone(cloner)).ToArray();
+
       EnabledDataTypes = origin.EnabledDataTypes;
-      this.ProblemErcOptions = cloner.Clone(origin.ProblemErcOptions);
     }
 
-    [Storable]
-    public string Name { get; set; }
-    [Storable]
-    public string Description { get; set; }
     [Storable]
     public int OriginalTrainingCount { get; set; }
@@ -38,7 +33,7 @@
     public int OriginalTestCount { get; set; }
     [Storable]
-    public int BestResult { get; set; }
+    public double BestResult { get; set; }
     [Storable]
-    public int WorstResult { get; set; }
+    public double WorstResult { get; set; }
     [Storable]
     public ExampleArgumentType[] InputArgumentTypes { get; set; }
@@ -48,6 +43,4 @@
     [Storable]
     public Example[] Examples { get; set; }
-    [Storable]
-    public ProblemErcOptions ProblemErcOptions { get; set; }
     [Storable]
     public DataTypes EnabledDataTypes { get; set; }
@@ -67,16 +60,4 @@
     public int EvalLimit { get; set; }
 
-    /// <summary>
-    /// “Max Gens” gives the maximum number of generations in a single PushGP run.
-    /// </summary>
-    [Storable]
-    public int MaxGenerations { get; set; }
-
-    /// <summary>
-    /// “Prog Eval Budget” is the maximum number of programs that will be evaluated before a run is terminated.
-    /// </summary>
-    [Storable]
-    public int ProgEvalBudget { get; set; }
-
     public override IDeepCloneable Clone(Cloner cloner) {
       return new Data(this, cloner);
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/NumberIo.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/NumberIo.cs	(revision 14777)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/NumberIo.cs	(revision 14834)
@@ -1,28 +1,41 @@
-﻿//namespace HeuristicLab.BenchmarkSuite.Problems {
-//  using System.Linq;
+﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  public class NumberIO : BenchmarkSuiteDataDescriptor {
+    private const string name = "NumberIO";
+    private const string fileName = "NumberIO.csv";
+    private const string description = "Given an integer and a float, calc their sum.";
 
-//  using HeuristicLab.BenchmarkSuite.ProblemData;
+    protected override string FileName { get { return fileName; } }
+    public override string Name { get { return name; } }
+    public override string Description { get { return description; } }
+    protected override int InputArgumentCount { get { return 2; } }
+    protected override int OutputArgumentCount { get { return 1; } }
 
-//  public class NumberIo : BenchmarkSuiteDataDescriptor<double[], double> {
-//    private const string displayMame = "NumberIO";
-//    private const string description = " Given an integer and a float, print their sum.";
+    public override Data CreateProblemData() {
+      return new Data {
+        Name = Name,
+        Description = Description,
+        Examples = CloneExamples(),
+        BestResult = 0,
+        WorstResult = 400,
+        InputArgumentTypes = new[] { ExampleArgumentType.Float, ExampleArgumentType.Integer },
+        OutputArgumentTypes = new[] { ExampleArgumentType.Float },
+        OriginalTrainingCount = 25,
+        OriginalTestCount = 1000,
+        EnabledDataTypes = DataTypes.Integer | DataTypes.Float,
+        EvalLimit = 200,
+        MaxSize = 200,
+      };
+    }
 
-//    public override string Name { get { return displayMame; } }
-//    public override string Description { get { return description; } }
+    protected override Example ParseExample(string[] input, string[] output) {
+      return new Example {
+        InputArgs = input,
+        OutputArgs = output,
+        InputFloat = ExampleArgumentConverter.ConvertDoubles(input[0]),
+        InputInt = ExampleArgumentConverter.ConvertIntegers(input[1]),
+        OutputFloat = ExampleArgumentConverter.ConvertDoubles(output[0])
+      };
+    }
+  }
+}
 
-//    protected override int InputArgumentCount { get { return 2; } }
-//    protected override int OutputArgumentCount { get { return 1; } }
-
-//    public override double[] ConvertInput(string[] input) {
-//      return input.Select(ConvertDouble).ToArray();
-//    }
-
-//    public override double ConvertOutput(string[] output) {
-//      return ConvertDouble(output[0]);
-//    }
-
-//    public override IPushData CreatePushData(Example<double[], double>[] training, Example<double[], double>[] test) {
-//      return new NumberIoPushData(training, test);
-//    }
-//  }
-//}
