diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
index 6ba53e39a1b0e84320c8142106bdf3b2db98d7cb..d919070c561f373eb640f09bc91d847134d0b57f 100644
--- a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
@@ -398,8 +398,8 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 				.AddComponent(new Driver(container, data.DriverData, new DefaultDriverStrategy(container)))
 				.AddComponent(new Vehicle(container, data.VehicleData, data.AirdragData))
 				.AddComponent(new Wheels(container, data.VehicleData.DynamicTyreRadius, data.VehicleData.WheelsInertia))
-				.AddComponent(new Brakes(container))
 				.AddComponent(ctl)
+				.AddComponent(new Brakes(container))
 				.AddComponent(GetElectricMachine(PowertrainPosition.HybridP4, data.ElectricMachinesData, container, es, ctl))
 				.AddComponent(new AxleGear(container, data.AxleGearData))
 				.AddComponent(GetElectricMachine(PowertrainPosition.HybridP3, data.ElectricMachinesData, container, es, ctl))
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/StopStartCombustionEngine.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/StopStartCombustionEngine.cs
index f6ac7a55e70f1180257dc0f59fcced635d92d7e1..23a35b3c886bd9441288df38d73fcaa19ebed4b5 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/StopStartCombustionEngine.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/StopStartCombustionEngine.cs
@@ -48,6 +48,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl {
 						DeltaFullLoad = outTorque * ModelData.IdleSpeed,
 						DeltaDragLoad = outTorque * ModelData.IdleSpeed,
 						Engine = {
+							TorqueOutDemand = outTorque,
 							TotalTorqueDemand = outTorque,
 							PowerRequest = outTorque * outAngularVelocity,
 							DynamicFullLoadPower = 0.SI<Watt>(),
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs b/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs
index a1fe968e5ae4bd996857564d757e1d2a0b5b2698..dcf66b7864cade73609c9097bd276fdb2ef29cac 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs
@@ -63,9 +63,6 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 
 		protected DebugData DebugData = new DebugData();
 
-		protected DrivingAction? DryRunAction = null;
-		protected HybridResultEntry DryRunResult = null;
-
 		public HybridStrategy(VectoRunData runData, IVehicleContainer vehicleContainer)
 		{
 			DataBus = vehicleContainer;
@@ -130,73 +127,28 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 
 		public virtual HybridStrategyResponse Request(Second absTime, Second dt, NewtonMeter outTorque, PerSecond outAngularVelocity, bool dryRun)
 		{
-			if (DataBus.DriverInfo.DrivingAction == DrivingAction.Halt) {
-				return HandleHaltAction(absTime, dt, outTorque, outAngularVelocity, dryRun);
-			}
-
 			var currentGear = PreviousState.GearboxEngaged ? DataBus.GearboxInfo.Gear : Controller.ShiftStrategy.NextGear.Gear;
+			var eval = new List<HybridResultEntry>();
 
-			if (!dryRun && DryRunAction.HasValue && DryRunAction == DataBus.DriverInfo.DrivingAction && DryRunResult != null) {
-				var response = CreateResponse(DryRunResult, currentGear);
-
-				CurrentState.Solution = DryRunResult;
-				CurrentState.AngularVelocity = outAngularVelocity;
-				CurrentState.Evaluations = null;
-				CurrentState.GearboxEngaged = DataBus.GearboxInfo.GearEngaged(absTime);
-				if (!DataBus.EngineCtl.CombustionEngineOn && !DryRunResult.ICEOff && !response.ShiftRequired) {
-					CurrentState.ICEStartTStmp = absTime;
-				}
-				
-				return response;
-			}
-
-			if (dryRun && DataBus.DriverInfo.DrivingAction == DrivingAction.Brake && (DataBus.GearboxInfo.GearEngaged(absTime) || ElectricMotorCanPropellDuringTractionInterruption)) {
-				var tmp = MaxRecuperationSetting(absTime, dt, outTorque, outAngularVelocity);
-				var outTorqueWithoutBraking =
-					outTorque - 2 * DataBus.Brakes.BrakePower / (PreviousState.AngularVelocity + outAngularVelocity);
-				var maxRecuperationResponse = RequestDryRun(absTime, dt, outTorqueWithoutBraking, outAngularVelocity, currentGear, tmp.Setting);
-				if (maxRecuperationResponse.DeltaDragLoad.IsSmaller(0)) {
-					DryRunAction = DataBus.DriverInfo.DrivingAction;
-					DryRunResult = tmp;
-					var brakeRetVal = CreateResponse(tmp, currentGear);
-					DebugData.Add(new { DrivingAction = DataBus.DriverInfo.DrivingAction, Best = tmp, RetVal = brakeRetVal, DryRun = dryRun });
-					return brakeRetVal;
-				}
+			switch (DataBus.DriverInfo.DrivingAction) {
+				case DrivingAction.Accelerate:
+					HandleAccelerateAction(absTime, dt, outTorque, outAngularVelocity, dryRun, eval);
+					break;
+				case DrivingAction.Coast:
+					HandleCoastAction(absTime, dt, outTorque, outAngularVelocity, dryRun, eval);
+					break;
+				case DrivingAction.Roll:
+					HandleRollAction(absTime, dt, outTorque, outAngularVelocity, dryRun, eval);
+					break;
+				case DrivingAction.Brake:
+					HandleBrakeAction(absTime, dt, outTorque, outAngularVelocity, dryRun, eval);
+					break;
+				case DrivingAction.Halt:
+					HandleHaltAction(absTime, dt, outTorque, outAngularVelocity, dryRun, eval);
+					break;
+				default: throw new ArgumentOutOfRangeException();
 			}
 
-			var responseEmOff =
-				new HybridResultEntry {
-					U = double.NaN,
-					Response = null,
-					Setting = new HybridStrategyResponse() {
-						GearboxInNeutral = false,
-						CombustionEngineOn = DataBus.EngineInfo.EngineOn,
-						MechanicalAssistPower = ElectricMotorsOff
-					},
-					FuelCosts = double.NaN,
-					ICEOff = !DataBus.EngineInfo.EngineOn,
-					Gear = 0,
-				};
-			var eval = new List<HybridResultEntry>();
-			
-			if (DataBus.DriverInfo.DrivingAction == DrivingAction.Accelerate || DataBus.DriverInfo.DrivingAction == DrivingAction.Brake) {
-				if (ElectricMotorCanPropellDuringTractionInterruption || DataBus.GearboxInfo.GearEngaged(absTime)) {
-					eval = FindSolution(absTime, dt, outTorque, outAngularVelocity, dryRun);
-				} else {
-					eval.Add(responseEmOff);
-				}
-			}
-			if (DataBus.DriverInfo.DrivingAction == DrivingAction.Roll) {
-				if (ElectricMotorCanPropellDuringTractionInterruption) {
-					//eval = FindSolutionDisengaged(absTime, dt, outTorque, outAngularVelocity, dryRun);
-					eval.Add(responseEmOff);
-				} else {
-					eval.Add(responseEmOff);
-				}
-			}
-			if (DataBus.DriverInfo.DrivingAction == DrivingAction.Coast) {
-				eval.Add(responseEmOff);
-			}
 
 			if (DataBus.DriverInfo.DrivingAction == DrivingAction.Brake && (eval.Count  == 0 )) {
 				eval.Add(MaxRecuperationSetting(absTime, dt, outTorque, outAngularVelocity));
@@ -218,11 +170,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 					CurrentState.ICEStartTStmp = absTime;
 				}
 			}
-			if (dryRun) {
-				DryRunAction = DataBus.DriverInfo.DrivingAction;
-				DryRunResult = best;
-			}
-
+			
 			if (retVal.ShiftRequired) {
 				CurrentState.GearshiftTriggerTstmp = absTime;
 			}
@@ -231,6 +179,197 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 			return retVal;
 		}
 
+		protected HybridResultEntry ResponseEmOff
+		{
+			get {
+				return new HybridResultEntry {
+					U = double.NaN,
+					Response = null,
+					Setting = new HybridStrategyResponse() {
+						GearboxInNeutral = false,
+						CombustionEngineOn = DataBus.EngineInfo.EngineOn,
+						MechanicalAssistPower = ElectricMotorsOff
+					},
+					FuelCosts = double.NaN,
+					ICEOff = !DataBus.EngineInfo.EngineOn,
+					Gear = 0,
+				};
+			}
+		}
+
+		protected virtual bool AllowICEOff(Second absTime)
+		{
+			return PreviousState.ICEStartTStmp == null ||
+					PreviousState.ICEStartTStmp.IsSmaller(absTime + MIN_ICE_ON_TIME);
+		}
+
+		protected virtual void HandleBrakeAction(Second absTime, Second dt, NewtonMeter outTorque, PerSecond outAngularVelocity, bool dryRun, List<HybridResultEntry> eval)
+		{
+			if (ElectricMotorCanPropellDuringTractionInterruption || DataBus.GearboxInfo.GearEngaged(absTime)) {
+
+				var emPos = ModelData.ElectricMachinesData.First().Item1;
+				var currentGear = PreviousState.GearboxEngaged ? DataBus.GearboxInfo.Gear : Controller.ShiftStrategy.NextGear.Gear;
+				var tmp = new HybridStrategyResponse() {
+					CombustionEngineOn = DataBus.EngineInfo.EngineOn, // AllowICEOff(absTime), 
+					GearboxInNeutral = false,
+					MechanicalAssistPower = ElectricMotorsOff
+				};
+				var firstResponse = RequestDryRun(absTime, dt, outTorque, outAngularVelocity, currentGear,  tmp);
+
+				if (tmp.CombustionEngineOn) {
+					var firstEntry = new HybridResultEntry();
+					CalcualteCosts(firstResponse, dt, firstEntry, AllowICEOff(absTime));
+
+					if ((firstEntry.IgnoreReason & (HybridConfigurationIgnoreReason.EngineSpeedTooLow |
+													HybridConfigurationIgnoreReason.EngineSpeedBelowDownshift)) != 0) {
+						// downshift required!
+						var downshift = ResponseEmOff;
+						downshift.Gear = currentGear - 1;
+						eval.Add(downshift);
+						return;
+					}
+				}
+
+				if (firstResponse.DeltaDragLoad.IsGreater(0)) {
+					// braking requested but engine operating point is not below drag curve.
+					if (ElectricMotorCanPropellDuringTractionInterruption || DataBus.GearboxInfo.GearEngaged(absTime)) {
+						eval.AddRange(FindSolution(absTime, dt, outTorque, outAngularVelocity, dryRun));
+					} else {
+						eval.Add(ResponseEmOff);
+					}
+					return;
+				}
+
+				if (firstResponse.Gearbox.Gear == 0 && !ElectricMotorCanPropellDuringTractionInterruption) {
+					// we are disengaged and EM cannot recuperate - switch EM off
+					eval.Add(ResponseEmOff);
+					return;
+				}
+
+				var maxRecuperation = new HybridStrategyResponse() {
+					CombustionEngineOn = DataBus.EngineInfo.EngineOn, // AllowICEOff(absTime), 
+					GearboxInNeutral = false,
+					MechanicalAssistPower = new Dictionary<PowertrainPosition, NewtonMeter>() {
+						{ emPos, firstResponse.ElectricMotor.MaxRecuperationTorque }
+					}
+				};
+				var maxRecuperationResponse = RequestDryRun(
+					absTime, dt, outTorque, outAngularVelocity, currentGear, maxRecuperation);
+
+				if (maxRecuperationResponse.DeltaDragLoad.IsSmaller(0)) {
+					// even with full recuperation (and no braking) the operating point is below the drag curve - use full recuperation
+					eval.Add(
+						new HybridResultEntry() {
+							ICEOff = !DataBus.EngineInfo.EngineOn,
+							Setting = new HybridStrategyResponse() {
+								CombustionEngineOn = DataBus.EngineInfo.EngineOn,
+								GearboxInNeutral = false,
+								MechanicalAssistPower = new Dictionary<PowertrainPosition, NewtonMeter>() {
+									{ emPos, firstResponse.ElectricMotor.MaxRecuperationTorque }
+								}
+							}
+						});
+					return;
+				}
+
+				// full recuperation is not possible - ICE would need to propell - search max possible EM torque
+				var emRecuperationTq = SearchAlgorithm.Search(
+					maxRecuperationResponse.ElectricMotor.ElectricMotorPowerMech /
+					maxRecuperationResponse.ElectricMotor.AngularVelocity,
+					maxRecuperationResponse.Engine.TorqueOutDemand, maxRecuperationResponse.ElectricMotor.MaxDriveTorque * 0.1,
+					getYValue: r => {
+						var response = r as ResponseDryRun;
+						return response.DeltaDragLoad;
+					},
+					evaluateFunction: emTq => {
+						var cfg = new HybridStrategyResponse() {
+							CombustionEngineOn = DataBus.EngineInfo.EngineOn,
+							GearboxInNeutral = false,
+							MechanicalAssistPower = new Dictionary<PowertrainPosition, NewtonMeter>() {
+								{ emPos, emTq }
+							}
+						};
+						return RequestDryRun(absTime, dt, outTorque, outAngularVelocity, currentGear, cfg);
+					},
+					criterion: r => {
+						var response = r as ResponseDryRun;
+						return response.DeltaDragLoad.Value();
+					}
+				);
+				if (emRecuperationTq.IsBetween(
+					firstResponse.ElectricMotor.MaxDriveTorque, firstResponse.ElectricMotor.MaxRecuperationTorque)) {
+					eval.Add(
+						new HybridResultEntry() {
+							ICEOff = !DataBus.EngineInfo.EngineOn,
+							Setting = new HybridStrategyResponse() {
+								CombustionEngineOn = DataBus.EngineInfo.EngineOn,
+								GearboxInNeutral = false,
+								MechanicalAssistPower = new Dictionary<PowertrainPosition, NewtonMeter>() {
+									{ emPos, emRecuperationTq }
+								}
+							}
+						});
+				} else {
+					if (emRecuperationTq.IsGreater(0)) {
+						eval.Add(
+							new HybridResultEntry() {
+								ICEOff = !DataBus.EngineInfo.EngineOn,
+								Setting = new HybridStrategyResponse() {
+									CombustionEngineOn = DataBus.EngineInfo.EngineOn,
+									GearboxInNeutral = false,
+									MechanicalAssistPower = new Dictionary<PowertrainPosition, NewtonMeter>() {
+										{ emPos, firstResponse.ElectricMotor.MaxRecuperationTorque }
+									}
+								}
+							});
+					} else {
+						eval.Add(ResponseEmOff);
+					}
+				}
+			} else {
+				eval.Add(ResponseEmOff);
+			}
+		}
+
+		protected virtual void HandleCoastAction(Second absTime, Second dt, NewtonMeter outTorque, PerSecond outAngularVelocity, bool dryRun, List<HybridResultEntry> eval)
+		{
+			eval.Add(ResponseEmOff);
+		}
+
+		protected virtual void HandleRollAction(Second absTime, Second dt, NewtonMeter outTorque, PerSecond outAngularVelocity, bool dryRun, List<HybridResultEntry> eval)
+		{
+			eval.Add(ResponseEmOff);
+
+			// in case of P3 or P4 the EM could propell/recuperate during roll acttion. but as we have no information
+			// what the real vehicle does lets skip this
+
+			//if (ElectricMotorCanPropellDuringTractionInterruption) {
+			//	//eval = FindSolutionDisengaged(absTime, dt, outTorque, outAngularVelocity, dryRun);
+			//	eval.Add(responseEmOff);
+			//} else {
+			//	eval.Add(responseEmOff);
+			//}
+		}
+
+		protected virtual void HandleHaltAction(Second absTime, Second dt, NewtonMeter outTorque, PerSecond outAngularVelocity, bool dryRun, List<HybridResultEntry> eval)
+		{
+			var tmp = ResponseEmOff;
+			tmp.Setting.GearboxInNeutral = false;
+			tmp.Setting.CombustionEngineOn = false;
+			tmp.ICEOff = true;
+
+			eval.Add(tmp);
+		}
+
+		protected virtual void HandleAccelerateAction(Second absTime, Second dt, NewtonMeter outTorque, PerSecond outAngularVelocity, bool dryRun, List<HybridResultEntry> eval)
+		{
+			if (ElectricMotorCanPropellDuringTractionInterruption || DataBus.GearboxInfo.GearEngaged(absTime)) {
+				eval.AddRange(FindSolution(absTime, dt, outTorque, outAngularVelocity, dryRun));
+			} else {
+				eval.Add(ResponseEmOff);
+			}
+		}
+
 		private HybridResultEntry SelectBestOption(
 			List<HybridResultEntry> eval, Second absTime, Second dt, NewtonMeter outTorque, PerSecond outAngularVelocity, bool dryRun,
 			uint currentGear)
@@ -261,8 +400,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 						best = eval.MinBy(x => x.Setting.MechanicalAssistPower.Sum(e => e.Value ?? 0.SI<NewtonMeter>()));
 					}
 				}
-				if ((DataBus.DriverInfo.DrivingAction == DrivingAction.Accelerate ||
-					DataBus.DriverInfo.DrivingAction == DrivingAction.Brake) && allUnderload) {
+				if ((DataBus.DriverInfo.DrivingAction == DrivingAction.Accelerate // ||
+					/*DataBus.DriverInfo.DrivingAction == DrivingAction.Brake*/) && allUnderload) {
 					if (ElectricMotorCanPropellDuringTractionInterruption || DataBus.GearboxInfo.GearEngaged(absTime)) {
 						var filtered = eval.Where(x => !x.IgnoreReason.InvalidEngineSpeed()).OrderBy(x => Math.Abs((int)currentGear - x.Gear)).ToArray();
 						if (!filtered.Any()) {
@@ -272,9 +411,6 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 							x => x.Setting.MechanicalAssistPower.Sum(e => e.Value ?? 0.SI<NewtonMeter>()));
 					}
 				}
-				if (DataBus.DriverInfo.DrivingAction == DrivingAction.Brake && dryRun) {
-					best = MaxRecuperationSetting(absTime, dt, outTorque, outAngularVelocity);
-				}
 			}
 			return best;
 		}
