diff --git a/VECTO/GUI/F_MAINForm.vb b/VECTO/GUI/F_MAINForm.vb
index 1b1dc30088d35034a62b059810b0c3e40fe36da7..07a496cb5229f3c2a32bff293c641f093b6a9955 100644
--- a/VECTO/GUI/F_MAINForm.vb
+++ b/VECTO/GUI/F_MAINForm.vb
@@ -495,6 +495,7 @@ Imports System.Threading
 		ModeUpdate()
 
 		'License check
+		'TODO uncomment license check
 		If False And Not Lic.LICcheck() Then
 			MsgBox("License File invalid!" & vbCrLf & vbCrLf & Lic.FailMsg)
 			If Lic.CreateActFile(MyAppPath & "ActivationCode.dat") Then
@@ -549,36 +550,25 @@ Imports System.Threading
 	End Sub
 
 	Private Sub VectoWorkerV3_OnProgressChanged(sender As Object, e As ProgressChangedEventArgs)
-		Dim x As cWorkProg
-		x = e.UserState
+		Dim progress As cWorkProg
+		progress = e.UserState
 
-		Select Case x.Target
+		Select Case progress.Target
 			Case tWorkMsgType.StatusListBox
-				MSGtoForm(e.UserState.ID, e.UserState.Msg, x.Source, x.Link)
-
-			Case tWorkMsgType.StatusBar
-				Status(e.UserState.Msg)
+				MSGtoForm(e.UserState.ID, e.UserState.Msg, progress.Source, progress.Link)
 
 			Case tWorkMsgType.ProgBars
-				Me.ToolStripProgBarOverall.Value = e.ProgressPercentage
+				ToolStripProgBarOverall.Value = e.ProgressPercentage
 				ProgSecStart()
 
-			Case tWorkMsgType.JobStatus
-				CheckedItems(x.FileIndex).SubItems(1).Text = x.Msg
-				SetCheckedItemColor(x.FileIndex, x.Status)
-
-			Case tWorkMsgType.CycleStatus
-				Try
-					Me.LvDRI.CheckedItems(x.FileIndex).SubItems(1).Text = x.Msg
-				Catch ex As Exception
-				End Try
-
 			Case tWorkMsgType.InitProgBar
-				Me.ToolStripProgBarOverall.Style = ProgressBarStyle.Continuous
+				ToolStripProgBarOverall.Style = ProgressBarStyle.Continuous
 
 			Case Else ' tWorkMsgType.Abort
-				JobAbort()
-
+				Button2.Enabled = False
+				Button2.Text = "Aborting..."
+				Button2.Image = My.Resources.Play_icon_gray
+				VECTOworkerV3.CancelAsync()
 		End Select
 	End Sub
 
diff --git a/VectoConsole/App.config b/VectoConsole/App.config
index b9fc82b72b412787b48895da9c5ccb501157bd12..6fcb136b5b1185acd8953c27c12e358dec9102dc 100644
--- a/VectoConsole/App.config
+++ b/VectoConsole/App.config
@@ -1,23 +1,25 @@
 <?xml version="1.0" encoding="utf-8"?>
+
 <configuration>
-  <configSections>
-	<section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog" />
-  </configSections>
-  <startup>
-	<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
-  </startup>
-  <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
-      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-      xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
-      autoReload="true"
-      throwExceptions="false"
-      internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log" >
-	<targets>
-	  <target xsi:type="Console" name="ConsoleLogger" error="true" />
-	  <target xsi:type="File" name="LogFile" fileName="${basedir}/logs/log.txt" layout="${longdate} [${processid}@${machinename}] ${callsite} ${level:uppercase=true}: ${message}" />
-	</targets>
-	<rules>
-	  <logger name="*" minlevel="Info" writeTo="LogFile" />
-	</rules>
-  </nlog>
+	<configSections>
+		<section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog" />
+	</configSections>
+	<startup>
+		<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
+	</startup>
+	<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
+		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+		xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
+		autoReload="true"
+		throwExceptions="false"
+		internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log">
+		<targets>
+			<target xsi:type="Console" name="ConsoleLogger" error="true" />
+			<target xsi:type="File" name="LogFile" fileName="${basedir}/logs/log.txt"
+					layout="${longdate} [${processid}:${threadid}@${machinename}] ${callsite} ${level:uppercase=true}: ${message}" />
+		</targets>
+		<rules>
+			<logger name="*" minlevel="Info" writeTo="LogFile" />
+		</rules>
+	</nlog>
 </configuration>
\ No newline at end of file
diff --git a/VectoConsole/Program.cs b/VectoConsole/Program.cs
index 1a4404f5d8b76ff7442a8da912bc328dfdc4771d..a9f52003080dff0056a83759084e757799d5c0ff 100644
--- a/VectoConsole/Program.cs
+++ b/VectoConsole/Program.cs
@@ -1,7 +1,10 @@
 using System;
+using System.Collections.Generic;
 using System.Diagnostics;
 using System.IO;
 using System.Linq;
+using System.Runtime.Remoting.Channels;
+using System.Threading;
 using NLog;
 using NLog.Config;
 using TUGraz.VectoCore.Configuration;
@@ -12,6 +15,9 @@ namespace VectoConsole
 {
 	internal static class Program
 	{
+		private static int NumLines;
+		private static int ProgessCounter { get; set; }
+
 		private const string USAGE = @"Usage: vecto.exe [-h] [-v] FILE1.vecto [FILE2.vecto ...]";
 
 		private const string HELP = @"
@@ -82,12 +88,29 @@ Examples:
 				var sumWriter = new SummaryFileWriter(sumFileName);
 				var jobContainer = new JobContainer(sumWriter);
 
+				Console.WriteLine("Reading Job Files");
 				foreach (var file in fileList.Where(f => Path.GetExtension(f) == Constants.FileExtensions.VectoJobFile)) {
-					var runsFactory = new SimulatorFactory(SimulatorFactory.FactoryMode.EngineeringMode, file);
+					var runsFactory = new SimulatorFactory(SimulatorFactory.FactoryMode.DeclarationMode, file);
 					jobContainer.AddRuns(runsFactory);
 				}
 
+				Console.WriteLine("Starting simulation runs");
 				jobContainer.Execute();
+
+				Console.CancelKeyPress += (object sender, ConsoleCancelEventArgs e) => {
+					var isCtrlC = e.SpecialKey == ConsoleSpecialKey.ControlC;
+					var isCtrlBreak = e.SpecialKey == ConsoleSpecialKey.ControlBreak;
+
+					if (isCtrlC) {
+						Console.WriteLine("Canceling simulation!");
+					}
+				};
+
+				//var x = Console.CursorLeft;
+				while (!jobContainer.AllCompleted) {
+					PrintProgress(jobContainer.GetProgress());
+					Thread.Sleep(250);
+				}
 			} catch (Exception e) {
 				Console.Error.WriteLine(e.Message);
 				Trace.TraceError(e.ToString());
@@ -95,5 +118,22 @@ Examples:
 			}
 			return Environment.ExitCode;
 		}
+
+		private static void PrintProgress(Dictionary<string, double> progessData)
+		{
+			Console.SetCursorPosition(0, Console.CursorTop - NumLines);
+			NumLines = 0;
+			var sumProgress = 0.0;
+			foreach (var progress in progessData) {
+				Console.WriteLine(string.Format("{0,-60}  {1,8:P}", progress.Key, progress.Value));
+				sumProgress += progress.Value;
+				NumLines++;
+			}
+			sumProgress /= NumLines;
+			var spinner = "/-\\|"[ProgessCounter++ % 4];
+			var bar = new string('#', (int)(sumProgress * 100.0 / 2));
+			Console.WriteLine(string.Format("   {2}   [{1,-50}]    [{0,6:P}]", sumProgress, bar, spinner));
+			NumLines++;
+		}
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/FileIO/Reader/DrivingCycleDataReader.cs b/VectoCore/FileIO/Reader/DrivingCycleDataReader.cs
index e89301e83a81b221b6d945dcbb25ec7b3fb1a784..a038741817118ddfbf54fb1852f4107dd80aa482 100644
--- a/VectoCore/FileIO/Reader/DrivingCycleDataReader.cs
+++ b/VectoCore/FileIO/Reader/DrivingCycleDataReader.cs
@@ -245,9 +245,7 @@ namespace TUGraz.VectoCore.FileIO.Reader
 				return table.Rows.Cast<DataRow>().Select(row => new DrivingCycleData.DrivingCycleEntry {
 					Distance = row.ParseDouble(Fields.Distance).SI<Meter>(),
 					VehicleTargetSpeed =
-						row.ParseDouble(Fields.VehicleSpeed)
-							.SI()
-							.Kilo.Meter.Per.Hour.Cast<MeterPerSecond>(),
+						row.ParseDouble(Fields.VehicleSpeed).KMPHtoMeterPerSecond(),
 					RoadGradientPercent = row.ParseDoubleOrGetDefault(Fields.RoadGradient),
 					RoadGradient =
 						VectoMath.InclinationToAngle(row.ParseDoubleOrGetDefault(Fields.RoadGradient) / 100.0),
@@ -259,9 +257,7 @@ namespace TUGraz.VectoCore.FileIO.Reader
 						row.ParseDoubleOrGetDefault(Fields.EngineSpeed).SI().Rounds.Per.Minute.Cast<PerSecond>(),
 					Gear = row.ParseDoubleOrGetDefault(Fields.Gear),
 					AirSpeedRelativeToVehicle =
-						row.ParseDoubleOrGetDefault(Fields.AirSpeedRelativeToVehicle)
-							.SI()
-							.Kilo.Meter.Per.Hour.Cast<MeterPerSecond>(),
+						row.ParseDoubleOrGetDefault(Fields.AirSpeedRelativeToVehicle).KMPHtoMeterPerSecond(),
 					WindYawAngle = row.ParseDoubleOrGetDefault(Fields.WindYawAngle),
 					AuxiliarySupplyPower = AuxSupplyPowerReader.Read(row)
 				});
@@ -316,9 +312,7 @@ namespace TUGraz.VectoCore.FileIO.Reader
 				var entries = table.Rows.Cast<DataRow>().Select((row, index) => new DrivingCycleData.DrivingCycleEntry {
 					Time = row.ParseDoubleOrGetDefault(Fields.Time, index).SI<Second>(),
 					VehicleTargetSpeed =
-						row.ParseDouble(Fields.VehicleSpeed)
-							.SI()
-							.Kilo.Meter.Per.Hour.Cast<MeterPerSecond>(),
+						row.ParseDouble(Fields.VehicleSpeed).KMPHtoMeterPerSecond(),
 					RoadGradientPercent = row.ParseDoubleOrGetDefault(Fields.RoadGradient),
 					RoadGradient =
 						VectoMath.InclinationToAngle(row.ParseDoubleOrGetDefault(Fields.RoadGradient) / 100.0),
@@ -328,9 +322,7 @@ namespace TUGraz.VectoCore.FileIO.Reader
 					EngineSpeed =
 						row.ParseDoubleOrGetDefault(Fields.EngineSpeed).SI().Rounds.Per.Minute.Cast<PerSecond>(),
 					AirSpeedRelativeToVehicle =
-						row.ParseDoubleOrGetDefault(Fields.AirSpeedRelativeToVehicle)
-							.SI()
-							.Kilo.Meter.Per.Hour.Cast<MeterPerSecond>(),
+						row.ParseDoubleOrGetDefault(Fields.AirSpeedRelativeToVehicle).KMPHtoMeterPerSecond(),
 					WindYawAngle = row.ParseDoubleOrGetDefault(Fields.WindYawAngle),
 					AuxiliarySupplyPower = AuxSupplyPowerReader.Read(row)
 				}).ToArray();
diff --git a/VectoCore/Models/Connector/Ports/ISimulationPort.cs b/VectoCore/Models/Connector/Ports/ISimulationPort.cs
index 77026657a8d436728b82122bcdd2b57c64ec6c01..a30199ffef7b5f969a9b719d6bc301e3b60c4c84 100644
--- a/VectoCore/Models/Connector/Ports/ISimulationPort.cs
+++ b/VectoCore/Models/Connector/Ports/ISimulationPort.cs
@@ -33,5 +33,6 @@ namespace TUGraz.VectoCore.Models.Connector.Ports
 		IResponse Request(Second absTime, Second dt);
 
 		IResponse Initialize();
+		double Progress { get; }
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/Models/Simulation/Data/ModalResult.cs b/VectoCore/Models/Simulation/Data/ModalResult.cs
index a45ce1996027e76b216379675fa3ae4e63fb4202..27d588e1043a9070b9f56058921de86812e093ff 100644
--- a/VectoCore/Models/Simulation/Data/ModalResult.cs
+++ b/VectoCore/Models/Simulation/Data/ModalResult.cs
@@ -271,6 +271,8 @@ namespace TUGraz.VectoCore.Models.Simulation.Data
 		///     [m]	Altitude
 		/// </summary>
 		[ModalResultField(typeof(SI))] altitude,
+
+		[ModalResultField(typeof(SI), name: "ds [m]")] simulationDistance
 	}
 
 
