diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/CompletedBus/Generic/DeclarationDataAdapterGenericCompletedBus.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/CompletedBus/Generic/DeclarationDataAdapterGenericCompletedBus.cs
index 31301306d7ef5067cdfa58731a25d11e15c911a4..8665b7c63e691acbee9457bf9300fa36abc238bb 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/CompletedBus/Generic/DeclarationDataAdapterGenericCompletedBus.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/CompletedBus/Generic/DeclarationDataAdapterGenericCompletedBus.cs
@@ -29,7 +29,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.CompletedBus.Gener
 			private readonly IDriverDataAdapterBus _driverDataAdapter = new CompletedBusGenericDriverDataAdapter();
 			//protected readonly IVehicleDataAdapter _vehicleDataAdapter = new CompletedBusGenericVehicleDataAdapter();
 			private readonly IAxleGearDataAdapter _axleGearDataAdapter = new GenericCompletedBusAxleGearDataAdapter();
-			private readonly IRetarderDataAdapter _retarderDataAdapter = new GenericRetarderDataAdapter();
+			private readonly IGenericRetarderDataAdapter _retarderDataAdapter = new GenericRetarderDataAdapter();
 			private readonly IAirdragDataAdapter _airdragDataAdapter = new AirdragDataAdapter();
 			private readonly IAngledriveDataAdapter _angledriveDataAdapter = new GenericAngledriveDataAdapter();
             #endregion
@@ -106,7 +106,12 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.CompletedBus.Gener
 			public RetarderData CreateRetarderData(IRetarderInputData retarderData, ArchitectureID archID,
 				IIEPCDeclarationInputData iepcInputData)
 			{
-				return _retarderDataAdapter.CreateRetarderData(retarderData, archID, iepcInputData);
+				throw new NotImplementedException("No longer applicable to buses.");
+			}
+
+			public RetarderData CreateGenericRetarderData(IRetarderInputData retarderData, VectoRunData vectoRun)
+			{
+				return _retarderDataAdapter.CreateGenericRetarderData(retarderData, vectoRun);
 			}
 
 			public virtual IList<Tuple<PowertrainPosition, ElectricMotorData>> CreateElectricMachines(IElectricMachinesDeclarationInputData electricMachines, IDictionary<PowertrainPosition, IList<Tuple<Volt, TableData>>> torqueLimits,
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/HeavyLorry/DeclarationDataAdapterHeavyLorry.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/HeavyLorry/DeclarationDataAdapterHeavyLorry.cs
index 8e15523d15a05089c4400c479a197f499452d1c5..17d8269fe4e14e7148851b297a79d68400fa0666 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/HeavyLorry/DeclarationDataAdapterHeavyLorry.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/HeavyLorry/DeclarationDataAdapterHeavyLorry.cs
@@ -64,7 +64,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.HeavyLorry
             private readonly IDriverDataAdapter _driverDataAdapter = new LorryDriverDataAdapter();
             //protected readonly IVehicleDataAdapter _vehicleDataAdapter = new LorryVehicleDataAdapter();
 			private readonly IAxleGearDataAdapter _axleGearDataAdapter = new AxleGearDataAdapter();
-			private readonly IRetarderDataAdapter _retarderDataAdapter = new RetarderDataAdapter();
+			private readonly IGenericRetarderDataAdapter _retarderDataAdapter = new GenericRetarderDataAdapter();
 			private readonly IAirdragDataAdapter _airdragDataAdapter = new AirdragDataAdapter();
 
 			private IAngledriveDataAdapter _angleDriveDataAdapter = new AngledriveDataAdapter();
@@ -219,6 +219,11 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.HeavyLorry
 			{
 				return ElectricMachinesDataAdapter.CreateIEPCElectricMachines(iepc, averageVoltage);
 			}
+
+			public RetarderData CreateGenericRetarderData(IRetarderInputData retarderData, VectoRunData vectoRun)
+			{
+				return _retarderDataAdapter.CreateGenericRetarderData(retarderData, vectoRun);
+			}
 		}
 
 		public class Conventional : LorryBase
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/IDeclarationDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/IDeclarationDataAdapter.cs
index 41219add0f0722d460176995d521cf09f83d8e10..ed6d927bb7989bc281705ad31a70f18eb47335dc 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/IDeclarationDataAdapter.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/IDeclarationDataAdapter.cs
@@ -16,8 +16,6 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 {
 	public interface IDeclarationDataAdapter
 	{
-		
-
 		VehicleData CreateVehicleData(IVehicleDeclarationInputData vehicle, Segment segment, Mission first, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> keyValuePair, bool allowVocational);
 		
 		GearboxData CreateGearboxData(IVehicleDeclarationInputData inputData,
@@ -28,7 +26,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 
 		RetarderData CreateRetarderData(IRetarderInputData retarderData, ArchitectureID archID,
 			IIEPCDeclarationInputData iepcInputData);
-		
+				
 		AxleGearData CreateAxleGearData(IAxleGearInputData axleGearInputData);
 
 		AngledriveData CreateAngledriveData(IAngledriveInputData angledriveData);
@@ -108,6 +106,8 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 			GearboxData gearboxData, CombustionEngineData engineData,
 			IList<Tuple<PowertrainPosition, ElectricMotorData>> runDataElectricMachinesData,
 			ArchitectureID architectureId);
+		
+		RetarderData CreateGenericRetarderData(IRetarderInputData retarderData, VectoRunData vectoRun);
 	}
 
 	public interface IGenericCompletedBusDeclarationDataAdapter : IDeclarationDataAdapter
@@ -135,7 +135,8 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 			GearboxData gearboxData, CombustionEngineData engineData,
 			IList<Tuple<PowertrainPosition, ElectricMotorData>> runDataElectricMachinesData, ArchitectureID architectureId);
 
