diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/IDeclarationDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/IDeclarationDataAdapter.cs
index 0406a991972bc8f80644814eed5a59577b2e0c7a..28070312008e0653ff5934d51f573564cd670e1b 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/IDeclarationDataAdapter.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/IDeclarationDataAdapter.cs
@@ -128,6 +128,11 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 		void CreateREESSData(IElectricStorageSystemDeclarationInputData componentsElectricStorage,
 			VectoSimulationJobType jobType, bool ovc, Action<BatterySystemData> setBatteryData,
 			Action<SuperCapData> setSuperCapData);
+
+		HybridStrategyParameters CreateHybridStrategy(BatterySystemData runDataBatteryData,
+			SuperCapData runDataSuperCapData, Kilogram vehicleMass, VectoRunData.OvcHevMode ovcMode,
+			LoadingType loading, VehicleClass vehicleClass, MissionType missionType, TableData boostingLimitations,
+			GearboxData gearboxData, CombustionEngineData engineData, ArchitectureID architectureId);
 	}
 
 	public interface IGenericCompletedBusDeclarationDataAdapter : IDeclarationDataAdapter
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/PrimaryBus/DeclarationDataAdapterPrimaryBus.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/PrimaryBus/DeclarationDataAdapterPrimaryBus.cs
index 896e4c56e36d7d449a96ec93c17317b4df9e95bb..9a58d4cdacdc321974846de4bd9120189c3db08d 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/PrimaryBus/DeclarationDataAdapterPrimaryBus.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/PrimaryBus/DeclarationDataAdapterPrimaryBus.cs
@@ -7,6 +7,7 @@ using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponents;
 using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponents.Interfaces;
+using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponents.StrategyDataAdapter;
 using TUGraz.VectoCore.Models.Declaration;
 using TUGraz.VectoCore.Models.Simulation.Data;
 using TUGraz.VectoCore.Models.SimulationComponent;
@@ -38,6 +39,8 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.PrimaryBus
 
 			protected virtual IElectricMachinesDataAdapter ElectricMachinesDataAdapter => throw new NotImplementedException();
 
+			protected abstract IHybridStrategyDataAdapter HybridStrategyDataAdapter { get; }
+
 			public DriverData CreateDriverData(Segment segment)
 			{
 				return _driverDataAdapter.CreateDriverData(segment);
@@ -58,6 +61,20 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.PrimaryBus
 			public abstract void CreateREESSData(IElectricStorageSystemDeclarationInputData componentsElectricStorage,
 				VectoSimulationJobType jobType, bool ovc, Action<BatterySystemData> setBatteryData, Action<SuperCapData> setSuperCapData);
 
+			public virtual HybridStrategyParameters CreateHybridStrategy(BatterySystemData runDataBatteryData, SuperCapData runDataSuperCapData,
+				Kilogram vehicleMass, VectoRunData.OvcHevMode ovcMode, LoadingType loading, VehicleClass vehicleClass, MissionType missionType,
+				TableData boostingLimitations, GearboxData gearboxData, CombustionEngineData engineData,
+				ArchitectureID architectureId)
+			{
+				return HybridStrategyDataAdapter.CreateHybridStrategyParameters(
+					batterySystemData: runDataBatteryData,
+					superCap: runDataSuperCapData,
+					ovcMode: ovcMode,
+					loading: loading,
+					vehicleClass: vehicleClass,
+					missionType: missionType, architectureId, engineData, gearboxData, boostingLimitations);
+			}
+
 			public AxleGearData CreateAxleGearData(IAxleGearInputData axlegearData)
 			{
 				return _axleGearDataAdapter.CreateAxleGearData(axlegearData);
@@ -141,6 +158,9 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.PrimaryBus
 
 			protected override IGearboxDataAdapter GearboxDataAdapter { get; } = new GearboxDataAdapter(new TorqueConverterDataAdapter());
 
+			protected override IHybridStrategyDataAdapter HybridStrategyDataAdapter =>
+				throw new NotImplementedException();
+
 			protected override IPrimaryBusAuxiliaryDataAdapter AuxDataAdapter { get; } = new PrimaryBusAuxiliaryDataAdapter();
 			public override void CreateREESSData(IElectricStorageSystemDeclarationInputData componentsElectricStorage,
 				VectoSimulationJobType jobType, bool ovc, Action<BatterySystemData> setBatteryData, Action<SuperCapData> setSuperCapData)
@@ -197,6 +217,8 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.PrimaryBus
 		{
 			protected override IGearboxDataAdapter GearboxDataAdapter => throw new NotImplementedException();
 
+			protected override IHybridStrategyDataAdapter HybridStrategyDataAdapter { get; } = new
+				SerialHybridStrategyParameterDataAdapter();
 		}
 
 		public class HEV_S2 : SerialHybrid
@@ -227,9 +249,11 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.PrimaryBus
 
 			protected override IGearboxDataAdapter GearboxDataAdapter { get; } = new GearboxDataAdapter(new TorqueConverterDataAdapter());
 
+			protected override IHybridStrategyDataAdapter HybridStrategyDataAdapter { get; } = new
+				ParallelHybridStrategyParameterDataAdapter();
 			#endregion
 
-			
+
 		}
 
 		public class HEV_P1 : ParallelHybrid
@@ -273,6 +297,8 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.PrimaryBus
 
 			protected override IPrimaryBusAuxiliaryDataAdapter AuxDataAdapter => _auxDataAdapter;
 
+			protected override IHybridStrategyDataAdapter HybridStrategyDataAdapter => throw new NotImplementedException();
+
 			#endregion
 
 
@@ -343,6 +369,8 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.PrimaryBus
 
 			protected override IGearboxDataAdapter GearboxDataAdapter => throw new NotImplementedException();
 
+			protected override IHybridStrategyDataAdapter HybridStrategyDataAdapter => throw new NotImplementedException();
+
 			#endregion
 		}
     }
diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory_Hybrid.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory_Hybrid.cs
index 6c0d528f7a9672a5be89b59581ba29244a6a8bca..f29e523c13a772a884ca84d0961abb099dfe0e15 100644
--- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory_Hybrid.cs
+++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/HeavyLorryRunDataFactory/DeclarationModeHeavyLorryRunDataFactory_Hybrid.cs
@@ -202,6 +202,9 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
 				CheckMaxChargingPowerPresent(vehicle);
 				var engine = InputDataProvider.JobInputData.Vehicle.Components.EngineInputData;
 				var engineModes = engine.EngineModes;
+				if (!modeIdx.HasValue) {
+					throw new VectoException("Engine mode has to be specified for parallel hybrid vehicle");
+				}
 				var engineMode = engineModes[modeIdx.Value];
 				var runData = CreateCommonRunData(vehicle, mission, loading, _segment, engineModes, modeIdx.Value);
 
@@ -211,15 +214,11 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
 					DataAdapter.CreateAirdragData(vehicle.Components.AirdragInputData, mission, _segment);
 				runData.VehicleData = DataAdapter.CreateVehicleData(vehicle, _segment, mission, loading, _allowVocational);
 
-
 				runData.EngineData = DataAdapter.CreateEngineData(vehicle, engineMode, mission);
 				DataAdapter.CreateREESSData(vehicle.Components.ElectricStorage, vehicle.VehicleType, vehicle.OvcHev,
 					((batteryData) => runData.BatteryData = batteryData),
 					((sCdata => runData.SuperCapData = sCdata)));
-			
 
-
-				
 				if (vehicle.Components.AxleGearInputData != null)
 				{
 					runData.AxleGearData = DataAdapter.CreateAxleGearData(vehicle.Components.AxleGearInputData);
@@ -244,8 +243,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
 						runData.VehicleData.VehicleClass,
 						mission.MissionType, vehicle.BoostingLimitations, runData.GearboxData, runData.EngineData, vehicle.ArchitectureID);
 
