diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs b/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs
index c3c37c90820d8b587c2e3af785d7a86cb80f94e4..f95d7fd14b58dd7138ca376e320754d092746296 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs
@@ -132,6 +132,11 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 
 		public virtual HybridStrategyResponse Request(Second absTime, Second dt, NewtonMeter outTorque, PerSecond outAngularVelocity, bool dryRun)
 		{
+			if ((outTorque * outAngularVelocity).IsGreater(StrategyParameters.MaxDrivetrainPower)) {
+				// todo: do something...
+				throw new NotImplementedException();
+			}
+
 			var currentGear = PreviousState.GearboxEngaged ? DataBus.GearboxInfo.Gear : Controller.ShiftStrategy.NextGear.Gear;
 			var eval = new List<HybridResultEntry>();
 
diff --git a/VectoCore/VectoCoreTest/Integration/Hybrid/ParallelHybridTest.cs b/VectoCore/VectoCoreTest/Integration/Hybrid/ParallelHybridTest.cs
index 8e181202fb1b27ab133b0df38986405878cc0e5c..25e87cf37557bf7543ff036ed5d4be7d8c06aa3a 100644
--- a/VectoCore/VectoCoreTest/Integration/Hybrid/ParallelHybridTest.cs
+++ b/VectoCore/VectoCoreTest/Integration/Hybrid/ParallelHybridTest.cs
@@ -83,11 +83,11 @@ namespace TUGraz.VectoCore.Tests.Integration.Hybrid
 		[
 			TestCase(30, 0.7, 0, TestName = "P2 Hybrid DriveOff 30km/h SoC: 0.7, level"),
 			TestCase(80, 0.7, 0, TestName = "P2 Hybrid DriveOff 80km/h SoC: 0.7, level"),
-		TestCase(30, 0.22, 0, TestName = "P2 Hybrid DriveOff 30km/h SoC: 0.22, level")
-			]
+		TestCase(30, 0.22, 0, TestName = "P2 Hybrid DriveOff 30km/h SoC: 0.22, level"),
+		]
 		public void P2HybridDriveOff(double vmax, double initialSoC, double slope)
 		{
-			var GraphWriter = GetGraphWriter(new[] { ModalResultField.P_electricMotor_mech_P2 });
+			var graphWriter = GetGraphWriter(new[] { ModalResultField.P_electricMotor_mech_P2 });
 			var cycleData = string.Format(
 				@"   0,   0, {1},    3
 				   700, {0}, {1},    0", vmax, slope);
@@ -112,7 +112,41 @@ namespace TUGraz.VectoCore.Tests.Integration.Hybrid
 			Assert.IsTrue(run.FinishedWithoutErrors);
 
 			Assert.IsTrue(modData.Rows.Count > 0);
-			GraphWriter.Write(modFilename);
+			graphWriter.Write(modFilename);
+		}
+
+		[
+			TestCase(80, 0.7, 5, 320, TestName = "P2 Hybrid DriveOff 80km/h SoC: 0.7, UH 5% MaxPWR: 320kW"),
+			
+		]
+		public void P2HybridDriveOffLimitPwr(double vmax, double initialSoC, double slope, double maxPwrkW)
+		{
+			var graphWriter = GetGraphWriter(new[] { ModalResultField.P_electricMotor_mech_P2 });
+			var cycleData = string.Format(
+				@"   0,   0, {1},    3
+				   700, {0}, {1},    0", vmax, slope);
+			var cycle = SimpleDrivingCycles.CreateCycleData(cycleData);
+
+			const bool largeMotor = true;
+
+			var modFilename = string.Format("SimpleParallelHybrid-P2_acc_{0}-{1}_{2}.vmod", vmax, initialSoC, slope);
+			const PowertrainPosition pos = PowertrainPosition.HybridP2;
+			var job = CreateEngineeringRun(
+				cycle, modFilename, initialSoC, pos, 1.0, largeMotor: true, maxDriveTrainPower: (maxPwrkW * 1000).SI<Watt>());
+			var run = job.Runs.First().Run;
+
+			var hybridController = (HybridController)((VehicleContainer)run.GetContainer()).HybridController;
+			Assert.NotNull(hybridController);
+
+			var modData = ((ModalDataContainer)((VehicleContainer)run.GetContainer()).ModData).Data;
+
+			//run.Run();
+			job.Execute();
+			job.WaitFinished();
+			Assert.IsTrue(run.FinishedWithoutErrors);
+
+			Assert.IsTrue(modData.Rows.Count > 0);
+			graphWriter.Write(modFilename);
 		}
 
 		[
@@ -730,13 +764,13 @@ namespace TUGraz.VectoCore.Tests.Integration.Hybrid
 
 		// =================================================
 
-		public static JobContainer CreateEngineeringRun(DrivingCycleData cycleData, string modFileName, double initialSoc, PowertrainPosition pos, double ratio, bool largeMotor = false, double pAuxEl = 0, Kilogram payload = null)
+		public static JobContainer CreateEngineeringRun(DrivingCycleData cycleData, string modFileName, double initialSoc, PowertrainPosition pos, double ratio, bool largeMotor = false, double pAuxEl = 0, Kilogram payload = null, Watt maxDriveTrainPower = null)
 		{
 			var fileWriter = new FileOutputWriter(Path.GetFileNameWithoutExtension(modFileName));
 			var sumData = new SummaryDataContainer(fileWriter);
 			var jobContainer = new JobContainer(sumData);
 			var container = CreateParallelHybridPowerTrain(
-				cycleData,modFileName, initialSoc, largeMotor, sumData, pAuxEl, pos, ratio, payload);
+				cycleData,modFileName, initialSoc, largeMotor, sumData, pAuxEl, pos, ratio, payload, maxDriveTrainPower);
 			var run = new DistanceRun(container);
 			jobContainer.AddRun(run);
 			return jobContainer;
@@ -751,7 +785,8 @@ namespace TUGraz.VectoCore.Tests.Integration.Hybrid
 		}
 
 		public static VehicleContainer CreateParallelHybridPowerTrain(DrivingCycleData cycleData, string modFileName,
-			double initialBatCharge, bool largeMotor, SummaryDataContainer sumData, double pAuxEl, PowertrainPosition pos, double ratio, Kilogram payload = null)
+			double initialBatCharge, bool largeMotor, SummaryDataContainer sumData, double pAuxEl,
+			PowertrainPosition pos, double ratio, Kilogram payload = null, Watt maxDriveTrainPower = null)
 		{ 
 			var gearboxData = CreateGearboxData();
 			var axleGearData = CreateAxleGearData();
@@ -792,7 +827,7 @@ namespace TUGraz.VectoCore.Tests.Integration.Hybrid
 				EngineData = engineData,
 				BatteryData = batteryData,
 				GearshiftParameters = CreateGearshiftData(gearboxData, axleGearData.AxleGear.Ratio, engineData.IdleSpeed),
-				HybridStrategyParameters = CreateHybridStrategyData(),
+				HybridStrategyParameters = CreateHybridStrategyData(maxDriveTrainPower),
 				ElectricAuxDemand = pAuxEl.SI<Watt>()
 			};
 			var fileWriter = new FileOutputWriter(modFileName);
@@ -854,7 +889,7 @@ namespace TUGraz.VectoCore.Tests.Integration.Hybrid
 			return container;
 		}
 