-    }
+		RetarderData CreateGenericRetarderData(IRetarderInputData retarderData, VectoRunData vectoRun);
+	}
 
 	public interface ISpecificCompletedBusDeclarationDataAdapter
 	{
@@ -177,5 +178,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 			SuperCapData runDataSuperCapData, Kilogram vehicleMass, OvcHevMode ovcMode,
 			LoadingType loading, VehicleClass vehicleClass, MissionType missionType, TableData boostingLimitations,
 			GearboxData gearboxData, CombustionEngineData engineData, IList<Tuple<PowertrainPosition, ElectricMotorData>> emData, ArchitectureID architectureId);
-    }
+
+		RetarderData CreateGenericRetarderData(IRetarderInputData retarderData, VectoRunData vectoRun);
+	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/PrimaryBus/DeclarationDataAdapterPrimaryBus.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/PrimaryBus/DeclarationDataAdapterPrimaryBus.cs
index a731f58b8bd743594522fc2d45cb7703430cd4b5..3a225dfd96ba226f9bd249fd4ce7d9128112c301 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/PrimaryBus/DeclarationDataAdapterPrimaryBus.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/PrimaryBus/DeclarationDataAdapterPrimaryBus.cs
@@ -29,7 +29,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.PrimaryBus
 			//protected readonly IVehicleDataAdapter _vehicleDataAdapter = new PrimaryBusVehicleDataAdapter();
 			protected readonly IAxleGearDataAdapter _axleGearDataAdapter = new AxleGearDataAdapter();
 			//protected readonly IPrimaryBusAuxiliaryDataAdapter _auxDataAdapter = new PrimaryBusAuxiliaryDataAdapter();
-			protected readonly IRetarderDataAdapter _retarderDataAdapter = new RetarderDataAdapter();
+			protected readonly IGenericRetarderDataAdapter _retarderDataAdapter = new GenericRetarderDataAdapter();
 			protected readonly IAirdragDataAdapter _airdragDataAdapter = new AirdragDataAdapter();
 			private readonly IAngledriveDataAdapter _angledriveDataAdapter = new AngledriveDataAdapter();
 
@@ -169,6 +169,11 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.PrimaryBus
 			{
 				return AuxDataAdapter.CreateBusAuxiliariesData(mission, vehicleData, runData);
 			}
+
+			public RetarderData CreateGenericRetarderData(IRetarderInputData retarderData, VectoRunData vectoRun)
+			{
+				return _retarderDataAdapter.CreateGenericRetarderData(retarderData, vectoRun);
+			}
 		}
 
 		public class Conventional : PrimaryBusBase
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/Interfaces/IRetarderDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/Interfaces/IRetarderDataAdapter.cs
index 7214b9fc45693d6748f31c2468e691d43b553ae0..3b9a506d244484d526382bf41127da733ab72be6 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/Interfaces/IRetarderDataAdapter.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/Interfaces/IRetarderDataAdapter.cs
@@ -1,4 +1,5 @@
 using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCore.Models.Simulation.Data;
 using TUGraz.VectoCore.Models.SimulationComponent.Data;
 
 namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponents.Interfaces
@@ -8,4 +9,9 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
         RetarderData CreateRetarderData(IRetarderInputData retarder, ArchitectureID architecture,
 			IIEPCDeclarationInputData iepcInputData);
     }
+
+	public interface IGenericRetarderDataAdapter : IRetarderDataAdapter
+	{
+		RetarderData CreateGenericRetarderData(IRetarderInputData retarder, VectoRunData vehicleData);
+	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/RetarderDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/RetarderDataAdapter.cs
index 3c48be3ca2744f02e83b6a6fa08e8ed9c2125db6..1d644e5ea61ced7127e8cc59bd84f97950d97613 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/RetarderDataAdapter.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SimulationComponents/RetarderDataAdapter.cs
@@ -6,6 +6,7 @@ using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.InputData.Reader.ComponentData;
 using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponents.Interfaces;
 using TUGraz.VectoCore.Models.Declaration;
+using TUGraz.VectoCore.Models.Simulation.Data;
 using TUGraz.VectoCore.Models.SimulationComponent.Data;
 
 namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponents
@@ -122,9 +123,26 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponen
 		
 	}
 