-				if (ovcMode != VectoRunData.OvcHevMode.NotApplicable)
-				{
+				if (ovcMode != VectoRunData.OvcHevMode.NotApplicable) {
 					if (runData.BatteryData?.InitialSoC != null) {
 						runData.BatteryData.InitialSoC = runData.HybridStrategyParameters.InitialSoc;
 					}
@@ -255,8 +253,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDa
 					}
 				}
 
-				if (ovcMode == VectoRunData.OvcHevMode.ChargeDepleting)
-				{
+				if (ovcMode == VectoRunData.OvcHevMode.ChargeDepleting) {
 					runData.BatteryData.Batteries.ForEach(b => b.Item2.ChargeSustainingBattery = true);
 				}
 
diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/PrimaryBusRunDataFactory/DeclarationModePrimaryBusRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/PrimaryBusRunDataFactory/DeclarationModePrimaryBusRunDataFactory.cs
index 5aee15fbd56a023f2830a8585a81325e06bc1ad8..9cde4254d4a15b13d1a0f63966f60a9df698d5f7 100644
--- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/PrimaryBusRunDataFactory/DeclarationModePrimaryBusRunDataFactory.cs
+++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/PrimaryBusRunDataFactory/DeclarationModePrimaryBusRunDataFactory.cs
@@ -9,6 +9,7 @@ using TUGraz.VectoCore.InputData.Reader.ComponentData;
 using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter;
 using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponents;
 using TUGraz.VectoCore.Models.Declaration;
+using TUGraz.VectoCore.Models.Declaration.IterativeRunStrategies;
 using TUGraz.VectoCore.Models.Simulation.Data;
 using TUGraz.VectoCore.Models.Simulation.Impl;
 using TUGraz.VectoCore.Models.SimulationComponent.Data;
@@ -180,6 +181,9 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
 			{
 				var engine = vehicle.Components.EngineInputData;
 				var engineModes = engine.EngineModes;
+				if (!modeIdx.HasValue) {
+					throw new VectoException("Engine mode has to be specified for conventional vehicle");
+				}
 				var engineMode = engineModes[modeIdx.Value];
 
 				var simulationRunData = CreateCommonRunData(vehicle, mission, loading, _segment, engineModes, modeIdx.Value);
@@ -363,7 +367,75 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.PrimaryBusRunDa
 				KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading,
 				int? modeIdx = null, VectoRunData.OvcHevMode ovcMode = VectoRunData.OvcHevMode.NotApplicable)
 			{
-				throw new NotImplementedException();
+				var engine = vehicle.Components.EngineInputData;
+				var engineModes = engine.EngineModes;
+				if (!modeIdx.HasValue) {
+					throw new VectoException("Engine mode has to be specified for parallel hybrid vehicle");
+				}
+				var engineMode = engineModes[modeIdx.Value];
+
+				var runData = CreateCommonRunData(vehicle, mission, loading, _segment, engineModes, modeIdx.Value);
+
+				runData.VehicleData = DataAdapter.CreateVehicleData(vehicle, _segment, mission, loading, _allowVocational);
+				runData.AirdragData = DataAdapter.CreateAirdragData(null, mission, new Segment());
+				runData.EngineData = DataAdapter.CreateEngineData(InputDataProvider.JobInputData.Vehicle, engineMode, mission);
+				DataAdapter.CreateREESSData(vehicle.Components.ElectricStorage, vehicle.VehicleType, vehicle.OvcHev,
+					((batteryData) => runData.BatteryData = batteryData),
+					((sCdata => runData.SuperCapData = sCdata)));
+				runData.ElectricMachinesData = new List<Tuple<PowertrainPosition, ElectricMotorData>>();
+				runData.AxleGearData = DataAdapter.CreateAxleGearData(vehicle.Components.AxleGearInputData);
+				runData.AngledriveData = DataAdapter.CreateAngledriveData(vehicle.Components.AngledriveInputData);
+				runData.Aux = DataAdapter.CreateAuxiliaryData(
+					vehicle.Components.AuxiliaryInputData,
+					vehicle.Components.BusAuxiliaries, mission.MissionType, _segment.VehicleClass,
+					vehicle.Length ?? mission.BusParameter.VehicleLength,
+					vehicle.Components.AxleWheels.NumSteeredAxles, vehicle.VehicleType);
+				runData.Retarder = DataAdapter.CreateRetarderData(vehicle.Components.RetarderInputData);
+				runData.DriverData = DriverData;
+
+
+				runData.EngineData.FuelMode = modeIdx.Value;
+				runData.VehicleData.VehicleClass = _segment.VehicleClass;
+				runData.BusAuxiliaries = DataAdapter.CreateBusAuxiliariesData(
+					mission, InputDataProvider.JobInputData.Vehicle, runData);
+
+				CreateGearboxAndGearshiftData(vehicle, runData);
+
+				runData.ElectricMachinesData = DataAdapter.CreateElectricMachines(
+					vehicle.Components.ElectricMachines, vehicle.ElectricMotorTorqueLimits,
+					runData.BatteryData.CalculateAverageVoltage(), runData.GearboxData.GearList);
+
+				runData.HybridStrategyParameters =
+					DataAdapter.CreateHybridStrategy(runData.BatteryData,
+						runData.SuperCapData,
+						runData.VehicleData.TotalVehicleMass,
+						ovcMode, loading.Key,
+						//runData.VehicleData.VehicleClass,
+						mission.BusParameter.BusGroup,
+						mission.MissionType, vehicle.BoostingLimitations, runData.GearboxData, runData.EngineData, vehicle.ArchitectureID);
+
+				if (ovcMode != VectoRunData.OvcHevMode.NotApplicable) {
+					if (runData.BatteryData?.InitialSoC != null) {
+						runData.BatteryData.InitialSoC = runData.HybridStrategyParameters.InitialSoc;
+					}
+
+					if (runData.SuperCapData?.InitialSoC != null) {
+						runData.SuperCapData.InitialSoC = runData.HybridStrategyParameters.InitialSoc;
+					}
+				}
+
+				if (ovcMode == VectoRunData.OvcHevMode.ChargeDepleting) {
+					runData.BatteryData.Batteries.ForEach(b => b.Item2.ChargeSustainingBattery = true);
+				}
+
+				if (ovcMode == VectoRunData.OvcHevMode.ChargeSustaining) {
+					runData.IterativeRunStrategy = new OVCHevIterativeRunStrategy();
+				}
+				if (ovcMode != VectoRunData.OvcHevMode.NotApplicable && runData.InputData.JobInputData.Vehicle.OvcHev) {
+					runData.ModFileSuffix += ovcMode == VectoRunData.OvcHevMode.ChargeSustaining ? "CS" : "CD";
+				}
+				runData.OVCMode = ovcMode;
+				return runData;
 			}
 
 			protected override void CreateGearboxAndGearshiftData(IVehicleDeclarationInputData vehicle, VectoRunData runData)
diff --git a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs
index 857bafb127da79384f7526c3cfca7d613593c28f..4244d03f759bcdff277af12032d7538c2e33cab1 100644
--- a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs
+++ b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs
@@ -101,7 +101,7 @@ namespace TUGraz.VectoCore.Models.Declaration
 
 		public static readonly PTOTransmission PTOTransmission = new PTOTransmission();
 
-		public static readonly HEVStrategyParameters HEVStrategyParameters = new HEVStrategyParametersLorry();
+		public static readonly HEVStrategyParameters HEVStrategyParameters = new HEVStrategyParameters();
 		//public static readonly HEVStrategyParameters InitEquivalenceFactorsBus = new HEVStrategyParametersBus();
 
 		public static readonly VehicleOperationLookup VehicleOperation = new VehicleOperationLookup();
diff --git a/VectoCore/VectoCore/Models/Declaration/InitEquivalenceFactors.cs b/VectoCore/VectoCore/Models/Declaration/InitEquivalenceFactors.cs
index 1da0ffdfd1e3f22f616aad055fc48940230187c7..53bdbf49249237ba4b3ec5b07c0f3442064f89d5 100644
--- a/VectoCore/VectoCore/Models/Declaration/InitEquivalenceFactors.cs
+++ b/VectoCore/VectoCore/Models/Declaration/InitEquivalenceFactors.cs
@@ -8,26 +8,51 @@ using TUGraz.VectoCore.Utils;
 
 namespace TUGraz.VectoCore.Models.Declaration
 {
-	public class HEVStrategyParametersLorry : HEVStrategyParameters
+
+	public class HEVStrategyParameters
 	{
+		public double PHEVChargeDepletingEquivalenceFactor => 0.01;
+
+        protected AbstractHEVStrategyParameters Lorry = new HEVStrategyParametersLorry();
+		protected AbstractHEVStrategyParameters Bus = new HEVStrategyParametersBus();
+
+        public virtual double LookupEquivalenceFactor(MissionType mission, VehicleClass hdvClass,
+			LoadingType loading,
+			double socRange)
+		{
+			return hdvClass.IsHeavyLorry() || hdvClass.IsMediumLorry()
+				? Lorry.LookupEquivalenceFactor(mission, hdvClass, loading, socRange)
+				: Bus.LookupEquivalenceFactor(mission, hdvClass, loading, socRange);
+		}
+
+		public virtual double LookupSlope(MissionType mission, VehicleClass hdvClass, LoadingType loading)
+		{
+			return hdvClass.IsHeavyLorry() || hdvClass.IsMediumLorry()
+				? Lorry.LookupSlope(mission, hdvClass, loading)
+				: Bus.LookupSlope(mission, hdvClass, loading);
+		}
+    }
+
+
+    public class HEVStrategyParametersLorry : AbstractHEVStrategyParameters
+    {
 		public HEVStrategyParametersLorry() : base("Lorry") { }
 	}
 
-	public class HEVStrategyParametersBus : HEVStrategyParameters
-	{
+	public class HEVStrategyParametersBus : AbstractHEVStrategyParameters
+    {
 		public HEVStrategyParametersBus() : base("Bus") { }
 	}
 
-	public abstract class HEVStrategyParameters
+	public abstract class AbstractHEVStrategyParameters
 	{
 		private Dictionary<int, InitEquivalenceFactors> _initEquivalenceFactors =
 			new Dictionary<int, InitEquivalenceFactors>(3);
 
 		private readonly IList<int> _socRanges = new List<int>{ 10, 20, 40 };
-		public double PHEVChargeDepletingEquivalenceFactor => 0.01;
         private readonly Slope _slope;
 
-        protected HEVStrategyParameters(string vehicle)
+        protected AbstractHEVStrategyParameters(string vehicle)
 		{
 			foreach(var range in _socRanges)
 			{
@@ -47,7 +72,7 @@ namespace TUGraz.VectoCore.Models.Declaration
         /// <param name="loading"></param>
         /// <param name="socRange">If the SOC range of the vehicle to be simulated differs from the given SOC ranges, use the values from the given SCOC ranges that are closest to the SOC range of the vehicle </param>
         /// <returns></returns>
-		public double LookupEquivalenceFactor(MissionType mission, VehicleClass hdvClass, LoadingType loading,
+		public virtual double LookupEquivalenceFactor(MissionType mission, VehicleClass hdvClass, LoadingType loading,
 			double socRange)
 		{
 			if (socRange > 1 || socRange < 0) {
@@ -67,7 +92,7 @@ namespace TUGraz.VectoCore.Models.Declaration
 				_initEquivalenceFactors[b].LookupEquivalenceFactor(mission, hdvClass, loading), socRange);
 		}
 
-		public double LookupSlope(MissionType mission, VehicleClass hdvClass, LoadingType loading)
+		public virtual double LookupSlope(MissionType mission, VehicleClass hdvClass, LoadingType loading)
 		{
 			return _slope.Lookup( hdvClass.GetClassNumber(), mission.GetNonEMSMissionType().GetName().ToLowerInvariant(),
                 loading);
@@ -112,33 +137,39 @@ namespace TUGraz.VectoCore.Models.Declaration
 
             protected override void ParseData(DataTable table)
             {
-                var vehicleClasses = table.Rows.Cast<DataRow>().Select(row => row.Field<string>("vehiclegroup"));
-
-				var cycleEntries = table.Rows.Cast<DataRow>().Select(row => new CycleEntry
-                {
-                    VehicleGroup = row.Field<string>("vehiclegroup").RemoveWhitespace(),
-                    LongHaul = SplitStringToDoubleTuple(row.Field<string>("longhaul")),
-                    RegionalDelivery = SplitStringToDoubleTuple(row.Field<string>("regionaldelivery")),
-                    UrbanDelivery = SplitStringToDoubleTuple(row.Field<string>("urbandelivery")),
-                    MunicipalUtility = SplitStringToDoubleTuple(row.Field<string>("municipalutility")),
-                    Construction = SplitStringToDoubleTuple(row.Field<string>("construction"))
-                });
-
-				foreach (var cycleEntry in cycleEntries)
-                {
-                    foreach (string vehClass in cycleEntry.VehicleGroup.Split('/'))
-                    {
+                //var vehicleClasses = table.Rows.Cast<DataRow>().Select(row => row.Field<string>("vehiclegroup"));
+
+				var cycles = EnumHelper.GetValues<MissionType>().Where(x => table.Columns.Contains(x.ToString())).ToArray();
+
+				//var cycleEntries = table.Rows.Cast<DataRow>().Select(row => new CycleEntry
+    //            {
+    //                VehicleGroup = row.Field<string>("vehiclegroup").RemoveWhitespace(),
+    //                LongHaul = SplitStringToDoubleTuple(row.Field<string>("longhaul")),
+    //                RegionalDelivery = SplitStringToDoubleTuple(row.Field<string>("regionaldelivery")),
+    //                UrbanDelivery = SplitStringToDoubleTuple(row.Field<string>("urbandelivery")),
+    //                MunicipalUtility = SplitStringToDoubleTuple(row.Field<string>("municipalutility")),
+    //                Construction = SplitStringToDoubleTuple(row.Field<string>("construction"))
+    //            });
+
+				//foreach (var cycleEntry in cycleEntries) {
+				foreach (DataRow row in table.Rows) {
+					var vehicleGroups = row.Field<string>("vehiclegroup");
+					foreach (string vehClass in vehicleGroups.Split('/')) {
                         var newEntry = new Entry
                         {
                             VehicleGroup = vehClass,
                             cycleDict = new Dictionary<MissionType, Tuple<double, double>>()
                         };
 
-                        newEntry.cycleDict.Add(MissionType.LongHaul, cycleEntry.LongHaul);
-                        newEntry.cycleDict.Add(MissionType.RegionalDelivery, cycleEntry.RegionalDelivery);
-                        newEntry.cycleDict.Add(MissionType.UrbanDelivery, cycleEntry.UrbanDelivery);
-                        newEntry.cycleDict.Add(MissionType.MunicipalUtility, cycleEntry.MunicipalUtility);
-                        newEntry.cycleDict.Add(MissionType.Construction, cycleEntry.Construction);
+						foreach (var cycle in cycles) {
+							newEntry.cycleDict.Add(cycle,SplitStringToDoubleTuple(row.Field<string>(cycle.ToString())));
+						}
+
+                        //newEntry.cycleDict.Add(MissionType.LongHaul, cycleEntry.LongHaul);
+                        //newEntry.cycleDict.Add(MissionType.RegionalDelivery, cycleEntry.RegionalDelivery);
+                        //newEntry.cycleDict.Add(MissionType.UrbanDelivery, cycleEntry.UrbanDelivery);
+                        //newEntry.cycleDict.Add(MissionType.MunicipalUtility, cycleEntry.MunicipalUtility);
+                        //newEntry.cycleDict.Add(MissionType.Construction, cycleEntry.Construction);
 
                         Data.Add(newEntry.VehicleGroup, newEntry);
                     }
diff --git a/VectoCore/VectoCore/Models/Declaration/IterativeRunStrategies/OVCHevIterativeRunStrategy.cs b/VectoCore/VectoCore/Models/Declaration/IterativeRunStrategies/OVCHevIterativeRunStrategy.cs
index 424141934c70b6dce5b9140ad10c9819d0eeb7ed..93d6591338c856338b05ea8f7c44f257fda60467 100644
--- a/VectoCore/VectoCore/Models/Declaration/IterativeRunStrategies/OVCHevIterativeRunStrategy.cs
+++ b/VectoCore/VectoCore/Models/Declaration/IterativeRunStrategies/OVCHevIterativeRunStrategy.cs
@@ -55,7 +55,7 @@ namespace TUGraz.VectoCore.Models.Declaration.IterativeRunStrategies
 				case 0:
 					///1. iteration
 					var k_0_4 = DeclarationData.HEVStrategyParameters.LookupSlope(runData.Mission.MissionType,
-						runData.VehicleData.VehicleClass, runData.Loading);
+						runData.Mission.BusParameter?.BusGroup ?? runData.VehicleData.VehicleClass, runData.Loading);
 					var soc_usable = runData.HybridStrategyParameters.MaxSoC - runData.HybridStrategyParameters.MinSoC;
 
 					var k = k_0_4 + 0.2 * (soc_usable - 0.4); //soc usable < 0.4?
diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
index 97ac494eca7d6fbc959f3393680b1c481564b9fa..040afcf0e8b22e086d19b92a9c4685fd8e6c4640 100644
--- a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
@@ -478,13 +478,13 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 		///         └(Aux)
 		/// </code>
 		/// </summary>
-		private static IVehicleContainer BuildFullPowertrainParallelHybrid(VectoRunData data, IModalDataContainer modData, ISumData _sumWriter)
+		private static IVehicleContainer BuildFullPowertrainParallelHybrid(VectoRunData data, IModalDataContainer modData, ISumData sumWriter)
 		{
 			if (data.SavedInDeclarationMode) {
 				throw new NotImplementedException();
 			}
-			if (_sumWriter == null)
-				throw new ArgumentNullException(nameof(_sumWriter));
+			//if (sumWriter == null)
+			//	throw new ArgumentNullException(nameof(sumWriter));
 			if (data.Cycle.CycleType != CycleType.DistanceBased) {
 				throw new VectoException("CycleType must be DistanceBased");
 			}
@@ -498,7 +498,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 				throw new VectoException("P0 Hybrids are modeled as SmartAlternator in the BusAuxiliary model.");
 			}
 
-			var container = new VehicleContainer(data.ExecutionMode, modData, _sumWriter) { RunData = data };
+			var container = new VehicleContainer(data.ExecutionMode, modData, sumWriter) { RunData = data };
 			var es = ConnectREESS(data, container);
 			var aux = new HighVoltageElectricAuxiliary(container);
 			aux.AddConstant("P_aux_el", data.ElectricAuxDemand ?? 0.SI<Watt>());
diff --git a/VectoCore/VectoCoreTest/Integration/Declaration/PrimaryBus/PrimaryBusSimulation.cs b/VectoCore/VectoCoreTest/Integration/Declaration/PrimaryBus/PrimaryBusSimulation.cs
index b484cbe0c3b9b1d467a3ff68ade775ae6346fa38..e5737b70265e25f0142866e86f04a9c164e7536c 100644
--- a/VectoCore/VectoCoreTest/Integration/Declaration/PrimaryBus/PrimaryBusSimulation.cs
+++ b/VectoCore/VectoCoreTest/Integration/Declaration/PrimaryBus/PrimaryBusSimulation.cs
@@ -42,6 +42,8 @@ public class PrimaryBusSimulation
 
 	TestCase(@"PrimaryBus/exempted/exempted_primary_heavyBus.xml", 0, TestName = "2nd Amendment PrimaryBus Exempted"),
 
+	TestCase(@"PrimaryBus/exempted/exempted_primary_heavyBus.xml", 0, TestName = "2nd Amendment PrimaryBus Exempted"),
+
 	]
 	public void PrimaryBusSimulationTest(string jobFile, int runIdx)
 	{