Index: trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Classification/CSV/ClassifiactionCSVInstanceProvider.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Classification/CSV/ClassifiactionCSVInstanceProvider.cs	(revision 9462)
+++ trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Classification/CSV/ClassifiactionCSVInstanceProvider.cs	(revision 9608)
@@ -59,5 +59,5 @@
       TableFileParser csvFileParser = new TableFileParser();
 
-      csvFileParser.Parse(path);
+      csvFileParser.Parse(path, csvFileParser.AreColumnNamesInFirstLine(path));
 
       Dataset dataset = new Dataset(csvFileParser.VariableNames, csvFileParser.Values);
Index: trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Classification/ResourceClassificationInstanceProvider.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Classification/ResourceClassificationInstanceProvider.cs	(revision 9462)
+++ trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Classification/ResourceClassificationInstanceProvider.cs	(revision 9608)
@@ -49,5 +49,5 @@
         TableFileParser csvFileParser = new TableFileParser();
         using (Stream stream = instancesZipFile.GetInputStream(entry)) {
-          csvFileParser.Parse(stream, numberFormat, dateFormat, separator);
+          csvFileParser.Parse(stream, numberFormat, dateFormat, separator, csvFileParser.AreColumnNamesInFirstLine(stream));
         }
 
Index: trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Clustering/CSV/ClusteringCSVInstanceProvider.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Clustering/CSV/ClusteringCSVInstanceProvider.cs	(revision 9462)
+++ trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Clustering/CSV/ClusteringCSVInstanceProvider.cs	(revision 9608)
@@ -58,5 +58,5 @@
     public override IClusteringProblemData ImportData(string path) {
       var csvFileParser = new TableFileParser();
-      csvFileParser.Parse(path);
+      csvFileParser.Parse(path, csvFileParser.AreColumnNamesInFirstLine(path));
 
       Dataset dataset = new Dataset(csvFileParser.VariableNames, csvFileParser.Values);
Index: trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/DataAnalysisCSVFormat.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/DataAnalysisCSVFormat.cs	(revision 9462)
+++ trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/DataAnalysisCSVFormat.cs	(revision 9608)
@@ -27,4 +27,5 @@
     public NumberFormatInfo NumberFormatInfo { get; set; }
     public DateTimeFormatInfo DateTimeFormatInfo { get; set; }
+    public bool VariableNamesAvailable { get; set; }
   }
 }
Index: trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/DataAnalysisInstanceProvider.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/DataAnalysisInstanceProvider.cs	(revision 9462)
+++ trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/DataAnalysisInstanceProvider.cs	(revision 9608)
@@ -38,5 +38,5 @@
     public TData ImportData(string path, ImportType type, DataAnalysisCSVFormat csvFormat) {
       TableFileParser csvFileParser = new TableFileParser();
-      csvFileParser.Parse(path, csvFormat.NumberFormatInfo, csvFormat.DateTimeFormatInfo, csvFormat.Separator);
+      csvFileParser.Parse(path, csvFormat.NumberFormatInfo, csvFormat.DateTimeFormatInfo, csvFormat.Separator, csvFormat.VariableNamesAvailable);
       return ImportData(path, type, csvFileParser);
     }
Index: trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/CSV/RegressionCSVInstanceProvider.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/CSV/RegressionCSVInstanceProvider.cs	(revision 9462)
+++ trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/CSV/RegressionCSVInstanceProvider.cs	(revision 9608)
@@ -57,5 +57,5 @@
     public override IRegressionProblemData ImportData(string path) {
       TableFileParser csvFileParser = new TableFileParser();
-      csvFileParser.Parse(path);
+      csvFileParser.Parse(path, csvFileParser.AreColumnNamesInFirstLine(path));
 
       Dataset dataset = new Dataset(csvFileParser.VariableNames, csvFileParser.Values);
Index: trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/ResourceRegressionInstanceProvider.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/ResourceRegressionInstanceProvider.cs	(revision 9462)
+++ trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/ResourceRegressionInstanceProvider.cs	(revision 9608)
@@ -49,5 +49,5 @@
         TableFileParser csvFileParser = new TableFileParser();
         using (Stream stream = instancesZipFile.GetInputStream(entry)) {
-          csvFileParser.Parse(stream, numberFormat, dateFormat, separator);
+          csvFileParser.Parse(stream, numberFormat, dateFormat, separator, csvFileParser.AreColumnNamesInFirstLine(stream));
         }
 
Index: trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/TableFileParser.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/TableFileParser.cs	(revision 9462)
+++ trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/TableFileParser.cs	(revision 9608)
@@ -75,14 +75,47 @@
     }
 
+    public bool AreColumnNamesInFirstLine(string fileName) {
+      NumberFormatInfo numberFormat;
+      DateTimeFormatInfo dateTimeFormatInfo;
+      char separator;
+      DetermineFileFormat(fileName, out numberFormat, out dateTimeFormatInfo, out separator);
+      using (var stream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) {
+        return AreColumnNamesInFirstLine(stream, numberFormat, dateTimeFormatInfo, separator);
+      }
+    }
+
+    public bool AreColumnNamesInFirstLine(Stream stream) {
+      NumberFormatInfo numberFormat = NumberFormatInfo.InvariantInfo;
+      DateTimeFormatInfo dateTimeFormatInfo = DateTimeFormatInfo.InvariantInfo;
+      char separator = ',';
+      return AreColumnNamesInFirstLine(stream, numberFormat, dateTimeFormatInfo, separator);
+    }
+
+    public bool AreColumnNamesInFirstLine(string fileName, NumberFormatInfo numberFormat,
+                                         DateTimeFormatInfo dateTimeFormatInfo, char separator) {
+      using (var stream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) {
+        return AreColumnNamesInFirstLine(stream, numberFormat, dateTimeFormatInfo, separator);
+      }
+    }
+
+    public bool AreColumnNamesInFirstLine(Stream stream, NumberFormatInfo numberFormat,
+                                          DateTimeFormatInfo dateTimeFormatInfo, char separator) {
+      using (StreamReader reader = new StreamReader(stream)) {
+        tokenizer = new Tokenizer(reader, numberFormat, dateTimeFormatInfo, separator);
+        return tokenizer.Peek().type != TokenTypeEnum.Double;
+      }
+    }
+
     /// <summary>
     /// Parses a file and determines the format first
     /// </summary>
     /// <param name="fileName">file which is parsed</param>
