diff --git a/VECTO/Input Files/Gearbox.vb b/VECTO/Input Files/Gearbox.vb
index adf6191b0204de38d7cde47e96273524cacfc065..6dad5ee10526325fd199ad26c1d394699cff30e4 100644
--- a/VECTO/Input Files/Gearbox.vb	
+++ b/VECTO/Input Files/Gearbox.vb	
@@ -246,7 +246,7 @@ Public Class Gearbox
                                                        New VehicleData() _
                                                        With {.DynamicTyreRadius = rdyn,
                                                        .VehicleCategory = vehiclecategory}},
-                    Nothing, DeclarationDataAdapterHeavyLorry.Conventional.SupportedGearboxTypes)
+                    Nothing, DeclarationDataAdapterHeavyLorry.Conventional.SupportsGearboxTypes)
             Else
 
                 Dim doa As EngineeringDataAdapter = New EngineeringDataAdapter()
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/HeavyLorry/DeclarationDataAdapterHeavyLorry.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/HeavyLorry/DeclarationDataAdapterHeavyLorry.cs
index 7b9fd6084e70971726b937ae19d2d5813bdb6240..fe7fa47d0f07c4c0c3626dac8ea6542d99255371 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/HeavyLorry/DeclarationDataAdapterHeavyLorry.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/HeavyLorry/DeclarationDataAdapterHeavyLorry.cs
@@ -72,6 +72,8 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.HeavyLorry
 				return _driverDataAdapter.CreateDriverData();
 			}
 
+			protected abstract GearboxType[] SupportedGearboxTypes { get; }
+
 			public virtual VehicleData CreateVehicleData(IVehicleDeclarationInputData vehicle, Segment segment,
 				Mission mission,
 				KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, bool allowVocational)
@@ -168,7 +170,10 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.HeavyLorry
 
 		public class Conventional : LorryBase
 		{
-			public static readonly GearboxType[] SupportedGearboxTypes =
+			public static GearboxType[] SupportsGearboxTypes = { GearboxType.MT, GearboxType.AMT, GearboxType.ATPowerSplit, GearboxType
+				.ATSerial};
+
+			protected override GearboxType[] SupportedGearboxTypes => new []
 				{ GearboxType.MT, GearboxType.AMT, GearboxType.ATPowerSplit, GearboxType.ATSerial };
 
 			private IEngineDataAdapter _engineDataAdapter = new CombustionEngineComponentDataAdapter();
@@ -250,7 +255,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.HeavyLorry
 		{
 			#region Overrides of LorryBase
 
-			
+			protected override GearboxType[] SupportedGearboxTypes { get; }
 
 			public override IList<VectoRunData.AuxData> CreateAuxiliaryData(IAuxiliariesDeclarationInputData auxData, IBusAuxiliariesDeclarationData busAuxData,
 				MissionType missionType, VehicleClass vehicleClass, Meter vehicleLength, int? numSteeredAxles)
@@ -266,6 +271,8 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.HeavyLorry
 			private ParallelHybridStrategyParameterDataAdapter _hybridStrategyDataAdapter =
 				new ParallelHybridStrategyParameterDataAdapter();
 
+			protected override GearboxType[] SupportedGearboxTypes => new[]
+				{ GearboxType.AMT, GearboxType.ATPowerSplit, GearboxType.ATSerial };
 			private GearboxDataAdapter _gearboxDataAdapter = new GearboxDataAdapter(null);
 			#region Overrides of LorryBase
 
@@ -293,11 +300,11 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.HeavyLorry
 		{
 			#region Overrides of LorryBase
 
+			protected override GearboxType[] SupportedGearboxTypes { get; }
+
 			private readonly GearboxDataAdapter _gearboxDataAdapter = new GearboxDataAdapter(null);
 			private readonly ElectricStorageAdapter _electricStorageAdapter = new ElectricStorageAdapter();
 			private readonly ElectricMachinesDataAdapter _electricMachineAdapter = new ElectricMachinesDataAdapter();
-			public static readonly GearboxType[] SupportedGearboxTypes =
-				{ GearboxType.AMT, GearboxType.ATPowerSplit, GearboxType.ATSerial, GearboxType.APTN };
 			public override GearboxData CreateGearboxData(IVehicleDeclarationInputData inputData, VectoRunData runData,
 				IShiftPolygonCalculator shiftPolygonCalc)
 			{
@@ -338,7 +345,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.HeavyLorry
 		public class HEV_S2 : SerialHybrid
 		{
 			#region Overrides of LorryBase
-			public static readonly GearboxType[] SupportedGearboxTypes =
+			protected override GearboxType[] SupportedGearboxTypes => new[]
 				{ GearboxType.AMT, GearboxType.ATPowerSplit, GearboxType.ATSerial, GearboxType.APTN };
 			private GearboxDataAdapter _gearBoxDataAdaper = new GearboxDataAdapter(new TorqueConverterDataAdapter());
 			public override GearboxData CreateGearboxData(IVehicleDeclarationInputData inputData, VectoRunData runData,
@@ -357,12 +364,34 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.HeavyLorry
 		public class HEV_S3 : SerialHybrid { }
 		public class HEV_S4 : SerialHybrid { }
 		public class HEV_S_IEPC : SerialHybrid { }
-		public class HEV_P1 : ParallelHybrid { }
-		public class HEV_P2 : ParallelHybrid { }
-		public class HEV_P2_5 : ParallelHybrid { }
+
+		public class HEV_P1 : ParallelHybrid
+		{
+			
+		}
+
+		public class HEV_P2 : ParallelHybrid
+		{
+			protected override GearboxType[] SupportedGearboxTypes => new[]
+				{ GearboxType.AMT, GearboxType.IHPC, };
+		}
+
+		public class HEV_P2_5 : ParallelHybrid
+		{
+
+		}
 		public class HEV_P3 : ParallelHybrid { }
 		public class HEV_P4 : ParallelHybrid { }
-		public class PEV_E2 : BatteryElectric { }
+
+		public class PEV_E2 : BatteryElectric
+		{
+			#region Overrides of BatteryElectric
+
+			protected override GearboxType[] SupportedGearboxTypes => new[]
+				{ GearboxType.AMT, GearboxType.ATPowerSplit, GearboxType.ATSerial, GearboxType.APTN };
+
+			#endregion
+		}
 		public class PEV_E3 : BatteryElectric { }
 		public class PEV_E4 : BatteryElectric { }
 
@@ -374,6 +403,8 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.HeavyLorry
 		{
 			#region Overrides of LorryBase
 
+			protected override GearboxType[] SupportedGearboxTypes { get; }
+
 			public override VehicleData CreateVehicleData(IVehicleDeclarationInputData vehicle, Segment segment, Mission mission,
 				KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, bool allowVocational)
 			{
diff --git a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs
index e04dbb82032111018539a3cd16ce12b72bd9c449..05c2844d0c29c7fb29a1ef8f7317d56e5626636c 100644
--- a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs
+++ b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs
@@ -835,7 +835,7 @@ namespace TUGraz.VectoCore.Tests.XML
 
 				var gbxType = inputDataProvider.JobInputData.Vehicle.Components.GearboxInputData.Type;
 				Assert.AreEqual(gearboxType, gbxType.ToXMLFormat());
-				Assert.IsTrue(DeclarationDataAdapterHeavyLorry.Conventional.SupportedGearboxTypes.Contains(gbxType));
+				Assert.IsTrue(DeclarationDataAdapterHeavyLorry.Conventional.SupportsGearboxTypes.Contains(gbxType));
 			}
 		}