Index: /trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/ClassificationImportTypeDialog.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/ClassificationImportTypeDialog.Designer.cs	(revision 9607)
+++ /trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/ClassificationImportTypeDialog.Designer.cs	(revision 9608)
@@ -62,5 +62,5 @@
       // OkButton
       // 
-      this.OkButton.Location = new System.Drawing.Point(303, 464);
+      this.OkButton.Location = new System.Drawing.Point(303, 482);
       // 
       // TrainingTestTrackBar
@@ -78,5 +78,5 @@
       // CancelationButton
       // 
-      this.CancelationButton.Location = new System.Drawing.Point(384, 464);
+      this.CancelationButton.Location = new System.Drawing.Point(384, 482);
       // 
       // ProblemDataSettingsGroupBox
@@ -87,5 +87,5 @@
       this.ProblemDataSettingsGroupBox.Controls.Add(this.TargetVariableComboBox);
       this.ProblemDataSettingsGroupBox.Controls.Add(this.UniformDistributionOfClassesCheckbox);
-      this.ProblemDataSettingsGroupBox.Size = new System.Drawing.Size(447, 315);
+      this.ProblemDataSettingsGroupBox.Size = new System.Drawing.Size(447, 312);
       this.ProblemDataSettingsGroupBox.Controls.SetChildIndex(this.UniformDistributionOfClassesCheckbox, 0);
       this.ProblemDataSettingsGroupBox.Controls.SetChildIndex(this.TargetVariableComboBox, 0);
@@ -110,5 +110,5 @@
       // 
       this.PreviewDatasetMatrix.Location = new System.Drawing.Point(6, 134);
-      this.PreviewDatasetMatrix.Size = new System.Drawing.Size(435, 175);
+      this.PreviewDatasetMatrix.Size = new System.Drawing.Size(435, 172);
       // 
       // PreviewLabel
@@ -118,5 +118,5 @@
       // TargetVariableComboBox
       // 
-      this.TargetVariableComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+      this.TargetVariableComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
             | System.Windows.Forms.AnchorStyles.Right)));
       this.TargetVariableComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
@@ -178,5 +178,5 @@
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.ClientSize = new System.Drawing.Size(471, 499);
+      this.ClientSize = new System.Drawing.Size(471, 517);
       this.Name = "ClassificationImportTypeDialog";
       this.Text = "Classification CSV Import";
Index: /trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/DataAnalysisImportTypeDialog.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/DataAnalysisImportTypeDialog.Designer.cs	(revision 9607)
+++ /trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/DataAnalysisImportTypeDialog.Designer.cs	(revision 9608)
@@ -72,4 +72,5 @@
       this.PreviewDatasetMatrix = new HeuristicLab.Data.Views.StringConvertibleMatrixView();
       this.ToolTip = new System.Windows.Forms.ToolTip(this.components);
+      this.CheckboxColumnNames = new System.Windows.Forms.CheckBox();
       ((System.ComponentModel.ISupportInitialize)(this.TrainingTestTrackBar)).BeginInit();
       this.CSVSettingsGroupBox.SuspendLayout();
@@ -93,5 +94,5 @@
       this.OkButton.DialogResult = System.Windows.Forms.DialogResult.OK;
       this.OkButton.Enabled = false;
-      this.OkButton.Location = new System.Drawing.Point(303, 407);
+      this.OkButton.Location = new System.Drawing.Point(303, 422);
       this.OkButton.Name = "OkButton";
       this.OkButton.Size = new System.Drawing.Size(75, 23);
@@ -137,5 +138,5 @@
       this.CancelationButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
       this.CancelationButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
-      this.CancelationButton.Location = new System.Drawing.Point(384, 407);
+      this.CancelationButton.Location = new System.Drawing.Point(384, 422);
       this.CancelationButton.Name = "CancelationButton";
       this.CancelationButton.Size = new System.Drawing.Size(75, 23);
@@ -248,4 +249,5 @@
       this.CSVSettingsGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
             | System.Windows.Forms.AnchorStyles.Right)));
+      this.CSVSettingsGroupBox.Controls.Add(this.CheckboxColumnNames);
       this.CSVSettingsGroupBox.Controls.Add(this.DateTimeFormatInfoLabel);
       this.CSVSettingsGroupBox.Controls.Add(this.DecimalSeparatorInfoLabel);
@@ -259,5 +261,5 @@
       this.CSVSettingsGroupBox.Location = new System.Drawing.Point(12, 32);
       this.CSVSettingsGroupBox.Name = "CSVSettingsGroupBox";