-    public void Parse(string fileName) {
+    /// <param name="columnNamesInFirstLine"></param>
+    public void Parse(string fileName, bool columnNamesInFirstLine) {
       NumberFormatInfo numberFormat;
       DateTimeFormatInfo dateTimeFormatInfo;
       char separator;
-      DetermineFileFormat(new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite), out numberFormat, out dateTimeFormatInfo, out separator);
-      Parse(new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite), numberFormat, dateTimeFormatInfo, separator);
+      DetermineFileFormat(fileName, out numberFormat, out dateTimeFormatInfo, out separator);
+      Parse(new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite), numberFormat, dateTimeFormatInfo, separator, columnNamesInFirstLine);
     }
 
@@ -94,6 +127,9 @@
     /// <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, FileAccess.Read, FileShare.ReadWrite), numberFormat, dateTimeFormatInfo, separator);
+    /// <param name="columnNamesInFirstLine"></param>
+    public void Parse(string fileName, NumberFormatInfo numberFormat, DateTimeFormatInfo dateTimeFormatInfo, char separator, bool columnNamesInFirstLine) {
+      using (var stream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) {
+        Parse(stream, numberFormat, dateTimeFormatInfo, separator, columnNamesInFirstLine);
+      }
     }
 
@@ -102,9 +138,10 @@
     /// </summary>
     /// <param name="stream">stream which is parsed</param>
-    public void Parse(Stream stream) {
+    /// <param name="columnNamesInFirstLine"></param>
+    public void Parse(Stream stream, bool columnNamesInFirstLine) {
       NumberFormatInfo numberFormat = NumberFormatInfo.InvariantInfo;
       DateTimeFormatInfo dateTimeFormatInfo = DateTimeFormatInfo.InvariantInfo;
       char separator = ',';
-      Parse(stream, numberFormat, dateTimeFormatInfo, separator);
+      Parse(stream, numberFormat, dateTimeFormatInfo, separator, columnNamesInFirstLine);
     }
 
@@ -116,9 +153,10 @@
     /// <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) {
+    /// <param name="columnNamesInFirstLine"></param>
+    public void Parse(Stream stream, NumberFormatInfo numberFormat, DateTimeFormatInfo dateTimeFormatInfo, char separator, bool columnNamesInFirstLine) {
       using (StreamReader reader = new StreamReader(stream)) {
         tokenizer = new Tokenizer(reader, numberFormat, dateTimeFormatInfo, separator);
         // parse the file
-        Parse();
+        Parse(columnNamesInFirstLine);
       }
 
@@ -340,5 +378,5 @@
         if (strToken.Equals(INTERNAL_SEPARATOR)) {
           return SeparatorToken;
-        } else if (double.TryParse(strToken, NumberStyles.Float, numberFormatInfo, out token.doubleValue)) {
+        } else if (double.TryParse(strToken, NumberStyles.Float | NumberStyles.AllowTrailingSign, numberFormatInfo, out token.doubleValue)) {
           token.type = TokenTypeEnum.Double;
           return token;
@@ -372,7 +410,12 @@
 
     #region parsing
-    private void Parse() {
-      ParseVariableNames();
-      if (!tokenizer.HasNext()) Error("Couldn't parse data values. Probably because of incorrect number format (the parser expects english number format with a '.' as decimal separator).", "", tokenizer.CurrentLineNumber);
+    private void Parse(bool columnNamesInFirstLine) {
+      if (columnNamesInFirstLine) {
+        ParseVariableNames();
+        if (!tokenizer.HasNext())
+          Error(
+            "Couldn't parse data values. Probably because of incorrect number format (the parser expects english number format with a '.' as decimal separator).",
+            "", tokenizer.CurrentLineNumber);
+      }
       ParseValues();
       if (rowValues.Count == 0) Error("Couldn't parse data values. Probably because of incorrect number format (the parser expects english number format with a '.' as decimal separator).", "", tokenizer.CurrentLineNumber);
@@ -423,7 +466,4 @@
 
     private void ParseVariableNames() {
-      //if first token is double no variables names are given
-      if (tokenizer.Peek().type == TokenTypeEnum.Double) return;
-
       // the first line must contain variable names
       List<Token> tokens = new List<Token>();
Index: trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/TimeSeries/CSV/TimeSeriesPrognosisCSVInstanceProvider.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/TimeSeries/CSV/TimeSeriesPrognosisCSVInstanceProvider.cs	(revision 9462)
+++ trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/TimeSeries/CSV/TimeSeriesPrognosisCSVInstanceProvider.cs	(revision 9608)
@@ -57,5 +57,5 @@
     public override ITimeSeriesPrognosisProblemData ImportData(string path) {
       TableFileParser csvFileParser = new TableFileParser();
-      csvFileParser.Parse(path);
+      csvFileParser.Parse(path, csvFileParser.AreColumnNamesInFirstLine(path));
 
       Dataset dataset = new Dataset(csvFileParser.VariableNames, csvFileParser.Values);