diff --git a/VectoCore/Models/Simulation/IVectoRun.cs b/VectoCore/Models/Simulation/IVectoRun.cs
index f14714fdbfade715cbec59989fc9d9e029c245ee..63a7b080ad722371fc46b8d95223a5c20f7f9618 100644
--- a/VectoCore/Models/Simulation/IVectoRun.cs
+++ b/VectoCore/Models/Simulation/IVectoRun.cs
@@ -1,3 +1,5 @@
+using System.ComponentModel;
+
 namespace TUGraz.VectoCore.Models.Simulation
 {
 	/// <summary>
@@ -8,7 +10,7 @@ namespace TUGraz.VectoCore.Models.Simulation
 		/// <summary>
 		/// Run the simulation.
 		/// </summary>
-		void Run();
+		void Run(BackgroundWorker worker = null);
 
 		string Name { get; }
 
@@ -17,5 +19,7 @@ namespace TUGraz.VectoCore.Models.Simulation
 		/// </summary>
 		/// <returns></returns>
 		IVehicleContainer GetContainer();
+
+		bool FinishedWithoutErrors { get; }
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/Models/Simulation/Impl/DistanceRun.cs b/VectoCore/Models/Simulation/Impl/DistanceRun.cs
index a4b7695ac4b36ea1e9564bd3264561e834cfce40..73f33ef975d9eab24e2295f3e9c28139013e7e47 100644
--- a/VectoCore/Models/Simulation/Impl/DistanceRun.cs
+++ b/VectoCore/Models/Simulation/Impl/DistanceRun.cs
@@ -36,6 +36,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 						ds = r.MaxDistance;
 					}).
 					Case<ResponseCycleFinished>(r => {
+						FinishedWithoutErrors = true;
 						Log.Info("========= Driving Cycle Finished");
 					}).
 					Default(r => {
diff --git a/VectoCore/Models/Simulation/Impl/JobContainer.cs b/VectoCore/Models/Simulation/Impl/JobContainer.cs
index d399e270a4b35e684d1d50a27acbf416264739e5..6edded3df13b23addbd9e0bde1a9542e8d3f8e3b 100644
--- a/VectoCore/Models/Simulation/Impl/JobContainer.cs
+++ b/VectoCore/Models/Simulation/Impl/JobContainer.cs
@@ -1,5 +1,8 @@
+using System;
 using System.Collections.Generic;
+using System.ComponentModel;
 using System.Linq;
+using System.Threading;
 using System.Threading.Tasks;
 using TUGraz.VectoCore.Models.Simulation.Data;
 
@@ -14,7 +17,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 	/// </summary>
 	public class JobContainer : LoggingObject
 	{
-		private readonly List<IVectoRun> _runs = new List<IVectoRun>();
+		internal readonly List<JobEntry> Runs = new List<JobEntry>();
 		private readonly SummaryFileWriter _sumWriter;
 
 		private static int _jobNumber;
@@ -31,32 +34,132 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 		public void AddRun(IVectoRun run)
 		{
 			_jobNumber++;
-			_runs.Add(run);
+			Runs.Add(new JobEntry() {
+				Run = run,
+				Container = this,
+			});
 		}
 
 		public void AddRuns(IEnumerable<IVectoRun> runs)
 		{
 			_jobNumber++;
-			_runs.AddRange(runs);
+			//Runs.AddRange(runs);
+			foreach (var run in runs) {
+				Runs.Add(new JobEntry() {
+					Run = run,
+					Container = this,
+				});
+			}
 		}
 
 		public void AddRuns(SimulatorFactory factory)
 		{
 			factory.SumWriter = _sumWriter;
 			factory.JobNumber = _jobNumber++;
-			_runs.AddRange(factory.SimulationRuns());
+			AddRuns(factory.SimulationRuns());
 		}
 
 		/// <summary>
 		/// Execute all runs, waits until finished.
 		/// </summary>
-		public void Execute()
+		public void Execute(bool multithreaded = true)
 		{
 			Log.Info("VectoRun started running. Executing Runs.");
 
-			Task.WaitAll(_runs.Select(r => Task.Factory.StartNew(r.Run)).ToArray());
+			foreach (var job in Runs) {
+				job.Worker = new BackgroundWorker() {
+					WorkerSupportsCancellation = true,
+					WorkerReportsProgress = true,
+				};
+				job.Worker.DoWork += job.DoWork;
+				job.Worker.ProgressChanged += job.ProgressChanged;
+				job.Worker.RunWorkerCompleted += job.RunWorkerCompleted;
+				if (multithreaded) {
+					job.Started = true;
+					job.Worker.RunWorkerAsync();
+				}
+			}
+			if (!multithreaded) {
+				var entry = Runs.First();
+				entry.Started = true;
+				entry.Worker.RunWorkerAsync();
+			}
+			//Task.WaitAll(_runs.Select(r => Task.Factory.StartNew(r.Run)).ToArray());
 
 			_sumWriter.Finish();
 		}
+
+		public void Cancel()
+		{
+			foreach (var job in Runs) {
+				if (job.Worker != null && job.Worker.WorkerSupportsCancellation) {
+					job.Worker.CancelAsync();
+				}
+			}
+		}
+
+		private static AutoResetEvent resetEvent = new AutoResetEvent(false);
+
+		public void WaitFinished()
+		{
+			resetEvent.WaitOne();
+		}
+
+
+		private void JobCompleted(JobEntry jobEntry)
+		{
+			var next = Runs.FirstOrDefault(x => x.Started == false);
+			if (next != null) {
+				next.Started = true;
+				next.Worker.RunWorkerAsync();
+			}
+			if (Runs.Count(x => x.Done == true) == Runs.Count()) {
+				_sumWriter.Finish();
+				resetEvent.Set();
+			}
+		}
+
+		public Dictionary<string, double> GetProgress()
+		{
+			return Runs.ToDictionary(jobEntry => jobEntry.Run.Name, jobEntry => jobEntry.Progress);
+		}
+
+		public bool AllCompleted
+		{
+			get { return (Runs.Count(x => x.Done == true) == Runs.Count()); }
+		}
+
+		internal class JobEntry
+		{
+			public IVectoRun Run;
+			public JobContainer Container;
+			public double Progress;
+			public bool Done;
+			public bool Started;
+			public bool Success;
+			public bool Canceled;
+
+			public BackgroundWorker Worker;
+
+			public void DoWork(object sender, DoWorkEventArgs e)
+			{
+				var worker = sender as BackgroundWorker;
+				Run.Run(worker);
+				if (worker != null && worker.CancellationPending) {
+					e.Cancel = true;
+					Canceled = true;
+				}
+				Success = Run.FinishedWithoutErrors;
+				Done = true;
+				Container.JobCompleted(this);
+			}
+
+			public void RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) {}
+
+			public void ProgressChanged(object sender, ProgressChangedEventArgs e)
+			{
+				Progress = e.ProgressPercentage / 1000.0;
+			}
+		}
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/Models/Simulation/Impl/VectoRun.cs b/VectoCore/Models/Simulation/Impl/VectoRun.cs
index 29e3d8bf3c01076129951694f0d89ee026597056..628019912503373d9d301d214e1ddb2215ffef31 100644
--- a/VectoCore/Models/Simulation/Impl/VectoRun.cs
+++ b/VectoCore/Models/Simulation/Impl/VectoRun.cs
@@ -1,4 +1,5 @@
 using System;
+using System.ComponentModel;
 using TUGraz.VectoCore.Exceptions;
 using TUGraz.VectoCore.Models.Connector.Ports;
 using TUGraz.VectoCore.Models.Connector.Ports.Impl;
@@ -23,6 +24,8 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 		//protected IModalDataWriter DataWriter { get; set; }
 		protected IVehicleContainer Container { get; set; }
 
+		public bool FinishedWithoutErrors { get; protected set; }
+
 		protected VectoRun(IVehicleContainer container)
 		{
 			Container = container;
@@ -35,7 +38,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 		}
 
 
-		public void Run()
+		public void Run(BackgroundWorker worker = null)
 		{
 			Log.Info("VectoJob started running.");
 
@@ -48,16 +51,30 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 						Container.CommitSimulationStep(AbsTime, dt);
 						AbsTime += dt;
 					}
+					if (worker != null) {
+						worker.ReportProgress((int)(CyclePort.Progress * 1000));
+						if (worker.CancellationPending) {
+							Log.Info("Background Task canceled!");
+							Container.FinishSimulation();
+							return;
+						}
+					}
 				} while (response is ResponseSuccess);
 			} catch (VectoSimulationException vse) {
+				Log.Error("SIMULATION RUN ABORTED! ========================");
+				Log.Error(vse);
 				Container.FinishSimulation();
 				throw new VectoSimulationException("{6} - absTime: {0}, distance: {1}, dt: {2}, v: {3}, Gear: {4} | {5}", vse,
 					AbsTime, Container.Distance, dt, Container.VehicleSpeed, Container.Gear, vse.Message, Name);
 			} catch (VectoException ve) {
+				Log.Error("SIMULATION RUN ABORTED! ========================");
+				Log.Error(ve);
 				Container.FinishSimulation();
 				throw new VectoSimulationException("{6} - absTime: {0}, distance: {1}, dt: {2}, v: {3}, Gear: {4} | {5}", ve,
 					AbsTime, Container.Distance, dt, Container.VehicleSpeed, Container.Gear, ve.Message, Name);
 			} catch (Exception e) {
+				Log.Error("SIMULATION RUN ABORTED! ========================");
+				Log.Error(e);
 				Container.FinishSimulation();
 				throw new VectoSimulationException("{6} - absTime: {0}, distance: {1}, dt: {2}, v: {3}, Gear: {4} | {5}", e, AbsTime,
 					Container.Distance, dt, Container.VehicleSpeed, Container.Gear, e.Message, Name);
diff --git a/VectoCore/Models/SimulationComponent/Data/AccelerationCurve.cs b/VectoCore/Models/SimulationComponent/Data/AccelerationCurve.cs
index 9b3fffe7e6b01d5158f81fc9fb3bc9f42b3100c0..17417da1f038c362ce373c40ba435053f4440a75 100644
--- a/VectoCore/Models/SimulationComponent/Data/AccelerationCurve.cs
+++ b/VectoCore/Models/SimulationComponent/Data/AccelerationCurve.cs
@@ -38,7 +38,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 			return new AccelerationCurveData {
 				_entries = data.Rows.Cast<DataRow>()
 					.Select(r => new KeyValuePair<MeterPerSecond, AccelerationEntry>(
-						r.ParseDouble("v").SI().Kilo.Meter.Per.Hour.Cast<MeterPerSecond>(),
+						r.ParseDouble("v").KMPHtoMeterPerSecond(),
 						new AccelerationEntry {
 							Acceleration = r.ParseDouble("acc").SI<MeterPerSquareSecond>(),
 							Deceleration = r.ParseDouble("dec").SI<MeterPerSquareSecond>()
diff --git a/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs b/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs
index 20e33b17a8fc6d4d2b0c9c45001d6079fdcd27df..b982f09e13b2ee0729a9776cf5e5c50cf2726470 100644
--- a/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs
+++ b/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs
@@ -17,6 +17,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 {
 	public class DefaultDriverStrategy : LoggingObject, IDriverStrategy
 	{
+		public static readonly SIBase<Meter> BrakingSafetyMargin = 0.1.SI<Meter>();
+
 		protected internal DrivingBehaviorEntry NextDrivingAction;
 
 		public enum DrivingMode
@@ -43,7 +45,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 		public IResponse Request(Second absTime, Meter ds, MeterPerSecond targetVelocity, Radian gradient)
 		{
 			if (CurrentDrivingMode == DrivingMode.DrivingModeBrake) {
-				if (Driver.DataBus.Distance.IsGreaterOrEqual(BrakeTrigger.TriggerDistance)) {
+				if (Driver.DataBus.Distance.IsGreaterOrEqual(BrakeTrigger.TriggerDistance, 1e-3.SI<Meter>())) {
 					CurrentDrivingMode = DrivingMode.DrivingModeDrive;
 					NextDrivingAction = null;
 					DrivingModes[CurrentDrivingMode].ResetMode();
@@ -107,7 +109,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 							NextDrivingAction.ActionDistance = NextDrivingAction.TriggerDistance - coastingDistance;
 							break;
 						case DrivingBehavior.Braking:
-							var brakingDistance = Driver.ComputeDecelerationDistance(NextDrivingAction.NextTargetSpeed);
+							var brakingDistance = Driver.ComputeDecelerationDistance(NextDrivingAction.NextTargetSpeed) + BrakingSafetyMargin;
 							NextDrivingAction.ActionDistance = NextDrivingAction.TriggerDistance - brakingDistance;
 							break;
 						default:
@@ -155,7 +157,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 				if (nextTargetSpeed < currentSpeed) {
 					if (!Driver.DriverData.LookAheadCoasting.Enabled ||
 						currentSpeed < Driver.DriverData.LookAheadCoasting.MinSpeed) {
-						var brakingDistance = Driver.ComputeDecelerationDistance(nextTargetSpeed);
+						var brakingDistance = Driver.ComputeDecelerationDistance(nextTargetSpeed) + BrakingSafetyMargin;
 						Log.Debug("adding 'Braking' starting at distance {0}. brakingDistance: {1}, triggerDistance: {2}",
 							entry.Distance - brakingDistance, brakingDistance, entry.Distance);
 						nextActions.Add(new DrivingBehaviorEntry {
@@ -381,7 +383,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 				default:
 					return response;
 			}
-			return null;
+			return response;
 		}
 
 		public override void ResetMode() {}
@@ -433,7 +435,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			var currentDistance = DataBus.Distance;
 
 			if (Phase == BrakingPhase.Coast) {
-				var brakingDistance = Driver.ComputeDecelerationDistance(DriverStrategy.BrakeTrigger.NextTargetSpeed);
+				var brakingDistance = Driver.ComputeDecelerationDistance(DriverStrategy.BrakeTrigger.NextTargetSpeed) +
+									DefaultDriverStrategy.BrakingSafetyMargin;
 				Log.Debug("breaking distance: {0}, start braking @ {1}", brakingDistance,
 					DriverStrategy.BrakeTrigger.TriggerDistance - brakingDistance);
 				if (currentDistance + Constants.SimulationSettings.DriverActionDistanceTolerance >
@@ -482,10 +485,14 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 						Case<ResponseSpeedLimitExceeded>(() => {
 							response = Driver.DrivingActionBrake(absTime, ds, DataBus.VehicleSpeed,
 								gradient);
+							if (response is ResponseOverload && !DataBus.ClutchClosed(absTime)) {
+								response = Driver.DrivingActionRoll(absTime, ds, DataBus.VehicleSpeed, gradient);
+							}
 						});
 					break;
 				case BrakingPhase.Brake:
-					var brakingDistance = Driver.ComputeDecelerationDistance(DriverStrategy.BrakeTrigger.NextTargetSpeed);
+					var brakingDistance = Driver.ComputeDecelerationDistance(DriverStrategy.BrakeTrigger.NextTargetSpeed) +
+										DefaultDriverStrategy.BrakingSafetyMargin;
 					Log.Debug("Phase: BRAKE. breaking distance: {0} start braking @ {1}", brakingDistance,
 						DriverStrategy.BrakeTrigger.TriggerDistance - brakingDistance);
 					if (DriverStrategy.BrakeTrigger.TriggerDistance - brakingDistance < currentDistance) {
@@ -533,7 +540,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 				default:
 					return response;
 			}
-			return null;
+			return response;
 		}
 
 		public override void ResetMode()
diff --git a/VectoCore/Models/SimulationComponent/Impl/DistanceBasedDrivingCycle.cs b/VectoCore/Models/SimulationComponent/Impl/DistanceBasedDrivingCycle.cs
index b1554fa8135906028c5d0fea7dde6ce4909e09ee..fa9cdab03e31e30611cc3ab7187e64d4c9a2a427 100644
--- a/VectoCore/Models/SimulationComponent/Impl/DistanceBasedDrivingCycle.cs
+++ b/VectoCore/Models/SimulationComponent/Impl/DistanceBasedDrivingCycle.cs
@@ -148,6 +148,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			}
 
 			CurrentState.Distance = PreviousState.Distance + ds;
+			CurrentState.SimulationDistance = ds;
 			CurrentState.VehicleTargetSpeed = CycleIntervalIterator.LeftSample.VehicleTargetSpeed;
 			CurrentState.Gradient = ComputeGradient(ds);
 
@@ -223,6 +224,17 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 				CycleIntervalIterator.LeftSample.RoadGradient);
 		}
 
+		public double Progress
+		{
+			get
+			{
+				return Data.Entries.Count > 0
+					? ((CurrentState.Distance - Data.Entries.First().Distance) /
+						(Data.Entries.Last().Distance - Data.Entries.First().Distance)).Value()
+					: 0;
+			}
+		}
+
 		public Meter CycleStartDistance
 		{
 			get { return Data.Entries.Count > 0 ? Data.Entries.First().Distance : 0.SI<Meter>(); }
@@ -240,6 +252,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 		protected override void DoWriteModalResults(IModalDataWriter writer)
 		{
 			writer[ModalResultField.dist] = CurrentState.Distance;
+			writer[ModalResultField.simulationDistance] = CurrentState.SimulationDistance;
 			writer[ModalResultField.v_targ] = CurrentState.VehicleTargetSpeed;
 			writer[ModalResultField.grad] = (Math.Tan(CurrentState.Gradient.Value()) * 100).SI<Scalar>();
 			writer[ModalResultField.altitude] = CurrentState.Altitude;
@@ -413,6 +426,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			public IResponse Response;
 
 			public bool RequestToNextSamplePointDone = false;
+
+			public Meter SimulationDistance;
 		}
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/Models/SimulationComponent/Impl/Driver.cs b/VectoCore/Models/SimulationComponent/Impl/Driver.cs
index 102e9166a5006c8c69ccdae64c5f15f6f1f45301..7ab23c5911cdec59d7b8b229c3f9ee81fc5fb433 100644
--- a/VectoCore/Models/SimulationComponent/Impl/Driver.cs
+++ b/VectoCore/Models/SimulationComponent/Impl/Driver.cs
@@ -728,9 +728,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 					retVal.SimulationInterval = ds / currentSpeed;
 					return retVal;
 				}
-				Log.Error("vehicle speed is {0}, acceleration is {1}", currentSpeed, acceleration);
+				Log.Error("vehicle speed is {0}, acceleration is {1}", currentSpeed.Value(), acceleration.Value());
 				throw new VectoSimulationException(
-					"vehicle speed has to be > 0 if acceleration = 0!  v: {0}", currentSpeed);
+					"vehicle speed has to be > 0 if acceleration = 0!  v: {0}, a: {1}", currentSpeed.Value(), acceleration.Value());
 			}
 
 			// we need to accelerate / decelerate. solve quadratic equation...
@@ -776,8 +776,10 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 		/// <returns></returns>
 		public IResponse DrivingActionHalt(Second absTime, Second dt, MeterPerSecond targetVelocity, Radian gradient)
 		{
-			if (!targetVelocity.IsEqual(0) || !DataBus.VehicleSpeed.IsEqual(0)) {
-				throw new NotImplementedException("TargetVelocity or VehicleVelocity is not zero!");
+			if (!targetVelocity.IsEqual(0) || !DataBus.VehicleSpeed.IsEqual(0, 1e-3)) {
+				throw new NotImplementedException(string.Format(
+					"TargetVelocity or VehicleVelocity is not zero! v: {0} target: {1}", DataBus.VehicleSpeed.Value(),
+					targetVelocity.Value()));
 			}
 			DataBus.BreakPower = double.PositiveInfinity.SI<Watt>();
 			var retVal = NextComponent.Request(absTime, dt, 0.SI<MeterPerSquareSecond>(), gradient);
diff --git a/VectoCore/Models/SimulationComponent/Impl/EngineOnlyDrivingCycle.cs b/VectoCore/Models/SimulationComponent/Impl/EngineOnlyDrivingCycle.cs
index 7f7016162042e10a0dc9a2205a621f5de882bd88..aa69f91b6b0d8a0945abeed5933e32446b1f74a2 100644
--- a/VectoCore/Models/SimulationComponent/Impl/EngineOnlyDrivingCycle.cs
+++ b/VectoCore/Models/SimulationComponent/Impl/EngineOnlyDrivingCycle.cs
@@ -75,6 +75,11 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			return NextComponent.Initialize(Data.Entries[index].EngineTorque, Data.Entries[index].EngineSpeed);
 		}
 
+		public double Progress
+		{
+			get { throw new NotImplementedException(); }
+		}
+
 		public Meter StartDistance
 		{
 			get { throw new NotImplementedException(); }
diff --git a/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs b/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs
index 4e359997ae2dc2f0f1fa03274eb76ed506ed1c00..ebb6565f850fe214f61e10198c47d79b0d090c8e 100644
--- a/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs
+++ b/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs
@@ -229,7 +229,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 				};
 			}
 
-			var shiftTimeExceeded = absTime.IsSmaller(_shiftTime) && _shiftTime.IsSmaller(absTime + dt);
+			var shiftTimeExceeded = absTime.IsSmaller(_shiftTime) &&
+									_shiftTime.IsSmaller(absTime + dt, Data.TractionInterruption / 20.0);
 			if (shiftTimeExceeded) {
 				return new ResponseFailTimeInterval {
 					Source = this,
diff --git a/VectoCore/Models/SimulationComponent/Impl/TimeBasedDrivingCycle.cs b/VectoCore/Models/SimulationComponent/Impl/TimeBasedDrivingCycle.cs
index 49c2374a056e88e6416760d3a48a36b44210c3dc..e22232b2335996ec154e18d94816e049abdb2f10 100644
--- a/VectoCore/Models/SimulationComponent/Impl/TimeBasedDrivingCycle.cs
+++ b/VectoCore/Models/SimulationComponent/Impl/TimeBasedDrivingCycle.cs
@@ -69,6 +69,11 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			throw new NotImplementedException();
 		}
 
+		public double Progress
+		{
+			get { throw new NotImplementedException(); }
+		}
+
 		public Meter StartDistance
 		{
 			get { return 0.SI<Meter>(); }
diff --git a/VectoCore/Utils/DoubleExtensionMethods.cs b/VectoCore/Utils/DoubleExtensionMethods.cs
index d193b704480cc06c3f913a06bd391a599b4d60d9..4ff037e5621ca1d99b590f88f45a6c4978aedb5e 100644
--- a/VectoCore/Utils/DoubleExtensionMethods.cs
+++ b/VectoCore/Utils/DoubleExtensionMethods.cs
@@ -98,12 +98,14 @@ namespace TUGraz.VectoCore.Utils
 		/// <returns></returns>
 		public static PerSecond RPMtoRad(this double self)
 		{
-			return self.SI().Rounds.Per.Minute.ConvertTo().Radian.Per.Second.Cast<PerSecond>();
+			return SI<PerSecond>(self * 2 * Math.PI / 60.0);
+			//self.SI().Rounds.Per.Minute.ConvertTo().Radian.Per.Second.Cast<PerSecond>();
 		}
 
 		public static MeterPerSecond KMPHtoMeterPerSecond(this double self)
 		{
-			return self.SI().Kilo.Meter.Per.Hour.Cast<MeterPerSecond>();
+			return SI<MeterPerSecond>(self / 3.6);
+			//return self.SI().Kilo.Meter.Per.Hour.Cast<MeterPerSecond>();
 		}
 
 		public static double ToRadian(this double self)
diff --git a/VectoCore/Utils/Formulas.cs b/VectoCore/Utils/Formulas.cs
index 92236f2ea3e7990c5ef3ef66d4b9be23e96478c7..1067468cf298ebd1b4d7a07331961d77eb57f35d 100644
--- a/VectoCore/Utils/Formulas.cs
+++ b/VectoCore/Utils/Formulas.cs
@@ -24,10 +24,10 @@ namespace TUGraz.VectoCore.Utils
 			MeterPerSquareSecond deceleration)
 		{
 			if (deceleration >= 0) {
-				throw new VectoException("Deceleration must be negative!");
+				throw new VectoException("Deceleration must be negative! a: {0}", deceleration);
 			}
 			if (v2 > v1) {
-				throw new VectoException("v2 must not be greater than v1");
+				throw new VectoException("v2 must not be greater than v1 v1: {0} v2: {1}", v1.Value(), v2.Value());
 			}
 
 			return ((v2 - v1) * (v1 + v2) / deceleration / 2.0).Cast<Meter>();
diff --git a/VectoCore/Utils/IntExtensionMethods.cs b/VectoCore/Utils/IntExtensionMethods.cs
index fab0e8653713ab38e1090a27e5d8d4f5d1986dcc..13dc8b28b644e38b772a08b081cc473f866521f8 100644
--- a/VectoCore/Utils/IntExtensionMethods.cs
+++ b/VectoCore/Utils/IntExtensionMethods.cs
@@ -13,13 +13,15 @@ namespace TUGraz.VectoCore.Utils
 		[DebuggerHidden]
 		public static PerSecond RPMtoRad(this int d)
 		{
-			return d.SI().Rounds.Per.Minute.ConvertTo().Radian.Per.Second.Cast<PerSecond>();
+			return (d * 2.0 * Math.PI / 60.0).SI<PerSecond>();
+			//d.SI().Rounds.Per.Minute.ConvertTo().Radian.Per.Second.Cast<PerSecond>();
 		}
 
 		[DebuggerHidden]
 		public static MeterPerSecond KMPHtoMeterPerSecond(this int d)
 		{
-			return d.SI().Kilo.Meter.Per.Hour.Cast<MeterPerSecond>();
+			return (d / 3.6).SI<MeterPerSecond>();
+			//d.SI().Kilo.Meter.Per.Hour.Cast<MeterPerSecond>();
 		}
 
 
diff --git a/VectoCore/Utils/SI.cs b/VectoCore/Utils/SI.cs
index 7fd5233607b16a0b36218e219c1a48b471b700be..d3e4fed9f1c0f04b9103c4171457e535bd4311dc 100644
--- a/VectoCore/Utils/SI.cs
+++ b/VectoCore/Utils/SI.cs
@@ -118,7 +118,10 @@ namespace TUGraz.VectoCore.Utils
 	public class Newton : SIBase<Newton>
 	{
 		[JsonConstructor, DebuggerHidden]
-		private Newton(double val) : base(new SI(val).Newton) {}
+		private Newton(double val) : base(val)
+		{
+			Numerator = new[] { Unit.N };
+		}
 
 		/// <summary>
 		/// Implements the operator *.
@@ -131,7 +134,7 @@ namespace TUGraz.VectoCore.Utils
 		[DebuggerHidden]
 		public static NewtonMeter operator *(Newton newton, Meter meter)
 		{
-			return ((newton as SI) * meter).Cast<NewtonMeter>();
+			return SIBase<NewtonMeter>.Create(newton.Val * meter.Value());
 		}
 	}
 
@@ -141,7 +144,7 @@ namespace TUGraz.VectoCore.Utils
 	public class Radian : SIBase<Radian>
 	{
 		[JsonConstructor, DebuggerHidden]
-		private Radian(double val) : base(new SI(val).Radian) {}
+		private Radian(double val) : base(val) {}
 	}
 
 	/// <summary>
@@ -150,12 +153,15 @@ namespace TUGraz.VectoCore.Utils
 	public class PerSquareSecond : SIBase<PerSquareSecond>
 	{
 		[JsonConstructor, DebuggerHidden]
-		private PerSquareSecond(double val) : base(new SI(val).Per.Square.Second) {}
+		private PerSquareSecond(double val) : base(val)
+		{
+			Denominator = new[] { Unit.s, Unit.s };
+		}
 
 		[DebuggerHidden]
 		public static PerSecond operator *(PerSquareSecond perSquareSecond, Second second)
 		{
-			return ((perSquareSecond as SI) * second).Cast<PerSecond>();
+			return SIBase<PerSecond>.Create(perSquareSecond.Val * second.Value());
 		}
 	}
 
@@ -166,7 +172,11 @@ namespace TUGraz.VectoCore.Utils
 	public class MeterPerSquareSecond : SIBase<MeterPerSquareSecond>
 	{
 		[JsonConstructor, DebuggerHidden]
-		protected MeterPerSquareSecond(double val) : base(new SI(val).Meter.Per.Square.Second) {}
+		protected MeterPerSquareSecond(double val) : base(val)
+		{
+			Numerator = new[] { Unit.m };
+			Denominator = new[] { Unit.s, Unit.s };
+		}
 
 		/// <summary>
 		/// Implements the operator /.
@@ -179,7 +189,7 @@ namespace TUGraz.VectoCore.Utils
 		[DebuggerHidden]
 		public static Second operator /(MeterPerSecond meterPerSecond, MeterPerSquareSecond meterPerSquareSecond)
 		{
-			return ((meterPerSecond as SI) / meterPerSquareSecond).Cast<Second>();
+			return SIBase<Second>.Create(meterPerSecond.Value() / meterPerSquareSecond.Val);
 		}
 	}
 
@@ -189,7 +199,10 @@ namespace TUGraz.VectoCore.Utils
 	public class Second : SIBase<Second>
 	{
 		[JsonConstructor, DebuggerHidden]
-		private Second(double val) : base(new SI(val).Second) {}
+		private Second(double val) : base(val)
+		{
+			Numerator = new[] { Unit.s };
+		}
 	}
 
 	/// <summary>
@@ -198,7 +211,10 @@ namespace TUGraz.VectoCore.Utils
 	public class Meter : SIBase<Meter>
 	{
 		[JsonConstructor, DebuggerHidden]
-		protected Meter(double val) : base(new SI(val).Meter) {}
+		protected Meter(double val) : base(val)
+		{
+			Numerator = new[] { Unit.m };
+		}
 	}
 
 	/// <summary>
@@ -207,7 +223,10 @@ namespace TUGraz.VectoCore.Utils
 	public class Kilogram : SIBase<Kilogram>
 	{
 		[JsonConstructor, DebuggerHidden]
-		protected Kilogram(double val) : base(new SI(val).Kilo.Gramm) {}
+		protected Kilogram(double val) : base(val)
+		{
+			Numerator = new[] { Unit.k, Unit.g };
+		}
 	}
 
 	/// <summary>
@@ -232,7 +251,10 @@ namespace TUGraz.VectoCore.Utils
 	public class Ton : SIBase<Ton>
 	{
 		[JsonConstructor, DebuggerHidden]
-		protected Ton(double val) : base(new SI(val).Ton) {}
+		protected Ton(double val) : base(val * 1000.0)
+		{
+			Numerator = new[] { Unit.k, Unit.g };
+		}
 	}
 
 	/// <summary>
@@ -241,7 +263,10 @@ namespace TUGraz.VectoCore.Utils
 	public class SquareMeter : SIBase<SquareMeter>
 	{
 		[JsonConstructor, DebuggerHidden]
-		private SquareMeter(double val) : base(new SI(val).Square.Meter) {}
+		private SquareMeter(double val) : base(val)
+		{
+			Numerator = new[] { Unit.m, Unit.m };
+		}
 	}
 
 	/// <summary>
@@ -250,7 +275,10 @@ namespace TUGraz.VectoCore.Utils
 	public class CubicMeter : SIBase<CubicMeter>
 	{
 		[JsonConstructor, DebuggerHidden]
-		private CubicMeter(double val) : base(new SI(val).Cubic.Meter) {}
+		private CubicMeter(double val) : base(val)
+		{
+			Numerator = new[] { Unit.m, Unit.m, Unit.m };
+		}
 	}
 
 	/// <summary>
@@ -259,12 +287,15 @@ namespace TUGraz.VectoCore.Utils
 	public class KilogramSquareMeter : SIBase<KilogramSquareMeter>
 	{
 		[JsonConstructor, DebuggerHidden]
-		protected KilogramSquareMeter(double val) : base(new SI(val).Kilo.Gramm.Square.Meter) {}
+		protected KilogramSquareMeter(double val) : base(val)
+		{
+			Numerator = new[] { Unit.k, Unit.g, Unit.m, Unit.m };
+		}
 
 		[DebuggerHidden]
 		public static NewtonMeter operator *(KilogramSquareMeter kilogramSquareMeter, PerSquareSecond perSquareSecond)
 		{
-			return ((kilogramSquareMeter as SI) * perSquareSecond).Cast<NewtonMeter>();
+			return SIBase<NewtonMeter>.Create(kilogramSquareMeter.Val * perSquareSecond.Value());
 		}
 	}
 
@@ -274,7 +305,11 @@ namespace TUGraz.VectoCore.Utils
 	public class KilogramPerWattSecond : SIBase<KilogramPerWattSecond>
 	{
 		[JsonConstructor, DebuggerHidden]
-		protected KilogramPerWattSecond(double val) : base(new SI(val).Kilo.Gramm.Per.Watt.Second) {}
+		protected KilogramPerWattSecond(double val) : base(val)
+		{
+			Numerator = new[] { Unit.k, Unit.g };
+			Denominator = new[] { Unit.W, Unit.s };
+		}
 	}
 
 	/// <summary>
@@ -283,7 +318,10 @@ namespace TUGraz.VectoCore.Utils
 	public class Watt : SIBase<Watt>
 	{
 		[JsonConstructor, DebuggerHidden]
-		private Watt(double val) : base(new SI(val).Watt) {}
+		private Watt(double val) : base(val)
+		{
+			Numerator = new[] { Unit.W };
+		}
 
 		/// <summary>
 		/// Implements the operator /.
@@ -296,7 +334,7 @@ namespace TUGraz.VectoCore.Utils
 		[DebuggerHidden]
 		public static PerSecond operator /(Watt watt, NewtonMeter newtonMeter)
 		{
-			return ((watt as SI) / newtonMeter).Cast<PerSecond>();
+			return SIBase<PerSecond>.Create(watt.Val / newtonMeter.Value());
 		}
 
 		/// <summary>
@@ -310,7 +348,7 @@ namespace TUGraz.VectoCore.Utils
 		[DebuggerHidden]
 		public static NewtonMeter operator /(Watt watt, PerSecond perSecond)
 		{
-			return ((watt as SI) / perSecond).Cast<NewtonMeter>();
+			return SIBase<NewtonMeter>.Create(watt.Val / perSecond.Value());
 		}
 	}
 
@@ -321,7 +359,10 @@ namespace TUGraz.VectoCore.Utils
 	public class PerSecond : SIBase<PerSecond>
 	{
 		[JsonConstructor, DebuggerHidden]
-		private PerSecond(double val) : base(new SI(val).Per.Second) {}
+		private PerSecond(double val) : base(val)
+		{
+			Denominator = new[] { Unit.s };
+		}
 	}
 
 	/// <summary>
@@ -331,7 +372,11 @@ namespace TUGraz.VectoCore.Utils
 	public class MeterPerSecond : SIBase<MeterPerSecond>
 	{
 		[JsonConstructor, DebuggerHidden]
-		private MeterPerSecond(double val) : base(new SI(val).Meter.Per.Second) {}
+		private MeterPerSecond(double val) : base(val)
+		{
+			Numerator = new[] { Unit.m };
+			Denominator = new[] { Unit.s };
+		}
 
 		/// <summary>
 		/// Implements the operator /.
@@ -344,7 +389,7 @@ namespace TUGraz.VectoCore.Utils
 		[DebuggerHidden]
 		public static PerSecond operator /(MeterPerSecond meterPerSecond, Meter meter)
 		{
-			return ((meterPerSecond as SI) / meter).Cast<PerSecond>();
+			return SIBase<PerSecond>.Create(meterPerSecond.Val / meter.Value());
 		}
 
 		/// <summary>
@@ -358,7 +403,7 @@ namespace TUGraz.VectoCore.Utils
 		[DebuggerHidden]
 		public static Second operator /(Meter second, MeterPerSecond meterPerSecond)
 		{
-			return (second / (meterPerSecond as SI)).Cast<Second>();
+			return SIBase<Second>.Create(second.Value() / meterPerSecond.Val);
 		}
 
 		/// <summary>
@@ -372,7 +417,7 @@ namespace TUGraz.VectoCore.Utils
 		[DebuggerHidden]
 		public static Meter operator *(MeterPerSecond meterPerSecond, Second second)
 		{
-			return ((meterPerSecond as SI) * second).Cast<Meter>();
+			return SIBase<Meter>.Create(meterPerSecond.Val * second.Value());
 		}
 
 		/// <summary>
@@ -386,7 +431,7 @@ namespace TUGraz.VectoCore.Utils
 		[DebuggerHidden]
 		public static Meter operator *(Second second, MeterPerSecond meterPerSecond)
 		{
-			return (second * (meterPerSecond as SI)).Cast<Meter>();
+			return SIBase<Meter>.Create(second.Value() * meterPerSecond.Val);
 		}
 	}
 
@@ -406,55 +451,61 @@ namespace TUGraz.VectoCore.Utils
 	public class NewtonMeter : SIBase<NewtonMeter>
 	{
 		[JsonConstructor, DebuggerHidden]
-		private NewtonMeter(double val) : base(new SI(val).Newton.Meter) {}
+		private NewtonMeter(double val) : base(val)
+		{
+			Numerator = new[] { Unit.N, Unit.m };
+		}
 
 		[DebuggerHidden]
 		public static Watt operator *(NewtonMeter newtonMeter, PerSecond perSecond)
 		{
-			return ((newtonMeter as SI) * perSecond).Cast<Watt>();
+			return SIBase<Watt>.Create(newtonMeter.Val * perSecond.Value());
 		}
 
 		[DebuggerHidden]
 		public static Watt operator *(PerSecond perSecond, NewtonMeter newtonMeter)
 		{
-			return ((perSecond as SI) * newtonMeter).Cast<Watt>();
+			return SIBase<Watt>.Create(perSecond.Value() * newtonMeter.Value());
 		}
 
 		[DebuggerHidden]
 		public static Second operator /(NewtonMeter newtonMeter, Watt watt)
 		{
-			return ((newtonMeter as SI) / watt).Cast<Second>();
+			return SIBase<Second>.Create(newtonMeter.Val / watt.Value());
 		}
 
 		[DebuggerHidden]
 		public static PerSquareSecond operator /(NewtonMeter newtonMeter, KilogramSquareMeter kgKilogramSquareMeter)
 		{
-			return ((newtonMeter as SI) / kgKilogramSquareMeter).Cast<PerSquareSecond>();
+			return SIBase<PerSquareSecond>.Create(newtonMeter.Val / kgKilogramSquareMeter.Value());
 		}
 
 
 		[DebuggerHidden]
 		public static PerSecond operator /(NewtonMeter newtonMeter, NewtonMeterSecond newtonMeterSecond)
 		{
-			return ((newtonMeter as SI) / newtonMeterSecond).Cast<PerSecond>();
+			return SIBase<PerSecond>.Create(newtonMeter.Val / newtonMeterSecond.Value());
 		}
 
 		[DebuggerHidden]
 		public static Newton operator /(NewtonMeter newtonMeter, Meter meter)
 		{
-			return ((newtonMeter as SI) / meter).Cast<Newton>();
+			return SIBase<Newton>.Create(newtonMeter.Val / meter.Value());
 		}
 
 		[DebuggerHidden]
 		public static NewtonMeterSecond operator /(NewtonMeter newtonMeter, PerSecond perSecond)
 		{
-			return ((newtonMeter as SI) / perSecond).Cast<NewtonMeterSecond>();
+			return SIBase<NewtonMeterSecond>.Create(newtonMeter.Val / perSecond.Value());
 		}
 	}
 
 	public class NewtonMeterSecond : SIBase<NewtonMeterSecond>
 	{
-		private NewtonMeterSecond(double val) : base(new SI(val).Newton.Meter.Second) {}
+		private NewtonMeterSecond(double val) : base(new SI(val).Newton.Meter.Second)
+		{
+			Numerator = new[] { Unit.N, Unit.m, Unit.s };
+		}
 	}
 
 
@@ -494,6 +545,8 @@ namespace TUGraz.VectoCore.Utils
 		[DebuggerHidden]
 		protected SIBase(SI si) : base(si) {}
 
+		protected SIBase(double value) : base(value) {}
+
 		public new T Abs()
 		{
 			return base.Abs().Cast<T>();
@@ -660,12 +713,12 @@ namespace TUGraz.VectoCore.Utils
 		/// <summary>
 		/// The denominator of the SI.
 		/// </summary>
-		[DataMember] protected readonly Unit[] Denominator;
+		[DataMember] protected Unit[] Denominator;
 
 		/// <summary>
 		/// The numerator of the SI.
 		/// </summary>
-		[DataMember] protected readonly Unit[] Numerator;
+		[DataMember] protected Unit[] Numerator;
 
 		/// <summary>
 		/// The current exponent for conversion operations (Square, Cubic, Linear, e.g. new SI(3).Square.Meter).
@@ -1169,7 +1222,10 @@ namespace TUGraz.VectoCore.Utils
 				throw new VectoException("Operator '+' can only operate on SI Objects with the same unit. Got: {0} + {1}", si1, si2);
 			}
 
-			return new SI(si1.Val + si2.Val, si1.Numerator, si1.Denominator);
+			return new SI(si1.Val + si2.Val) {
+				Numerator = si1.Numerator,
+				Denominator = si1.Denominator
+			};
 		}
 
 		/// <summary>
@@ -1189,7 +1245,10 @@ namespace TUGraz.VectoCore.Utils
 			if (!si1.HasEqualUnit(si2)) {
 				throw new VectoException("Operator '-' can only operate on SI Objects with the same unit. Got: {0} - {1}", si1, si2);
 			}
-			return new SI(si1.Val - si2.Val, si1.Numerator, si1.Denominator);
+			return new SI(si1.Val - si2.Val) {
+				Numerator = si1.Numerator,
+				Denominator = si1.Denominator
+			};
 		}
 
 		/// <summary>
@@ -1203,7 +1262,7 @@ namespace TUGraz.VectoCore.Utils
 		public static SI operator -(SI si1)
 		{
 			Contract.Requires(si1 != null);
-			return new SI(-si1.Val, si1);
+			return new SI(-si1.Val) { Numerator = si1.Numerator, Denominator = si1.Denominator };
 		}
 
 		/// <summary>
@@ -1236,7 +1295,7 @@ namespace TUGraz.VectoCore.Utils
 		public static SI operator *(SI si1, double d)
 		{
 			Contract.Requires(si1 != null);
-			return new SI(si1.Val * d, si1);
+			return new SI(si1.Val * d) { Numerator = si1.Numerator, Denominator = si1.Denominator };
 		}
 
 		/// <summary>
@@ -1251,7 +1310,7 @@ namespace TUGraz.VectoCore.Utils
 		public static SI operator *(double d, SI si1)
 		{
 			Contract.Requires(si1 != null);
-			return new SI(d * si1.Val, si1);
+			return new SI(d * si1.Val) { Numerator = si1.Numerator, Denominator = si1.Denominator };
 		}
 
 		/// <summary>
@@ -1297,7 +1356,7 @@ namespace TUGraz.VectoCore.Utils
 					new DivideByZeroException());
 			}
 
-			return new SI(si1.Val / d, si1);
+			return new SI(si1.Val / d) { Numerator = si1.Numerator, Denominator = si1.Denominator };
 		}
 
 		/// <summary>
@@ -1318,7 +1377,7 @@ namespace TUGraz.VectoCore.Utils
 					new DivideByZeroException());
 			}
 
-			return new SI(d / si1.Val, si1.Denominator, si1.Numerator);
+			return new SI(d / si1.Val) { Numerator = si1.Denominator, Denominator = si1.Numerator };
 		}
 
 		/// <summary>
diff --git a/VectoCore/Utils/VectoMath.cs b/VectoCore/Utils/VectoMath.cs
index 116a61aab50d5fec55306b176dc96175b016c483..a9fd8922ecba47d576867af8f988daed7df6f8a9 100644
--- a/VectoCore/Utils/VectoMath.cs
+++ b/VectoCore/Utils/VectoMath.cs
@@ -124,11 +124,11 @@ namespace TUGraz.VectoCore.Utils
 	}
 
 	[DebuggerDisplay("(X:{X}, Y:{Y}, Z:{Z})")]
-	public class Point
+	public struct Point
 	{
-		public double X;
-		public double Y;
-		public double Z;
+		public readonly double X;
+		public readonly double Y;
+		public readonly double Z;
 
 		public Point(double x, double y, double z = 0)
 		{
@@ -139,8 +139,8 @@ namespace TUGraz.VectoCore.Utils
 
 		public static Point operator -(Point p1, Point p2)
 		{
-			Contract.Requires(p1 != null);
-			Contract.Requires(p2 != null);
+			//Contract.Requires(p1 != null);
+			//Contract.Requires(p2 != null);
 			return new Point(p1.X - p2.X, p1.Y - p2.Y, p1.Z - p2.Z);
 		}
 
@@ -151,9 +151,9 @@ namespace TUGraz.VectoCore.Utils
 
 		#region Equality members
 
-		protected bool Equals(Point other)
+		private bool Equals(Point other)
 		{
-			Contract.Requires(other != null);
+			//Contract.Requires(other != null);
 
 			return X.Equals(other.X) && Y.Equals(other.Y) && Z.Equals(other.Z);
 		}
@@ -163,9 +163,6 @@ namespace TUGraz.VectoCore.Utils
 			if (ReferenceEquals(null, obj)) {
 				return false;
 			}
-			if (ReferenceEquals(this, obj)) {
-				return true;
-			}
 			return obj.GetType() == GetType() && Equals((Point)obj);
 		}
 
@@ -196,9 +193,9 @@ namespace TUGraz.VectoCore.Utils
 		public Plane(Triangle tr)
 		{
 			Contract.Requires(tr != null);
-			Contract.Requires(tr.P1 != null);
-			Contract.Requires(tr.P2 != null);
-			Contract.Requires(tr.P3 != null);
+			//Contract.Requires(tr.P1 != null);
+			//Contract.Requires(tr.P2 != null);
+			//Contract.Requires(tr.P3 != null);
 
 			var ab = tr.P2 - tr.P1;
 			var ac = tr.P3 - tr.P1;
@@ -228,22 +225,25 @@ namespace TUGraz.VectoCore.Utils
 
 		public bool IsInside(double x, double y, bool exact)
 		{
-			Contract.Requires(P1 != null);
-			Contract.Requires(P2 != null);
-			Contract.Requires(P3 != null);
+			//Contract.Requires(P1 != null);
+			//Contract.Requires(P2 != null);
+			//Contract.Requires(P3 != null);
 
 			//Barycentric Technique: http://www.blackpawn.com/texts/pointinpoly/default.html
 			var p = new Point(x, y, 0);
 
-			var v0 = P3 - P1;
-			var v1 = P2 - P1;
-			var v2 = p - P1;
+			var v0X = P3.X - P1.X;
+			var v0Y = P3.Y - P1.Y;
+			var v1X = P2.X - P1.X;
+			var v1Y = P2.Y - P1.Y;
+			var v2X = p.X - P1.X;
+			var v2Y = p.Y - P1.Y;
 
-			var dot00 = v0.X * v0.X + v0.Y * v0.Y;
-			var dot01 = v0.X * v1.X + v0.Y * v1.Y;
-			var dot02 = v0.X * v2.X + v0.Y * v2.Y;
-			var dot11 = v1.X * v1.X + v1.Y * v1.Y;
-			var dot12 = v1.X * v2.X + v1.Y * v2.Y;
+			var dot00 = v0X * v0X + v0Y * v0Y;
+			var dot01 = v0X * v1X + v0Y * v1Y;
+			var dot02 = v0X * v2X + v0Y * v2Y;
+			var dot11 = v1X * v1X + v1Y * v1Y;
+			var dot12 = v1X * v2X + v1Y * v2Y;
 
 			var invDenom = 1.0 / (dot00 * dot11 - dot01 * dot01);
 			var u = (dot11 * dot02 - dot01 * dot12) * invDenom;
@@ -258,22 +258,25 @@ namespace TUGraz.VectoCore.Utils
 
 		public bool ContainsInCircumcircle(Point p)
 		{
-			Contract.Requires(p != null);
-			Contract.Requires(P1 != null);
-			Contract.Requires(P2 != null);
-			Contract.Requires(P3 != null);
+			//Contract.Requires(p != null);
+			//Contract.Requires(P1 != null);
+			//Contract.Requires(P2 != null);
+			//Contract.Requires(P3 != null);
 
-			var p0 = P1 - p;
-			var p1 = P2 - p;
-			var p2 = P3 - p;
+			var p0X = P1.X - p.X;
+			var p0Y = P1.Y - p.Y;
+			var p1X = P2.X - p.X;
+			var p1Y = P2.Y - p.Y;
+			var p2X = P3.X - p.X;
+			var p2Y = P3.Y - p.Y;
 
-			var p0square = p0.X * p0.X + p0.Y * p0.Y;
-			var p1square = p1.X * p1.X + p1.Y * p1.Y;
-			var p2square = p2.X * p2.X + p2.Y * p2.Y;
+			var p0square = p0X * p0X + p0Y * p0Y;
+			var p1square = p1X * p1X + p1Y * p1Y;
+			var p2square = p2X * p2X + p2Y * p2Y;
 
-			var det01 = p0.X * p1.Y - p1.X * p0.Y;
-			var det12 = p1.X * p2.Y - p2.X * p1.Y;
-			var det20 = p2.X * p0.Y - p0.X * p2.Y;
+			var det01 = p0X * p1Y - p1X * p0Y;
+			var det12 = p1X * p2Y - p2X * p1Y;
+			var det20 = p2X * p0Y - p0X * p2Y;
 
 			var result = p0square * det12 + p1square * det20 + p2square * det01;
 
@@ -321,9 +324,9 @@ namespace TUGraz.VectoCore.Utils
 		public override int GetHashCode()
 		{
 			unchecked {
-				var hashCode = (P1 != null ? P1.GetHashCode() : 0);
-				hashCode = (hashCode * 397) ^ (P2 != null ? P2.GetHashCode() : 0);
-				hashCode = (hashCode * 397) ^ (P3 != null ? P3.GetHashCode() : 0);
+				var hashCode = P1.GetHashCode();
+				hashCode = (hashCode * 397) ^ P2.GetHashCode();
+				hashCode = (hashCode * 397) ^ P3.GetHashCode();
 				return hashCode;
 			}
 		}
@@ -365,7 +368,7 @@ namespace TUGraz.VectoCore.Utils
 
 		public override int GetHashCode()
 		{
-			return ((P1 != null ? P1.GetHashCode() : 0)) ^ (P2 != null ? P2.GetHashCode() : 0);
+			return (P1.GetHashCode()) ^ (P2.GetHashCode());
 		}
 
 		#endregion
diff --git a/VectoCoreTest/Integration/DriverStrategy/DriverStrategyTestCoach.cs b/VectoCoreTest/Integration/DriverStrategy/DriverStrategyTestCoach.cs
index 5b36881d0687e30764fed1467e1f13a5a356d993..9125c56041aa9a18988217a6a9865251ccaf62c3 100644
--- a/VectoCoreTest/Integration/DriverStrategy/DriverStrategyTestCoach.cs
+++ b/VectoCoreTest/Integration/DriverStrategy/DriverStrategyTestCoach.cs
@@ -10,7 +10,7 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		[TestInitialize]
 		public void DisableLogging()
 		{
-			LogManager.DisableLogging();
+			//LogManager.DisableLogging();
 			//GraphWriter.Disable();
 		}
 
@@ -30,7 +30,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Accelerate_20_60_level()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_20_60_Level);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_20_60_level.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_20_60_level.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Accelerate_20_60_level.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Accelerate_20_60_level.vmod");
@@ -40,7 +43,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Accelerate_20_60_uphill_5()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_20_60_uphilll_5);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_20_60_uphill_5.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_20_60_uphill_5.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Accelerate_20_60_uphill_5.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Accelerate_20_60_uphill_5.vmod");
@@ -51,7 +57,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Accelerate_20_60_downhill_5()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_20_60_downhill_5);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_20_60_downhill_5.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_20_60_downhill_5.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Accelerate_20_60_downhill_5.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Accelerate_20_60_downhill_5.vmod");
@@ -62,7 +71,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Accelerate_20_60_uphill_25()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_20_60_uphill_25);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_20_60_uphill_25.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_20_60_uphill_25.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Accelerate_20_60_uphill_25.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Accelerate_20_60_uphill_25.vmod");
@@ -72,7 +84,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Accelerate_20_60_downhill_25()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_20_60_downhill_25);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_20_60_downhill_25.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_20_60_downhill_25.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Accelerate_20_60_downhill_25.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Accelerate_20_60_downhill_25.vmod");
@@ -82,7 +97,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Accelerate_20_60_uphill_15()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_20_60_uphill_15);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_20_60_uphill_15.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_20_60_uphill_15.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Accelerate_20_60_uphill_15.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Accelerate_20_60_uphill_15.vmod");
@@ -92,7 +110,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Accelerate_20_60_downhill_15()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_20_60_downhill_15);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_20_60_downhill_15.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_20_60_downhill_15.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Accelerate_20_60_downhill_15.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Accelerate_20_60_downhill_15.vmod");
@@ -102,7 +123,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Accelerate_0_85_level()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_level);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_level.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_level.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Accelerate_0_85_level.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Accelerate_0_85_level.vmod");
@@ -112,7 +136,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Accelerate_0_85_uphill_1()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_uphill_1);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_uphill_1.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_uphill_1.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Accelerate_0_85_uphill_1.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Accelerate_0_85_uphill_1.vmod");
@@ -122,7 +149,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Accelerate_0_85_uphill_2()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_uphill_2);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_uphill_2.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_uphill_2.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Accelerate_0_85_uphill_2.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Accelerate_0_85_uphill_2.vmod");
@@ -132,7 +162,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Accelerate_0_85_uphill_5()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_uphill_5);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_uphill_5.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_uphill_5.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Accelerate_0_85_uphill_5.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Accelerate_0_85_uphill_5.vmod");
@@ -142,7 +175,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Accelerate_0_85_downhill_5()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_downhill_5);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_downhill_5.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_downhill_5.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Accelerate_0_85_downhill_5.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Accelerate_0_85_downhill_5.vmod");
@@ -152,7 +188,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Accelerate_0_85_uphill_25()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_uphill_25);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_uphill_25.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_uphill_25.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Accelerate_0_85_uphill_25.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Accelerate_0_85_uphill_25.vmod");
@@ -162,7 +201,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Accelerate_0_85_downhill_25()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_downhill_25);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_downhill_25.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_downhill_25.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Accelerate_0_85_downhill_25.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Accelerate_0_85_downhill_25.vmod");
@@ -172,7 +214,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Accelerate_0_85_uphill_10()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_uphill_10);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_uphill_10.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_uphill_10.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Accelerate_0_85_uphill_10.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Accelerate_0_85_uphill_10.vmod");
@@ -182,7 +227,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Accelerate_0_85_downhill_15()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_downhill_15);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_downhill_15.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_downhill_15.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Accelerate_0_85_downhill_15.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Accelerate_0_85_downhill_15.vmod");
@@ -192,7 +240,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Accelerate_stop_0_85_level()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_stop_0_85_level);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_stop_0_85_level.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_stop_0_85_level.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Accelerate_stop_0_85_level.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Accelerate_stop_0_85_level.vmod");
@@ -203,7 +254,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Accelerate_20_22_uphill_5()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_20_22_uphill_5);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_20_22_uphill_5.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_20_22_uphill_5.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Accelerate_20_22_uphill_5.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Accelerate_20_22_uphill_5.vmod");
@@ -217,7 +271,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Decelerate_22_20_downhill_5()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_22_20_downhill_5);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_22_20_downhill_5.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_22_20_downhill_5.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Decelerate_22_20_downhill_5.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_22_20_downhill_5.vmod");
@@ -227,7 +284,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Decelerate_60_20_level()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_60_20_level);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_60_20_level.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_60_20_level.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Decelerate_60_20_level.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_60_20_level.vmod");
@@ -237,7 +297,7 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Decelerate_45_0_level()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_45_0_level);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_45_0_level.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_45_0_level.vmod");
 
 			GraphWriter.Write("Coach_DriverStrategy_Decelerate_45_0_level.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_45_0_level.vmod");