-      this.CSVSettingsGroupBox.Size = new System.Drawing.Size(447, 105);
+      this.CSVSettingsGroupBox.Size = new System.Drawing.Size(447, 126);
       this.CSVSettingsGroupBox.TabIndex = 16;
       this.CSVSettingsGroupBox.TabStop = false;
@@ -313,7 +315,7 @@
       this.ProblemDataSettingsGroupBox.Controls.Add(this.TrainingTestTrackBar);
       this.ProblemDataSettingsGroupBox.Controls.Add(this.ShuffleDataCheckbox);
-      this.ProblemDataSettingsGroupBox.Location = new System.Drawing.Point(12, 143);
+      this.ProblemDataSettingsGroupBox.Location = new System.Drawing.Point(12, 164);
       this.ProblemDataSettingsGroupBox.Name = "ProblemDataSettingsGroupBox";
-      this.ProblemDataSettingsGroupBox.Size = new System.Drawing.Size(447, 258);
+      this.ProblemDataSettingsGroupBox.Size = new System.Drawing.Size(447, 252);
       this.ProblemDataSettingsGroupBox.TabIndex = 17;
       this.ProblemDataSettingsGroupBox.TabStop = false;
@@ -362,6 +364,17 @@
       this.PreviewDatasetMatrix.ShowRowsAndColumnsTextBox = false;
       this.PreviewDatasetMatrix.ShowStatisticalInformation = false;
-      this.PreviewDatasetMatrix.Size = new System.Drawing.Size(435, 144);
+      this.PreviewDatasetMatrix.Size = new System.Drawing.Size(435, 138);
       this.PreviewDatasetMatrix.TabIndex = 0;
+      // 
+      // CheckboxColumnNames
+      // 
+      this.CheckboxColumnNames.AutoSize = true;
+      this.CheckboxColumnNames.Location = new System.Drawing.Point(9, 103);
+      this.CheckboxColumnNames.Name = "CheckboxColumnNames";
+      this.CheckboxColumnNames.Size = new System.Drawing.Size(144, 17);
+      this.CheckboxColumnNames.TabIndex = 24;
+      this.CheckboxColumnNames.Text = "Column names in first line";
+      this.CheckboxColumnNames.UseVisualStyleBackColor = true;
+      this.CheckboxColumnNames.CheckedChanged += new System.EventHandler(this.CheckboxColumnNames_CheckedChanged);
       // 
       // DataAnalysisImportTypeDialog
@@ -370,5 +383,5 @@
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.ClientSize = new System.Drawing.Size(471, 442);
+      this.ClientSize = new System.Drawing.Size(471, 457);
       this.Controls.Add(this.ProblemDataSettingsGroupBox);
       this.Controls.Add(this.CSVSettingsGroupBox);
@@ -422,4 +435,5 @@
     protected System.Windows.Forms.Label ShuffelInfoLabel;
     protected System.Windows.Forms.ToolTip ToolTip;
+    private System.Windows.Forms.CheckBox CheckboxColumnNames;
   }
 }
Index: /trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/DataAnalysisImportTypeDialog.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/DataAnalysisImportTypeDialog.cs	(revision 9607)
+++ /trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/DataAnalysisImportTypeDialog.cs	(revision 9608)
@@ -68,5 +68,6 @@
           Separator = (char)SeparatorComboBox.SelectedValue,
           NumberFormatInfo = (NumberFormatInfo)DecimalSeparatorComboBox.SelectedValue,
-          DateTimeFormatInfo = (DateTimeFormatInfo)DateTimeFormatComboBox.SelectedValue
+          DateTimeFormatInfo = (DateTimeFormatInfo)DateTimeFormatComboBox.SelectedValue,
+          VariableNamesAvailable = CheckboxColumnNames.Checked
         };
       }
@@ -99,8 +100,19 @@
       DateTimeFormatComboBox.Enabled = true;
       ProblemTextBox.Text = openFileDialog.FileName;
