Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/PigLatin.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/PigLatin.cs	(revision 14727)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problem.ProgramSynthesis.BenchmarkSuite/Problems/PigLatin.cs	(revision 14875)
@@ -1,25 +1,56 @@
-﻿//namespace HeuristicLab.BenchmarkSuite.Problems {
-//  using HeuristicLab.BenchmarkSuite.ProblemData;
+﻿namespace HeuristicLab.BenchmarkSuite.Problems {
+  public class PigLatin : BenchmarkSuiteDataDescriptor {
+    private const string name = "Pig Latin";
+    private const string fileName = "PigLatin.csv";
+    private const string description = "Given a string containing lowercase words separated by single spaces, print the string with each word translated to pig Latin.Specifically, if a word starts with a vowel, it should have“ay”added to its end; otherwise, the first letter is moved to the end of the word, followed by “ay”.";
 
-//  public class PigLatin : BenchmarkSuiteDataDescriptor<string, string> {
-//    private const string displayMame = "Pig Latin";
-//    private const string description = "Given a string containing lowercase words separated by single spaces, print the string with each word translated to pig Latin.Specifically, if a word starts with a vowel, it should have“ay”added to its end; otherwise, the first letter is moved to the end of the word, followed by “ay”";
+    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 1; } }
+    protected override int OutputArgumentCount { get { return 1; } }
 
-//    public override string Name { get { return displayMame; } }
-//    public override string Description { get { return description; } }
-//    protected override int InputArgumentCount { get { return 1; } }
-//    protected override int OutputArgumentCount { get { return 1; } }
+    public override ProblemData CreateProblemData() {
+      return new ProblemData {
+        Name = Name,
+        Description = Description,
+        Examples = CloneExamples(),
+        BestResult = 0,
+        WorstResult = 100,
+        InputArgumentTypes = new[] { ExampleArgumentType.String },
+        OutputArgumentTypes = new[] { ExampleArgumentType.String },
+        TrainingCount = 200,
+        TestCount = 1000,
+        EnabledDataTypes = DataTypes.Exec | DataTypes.Integer | DataTypes.Boolean | DataTypes.Char | DataTypes.String,
+        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,
+          }
+        }
+      };
+    }
 
-//    public override string ConvertInput(string[] input) {
-//      return input[0];
-//    }
-
-//    public override string ConvertOutput(string[] output) {
-//      return output[0];
-//    }
-
-//    public override IPushData CreatePushData(Example<string, string>[] training, Example<string, string>[] test) {
-//      return new PigLatinPushData(training, test);
-//    }
-//  }
-//}
+    protected override Example ParseExample(string[] input, string[] output) {
+      return new Example {
+        InputArgs = input,
+        OutputArgs = output,
+        InputString = input,
+        OutputString = output,
+      };
+    }
+  }
+}