@@ -247,7 +307,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Decelerate_45_0_uphill_5()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_45_0_uphill_5);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_45_0_uphill_5.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_45_0_uphill_5.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Decelerate_45_0_uphill_5.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_45_0_uphill_5.vmod");
@@ -257,7 +320,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Decelerate_45_0_downhill_5()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_45_0_downhill_5);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_45_0_downhill_5.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_45_0_downhill_5.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Decelerate_45_0_downhill_5.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_45_0_downhill_5.vmod");
@@ -267,7 +333,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Decelerate_60_20_uphill_5()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_60_20_uphill_5);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_60_20_uphill_5.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_60_20_uphill_5.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Decelerate_60_20_uphill_5.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_60_20_uphill_5.vmod");
@@ -277,7 +346,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Decelerate_60_20_downhill_5()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_60_20_downhill_5);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_60_20_downhill_5.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_60_20_downhill_5.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Decelerate_60_20_downhill_5.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_60_20_downhill_5.vmod");
@@ -287,7 +359,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Decelerate_60_20_uphill_25()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_60_20_uphill_25);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_60_20_uphill_25.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_60_20_uphill_25.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Decelerate_60_20_uphill_25.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_60_20_uphill_25.vmod");
@@ -297,7 +372,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Decelerate_60_20_downhill_25()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_60_20_downhill_25);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_60_20_downhill_25.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_60_20_downhill_25.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Decelerate_60_20_downhill_25.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_60_20_downhill_25.vmod");
@@ -307,7 +385,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Decelerate_60_20_uphill_15()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_60_20_uphill_15);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_60_20_uphill_15.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_60_20_uphill_15.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Decelerate_60_20_uphill_15.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_60_20_uphill_15.vmod");
@@ -317,7 +398,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Decelerate_60_20_downhill_15()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_60_20_downhill_15);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_60_20_downhill_15.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_60_20_downhill_15.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Decelerate_60_20_downhill_15.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_60_20_downhill_15.vmod");
@@ -327,7 +411,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Decelerate_80_0_level()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_80_0_level);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_80_0_level.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_80_0_level.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Decelerate_80_0_level.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_80_0_level.vmod");
@@ -337,7 +424,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Decelerate_80_0_uphill_5()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_80_0_uphill_5);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_80_0_uphill_5.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_80_0_uphill_5.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Decelerate_80_0_uphill_5.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_80_0_uphill_5.vmod");
@@ -347,7 +437,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Decelerate_80_0_downhill_5()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_80_0_downhill_5);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_80_0_downhill_5.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_80_0_downhill_5.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Decelerate_80_0_downhill_5.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_80_0_downhill_5.vmod");
@@ -357,7 +450,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Decelerate_80_0_uphill_25()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_80_0_uphill_25);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_80_0_steep_uphill_25.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_80_0_steep_uphill_25.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Decelerate_80_0_steep_uphill_25.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_80_0_steep_uphill_25.vmod");
@@ -367,7 +463,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Decelerate_80_0_downhill_25()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_80_0_downhill_25);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_80_0_downhill_25.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_80_0_downhill_25.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Decelerate_80_0_downhill_25.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_80_0_downhill_25.vmod");
@@ -377,7 +476,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Decelerate_80_0_uphill_3()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_80_0_uphill_3);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_80_0_uphill_3.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_80_0_uphill_3.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Decelerate_80_0_uphill_3.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_80_0_uphill_3.vmod");
@@ -387,7 +489,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Decelerate_80_0_uphill_15()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_80_0_uphill_15);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_80_0_steep_uphill_15.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_80_0_steep_uphill_15.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Decelerate_80_0_steep_uphill_15.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_80_0_steep_uphill_15.vmod");
@@ -397,7 +502,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Decelerate_80_0_downhill_15()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_80_0_downhill_15);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_80_0_downhill_15.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_80_0_downhill_15.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Decelerate_80_0_downhill_15.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_80_0_downhill_15.vmod");
@@ -411,7 +519,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Drive_80_level()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_80_level);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_80_level.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_80_level.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Drive_80_level.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_80_level.vmod");
@@ -421,7 +532,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Drive_80_uphill_5()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_80_uphill_5);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_80_uphill_5.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_80_uphill_5.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Drive_80_uphill_5.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_80_uphill_5.vmod");
@@ -431,7 +545,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Drive_80_downhill_5()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_80_downhill_5);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_80_downhill_5.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_80_downhill_5.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Drive_80_downhill_5.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_80_downhill_5.vmod");
@@ -441,7 +558,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Drive_20_downhill_15()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_20_downhill_15);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_20_downhill_15.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_20_downhill_15.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Drive_20_downhill_15.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_20_downhill_15.vmod");
@@ -451,7 +571,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Drive_30_downhill_15()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_30_downhill_15);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_30_downhill_15.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_30_downhill_15.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Drive_30_downhill_15.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_30_downhill_15.vmod");
@@ -461,7 +584,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Drive_50_downhill_15()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_50_downhill_15);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_50_downhill_15.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_50_downhill_15.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Drive_50_downhill_15.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_50_downhill_15.vmod");
@@ -471,7 +597,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Drive_80_uphill_25()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_80_uphill_25);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_80_uphill_25.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_80_uphill_25.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Drive_80_uphill_25.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_80_uphill_25.vmod");
@@ -481,7 +610,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Drive_80_downhill_15()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_80_downhill_15);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_80_downhill_15.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_80_downhill_15.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Drive_80_downhill_15.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_80_downhill_15.vmod");
@@ -491,7 +623,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Drive_80_uphill_15()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_80_uphill_15);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_80_uphill_15.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_80_uphill_15.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Drive_80_uphill_15.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_80_uphill_15.vmod");
@@ -501,7 +636,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Drive_10_level()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_10_level);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_10_level.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_10_level.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Drive_10_level.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_10_level.vmod");
@@ -515,7 +653,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 				"   0,  10, 5,    0",
 				"800,  10, 5,    0",
 			});
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_10_uphill_5.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_10_uphill_5.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Drive_10_uphill_5.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_10_uphill_5.vmod");
@@ -525,7 +666,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Drive_10_downhill_5()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_10_downhill_5);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_10_downhill_5.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_10_downhill_5.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Drive_10_downhill_5.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_10_downhill_5.vmod");
@@ -535,7 +679,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Drive_10_downhill_25()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_10_downhill_25);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_10_downhill_25.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_10_downhill_25.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Drive_10_downhill_25.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_10_downhill_25.vmod");
@@ -545,7 +692,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Drive_10_uphill_25()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_10_uphill_25);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_10_uphill_25.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_10_uphill_25.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Drive_10_uphill_25.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_10_uphill_25.vmod");
@@ -555,7 +705,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Drive_10_downhill_15()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_10_downhill_15);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_10_downhill_15.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_10_downhill_15.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Drive_10_downhill_15.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_10_downhill_15.vmod");
@@ -565,7 +718,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Drive_10_uphill_15()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_10_uphill_15);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_10_uphill_15.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_10_uphill_15.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Drive_10_uphill_15.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_10_uphill_15.vmod");
@@ -579,7 +735,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Drive_80_Increasing_Slope()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_80_Increasing_Slope);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_80_slope_inc.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_80_slope_inc.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Drive_80_slope_inc.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_80_Increasing_Slope.vmod");
@@ -589,7 +748,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Drive_50_Increasing_Slope()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_50_Increasing_Slope);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_50_slope_inc.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_50_slope_inc.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Drive_50_slope_inc.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_50_Increasing_Slope.vmod");
@@ -599,7 +761,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Drive_30_Increasing_Slope()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_30_Increasing_Slope);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_30_slope_inc.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_30_slope_inc.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Drive_30_slope_inc.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_30_Increasing_Slope.vmod");
@@ -609,7 +774,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Drive_80_Decreasing_Slope()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_80_Decreasing_Slope);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_80_slope_dec.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_80_slope_dec.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Drive_80_slope_dec.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_80_Decreasing_Slope.vmod");
@@ -619,7 +787,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Drive_50_Decreasing_Slope()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_50_Decreasing_Slope);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_50_slope_dec.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_50_slope_dec.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Drive_50_slope_dec.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_50_Decreasing_Slope.vmod");
@@ -629,7 +800,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Drive_30_Decreasing_Slope()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_30_Decreasing_Slope);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_30_slope_dec.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_30_slope_dec.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Drive_30_slope_dec.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_30_Decreasing_Slope.vmod");
@@ -639,7 +813,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Drive_80_Dec_Increasing_Slope()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_80_Dec_Increasing_Slope);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_80_slope_dec-inc.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_80_slope_dec-inc.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Drive_80_slope_dec-inc.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_80_Dec_Increasing_Slope.vmod");
@@ -649,7 +826,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Drive_50_Dec_Increasing_Slope()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_50_Dec_Increasing_Slope);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_50_slope_dec-inc.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_50_slope_dec-inc.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Drive_50_slope_dec-inc.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_50_Dec_Increasing_Slope.vmod");
@@ -660,7 +840,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Drive_30_Dec_Increasing_Slope()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_30_Dec_Increasing_Slope);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_30_slope_dec-inc.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_30_slope_dec-inc.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Drive_30_slope_dec-inc.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_30_Dec_Increasing_Slope.vmod");
@@ -674,7 +857,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_DecelerateWhileBrake_80_0_level()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerateWhileBrake_80_0_level);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_DecelerateWhileBrake_80_0_level.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_DecelerateWhileBrake_80_0_level.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_DecelerateWhileBrake_80_0_level.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_DecelerateWhileBrake_80_0_level.vmod");
@@ -684,7 +870,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_AccelerateWhileBrake_80_0_level()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerateWhileBrake_80_0_level);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_AccelerateWhileBrake_80_0_level.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_AccelerateWhileBrake_80_0_level.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_AccelerateWhileBrake_80_0_level.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_AccelerateWhileBrake_80_0_level.vmod");
@@ -694,7 +883,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_AccelerateAtBrake_80_0_level()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerateAtBrake_80_0_level);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_AccelerateAtBrake_80_0_level.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_AccelerateAtBrake_80_0_level.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_AccelerateAtBrake_80_0_level.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_AccelerateAtBrake_80_0_level.vmod");
@@ -704,7 +896,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_AccelerateBeforeBrake_80_0_level()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerateBeforeBrake_80_0_level);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_AccelerateBeforeBrake_80_0_level.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_AccelerateBeforeBrake_80_0_level.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_AccelerateBeforeBrake_80_0_level.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_AccelerateBeforeBrake_80_0_level.vmod");
@@ -714,7 +909,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Drive_stop_85_stop_85_level()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_stop_85_stop_85_level);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_stop_85_stop_85_level.vmod").Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_stop_85_stop_85_level.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Drive_stop_85_stop_85_level.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_stop_85_stop_85_level.vmod");
@@ -728,8 +926,11 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Accelerate_0_85_downhill_5_overspeed()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_downhill_5);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_downhill_5-overspeed.vmod", true)
-				.Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle,
+				"Coach_DriverStrategy_Accelerate_0_85_downhill_5-overspeed.vmod", true);
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Accelerate_0_85_downhill_5-overspeed.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach_Overspeed\24t Coach_Cycle_Accelerate_0_85_downhill_5.vmod");
@@ -739,8 +940,11 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Accelerate_0_85_downhill_3_overspeed()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_downhill_3);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_downhill_3-overspeed.vmod", true)
-				.Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle,
+				"Coach_DriverStrategy_Accelerate_0_85_downhill_3-overspeed.vmod", true);
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Accelerate_0_85_downhill_3-overspeed.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach_Overspeed\24t Coach_Cycle_Accelerate_0_85_downhill_3.vmod");
@@ -751,8 +955,11 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Accelerate_0_85_downhill_1_overspeed()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_downhill_1);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_downhill_1-overspeed.vmod", true)
-				.Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle,
+				"Coach_DriverStrategy_Accelerate_0_85_downhill_1-overspeed.vmod", true);
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Accelerate_0_85_downhill_1-overspeed.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach_Overspeed\24t Coach_Cycle_Accelerate_0_85_downhill_1.vmod");
@@ -763,8 +970,11 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Accelerate_0_60_downhill_5_overspeed()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_60_downhill_5);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_60_downhill_5-overspeed.vmod", true)
-				.Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle,
+				"Coach_DriverStrategy_Accelerate_0_60_downhill_5-overspeed.vmod", true);
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Accelerate_0_60_downhill_5-overspeed.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach_Overspeed\24t Coach_Cycle_Accelerate_0_60_downhill_5.vmod");
@@ -774,8 +984,11 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Accelerate_0_60_downhill_3_overspeed()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_60_downhill_3);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_60_downhill_3-overspeed.vmod", true)
-				.Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle,
+				"Coach_DriverStrategy_Accelerate_0_60_downhill_3-overspeed.vmod", true);
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Accelerate_0_60_downhill_3-overspeed.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach_Overspeed\24t Coach_Cycle_Accelerate_0_60_downhill_3.vmod");
@@ -786,8 +999,11 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Accelerate_0_60_downhill_1_overspeed()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_60_downhill_1);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_60_downhill_1-overspeed.vmod", true)
-				.Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle,
+				"Coach_DriverStrategy_Accelerate_0_60_downhill_1-overspeed.vmod", true);
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Accelerate_0_60_downhill_1-overspeed.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach_Overspeed\24t Coach_Cycle_Accelerate_0_60_downhill_1.vmod");
@@ -798,8 +1014,11 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Accelerate_0_40_downhill_5_overspeed()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_40_downhill_5);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_40_downhill_5-overspeed.vmod", true)
-				.Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle,
+				"Coach_DriverStrategy_Accelerate_0_40_downhill_5-overspeed.vmod", true);
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Accelerate_0_40_downhill_5-overspeed.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach_Overspeed\24t Coach_Cycle_Accelerate_0_40_downhill_5.vmod");
@@ -809,8 +1028,11 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Accelerate_0_40_downhill_3_overspeed()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_40_downhill_3);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_40_downhill_3-overspeed.vmod", true)
-				.Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle,
+				"Coach_DriverStrategy_Accelerate_0_40_downhill_3-overspeed.vmod", true);
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Accelerate_0_40_downhill_3-overspeed.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach_Overspeed\24t Coach_Cycle_Accelerate_0_40_downhill_3.vmod");
@@ -821,8 +1043,11 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Coach_Accelerate_0_40_downhill_1_overspeed()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_40_downhill_1);
-			CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_40_downhill_1-overspeed.vmod", true)
-				.Run();
+			var run = CoachPowerTrain.CreateEngineeringRun(cycle,
+				"Coach_DriverStrategy_Accelerate_0_40_downhill_1-overspeed.vmod", true);
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Coach_DriverStrategy_Accelerate_0_40_downhill_1-overspeed.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach_Overspeed\24t Coach_Cycle_Accelerate_0_40_downhill_1.vmod");
diff --git a/VectoCoreTest/Integration/DriverStrategy/DriverStrategyTestTruck.cs b/VectoCoreTest/Integration/DriverStrategy/DriverStrategyTestTruck.cs
index 4c96b6609cc2980082a02407c5b6fa03f16d91ed..9ff58535f3e3f6400e3bddcb57bf664903f5ee62 100644
--- a/VectoCoreTest/Integration/DriverStrategy/DriverStrategyTestTruck.cs
+++ b/VectoCoreTest/Integration/DriverStrategy/DriverStrategyTestTruck.cs
@@ -21,7 +21,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Accelerate_20_60_level()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_20_60_Level);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_20_60_level.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_20_60_level.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Accelerate_20_60_level.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Accelerate_20_60_level.vmod");
@@ -31,7 +34,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Accelerate_20_60_uphill_5()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_20_60_uphilll_5);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_20_60_uphill_5.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_20_60_uphill_5.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Accelerate_20_60_uphill_5.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Accelerate_20_60_uphill_5.vmod");
@@ -42,7 +48,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Accelerate_20_60_downhill_5()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_20_60_downhill_5);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_20_60_downhill_5.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_20_60_downhill_5.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Accelerate_20_60_downhill_5.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Accelerate_20_60_downhill_5.vmod");
@@ -53,7 +62,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Accelerate_20_60_uphill_25()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_20_60_uphill_25);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_20_60_uphill_25.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_20_60_uphill_25.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Accelerate_20_60_uphill_25.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Accelerate_20_60_uphill_25.vmod");
@@ -63,7 +75,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Accelerate_20_60_downhill_25()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_20_60_downhill_25);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_20_60_downhill_25.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_20_60_downhill_25.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Accelerate_20_60_downhill_25.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Accelerate_20_60_downhill_25.vmod");
@@ -73,7 +88,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Accelerate_20_60_uphill_15()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_20_60_uphill_15);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_20_60_uphill_15.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_20_60_uphill_15.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Accelerate_20_60_uphill_15.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Accelerate_20_60_uphill_15.vmod");
@@ -83,7 +101,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Accelerate_20_60_downhill_15()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_20_60_downhill_15);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_20_60_downhill_15.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_20_60_downhill_15.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Accelerate_20_60_downhill_15.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Accelerate_20_60_downhill_15.vmod");
@@ -93,7 +114,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Accelerate_0_85_level()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_level);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_85_level.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_85_level.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Accelerate_0_85_level.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Accelerate_0_85_level.vmod");
@@ -103,7 +127,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Accelerate_0_85_uphill_1()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_uphill_1);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_85_uphill_1.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_85_uphill_1.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Accelerate_0_85_uphill_1.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Accelerate_0_85_uphill_1.vmod");
@@ -113,7 +140,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Accelerate_0_85_uphill_2()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_uphill_2);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_85_uphill_2.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_85_uphill_2.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Accelerate_0_85_uphill_2.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Accelerate_0_85_uphill_2.vmod");
@@ -123,7 +153,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Accelerate_0_85_uphill_5()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_uphill_5);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_85_uphill_5.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_85_uphill_5.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Accelerate_0_85_uphill_5.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Accelerate_0_85_uphill_5.vmod");
@@ -143,7 +176,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Accelerate_0_85_uphill_25()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_uphill_25);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_85_uphill_25.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_85_uphill_25.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Accelerate_0_85_uphill_25.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Accelerate_0_85_uphill_25.vmod");
@@ -153,7 +189,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Accelerate_0_85_downhill_25()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_downhill_25);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_85_downhill_25.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_85_downhill_25.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Accelerate_0_85_downhill_25.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Accelerate_0_85_downhill_25.vmod");
@@ -163,7 +202,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Accelerate_0_85_uphill_10()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_uphill_10);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_85_uphill_10.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_85_uphill_10.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Accelerate_0_85_uphill_10.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Accelerate_0_85_uphill_10.vmod");
@@ -173,7 +215,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Accelerate_0_85_downhill_15()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_downhill_15);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_85_downhill_15.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_85_downhill_15.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Accelerate_0_85_downhill_15.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Accelerate_0_85_downhill_15.vmod");
@@ -183,7 +228,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Accelerate_stop_0_85_level()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_stop_0_85_level);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_stop_0_85_level.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_stop_0_85_level.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Accelerate_stop_0_85_level.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Accelerate_stop_0_85_level.vmod");
@@ -194,7 +242,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Accelerate_20_22_uphill_5()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_20_22_uphill_5);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_20_22_uphill_5.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_20_22_uphill_5.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Accelerate_20_22_uphill_5.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Accelerate_20_22_uphill_5.vmod");
@@ -208,7 +259,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Decelerate_22_20_downhill_5()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_22_20_downhill_5);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_22_20_downhill_5.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_22_20_downhill_5.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Decelerate_22_20_downhill_5.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_22_20_downhill_5.vmod");
@@ -218,7 +272,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Decelerate_60_20_level()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_60_20_level);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_60_20_level.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_60_20_level.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Decelerate_60_20_level.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_60_20_level.vmod");
@@ -228,7 +285,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Decelerate_45_0_level()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_45_0_level);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_45_0_level.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_45_0_level.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Decelerate_45_0_level.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_45_0_level.vmod");
@@ -238,7 +298,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Decelerate_45_0_uphill_5()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_45_0_uphill_5);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_45_0_uphill_5.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_45_0_uphill_5.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Decelerate_45_0_uphill_5.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_45_0_uphill_5.vmod");
@@ -248,7 +311,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Decelerate_45_0_downhill_5()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_45_0_downhill_5);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_45_0_downhill_5.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_45_0_downhill_5.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Decelerate_45_0_downhill_5.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_45_0_downhill_5.vmod");
@@ -258,7 +324,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Decelerate_60_20_uphill_5()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_60_20_uphill_5);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_60_20_uphill_5.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_60_20_uphill_5.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Decelerate_60_20_uphill_5.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_60_20_uphill_5.vmod");
@@ -268,7 +337,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Decelerate_60_20_downhill_5()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_60_20_downhill_5);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_60_20_downhill_5.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_60_20_downhill_5.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Decelerate_60_20_downhill_5.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_60_20_downhill_5.vmod");
@@ -278,7 +350,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Decelerate_60_20_uphill_25()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_60_20_uphill_25);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_60_20_uphill_25.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_60_20_uphill_25.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Decelerate_60_20_uphill_25.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_60_20_uphill_25.vmod");
@@ -288,7 +363,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Decelerate_60_20_downhill_25()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_60_20_downhill_25);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_60_20_downhill_25.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_60_20_downhill_25.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Decelerate_60_20_downhill_25.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_60_20_downhill_25.vmod");
@@ -298,7 +376,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Decelerate_60_20_uphill_15()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_60_20_uphill_15);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_60_20_uphill_15.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_60_20_uphill_15.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Decelerate_60_20_uphill_15.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_60_20_uphill_15.vmod");
@@ -308,7 +389,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Decelerate_60_20_downhill_15()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_60_20_downhill_15);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_60_20_downhill_15.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_60_20_downhill_15.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Decelerate_60_20_downhill_15.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_60_20_downhill_15.vmod");
@@ -318,7 +402,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Decelerate_80_0_level()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_80_0_level);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_80_0_level.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_80_0_level.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Decelerate_80_0_level.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_80_0_level.vmod");
@@ -328,7 +415,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Decelerate_80_0_uphill_3()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_80_0_uphill_3);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_80_0_uphill_3.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_80_0_uphill_3.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Decelerate_80_0_uphill_3.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_80_0_uphill_3.vmod");
@@ -345,15 +435,21 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 			};
 
 			var cycle = SimpleDrivingCycles.CreateCycleData(data);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_80_0_SlopeChangeDuringCoast.vmod")