@@ -296,28 +432,23 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 		private HybridResultEntry MaxRecuperationSetting(Second absTime, Second dt, NewtonMeter outTorque, PerSecond outAngularVelocity)
 		{
 			var first = new HybridStrategyResponse() {
-				CombustionEngineOn = true, 
+				CombustionEngineOn = DataBus.EngineInfo.EngineOn, // AllowICEOff(absTime), 
 				GearboxInNeutral = false,
 				MechanicalAssistPower = ElectricMotorsOff
 			};
 			var currentGear = PreviousState.GearboxEngaged ? DataBus.GearboxInfo.Gear : Controller.ShiftStrategy.NextGear.Gear;
 			var firstResponse = RequestDryRun(absTime, dt, outTorque, outAngularVelocity, currentGear, first);
 
-			var allowICEOff = PreviousState.ICEStartTStmp == null ||
-							PreviousState.ICEStartTStmp.IsSmaller(absTime + MIN_ICE_ON_TIME);
-
-
 			var emPos = ModelData.ElectricMachinesData.First().Item1;
 			
 			var emTorque = !ElectricMotorCanPropellDuringTractionInterruption && (firstResponse.Gearbox.Gear == 0 || !DataBus.GearboxInfo.GearEngaged(absTime)) ? null : firstResponse.ElectricMotor.MaxRecuperationTorque;
-			return TryConfiguration(absTime, dt, outTorque, outAngularVelocity, currentGear, emPos, emTorque, double.NaN, allowICEOff);
+			return TryConfiguration(absTime, dt, outTorque, outAngularVelocity, currentGear, emPos, emTorque, double.NaN, AllowICEOff(absTime));
 		}
 
 		private List<HybridResultEntry> FindSolution(Second absTime, Second dt, NewtonMeter outTorque, PerSecond outAngularVelocity, bool dryRun)
 		{
 			var duringTractionInterruption = (PreviousState.GearshiftTriggerTstmp + ModelData.GearboxData.TractionInterruption).IsGreaterOrEqual(absTime);
-			var allowICEOff = (PreviousState.ICEStartTStmp == null ||
-							PreviousState.ICEStartTStmp.IsSmaller(absTime + MIN_ICE_ON_TIME)) && !duringTractionInterruption;
+			var allowICEOff = AllowICEOff(absTime) && !duringTractionInterruption;
 
 			var emPos = ModelData.ElectricMachinesData.First().Item1;
 			var responses = new List<HybridResultEntry>();
@@ -417,40 +548,6 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 			return entry;
 		}
 
