diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterNinjectModule.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterNinjectModule.cs
index 5d66b6ccbc859960ff066628fae0ea2ae79a3cd3..a06008c9d5a4799a227385a4cb568cad10100621 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterNinjectModule.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterNinjectModule.cs
@@ -285,7 +285,10 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 			Bind<ISingleBusDeclarationDataAdapter>().To<DeclarationDataAdapterSingleBus.HEV_P4>()
 				.WhenInjectedExactlyInto<DeclarationModeSingleBusRunDataFactory.HEV_P4>();
 
-			Bind<ISingleBusDeclarationDataAdapter>().To<DeclarationDataAdapterSingleBus.PEV_E2>()
+			Bind<ISingleBusDeclarationDataAdapter>().To<DeclarationDataAdapterSingleBus.HEV_P2>()
+				.WhenInjectedExactlyInto<DeclarationModeSingleBusRunDataFactory.HEV_P_IHPC>();
+
+            Bind<ISingleBusDeclarationDataAdapter>().To<DeclarationDataAdapterSingleBus.PEV_E2>()
 				.WhenInjectedExactlyInto<DeclarationModeSingleBusRunDataFactory.PEV_E2>();
 
 			Bind<ISingleBusDeclarationDataAdapter>().To<DeclarationDataAdapterSingleBus.PEV_E3>()
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/PrimaryBus/DeclarationDataAdapterPrimaryBus.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/PrimaryBus/DeclarationDataAdapterPrimaryBus.cs
index 4dbf9d73db6993a9b50269edda104259bbbda060..cccfe44a5da42f79e1736163b36010591bf903ef 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/PrimaryBus/DeclarationDataAdapterPrimaryBus.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/PrimaryBus/DeclarationDataAdapterPrimaryBus.cs
@@ -23,7 +23,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.PrimaryBus
 		public abstract class PrimaryBusBase : IPrimaryBusDeclarationDataAdapter
 		{
 
-			public virtual GearboxType[] SupportedGearboxTypes => throw new NotImplementedException();
+			public abstract GearboxType[] SupportedGearboxTypes { get; }
 
 			private readonly IDriverDataAdapter _driverDataAdapter = new PrimaryBusDriverDataAdapter();
 			//protected readonly IVehicleDataAdapter _vehicleDataAdapter = new PrimaryBusVehicleDataAdapter();
@@ -172,6 +172,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.PrimaryBus
 			{
 				GearboxType.MT, GearboxType.AMT, GearboxType.ATPowerSplit, GearboxType.ATSerial
 			};
+
 			protected override IEngineDataAdapter EngineDataAdapter { get; } = new CombustionEngineComponentDataAdapter();
 
 			protected override IGearboxDataAdapter GearboxDataAdapter { get; } = new GearboxDataAdapter(new TorqueConverterDataAdapter());
@@ -228,7 +229,10 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.PrimaryBus
 
 		public abstract class SerialHybrid : Hybrid
 		{
-			protected override IGearboxDataAdapter GearboxDataAdapter => throw new NotImplementedException();
+			public override GearboxType[] SupportedGearboxTypes => new GearboxType[] { };
+
+
+            protected override IGearboxDataAdapter GearboxDataAdapter => throw new NotImplementedException();
 
 			protected override IHybridStrategyDataAdapter HybridStrategyDataAdapter { get; } = new
 				SerialHybridStrategyParameterDataAdapter();
@@ -317,8 +321,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.PrimaryBus
 		{
 			private readonly IElectricStorageAdapter _electricStorageAdapter = new ElectricStorageAdapter();
 
-			public override GearboxType[] SupportedGearboxTypes => new[]
-				{ GearboxType.AMT, GearboxType.ATPowerSplit, GearboxType.APTN, GearboxType.ATSerial };
+			public override GearboxType[] SupportedGearboxTypes => new GearboxType[] {  };
 
             #region Overrides of PrimaryBusBase
 
@@ -360,7 +363,10 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.PrimaryBus
 
 		public class PEV_E2 : BatteryElectric
 		{
-			protected override IGearboxDataAdapter GearboxDataAdapter { get; } = new GearboxDataAdapter(null);
+			public override GearboxType[] SupportedGearboxTypes => new[]
+				{ GearboxType.AMT, GearboxType.ATPowerSplit, GearboxType.APTN, GearboxType.ATSerial };
+
+            protected override IGearboxDataAdapter GearboxDataAdapter { get; } = new GearboxDataAdapter(null);
         }
 
 		public class PEV_E3 : BatteryElectric
@@ -386,6 +392,8 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.PrimaryBus
 		{
 			#region Overrides of PrimaryBusBase
 
+			public override GearboxType[] SupportedGearboxTypes => new GearboxType[]{};
+
 			protected override IVehicleDataAdapter VehicleDataAdapter { get; } = new ExemptedPrimaryBusVehicleDataAdapter();
 			protected override IEngineDataAdapter EngineDataAdapter => throw new NotImplementedException();
 
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SingleBus/DeclarationDataAdapterSingleBus.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SingleBus/DeclarationDataAdapterSingleBus.cs
index 4c07ba76c0f0f60caefa918d59ab7336c63ebf60..ce24d52527e96d583c783463352d462fe1208ad5 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SingleBus/DeclarationDataAdapterSingleBus.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/SingleBus/DeclarationDataAdapterSingleBus.cs
@@ -25,8 +25,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SingleBus
 	{
 		public abstract class SingleBusBase : ISingleBusDeclarationDataAdapter
 		{
-			public static readonly GearboxType[] SupportedGearboxTypes =
-				{ GearboxType.MT, GearboxType.AMT, GearboxType.ATPowerSplit, GearboxType.ATSerial };
+			public abstract GearboxType[] SupportedGearboxTypes { get; }
 
 			private IDriverDataAdapter _driverDataAdapter = new PrimaryBusDriverDataAdapter();
 			private SingleBusVehicleDataAdapter _vehicleDataAdapter = new SingleBusVehicleDataAdapter();
@@ -178,9 +177,13 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SingleBus
 
 		public class Conventional : SingleBusBase
 		{
-			#region Overrides of SingleBusBase
+            #region Overrides of SingleBusBase
+			public override GearboxType[] SupportedGearboxTypes => new GearboxType[]
+			{
+				GearboxType.MT, GearboxType.AMT, GearboxType.ATPowerSplit, GearboxType.ATSerial
+			};
 
-			protected override IEngineDataAdapter EngineDataAdapter { get; } = new CombustionEngineComponentDataAdapter();
+            protected override IEngineDataAdapter EngineDataAdapter { get; } = new CombustionEngineComponentDataAdapter();
             protected override IGearboxDataAdapter GearboxDataAdapter { get; } = new GearboxDataAdapter(new TorqueConverterDataAdapter());
 
 			protected override IHybridStrategyDataAdapter HybridStrategyDataAdapter =>
@@ -223,9 +226,11 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SingleBus
 			}
         }
 
-		public class SerialHybrid : Hybrid
+		public abstract class SerialHybrid : Hybrid
 		{
-			protected override IGearboxDataAdapter GearboxDataAdapter => throw new NotImplementedException();
+			public override GearboxType[] SupportedGearboxTypes => new GearboxType[] { };
+
+            protected override IGearboxDataAdapter GearboxDataAdapter => throw new NotImplementedException();
 
             protected override IHybridStrategyDataAdapter HybridStrategyDataAdapter { get; } = new
 				SerialHybridStrategyParameterDataAdapter();
@@ -233,7 +238,10 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SingleBus
 
 		public class HEV_S2 : SerialHybrid
 		{
-			protected override IGearboxDataAdapter GearboxDataAdapter { get; } = new GearboxDataAdapter(new TorqueConverterDataAdapter());
+			public override GearboxType[] SupportedGearboxTypes => new[]
+				{ GearboxType.AMT, GearboxType.ATPowerSplit, GearboxType.APTN, GearboxType.ATSerial };
+
+            protected override IGearboxDataAdapter GearboxDataAdapter { get; } = new GearboxDataAdapter(new TorqueConverterDataAdapter());
 
         }
 
@@ -246,9 +254,12 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SingleBus
 			protected override IGearboxDataAdapter GearboxDataAdapter { get; } = new IEPCGearboxDataAdapter();
         }
 
-		public class ParallelHybrid : Hybrid
+		public abstract class ParallelHybrid : Hybrid
 		{
-			protected override IGearboxDataAdapter GearboxDataAdapter { get; } = new GearboxDataAdapter(new TorqueConverterDataAdapter());
+			public override GearboxType[] SupportedGearboxTypes => new[]
+				{ GearboxType.AMT, GearboxType.ATSerial, GearboxType.ATPowerSplit };
+
+            protected override IGearboxDataAdapter GearboxDataAdapter { get; } = new GearboxDataAdapter(new TorqueConverterDataAdapter());
 
             protected override IHybridStrategyDataAdapter HybridStrategyDataAdapter { get; } = new
 				ParallelHybridStrategyParameterDataAdapter();
@@ -256,7 +267,10 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SingleBus
 
 		public class HEV_P1 : ParallelHybrid { }
 
-		public class HEV_P2 : ParallelHybrid { }
+		public class HEV_P2 : ParallelHybrid
+		{
+			public override GearboxType[] SupportedGearboxTypes => new[] { GearboxType.AMT, GearboxType.IHPC };
+        }
 
 		public class HEV_P2_5 : ParallelHybrid { }
 
@@ -264,9 +278,11 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SingleBus
 
 		public class HEV_P4 : ParallelHybrid { }
 
-		public class BatteryElectric : SingleBusBase
+		public abstract class BatteryElectric : SingleBusBase
 		{
-			private readonly IElectricStorageAdapter _electricStorageAdapter = new ElectricStorageAdapter();
+			public override GearboxType[] SupportedGearboxTypes => new GearboxType[] {  };
+
+            private readonly IElectricStorageAdapter _electricStorageAdapter = new ElectricStorageAdapter();
 
 			protected override IEngineDataAdapter EngineDataAdapter => throw new NotImplementedException();
 
@@ -301,7 +317,10 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SingleBus
 
 		public class PEV_E2 : BatteryElectric
 		{
-			protected override IGearboxDataAdapter GearboxDataAdapter { get; } = new GearboxDataAdapter(new TorqueConverterDataAdapter());
+			public override GearboxType[] SupportedGearboxTypes => new[]
+				{ GearboxType.AMT, GearboxType.ATPowerSplit, GearboxType.APTN, GearboxType.ATSerial };
+
+            protected override IGearboxDataAdapter GearboxDataAdapter { get; } = new GearboxDataAdapter(new TorqueConverterDataAdapter());
 
         }
 
@@ -317,7 +336,9 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SingleBus
 
 		public class Exempted : SingleBusBase
 		{
-			protected override IEngineDataAdapter EngineDataAdapter => throw new NotImplementedException();
+			public override GearboxType[] SupportedGearboxTypes => new GearboxType[] { };
+
+            protected override IEngineDataAdapter EngineDataAdapter => throw new NotImplementedException();
 			protected override IGearboxDataAdapter GearboxDataAdapter => throw new NotImplementedException();
 			protected override IHybridStrategyDataAdapter HybridStrategyDataAdapter => throw new NotImplementedException();
 			protected override ICompletedBusAuxiliaryDataAdapter AuxDataAdapter => throw new NotImplementedException();
diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/SingleBus/DeclarationModeSingleBusVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/SingleBus/DeclarationModeSingleBusVectoRunDataFactory.cs
index 9881d79e08f956faefcd3ce80568e5f2aeb32416..c5761106978adbc23d6c2a9f5d627d01f2832586 100644
--- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/SingleBus/DeclarationModeSingleBusVectoRunDataFactory.cs
+++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationMode/SingleBus/DeclarationModeSingleBusVectoRunDataFactory.cs
@@ -610,6 +610,13 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.SingleBus
 				IMissionFilter missionFilter) : base(dataProvider, report, dataAdapter, cycleFactory, missionFilter) { }
 		}
 
+		public class HEV_P_IHPC : ParallelHybrid
+		{
+			public HEV_P_IHPC(ISingleBusInputDataProvider dataProvider, IDeclarationReport report,
+				ISingleBusDeclarationDataAdapter dataAdapter, IDeclarationCycleFactory cycleFactory,
+				IMissionFilter missionFilter) : base(dataProvider, report, dataAdapter, cycleFactory, missionFilter) { }
+		}
+
 		public abstract class BatteryElectric : SingleBusBase
 		{
 			protected BatteryElectric(ISingleBusInputDataProvider dataProvider, IDeclarationReport report,
diff --git a/VectoCore/VectoCore/InputData/Reader/VectoRunDataFactoryNinjectModule.cs b/VectoCore/VectoCore/InputData/Reader/VectoRunDataFactoryNinjectModule.cs
index 654867d9285e26f43acd50c002552f147a36b697..084bf48fcb72f85ac49c4645b778b54fd0d14511 100644
--- a/VectoCore/VectoCore/InputData/Reader/VectoRunDataFactoryNinjectModule.cs
+++ b/VectoCore/VectoCore/InputData/Reader/VectoRunDataFactoryNinjectModule.cs
@@ -250,6 +250,7 @@ namespace TUGraz.VectoCore.InputData.Reader
 			Bind<IVectoRunDataFactory>().To<DeclarationModeSingleBusRunDataFactory.HEV_S_IEPC>().Named(
 				_vehicleStringHelper.GetSingleBusName(VectoSimulationJobType.IEPC_S,
 					ArchitectureID.S_IEPC));
+			
 			Bind<IVectoRunDataFactory>().To<DeclarationModeSingleBusRunDataFactory.HEV_P1>().Named(
 				_vehicleStringHelper.GetSingleBusName(VectoSimulationJobType.ParallelHybridVehicle,
 					ArchitectureID.P1));
@@ -259,14 +260,17 @@ namespace TUGraz.VectoCore.InputData.Reader
 			Bind<IVectoRunDataFactory>().To<DeclarationModeSingleBusRunDataFactory.HEV_P2_5>().Named(
 				_vehicleStringHelper.GetSingleBusName(VectoSimulationJobType.ParallelHybridVehicle,
 					ArchitectureID.P2_5));
-
 			Bind<IVectoRunDataFactory>().To<DeclarationModeSingleBusRunDataFactory.HEV_P3>().Named(
 				_vehicleStringHelper.GetSingleBusName(VectoSimulationJobType.ParallelHybridVehicle,
 					ArchitectureID.P3));
 			Bind<IVectoRunDataFactory>().To<DeclarationModeSingleBusRunDataFactory.HEV_P4>().Named(
 				_vehicleStringHelper.GetSingleBusName(VectoSimulationJobType.ParallelHybridVehicle,
 					ArchitectureID.P4));
-			Bind<IVectoRunDataFactory>().To<DeclarationModeSingleBusRunDataFactory.PEV_E2>().Named(
+			Bind<IVectoRunDataFactory>().To<DeclarationModeSingleBusRunDataFactory.HEV_P_IHPC>().Named(
+				_vehicleStringHelper.GetSingleBusName(VectoSimulationJobType.IHPC,
+					ArchitectureID.P2));
+
+            Bind<IVectoRunDataFactory>().To<DeclarationModeSingleBusRunDataFactory.PEV_E2>().Named(
 				_vehicleStringHelper.GetSingleBusName(VectoSimulationJobType.BatteryElectricVehicle,
 					ArchitectureID.E2));
 			Bind<IVectoRunDataFactory>().To<DeclarationModeSingleBusRunDataFactory.PEV_E3>().Named(