-				.Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle,
+				"Truck_DriverStrategy_Decelerate_80_0_SlopeChangeDuringCoast.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 		}
 
 		[TestMethod, Ignore]
 		public void Truck_Decelerate_80_0_uphill_5()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_80_0_uphill_5);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_80_0_uphill_5.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_80_0_uphill_5.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Decelerate_80_0_uphill_5.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_80_0_uphill_5.vmod");
@@ -363,7 +459,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Decelerate_80_0_downhill_5()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_80_0_downhill_5);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_80_0_downhill_5.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_80_0_downhill_5.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Decelerate_80_0_downhill_5.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_80_0_downhill_5.vmod");
@@ -373,7 +472,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Decelerate_80_0_uphill_25()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_80_0_uphill_25);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_80_0_steep_uphill_25.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_80_0_steep_uphill_25.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Decelerate_80_0_steep_uphill_25.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_80_0_steep_uphill_25.vmod");
@@ -383,7 +485,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Decelerate_80_0_downhill_25()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_80_0_downhill_25);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_80_0_downhill_25.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_80_0_downhill_25.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Decelerate_80_0_downhill_25.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_80_0_downhill_25.vmod");
@@ -393,7 +498,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Decelerate_80_0_uphill_15()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_80_0_uphill_15);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_80_0_steep_uphill_15.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_80_0_steep_uphill_15.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Decelerate_80_0_steep_uphill_15.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_80_0_steep_uphill_15.vmod");
@@ -403,12 +511,54 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Decelerate_80_0_downhill_15()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_80_0_downhill_15);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_80_0_downhill_15.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_80_0_downhill_15.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Decelerate_80_0_downhill_15.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_80_0_downhill_15.vmod");
 		}
 