-	public class GenericRetarderDataAdapter : IRetarderDataAdapter
+	public class GenericRetarderDataAdapter : IGenericRetarderDataAdapter
 	{
 		private readonly GenericBusRetarderData _genericRetarderData = new GenericBusRetarderData();
+
+		public RetarderData CreateGenericRetarderData(IRetarderInputData retarder, VectoRunData vehicleData)
+		{
+			bool isBatteryElectric =
+				vehicleData.JobType == VectoSimulationJobType.BatteryElectricVehicle
+				|| vehicleData.JobType == VectoSimulationJobType.IEPC_E;
+			
+			PerSecond maxMotorSpeed = isBatteryElectric
+				? vehicleData.ElectricMachinesData[0].Item2.EfficiencyData.MaxSpeed
+				: vehicleData.EngineData.FullLoadCurves[0].MaxSpeed;
+			
+			double maxGbxRatio = vehicleData.GearboxData?.Gears[(uint)vehicleData.GearboxData.Gears.Count].Ratio ?? 1;
+			double combinedRatios = isBatteryElectric ? maxGbxRatio * vehicleData.ElectricMachinesData[0].Item2.RatioADC : maxGbxRatio;
+
+			return _genericRetarderData.CreateGenericBusRetarderData(retarder, maxMotorSpeed, combinedRatios);
+		}
+
 		public RetarderData CreateRetarderData(IRetarderInputData retarder, ArchitectureID architecture,
 			IIEPCDeclarationInputData iepcInputData)
 		{
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SingleBus/DeclarationDataAdapterSingleBus.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SingleBus/DeclarationDataAdapterSingleBus.cs
index bfa64a6460589517d32eeab7a1887e70b1f66b17..a37cc650c39ace7c1a8cce0c05284aa2f48cd445 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SingleBus/DeclarationDataAdapterSingleBus.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SingleBus/DeclarationDataAdapterSingleBus.cs
@@ -30,7 +30,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SingleBus
 			private IDriverDataAdapterBus _driverDataAdapter = new PrimaryBusDriverDataAdapter();
 			private SingleBusVehicleDataAdapter _vehicleDataAdapter = new SingleBusVehicleDataAdapter();
 			private IAxleGearDataAdapter _axleGearDataAdapter = new AxleGearDataAdapter();
-			private IRetarderDataAdapter _retarderDataAdapter = new RetarderDataAdapter();
+			private IGenericRetarderDataAdapter _retarderDataAdapter = new GenericRetarderDataAdapter();
 			private IAirdragDataAdapter _airdragDataAdapter = new SingleBusAirdragDataAdapter();
 			private IAngledriveDataAdapter _angledriveDataAdapter = new AngledriveDataAdapter();
 
@@ -175,6 +175,11 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SingleBus
 				VectoSimulationJobType jobType, bool ovc, Action<BatterySystemData> setBatteryData,
 				Action<SuperCapData> setSuperCapData);
 
+			public RetarderData CreateGenericRetarderData(IRetarderInputData retarderData, VectoRunData vectoRun)
+			{
+				return _retarderDataAdapter.CreateGenericRetarderData(retarderData, vectoRun);
+			}
+
 			#endregion
 		}
 
diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/CompletedBusRunDataFactory/DeclarationModeCompletedBusRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/CompletedBusRunDataFactory/DeclarationModeCompletedBusRunDataFactory.cs
index 0554ca45c685cf4eacf2788161bb9ff350b899af..78083b3bfce00e6a47917826509aad9464ff334f 100644
--- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/CompletedBusRunDataFactory/DeclarationModeCompletedBusRunDataFactory.cs
+++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/CompletedBusRunDataFactory/DeclarationModeCompletedBusRunDataFactory.cs
@@ -265,13 +265,9 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun
                     PrimaryVehicle.Components.AuxiliaryInputData, primaryBusAuxiliaries, mission.MissionType,
                     primarySegment.VehicleClass, mission.BusParameter.VehicleLength,
                     PrimaryVehicle.Components.AxleWheels.NumSteeredAxles, PrimaryVehicle.VehicleType);
-                simulationRunData.Retarder =
-                    DataAdapterGeneric.CreateRetarderData(PrimaryVehicle.Components.RetarderInputData, PrimaryVehicle.ArchitectureID, PrimaryVehicle.Components.IEPC);
 
                 simulationRunData.EngineData.FuelMode = 0;
                 simulationRunData.VehicleData.VehicleClass = _segment.VehicleClass;
-                simulationRunData.BusAuxiliaries =
-                    DataAdapterGeneric.CreateBusAuxiliariesData(mission, PrimaryVehicle, CompletedVehicle, simulationRunData);
                 var shiftStrategyName =
                     PowertrainBuilder.GetShiftStrategyName(PrimaryVehicle.Components.GearboxInputData.Type,
                         PrimaryVehicle.VehicleType);
@@ -282,7 +278,11 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun
                     DataAdapterGeneric.CreateGearshiftData((simulationRunData.AxleGearData?.AxleGear.Ratio ?? 1.0) *
 															(simulationRunData.AngledriveData?.Angledrive.Ratio ?? 1.0),
                         PrimaryVehicle.EngineIdleSpeed, gbx.Type, gbx.Gears.Count);
-                return simulationRunData;
+				simulationRunData.Retarder =
+					DataAdapterGeneric.CreateGenericRetarderData(PrimaryVehicle.Components.RetarderInputData, simulationRunData);
+				simulationRunData.BusAuxiliaries =
+					DataAdapterGeneric.CreateBusAuxiliariesData(mission, PrimaryVehicle, CompletedVehicle, simulationRunData);
+				return simulationRunData;
             }
 
             protected override VectoRunData CreateVectoRunDataSpecific(Mission mission,
@@ -305,14 +305,15 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun
 					PrimaryVehicle.Components.AuxiliaryInputData,
 					PrimaryVehicle.Components.BusAuxiliaries, mission.MissionType, _segment.VehicleClass,
 					CompletedVehicle.Length, PrimaryVehicle.Components.AxleWheels.NumSteeredAxles, PrimaryVehicle.VehicleType);
-				simulationRunData.Retarder = DataAdapterGeneric.CreateRetarderData(PrimaryVehicle.Components.RetarderInputData, PrimaryVehicle.ArchitectureID, PrimaryVehicle.Components.IEPC);
 				simulationRunData.EngineData.FuelMode = 0;
 				simulationRunData.VehicleData.VehicleClass = _segment.VehicleClass;
-				simulationRunData.BusAuxiliaries =
-					DataAdapterSpecific.CreateBusAuxiliariesData(mission, PrimaryVehicle, CompletedVehicle,
-						simulationRunData);
 
 				CreateGearboxAndGearshiftData(simulationRunData);
+				simulationRunData.Retarder =
+					DataAdapterGeneric.CreateGenericRetarderData(PrimaryVehicle.Components.RetarderInputData, simulationRunData);
+				simulationRunData.BusAuxiliaries =
+					DataAdapterSpecific.CreateBusAuxiliariesData(mission, PrimaryVehicle, CompletedVehicle, simulationRunData);
+
 				return simulationRunData;
             }
 
