diff --git a/VectoCore/VectoCore/Utils/VectoCSVFile.cs b/VectoCore/VectoCore/Utils/VectoCSVFile.cs
index f23b674ce9df66b536e53eb0e03acba30c122ced..7148af44831517dcc8c309c6605331aa33f132fe 100644
--- a/VectoCore/VectoCore/Utils/VectoCSVFile.cs
+++ b/VectoCore/VectoCore/Utils/VectoCSVFile.cs
@@ -38,6 +38,7 @@ using System.Linq;
 using System.Text;
 using System.Text.RegularExpressions;
 using TUGraz.VectoCommon.Exceptions;
+using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
 
@@ -69,11 +70,13 @@ namespace TUGraz.VectoCore.Utils
 		/// <param name="ignoreEmptyColumns">set true, if empty columns should be ignored. default: false.</param>
 		/// <param name="fullHeader">set true is column names should be preserved. Otherwise units are trimed away. default: false.</param>
 		/// <returns>A DataTable which represents the CSV File.</returns>
-		public static DataTable Read(string fileName, bool ignoreEmptyColumns = false, bool fullHeader = false)
+		public static TableData Read(string fileName, bool ignoreEmptyColumns = false, bool fullHeader = false)
 		{
 			try {
 				using (var fs = new FileStream(fileName, FileMode.Open)) {
-					return ReadStream(fs, ignoreEmptyColumns, fullHeader);
+					var retVal = new TableData(fileName);
+					ReadCSV(retVal, fs, ignoreEmptyColumns, fullHeader);
+					return retVal;
 				}
 			} catch (Exception e) {
 				LogManager.GetLogger(typeof(VectoCSVFile).FullName).Error(e);
@@ -88,7 +91,14 @@ namespace TUGraz.VectoCore.Utils
 		/// <param name="ignoreEmptyColumns">set true, if empty columns should be ignored. default: false.</param>
 		/// <param name="fullHeader">set true is column names should be preserved. Otherwise units are trimed away. default: false.</param>
 		/// <returns>A DataTable which represents the CSV File.</returns>
-		public static DataTable ReadStream(Stream stream, bool ignoreEmptyColumns = false, bool fullHeader = false)
+		public static TableData ReadStream(Stream stream, bool ignoreEmptyColumns = false, bool fullHeader = false)
+		{
+			var retVal = new TableData();
+			ReadCSV(retVal, stream, ignoreEmptyColumns, fullHeader);
+			return retVal;
+		}
+
+		private static void ReadCSV(DataTable table, Stream stream, bool ignoreEmptyColumns, bool fullHeader)
 		{
 			var p = new TextFieldParser(stream) {
 				TextFieldType = FieldType.Delimited,
@@ -125,13 +135,13 @@ namespace TUGraz.VectoCore.Utils
 				columns = colsWithoutComment.Select((_, i) => i.ToString()).ToList();
 			}
 
-			var table = new DataTable();
+			//var table = new DataTable();
 			foreach (var col in columns) {
 				table.Columns.Add(col);
 			}
 
 			if (p.EndOfData) {
-				return table;
+				return;
 			}
 
 			var lineNumber = 1;
@@ -158,8 +168,6 @@ namespace TUGraz.VectoCore.Utils
 				}
 				lineNumber++;
 			} while (!p.EndOfData);
-
-			return table;
 		}
 
 		/// <summary>