Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Checksum.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Checksum.cs	(revision 15189)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Checksum.cs	(revision 15334)
@@ -19,7 +19,8 @@
         Name = Name,
         Description = Description,
+        ProgramExecutionBudget = 30000000,
         Examples = CloneExamples(),
         BestResult = 0,
-        WorstResult = char.MaxValue,
+        WorstResult = 1000,
         InputArgumentTypes = new[] { ExampleArgumentType.String },
         OutputArgumentTypes = new[] { ExampleArgumentType.Print },
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/CollatzNumbers.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/CollatzNumbers.cs	(revision 15189)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/CollatzNumbers.cs	(revision 15334)
@@ -17,7 +17,8 @@
         Name = Name,
         Description = Description,
+        ProgramExecutionBudget = 60000000,
         Examples = CloneExamples(),
         BestResult = 0,
-        WorstResult = 300,
+        WorstResult = 1000000,
         InputArgumentTypes = new[] { ExampleArgumentType.Integer },
         OutputArgumentTypes = new[] { ExampleArgumentType.Integer },
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/CompareStringLengths.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/CompareStringLengths.cs	(revision 15189)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/CompareStringLengths.cs	(revision 15334)
@@ -17,4 +17,5 @@
         Name = Name,
         Description = Description,
+        ProgramExecutionBudget = 30000000,
         Examples = CloneExamples(),
         BestResult = 0,
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/CountOdds.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/CountOdds.cs	(revision 15189)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/CountOdds.cs	(revision 15334)
@@ -17,7 +17,8 @@
         Name = Name,
         Description = Description,
+        ProgramExecutionBudget = 60000000,
         Examples = CloneExamples(),
         BestResult = 0,
-        WorstResult = 50,
+        WorstResult = 1000,
         InputArgumentTypes = new[] { ExampleArgumentType.IntegerVector },
         OutputArgumentTypes = new[] { ExampleArgumentType.Integer },
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Digits.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Digits.cs	(revision 15189)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Digits.cs	(revision 15334)
@@ -18,7 +18,8 @@
         Name = Name,
         Description = Description,
+        ProgramExecutionBudget = 30000000,
         Examples = CloneExamples(),
         BestResult = 0,
-        WorstResult = 20,
+        WorstResult = 5000,
         InputArgumentTypes = new[] { ExampleArgumentType.Integer },
         OutputArgumentTypes = new[] { ExampleArgumentType.Print },
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/DoubleLetters.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/DoubleLetters.cs	(revision 15189)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/DoubleLetters.cs	(revision 15334)
@@ -18,7 +18,8 @@
         Name = Name,
         Description = Description,
+        ProgramExecutionBudget = 30000000,
         Examples = CloneExamples(),
         BestResult = 0,
-        WorstResult = 100,
+        WorstResult = 5000,
         InputArgumentTypes = new[] { ExampleArgumentType.String },
         OutputArgumentTypes = new[] { ExampleArgumentType.Print },
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/EvenSquares.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/EvenSquares.cs	(revision 15189)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/EvenSquares.cs	(revision 15334)
@@ -1,3 +1,5 @@
 ﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  using System.Linq;
+
   public class EvenSquares : BenchmarkSuiteDataDescriptor {
     private const string name = "Even Sqaures - Hard";
@@ -15,7 +17,8 @@
         Name = Name,
         Description = Description,
+        ProgramExecutionBudget = 30000000,
         Examples = CloneExamples(),
         BestResult = 0,
-        WorstResult = 400,
+        WorstResult = 5000,
         InputArgumentTypes = new[] { ExampleArgumentType.Integer },
         OutputArgumentTypes = new[] { ExampleArgumentType.Print },
@@ -34,4 +37,7 @@
         InputInteger = ExampleArgumentConverter.ConvertIntegers(input),
         OutputPrint = output[0],
+
+        // helper
+        OutputIntegerVector = new [] { output[0].Split('\n').Select(ExampleArgumentConverter.ConvertInteger).ToArray() }
       };
     }
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/ForLoopIndex.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/ForLoopIndex.cs	(revision 15189)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/ForLoopIndex.cs	(revision 15334)
@@ -19,7 +19,8 @@
         Name = Name,
         Description = Description,