@@ -457,9 +458,6 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun
 					iepcData.ForEach(iepc => rd.ElectricMachinesData.Add(iepc));
 				}
 
-
-
-
                 var primaryBusAuxiliaries = PrimaryVehicle.Components.BusAuxiliaries;
 
                 rd.VehicleData =
@@ -476,17 +474,16 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun
                     PrimaryVehicle.Components.AuxiliaryInputData, primaryBusAuxiliaries, mission.MissionType,
                     primarySegment.VehicleClass, mission.BusParameter.VehicleLength,
                     PrimaryVehicle.Components.AxleWheels.NumSteeredAxles, PrimaryVehicle.VehicleType);
-                rd.Retarder =
-                    DataAdapterGeneric.CreateRetarderData(PrimaryVehicle.Components.RetarderInputData, PrimaryVehicle.ArchitectureID, PrimaryVehicle.Components.IEPC);
 				rd.EngineData.FuelMode = 0;
                 rd.VehicleData.VehicleClass = _segment.VehicleClass;
-                rd.BusAuxiliaries =
-                    DataAdapterGeneric.CreateBusAuxiliariesData(mission, PrimaryVehicle, CompletedVehicle, rd);
                 
-
 				CreateGearboxAndGearshiftData(rd);
+				rd.Retarder =
+					DataAdapterGeneric.CreateGenericRetarderData(PrimaryVehicle.Components.RetarderInputData, rd);
+				rd.BusAuxiliaries =
+					DataAdapterGeneric.CreateBusAuxiliariesData(mission, PrimaryVehicle, CompletedVehicle, rd);
 
-                rd.HybridStrategyParameters =
+				rd.HybridStrategyParameters =
 					DataAdapterGeneric.CreateHybridStrategy(rd.BatteryData, rd.SuperCapData, rd.VehicleData.TotalVehicleMass,
 						ovcHevMode, loading.Key, rd.VehicleData.VehicleClass, mission.MissionType);
 
@@ -543,12 +540,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun
 					PrimaryVehicle.Components.AuxiliaryInputData,
 					PrimaryVehicle.Components.BusAuxiliaries, mission.MissionType, _segment.VehicleClass,
 					CompletedVehicle.Length, PrimaryVehicle.Components.AxleWheels.NumSteeredAxles, PrimaryVehicle.VehicleType);
-				rd.Retarder = DataAdapterGeneric.CreateRetarderData(PrimaryVehicle.Components.RetarderInputData, PrimaryVehicle.ArchitectureID, PrimaryVehicle.Components.IEPC);
 				rd.EngineData.FuelMode = 0;
 				rd.VehicleData.VehicleClass = _segment.VehicleClass;
-				rd.BusAuxiliaries =
-					DataAdapterSpecific.CreateBusAuxiliariesData(mission, PrimaryVehicle, CompletedVehicle,
-						rd);
 
 
                 CreateGearboxAndGearshiftData(rd);
@@ -560,6 +553,10 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun
 					rd.Loading,
 					rd.VehicleData.VehicleClass,
 					rd.Mission.MissionType);
+				rd.Retarder = DataAdapterGeneric.CreateGenericRetarderData(PrimaryVehicle.Components.RetarderInputData, rd);
+				rd.BusAuxiliaries =
+					DataAdapterSpecific.CreateBusAuxiliariesData(mission, PrimaryVehicle, CompletedVehicle,
+						rd);
 
                 SetOvcModeProperties(ovcMode, rd);
 
@@ -693,13 +690,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun
                     PrimaryVehicle.Components.AuxiliaryInputData, primaryBusAuxiliaries, mission.MissionType,
                     primarySegment.VehicleClass, mission.BusParameter.VehicleLength,
                     PrimaryVehicle.Components.AxleWheels.NumSteeredAxles, PrimaryVehicle.VehicleType);
-                rd.Retarder =
-                    DataAdapterGeneric.CreateRetarderData(PrimaryVehicle.Components.RetarderInputData, PrimaryVehicle.VehicleType == VectoSimulationJobType.IHPC ? ArchitectureID.P_IHPC : PrimaryVehicle.ArchitectureID, PrimaryVehicle.Components.IEPC);
-
                 rd.EngineData.FuelMode = 0;
                 rd.VehicleData.VehicleClass = _segment.VehicleClass;
-                rd.BusAuxiliaries =
-                    DataAdapterGeneric.CreateBusAuxiliariesData(mission, PrimaryVehicle, CompletedVehicle, rd);
                 var shiftStrategyName =
                     PowertrainBuilder.GetShiftStrategyName(PrimaryVehicle.Components.GearboxInputData.Type,
                         PrimaryVehicle.VehicleType);
@@ -710,6 +702,11 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun
                     DataAdapterGeneric.CreateGearshiftData((rd.AxleGearData?.AxleGear.Ratio ?? 1.0) *
                                                             (rd.AngledriveData?.Angledrive.Ratio ?? 1.0),
                         PrimaryVehicle.EngineIdleSpeed, gbx.Type, gbx.Gears.Count);
+				rd.Retarder =
+					DataAdapterGeneric.CreateGenericRetarderData(PrimaryVehicle.Components.RetarderInputData, rd);
+				rd.BusAuxiliaries =
+					DataAdapterGeneric.CreateBusAuxiliariesData(mission, PrimaryVehicle, CompletedVehicle, rd);
+
 				rd.HybridStrategyParameters = DataAdapterGeneric.CreateHybridStrategy(
 					rd.BatteryData,
 					rd.SuperCapData,
@@ -763,13 +760,9 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun
 					PrimaryVehicle.Components.AuxiliaryInputData,
 					PrimaryVehicle.Components.BusAuxiliaries, mission.MissionType, _segment.VehicleClass,
 					CompletedVehicle.Length, PrimaryVehicle.Components.AxleWheels.NumSteeredAxles, PrimaryVehicle.VehicleType);
