diff --git a/VectoCore/Models/Simulation/Impl/VehicleContainer.cs b/VectoCore/Models/Simulation/Impl/VehicleContainer.cs
index 185ec935bb443834bc939045a3c5e0206020ef56..e3fc54da14e0ad6a1d2bd486cc197db6ed8ec286 100644
--- a/VectoCore/Models/Simulation/Impl/VehicleContainer.cs
+++ b/VectoCore/Models/Simulation/Impl/VehicleContainer.cs
@@ -119,9 +119,11 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 				component.CommitSimulationStep(_dataWriter);
 			}
 
-			_dataWriter[ModalResultField.time] = time;
-			_dataWriter[ModalResultField.simulationInterval] = simulationInterval;
-			_dataWriter.CommitSimulationStep();
+			if (_dataWriter != null) {
+				_dataWriter[ModalResultField.time] = time;
+				_dataWriter[ModalResultField.simulationInterval] = simulationInterval;
+				_dataWriter.CommitSimulationStep();
+			}
 		}
 
 		public void FinishSimulation()
diff --git a/VectoCore/Models/SimulationComponent/Impl/AxleGear.cs b/VectoCore/Models/SimulationComponent/Impl/AxleGear.cs
index d460551aacc0ed9c8b812129e064574da68a0ee0..5c9dd9182c63685b90da6f0c1bb34ff69fcdf215 100644
--- a/VectoCore/Models/SimulationComponent/Impl/AxleGear.cs
+++ b/VectoCore/Models/SimulationComponent/Impl/AxleGear.cs
@@ -39,7 +39,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 				angularVelocity * _gearData.Ratio);
 		}
 
-		public override void CommitSimulationStep(IModalDataWriter writer)
+		protected override void DoCommitSimulationStep(IModalDataWriter writer)
 		{
 			// nothing to commit
 		}
diff --git a/VectoCore/Models/SimulationComponent/Impl/Clutch.cs b/VectoCore/Models/SimulationComponent/Impl/Clutch.cs
index 8115687d9f6bdf58148b624557911c6864d9f7a9..c6b5f3e971df435fbafa1981e57eb70742983690 100644
--- a/VectoCore/Models/SimulationComponent/Impl/Clutch.cs
+++ b/VectoCore/Models/SimulationComponent/Impl/Clutch.cs
@@ -35,7 +35,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			return _clutchState;
 		}
 