-		private List<HybridResultEntry> FindSolutionDisengaged(Second absTime, Second dt, NewtonMeter outTorque, PerSecond outAngularVelocity, bool dryRun)
-		{
-			const bool allowICEOff = false;
-
-			var emPos = ModelData.ElectricMachinesData.First().Item1;
-			var responses = new List<HybridResultEntry>();
-			var gear = 0u;
-
-			var emOffSetting = new HybridStrategyResponse() {
-				CombustionEngineOn = true,
-				GearboxInNeutral = false,
-				MechanicalAssistPower = ElectricMotorsOff
-			};
-			var emOffResponse = RequestDryRun(absTime, dt, outTorque, outAngularVelocity, gear, emOffSetting);
-
-			if (emOffResponse == null) {
-				return responses;
-			}
-			var emTqReq = (emOffResponse.ElectricMotor.PowerRequest + emOffResponse.ElectricMotor.InertiaPowerDemand) / emOffResponse.ElectricMotor.AngularVelocity;
-
-			var entry = new HybridResultEntry() {
-				U = double.NaN,
-				Response = emOffResponse,
-				Setting = emOffSetting,
-				Gear = gear
-			};
-			CalcualteCosts(emOffResponse, dt, entry, allowICEOff);
-			responses.Add(entry);
-
-			IterateEMTorque(absTime, dt, outTorque, outAngularVelocity, gear, allowICEOff, emOffResponse, emTqReq, emPos, responses);
-
-			return responses;
-		}
-
 		private void IterateEMTorque(Second absTime, Second dt, NewtonMeter outTorque, PerSecond outAngularVelocity, uint nextGear, bool allowIceOff, IResponse firstResponse, NewtonMeter emTqReq, PowertrainPosition emPos, List<HybridResultEntry> responses)
 		{
 			const double stepSize = 0.1;
@@ -695,46 +792,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 			}
 		}
 