+		[TestMethod]
+		public void Truck_Decelerate_20_0_downhill_2()
+		{
+			var cycleData = new string[] {
+				// <s>,<v>,<grad>,<stop>
+				"   0,  20, -1.8,  0",
+				"2052,  0,  -1.8,  2"
+			};
+			var cycle = SimpleDrivingCycles.CreateCycleData(cycleData);
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle,
+				"Truck_DriverStrategy_Decelerate_20_0_downhill_2_RefLoad.vmod",
+				7500.SI<Kilogram>(), 12900.SI<Kilogram>());
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
+
+			//GraphWriter.Write("Truck_DriverStrategy_Decelerate_80_0_downhill_15.vmod",
+			//	@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_20_0_downhill_2_RefLoad.vmod");
+		}
+
+		[TestMethod]
+		public void Truck_Decelerate_55_43_0_downhill_RefLoad()
+		{
+			var cycleData = new string[] {
+				// <s>,<v>,<grad>,<stop>
+				"   0,  55.2, -0.6,  0",
+				" 500,  43.6, -0.6,  0",
+				" 510,  43.6, -0.3,  0",
+				" 623,   0, -0.2,  4"
+			};
+			var cycle = SimpleDrivingCycles.CreateCycleData(cycleData);
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle,
+				"Truck_Decelerate_55_43_0_downhill_RefLoad.vmod",
+				7500.SI<Kilogram>(), 12900.SI<Kilogram>());
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
+		}
+
 		#endregion
 
 		#region Drive