-		public override void CommitSimulationStep(IModalDataWriter writer)
+		protected override void DoCommitSimulationStep(IModalDataWriter writer)
 		{
 			//todo: implement!
 			//throw new NotImplementedException();
diff --git a/VectoCore/Models/SimulationComponent/Impl/CombustionEngine.cs b/VectoCore/Models/SimulationComponent/Impl/CombustionEngine.cs
index 72c376749914d588273baa74cbbe39b241d49075..c37ce4de1b0e644108a1d58bec08cde9446102ee 100644
--- a/VectoCore/Models/SimulationComponent/Impl/CombustionEngine.cs
+++ b/VectoCore/Models/SimulationComponent/Impl/CombustionEngine.cs
@@ -113,7 +113,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 
 		#region VectoSimulationComponent
 
-		public override void CommitSimulationStep(IModalDataWriter writer)
+		protected override void DoCommitSimulationStep(IModalDataWriter writer)
 		{
 			writer[ModalResultField.PaEng] = (double)_currentState.EnginePowerLoss;
 			writer[ModalResultField.Pe_drag] = (double)_currentState.FullDragPower;
diff --git a/VectoCore/Models/SimulationComponent/Impl/DirectAuxiliary.cs b/VectoCore/Models/SimulationComponent/Impl/DirectAuxiliary.cs
index 6617c929f4df3319e190f839986a1f8a8c5c9f0f..b4351ea681d44c8b1f7105159924c726aff84137 100644
--- a/VectoCore/Models/SimulationComponent/Impl/DirectAuxiliary.cs
+++ b/VectoCore/Models/SimulationComponent/Impl/DirectAuxiliary.cs
@@ -67,7 +67,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 
 		#region VectoSimulationComponent
 
-		public override void CommitSimulationStep(IModalDataWriter writer)
+		protected override void DoCommitSimulationStep(IModalDataWriter writer)
 		{
 			writer[ModalResultField.Paux] = (double)_powerDemand;
 		}
diff --git a/VectoCore/Models/SimulationComponent/Impl/DistanceBasedDrivingCycle.cs b/VectoCore/Models/SimulationComponent/Impl/DistanceBasedDrivingCycle.cs
index e16b4717a1b18642386a2893b711f9d304e3eea9..6d9cfbd5bc992b43ff9bcabb79d33fff37511591 100644
--- a/VectoCore/Models/SimulationComponent/Impl/DistanceBasedDrivingCycle.cs
+++ b/VectoCore/Models/SimulationComponent/Impl/DistanceBasedDrivingCycle.cs
@@ -134,15 +134,13 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 
 		#endregion
 
-		protected IResponse ProcessResponse(IResponse response) {}
-
 		#region VectoSimulationComponent
 
-		public override void CommitSimulationStep(IModalDataWriter writer)
+		protected override void DoCommitSimulationStep(IModalDataWriter writer)
 		{
 			_previousState = _currentState;
-			_currentState = new DrivingCycleState();
-			throw new NotImplementedException("Distance based Cycle is not yet implemented.");
+			_currentState = _currentState.Clone();
+			// todo: write something?
 		}
 
 		#endregion
diff --git a/VectoCore/Models/SimulationComponent/Impl/Driver.cs b/VectoCore/Models/SimulationComponent/Impl/Driver.cs
index 135294610bcabdc94b212d99b111eeebdc550489..74460c5ebec083619a247e9a40143a99d22870cf 100644
--- a/VectoCore/Models/SimulationComponent/Impl/Driver.cs
+++ b/VectoCore/Models/SimulationComponent/Impl/Driver.cs
@@ -43,6 +43,6 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			return this;
 		}
 
-		public override void CommitSimulationStep(IModalDataWriter writer) {}
+		protected override void DoCommitSimulationStep(IModalDataWriter writer) {}
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/Models/SimulationComponent/Impl/EngineOnlyDrivingCycle.cs b/VectoCore/Models/SimulationComponent/Impl/EngineOnlyDrivingCycle.cs
index e4ecf5e6b311a21d3430d838a46fda817fc1293d..0c2545d1a6d9b9ac2026f614eb03deb690a25436 100644
--- a/VectoCore/Models/SimulationComponent/Impl/EngineOnlyDrivingCycle.cs
+++ b/VectoCore/Models/SimulationComponent/Impl/EngineOnlyDrivingCycle.cs
@@ -79,7 +79,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 
 		#region VectoSimulationComponent
 
-		public override void CommitSimulationStep(IModalDataWriter writer) {}
+		protected override void DoCommitSimulationStep(IModalDataWriter writer) {}
 
 		#endregion
 	}
diff --git a/VectoCore/Models/SimulationComponent/Impl/EngineOnlyGearbox.cs b/VectoCore/Models/SimulationComponent/Impl/EngineOnlyGearbox.cs
index e47a981c80666df47721a39a67291e2ad8ed8c46..ea744c846bbb3f76521b07f2da5b7861e827bb70 100644
--- a/VectoCore/Models/SimulationComponent/Impl/EngineOnlyGearbox.cs
+++ b/VectoCore/Models/SimulationComponent/Impl/EngineOnlyGearbox.cs
@@ -66,7 +66,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 
 		#region VectoSimulationComponent
 
-		public override void CommitSimulationStep(IModalDataWriter writer) {}
+		protected override void DoCommitSimulationStep(IModalDataWriter writer) {}
 
 		#endregion
 	}
diff --git a/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs b/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs
index 7faeb67cc9c67eb4ddeb3fcfd277340caf78d96b..67c4625409302a753837b581dc7da533f3a80729 100644
--- a/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs
+++ b/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs
@@ -66,7 +66,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 
 		#region VectoSimulationComponent
 
-		public override void CommitSimulationStep(IModalDataWriter writer)
+		protected override void DoCommitSimulationStep(IModalDataWriter writer)
 		{
 			throw new NotImplementedException();
 		}
diff --git a/VectoCore/Models/SimulationComponent/Impl/MappingAuxiliary.cs b/VectoCore/Models/SimulationComponent/Impl/MappingAuxiliary.cs
index b55ac5422a646c979bcecf8f92a56db24f39bb19..26e68743cdadfc9cc5165dd5bb4cfee837d9b903 100644
--- a/VectoCore/Models/SimulationComponent/Impl/MappingAuxiliary.cs
+++ b/VectoCore/Models/SimulationComponent/Impl/MappingAuxiliary.cs
@@ -95,7 +95,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 
 		#region VectoSimulationComponent
 
-		public override void CommitSimulationStep(IModalDataWriter writer)
+		protected override void DoCommitSimulationStep(IModalDataWriter writer)
 		{
 			writer[ModalResultField.Paux_xxx] = (double)_powerDemand;
 		}