+      TableFileParser csvParser = new TableFileParser();
+      CheckboxColumnNames.Checked = csvParser.AreColumnNamesInFirstLine(ProblemTextBox.Text,
+                                                                      (NumberFormatInfo)DecimalSeparatorComboBox.SelectedValue,
+                                                                      (DateTimeFormatInfo)DateTimeFormatComboBox.SelectedValue,
+                                                                      (char)SeparatorComboBox.SelectedValue);
       ParseCSVFile();
     }
 
     protected virtual void CSVFormatComboBoxSelectionChangeCommitted(object sender, EventArgs e) {
+      if (string.IsNullOrEmpty(ProblemTextBox.Text)) return;
+
+      ParseCSVFile();
+    }
+
+    protected virtual void CheckboxColumnNames_CheckedChanged(object sender, EventArgs e) {
       if (string.IsNullOrEmpty(ProblemTextBox.Text)) return;
 
@@ -115,5 +127,6 @@
                         (NumberFormatInfo)DecimalSeparatorComboBox.SelectedValue,
                         (DateTimeFormatInfo)DateTimeFormatComboBox.SelectedValue,
-                        (char)SeparatorComboBox.SelectedValue);
+                        (char)SeparatorComboBox.SelectedValue,
+                        CheckboxColumnNames.Checked);
         IEnumerable<string> variableNamesWithType = GetVariableNamesWithType(csvParser);
         PreviewDatasetMatrix.Content = new Dataset(variableNamesWithType, csvParser.Values);
Index: /trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/RegressionImportTypeDialog.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/RegressionImportTypeDialog.Designer.cs	(revision 9607)
+++ /trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/RegressionImportTypeDialog.Designer.cs	(revision 9608)
@@ -53,4 +53,12 @@
       this.SuspendLayout();
       // 
+      // OkButton
+      // 
+      this.OkButton.Location = new System.Drawing.Point(303, 421);
+      // 
+      // CancelationButton
+      // 
+      this.CancelationButton.Location = new System.Drawing.Point(384, 421);
+      // 
       // ProblemDataSettingsGroupBox
       // 
@@ -58,4 +66,5 @@
       this.ProblemDataSettingsGroupBox.Controls.Add(this.TargetVariableLabel);
       this.ProblemDataSettingsGroupBox.Controls.Add(this.TargetVariableComboBox);
+      this.ProblemDataSettingsGroupBox.Size = new System.Drawing.Size(447, 251);
       this.ProblemDataSettingsGroupBox.Controls.SetChildIndex(this.PreviewLabel, 0);
       this.ProblemDataSettingsGroupBox.Controls.SetChildIndex(this.ShuffelInfoLabel, 0);
@@ -106,5 +115,5 @@
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.ClientSize = new System.Drawing.Size(471, 442);
+      this.ClientSize = new System.Drawing.Size(471, 456);
       this.Name = "RegressionImportTypeDialog";
       this.Text = "Regression CSV Import";
Index: /trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/TimeSeriesPrognosisImportTypeDialog.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/TimeSeriesPrognosisImportTypeDialog.Designer.cs	(revision 9607)
+++ /trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/TimeSeriesPrognosisImportTypeDialog.Designer.cs	(revision 9608)
@@ -59,4 +59,12 @@
       this.ShuffleDataCheckbox.Visible = false;
       // 
+      // OkButton
+      // 
+      this.OkButton.Location = new System.Drawing.Point(303, 407);
+      // 
+      // CancelationButton
+      // 
+      this.CancelationButton.Location = new System.Drawing.Point(384, 407);
+      // 
       // ProblemDataSettingsGroupBox
       // 
@@ -64,4 +72,5 @@
       this.ProblemDataSettingsGroupBox.Controls.Add(this.TargetVariableComboBox);
       this.ProblemDataSettingsGroupBox.Controls.Add(this.TargetVariableLabel);
+      this.ProblemDataSettingsGroupBox.Size = new System.Drawing.Size(447, 237);
       this.ProblemDataSettingsGroupBox.Controls.SetChildIndex(this.ShuffleDataCheckbox, 0);
       this.ProblemDataSettingsGroupBox.Controls.SetChildIndex(this.TargetVariableLabel, 0);
@@ -80,4 +89,8 @@
       this.ErrorTextBox.Location = new System.Drawing.Point(6, 19);
       this.ErrorTextBox.Size = new System.Drawing.Size(435, 69);
+      // 
+      // PreviewDatasetMatrix
+      // 
+      this.PreviewDatasetMatrix.Size = new System.Drawing.Size(435, 123);
       // 
       // SeparatorInfoLabel
@@ -101,5 +114,5 @@
       // TargetVariableComboBox
       // 