+        ProgramExecutionBudget = 30000000,
         Examples = CloneExamples(),
         BestResult = 0,
-        WorstResult = 1000,
+        WorstResult = 5000,
         InputArgumentTypes = new[] { ExampleArgumentType.Integer, ExampleArgumentType.Integer, ExampleArgumentType.Integer },
         OutputArgumentTypes = new[] { ExampleArgumentType.Print },
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Grades.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Grades.cs	(revision 15189)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Grades.cs	(revision 15334)
@@ -1,3 +1,5 @@
 ﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  using System;
+
   using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Integer;
   using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.String;
@@ -6,5 +8,5 @@
     private const string name = "Grades - Hard";
     private const string fileName = "Grades.csv";
-    private const string description = "Given 5 integers, the first four represent the lower numeric thresholds for achieving an A, B, C, and D, and will be distinct and in descending order.The fifth represents the student’s numeric grade.The program must print Student has a X grade., where X is A, B, C, D, or F depending on the thresholds and the numeric grade.";
+    private const string description = "Given 5 integers, the first four represent the lower numeric thresholds for achieving an A, B, C, and D, and will be distinct and in descending order. The fifth represents the student’s numeric grade. The program must print Student has a X grade., where X is A, B, C, D, or F depending on the thresholds and the numeric grade.";
 
     protected override string FileName { get { return fileName; } }
@@ -18,7 +20,8 @@
         Name = Name,
         Description = Description,
+        ProgramExecutionBudget = 60000000,
         Examples = CloneExamples(),
         BestResult = 0,
-        WorstResult = 25,
+        WorstResult = 5000,
         InputArgumentTypes = new[] { ExampleArgumentType.Integer, ExampleArgumentType.Integer, ExampleArgumentType.Integer, ExampleArgumentType.Integer, ExampleArgumentType.Integer },
         OutputArgumentTypes = new[] { ExampleArgumentType.Print },
@@ -39,4 +42,8 @@
 
     protected override Example ParseExample(string[] input, string[] output) {
+      char grade;
+      if (!GetGrade(output[0], out grade))
+        throw new InvalidOperationException("Unable to parse grade.");
+
       return new Example {
         InputArgs = input,
@@ -44,5 +51,20 @@
         InputInteger = ExampleArgumentConverter.ConvertIntegers(input),
         OutputPrint = output[0],
+
+        // help
+        OutputChar = new[] { grade }
       };
+    }
+
+    public static bool GetGrade(string str, out char grade) {
+      const string start = "Student has a ";
+
+      if (str.StartsWith(start) && str.Length > start.Length) {
+        grade = str[start.Length];
+        return true;
+      }
+
+      grade = default(char);
+      return false;
     }
   }
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/LastIndexOfZero.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/LastIndexOfZero.cs	(revision 15189)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/LastIndexOfZero.cs	(revision 15334)
@@ -17,7 +17,8 @@
         Name = Name,
         Description = Description,
+        ProgramExecutionBudget = 45000000,
         Examples = CloneExamples(),
         BestResult = 0,
-        WorstResult = 50,
+        WorstResult = 1000000,
         InputArgumentTypes = new[] { ExampleArgumentType.IntegerVector },
         OutputArgumentTypes = new[] { ExampleArgumentType.Integer },
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Median.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Median.cs	(revision 15189)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Median.cs	(revision 15334)
@@ -17,7 +17,8 @@
         Name = Name,
         Description = Description,
+        ProgramExecutionBudget = 20000000,
         Examples = CloneExamples(),
         BestResult = 0,
-        WorstResult = 100,
+        WorstResult = 1,
         InputArgumentTypes = new[] { ExampleArgumentType.Integer, ExampleArgumentType.Integer, ExampleArgumentType.Integer },
         OutputArgumentTypes = new[] { ExampleArgumentType.Print },
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/MirrorImage.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/MirrorImage.cs	(revision 15189)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/MirrorImage.cs	(revision 15334)
@@ -17,4 +17,5 @@
         Name = Name,
         Description = Description,
