diff --git a/VectoCommon/VectoCommon/Models/ExecutionMode.cs b/VectoCommon/VectoCommon/Models/ExecutionMode.cs
index d9649eda77fb74ea84c1af8a719d700cda0eb477..66202daf7cb947cf9f35d11e7a5eca0d93d669c8 100644
--- a/VectoCommon/VectoCommon/Models/ExecutionMode.cs
+++ b/VectoCommon/VectoCommon/Models/ExecutionMode.cs
@@ -35,6 +35,5 @@ namespace TUGraz.VectoCommon.Models
 	{
 		Engineering,
 		Declaration,
-		EngineOnly,
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/EngineOnlyVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/EngineOnlyVectoRunDataFactory.cs
index 1ef3792d93d24bcc4b05ad63bb9045a67b575eeb..8fc0f8181c9af05591320319ffbbf648c3ce30f0 100644
--- a/VectoCore/VectoCore/InputData/Reader/Impl/EngineOnlyVectoRunDataFactory.cs
+++ b/VectoCore/VectoCore/InputData/Reader/Impl/EngineOnlyVectoRunDataFactory.cs
@@ -54,7 +54,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
 					JobName = InputDataProvider.JobInputData().JobName,
 					EngineData = dao.CreateEngineData(InputDataProvider.EngineInputData),
 					Cycle = DrivingCycleDataReader.ReadFromDataTable(cycle.CycleData, CycleType.EngineOnly, cycle.Name, false),
-					ExecutionMode = ExecutionMode.EngineOnly
+					ExecutionMode = ExecutionMode.Engineering
 				};
 				yield return simulationRunData;
 			}
diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
index 1a84dd10c4438513171acb7accb113ecd4a7aade..9c732b63f2d719b6f5f143ce8cb4d734d5acf6e9 100644
--- a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
@@ -59,25 +59,22 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 
 		public VehicleContainer Build(VectoRunData data)
 		{
-			if (data.ExecutionMode == ExecutionMode.EngineOnly) {
-				return BuildEngineOnly(data);
+			switch (data.Cycle.CycleType) {
+				case CycleType.EngineOnly:
+					return BuildEngineOnly(data);
+				case CycleType.PWheel:
+					return BuildPWheel(data);
+				case CycleType.MeasuredSpeed:
+					return BuildMeasuredSpeed(data);
+				case CycleType.MeasuredSpeedGear:
+					return BuildMeasuredSpeedGear(data);
 			}
-			if (data.Cycle.CycleType == CycleType.PWheel) {
-				return BuildPWheel(data);
-			}
-			if (data.Cycle.CycleType == CycleType.MeasuredSpeed) {
-				return BuildMeasuredSpeed(data);
-			}
-			if (data.Cycle.CycleType == CycleType.MeasuredSpeedGear) {
-				return BuildMeasuredSpeedGear(data);
-			}
-
 			return BuildFullPowertrain(data);
 		}
 
 		private VehicleContainer BuildEngineOnly(VectoRunData data)
 		{
-			var container = new VehicleContainer(ExecutionMode.EngineOnly, _modData, _sumWriter) { RunData = data };
+			var container = new VehicleContainer(ExecutionMode.Engineering, _modData, _sumWriter) { RunData = data };
 			var cycle = new PowertrainDrivingCycle(container, data.Cycle);
 
 			var directAux = new EngineAuxiliary(container);
@@ -244,7 +241,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 		private VehicleContainer BuildFullPowertrain(VectoRunData data)
 		{
 			if (data.Cycle.CycleType != CycleType.DistanceBased) {
-				throw new VectoSimulationException("Powertrain Builder cannot build FullPowertrain for Cycle Type {0}",
+				throw new VectoSimulationException("Powertrain Builder cannot build FullPowertrain for cycle type {0}",
 					data.Cycle.CycleType);
 			}
 
diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs
index 56b9e13be24dcface21170e45d1ad87bad930974..9e59a781d64ab5784b4b86b61422a35d18e7ded2 100644
--- a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs
@@ -54,6 +54,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 		private static int _jobNumberCounter;
 
 		private readonly ExecutionMode _mode;
+		private readonly bool _engineOnlyMode;
 
 		public SimulatorFactory(ExecutionMode mode, IInputDataProvider dataProvider, IOutputDataWriter writer,
 			DeclarationReport declarationReport = null)
@@ -80,14 +81,12 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 					if (engDataProvider == null) {
 						throw new VectoException("InputDataProvider does not implement Engineering interface");
 					}
-					DataReader = new EngineeringModeVectoRunDataFactory(engDataProvider);
-					break;
-				case ExecutionMode.EngineOnly:
-					var engineDataProvider = dataProvider as IEngineeringInputDataProvider;
-					if (engineDataProvider == null) {
-						throw new VectoException("InputDataProvider does not implement Engineering interface");
+					if (engDataProvider.JobInputData().EngineOnlyMode) {
+						DataReader = new EngineOnlyVectoRunDataFactory(engDataProvider);
+						_engineOnlyMode = true;
+					} else {
+						DataReader = new EngineeringModeVectoRunDataFactory(engDataProvider);
 					}
-					DataReader = new EngineOnlyVectoRunDataFactory(engineDataProvider);
 					break;
 				default:
 					throw new VectoException("Unkown factory mode in SimulatorFactory: {0}", mode);
@@ -118,17 +117,18 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 
 			foreach (var data in DataReader.NextRun()) {
 				var d = data;
+				Action<ModalDataContainer> addReportResult = writer => {
+					if (d.Report != null) {
+						d.Report.AddResult(d.Loading, d.Mission, writer);
+					}
+				};
 				IModalDataContainer modContainer =
 					new ModalDataContainer(data, ModWriter,
-						addReportResult: writer => {
-							if (d.Report != null) {
-								d.Report.AddResult(d.Loading, d.Mission, writer);
-							}
-						},
-						mode: _mode,
+						addReportResult: _mode == ExecutionMode.Declaration ? addReportResult : null,
+						writeEngineOnly: _engineOnlyMode,
 						filter: modDataFilter) {
 							WriteAdvancedAux = data.AdvancedAux != null && data.AdvancedAux.AuxiliaryAssembly == AuxiliaryModel.Advanced,
-							WriteModalResults = WriteModalResults
+							WriteModalResults = _mode != ExecutionMode.Declaration || WriteModalResults
 						};
 				var current = i++;
 				var builder = new PowertrainBuilder(modContainer, (writer, mass, loading) =>
diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/VehicleContainer.cs b/VectoCore/VectoCore/Models/Simulation/Impl/VehicleContainer.cs
index bf7b8ff70d78ff536f258fdcad1f273c4b04931e..2974e10c576a6ea9ece28dbc5ce0d774fdfcdefb 100644
--- a/VectoCore/VectoCore/Models/Simulation/Impl/VehicleContainer.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Impl/VehicleContainer.cs
@@ -266,7 +266,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 		public void CommitSimulationStep(Second time, Second simulationInterval)
 		{
 			Log.Info("VehicleContainer committing simulation. time: {0}, dist: {1}, speed: {2}", time,
-				ExecutionMode == ExecutionMode.EngineOnly ? null : Distance, VehicleSpeed);
+				 Distance, VehicleSpeed);
 
 			foreach (var component in _components) {
 				component.Item2.CommitSimulationStep(ModData);
diff --git a/VectoCore/VectoCore/OutputData/ModalDataContainer.cs b/VectoCore/VectoCore/OutputData/ModalDataContainer.cs
index c04636749d6516fde46c0544cc87ae8ae0a9197e..29226905ae74d3404ab9e8dce06ff4d3a9c7d2c4 100644
--- a/VectoCore/VectoCore/OutputData/ModalDataContainer.cs
+++ b/VectoCore/VectoCore/OutputData/ModalDataContainer.cs
@@ -45,7 +45,7 @@ namespace TUGraz.VectoCore.OutputData
 {
 	public class ModalDataContainer : IModalDataContainer
 	{
-		private readonly ExecutionMode _mode;
+		private readonly bool _writeEngineOnly;
 		private readonly IModalDataFilter[] _filters;
 		private readonly Action<ModalDataContainer> _addReportResult;
 		internal ModalResults Data { get; set; }
@@ -64,15 +64,15 @@ namespace TUGraz.VectoCore.OutputData
 
 		public bool WriteAdvancedAux { get; set; }
 
-		public ModalDataContainer(string runName, IModalDataWriter writer, ExecutionMode mode)
-			: this(runName, "", "", writer, _ => { }, mode) {}
+		public ModalDataContainer(string runName, IModalDataWriter writer, bool writeEngineOnly = false)
+			: this(runName, "", "", writer, _ => { }, writeEngineOnly) {}
 
 		public ModalDataContainer(VectoRunData runData, IModalDataWriter writer, Action<ModalDataContainer> addReportResult,
-			ExecutionMode mode, params IModalDataFilter[] filter)
-			: this(runData.JobName, runData.Cycle.Name, runData.ModFileSuffix, writer, addReportResult, mode, filter) {}
+			bool writeEngineOnly, params IModalDataFilter[] filter)
+			: this(runData.JobName, runData.Cycle.Name, runData.ModFileSuffix, writer, addReportResult, writeEngineOnly, filter) {}
 
 		protected ModalDataContainer(string runName, string cycleName, string runSuffix, IModalDataWriter writer,
-			Action<ModalDataContainer> addReportResult, ExecutionMode mode, params IModalDataFilter[] filters)
+			Action<ModalDataContainer> addReportResult, bool writeEngineOnly, params IModalDataFilter[] filters)
 
 		{
 			HasTorqueConverter = false;
@@ -81,9 +81,9 @@ namespace TUGraz.VectoCore.OutputData
 			RunSuffix = runSuffix;
 			_writer = writer;
 
-			_mode = mode;
+			_writeEngineOnly = writeEngineOnly;
 			_filters = filters;
-			_addReportResult = addReportResult;
+			_addReportResult = addReportResult ?? (x => { });
 
 			Data = new ModalResults();
 			Auxiliaries = new Dictionary<string, DataColumn>();
@@ -105,7 +105,7 @@ namespace TUGraz.VectoCore.OutputData
 
 			RunStatus = runStatus;
 
-			if (_mode != ExecutionMode.EngineOnly) {
+			if (!_writeEngineOnly) {
 				dataColumns.AddRange(new[] {
 					ModalResultField.simulationInterval,
 					ModalResultField.dist,
@@ -115,7 +115,7 @@ namespace TUGraz.VectoCore.OutputData
 					ModalResultField.grad
 				});
 			}
-			if (_mode != ExecutionMode.EngineOnly) {
+			if (!_writeEngineOnly) {
 				dataColumns.AddRange(new[] {
 					ModalResultField.Gear,
 				});
@@ -135,7 +135,7 @@ namespace TUGraz.VectoCore.OutputData
 				ModalResultField.P_aux
 			});
 
-			if (_mode != ExecutionMode.EngineOnly) {
+			if (!_writeEngineOnly) {
 				dataColumns.AddRange(new[] {
 					ModalResultField.P_gbx_in,
 					ModalResultField.P_gbx_loss,
@@ -164,7 +164,7 @@ namespace TUGraz.VectoCore.OutputData
 					});
 				}
 			}
-			if (_mode != ExecutionMode.EngineOnly && WriteAdvancedAux) {
+			if (!_writeEngineOnly && WriteAdvancedAux) {
 				dataColumns.AddRange(new[] {
 					ModalResultField.AA_NonSmartAlternatorsEfficiency,
 					ModalResultField.AA_SmartIdleCurrent_Amps,
@@ -196,7 +196,7 @@ namespace TUGraz.VectoCore.OutputData
 						ModalResultField.FCAAUX, ModalResultField.FCFinal
 					}.Select(x => x.GetName()));
 
-			if (_mode != ExecutionMode.Declaration || WriteModalResults) {
+			if (WriteModalResults) {
 				var filteredData = Data;
 				foreach (var filter in _filters) {
 					RunSuffix += "_" + filter.ID;
@@ -205,9 +205,7 @@ namespace TUGraz.VectoCore.OutputData
 				_writer.WriteModData(RunName, CycleName, RunSuffix, new DataView(filteredData).ToTable(false, strCols.ToArray()));
 			}
 
-			if (_mode == ExecutionMode.Declaration) {
-				_addReportResult(this);
-			}
+			_addReportResult(this);
 		}
 
 		public IEnumerable<T> GetValues<T>(DataColumn col)