diff --git a/VectoCore/Models/SimulationComponent/Impl/Retarder.cs b/VectoCore/Models/SimulationComponent/Impl/Retarder.cs
index b3cb58d0ba2397360ef27bdaddb291eca39bb2af..fedcce98821ae97966098ad22064f7136969e30d 100644
--- a/VectoCore/Models/SimulationComponent/Impl/Retarder.cs
+++ b/VectoCore/Models/SimulationComponent/Impl/Retarder.cs
@@ -21,7 +21,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			_lossMap = lossMap;
 		}
 
-		public override void CommitSimulationStep(IModalDataWriter writer)
+		protected override void DoCommitSimulationStep(IModalDataWriter writer)
 		{
 			writer[ModalResultField.PlossRetarder] = _lossMap;
 		}
diff --git a/VectoCore/Models/SimulationComponent/Impl/TimeBasedDrivingCycle.cs b/VectoCore/Models/SimulationComponent/Impl/TimeBasedDrivingCycle.cs
index 5100afd79d15fe6070528e928332738d4067356a..3df954e12d2d3b3a85f15caba0f279a4b82faa23 100644
--- a/VectoCore/Models/SimulationComponent/Impl/TimeBasedDrivingCycle.cs
+++ b/VectoCore/Models/SimulationComponent/Impl/TimeBasedDrivingCycle.cs
@@ -84,10 +84,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 
 		#region VectoSimulationComponent
 
-		public override
-			void CommitSimulationStep
-			(IModalDataWriter
-				writer) {}
+		protected override void DoCommitSimulationStep(IModalDataWriter writer) {}
 
 		#endregion
 	}
diff --git a/VectoCore/Models/SimulationComponent/Impl/Vehicle.cs b/VectoCore/Models/SimulationComponent/Impl/Vehicle.cs
index 713048a5297339097083b4d013e311b2cc3c2728..f46900260d3dd2bff8be4d08f9d69eee3a0e0387 100644
--- a/VectoCore/Models/SimulationComponent/Impl/Vehicle.cs
+++ b/VectoCore/Models/SimulationComponent/Impl/Vehicle.cs
@@ -43,7 +43,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			_nextInstance = other;
 		}
 
-		public override void CommitSimulationStep(IModalDataWriter writer)
+		protected override void DoCommitSimulationStep(IModalDataWriter writer)
 		{
 			_previousState = _currentState;
 			_currentState = new VehicleState();
diff --git a/VectoCore/Models/SimulationComponent/Impl/Wheels.cs b/VectoCore/Models/SimulationComponent/Impl/Wheels.cs
index 5bc8b3c00ed76ab07d1d39c2c5bb2f781316f5b9..c345abbf025c6bf3bb2e47e04b497814f248937c 100644
--- a/VectoCore/Models/SimulationComponent/Impl/Wheels.cs
+++ b/VectoCore/Models/SimulationComponent/Impl/Wheels.cs
@@ -57,7 +57,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 
 		#region VectoSimulationComponent
 
-		public override void CommitSimulationStep(IModalDataWriter writer)
+		protected override void DoCommitSimulationStep(IModalDataWriter writer)
 		{
 			throw new NotImplementedException();
 		}
diff --git a/VectoCore/Models/SimulationComponent/VectoSimulationComponent.cs b/VectoCore/Models/SimulationComponent/VectoSimulationComponent.cs
index 85ae6769dd5bdf764ed13b236619d741a343fcb0..2ed066357b79ebb6f3388a4ff150f94fd0d106f5 100644
--- a/VectoCore/Models/SimulationComponent/VectoSimulationComponent.cs
+++ b/VectoCore/Models/SimulationComponent/VectoSimulationComponent.cs
@@ -26,12 +26,19 @@ namespace TUGraz.VectoCore.Models.SimulationComponent
 			cockpit.AddComponent(this);
 		}
 
+		public void CommitSimulationStep(IModalDataWriter writer)
+		{
+			if (writer != null) {
+				DoCommitSimulationStep(writer);
+			}
+		}
+
 		/// <summary>
 		/// Commits the simulation step.
 		/// Writes the moddata into the data writer.
 		/// Commits the internal state of the object if needed.
 		/// </summary>
 		/// <param name="writer">a data writer to write the data into.</param>
-		public abstract void CommitSimulationStep(IModalDataWriter writer);
+		protected abstract void DoCommitSimulationStep(IModalDataWriter writer);
 	}
 }
\ No newline at end of file