+        ProgramExecutionBudget = 30000000,
         Examples = CloneExamples(),
         BestResult = 0,
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/NegativeToZero.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/NegativeToZero.cs	(revision 15189)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/NegativeToZero.cs	(revision 15334)
@@ -18,7 +18,8 @@
         Name = Name,
         Description = Description,
+        ProgramExecutionBudget = 60000000,
         Examples = CloneExamples(),
         BestResult = 0,
-        WorstResult = 50000,
+        WorstResult = 5000,
         InputArgumentTypes = new[] { ExampleArgumentType.IntegerVector },
         OutputArgumentTypes = new[] { ExampleArgumentType.IntegerVector },
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/NumberIo.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/NumberIo.cs	(revision 15189)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/NumberIo.cs	(revision 15334)
@@ -20,7 +20,8 @@
         Name = Name,
         Description = Description,
+        ProgramExecutionBudget = 5000000,
         Examples = CloneExamples(),
         BestResult = 0,
-        WorstResult = 400,
+        WorstResult = 5000,
         InputArgumentTypes = new[] { ExampleArgumentType.Float, ExampleArgumentType.Integer },
         OutputArgumentTypes = new[] { ExampleArgumentType.Print },
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/PigLatin.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/PigLatin.cs	(revision 15189)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/PigLatin.cs	(revision 15334)
@@ -19,7 +19,8 @@
         Name = Name,
         Description = Description,
+        ProgramExecutionBudget = 60000000,
         Examples = CloneExamples(),
         BestResult = 0,
-        WorstResult = 100,
+        WorstResult = 5000,
         InputArgumentTypes = new[] { ExampleArgumentType.String },
         OutputArgumentTypes = new[] { ExampleArgumentType.Print },
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/ReplaceSpaceWithNewline.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/ReplaceSpaceWithNewline.cs	(revision 15189)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/ReplaceSpaceWithNewline.cs	(revision 15334)
@@ -19,7 +19,8 @@
         Name = Name,
         Description = Description,
+        ProgramExecutionBudget = 30000000,
         Examples = CloneExamples(),
         BestResult = 0,
-        WorstResult = 20,
+        WorstResult = 5000,
         InputArgumentTypes = new[] { ExampleArgumentType.String },
         OutputArgumentTypes = new[] { ExampleArgumentType.Print, ExampleArgumentType.Integer },
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/ScrabbleScore.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/ScrabbleScore.cs	(revision 15189)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/ScrabbleScore.cs	(revision 15334)
@@ -48,7 +48,8 @@
         Name = Name,
         Description = Description,
+        ProgramExecutionBudget = 60000000,
         Examples = CloneExamples(),
         BestResult = 0,
-        WorstResult = 500,
+        WorstResult = 1000,
         InputArgumentTypes = new[] { ExampleArgumentType.String },
         OutputArgumentTypes = new[] { ExampleArgumentType.Integer },
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/SmallOrLarge.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/SmallOrLarge.cs	(revision 15189)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/SmallOrLarge.cs	(revision 15334)
@@ -19,7 +19,8 @@
         Name = Name,
         Description = Description,
+        ProgramExecutionBudget = 30000000,
         Examples = CloneExamples(),
         BestResult = 0,
-        WorstResult = 5,
+        WorstResult = 5000,
         InputArgumentTypes = new[] { ExampleArgumentType.Integer },
         OutputArgumentTypes = new[] { ExampleArgumentType.Print },
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Smallest.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Smallest.cs	(revision 15189)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Smallest.cs	(revision 15334)
@@ -17,12 +17,13 @@
         Name = Name,
         Description = Description,
+        ProgramExecutionBudget = 20000000,
         Examples = CloneExamples(),
         BestResult = 0,