-		private static HybridStrategyParameters CreateHybridStrategyData()
+		private static HybridStrategyParameters CreateHybridStrategyData(Watt maxDriveTrainPower)
 		{
 			return new HybridStrategyParameters() {
 				EquivalenceFactor = 2.5,
@@ -863,7 +898,8 @@ namespace TUGraz.VectoCore.Tests.Integration.Hybrid
 				TargetSoC = 0.5,
 				AuxReserveTime = 5.SI<Second>(),
 				AuxReserveChargeTime = 2.SI<Second>(),
-				MinICEOnTime = 3.SI<Second>()
+				MinICEOnTime = 3.SI<Second>(), 
+				MaxDrivetrainPower = maxDriveTrainPower ?? 1e12.SI<Watt>(),
 			};
 		}
 
@@ -1082,7 +1118,7 @@ namespace TUGraz.VectoCore.Tests.Integration.Hybrid
 				Loading = loading,
 				DynamicTyreRadius = 0.465.SI<Meter>(),
 				AxleData = axles,
-				SavedInDeclarationMode = false
+				SavedInDeclarationMode = false,
 			};
 		}
 
diff --git a/VectoCore/VectoCoreTest/Utils/MockDeclarationVehicleInputData.cs b/VectoCore/VectoCoreTest/Utils/MockDeclarationVehicleInputData.cs
index ef3250815d357f50111a76404715e7e5c26f7fdf..ae6a1e4b45c451f5fce60c09cc5d2debafc7a3d1 100644
--- a/VectoCore/VectoCoreTest/Utils/MockDeclarationVehicleInputData.cs
+++ b/VectoCore/VectoCoreTest/Utils/MockDeclarationVehicleInputData.cs
@@ -146,6 +146,7 @@ namespace TUGraz.VectoCore.Tests.Utils {
 		}
 
 		public double InitialSOC { get; }
+		public Watt MaxDrivetrainPower { get; }
 		public VectoSimulationJobType VehicleType { get; }
 
 		public bool ZeroEmissionVehicle { get; }