diff --git a/VectoConsole/Program.cs b/VectoConsole/Program.cs
index ea23e4f5e2508117bd11d6be580376db0b009c92..8d8845cd219691711bde6485f6c2b971b2ba2f00 100644
--- a/VectoConsole/Program.cs
+++ b/VectoConsole/Program.cs
@@ -131,7 +131,7 @@ Examples:
 				stopWatch.Start();
 				foreach (var file in fileList.Where(f => Path.GetExtension(f) == Constants.FileExtensions.VectoJobFile)) {
 					var dataProvider = JSONInputDataFactory.ReadJsonJob(file);
-					var runsFactory = new SimulatorFactory(mode, dataProvider, fileWriter) { ModWriter = fileWriter };
+					var runsFactory = new SimulatorFactory(mode, dataProvider, fileWriter);
 					if (args.Contains("-mod")) {
 						runsFactory.WriteModalResults = true;
 					}
diff --git a/VectoCore/InputData/FileIO/JSON/JSONEngineData.cs b/VectoCore/InputData/FileIO/JSON/JSONEngineData.cs
index 1ac945f9a8e701839a2d3ec91efa2fd81c0b2150..d7602a0b052a8677d866e93d9527f0943a75d20e 100644
--- a/VectoCore/InputData/FileIO/JSON/JSONEngineData.cs
+++ b/VectoCore/InputData/FileIO/JSON/JSONEngineData.cs
@@ -19,9 +19,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 			// convert vom ccm to m^3}
 		}
 
-		public RoundsPerMinute IdleSpeed
+		public PerSecond IdleSpeed
 		{
-			get { return Body[JsonKeys.Engine_IdleSpeed].Value<double>().SI<RoundsPerMinute>(); }
+			get { return Body[JsonKeys.Engine_IdleSpeed].Value<double>().RPMtoRad(); }
 		}
 
 		public DataTable FuelConsumptionMap
diff --git a/VectoCore/InputData/FileIO/JSON/JSONGearboxData.cs b/VectoCore/InputData/FileIO/JSON/JSONGearboxData.cs
index 38a760b7533a0f891082be4db45b5f76c8c037bf..31f15d3e088adf5b17be5cded8b53b06014c26c4 100644
--- a/VectoCore/InputData/FileIO/JSON/JSONGearboxData.cs
+++ b/VectoCore/InputData/FileIO/JSON/JSONGearboxData.cs
@@ -123,7 +123,10 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 
 		public bool Enabled
 		{
-			get { throw new System.NotImplementedException(); }
+			get
+			{
+				return false; // TODO @@@
+			}
 		}
 
 		public RoundsPerMinute ReferenceRPM
diff --git a/VectoCore/InputData/FileIO/JSON/JSONInputData.cs b/VectoCore/InputData/FileIO/JSON/JSONInputData.cs
index 9a7a4bde2a35352730252c778e7af3e9df9d6b0d..6da3fb45c6726dd6fb324723cd9405e55157e425 100644
--- a/VectoCore/InputData/FileIO/JSON/JSONInputData.cs
+++ b/VectoCore/InputData/FileIO/JSON/JSONInputData.cs
@@ -44,13 +44,20 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 
 		protected DataTable ReadTableData(string filename, string tableType, bool required = true)
 		{
-			if (filename == null || !filename.Any() || filename.Equals("<NOFILE>", StringComparison.InvariantCultureIgnoreCase)) {
-				if (required) {
-					throw new VectoException("Invalid {0}: {1}", tableType, filename);
-				}
-				return null;
+			if (!EmptyOrInvalidFileName(filename)) {
+				return VectoCSVFile.Read(Path.Combine(BasePath, filename), true);
+			}
+			if (required) {
+				throw new VectoException("Invalid {0}: {1}", tableType, filename);
 			}
-			return VectoCSVFile.Read(Path.Combine(BasePath, filename));
+			return null;
+		}
+
+		internal static bool EmptyOrInvalidFileName(string filename)
+		{
+			return filename == null || !filename.Any() ||
+					filename.Equals("<NOFILE>", StringComparison.InvariantCultureIgnoreCase)
+					|| filename.Equals("-");
 		}
 	}
 