-		private Tuple<bool, uint> HandleGearshift(Second absTime, HybridResultEntry config)
-		{
-			var minimumShiftTimePassed = (DataBus.GearboxInfo.LastShift + ModelData.GearboxData.ShiftTime).IsSmallerOrEqual(absTime);
-			
-			// search for EM operating point already selected another gear
-			if (minimumShiftTimePassed && config.Gear != DataBus.GearboxInfo.Gear) {
-				return Tuple.Create(true, config.Gear);
-			}
-			var response = config.Response;
-			var retVal = Tuple.Create(false, response.Gearbox.Gear);
-
-			return retVal;
-		}
-
-
-		private bool SpeedTooLowForEngine(uint gear, PerSecond outAngularSpeed)
-		{
-			return (outAngularSpeed * ModelData.GearboxData.Gears[gear].Ratio).IsSmaller(DataBus.EngineInfo.EngineIdleSpeed);
-		}
-
-		private bool SpeedTooHighForEngine(uint gear, PerSecond outAngularSpeed)
-		{
-			return
-				(outAngularSpeed * ModelData.GearboxData.Gears[gear].Ratio).IsGreaterOrEqual(VectoMath.Min(ModelData.GearboxData.Gears[gear].MaxSpeed,
-																								DataBus.EngineInfo.EngineN95hSpeed));
-		}
-
-		private HybridStrategyResponse HandleHaltAction(Second absTime, Second dt, NewtonMeter outTorque, PerSecond outAngularVelocity, bool dryRun)
-		{
-			var tmp = new HybridStrategyResponse() {
-				CombustionEngineOn = false,
-				GearboxInNeutral = false,
-				MechanicalAssistPower = ElectricMotorsOff
-			};
-			CurrentState.Response = dryRun ? null : tmp;
-
-			DebugData.Add(new { RetVal = tmp, DryRun = dryRun });
-			return tmp;
-		}
-
+		
 		public virtual HybridStrategyResponse Initialize(NewtonMeter outTorque, PerSecond outAngularVelocity)
 		{
 			var retVal = new HybridStrategyResponse()
@@ -758,8 +816,6 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 			CurrentState.ICEStartTStmp = PreviousState.ICEStartTStmp;
 			CurrentState.GearshiftTriggerTstmp = PreviousState.GearshiftTriggerTstmp;
 			DebugData = new DebugData();
-			DryRunAction = null;
-			DryRunResult = null;
 		}
 
 		public void WriteModalResults(Second time, Second simulationInterval, IModalDataContainer container)