@@ -417,7 +567,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Drive_80_level()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_80_level);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_80_level.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_80_level.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Drive_80_level.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_80_level.vmod");
@@ -427,7 +580,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Drive_80_uphill_5()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_80_uphill_5);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_80_uphill_5.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_80_uphill_5.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Drive_80_uphill_5.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_80_uphill_5.vmod");
@@ -437,7 +593,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Drive_80_downhill_5()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_80_downhill_5);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_80_downhill_5.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_80_downhill_5.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Drive_80_downhill_5.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_80_downhill_5.vmod");
@@ -447,7 +606,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Drive_20_downhill_15()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_20_downhill_15);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_20_downhill_15.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_20_downhill_15.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Drive_20_downhill_15.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_20_downhill_15.vmod");
@@ -457,7 +619,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Drive_30_downhill_15()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_30_downhill_15);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_30_downhill_15.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_30_downhill_15.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Drive_30_downhill_15.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_30_downhill_15.vmod");
@@ -467,7 +632,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Drive_50_downhill_15()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_50_downhill_15);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_50_downhill_15.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_50_downhill_15.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Drive_50_downhill_15.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_50_downhill_15.vmod");
@@ -477,7 +645,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Drive_80_uphill_25()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_80_uphill_25);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_80_uphill_25.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_80_uphill_25.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Drive_80_uphill_25.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_80_uphill_25.vmod");
@@ -487,7 +658,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Drive_80_downhill_15()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_80_downhill_15);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_80_downhill_15.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_80_downhill_15.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Drive_80_downhill_15.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_80_downhill_15.vmod");
@@ -497,7 +671,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Drive_80_uphill_15()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_80_uphill_15);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_80_uphill_15.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_80_uphill_15.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Drive_80_uphill_15.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_80_uphill_15.vmod");
@@ -507,7 +684,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Drive_10_level()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_10_level);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_10_level.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_10_level.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Drive_10_level.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_10_level.vmod");
@@ -517,7 +697,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Drive_10_uphill_5()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_10_uphill_5);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_10_uphill_5.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_10_uphill_5.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Drive_10_uphill_5.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_10_uphill_5.vmod");
@@ -527,7 +710,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Drive_10_downhill_5()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_10_downhill_5);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_10_downhill_5.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_10_downhill_5.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Drive_10_downhill_5.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_10_downhill_5.vmod");
@@ -537,7 +723,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Drive_10_downhill_25()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_10_downhill_25);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_10_downhill_25.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_10_downhill_25.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Drive_10_downhill_25.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_10_downhill_25.vmod");
@@ -547,7 +736,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Drive_10_uphill_25()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_10_uphill_25);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_10_uphill_25.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_10_uphill_25.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Drive_10_uphill_25.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_10_uphill_25.vmod");
@@ -557,7 +749,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Drive_10_downhill_15()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_10_downhill_15);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_10_downhill_15.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_10_downhill_15.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Drive_10_downhill_15.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_10_downhill_15.vmod");
@@ -567,7 +762,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Drive_10_uphill_15()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_10_uphill_15);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_10_uphill_15.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_10_uphill_15.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Drive_10_uphill_15.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_10_uphill_15.vmod");
@@ -581,7 +779,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Drive_80_Increasing_Slope()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_80_Increasing_Slope);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_80_slope_inc.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_80_slope_inc.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Drive_80_slope_inc.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_80_Increasing_Slope.vmod");
@@ -591,7 +792,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Drive_50_Increasing_Slope()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_50_Increasing_Slope);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_50_slope_inc.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_50_slope_inc.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Drive_50_slope_inc.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_50_Increasing_Slope.vmod");
@@ -601,7 +805,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Drive_30_Increasing_Slope()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_30_Increasing_Slope);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_30_slope_inc.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_30_slope_inc.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Drive_30_slope_inc.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_30_Increasing_Slope.vmod");
@@ -611,7 +818,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Drive_80_Decreasing_Slope()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_80_Decreasing_Slope);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_80_slope_dec.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_80_slope_dec.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Drive_80_slope_dec.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_80_Decreasing_Slope.vmod");
@@ -621,7 +831,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Drive_50_Decreasing_Slope()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_50_Decreasing_Slope);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_50_slope_dec.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_50_slope_dec.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Drive_50_slope_dec.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_50_Decreasing_Slope.vmod");
@@ -631,7 +844,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Drive_30_Decreasing_Slope()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_30_Decreasing_Slope);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_30_slope_dec.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_30_slope_dec.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Drive_30_slope_dec.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_30_Decreasing_Slope.vmod");
@@ -641,7 +857,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Drive_80_Dec_Increasing_Slope()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_80_Dec_Increasing_Slope);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_80_slope_dec-inc.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_80_slope_dec-inc.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Drive_80_slope_dec-inc.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_80_Dec_Increasing_Slope.vmod");
@@ -651,7 +870,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Drive_50_Dec_Increasing_Slope()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_50_Dec_Increasing_Slope);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_50_slope_dec-inc.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_50_slope_dec-inc.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Drive_50_slope_dec-inc.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_50_Dec_Increasing_Slope.vmod");
@@ -662,7 +884,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Drive_30_Dec_Increasing_Slope()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_30_Dec_Increasing_Slope);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_30_slope_dec-inc.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_30_slope_dec-inc.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Drive_30_slope_dec-inc.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_30_Dec_Increasing_Slope.vmod");
@@ -676,7 +901,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_DecelerateWhileBrake_80_0_level()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerateWhileBrake_80_0_level);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_DecelerateWhileBrake_80_0_level.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_DecelerateWhileBrake_80_0_level.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_DecelerateWhileBrake_80_0_level.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_DecelerateWhileBrake_80_0_level.vmod");
@@ -686,7 +914,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_AccelerateWhileBrake_80_0_level()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerateWhileBrake_80_0_level);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_AccelerateWhileBrake_80_0_level.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_AccelerateWhileBrake_80_0_level.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_AccelerateWhileBrake_80_0_level.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_AccelerateWhileBrake_80_0_level.vmod");
@@ -696,7 +927,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_AccelerateAtBrake_80_0_level()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerateAtBrake_80_0_level);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_AccelerateAtBrake_80_0_level.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_AccelerateAtBrake_80_0_level.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_AccelerateAtBrake_80_0_level.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_AccelerateAtBrake_80_0_level.vmod");
@@ -706,7 +940,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_AccelerateBeforeBrake_80_0_level()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerateBeforeBrake_80_0_level);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_AccelerateBeforeBrake_80_0_level.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_AccelerateBeforeBrake_80_0_level.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_AccelerateBeforeBrake_80_0_level.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_AccelerateBeforeBrake_80_0_level.vmod");
@@ -716,7 +953,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Drive_stop_85_stop_85_level()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_stop_85_stop_85_level);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_stop_85_stop_85_level.vmod").Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_stop_85_stop_85_level.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Drive_stop_85_stop_85_level.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_stop_85_stop_85_level.vmod");
@@ -733,8 +973,12 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 			};
 
 			var cycle = SimpleDrivingCycles.CreateCycleData(data);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_48_52_beforeStop_level.vmod",
