Index: trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Classification/ClassificationInstanceProvider.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Classification/ClassificationInstanceProvider.cs	(revision 7849)
+++ trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Classification/ClassificationInstanceProvider.cs	(revision 7851)
@@ -23,5 +23,4 @@
 using System.Collections;
 using System.Collections.Generic;
-using System.Globalization;
 using System.IO;
 using System.Linq;
@@ -32,25 +31,7 @@
   public abstract class ClassificationInstanceProvider : IProblemInstanceProvider<IClassificationProblemData> {
     public IClassificationProblemData LoadData(string path) {
-      NumberFormatInfo numberFormat;
-      DateTimeFormatInfo dateFormat;
-      char separator;
-      TableFileParser.DetermineFileFormat(new FileStream(path, FileMode.Open), out numberFormat, out dateFormat, out separator);
-
-      IClassificationProblemData claData = LoadData(new FileStream(path, FileMode.Open), numberFormat, dateFormat, separator);
-      int pos = path.LastIndexOf('\\');
-      if (pos < 0)
-        claData.Name = path;
-      else {
-        pos++;
-        claData.Name = path.Substring(pos, path.Length - pos);
-      }
-
-      return claData;
-    }
-
-    protected IClassificationProblemData LoadData(Stream stream, NumberFormatInfo numberFormat, DateTimeFormatInfo dateFormat, char separator) {
       TableFileParser csvFileParser = new TableFileParser();
 
-      csvFileParser.Parse(stream, numberFormat, dateFormat, separator);
+      csvFileParser.Parse(path);
 
       Dataset dataset = new Dataset(csvFileParser.VariableNames, csvFileParser.Values);
@@ -65,4 +46,12 @@
       claData.TestPartition.Start = trainingPartEnd;
       claData.TestPartition.End = csvFileParser.Rows;
+      int pos = path.LastIndexOf('\\');
+      if (pos < 0)
+        claData.Name = path;
+      else {
+        pos++;
+        claData.Name = path.Substring(pos, path.Length - pos);
+      }
+
       return claData;
     }
Index: trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Classification/ResourceClassificationInstanceProvider.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Classification/ResourceClassificationInstanceProvider.cs	(revision 7849)
+++ trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Classification/ResourceClassificationInstanceProvider.cs	(revision 7851)
@@ -64,8 +64,21 @@
         }
 
-        IClassificationProblemData claData;
+        TableFileParser csvFileParser = new TableFileParser();
         using (Stream stream = instancesZipFile.GetInputStream(entry)) {
-          claData = LoadData(stream, numberFormat, dateFormat, separator);
+          csvFileParser.Parse(stream, numberFormat, dateFormat, separator);
         }
+
+        Dataset dataset = new Dataset(csvFileParser.VariableNames, csvFileParser.Values);
+        string targetVar = csvFileParser.VariableNames.Last();
+        IEnumerable<string> allowedInputVars = csvFileParser.VariableNames.Where(x => !x.Equals(targetVar));
+
+        ClassificationProblemData claData = new ClassificationProblemData(dataset, allowedInputVars, targetVar);
+
+        int trainingPartEnd = csvFileParser.Rows * 2 / 3;
+        claData.TrainingPartition.Start = 0;
+        claData.TrainingPartition.End = trainingPartEnd;
+        claData.TestPartition.Start = trainingPartEnd;
+        claData.TestPartition.End = csvFileParser.Rows;
+
         claData.Name = descriptor.Name;
         claData.Description = descriptor.Description;
Index: trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/RegressionInstanceProvider.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/RegressionInstanceProvider.cs	(revision 7849)
+++ trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/RegressionInstanceProvider.cs	(revision 7851)
@@ -23,5 +23,4 @@
 using System.Collections;
 using System.Collections.Generic;
-using System.Globalization;
 using System.IO;
 using System.Linq;
@@ -33,10 +32,18 @@
 
     public IRegressionProblemData LoadData(string path) {
-      NumberFormatInfo numberFormat;
-      DateTimeFormatInfo dateFormat;
-      char separator;
-      TableFileParser.DetermineFileFormat(path, out numberFormat, out dateFormat, out separator);
+      TableFileParser csvFileParser = new TableFileParser();
+      csvFileParser.Parse(path);
 
-      IRegressionProblemData regData = LoadData(new FileStream(path, FileMode.Open), numberFormat, dateFormat, separator);
+      Dataset dataset = new Dataset(csvFileParser.VariableNames, csvFileParser.Values);
+      string targetVar = csvFileParser.VariableNames.Last();
+      IEnumerable<string> allowedInputVars = csvFileParser.VariableNames.Where(x => !x.Equals(targetVar));
+
+      IRegressionProblemData regData = new RegressionProblemData(dataset, allowedInputVars, targetVar);
+
+      int trainingPartEnd = csvFileParser.Rows * 2 / 3;
+      regData.TrainingPartition.Start = 0;
+      regData.TrainingPartition.End = trainingPartEnd;
+      regData.TestPartition.Start = trainingPartEnd;
+      regData.TestPartition.End = csvFileParser.Rows;
 
       int pos = path.LastIndexOf('\\');
@@ -47,24 +54,4 @@
         regData.Name = path.Substring(pos, path.Length - pos);
       }