-        WorstResult = 100,
+        WorstResult = 1,
         InputArgumentTypes = new[] { ExampleArgumentType.Integer, ExampleArgumentType.Integer, ExampleArgumentType.Integer, ExampleArgumentType.Integer },
-        OutputArgumentTypes = new[] { ExampleArgumentType.Integer },
+        OutputArgumentTypes = new[] { ExampleArgumentType.Print },
         TrainingCount = 100,
         TestCount = 1000,
-        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.Print,
         MaxSize = 200,
         EvalLimit = 200,
@@ -40,4 +41,6 @@
         OutputArgs = output,
         InputInteger = ExampleArgumentConverter.ConvertIntegers(input),
+        OutputPrint = output[0],
+        // Helper
         OutputInteger = ExampleArgumentConverter.ConvertIntegers(output[0]),
       };
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/StringDifferences.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/StringDifferences.cs	(revision 15189)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/StringDifferences.cs	(revision 15334)
@@ -6,5 +6,5 @@
     private const string name = "String Differences - Hard";
     private const string fileName = "StringDifferences.csv";
-    private const string description = "Given 2 strings (without whitespace) as input, find the indices at which the strings have different characters, stopping at the end of the shorter one.For each such index, print a line containing the index as well as the character in each string. For example, if the strings are “dealer” and “dollars”, the program should print: 1 e o, 2 a l, 4 e a";
+    private const string description = "Given 2 strings (without whitespace) as input, find the indices at which the strings have different characters, stopping at the end of the shorter one. For each such index, print a line containing the index as well as the character in each string. For example, if the strings are “dealer” and “dollars”, the program should print: 1 e o, 2 a l, 4 e a";
 
     protected override string FileName { get { return fileName; } }
@@ -18,7 +18,8 @@
         Name = Name,
         Description = Description,
+        ProgramExecutionBudget = 60000000,
         Examples = CloneExamples(),
         BestResult = 0,