-				7500.SI<Kilogram>(), 19000.SI<Kilogram>()).Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle,
+				"Truck_DriverStrategy_Accelerate_48_52_beforeStop_level.vmod",
+				7500.SI<Kilogram>(), 19000.SI<Kilogram>());
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			//GraphWriter.Write("Truck_DriverStrategy_Accelerate_48_52_beforeStop_level.vmod");
 		}
@@ -747,8 +991,11 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Accelerate_0_85_downhill_5_overspeed()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_downhill_5);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_85_downhill_5-overspeed.vmod", true)
-				.Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle,
+				"Truck_DriverStrategy_Accelerate_0_85_downhill_5-overspeed.vmod", true);
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Accelerate_0_85_downhill_5-overspeed.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck_Overspeed\40t_Long_Haul_Truck_Cycle_Accelerate_0_85_downhill_5.vmod");
@@ -758,8 +1005,11 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Accelerate_0_85_downhill_3_overspeed()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_downhill_3);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_85_downhill_3-overspeed.vmod", true)
-				.Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle,
+				"Truck_DriverStrategy_Accelerate_0_85_downhill_3-overspeed.vmod", true);
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Accelerate_0_85_downhill_3-overspeed.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck_Overspeed\40t_Long_Haul_Truck_Cycle_Accelerate_0_85_downhill_3.vmod");
@@ -770,8 +1020,11 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Accelerate_0_85_downhill_1_overspeed()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_downhill_1);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_85_downhill_1-overspeed.vmod", true)
-				.Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle,
+				"Truck_DriverStrategy_Accelerate_0_85_downhill_1-overspeed.vmod", true);
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Accelerate_0_85_downhill_1-overspeed.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck_Overspeed\40t_Long_Haul_Truck_Cycle_Accelerate_0_85_downhill_1.vmod");
@@ -782,8 +1035,11 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Accelerate_0_60_downhill_5_overspeed()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_60_downhill_5);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_60_downhill_5-overspeed.vmod", true)
-				.Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle,
+				"Truck_DriverStrategy_Accelerate_0_60_downhill_5-overspeed.vmod", true);
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Accelerate_0_60_downhill_5-overspeed.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck_Overspeed\40t_Long_Haul_Truck_Cycle_Accelerate_0_60_downhill_5.vmod");
@@ -793,8 +1049,11 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Accelerate_0_60_downhill_3_overspeed()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_60_downhill_3);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_60_downhill_3-overspeed.vmod", true)
-				.Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle,
+				"Truck_DriverStrategy_Accelerate_0_60_downhill_3-overspeed.vmod", true);
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Accelerate_0_60_downhill_3-overspeed.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck_Overspeed\40t_Long_Haul_Truck_Cycle_Accelerate_0_60_downhill_3.vmod");
@@ -805,8 +1064,11 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Accelerate_0_60_downhill_1_overspeed()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_60_downhill_1);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_60_downhill_1-overspeed.vmod", true)
-				.Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle,
+				"Truck_DriverStrategy_Accelerate_0_60_downhill_1-overspeed.vmod", true);
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Accelerate_0_60_downhill_1-overspeed.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck_Overspeed\40t_Long_Haul_Truck_Cycle_Accelerate_0_60_downhill_1.vmod");
@@ -817,8 +1079,8 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Accelerate_0_40_downhill_5_overspeed()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_40_downhill_5);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_40_downhill_5-overspeed.vmod", true)
-				.Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle,
+				"Truck_DriverStrategy_Accelerate_0_40_downhill_5-overspeed.vmod", true);
 
 			GraphWriter.Write("Truck_DriverStrategy_Accelerate_0_40_downhill_5-overspeed.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck_Overspeed\40t_Long_Haul_Truck_Cycle_Accelerate_0_40_downhill_5.vmod");