-      this.TargetVariableComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+      this.TargetVariableComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
             | System.Windows.Forms.AnchorStyles.Right)));
       this.TargetVariableComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
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 9607)
+++ /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 9607)
+++ /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 9607)
+++ /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 9607)
+++ /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 9607)
+++ /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 9607)
+++ /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 9607)
+++ /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 9607)
+++ /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 9607)
+++ /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);
Index: /trunk/sources/HeuristicLab.Tests/HeuristicLab.Problems.Instances.DataAnalysis-3.3/TableFileParserTest.cs
===================================================================
--- /trunk/sources/HeuristicLab.Tests/HeuristicLab.Problems.Instances.DataAnalysis-3.3/TableFileParserTest.cs	(revision 9607)
+++ /trunk/sources/HeuristicLab.Tests/HeuristicLab.Problems.Instances.DataAnalysis-3.3/TableFileParserTest.cs	(revision 9608)
@@ -42,5 +42,5 @@
       TableFileParser parser = new TableFileParser();
       try {
-        parser.Parse(tempFileName);
+        parser.Parse(tempFileName, parser.AreColumnNamesInFirstLine(tempFileName));
         Assert.AreEqual(6, parser.Rows);
         Assert.AreEqual(4, parser.Columns);
@@ -64,5 +64,5 @@
       TableFileParser parser = new TableFileParser();
       try {
-        parser.Parse(tempFileName);
+        parser.Parse(tempFileName, parser.AreColumnNamesInFirstLine(tempFileName));
         Assert.AreEqual(6, parser.Rows);
         Assert.AreEqual(4, parser.Columns);
@@ -86,5 +86,5 @@
       TableFileParser parser = new TableFileParser();
       try {
-        parser.Parse(tempFileName);
+        parser.Parse(tempFileName, parser.AreColumnNamesInFirstLine(tempFileName));
         Assert.AreEqual(6, parser.Rows);
         Assert.AreEqual(4, parser.Columns);
@@ -109,5 +109,5 @@
       TableFileParser parser = new TableFileParser();
       try {
-        parser.Parse(tempFileName);
+        parser.Parse(tempFileName, parser.AreColumnNamesInFirstLine(tempFileName));
         Assert.AreEqual(6, parser.Rows);
         Assert.AreEqual(4, parser.Columns);
@@ -131,5 +131,5 @@
       TableFileParser parser = new TableFileParser();
       try {
-        parser.Parse(tempFileName);
+        parser.Parse(tempFileName, parser.AreColumnNamesInFirstLine(tempFileName));
         Assert.AreEqual(6, parser.Rows);
         Assert.AreEqual(4, parser.Columns);
@@ -153,5 +153,5 @@
       TableFileParser parser = new TableFileParser();
       try {
-        parser.Parse(tempFileName);
+        parser.Parse(tempFileName, parser.AreColumnNamesInFirstLine(tempFileName));
         Assert.AreEqual(6, parser.Rows);
         Assert.AreEqual(4, parser.Columns);
@@ -175,5 +175,5 @@
       TableFileParser parser = new TableFileParser();
       try {
-        parser.Parse(tempFileName);
+        parser.Parse(tempFileName, parser.AreColumnNamesInFirstLine(tempFileName));
         Assert.AreEqual(6, parser.Rows);
         Assert.AreEqual(4, parser.Columns);
@@ -197,5 +197,5 @@
       TableFileParser parser = new TableFileParser();
       try {
-        parser.Parse(tempFileName);
+        parser.Parse(tempFileName, parser.AreColumnNamesInFirstLine(tempFileName));
         Assert.AreEqual(6, parser.Rows);
         Assert.AreEqual(4, parser.Columns);
@@ -220,5 +220,5 @@
       TableFileParser parser = new TableFileParser();
       try {
-        parser.Parse(tempFileName);
+        parser.Parse(tempFileName, parser.AreColumnNamesInFirstLine(tempFileName));
         Assert.AreEqual(6, parser.Rows);
         Assert.AreEqual(4, parser.Columns);
@@ -243,5 +243,5 @@
       TableFileParser parser = new TableFileParser();
       try {
-        parser.Parse(tempFileName);
+        parser.Parse(tempFileName, parser.AreColumnNamesInFirstLine(tempFileName));
         Assert.AreEqual(6, parser.Rows);
         Assert.AreEqual(4, parser.Columns);
@@ -266,5 +266,5 @@
       TableFileParser parser = new TableFileParser();
       try {
-        parser.Parse(tempFileName);
+        parser.Parse(tempFileName, parser.AreColumnNamesInFirstLine(tempFileName));
         Assert.AreEqual(6, parser.Rows);
         Assert.AreEqual(4, parser.Columns);
@@ -289,5 +289,5 @@
       TableFileParser parser = new TableFileParser();
       try {
-        parser.Parse(tempFileName);
+        parser.Parse(tempFileName, parser.AreColumnNamesInFirstLine(tempFileName));
         Assert.AreEqual(6, parser.Rows);
         Assert.AreEqual(4, parser.Columns);
@@ -311,5 +311,5 @@
       TableFileParser parser = new TableFileParser();
       try {
-        parser.Parse(tempFileName);
+        parser.Parse(tempFileName, parser.AreColumnNamesInFirstLine(tempFileName));
         Assert.AreEqual(6, parser.Rows);
         Assert.AreEqual(4, parser.Columns);
@@ -333,5 +333,5 @@
       TableFileParser parser = new TableFileParser();
       try {
-        parser.Parse(tempFileName);
+        parser.Parse(tempFileName, parser.AreColumnNamesInFirstLine(tempFileName));
         Assert.AreEqual(6, parser.Rows);
         Assert.AreEqual(4, parser.Columns);
@@ -355,5 +355,5 @@
       TableFileParser parser = new TableFileParser();
       try {
-        parser.Parse(tempFileName);
+        parser.Parse(tempFileName, parser.AreColumnNamesInFirstLine(tempFileName));
         Assert.AreEqual(6, parser.Rows);
         Assert.AreEqual(4, parser.Columns);
@@ -377,5 +377,5 @@
       TableFileParser parser = new TableFileParser();
       try {
-        parser.Parse(tempFileName);
+        parser.Parse(tempFileName, parser.AreColumnNamesInFirstLine(tempFileName));
         Assert.AreEqual(6, parser.Rows);
         Assert.AreEqual(4, parser.Columns);
@@ -400,5 +400,5 @@
       TableFileParser parser = new TableFileParser();
       try {
-        parser.Parse(tempFileName);
+        parser.Parse(tempFileName, parser.AreColumnNamesInFirstLine(tempFileName));
         Assert.AreEqual(4, parser.Rows);
         Assert.AreEqual(4, parser.Columns);
@@ -421,5 +421,5 @@
       TableFileParser parser = new TableFileParser();
       try {
-        parser.Parse(tempFileName);
+        parser.Parse(tempFileName, parser.AreColumnNamesInFirstLine(tempFileName));
         Assert.AreEqual(6, parser.Rows);
         Assert.AreEqual(4, parser.Columns);
@@ -443,5 +443,5 @@
       TableFileParser parser = new TableFileParser();
       try {
-        parser.Parse(tempFileName);
+        parser.Parse(tempFileName, parser.AreColumnNamesInFirstLine(tempFileName));
         Assert.AreEqual(6, parser.Rows);
         Assert.AreEqual(4, parser.Columns);
@@ -465,5 +465,5 @@
       TableFileParser parser = new TableFileParser();
       try {
-        parser.Parse(tempFileName);
+        parser.Parse(tempFileName, parser.AreColumnNamesInFirstLine(tempFileName));
         Assert.AreEqual(6, parser.Rows);
         Assert.AreEqual(4, parser.Columns);
@@ -487,5 +487,5 @@
       TableFileParser parser = new TableFileParser();
       try {
-        parser.Parse(tempFileName);
+        parser.Parse(tempFileName, parser.AreColumnNamesInFirstLine(tempFileName));
         Assert.AreEqual(6, parser.Rows);
         Assert.AreEqual(4, parser.Columns);
@@ -508,5 +508,5 @@
       TableFileParser parser = new TableFileParser();
       try {
-        parser.Parse(tempFileName);
+        parser.Parse(tempFileName, parser.AreColumnNamesInFirstLine(tempFileName));
         Assert.AreEqual(3, parser.Rows);
         Assert.AreEqual(4507, parser.Columns);
@@ -529,5 +529,5 @@
       TableFileParser parser = new TableFileParser();
       try {
-        parser.Parse(tempFileName);
+        parser.Parse(tempFileName, parser.AreColumnNamesInFirstLine(tempFileName));
         Assert.AreEqual(6, parser.Rows);
         Assert.AreEqual(4, parser.Columns);
@@ -551,5 +551,5 @@
       TableFileParser parser = new TableFileParser();
       try {
-        parser.Parse(tempFileName);
+        parser.Parse(tempFileName, parser.AreColumnNamesInFirstLine(tempFileName));
         Assert.AreEqual(6, parser.Rows);
         Assert.AreEqual(4, parser.Columns);