-				rd.Retarder = DataAdapterGeneric.CreateRetarderData(PrimaryVehicle.Components.RetarderInputData, PrimaryVehicle.VehicleType == VectoSimulationJobType.IHPC ? ArchitectureID.P_IHPC : PrimaryVehicle.ArchitectureID, PrimaryVehicle.Components.IEPC);
 				rd.EngineData.FuelMode = 0;
 				rd.VehicleData.VehicleClass = _segment.VehicleClass;
-				rd.BusAuxiliaries =
-					DataAdapterSpecific.CreateBusAuxiliariesData(mission, PrimaryVehicle, CompletedVehicle,
-						rd);
-
+				
 				CreateGearboxAndGearshiftData(rd);
 				rd.HybridStrategyParameters = DataAdapterGeneric.CreateHybridStrategy(
 					rd.BatteryData,
@@ -785,7 +778,12 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun
 					rd.ElectricMachinesData,
 					PrimaryVehicle.ArchitectureID
 					);
-                SetOvcModeProperties(ovcMode, rd);
+				rd.Retarder = DataAdapterGeneric.CreateGenericRetarderData(PrimaryVehicle.Components.RetarderInputData, rd);
+				rd.BusAuxiliaries =
+					DataAdapterSpecific.CreateBusAuxiliariesData(mission, PrimaryVehicle, CompletedVehicle,
+						rd);
+
+				SetOvcModeProperties(ovcMode, rd);
 				if (ovcMode == OvcHevMode.ChargeSustaining) {
 					rd.IterativeRunStrategy = new HevChargeSustainingIterativeRunStrategy();
 				}
@@ -905,17 +903,18 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun
                     PrimaryVehicle.Components.BusAuxiliaries, mission.MissionType, _segment.VehicleClass,
                     CompletedVehicle.Length, PrimaryVehicle.Components.AxleWheels.NumSteeredAxles,
                     PrimaryVehicle.VehicleType);
-                result.Retarder = DataAdapterGeneric.CreateRetarderData(PrimaryVehicle.Components.RetarderInputData, PrimaryVehicle.ArchitectureID, PrimaryVehicle.Components.IEPC);
                 result.MaxChargingPower = PrimaryVehicle.MaxChargingPower;
 
                 //result.EngineData.FuelMode = 0;
                 result.VehicleData.VehicleClass = _segment.VehicleClass;
-                result.BusAuxiliaries =
-                    DataAdapterGeneric.CreateBusAuxiliariesData(mission, PrimaryVehicle, CompletedVehicle,
-                        result);
 
                 CreateGearboxAndGearshiftData(result);
-                return result;
+				result.Retarder = DataAdapterGeneric.CreateGenericRetarderData(PrimaryVehicle.Components.RetarderInputData, result);
+				result.BusAuxiliaries =
+					DataAdapterGeneric.CreateBusAuxiliariesData(mission, PrimaryVehicle, CompletedVehicle,
+						result);
+
+				return result;
             }
 
             protected override VectoRunData CreateVectoRunDataSpecific(Mission mission,
@@ -953,17 +952,18 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.CompletedBusRun
 					PrimaryVehicle.Components.BusAuxiliaries, mission.MissionType, _segment.VehicleClass,
 					CompletedVehicle.Length, PrimaryVehicle.Components.AxleWheels.NumSteeredAxles,
 					PrimaryVehicle.VehicleType);
-				result.Retarder = DataAdapterGeneric.CreateRetarderData(PrimaryVehicle.Components.RetarderInputData, PrimaryVehicle.ArchitectureID, PrimaryVehicle.Components.IEPC);
 				result.MaxChargingPower = PrimaryVehicle.MaxChargingPower;
                    
 				//result.EngineData.FuelMode = 0;
 				result.VehicleData.VehicleClass = _segment.VehicleClass;
+
+                CreateGearboxAndGearshiftData(result);
+				result.Retarder = DataAdapterGeneric.CreateGenericRetarderData(PrimaryVehicle.Components.RetarderInputData, result);
 				result.BusAuxiliaries =
                     DataAdapterSpecific.CreateBusAuxiliariesData(mission, PrimaryVehicle, CompletedVehicle,
 						result);
-
-                CreateGearboxAndGearshiftData(result);
-                return result;
+                
+				return result;
             }
 
 			
diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/PrimaryBusRunDataFactory/DeclarationModePrimaryBusRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/PrimaryBusRunDataFactory/DeclarationModePrimaryBusRunDataFactory.cs
index 8f3548c6d3c0d540053e8d5106e3467ba14e8ab7..4217ca2a11547806d9ef920d318b9d2778849fa2 100644
--- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/PrimaryBusRunDataFactory/DeclarationModePrimaryBusRunDataFactory.cs
+++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/PrimaryBusRunDataFactory/DeclarationModePrimaryBusRunDataFactory.cs
@@ -181,16 +181,18 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
 					Vehicle.Components.BusAuxiliaries, mission.MissionType, _segment.VehicleClass,
 					Vehicle.Length ?? mission.BusParameter.VehicleLength,
 					Vehicle.Components.AxleWheels.NumSteeredAxles, Vehicle.VehicleType);
-				simulationRunData.Retarder = DataAdapter.CreateRetarderData(Vehicle.Components.RetarderInputData, Vehicle.ArchitectureID, null);
 				simulationRunData.DriverData = DriverData;
 				
 
 				simulationRunData.EngineData.FuelMode = modeIdx.Value;
 				simulationRunData.VehicleData.VehicleClass = _segment.VehicleClass;