diff --git a/VectoCore/VectoCoreTest/Integration/Hybrid/ParallelHybridTest.cs b/VectoCore/VectoCoreTest/Integration/Hybrid/ParallelHybridTest.cs
index 67937b3aa66f77fed5e81ecc0ce8dbc1ac029e40..6efedf728a848d0a5e94450107316b65e5069de6 100644
--- a/VectoCore/VectoCoreTest/Integration/Hybrid/ParallelHybridTest.cs
+++ b/VectoCore/VectoCoreTest/Integration/Hybrid/ParallelHybridTest.cs
@@ -159,7 +159,7 @@ namespace TUGraz.VectoCore.Tests.Integration.Hybrid
 			TestCase("LongHaul", 2000, 0.5, 0, TestName = "P2 Hybrid DriveCycle LongHaul, SoC: 0.5 Payload: 2t P_auxEl: 0kW"),
 			TestCase("RegionalDelivery", 2000, 0.5, 0, TestName = "P2 Hybrid DriveCycle RegionalDelivery, SoC: 0.5 Payload: 2t P_auxEl: 0kW"),
 			TestCase("UrbanDelivery", 2000, 0.5, 0, TestName = "P2 Hybrid DriveCycle UrbanDelivery, SoC: 0.5 Payload: 2t P_auxEl: 0kW"),