-      return regData;
-    }
-
-    protected IRegressionProblemData LoadData(Stream stream, NumberFormatInfo numberFormat, DateTimeFormatInfo dateFormat, char separator) {
-      TableFileParser csvFileParser = new TableFileParser();
-
-      csvFileParser.Parse(stream, numberFormat, dateFormat, separator);
-
-      Dataset dataset = new Dataset(csvFileParser.VariableNames, csvFileParser.Values);
-      string targetVar = csvFileParser.VariableNames.Last();
-      IEnumerable<string> allowedInputVars = csvFileParser.VariableNames.Where(x => !x.Equals(targetVar));
-
-      RegressionProblemData regData = new RegressionProblemData(dataset, allowedInputVars, targetVar);
-
-      int trainingPartEnd = csvFileParser.Rows * 2 / 3;
-      regData.TrainingPartition.Start = 0;
-      regData.TrainingPartition.End = trainingPartEnd;
-      regData.TestPartition.Start = trainingPartEnd;
-      regData.TestPartition.End = csvFileParser.Rows;
-
       return regData;
     }
Index: trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/ResourceRegressionInstanceProvider.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/ResourceRegressionInstanceProvider.cs	(revision 7849)
+++ trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/ResourceRegressionInstanceProvider.cs	(revision 7851)
@@ -64,8 +64,20 @@
         }
 
-        IRegressionProblemData regData;
+        TableFileParser csvFileParser = new TableFileParser();
         using (Stream stream = instancesZipFile.GetInputStream(entry)) {
-          regData = LoadData(stream, numberFormat, dateFormat, separator);
+          csvFileParser.Parse(stream, numberFormat, dateFormat, separator);
         }
+
+        Dataset dataset = new Dataset(csvFileParser.VariableNames, csvFileParser.Values);
+        string targetVar = csvFileParser.VariableNames.Last();
+        IEnumerable<string> allowedInputVars = csvFileParser.VariableNames.Where(x => !x.Equals(targetVar));
+
+        IRegressionProblemData regData = new RegressionProblemData(dataset, allowedInputVars, targetVar);
+
+        int trainingPartEnd = csvFileParser.Rows * 2 / 3;
+        regData.TrainingPartition.Start = 0;
+        regData.TrainingPartition.End = trainingPartEnd;
+        regData.TestPartition.Start = trainingPartEnd;
+        regData.TestPartition.End = csvFileParser.Rows;
 
         regData.Name = descriptor.Name;
Index: trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/TableFileParser.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/TableFileParser.cs	(revision 7849)
+++ trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/TableFileParser.cs	(revision 7851)
@@ -75,8 +75,45 @@
     }
 
+    /// <summary>
+    /// Parses a file and determines the format first
+    /// </summary>
+    /// <param name="fileName">file which is parsed</param>
+    public void Parse(string fileName) {
+      NumberFormatInfo numberFormat;
+      DateTimeFormatInfo dateTimeFormatInfo;
+      char separator;
+      DetermineFileFormat(new FileStream(fileName, FileMode.Open), out numberFormat, out dateTimeFormatInfo, out separator);
+      Parse(new FileStream(fileName, FileMode.Open), numberFormat, dateTimeFormatInfo, separator);
+    }
+
+    /// <summary>
+    /// Parses a file with the given formats
+    /// </summary>
+    /// <param name="fileName">file which is parsed</param>
+    /// <param name="numberFormat">Format of numbers</param>
+    /// <param name="dateTimeFormatInfo">Format of datetime</param>
+    /// <param name="separator">defines the separator</param>
     public void Parse(string fileName, NumberFormatInfo numberFormat, DateTimeFormatInfo dateTimeFormatInfo, char separator) {
       Parse(new FileStream(fileName, FileMode.Open), numberFormat, dateTimeFormatInfo, separator);
     }
 
+    /// <summary>
+    /// Takes a Stream and parses it with default format. NumberFormatInfo.InvariantInfo, DateTimeFormatInfo.InvariantInfo and separator = ','
+    /// </summary>
+    /// <param name="stream">stream which is parsed</param>
+    public void Parse(Stream stream) {
+      NumberFormatInfo numberFormat = NumberFormatInfo.InvariantInfo;
+      DateTimeFormatInfo dateTimeFormatInfo = DateTimeFormatInfo.InvariantInfo;
+      char separator = ',';
+      Parse(stream, numberFormat, dateTimeFormatInfo, separator);
+    }
+
+    /// <summary>
+    /// Parses a stream with the given formats.
+    /// </summary>
+    /// <param name="stream">Stream which is parsed</param>    
+    /// <param name="numberFormat">Format of numbers</param>
+    /// <param name="dateTimeFormatInfo">Format of datetime</param>
+    /// <param name="separator">defines the separator</param>
     public void Parse(Stream stream, NumberFormatInfo numberFormat, DateTimeFormatInfo dateTimeFormatInfo, char separator) {
       using (StreamReader reader = new StreamReader(stream)) {