@@ -70,17 +77,23 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 
 		public JSONInputDataV2(JObject data, string filename) : base(data, filename)
 		{
-			_jobname = filename;
-			Gearbox = JSONInputDataFactory.ReadGearbox(
-				Path.Combine(BasePath, Body[JsonKeys.Vehicle_GearboxFile].Value<string>()));
+			_jobname = Path.GetFileName(filename);
+			var gearboxFile = Body[JsonKeys.Vehicle_GearboxFile].Value<string>();
+			if (!EmptyOrInvalidFileName(gearboxFile)) {
+				Gearbox = JSONInputDataFactory.ReadGearbox(Path.Combine(BasePath, gearboxFile));
+			}
 			var axleGear = Gearbox as IAxleGearInputData;
 			if (axleGear != null) {
 				AxleGear = axleGear;
 			}
 			Engine = JSONInputDataFactory.ReadEngine(
 				Path.Combine(BasePath, Body[JsonKeys.Vehicle_EngineFile].Value<string>()));
-			VehicleData = JSONInputDataFactory.ReadJsonVehicle(
-				Path.Combine(BasePath, Body[JsonKeys.Vehicle_VehicleFile].Value<string>()));
+			var vehicleFile = Body[JsonKeys.Vehicle_VehicleFile].Value<string>();
+			if (!EmptyOrInvalidFileName(vehicleFile)) {
+				VehicleData = JSONInputDataFactory.ReadJsonVehicle(
+					Path.Combine(BasePath, vehicleFile));
+			}
+
 			var retarder = VehicleData as IRetarderInputData;
 			if (retarder != null) {
 				Retarder = retarder;
@@ -143,7 +156,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 			get
 			{
 				return Body[JsonKeys.Job_Cycles].Select(cycle => new CycleInputData() {
-					Name = cycle.Value<string>(),
+					Name = Path.GetFileNameWithoutExtension(cycle.Value<string>()),
 					CycleData = VectoCSVFile.Read(Path.Combine(BasePath, cycle.Value<string>()))
 				}).Cast<ICycleData>().ToList();
 			}
@@ -227,8 +240,16 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 			{
 				var retVal = new List<IAuxiliaryInputData>();
 				foreach (var aux in Body["Aux"]) {
-					var auxData = new AuxiliaryDataInputData();
-					var stream = new StreamReader(aux["Path"].Value<string>());
+					var auxData = new AuxiliaryDataInputData {
+						ID = aux["ID"].Value<string>(),
+						Type = aux["Type"].Value<string>(),
+						Technology = aux["Technology"].Value<string>()
+					};
+					var auxFile = aux["Path"].Value<string>();
+					if (EmptyOrInvalidFileName(auxFile)) {
+						continue;
+					}
+					var stream = new StreamReader(Path.Combine(BasePath, auxFile));
 					stream.ReadLine(); // skip header "Transmission ration to engine rpm [-]"
 					auxData.TransmissionRatio = stream.ReadLine().IndulgentParse();
 					stream.ReadLine(); // skip header "Efficiency to engine [-]"
diff --git a/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs b/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs
index 10ba4d2f48e0ddf23834d7dba0a19f275dd54e11..ff8ddc16c0f0beca11c841859479423c7fcc442e 100644
--- a/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs
+++ b/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs
@@ -61,7 +61,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 
 		public CrossWindCorrectionMode CrossWindCorrectionMode
 		{
-			get { throw new NotImplementedException(); }
+			get { return CrossWindCorrectionModeHelper.Parse(Body["CdCorrMode"].Value<string>()); }
 		}
 
 		public string Rim
diff --git a/VectoCore/InputData/FileIO/Reader/DataObjectAdaper/AbstractSimulationDataAdapter.cs b/VectoCore/InputData/FileIO/Reader/DataObjectAdaper/AbstractSimulationDataAdapter.cs
index 531fca73892fc381907c007eb2a7a24a82c7dfbf..cea74a4a0763a3c63db13b573ac2b4cb4c132cf4 100644
--- a/VectoCore/InputData/FileIO/Reader/DataObjectAdaper/AbstractSimulationDataAdapter.cs
+++ b/VectoCore/InputData/FileIO/Reader/DataObjectAdaper/AbstractSimulationDataAdapter.cs
@@ -54,7 +54,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.Reader.DataObjectAdaper
 				SavedInDeclarationMode = data.SavedInDeclarationMode,
 				ModelName = data.ModelName,
 				Displacement = data.Displacement,
-				IdleSpeed = data.IdleSpeed.Value().RPMtoRad(),
+				IdleSpeed = data.IdleSpeed,
 				ConsumptionMap = FuelConsumptionMap.Create(data.FuelConsumptionMap),
 				WHTCUrban = data.WHTCUrban,
 				WHTCMotorway = data.WHTCMotorway,
@@ -86,6 +86,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.Reader.DataObjectAdaper
 		/// <returns>A combined EngineFullLoadCurve with the minimum full load torque over all inputs curves.</returns>
 		internal static EngineFullLoadCurve IntersectFullLoadCurves(EngineFullLoadCurve engineCurve, FullLoadCurve gearCurve)
 		{
+			if (gearCurve == null) {
+				return engineCurve;
+			}
 			var entries = gearCurve.FullLoadEntries.Concat(engineCurve.FullLoadEntries)
 				.Select(entry => entry.EngineSpeed)
 				.OrderBy(engineSpeed => engineSpeed)
diff --git a/VectoCore/InputData/FileIO/Reader/DataObjectAdaper/DeclarationDataAdapter.cs b/VectoCore/InputData/FileIO/Reader/DataObjectAdaper/DeclarationDataAdapter.cs
index 24efa1a9569f6d66e0c07a3ac9ff7c01b6b4dd5a..56ad24e0fe69c3ad50e75443f1ff2bc6f1ab0afe 100644
--- a/VectoCore/InputData/FileIO/Reader/DataObjectAdaper/DeclarationDataAdapter.cs
+++ b/VectoCore/InputData/FileIO/Reader/DataObjectAdaper/DeclarationDataAdapter.cs
@@ -175,7 +175,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.Reader.DataObjectAdaper
 			foreach (var auxData in auxInputData.Auxiliaries) {
 				var aux = new VectoRunData.AuxData { DemandType = AuxiliaryDemandType.Constant };
 
-				switch (auxData.Type) {
+				switch (AuxiliaryTypeHelper.Parse(auxData.Type)) {
 					case AuxiliaryType.Fan:
 						aux.PowerDemand = DeclarationData.Fan.Lookup(mission, auxData.Technology);
 						aux.ID = Constants.Auxiliaries.IDs.Fan;
@@ -208,5 +208,10 @@ namespace TUGraz.VectoCore.InputData.FileIO.Reader.DataObjectAdaper
 		{
 			Log.Warn("{0} not in Declaration Mode!", inputData);
 		}
+
+		public RetarderData CreateRetarderData(IRetarderInputData retarder)
+		{
+			return SetCommonRetarderData(retarder);
+		}
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/InputData/FileIO/Reader/DataObjectAdaper/EngineeringDataAdapter.cs b/VectoCore/InputData/FileIO/Reader/DataObjectAdaper/EngineeringDataAdapter.cs
index 2d90464818d61595f7d48e83845169befd67c2a4..5f3a1aab844ebf4dd1039830c46966255ab71d72 100644
--- a/VectoCore/InputData/FileIO/Reader/DataObjectAdaper/EngineeringDataAdapter.cs
+++ b/VectoCore/InputData/FileIO/Reader/DataObjectAdaper/EngineeringDataAdapter.cs
@@ -162,5 +162,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.Reader.DataObjectAdaper
 		}
 
 		//=================================
+		public RetarderData CreateRetarderData(IRetarderInputData retarder)
+		{
+			return SetCommonRetarderData(retarder);
+		}
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/InputData/FileIO/Reader/Impl/DeclarationModeVectoRunDataFactory.cs b/VectoCore/InputData/FileIO/Reader/Impl/DeclarationModeVectoRunDataFactory.cs
index a3c2f24cffbd988d5429e0b52c8e913f64f65e41..fa1eb4c339f9835c657fc69d41eabfe20bfc6b8e 100644
--- a/VectoCore/InputData/FileIO/Reader/Impl/DeclarationModeVectoRunDataFactory.cs
+++ b/VectoCore/InputData/FileIO/Reader/Impl/DeclarationModeVectoRunDataFactory.cs
@@ -63,10 +63,12 @@ namespace TUGraz.VectoCore.InputData.FileIO.Reader.Impl
 						VehicleData = dao.CreateVehicleData(InputDataProvider.VehicleInputData, mission, loading.Value),
 						EngineData = engineData,
 						GearboxData = dao.CreateGearboxData(InputDataProvider.GearboxInputData, engineData),
+						AxleGearData = dao.CreateAxleGearData(InputDataProvider.AxleGearInputData),
 						Aux =
 							dao.CreateAuxiliaryData(InputDataProvider.AuxiliaryInputData(), mission.MissionType,
 								segment.VehicleClass),
 						Cycle = cycle,
+						Retarder = dao.CreateRetarderData(InputDataProvider.RetarderInputData),
 						DriverData = driverdata,
 						IsEngineOnly = false, // InputDataProvider.JobInputData().EngineOnlyMode,
 						JobName = InputDataProvider.JobInputData().JobName,
diff --git a/VectoCore/InputData/FileIO/Reader/Impl/EngineOnlyVectoRunDataFactory.cs b/VectoCore/InputData/FileIO/Reader/Impl/EngineOnlyVectoRunDataFactory.cs
index 0b285ec17d15cafde26f600a594037a3c4d631cb..d7dc46563772289eae4348c64192526452823d38 100644
--- a/VectoCore/InputData/FileIO/Reader/Impl/EngineOnlyVectoRunDataFactory.cs
+++ b/VectoCore/InputData/FileIO/Reader/Impl/EngineOnlyVectoRunDataFactory.cs
@@ -12,7 +12,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.Reader.Impl
 	{
 		internal EngineOnlyVectoRunDataFactory(IInputDataProvider dataProvider) : base(dataProvider) {}
 
-		public new IEnumerable<VectoRunData> NextRun()
+		public override IEnumerable<VectoRunData> NextRun()
 		{
 			if (InputDataProvider == null) {
 				Log.Warn("No valid data provider given");
diff --git a/VectoCore/InputData/FileIO/Reader/Impl/EngineeringModeVectoRunDataFactory.cs b/VectoCore/InputData/FileIO/Reader/Impl/EngineeringModeVectoRunDataFactory.cs
index efc3932b5560dbf167abf5bd7a847a2da2318aab..6dc9a3456bbb2ea92e702fb98c6871688502f316 100644
--- a/VectoCore/InputData/FileIO/Reader/Impl/EngineeringModeVectoRunDataFactory.cs
+++ b/VectoCore/InputData/FileIO/Reader/Impl/EngineeringModeVectoRunDataFactory.cs
@@ -94,7 +94,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.Reader.Impl
 		/// Iterate over all cycles defined in the JobFile and create a container with all data required for creating a simulation run
 		/// </summary>
 		/// <returns>VectoRunData instance for initializing the powertrain.</returns>
-		public IEnumerable<VectoRunData> NextRun()
+		public virtual IEnumerable<VectoRunData> NextRun()
 		{
 			var dao = new EngineeringDataAdapter();
 			var driver = dao.CreateDriverData(InputDataProvider.DriverInputData);
@@ -106,9 +106,11 @@ namespace TUGraz.VectoCore.InputData.FileIO.Reader.Impl
 					JobName = InputDataProvider.JobInputData().JobName,
 					EngineData = engineData,
 					GearboxData = dao.CreateGearboxData(InputDataProvider.GearboxInputData, engineData),
+					AxleGearData = dao.CreateAxleGearData(InputDataProvider.AxleGearInputData),
 					VehicleData = dao.CreateVehicleData(InputDataProvider.VehicleInputData),
 					DriverData = driver,
 					Aux = dao.CreateAuxiliaryData(InputDataProvider.AuxiliaryInputData()),
+					Retarder = dao.CreateRetarderData(InputDataProvider.RetarderInputData),
 					// TODO: distance or time-based cycle!
 					Cycle =
 						DrivingCycleDataReader.Create(cycle.CycleData, cycle.Name, CycleType.DistanceBased),
diff --git a/VectoCore/InputData/Impl/InputData.cs b/VectoCore/InputData/Impl/InputData.cs
index 95bb700367fd26542374d01d6911cb9077c3a41b..941dd5ace6dc54fbf8dba02d0df938d49730c51f 100644
--- a/VectoCore/InputData/Impl/InputData.cs
+++ b/VectoCore/InputData/Impl/InputData.cs
@@ -49,7 +49,7 @@ namespace TUGraz.VectoCore.InputData.Impl
 
 		public string ID { get; internal set; }
 
-		public AuxiliaryType Type { get; internal set; }
+		public string Type { get; internal set; }
 
 		public string Technology { get; internal set; }
 
diff --git a/VectoCore/InputData/InputData.cs b/VectoCore/InputData/InputData.cs
index 2263d24cf09d3b51b50b076bb89cc987380754c1..eb14b4d05a8a22a1fbeae6d9f00b1b3c6e5aa9f8 100644
--- a/VectoCore/InputData/InputData.cs
+++ b/VectoCore/InputData/InputData.cs
@@ -151,7 +151,7 @@ namespace TUGraz.VectoCore.InputData
 		string ModelName { get; }
 		CubicMeter Displacement { get; }
 
-		RoundsPerMinute IdleSpeed { get; }
+		PerSecond IdleSpeed { get; }
 
 		/// <summary>
 		/// engine speed in rpm, torque in NM, fuel consumption in g/h
@@ -220,7 +220,7 @@ namespace TUGraz.VectoCore.InputData
 
 		string ID { get; }
 
-		AuxiliaryType Type { get; }
+		string Type { get; }
 
 		string Technology { get; }
 
diff --git a/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs b/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs
index b6b838ae6668bb639a0822aeb00149935ca9c8fb..5d49290167770b01de8bd7cd73c4f15fa5b14777 100644
--- a/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs
+++ b/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs
@@ -28,11 +28,12 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 
 		private FactoryMode _mode;
 
-		public SimulatorFactory(FactoryMode mode, IInputDataProvider dataProvider, IReportWriter writer)
+		public SimulatorFactory(FactoryMode mode, IInputDataProvider dataProvider, IOutputDataWriter writer)
 		{
 			Log.Fatal("########## VectoCore Version {0} ##########", Assembly.GetExecutingAssembly().GetName().Version);
 			JobNumber = Interlocked.Increment(ref _jobNumberCounter);
 			_mode = mode;
+			ModWriter = writer;
 			switch (mode) {
 				case FactoryMode.DeclarationMode:
 					var report = new DeclarationReport(WindowsIdentity.GetCurrent().Name,
@@ -56,7 +57,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 
 		public SummaryDataContainer SumData { get; set; }
 
-		public IModalDataWriter ModWriter { get; set; }
+		public IOutputDataWriter ModWriter { get; private set; }
 
 
 		public int JobNumber { get; set; }
diff --git a/VectoCore/OutputData/FileIO/FileOutputWriter.cs b/VectoCore/OutputData/FileIO/FileOutputWriter.cs
index f6a3895072168d1e325d1ea8ed2f9541f90eb9dc..9f6df3241c4a5a5958fa0e505115125911be51bc 100644
--- a/VectoCore/OutputData/FileIO/FileOutputWriter.cs
+++ b/VectoCore/OutputData/FileIO/FileOutputWriter.cs
@@ -9,7 +9,7 @@ using TUGraz.VectoCore.Utils;
 
 namespace TUGraz.VectoCore.OutputData.FileIO
 {
-	public class FileOutputWriter : LoggingObject, IModalDataWriter, ISummaryWriter, IReportWriter
+	public class FileOutputWriter : LoggingObject, IOutputDataWriter
 	{
 		private readonly string _basePath;
 		private readonly string _jobName;
diff --git a/VectoCore/OutputData/IDataWriter.cs b/VectoCore/OutputData/IDataWriter.cs
index 4e15d411b5a9396f2af71ea8a709856572da2a5a..67584112e84edb79949f338a952913f65b71e496 100644
--- a/VectoCore/OutputData/IDataWriter.cs
+++ b/VectoCore/OutputData/IDataWriter.cs
@@ -4,6 +4,8 @@ using TUGraz.VectoCore.Models.Simulation.Data;
 
 namespace TUGraz.VectoCore.OutputData
 {
+	public interface IOutputDataWriter : IModalDataWriter, ISummaryWriter, IReportWriter {}
+
 	public interface IModalDataWriter
 	{
 		void WriteModData(string runName, string cycleName, string runSuffix, DataTable modData);
diff --git a/VectoCore/OutputData/IModalDataContainer.cs b/VectoCore/OutputData/IModalDataContainer.cs
index 563a260811112e99590f2a9ca90f4833fcc5eb3d..c9f169a12831b03654aa06f85a673ab0a4eb7bbc 100644
--- a/VectoCore/OutputData/IModalDataContainer.cs
+++ b/VectoCore/OutputData/IModalDataContainer.cs
@@ -137,7 +137,7 @@ namespace TUGraz.VectoCore.OutputData
 		{
 			var stopTime = data.GetValues<MeterPerSecond>(ModalResultField.v_act)
 				.Zip(data.SimulationIntervals(), (v, dt) => new { v, dt })
-				.Where(x => x.v < 0.1).Select(x => x.dt).Sum();
+				.Where(x => x.v < 0.1).Select(x => x.dt).Sum() ?? 0.SI<Second>();
 
 			return 100 * (stopTime / data.Duration()).Cast<Scalar>();
 		}
diff --git a/VectoCore/OutputData/SummaryDataContainer.cs b/VectoCore/OutputData/SummaryDataContainer.cs
index 293b03a30a6f66d1d7ac4c269bbff5d53ce1f5d3..99bcd7fcf1943d9ee0496ea0359f3d3d1893dfba 100644
--- a/VectoCore/OutputData/SummaryDataContainer.cs
+++ b/VectoCore/OutputData/SummaryDataContainer.cs
@@ -144,7 +144,7 @@ namespace TUGraz.VectoCore.OutputData
 			row[PNEG] = data.EnginePowerNegativeAverage().ConvertTo().Kilo.Watt;
 			row[FCFINAL] = data.FuelConsumptionFinal().ConvertTo().Gramm.Per.Kilo.Meter;
 			row[FCFINAL_LITERPER100KM] = data.FuelConsumptionFinalLiterPer100Kilometer();
-			if (!vehicleLoading.IsEqual(0)) {
+			if (vehicleLoading != null && !vehicleLoading.IsEqual(0)) {
 				row[FCFINAL_LITERPER100TKM] = data.FuelConsumptionFinalLiterPer100Kilometer() / vehicleLoading.ConvertTo().Ton;
 			}
 			row[FCMAP] = data.FuelConsumptionPerSecond().ConvertTo().Gramm.Per.Hour;
@@ -154,7 +154,7 @@ namespace TUGraz.VectoCore.OutputData
 			row[FCWHTCC] = data.FuelConsumptionWHTCCorrectedPerSecond().ConvertTo().Gramm.Per.Hour;
 			row[FCWHTCCKM] = data.FuelConsumptionWHTCCorrected().ConvertTo().Gramm.Per.Kilo.Meter;
 			row[CO2KM] = data.CO2PerMeter().ConvertTo().Gramm.Per.Kilo.Meter;
-			if (!vehicleLoading.IsEqual(0)) {
+			if (vehicleLoading != null && !vehicleLoading.IsEqual(0)) {
 				row[CO2TKM] = data.CO2PerMeter().ConvertTo().Gramm.Per.Kilo.Meter / vehicleLoading.ConvertTo().Ton;
 			}
 			row[PWHEELPOS] = data.PowerWheelPositive().ConvertTo().Kilo.Watt;
diff --git a/VectoCore/Utils/VectoCSVFile.cs b/VectoCore/Utils/VectoCSVFile.cs
index 388e743c9ff28a111bc768e54feaab63e1c1c1a2..67f9f6968644aa3b0d58c38a808f4931b0ca0f42 100644
--- a/VectoCore/Utils/VectoCSVFile.cs
+++ b/VectoCore/Utils/VectoCSVFile.cs
@@ -150,16 +150,25 @@ namespace TUGraz.VectoCore.Utils
 		/// <param name="table">The Datatable.</param>
 		public static void Write(string fileName, DataTable table)
 		{
-			Write(new StreamWriter(fileName), table);
+			var stream = new StreamWriter(fileName);
+			Write(stream, table);
+			stream.Close();
 		}
 
+		/// <summary>
+		/// writes the datatable to a csv file.
+		/// Uses the column caption as header (with fallback to column name) for the csv header.
+		/// <remarks>Note: the callee has to make suree to close the stream after use.</remarks>
+		/// </summary>
+		/// <param name="writer"></param>
+		/// <param name="table"></param>
 		public static void Write(StreamWriter writer, DataTable table)
 		{
 			if (writer == null) {
 				return;
 			}
 			var header = table.Columns.Cast<DataColumn>().Select(col => col.Caption ?? col.ColumnName);
-			writer.WriteLineAsync(string.Join(Delimiter.ToString(), header));
+			writer.WriteLine(string.Join(Delimiter.ToString(), header));
 
 			foreach (DataRow row in table.Rows) {
 				var row1 = row;
@@ -175,7 +184,7 @@ namespace TUGraz.VectoCore.Utils
 						: string.Format(CultureInfo.InvariantCulture, "{0}", item));
 				});
 
-				writer.WriteLineAsync(string.Join(Delimiter.ToString(), formattedList));
+				writer.WriteLine(string.Join(Delimiter.ToString(), formattedList));
 			}
 		}
 	}
diff --git a/VectoCore/VectoCore.csproj b/VectoCore/VectoCore.csproj
index 502f85d008420c7ad2bfcc73a2000df84675f53f..2c6e1b1c6b477533a1edab83997d5431e14381f7 100644
--- a/VectoCore/VectoCore.csproj
+++ b/VectoCore/VectoCore.csproj
@@ -117,10 +117,10 @@
     <Compile Include="InputData\FileIO\EngineeringFile\GearboxFileEng.cs" />
     <Compile Include="InputData\FileIO\EngineeringFile\JobFileEng.cs" />
     <Compile Include="InputData\FileIO\EngineeringFile\VehicleFileEng.cs" />
+    <Compile Include="InputData\FileIO\Reader\DataObjectAdaper\EngineOnlyDataAdapter.cs" />
     <Compile Include="InputData\Impl\InputData.cs" />
     <Compile Include="InputData\FileIO\InputFileReader.cs" />
     <Compile Include="InputData\FileIO\JsonDataHeader.cs" />
-    <Compile Include="InputData\FileIO\JsonInputDataProviderDEPRECATED.cs" />
     <Compile Include="InputData\FileIO\JSON\JSONEngineData.cs" />
     <Compile Include="InputData\FileIO\JSON\JSONGearboxData.cs" />
     <Compile Include="InputData\FileIO\JSON\JSONInputData.cs" />
diff --git a/VectoCoreTest/Integration/DeclarationReportTest.cs b/VectoCoreTest/Integration/DeclarationReportTest.cs
index c539159d289c4e05fa8c81401b3b88891362ab37..6633bde89c741f93f3dbc635a490e71be81164ee 100644
--- a/VectoCoreTest/Integration/DeclarationReportTest.cs
+++ b/VectoCoreTest/Integration/DeclarationReportTest.cs
@@ -15,18 +15,20 @@ namespace TUGraz.VectoCore.Tests.Integration
 		[TestMethod]
 		public void DeclarationReport_Test()
 		{
-			if (File.Exists("job-report.vsum")) {
-				File.Delete("job-report.vsum");
+			const string jobFile = @"TestData\Jobs\job-report.vecto";
+
+			if (File.Exists(@"TestData\Jobs\job-report.vsum")) {
+				File.Delete(@"TestData\Jobs\job-report.vsum");
 			}
 
-			if (File.Exists("job-report.pdf")) {
-				File.Delete("job-report.pdf");
+			if (File.Exists(@"TestData\Jobs\job-report.pdf")) {
+				File.Delete(@"TestData\Jobs\job-report.pdf");
 			}
 
-			var fileWriter = new FileOutputWriter("job-report", "");
+			var fileWriter = new FileOutputWriter(jobFile);
 			var sumData = new SummaryDataContainer(fileWriter);
 			var jobContainer = new JobContainer(sumData);
-			var inputData = JSONInputDataFactory.ReadJsonJob(@"TestData\Jobs\job-report.vecto");
+			var inputData = JSONInputDataFactory.ReadJsonJob(jobFile);
 			var factory = new SimulatorFactory(SimulatorFactory.FactoryMode.DeclarationMode, inputData, fileWriter);
 
 			jobContainer.AddRuns(factory);
@@ -34,7 +36,7 @@ namespace TUGraz.VectoCore.Tests.Integration
 
 			jobContainer.WaitFinished();
 
-			Assert.IsTrue(File.Exists(@"job-report.vsum"));
+			Assert.IsTrue(File.Exists(@"TestData\Jobs\job-report.vsum"));
 			Assert.IsTrue(File.Exists(@"TestData\Jobs\job-report.pdf"));
 		}
 	}
diff --git a/VectoCoreTest/Integration/EngineOnlyCycle/EngineOnlyCycleTest.cs b/VectoCoreTest/Integration/EngineOnlyCycle/EngineOnlyCycleTest.cs
index 2f2b85ab158fc03b3990667fb4120df03d974eb0..fb2ed49904a0954f7a06de16c1d5f6197f72216a 100644
--- a/VectoCoreTest/Integration/EngineOnlyCycle/EngineOnlyCycleTest.cs
+++ b/VectoCoreTest/Integration/EngineOnlyCycle/EngineOnlyCycleTest.cs
@@ -2,6 +2,7 @@ using System.Data;
 using System.IO;
 using System.Linq;
 using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TUGraz.VectoCore.Configuration;
 using TUGraz.VectoCore.InputData.FileIO.Reader;
 using TUGraz.VectoCore.InputData.FileIO.Reader.Impl;
 using TUGraz.VectoCore.Models.Connector.Ports.Impl;
@@ -46,7 +47,7 @@ namespace TUGraz.VectoCore.Tests.Integration.EngineOnlyCycle
 			var absTime = 0.SI<Second>();
 			var dt = 1.SI<Second>();
 
-			var modFile = Path.GetRandomFileName(); // + ".vmod";
+			var modFile = Path.GetFileNameWithoutExtension(Path.GetRandomFileName()); // + ".vmod";
 			var fileWriter = new FileOutputWriter(modFile, "");
 			var modData = new ModalDataContainer(modFile, fileWriter, SimulatorFactory.FactoryMode.EngineOnlyMode);
 
@@ -63,7 +64,8 @@ namespace TUGraz.VectoCore.Tests.Integration.EngineOnlyCycle
 			}
 			modData.Finish(VectoRun.Status.Success);
 
-			ResultFileHelper.TestModFile(TestContext.DataRow["ModalResultFile"].ToString(), modFile);
+			ResultFileHelper.TestModFile(TestContext.DataRow["ModalResultFile"].ToString(),
+				modFile + Constants.FileExtensions.ModDataFile);
 		}
 
 		[TestMethod]
diff --git a/VectoCoreTest/Integration/SimulationRuns/FullPowertrain.cs b/VectoCoreTest/Integration/SimulationRuns/FullPowertrain.cs
index 6219663955f036026a92a959c7ccfc745249f418..563d047a9d6661af784df9f86fa3d61cc6b75258 100644
--- a/VectoCoreTest/Integration/SimulationRuns/FullPowertrain.cs
+++ b/VectoCoreTest/Integration/SimulationRuns/FullPowertrain.cs
@@ -253,18 +253,19 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
 		[TestMethod]
 		public void Test_FullPowerTrain_JobFile()
 		{
-			var fileWriter = new FileOutputWriter("job", "");
+			const string jobFile = @"TestData\job.vecto";
+			var fileWriter = new FileOutputWriter(jobFile);
 			var sumData = new SummaryDataContainer(fileWriter);
 			var jobContainer = new JobContainer(sumData);
 
-			var inputData = JSONInputDataFactory.ReadJsonJob(@"TestData\job.vecto");
+			var inputData = JSONInputDataFactory.ReadJsonJob(jobFile);
 			var factory = new SimulatorFactory(SimulatorFactory.FactoryMode.EngineeringMode, inputData, fileWriter);
 
 			jobContainer.AddRuns(factory);
 			jobContainer.Execute();
 
 			jobContainer.WaitFinished();
-			ResultFileHelper.TestSumFile(@"TestData\Results\Integration\job.vsum", @"job.vsum");
+			ResultFileHelper.TestSumFile(@"TestData\Results\Integration\job.vsum", @"TestData\job.vsum");
 
 			ResultFileHelper.TestModFile(@"TestData\Results\Integration\job_1-Gear-Test-dist.vmod",
 				@"TestData\job_1-Gear-Test-dist.vmod", testRowCount: false);
diff --git a/VectoCoreTest/Models/Simulation/SimulationTests.cs b/VectoCoreTest/Models/Simulation/SimulationTests.cs
index fbffe930362aca6baf52aef5b7d0170f9bcc9733..d06e38885058920d6ae7fbacba1872b9242e9202 100644
--- a/VectoCoreTest/Models/Simulation/SimulationTests.cs
+++ b/VectoCoreTest/Models/Simulation/SimulationTests.cs
@@ -89,11 +89,12 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation
 		[TestMethod]
 		public void Test_VectoJob()
 		{
-			var fileWriter = new FileOutputWriter(@"24t Coach.vsum", "");
+			var jobFile = @"TestData\Jobs\24t Coach EngineOnly.vecto";
+			var fileWriter = new FileOutputWriter(jobFile);
 			var sumWriter = new SummaryDataContainer(fileWriter);
 			var jobContainer = new JobContainer(sumWriter);
 
-			var inputData = JSONInputDataFactory.ReadJsonJob(@"TestData\Jobs\24t Coach EngineOnly.vecto");
+			var inputData = JSONInputDataFactory.ReadJsonJob(jobFile);
 			var runsFactory = new SimulatorFactory(SimulatorFactory.FactoryMode.EngineOnlyMode,
 				inputData, fileWriter);
 
diff --git a/VectoCoreTest/Models/SimulationComponent/GearboxTest.cs b/VectoCoreTest/Models/SimulationComponent/GearboxTest.cs
index 3b56f72e028c74266e93370879720faed969ff7f..0395fac3fd4307805fd1947bb6d6869e9ef590a4 100644
--- a/VectoCoreTest/Models/SimulationComponent/GearboxTest.cs
+++ b/VectoCoreTest/Models/SimulationComponent/GearboxTest.cs
@@ -107,7 +107,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			var wrongFile = @"TestData\Components\24t Coach LessThanTwoGears.vgbx";
 			AssertHelper.Exception<VectoSimulationException>(
 				() => MockSimulationDataFactory.CreateGearboxDataFromFile(wrongFile, EngineDataFile),
-				"At least two Gear-Entries must be defined in Gearbox: 1 Axle-Gear and at least 1 Gearbox-Gear!");
+				"At least one Gear-Entry must be defined in Gearbox!");
 		}
 
 		[TestMethod]
diff --git a/VectoCoreTest/Models/SimulationComponent/VehicleTest.cs b/VectoCoreTest/Models/SimulationComponent/VehicleTest.cs
index 0353577558c6d3f94816896eb235216c9554cb3c..b7f1d6f257a5ceca1c19417d90c82d6f112d8f10 100644
--- a/VectoCoreTest/Models/SimulationComponent/VehicleTest.cs
+++ b/VectoCoreTest/Models/SimulationComponent/VehicleTest.cs
@@ -27,7 +27,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			//var reader = new EngineeringModeSimulationDataReader();
 			var vehicleData = MockSimulationDataFactory.CreateVehicleDataFromFile(VehicleDataFileCoach);
 			//VehicleData.ReadFromFile(VehicleDataFile);
-			//vehicleData.CrossWindCorrection = VehicleData.CrossWindCorrectionMode.NoCorrection;
+			//vehicleData.CrossWindCorrectionMode = CrossWindCorrectionMode.NoCorrection;
 			var vehicle = new Vehicle(container, vehicleData);
 
 			var mockPort = new MockFvOutPort();
diff --git a/VectoCoreTest/Models/SimulationComponentData/GearboxDataTest.cs b/VectoCoreTest/Models/SimulationComponentData/GearboxDataTest.cs
index 668c1c1f3ebccb4b531d783dcfac1d6fbdebee4d..129af00859f5a321f8dc74ab92ad8fbf089646a2 100644
--- a/VectoCoreTest/Models/SimulationComponentData/GearboxDataTest.cs
+++ b/VectoCoreTest/Models/SimulationComponentData/GearboxDataTest.cs
@@ -20,7 +20,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData
 		[TestMethod]
 		public void TestGearboxDataReadTest()
 		{
-			var gbxData = MockSimulationDataFactory.CreateGearboxDataFromFile(GearboxFile, EngineFile);
+			var gbxData = MockSimulationDataFactory.CreateGearboxDataFromFile(GearboxFile, EngineFile, false);
 
 			Assert.AreEqual(GearboxType.AMT, gbxData.Type);
 			Assert.AreEqual(1.0, gbxData.TractionInterruption.Value(), 0.0001);
diff --git a/VectoCoreTest/Utils/MockSimulationDataFactory.cs b/VectoCoreTest/Utils/MockSimulationDataFactory.cs
index d7d9ed40bd19540ac7a9b8a313fd445827e0853f..000c45b9b3a171bd46830dffad6a133e4d8be0cb 100644
--- a/VectoCoreTest/Utils/MockSimulationDataFactory.cs
+++ b/VectoCoreTest/Utils/MockSimulationDataFactory.cs
@@ -12,14 +12,21 @@ namespace TUGraz.VectoCore.Tests.Utils
 		/// </summary>
 		/// <param name="gearBoxFile"></param>
 		/// <param name="engineFile"></param>
+		/// <param name="declarationMode"></param>
 		/// <returns>GearboxData instance</returns>
-		public static GearboxData CreateGearboxDataFromFile(string gearBoxFile, string engineFile)
+		public static GearboxData CreateGearboxDataFromFile(string gearBoxFile, string engineFile, bool declarationMode = true)
 		{
 			var gearboxInput = JSONInputDataFactory.ReadGearbox(gearBoxFile);
 			var engineInput = JSONInputDataFactory.ReadEngine(engineFile);
-			var dao = new DeclarationDataAdapter();
-			var engineData = dao.CreateEngineData(engineInput);
-			return dao.CreateGearboxData(gearboxInput, engineData);
+			if (declarationMode) {
+				var dao = new DeclarationDataAdapter();
+				var engineData = dao.CreateEngineData(engineInput);
+				return dao.CreateGearboxData(gearboxInput, engineData);
+			} else {
+				var dao = new EngineeringDataAdapter();
+				var engineData = dao.CreateEngineData(engineInput);
+				return dao.CreateGearboxData(gearboxInput, engineData);
+			}
 		}
 
 		public static AxleGearData CreateAxleGearDataFromFile(string axleGearFile)