-        WorstResult = 100,
+        WorstResult = 5000,
         InputArgumentTypes = new[] { ExampleArgumentType.String, ExampleArgumentType.String },
         OutputArgumentTypes = new[] { ExampleArgumentType.Print },
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/StringLengthsBackwards.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/StringLengthsBackwards.cs	(revision 15189)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/StringLengthsBackwards.cs	(revision 15334)
@@ -14,10 +14,11 @@
 
     public override ProblemData CreateProblemData() {
-      return new ProblemData(ProblemType.StringDifferences) {
+      return new ProblemData(ProblemType.StringLengthsBackwards) {
         Name = Name,
         Description = Description,
+        ProgramExecutionBudget = 30000000,
         Examples = CloneExamples(),
         BestResult = 0,
-        WorstResult = 200,
+        WorstResult = 5000,
         InputArgumentTypes = new[] { ExampleArgumentType.StringVector },
         OutputArgumentTypes = new[] { ExampleArgumentType.Print },
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/SumOfSquares.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/SumOfSquares.cs	(revision 15189)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/SumOfSquares.cs	(revision 15334)
@@ -17,7 +17,8 @@
         Name = Name,
         Description = Description,
+        ProgramExecutionBudget = 15000000,
         Examples = CloneExamples(),
         BestResult = 0,
-        WorstResult = 338350,
+        WorstResult = 1000000000, // 338350,
         InputArgumentTypes = new[] { ExampleArgumentType.Integer },
         OutputArgumentTypes = new[] { ExampleArgumentType.Integer },
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/SuperAnagrams.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/SuperAnagrams.cs	(revision 15189)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/SuperAnagrams.cs	(revision 15334)
@@ -19,4 +19,5 @@
         Name = Name,
         Description = Description,
+        ProgramExecutionBudget = 60000000,
         Examples = CloneExamples(),
         BestResult = 0,
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Syllables.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Syllables.cs	(revision 15189)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/Syllables.cs	(revision 15334)
@@ -1,3 +1,5 @@
 ﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  using System;
+
   using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Char;
   using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Integer;
@@ -19,7 +21,8 @@
         Name = Name,
         Description = Description,
+        ProgramExecutionBudget = 30000000,
         Examples = CloneExamples(),
         BestResult = 0,
-        WorstResult = 100,
+        WorstResult = 5000,
         InputArgumentTypes = new[] { ExampleArgumentType.String },
         OutputArgumentTypes = new[] { ExampleArgumentType.Print },
@@ -50,4 +53,8 @@
 
     protected override Example ParseExample(string[] input, string[] output) {
+      long numberOfSyllables;
+      if (!GetNumberOfSyllables(output[0], out numberOfSyllables))
+        throw new InvalidOperationException("Unable to parse number of syllables.");
+
       return new Example {
         InputArgs = input,
@@ -55,5 +62,20 @@
         InputString = input,
         OutputPrint = output[0],
+
+        // help
+        OutputInteger = new[] { numberOfSyllables }
       };
+    }
+
+    public static bool GetNumberOfSyllables(string str, out long numberOfSyllables) {
+      if (str.Length == 0) {
+        numberOfSyllables = 0;
+        return false;
+      }
+
+      var lastIndex = str.Length - 1;
+      var lastCharStr = str[lastIndex].ToString();
+
+      return long.TryParse(lastCharStr, out numberOfSyllables);
     }
   }
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/VectorAverage.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/VectorAverage.cs	(revision 15189)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/VectorAverage.cs	(revision 15334)
@@ -15,7 +15,8 @@
         Name = Name,
         Description = Description,
+        ProgramExecutionBudget = 30000000,
         Examples = CloneExamples(),
         BestResult = 0,
-        WorstResult = 1000,
+        WorstResult = 1000000,
         InputArgumentTypes = new[] { ExampleArgumentType.FloatVector },
         OutputArgumentTypes = new[] { ExampleArgumentType.Float },
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/VectorSummed.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/VectorSummed.cs	(revision 15189)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/VectorSummed.cs	(revision 15334)
@@ -18,7 +18,8 @@
         Name = Name,
         Description = Description,
+        ProgramExecutionBudget = 45000000,
         Examples = CloneExamples(),
         BestResult = 0,
-        WorstResult = 100000,
+        WorstResult = 1000000000,
         InputArgumentTypes = new[] { ExampleArgumentType.IntegerVector, ExampleArgumentType.IntegerVector },
         OutputArgumentTypes = new[] { ExampleArgumentType.IntegerVector },
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/WallisPi.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/WallisPi.cs	(revision 15189)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/WallisPi.cs	(revision 15334)
@@ -6,5 +6,5 @@
     private const string name = "Wallis Pi - Hard";
     private const string fileName = "WallisPi.csv";
-    private const string description = " John Wallis gave a infinite product that converges to π/4. Given an integer input n, compute an approximation of this product out to n terms.Results are rounded to 5 decimal place";
+    private const string description = " John Wallis gave a infinite product that converges to π/4. Given an integer input n, compute an approximation of this product out to n terms. Results are rounded to 5 decimal places.";
 
     protected override string FileName { get { return fileName; } }
@@ -18,7 +18,8 @@
         Name = Name,
         Description = Description,
+        ProgramExecutionBudget = 45000000,
         Examples = CloneExamples(),
         BestResult = 0,
-        WorstResult = 1,
+        WorstResult = 1000000,
         InputArgumentTypes = new[] { ExampleArgumentType.Integer },
         OutputArgumentTypes = new[] { ExampleArgumentType.Float },
@@ -28,4 +29,5 @@
         MaxSize = 600,
         EvalLimit = 8000,
+        FloatStringFormat = "N5",
         ErcOptions = {
           ErcProbability = 0.05,
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/WordStats.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/WordStats.cs	(revision 15189)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/WordStats.cs	(revision 15334)
@@ -1,3 +1,6 @@
 ﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  using System;
+  using System.Linq;
+
   using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Char;
   using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Integer;
@@ -20,7 +23,8 @@
         Name = Name,
         Description = Description,
+        ProgramExecutionBudget = 30000000,
         Examples = CloneExamples(),
         BestResult = 0,
-        WorstResult = 1000,
+        WorstResult = 10000,
         InputArgumentTypes = new[] { ExampleArgumentType.String },
         OutputArgumentTypes = new[] { ExampleArgumentType.Print },
@@ -30,6 +34,7 @@
         MaxSize = 1000,
         EvalLimit = 6000,
+        FloatStringFormat = "0.0#########",
         ErcOptions = {
-          ErcProbability = 0.05,
+        ErcProbability = 0.05,
           IntegerErcOptions = new IntegerErcOptions(
             new IntegerRangeErc(-100, 100)),
@@ -45,10 +50,57 @@
 
     protected override Example ParseExample(string[] input, string[] output) {
+      long numberOfSentences;
+      if (!GetNumberOfSentences(output[0], out numberOfSentences))
+        throw new InvalidOperationException("Unable to find or parse line with number of sentences.");
+
+      double averageSentenceLength;
+      if (!GetAverageSentenceLength(output[0], out averageSentenceLength))
+        throw new InvalidOperationException("Unable to find line or parse with average sentence length.");
+
       return new Example {
         InputArgs = input,
         OutputArgs = output,
         InputString = input,
-        OutputPrint = output[0]
+        OutputPrint = output[0],
+
+        // help
+        OutputInteger = new[] { numberOfSentences },
+        OutputFloat = new[] { averageSentenceLength }
       };
+    }
+
+    public static bool GetNumberOfSentences(string str, out long numberOfSentences) {
+      var lines = str.Split('\n');
+      var requiredLineIndex = lines.Length - 2;
+      numberOfSentences = 0;
+
+      if (requiredLineIndex < 0)
+        return false;
+
+      var line = lines[requiredLineIndex];
+      var numberOfSentencesStr = line.Split(' ').Last();
+
+
+      if (!long.TryParse(numberOfSentencesStr, out numberOfSentences))
+        return false;
+
+      return true;
+    }
+
+    public static bool GetAverageSentenceLength(string str, out double averageSentenceLength) {
+      var lines = str.Split('\n');
+      var requiredLineIndex = lines.Length - 1;
+      averageSentenceLength = 0;
+
+      if (requiredLineIndex < 0)
+        return false;
+
+      var line = lines[requiredLineIndex];
+      var averageSentenceLengthStr = line.Split(' ').Last();
+
+      if (!double.TryParse(averageSentenceLengthStr, out averageSentenceLength))
+        return false;
+
+      return true;
     }
   }
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/XWordLines.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/XWordLines.cs	(revision 15189)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/XWordLines.cs	(revision 15334)
@@ -1,3 +1,5 @@
 ﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  using System.Linq;
+
   using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Char;
   using HeuristicLab.Problems.ProgramSynthesis.Base.Erc.Integer;
@@ -6,5 +8,5 @@
     private const string name = "X-Word Lines - Hard";
     private const string fileName = "XWordLines.csv";
-    private const string description = "Given an integer X and a string that can contain spaces and newlines, print the string with exactly X words per line.The last line may have fewer than X words.";
+    private const string description = "Given an integer X and a string that can contains spaces and newlines, print the string with exactly X words per line. The last line may have fewer than X words.";
 
     protected override string FileName { get { return fileName; } }
@@ -18,7 +20,8 @@
         Name = Name,
         Description = Description,
+        ProgramExecutionBudget = 45000000,
         Examples = CloneExamples(),
         BestResult = 0,
-        WorstResult = 100,
+        WorstResult = 5000,
         InputArgumentTypes = new[] { ExampleArgumentType.Integer, ExampleArgumentType.String },
         OutputArgumentTypes = new[] { ExampleArgumentType.Print },
@@ -43,4 +46,6 @@
         InputString = new[] { input[0] },
         OutputPrint = output[0],
+        // Helper
+        OutputInteger = new[] { input[0].Split(' ', '\n').LongCount(x => !string.IsNullOrWhiteSpace(x)) }
       };
     }