@@ -828,8 +1090,11 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Accelerate_0_40_downhill_3_overspeed()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_40_downhill_3);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_40_downhill_3-overspeed.vmod", true)
-				.Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle,
+				"Truck_DriverStrategy_Accelerate_0_40_downhill_3-overspeed.vmod", true);
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Accelerate_0_40_downhill_3-overspeed.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck_Overspeed\40t_Long_Haul_Truck_Cycle_Accelerate_0_40_downhill_3.vmod");
@@ -840,8 +1105,11 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 		public void Truck_Accelerate_0_40_downhill_1_overspeed()
 		{
 			var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_40_downhill_1);
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_40_downhill_1-overspeed.vmod", true)
-				.Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle,
+				"Truck_DriverStrategy_Accelerate_0_40_downhill_1-overspeed.vmod", true);
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			GraphWriter.Write("Truck_DriverStrategy_Accelerate_0_40_downhill_1-overspeed.vmod",
 				@"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck_Overspeed\40t_Long_Haul_Truck_Cycle_Accelerate_0_40_downhill_1.vmod");
@@ -859,8 +1127,11 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 			};
 			var cycle = SimpleDrivingCycles.CreateCycleData(cycleData);
 
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_Decelerate-overspeed.vmod", true)
-				.Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_Decelerate-overspeed.vmod",
+				true);
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 		}
 
 		[TestMethod]
@@ -874,8 +1145,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy
 			};
 			var cycle = SimpleDrivingCycles.CreateCycleData(cycleData);
 
-			Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_SlopeChangeBeforeStop.vmod")
-				.Run();
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_SlopeChangeBeforeStop.vmod");
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
 		}
 
 		[TestMethod]
diff --git a/VectoCoreTest/Integration/FullCycleDeclarationTest.cs b/VectoCoreTest/Integration/FullCycleDeclarationTest.cs
index 654f193d225713abefb6dd80198f22906d01a9a0..fd00c6030c2fa30b87cba6d55e7f1c1b468985cc 100644
--- a/VectoCoreTest/Integration/FullCycleDeclarationTest.cs
+++ b/VectoCoreTest/Integration/FullCycleDeclarationTest.cs
@@ -2,9 +2,13 @@
 using Microsoft.VisualStudio.TestTools.UnitTesting;
 using NLog;
 using TUGraz.VectoCore.Configuration;
+using TUGraz.VectoCore.FileIO.Reader;
 using TUGraz.VectoCore.FileIO.Reader.Impl;
 using TUGraz.VectoCore.Models.Simulation.Data;
 using TUGraz.VectoCore.Models.Simulation.Impl;
+using TUGraz.VectoCore.Models.SimulationComponent.Data;
+using TUGraz.VectoCore.Models.SimulationComponent.Impl;
+using TUGraz.VectoCore.Utils;
 
 namespace TUGraz.VectoCore.Tests.Integration
 {
@@ -13,10 +17,110 @@ namespace TUGraz.VectoCore.Tests.Integration
 	{
 		public const string TruckDeclarationJob = @"TestData\Integration\DeclarationMode\40t Truck\40t_Long_Haul_Truck.vecto";
 
+
+		[TestMethod]
+		public void Truck40t_LongHaulCycle_RefLoad()
+		{
+			var cycle = SimpleDrivingCycles.ReadDeclarationCycle("LongHaul");
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck40t_LongHaulCycle_RefLoad.vmod",
+				7500.SI<Kilogram>(), 12900.SI<Kilogram>());
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
+		}
+
+		[TestMethod]
+		public void Truck40t_RegionalDeliveryCycle_RefLoad()
+		{
+			var cycle = SimpleDrivingCycles.ReadDeclarationCycle("RegionalDelivery");
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck40t_RegionalDeliveryCycle_RefLoad.vmod",
+				7500.SI<Kilogram>(), 12900.SI<Kilogram>());
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
+		}
+
+		[TestMethod]
+		public void Truck40t_UrbanDeliveryCycle_RefLoad()
+		{
+			var cycle = SimpleDrivingCycles.ReadDeclarationCycle("UrbanDelivery");
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck40t_UrbanDeliveryCycle_RefLoad.vmod",
+				7500.SI<Kilogram>(), 12900.SI<Kilogram>());
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
+		}
+
+		[TestMethod]
+		public void Truck40t_MunicipalCycle_RefLoad()
+		{
+			var cycle = SimpleDrivingCycles.ReadDeclarationCycle("Municipal");
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck40t_MunicipalCycle_RefLoad.vmod",
+				7500.SI<Kilogram>(), 12900.SI<Kilogram>());
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
+		}
+
+		[TestMethod]
+		public void Truck40t_ConstructionCycle_RefLoad()
+		{
+			var cycle = SimpleDrivingCycles.ReadDeclarationCycle("Construction");
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck40t_ConstructionCycle_RefLoad.vmod",
+				7500.SI<Kilogram>(), 12900.SI<Kilogram>());
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
+		}
+
+		[TestMethod]
+		public void Truck40t_HeavyUrbanCycle_RefLoad()
+		{
+			var cycle = SimpleDrivingCycles.ReadDeclarationCycle("HeavyUrban");
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck40t_HeavyUrbanCycle_RefLoad.vmod",
+				7500.SI<Kilogram>(), 12900.SI<Kilogram>());
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
+		}
+
+		[TestMethod]
+		public void Truck40t_SubUrbanCycle_RefLoad()
+		{
+			var cycle = SimpleDrivingCycles.ReadDeclarationCycle("Suburban");
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck40t_SubUrbanCycle_RefLoad.vmod",
+				7500.SI<Kilogram>(), 12900.SI<Kilogram>());
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
+		}
+
+		[TestMethod]
+		public void Truck40t_InterUrbanCycle_RefLoad()
+		{
+			var cycle = SimpleDrivingCycles.ReadDeclarationCycle("Interurban");
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck40t_InterUrbanCycle_RefLoad.vmod",
+				7500.SI<Kilogram>(), 12900.SI<Kilogram>());
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
+		}
+
+		[TestMethod]
+		public void Truck40t_CoachCycle_RefLoad()
+		{
+			var cycle = SimpleDrivingCycles.ReadDeclarationCycle("Coach");
+			var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck40t_CoachCycle_RefLoad.vmod",
+				7500.SI<Kilogram>(), 12900.SI<Kilogram>());
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
+		}
+
 		[TestMethod]
 		public void Truck40tDeclarationTest()
 		{
-			//LogManager.DisableLogging();
+			LogManager.DisableLogging();
 
 			var factory = new SimulatorFactory(SimulatorFactory.FactoryMode.DeclarationMode, TruckDeclarationJob);
 			var sumFileName = Path.GetFileNameWithoutExtension(TruckDeclarationJob) + Constants.FileExtensions.SumFile;
@@ -26,6 +130,10 @@ namespace TUGraz.VectoCore.Tests.Integration
 			jobContainer.AddRuns(factory);
 
 			jobContainer.Execute();
+
+			foreach (var run in jobContainer.Runs) {
+				Assert.IsTrue(run.Run.FinishedWithoutErrors);
+			}
 		}
 	}
 }
\ No newline at end of file
diff --git a/VectoCoreTest/Integration/SimpleDrivingCycles.cs b/VectoCoreTest/Integration/SimpleDrivingCycles.cs
index 04460f5dc3b97922af049529e4de5b5a12f922ee..2498579e040b80834f56d3db847de394e6e8e270 100644
--- a/VectoCoreTest/Integration/SimpleDrivingCycles.cs
+++ b/VectoCoreTest/Integration/SimpleDrivingCycles.cs
@@ -2,6 +2,7 @@
 using System.IO;
 using TUGraz.VectoCore.FileIO.Reader;
 using TUGraz.VectoCore.Models.SimulationComponent.Data;
+using TUGraz.VectoCore.Utils;
 
 namespace TUGraz.VectoCore.Tests.Integration
 {
@@ -653,5 +654,12 @@ namespace TUGraz.VectoCore.Tests.Integration
 		};
 
 		#endregion
+
+		public static DrivingCycleData ReadDeclarationCycle(string missionType)
+		{
+			var cycleData = RessourceHelper.ReadStream(RessourceHelper.Namespace + "MissionCycles." + missionType + ".vdri");
+			var cycle = DrivingCycleDataReader.ReadFromStream(cycleData, CycleType.DistanceBased);
+			return cycle;
+		}
 	}
 }
\ No newline at end of file
diff --git a/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs b/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs
index 6a918de1e181750f609da95f5d85d01f794058cd..87ebc5eed8d5a4318c0437f670f1b9352fc928c2 100644
--- a/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs
+++ b/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs
@@ -453,7 +453,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration
 
 		public void EqualAcceleration(AccelerationCurveData data, double velocity, double acceleration, double deceleration)
 		{
-			var entry = data.Lookup(velocity.SI().Kilo.Meter.Per.Hour.Cast<MeterPerSecond>());
+			var entry = data.Lookup(velocity.KMPHtoMeterPerSecond());
 			Assert.AreEqual(entry.Acceleration.Value(), acceleration, Tolerance);
 			Assert.AreEqual(entry.Deceleration.Value(), deceleration, Tolerance);
 		}
diff --git a/VectoCoreTest/Models/SimulationComponentData/AccelerationCurveTest.cs b/VectoCoreTest/Models/SimulationComponentData/AccelerationCurveTest.cs
index 508f6bbf0d2df364068ad4d1b59de4dcaa296955..1d10e2d5fb3e73d2b4083559dea63212dbd0581b 100644
--- a/VectoCoreTest/Models/SimulationComponentData/AccelerationCurveTest.cs
+++ b/VectoCoreTest/Models/SimulationComponentData/AccelerationCurveTest.cs
@@ -12,7 +12,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData
 
 		public void EqualAcceleration(double velocity, double acceleration, double deceleration)
 		{
-			var entry = Data.Lookup(velocity.SI().Kilo.Meter.Per.Hour.Cast<MeterPerSecond>());
+			var entry = Data.Lookup(velocity.KMPHtoMeterPerSecond());
 			Assert.AreEqual(entry.Acceleration.Value(), acceleration, Tolerance);
 			Assert.AreEqual(entry.Deceleration.Value(), deceleration, Tolerance);
 		}
diff --git a/VectoCoreTest/Utils/SITest.cs b/VectoCoreTest/Utils/SITest.cs
index 65e5027efd29db6ff454adefda8857908695046d..c25adf4e0a40a09f81daee24e47f855c8173ec0c 100644
--- a/VectoCoreTest/Utils/SITest.cs
+++ b/VectoCoreTest/Utils/SITest.cs
@@ -47,7 +47,9 @@ namespace TUGraz.VectoCore.Tests.Utils
 			var angVeloSum = angularVelocity + angularVelocity2;
 			Assert.IsInstanceOfType(angVeloSum, typeof(PerSecond));
 			Assert.AreEqual((400.0 + 600) / 60 * 2 * Math.PI, angVeloSum.Value(), 0.0000001);
-			AssertHelper.Exception<VectoException>(() => { var x = 500.SI().Watt + 300.SI().Newton; });
+			AssertHelper.Exception<VectoException>(() => {
+				var x = 500.SI().Watt + 300.SI().Newton;
+			});
 
 			//subtract
 			var angVeloDiff = angularVelocity - angularVelocity2;
@@ -77,11 +79,15 @@ namespace TUGraz.VectoCore.Tests.Utils
 
 
 			// ConvertTo only allows conversion if the units are correct.
-			AssertHelper.Exception<VectoException>(() => { var x = 40.SI<Newton>().ConvertTo().Watt; });
+			AssertHelper.Exception<VectoException>(() => {
+				var x = 40.SI<Newton>().ConvertTo().Watt;
+			});
 			var res1 = 40.SI<Newton>().ConvertTo().Newton;
 
 			// Cast only allows the cast if the units are correct.
-			AssertHelper.Exception<VectoException>(() => { var x = 40.SI().Newton.Cast<Watt>(); });
+			AssertHelper.Exception<VectoException>(() => {
+				var x = 40.SI().Newton.Cast<Watt>();
+			});
 			var res2 = 40.SI().Newton.Cast<Newton>();
 		}
 
@@ -151,13 +157,21 @@ namespace TUGraz.VectoCore.Tests.Utils
 
 			Assert.IsTrue(v1 > v2);
 			Assert.IsFalse(v1 < v2);
-			AssertHelper.Exception<VectoException>(() => { var x = v1 < v4; },
+			AssertHelper.Exception<VectoException>(() => {
+				var x = v1 < v4;
+			},
 				"Operator '<' can only operate on SI Objects with the same unit. Got: 600.0000 [Nm] < 100.0000 [W]");
-			AssertHelper.Exception<VectoException>(() => { var x = v1 > v4; },
+			AssertHelper.Exception<VectoException>(() => {
+				var x = v1 > v4;
+			},
 				"Operator '>' can only operate on SI Objects with the same unit. Got: 600.0000 [Nm] > 100.0000 [W]");
-			AssertHelper.Exception<VectoException>(() => { var x = v1 <= v4; },
+			AssertHelper.Exception<VectoException>(() => {
+				var x = v1 <= v4;
+			},
 				"Operator '<=' can only operate on SI Objects with the same unit. Got: 600.0000 [Nm] <= 100.0000 [W]");
-			AssertHelper.Exception<VectoException>(() => { var x = v1 >= v4; },
+			AssertHelper.Exception<VectoException>(() => {
+				var x = v1 >= v4;
+			},
 				"Operator '>=' can only operate on SI Objects with the same unit. Got: 600.0000 [Nm] >= 100.0000 [W]");
 
 			SI si = null;
@@ -223,7 +237,9 @@ namespace TUGraz.VectoCore.Tests.Utils
 			AssertHelper.AreRelativeEqual(3.SI<NewtonMeter>(), 1.SI<NewtonMeter>() + 2.SI().Newton.Meter);
 			AssertHelper.AreRelativeEqual(-1.SI<NewtonMeter>(), 1.SI<NewtonMeter>() - 2.SI().Newton.Meter);
 
-			AssertHelper.Exception<VectoException>(() => { var x = 1.SI().Second - 1.SI<Meter>(); },
+			AssertHelper.Exception<VectoException>(() => {
+				var x = 1.SI().Second - 1.SI<Meter>();
+			},
 				"Operator '-' can only operate on SI Objects with the same unit. Got: 1.0000 [s] - 1.0000 [m]");
 		}