-			TestCase("Construction", 2000, 0.5, 0, TestName = "P2 Hybrid DriveCycle UrbanDelivery, SoC: 0.5 Payload: 2t P_auxEl: 0kW"),
+			TestCase("Construction", 2000, 0.5, 0, TestName = "P2 Hybrid DriveCycle Construction, SoC: 0.5 Payload: 2t P_auxEl: 0kW"),
 			TestCase("Urban", 2000, 0.5, 0, TestName = "P2 Hybrid DriveCycle Urban, SoC: 0.5 Payload: 2t P_auxEl: 0kW"),
 			TestCase("Suburban", 2000, 0.5, 0, TestName = "P2 Hybrid DriveCycle SubUrban, SoC: 0.5 Payload: 2t P_auxEl: 0kW"),
 			TestCase("Interurban", 2000, 0.5, 0, TestName = "P2 Hybrid DriveCycle InterUrban, SoC: 0.5 Payload: 2t P_auxEl: 0kW"),
@@ -614,8 +614,8 @@ namespace TUGraz.VectoCore.Tests.Integration.Hybrid
 				.AddComponent(new Vehicle(container, runData.VehicleData, runData.AirdragData))
 				.AddComponent(new Wheels(container, runData.VehicleData.DynamicTyreRadius,
 					runData.VehicleData.WheelsInertia))
-				.AddComponent(new Brakes(container))
 				.AddComponent(ctl)
+				.AddComponent(new Brakes(container))
 				.AddComponent(GetElectricMachine(PowertrainPosition.HybridP4, runData.ElectricMachinesData, container,
 					es, ctl))
 				.AddComponent(new AxleGear(container, runData.AxleGearData))