+				
+				CreateGearboxAndGearshiftData(simulationRunData);
+
+				simulationRunData.Retarder = DataAdapter.CreateGenericRetarderData(Vehicle.Components.RetarderInputData, simulationRunData);
 				simulationRunData.BusAuxiliaries = DataAdapter.CreateBusAuxiliariesData(
 					mission, InputDataProvider.JobInputData.Vehicle, simulationRunData);
 				
-				CreateGearboxAndGearshiftData(simulationRunData);
 				return simulationRunData;
 			}
 
@@ -301,7 +303,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
 					runData.AxleGearData = DataAdapter.CreateAxleGearData(Vehicle.Components.AxleGearInputData);
 				}
 
-				runData.Retarder = DataAdapter.CreateRetarderData(Vehicle.Components.RetarderInputData, Vehicle.ArchitectureID, Vehicle.Components.IEPC);
+				CreateGearboxAndGearshiftData(runData);
+				runData.Retarder = DataAdapter.CreateGenericRetarderData(Vehicle.Components.RetarderInputData, runData);
 
 				runData.Aux = DataAdapter.CreateAuxiliaryData(Vehicle.Components.AuxiliaryInputData, 
 					Vehicle.Components.BusAuxiliaries, mission.MissionType,
@@ -310,7 +313,6 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
 				runData.BusAuxiliaries = DataAdapter.CreateBusAuxiliariesData(
 					mission, InputDataProvider.JobInputData.Vehicle, runData);
 
-                CreateGearboxAndGearshiftData(runData);
 
 				runData.HybridStrategyParameters =
 					DataAdapter.CreateHybridStrategy(runData.BatteryData, runData.SuperCapData, runData.VehicleData.TotalVehicleMass, 
@@ -495,16 +497,16 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
 					Vehicle.Length ?? mission.BusParameter.VehicleLength,
 					Vehicle.Components.AxleWheels.NumSteeredAxles,
 					VectoSimulationJobType.ParallelHybridVehicle);//Hardcode to override IHPC
-				runData.Retarder = DataAdapter.CreateRetarderData(Vehicle.Components.RetarderInputData, Vehicle.VehicleType == VectoSimulationJobType.IHPC ? ArchitectureID.P_IHPC : Vehicle.ArchitectureID, null);
 				runData.DriverData = DriverData;
 
 
 				runData.EngineData.FuelMode = modeIdx.Value;
 				runData.VehicleData.VehicleClass = _segment.VehicleClass;
-				runData.BusAuxiliaries = DataAdapter.CreateBusAuxiliariesData(
-					mission, InputDataProvider.JobInputData.Vehicle, runData);
 
 				CreateGearboxAndGearshiftData(runData);
+				runData.Retarder = DataAdapter.CreateGenericRetarderData(Vehicle.Components.RetarderInputData, runData);
+				runData.BusAuxiliaries = DataAdapter.CreateBusAuxiliariesData(
+					mission, InputDataProvider.JobInputData.Vehicle, runData);
 
 				runData.ElectricMachinesData = DataAdapter.CreateElectricMachines(
 					Vehicle.Components.ElectricMachines, Vehicle.ElectricMotorTorqueLimits,
@@ -668,13 +670,13 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
 					Vehicle.Length ?? mission.BusParameter.VehicleLength,
 					Vehicle.Components.AxleWheels.NumSteeredAxles, Vehicle.VehicleType);
 				var emPos = result.ElectricMachinesData.First(x => x.Item1 != PowertrainPosition.GEN).Item1;
-				result.Retarder = DataAdapter.CreateRetarderData(Vehicle.Components.RetarderInputData, Vehicle.ArchitectureID, Vehicle.Components.IEPC);
 				result.DriverData = DriverData;
 
 				result.VehicleData.VehicleClass = _segment.VehicleClass;
+				CreateGearboxAndGearshiftData(result);
+				result.Retarder = DataAdapter.CreateGenericRetarderData(Vehicle.Components.RetarderInputData, result);
 				result.BusAuxiliaries = DataAdapter.CreateBusAuxiliariesData(
 					mission, InputDataProvider.JobInputData.Vehicle, result);
-				CreateGearboxAndGearshiftData(result);
 				
 				return result;
 			}
diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/SingleBus/DeclarationModeSingleBusVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/SingleBus/DeclarationModeSingleBusVectoRunDataFactory.cs
index d6d7a405521298a4a0abb37ee9dbd1e770284753..9838c0162ed9e3563fc8fbf3b2a98d2c5d2496d0 100644
--- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/SingleBus/DeclarationModeSingleBusVectoRunDataFactory.cs
+++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/SingleBus/DeclarationModeSingleBusVectoRunDataFactory.cs
@@ -167,13 +167,13 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus
 					PrimaryVehicle.Components.BusAuxiliaries, mission.MissionType,
 					_segment.VehicleClass, PrimaryVehicle.Length ?? mission.BusParameter.VehicleLength,
 					PrimaryVehicle.Components.AxleWheels.NumSteeredAxles, PrimaryVehicle.VehicleType);
-				runData.Retarder = DataAdapter.CreateRetarderData(PrimaryVehicle.Components.RetarderInputData, PrimaryVehicle.ArchitectureID, null);
 				
 				runData.EngineData.FuelMode = modeIdx.Value;
 				runData.VehicleData.VehicleClass = _segment.VehicleClass;
+				CreateGearboxAndGearshiftData(runData);
+				runData.Retarder = DataAdapter.CreateGenericRetarderData(PrimaryVehicle.Components.RetarderInputData, runData);
 				runData.BusAuxiliaries = DataAdapter.CreateBusAuxiliariesData(mission, PrimaryVehicle, CompletedVehicle, runData);
 				
