Index: branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/Generator/RegressionBenchmark.cs
===================================================================
--- branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/Generator/RegressionBenchmark.cs	(revision 7025)
+++ branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/Generator/RegressionBenchmark.cs	(revision 7044)
@@ -57,32 +57,5 @@
     }
 
-    protected abstract List<double> CalculateFunction(List<List<double>> data);
-
-    protected abstract List<List<double>> GenerateInput(List<List<double>> dataList);
-
-    public IDataAnalysisProblemData GenerateProblemData() {
-      List<string> varNames = new List<string>();
-      varNames.Add(this.TargetVariable);
-      varNames.AddRange(InputVariable);
-
-      List<List<double>> dataList = GenerateInput(new List<List<double>>());
-
-      dataList.Insert(0, CalculateFunction(dataList));
-
-      Dataset dataset = new Dataset(varNames, dataList);
-
-      RegressionProblemData problemData = new RegressionProblemData(dataset, dataset.DoubleVariables.Skip(1), dataset.DoubleVariables.First());
-
-      problemData.Name = "Data generated for benchmark problem \"" + this.Name + "\"";
-      problemData.Description = this.Description;
-
-      problemData.TestPartition.Start = this.TestPartition.Start;
-      problemData.TestPartition.End = this.TestPartition.End;
-
-      problemData.TrainingPartition.Start = this.TrainingPartition.Start;
-      problemData.TrainingPartition.End = this.TrainingPartition.End;
-
-      return problemData;
-    }
+    public abstract IDataAnalysisProblemData GenerateProblemData();
 
     public static List<double> GenerateSteps(DoubleRange range, double stepWidth) {
Index: branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/Generator/RegressionRealWorldBenchmark.cs
===================================================================
--- branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/Generator/RegressionRealWorldBenchmark.cs	(revision 7044)
+++ branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/Generator/RegressionRealWorldBenchmark.cs	(revision 7044)
@@ -0,0 +1,91 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Collections;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using HeuristicLab.Common;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public abstract class RegressionRealWorldBenchmark : RegressionBenchmark {
+
+    protected TableFileParser csvFileParser;
+
+    protected RegressionRealWorldBenchmark() { }
+    protected RegressionRealWorldBenchmark(RegressionRealWorldBenchmark original, Cloner cloner)
+      : base(original, cloner) {
+    }
+
+    protected abstract List<IList> GetData();
+
+    public override IDataAnalysisProblemData GenerateProblemData() {
+      List<IList> dataList = GetData();
+
+      List<string> varNames = new List<string>();
+      varNames.Add(this.TargetVariable);
+      varNames.AddRange(InputVariable);
+
+      Dataset dataset = new Dataset(varNames, dataList);
+
+      RegressionProblemData problemData = new RegressionProblemData(dataset, dataset.DoubleVariables.Skip(1), dataset.DoubleVariables.First());
+
+      problemData.Name = "Data generated for benchmark problem \"" + this.Name + "\"";
+      problemData.Description = this.Description;
+
+      problemData.TestPartition.Start = this.TestPartition.Start;
+      problemData.TestPartition.End = this.TestPartition.End;
+
+      problemData.TrainingPartition.Start = this.TrainingPartition.Start;
+      problemData.TrainingPartition.End = this.TrainingPartition.End;
+
+      return problemData;
+    }
+
+    #region Helpers
+    protected static TableFileParser getParserForFile(string fileName) {
+      Assembly assembly = Assembly.GetExecutingAssembly();
+      string file = assembly.GetManifestResourceNames().Where(x => x.EndsWith(fileName)).First();
+
+      string path = Path.GetTempFileName();
+
+      using (Stream stream = assembly.GetManifestResourceStream(file)) {
+        WriteStreamToTempFile(stream, path);
+      }
+
+      TableFileParser csvFileParser = new TableFileParser();
+      csvFileParser.Parse(path);
+
+      return csvFileParser;
+    }
+
+    private static void WriteStreamToTempFile(Stream stream, string path) {
+      using (FileStream output = new FileStream(path, FileMode.Create, FileAccess.Write)) {
+        int cnt = 0;
+        byte[] buffer = new byte[32 * 1024];
+        while ((cnt = stream.Read(buffer, 0, buffer.Length)) != 0)
+          output.Write(buffer, 0, cnt);
+      }
+    }
+    #endregion
+  }
+}
Index: branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/Generator/RegressionToyBenchmark.cs
===================================================================
--- branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/Generator/RegressionToyBenchmark.cs	(revision 7044)
+++ branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Benchmarks/3.4/Generator/RegressionToyBenchmark.cs	(revision 7044)
@@ -0,0 +1,63 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Collections.Generic;
+using System.Linq;
+using HeuristicLab.Common;
+
+namespace HeuristicLab.Problems.DataAnalysis.Benchmarks {
+  public abstract class RegressionToyBenchmark : RegressionBenchmark {
+
+    protected RegressionToyBenchmark() { }
+    protected RegressionToyBenchmark(RegressionToyBenchmark original, Cloner cloner)
+      : base(original, cloner) {
+    }
+
+    protected abstract List<List<double>> GenerateInput();
+
+    protected abstract List<double> GenerateTarget(List<List<double>> data);
+
+    public override IDataAnalysisProblemData GenerateProblemData() {
+      List<string> varNames = new List<string>();
+      varNames.Add(this.TargetVariable);
+      varNames.AddRange(this.InputVariable);
+
+      List<List<double>> dataList = GenerateInput();
+
+      dataList.Insert(0, GenerateTarget(dataList));
+
+      Dataset dataset = new Dataset(varNames, dataList);
+
+      RegressionProblemData problemData = new RegressionProblemData(dataset, dataset.DoubleVariables.Skip(1), dataset.DoubleVariables.First());
+
+      problemData.Name = "Data generated for benchmark problem \"" + this.Name + "\"";
+      problemData.Description = this.Description;
+
+      problemData.TestPartition.Start = this.TestPartition.Start;
+      problemData.TestPartition.End = this.TestPartition.End;
+
+      problemData.TrainingPartition.Start = this.TrainingPartition.Start;
+      problemData.TrainingPartition.End = this.TrainingPartition.End;
+
+      return problemData;
+    }
+  }
+}