-				CreateGearboxAndGearshiftData(runData);
                 return runData;
             }
 
@@ -307,7 +307,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus
                     runData.AxleGearData = DataAdapter.CreateAxleGearData(PrimaryVehicle.Components.AxleGearInputData);
                 }
 
-                runData.Retarder = DataAdapter.CreateRetarderData(PrimaryVehicle.Components.RetarderInputData, PrimaryVehicle.ArchitectureID, PrimaryVehicle.Components.IEPC);
+				CreateGearboxAndGearshiftData(runData);
+				runData.Retarder = DataAdapter.CreateGenericRetarderData(PrimaryVehicle.Components.RetarderInputData, runData);
 
                 runData.Aux = DataAdapter.CreateAuxiliaryData(PrimaryVehicle.Components.AuxiliaryInputData,
 					PrimaryVehicle.Components.BusAuxiliaries, mission.MissionType,
@@ -316,8 +317,6 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus
                 runData.BusAuxiliaries = DataAdapter.CreateBusAuxiliariesData(
                     mission, PrimaryVehicle, CompletedVehicle , runData);
 
-                CreateGearboxAndGearshiftData(runData);
-
                 runData.HybridStrategyParameters =
                     DataAdapter.CreateHybridStrategy(runData.BatteryData, runData.SuperCapData, runData.VehicleData.TotalVehicleMass,
                         ovcMode, loading.Key, runData.VehicleData.VehicleClass, mission.MissionType);
@@ -504,17 +503,16 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus
 					PrimaryVehicle.Components.BusAuxiliaries, mission.MissionType, _segment.VehicleClass,
 					PrimaryVehicle.Length ?? mission.BusParameter.VehicleLength,
 					PrimaryVehicle.Components.AxleWheels.NumSteeredAxles, PrimaryVehicle.VehicleType);
-				runData.Retarder = DataAdapter.CreateRetarderData(PrimaryVehicle.Components.RetarderInputData, PrimaryVehicle.VehicleType == VectoSimulationJobType.IHPC ? ArchitectureID.P_IHPC : PrimaryVehicle.ArchitectureID, null);
 				runData.DriverData = DriverData;
 
-
 				runData.EngineData.FuelMode = modeIdx.Value;
 				runData.VehicleData.VehicleClass = _segment.VehicleClass;
+				
+				CreateGearboxAndGearshiftData(runData);
+				runData.Retarder = DataAdapter.CreateGenericRetarderData(PrimaryVehicle.Components.RetarderInputData, runData);
 				runData.BusAuxiliaries = DataAdapter.CreateBusAuxiliariesData(
 					mission, PrimaryVehicle, CompletedVehicle, runData);
 
-				CreateGearboxAndGearshiftData(runData);
-
 				runData.ElectricMachinesData = DataAdapter.CreateElectricMachines(
 					PrimaryVehicle.Components.ElectricMachines, PrimaryVehicle.ElectricMotorTorqueLimits,
 					runData.BatteryData.CalculateAverageVoltage(), runData.GearboxData.GearList);
@@ -675,13 +673,13 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus
                     vehicle.Components.BusAuxiliaries, mission.MissionType, _segment.VehicleClass,
                     vehicle.Length ?? mission.BusParameter.VehicleLength,
                     vehicle.Components.AxleWheels.NumSteeredAxles, vehicle.VehicleType);
-                result.Retarder = DataAdapter.CreateRetarderData(vehicle.Components.RetarderInputData, PrimaryVehicle.ArchitectureID, PrimaryVehicle.Components.IEPC);
                 result.DriverData = DriverData;
 
                 result.VehicleData.VehicleClass = _segment.VehicleClass;
+                CreateGearboxAndGearshiftData(result);
+                result.Retarder = DataAdapter.CreateGenericRetarderData(vehicle.Components.RetarderInputData, result);
                 result.BusAuxiliaries = DataAdapter.CreateBusAuxiliariesData(
                     mission, SingleBusDataProvider.PrimaryVehicle, SingleBusDataProvider.CompletedVehicle, result);
-                CreateGearboxAndGearshiftData(result);
 
                 return result;
             }
diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationVTPModeVectoRunDataFactoryHeavyBusPrimary.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationVTPModeVectoRunDataFactoryHeavyBusPrimary.cs
index 0d19c194e8551b01611fdf79bf2817b5a4003a47..27efa9f8f043a65ad329a7ae7ea0b5b98cab6fd5 100644
--- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationVTPModeVectoRunDataFactoryHeavyBusPrimary.cs
+++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationVTPModeVectoRunDataFactoryHeavyBusPrimary.cs
@@ -74,11 +74,16 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
                 : DataAdapter.CreateAxleGearData(vehicle.Components.AxleGearInputData);
             AngledriveData = DataAdapter.CreateAngledriveData(vehicle.Components.AngledriveInputData);
 
-            GearboxData = DataAdapter.CreateGearboxData(
-                vehicle, new VectoRunData() { EngineData = EngineData, AxleGearData = AxlegearData, 
-                    VehicleData = tempVehicle, Cycle = VTPCycle },
-                null);
-            RetarderData = DataAdapter.CreateRetarderData(vehicle.Components.RetarderInputData, vehicle.ArchitectureID, vehicle.Components.IEPC);
+			var vectoRun = new VectoRunData()
+			{
+				EngineData = EngineData,
+				AxleGearData = AxlegearData,
+				VehicleData = tempVehicle,
+				Cycle = VTPCycle
+			};
+			
+			GearboxData = DataAdapter.CreateGearboxData(vehicle, vectoRun, null);
+			RetarderData = DataAdapter.CreateGenericRetarderData(vehicle.Components.RetarderInputData, vectoRun);
 
             //PTOTransmissionData =
             //    DataAdapter.CreatePTOTransmissionData(vehicle.Components.PTOTransmissionInputData);
diff --git a/VectoCore/VectoCore/Models/GenericModelData/GenericBusRetarderData.cs b/VectoCore/VectoCore/Models/GenericModelData/GenericBusRetarderData.cs
index 0bb3eec5ccb763c38b0d6378c9d4d1f5581c3f99..64506fd5d53fe9ebb77a8bcba0ff675b673c738e 100644
--- a/VectoCore/VectoCore/Models/GenericModelData/GenericBusRetarderData.cs
+++ b/VectoCore/VectoCore/Models/GenericModelData/GenericBusRetarderData.cs
@@ -1,4 +1,5 @@
 using System;
+using System.Collections.Generic;
 using System.Data;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
@@ -11,24 +12,27 @@ namespace TUGraz.VectoCore.Models.Declaration
 {
 	public class GenericBusRetarderData
 	{
+		public RetarderData CreateGenericBusRetarderData(IRetarderInputData retarderInput, PerSecond engineSpeed, double gearboxRatio) =>
+			new RetarderData {
+				Type = retarderInput?.Type ?? RetarderType.None,
+				Ratio = retarderInput?.Type.IsDedicatedComponent() ?? false ? retarderInput.Ratio : 1.0,
+				LossMap = retarderInput?.Type.IsDedicatedComponent() ?? false 
+					? GenerateGenericLossMap(retarderInput, engineSpeed.AsRPM, gearboxRatio) : null
+			};
 
 		public RetarderData CreateGenericBusRetarderData(IRetarderInputData retarderInput) =>
 			new RetarderData {
 				Type = retarderInput?.Type ?? RetarderType.None,
 				Ratio = retarderInput?.Type.IsDedicatedComponent() ?? false ? retarderInput.Ratio : 1.0,
 				LossMap = retarderInput?.Type.IsDedicatedComponent() ?? false 
-					? GenerateGenericLossMap(retarderInput.Ratio) : null
+					? GenerateGenericLossMap(retarderInput) : null
 			};
 
-		private RetarderLossMap GenerateGenericLossMap(double stepUpRatio)
+		private RetarderLossMap GenerateGenericLossMap(IRetarderInputData retarderData, double engineSpeed = 0, double gearboxRatio = 0)
 		{
-			var retarderSpeeds = new double[] {
-					0, 200 , 400, 600, 900, 1200,
-					1600, 2000, 2500, 3000, 3500, 4000,
-					4500, 5000
-				};
+			var retarderSpeeds = GenerateRetarderSpeeds(retarderData, engineSpeed, gearboxRatio);
 
-			var genericRetarderLosses = GetHydrodynamicRetardersLoss(retarderSpeeds, stepUpRatio);
+			var genericRetarderLosses = GetHydrodynamicRetardersLoss(retarderSpeeds, retarderData.Ratio);
 			//var genericRetarderLosses = GetMagneticRetarderLoss(retarderSpeeds, stepUpRatio);
 
 			var torqueLoss = new DataTable();
@@ -47,6 +51,39 @@ namespace TUGraz.VectoCore.Models.Declaration
 			return RetarderLossMapReader.Create(torqueLoss);
 		}
 
+		private double[] GenerateRetarderSpeeds(IRetarderInputData retarderData, double engineSpeedRPM, double gearboxRatio)
+		{
+			var SMALL_STEP = 200;
+			var LARGE_STEP = 500;
+			var LARGE_STEP_THRESHOLD = 1000;
+
+			var defaultEngineSpeed = 5000;
+			var maxRetarderSpeed = retarderData.Ratio * defaultEngineSpeed;
+			if (engineSpeedRPM != 0 && gearboxRatio != 0)
+			{
+				maxRetarderSpeed = retarderData.Ratio * engineSpeedRPM;
+
+				if (retarderData.Type == RetarderType.TransmissionOutputRetarder)
+				{
+					maxRetarderSpeed = retarderData.Ratio * (engineSpeedRPM / gearboxRatio);
+				}
+			}
+
+			var step = SMALL_STEP;
+			var retarderSpeeds = new List<double>();
+			for (int i = 0; i < maxRetarderSpeed + step; i += step)
+			{
+				retarderSpeeds.Add(i);
+				var currentMaxSpeed = retarderSpeeds.MaxBy(v => v);
+				if (currentMaxSpeed >= LARGE_STEP_THRESHOLD)
+				{
+					step = LARGE_STEP;
+				}
+			}
+
+			return retarderSpeeds.ToArray();
+		}
+
 		private double[] GetHydrodynamicRetardersLoss(double[] retarderSpeeds, double stepUpRatio)
 		{
 			var losses = new double[retarderSpeeds.Length];
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/Engine/EngineFullLoadCurve.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/Engine/EngineFullLoadCurve.cs
index c1752c795dbf43a8a7e24ec4da242c1e8e86356e..ab50ed030df4b5664c7dfec8d57304e3751468cf 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Data/Engine/EngineFullLoadCurve.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/Engine/EngineFullLoadCurve.cs
@@ -271,6 +271,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data.Engine
 			}
 		}
 
+		public PerSecond MaxSpeed => FullLoadEntries.MaxBy(e => e.EngineSpeed).EngineSpeed;
+
 		public PerSecond NTq99hSpeed => _nTq99hSpeed ?? (_nTq99hSpeed = FindEnginSpeedForTorque(0.99 * MaxTorque).Last());
 
 		public PerSecond NTq99lSpeed => _nTq99lSpeed ?? (_nTq99lSpeed = FindEnginSpeedForTorque(0.99 * MaxTorque).First());