From 88ceb60e127a0cbcdc19bc771d13abea7288b9a6 Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Fri, 17 Jan 2020 16:16:07 +0100
Subject: [PATCH] implementation for xml gearbox version 2.6 (gbx includes
 differential), implementation of vehicle type and components type for medium
 lorry, support for vehicles with differential included

---
 VECTO/Input Files/Engine.vb                   |  2 +-
 VECTO/Input Files/Gearbox.vb                  |  5 +-
 VECTO/Input Files/Vehicle.vb                  |  2 +-
 .../InputData/DeclarationInputData.cs         |  2 +
 .../Resources/XMLNames.Designer.cs            | 27 +++++++++++
 .../VectoCommon/Resources/XMLNames.resx       |  9 ++++
 .../InputData/FileIO/JSON/JSONGearboxData.cs  |  3 ++
 .../XMLDeclarationComponentsDataProvider.cs   | 33 ++++++++++++-
 .../XMLDeclarationGearboxDataProvider.cs      | 33 ++++++++++++-
 .../XMLDeclarationVehicleDataProvider.cs      | 47 ++++++++++++++++++-
 .../XMLDeclarationInputDataV26InjectModule.cs | 13 +++++
 .../Reader/Impl/XMLComponentReader.cs         | 41 ++++++++++++++++
 .../Reader/Impl/XMLJobDataReader.cs           |  2 +-
 .../XMLEngineeringGearboxDataProvider.cs      |  3 ++
 ...cs => DeclarationDataAdapterHeavyLorry.cs} | 15 +++++-
 .../DeclarationDataAdapterPrimaryBus.cs       |  2 +-
 .../EngineeringDataAdapter.cs                 |  2 +-
 .../IDeclarationDataAdapter.cs                |  1 +
 .../AbstractDeclarationVectoRunDataFactory.cs |  6 ++-
 ...ationModeHeavyLorryVectoRunDataFactory.cs} |  3 +-
 .../DeclarationVTPModeVectoRunDataFactory.cs  |  4 +-
 VectoCore/VectoCore/VectoCore.csproj          |  4 +-
 .../Models/Declaration/DeclarationDataTest.cs |  6 +--
 .../Models/Declaration/ShiftPolygonTest.cs    |  8 ++--
 .../SimulationComponent/ATGearboxTest.cs      |  2 +-
 .../Models/SimulationComponent/VehicleTest.cs |  4 +-
 .../SimulationComponentData/ValidationTest.cs |  4 +-
 .../vecto_vehicle-medium_lorry.xml            |  1 +
 .../Utils/MockSimulationDataFactory.cs        |  4 +-
 .../XML/XMLDeclarationInputTest.cs            |  2 +-
 30 files changed, 257 insertions(+), 33 deletions(-)
 rename VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/{DeclarationDataAdapterTruck.cs => DeclarationDataAdapterHeavyLorry.cs} (98%)
 rename VectoCore/VectoCore/InputData/Reader/Impl/{DeclarationModeTruckVectoRunDataFactory.cs => DeclarationModeHeavyLorryVectoRunDataFactory.cs} (98%)

diff --git a/VECTO/Input Files/Engine.vb b/VECTO/Input Files/Engine.vb
index 2b223da339..0904ab94d3 100644
--- a/VECTO/Input Files/Engine.vb	
+++ b/VECTO/Input Files/Engine.vb	
@@ -210,7 +210,7 @@ Public Class Engine
 
 		Try
 			If mode = ExecutionMode.Declaration Then
-				Dim doa As DeclarationDataAdapterTruck = New DeclarationDataAdapterTruck()
+				Dim doa As DeclarationDataAdapterHeavyLorry = New DeclarationDataAdapterHeavyLorry()
 				Dim dummyGearboxData As IGearboxDeclarationInputData = New Gearbox() With {
 						.Type = GearboxType.AMT,
 						.MaxTorque = New List(Of String),
diff --git a/VECTO/Input Files/Gearbox.vb b/VECTO/Input Files/Gearbox.vb
index 51a0779770..b53660c418 100644
--- a/VECTO/Input Files/Gearbox.vb	
+++ b/VECTO/Input Files/Gearbox.vb	
@@ -216,7 +216,7 @@ Public Class Gearbox
                 vehiclecategory = vehiclecategory.RigidTruck
             End Try
             If mode = ExecutionMode.Declaration Then
-                Dim doa As DeclarationDataAdapterTruck = New DeclarationDataAdapterTruck()
+                Dim doa As DeclarationDataAdapterHeavyLorry = New DeclarationDataAdapterHeavyLorry()
 
                 Try
                     engine = doa.CreateEngineData(inputData.JobInputData.Vehicle,
@@ -430,6 +430,9 @@ Public Class Gearbox
         End Get
     End Property
 
+    Public ReadOnly Property DifferentialIncluded As Boolean Implements IGearboxDeclarationInputData.DifferentialIncluded
+    Public ReadOnly Property AxlegearRatio As Double Implements IGearboxDeclarationInputData.AxlegearRatio
+
     Public ReadOnly Property ReferenceRPM As PerSecond Implements ITorqueConverterEngineeringInputData.ReferenceRPM
         Get
             Return TorqueConverterReferenceRpm.RPMtoRad()
diff --git a/VECTO/Input Files/Vehicle.vb b/VECTO/Input Files/Vehicle.vb
index fe1e092c12..887a949383 100644
--- a/VECTO/Input Files/Vehicle.vb	
+++ b/VECTO/Input Files/Vehicle.vb	
@@ -110,7 +110,7 @@ Public Class Vehicle
 
 		Try
 			If mode = ExecutionMode.Declaration Then
-				Dim doa As DeclarationDataAdapterTruck = New DeclarationDataAdapterTruck()
+				Dim doa As DeclarationDataAdapterHeavyLorry = New DeclarationDataAdapterHeavyLorry()
 				Dim segment As Segment = DeclarationData.TruckSegments.Lookup(vehicle.VehicleCategory, vehicle.AxleConfiguration,
 																		vehicle.GrossVehicleMassRating, vehicle.CurbMassChassis, false)
 				vehicleData = doa.CreateVehicleData(vehicle, segment.Missions.First(),
diff --git a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs
index ae9bacd876..3c200b57cd 100644
--- a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs
+++ b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs
@@ -437,6 +437,8 @@ namespace TUGraz.VectoCommon.InputData
 		/// </summary>
 		IList<ITransmissionInputData> Gears { get; }
 
+		bool DifferentialIncluded { get; }
+		double AxlegearRatio { get; }
 	}
 
 
diff --git a/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs b/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs
index c31d07a8d0..4dfd882404 100644
--- a/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs
+++ b/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs
@@ -1455,6 +1455,24 @@ namespace TUGraz.VectoCommon.Resources {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to AxlegearRatio.
+        /// </summary>
+        public static string Gearbox_AxlegearRatio {
+            get {
+                return ResourceManager.GetString("Gearbox_AxlegearRatio", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to DifferentialIncluded.
+        /// </summary>
+        public static string Gearbox_DifferentialIncluded {
+            get {
+                return ResourceManager.GetString("Gearbox_DifferentialIncluded", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to Efficiency.
         /// </summary>
@@ -3138,6 +3156,15 @@ namespace TUGraz.VectoCommon.Resources {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to TechnicalPermissibleMaximumLadenMass.
+        /// </summary>
+        public static string Vehicle_TPMLM {
+            get {
+                return ResourceManager.GetString("Vehicle_TPMLM", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to VehicleCategory.
         /// </summary>
diff --git a/VectoCommon/VectoCommon/Resources/XMLNames.resx b/VectoCommon/VectoCommon/Resources/XMLNames.resx
index aaf03c6ff3..91860e88ed 100644
--- a/VectoCommon/VectoCommon/Resources/XMLNames.resx
+++ b/VectoCommon/VectoCommon/Resources/XMLNames.resx
@@ -1161,4 +1161,13 @@
   <data name="VectoPrimaryVehicleReport" xml:space="preserve">
     <value>VectoOutputPrimaryVehicle</value>
   </data>
+  <data name="Vehicle_TPMLM" xml:space="preserve">
+    <value>TechnicalPermissibleMaximumLadenMass</value>
+  </data>
+  <data name="Gearbox_DifferentialIncluded" xml:space="preserve">
+    <value>DifferentialIncluded</value>
+  </data>
+  <data name="Gearbox_AxlegearRatio" xml:space="preserve">
+    <value>AxlegearRatio</value>
+  </data>
 </root>
\ No newline at end of file
diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONGearboxData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONGearboxData.cs
index cc4cbe570d..0fa26c6c28 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONGearboxData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONGearboxData.cs
@@ -249,6 +249,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 			}
 		}
 
+		public bool DifferentialIncluded { get { return false; } }
+		public double AxlegearRatio { get { return double.NaN; } }
+
 		private TransmissionInputData CreateTorqueConverterGear(int gearNr, JToken gear, JToken nextGear)
 		{
 			var ratio = gear.GetEx<double>(JsonKeys.Gearbox_Gear_Ratio);
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationComponentsDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationComponentsDataProvider.cs
index 77c54f10e3..81b820810e 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationComponentsDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationComponentsDataProvider.cs
@@ -1,4 +1,5 @@
-using System.Xml;
+using System;
+using System.Xml;
 using System.Xml.Linq;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces;
@@ -162,4 +163,34 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 			get { return NAMESPACE_URI; }
 		}
 	}
+
+	// ---------------------------------------------------------------------------------------
+
+	public class XMLDeclarationComponentsDataProviderNoAxlegearV26 : XMLDeclarationComponentsDataProviderV10
+	{
+		public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V20;
+
+		public new const string XSD_TYPE = "VehicleComponentsNoAxlegearType";
+
+		public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE);
+
+		public XMLDeclarationComponentsDataProviderNoAxlegearV26(
+			IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) : base(
+			vehicle, componentNode, sourceFile)
+		{ }
+
+		#region Overrides of XMLDeclarationComponentsDataProviderV10
+
+		public override IAxleGearInputData AxleGearInputData { get {
+			return null;
+				//throw new NotSupportedException("No Axlegeardata available"); 
+			} }
+
+		#endregion
+
+		protected override XNamespace SchemaNamespace
+		{
+			get { return NAMESPACE_URI; }
+		}
+	}
 }
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationGearboxDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationGearboxDataProvider.cs
index c383068a7f..7f0bdbc79b 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationGearboxDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationGearboxDataProvider.cs
@@ -84,6 +84,10 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 			}
 		}
 
+		public virtual bool DifferentialIncluded { get { return false; } }
+
+		public virtual double AxlegearRatio { get { return double.NaN; } }
+
 		//public virtual ITorqueConverterDeclarationInputData TorqueConverter
 		//{
 		//	get { return _vehicle.Components.TorqueConverterInputData; }
@@ -104,8 +108,6 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 	{
 		public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V20;
 
-		//public new const string XSD_TYPE = "GearboxComponentDeclarationType";
-
 		public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE);
 
 		public XMLDeclarationGearboxDataProviderV20(
@@ -117,4 +119,31 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 			get { return NAMESPACE_URI; }
 		}
 	}
+
+	// ---------------------------------------------------------------------------------------
+
+	public class XMLDeclarationGearboxDataProviderV26 : XMLDeclarationGearboxDataProviderV10
+	{
+		public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V26;
+
+		public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE);
+
+		public XMLDeclarationGearboxDataProviderV26(
+			IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) : base(
+			vehicle, componentNode, sourceFile)
+		{ }
+
+		#region Overrides of XMLDeclarationGearboxDataProviderV10
+
+		public override bool DifferentialIncluded { get { return GetBool(XMLNames.Gearbox_DifferentialIncluded); } }
+
+		public override double AxlegearRatio { get { return DifferentialIncluded ? GetDouble(XMLNames.Gearbox_AxlegearRatio) : double.NaN; } }
+
+		#endregion
+		
+		protected override XNamespace SchemaNamespace
+		{
+			get { return NAMESPACE_URI; }
+		}
+	}
 }
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs
index ed3cc69a1a..86632066d0 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs
@@ -436,6 +436,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 		}
 	}
 
+	// ---------------------------------------------------------------------------------------
+
 	public class XMLDeclarationExemptedVehicleDataProviderV22 : XMLDeclarationVehicleDataProviderV20
 	{
 		public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V21;
@@ -576,6 +578,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 		#endregion
 	}
 
+	// ---------------------------------------------------------------------------------------
+
 
 	public class XMLDeclarationPrimaryBusVehicleDataProviderV26 : XMLDeclarationVehicleDataProviderV20
 	{
@@ -616,7 +620,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 
 		public override Kilogram CurbMassChassis { get { return null; } }
 
-		public override Kilogram GrossVehicleMassRating { get { return GetDouble(XMLNames.TPMLM).SI<Kilogram>(); } }
+		public override Kilogram GrossVehicleMassRating { get { return GetDouble(XMLNames.Vehicle_TPMLM).SI<Kilogram>(); } }
 
 		
 		#endregion
@@ -633,5 +637,44 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 		#endregion
 	}
 
-	
+	public class XMLDeclarationMediumLorryVehicleDataProviderV26 : XMLDeclarationVehicleDataProviderV21
+	{
+		public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V26;
+
+		public new const string XSD_TYPE = "VehicleMediumLorryDeclarationType";
+
+		public new static readonly string QUALIFIED_XSD_TYPE =
+			XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE);
+
+		public XMLDeclarationMediumLorryVehicleDataProviderV26(IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) : base(jobData, xmlNode, sourceFile) { }
+
+		#region Overrides of XMLDeclarationVehicleDataProviderV10
+
+		public override bool SleeperCab { get { return false; } }
+
+		public override bool VocationalVehicle { get { return false; } }
+
+		public override IPTOTransmissionInputData PTOTransmissionInputData { get { return null; } }
+
+		public override XmlElement PTONode { get { return null; } }
+
+		#region Overrides of XMLDeclarationVehicleDataProviderV10
+
+		public override Kilogram GrossVehicleMassRating { get { return GetDouble(XMLNames.Vehicle_TPMLM).SI<Kilogram>(); } }
+
+		#endregion
+
+		#endregion
+
+		#region Overrides of AbstractXMLResource
+
+		protected override XNamespace SchemaNamespace
+		{
+			get { return NAMESPACE_URI; }
+		}
+
+		protected override DataSourceType SourceType { get; }
+
+		#endregion
+	}
 }
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV26InjectModule.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV26InjectModule.cs
index f6ece59ec6..d3bde412f8 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV26InjectModule.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV26InjectModule.cs
@@ -22,8 +22,21 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.NinjectModules {
 			Bind<IXMLBusAuxiliariesDeclarationData>().To<XMLDeclarationBusAuxiliariesDataProviderV26>()
 													.Named(XMLDeclarationBusAuxiliariesDataProviderV26.QUALIFIED_XSD_TYPE);
 
+
+			Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationMediumLorryVehicleDataProviderV26>()
+											.Named(XMLDeclarationMediumLorryVehicleDataProviderV26.QUALIFIED_XSD_TYPE);
+
+			Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationComponentsDataProviderNoAxlegearV26>()
+													.Named(XMLComponentReaderNoAxlegearV26.QUALIFIED_XSD_TYPE);
+
+			Bind<IXMLGearboxDeclarationInputData>().To<XMLDeclarationGearboxDataProviderV26>()
+													.Named(XMLDeclarationGearboxDataProviderV26.QUALIFIED_XSD_TYPE);
+
 			Bind<IXMLComponentReader>().To<XMLComponentReaderV26>().Named(XMLComponentReaderV26.QUALIFIED_XSD_TYPE);
 
+			Bind<IXMLComponentReader>().To<XMLComponentReaderNoAxlegearV26>().Named(XMLComponentReaderNoAxlegearV26.QUALIFIED_XSD_TYPE);
+
+			Bind<IXMLGearboxReader>().To<XMLGearboxReaderV26>().Named(XMLGearboxReaderV26.QUALIFIED_XSD_TYPE);
 		}
 
 		#endregion
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLComponentReader.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLComponentReader.cs
index 26b9e33ead..1da7973089 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLComponentReader.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLComponentReader.cs
@@ -311,4 +311,45 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 			return Factory.CreateBusAuxiliaires(version, Vehicle, componentNode, sourceFile);
 		}
 	}
+
+	// ---------------------------------------------------------------------------------------
+
+	public class XMLComponentReaderNoAxlegearV26 : XMLComponentReaderV20
+	{
+		public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V26;
+		public new const string XSD_TYPE = "VehicleComponentsNoAxlegearType";
+		public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE);
+
+		protected IBusAuxiliariesDeclarationData _busAuxInputData;
+
+
+		public XMLComponentReaderNoAxlegearV26(IXMLDeclarationVehicleData vehicle, XmlNode componentsNode) : base(
+			vehicle, componentsNode)
+		{ }
+
+		#region Overrides of XMLComponentReaderV10
+
+		public override IAxleGearInputData AxleGearInputData { get { return null; } }
+
+		#endregion
+	}
+
+	// ---------------------------------------------------------------------------------------
+
+	public class XMLGearboxReaderV26 : XMLComponentReaderV10
+	{
+		public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V26;
+		public new const string XSD_TYPE = "GearboxDataDeclarationType";
+		public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE);
+
+		protected IBusAuxiliariesDeclarationData _busAuxInputData;
+
+
+		public XMLGearboxReaderV26(IXMLDeclarationVehicleData vehicle, XmlNode componentsNode) : base(
+			vehicle, componentsNode)
+		{ }
+
+		
+	}
+
 }
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLJobDataReader.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLJobDataReader.cs
index 04cbb2d6f0..c8e39abe71 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLJobDataReader.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLJobDataReader.cs
@@ -73,7 +73,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 
 			vehicle.ComponentReader = GetReader(vehicle, vehicle.ComponentNode, Factory.CreateComponentReader);
 			vehicle.ADASReader = vehicle.ADASNode == null ? null : GetReader(vehicle, vehicle.ADASNode, Factory.CreateADASReader); //null;
-			vehicle.PTOReader = GetReader(vehicle, vehicle.PTONode, Factory.CreatePTOReader);
+			vehicle.PTOReader = vehicle.PTONode == null ? null : GetReader(vehicle, vehicle.PTONode, Factory.CreatePTOReader);
 
 			return vehicle;
 		}
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringGearboxDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringGearboxDataProvider.cs
index 146e113f97..25c2ef4c0f 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringGearboxDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringGearboxDataProvider.cs
@@ -104,6 +104,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering.DataProvider
 			}
 		}
 
+		public virtual bool DifferentialIncluded { get { return false; } }
+		public virtual double AxlegearRatio { get { return double.NaN; } }
+
 
 		public IXMLGearboxReader Reader { protected get; set; }
 
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterTruck.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterHeavyLorry.cs
similarity index 98%
rename from VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterTruck.cs
rename to VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterHeavyLorry.cs
index 9a51f17aee..101b51beac 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterTruck.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterHeavyLorry.cs
@@ -52,7 +52,8 @@ using TUGraz.VectoCore.Utils;
 
 namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 {
-	public class DeclarationDataAdapterTruck : AbstractSimulationDataAdapter, IDeclarationDataAdapter
+	
+	public class DeclarationDataAdapterHeavyLorry : AbstractSimulationDataAdapter, IDeclarationDataAdapter
 	{
 		public static readonly GearboxType[] SupportedGearboxTypes =
 			{ GearboxType.MT, GearboxType.AMT, GearboxType.ATPowerSplit, GearboxType.ATSerial };
@@ -519,6 +520,16 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 			return retVal;
 		}
 
+		public AxleGearData CreateDummyAxleGearData(IGearboxDeclarationInputData gbxData)
+		{
+			return new AxleGearData() {
+				AxleGear = new TransmissionData() {
+					Ratio = gbxData.AxlegearRatio,
+					LossMap = TransmissionLossMapReader.Create(1.0, gbxData.AxlegearRatio, "Axlegear")
+				}
+			};
+		}
+
 		private void WarnDeclarationMode(string inputData)
 		{
 			Log.Warn("{0} not in Declaration Mode!", inputData);
@@ -596,7 +607,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 
 		public virtual PTOData CreatePTOTransmissionData(IPTOTransmissionInputData pto)
 		{
-			if (pto.PTOTransmissionType != "None") {
+			if (pto != null && pto.PTOTransmissionType != "None") {
 				return new PTOData {
 					TransmissionType = pto.PTOTransmissionType,
 					LossMap = PTOIdleLossMapReader.GetZeroLossMap(),
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs
index 56d434204d..10ef34f234 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs
@@ -17,7 +17,7 @@ using TUGraz.VectoCore.Models.SimulationComponent.Data;
 
 namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 {
-	public class DeclarationDataAdapterPrimaryBus : DeclarationDataAdapterTruck
+	public class DeclarationDataAdapterPrimaryBus : DeclarationDataAdapterHeavyLorry
 	{
 		public AirdragData CreateAirdragData(Mission mission)
 		{
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs
index 0dd5a4a015..5a59379421 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs
@@ -134,7 +134,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 									data.GrossVehicleMassRating, false);
 					retVal.CrossWindCorrectionCurve = new CrosswindCorrectionCdxALookup(
 						airDragArea,
-						DeclarationDataAdapterTruck.GetDeclarationAirResistanceCurve(
+						DeclarationDataAdapterHeavyLorry.GetDeclarationAirResistanceCurve(
 							GetAirdragParameterSet(
 								data.VehicleCategory, data.AxleConfiguration, data.Components.AxleWheels.AxlesEngineering.Count), airDragArea,
 							height),
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/IDeclarationDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/IDeclarationDataAdapter.cs
index e10909c2fe..83eddc210d 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/IDeclarationDataAdapter.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/IDeclarationDataAdapter.cs
@@ -26,5 +26,6 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter {
 		RetarderData CreateRetarderData(IRetarderInputData retarderData);
 		PTOData CreatePTOTransmissionData(IPTOTransmissionInputData ptoData);
 		IList<VectoRunData.AuxData> CreateAuxiliaryData(IAuxiliariesDeclarationInputData auxData, IBusAuxiliariesDeclarationData busAuxData, MissionType missionType, VehicleClass vehicleClass, Meter vehicleLength);
+		AxleGearData CreateDummyAxleGearData(IGearboxDeclarationInputData gbxData);
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/AbstractDeclarationVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/AbstractDeclarationVectoRunDataFactory.cs
index 6efa4ccbd3..3c834be34c 100644
--- a/VectoCore/VectoCore/InputData/Reader/Impl/AbstractDeclarationVectoRunDataFactory.cs
+++ b/VectoCore/VectoCore/InputData/Reader/Impl/AbstractDeclarationVectoRunDataFactory.cs
@@ -81,7 +81,11 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl {
 													_segment.Missions.First().Loadings.First().Value);
 			_airdragData = DataAdapter.CreateAirdragData(vehicle.Components.AirdragInputData,
 												_segment.Missions.First(), _segment);
-			_axlegearData = DataAdapter.CreateAxleGearData(InputDataProvider.JobInputData.Vehicle.Components.AxleGearInputData);
+			if (InputDataProvider.JobInputData.Vehicle.Components.GearboxInputData.DifferentialIncluded) {
+				_axlegearData = DataAdapter.CreateDummyAxleGearData(InputDataProvider.JobInputData.Vehicle.Components.GearboxInputData);
+			} else { 
+				_axlegearData = DataAdapter.CreateAxleGearData(InputDataProvider.JobInputData.Vehicle.Components.AxleGearInputData);
+			} 
 			_angledriveData = DataAdapter.CreateAngledriveData(InputDataProvider.JobInputData.Vehicle.Components.AngledriveInputData);
 			var tmpRunData = new VectoRunData() {
 				ShiftStrategy = InputDataProvider.JobInputData.ShiftStrategy,
diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeTruckVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeHeavyLorryVectoRunDataFactory.cs
similarity index 98%
rename from VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeTruckVectoRunDataFactory.cs
rename to VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeHeavyLorryVectoRunDataFactory.cs
index 64905a214c..36598a2a68 100644
--- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeTruckVectoRunDataFactory.cs
+++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeHeavyLorryVectoRunDataFactory.cs
@@ -45,9 +45,10 @@ using TUGraz.VectoCore.OutputData;
 
 namespace TUGraz.VectoCore.InputData.Reader.Impl
 {
+
 	public class DeclarationModeTruckVectoRunDataFactory : AbstractDeclarationVectoRunDataFactory
 	{
-		DeclarationDataAdapterTruck _dao = new DeclarationDataAdapterTruck();
+		DeclarationDataAdapterHeavyLorry _dao = new DeclarationDataAdapterHeavyLorry();
 
 		internal DeclarationModeTruckVectoRunDataFactory(
 			IDeclarationInputDataProvider dataProvider, IDeclarationReport report) : base(dataProvider, report)
diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationVTPModeVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationVTPModeVectoRunDataFactory.cs
index e9189376a6..4ad6394cad 100644
--- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationVTPModeVectoRunDataFactory.cs
+++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationVTPModeVectoRunDataFactory.cs
@@ -59,7 +59,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
 		protected PTOData PTOTransmissionData;
 		protected List<VectoRunData.AuxData> AuxVTP;
 		protected Segment Segment;
-		protected DeclarationDataAdapterTruck Dao;
+		protected DeclarationDataAdapterHeavyLorry Dao;
 		protected Exception InitException;
 
 		public IVTPReport Report;
@@ -115,7 +115,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
 
 		protected void Initialize()
 		{
-			Dao = new DeclarationDataAdapterTruck();
+			Dao = new DeclarationDataAdapterHeavyLorry();
 			var vehicle = JobInputData.Vehicle;
 			Segment = DeclarationData.TruckSegments.Lookup(
 				vehicle.VehicleCategory,
diff --git a/VectoCore/VectoCore/VectoCore.csproj b/VectoCore/VectoCore/VectoCore.csproj
index e3d5011f6c..ebe22db111 100644
--- a/VectoCore/VectoCore/VectoCore.csproj
+++ b/VectoCore/VectoCore/VectoCore.csproj
@@ -423,11 +423,11 @@
     <Compile Include="InputData\Reader\ComponentData\TorqueConverterDataReader.cs" />
     <Compile Include="InputData\Reader\ComponentData\TransmissionLossMapReader.cs" />
     <Compile Include="InputData\Reader\DataObjectAdapter\AbstractSimulationDataAdapter.cs" />
-    <Compile Include="InputData\Reader\DataObjectAdapter\DeclarationDataAdapterTruck.cs" />
+    <Compile Include="InputData\Reader\DataObjectAdapter\DeclarationDataAdapterHeavyLorry.cs" />
     <Compile Include="InputData\Reader\DataObjectAdapter\EngineeringDataAdapter.cs" />
     <Compile Include="InputData\Reader\ComponentData\DrivingCycleDataReader.cs" />
     <Compile Include="InputData\Reader\ComponentData\FullLoadCurveReader.cs" />
-    <Compile Include="InputData\Reader\Impl\DeclarationModeTruckVectoRunDataFactory.cs" />
+    <Compile Include="InputData\Reader\Impl\DeclarationModeHeavyLorryVectoRunDataFactory.cs" />
     <Compile Include="InputData\Reader\Impl\DeclarationVTPModeVectoRunDataFactory.cs" />
     <Compile Include="InputData\Reader\Impl\DrivingCycleProxy.cs" />
     <Compile Include="InputData\Reader\Impl\EngineeringModeVectoRunDataFactory.cs" />
diff --git a/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs b/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs
index 0e5e50f5ac..64264b1ed7 100644
--- a/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs
+++ b/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs
@@ -225,7 +225,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration
             double expected)
         {
             var crossWindCorrectionCurve = new CrosswindCorrectionCdxALookup(crossSectionArea.SI<SquareMeter>(),
-				DeclarationDataAdapterTruck.GetDeclarationAirResistanceCurve(parameterSet, crossSectionArea.SI<SquareMeter>(),
+				DeclarationDataAdapterHeavyLorry.GetDeclarationAirResistanceCurve(parameterSet, crossSectionArea.SI<SquareMeter>(),
                     height.SI<Meter>()),
                 CrossWindCorrectionMode.DeclarationModeCorrection);
 
@@ -237,7 +237,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration
         public void CrossWindGetDeclarationAirResistance(string parameterSet, double cdxa0, double height)
         {
             var curve =
-				DeclarationDataAdapterTruck.GetDeclarationAirResistanceCurve(parameterSet, cdxa0.SI<SquareMeter>(), height.SI<Meter>());
+				DeclarationDataAdapterHeavyLorry.GetDeclarationAirResistanceCurve(parameterSet, cdxa0.SI<SquareMeter>(), height.SI<Meter>());
 
             AssertHelper.AreRelativeEqual(60.KMPHtoMeterPerSecond(), curve[1].Velocity);
             AssertHelper.AreRelativeEqual(7.0418009.SI<SquareMeter>(), curve[1].EffectiveCrossSectionArea);
@@ -264,7 +264,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration
         public void CrossWindCorrectionExceptionTest(string parameterSet, double crossSectionArea, double kmph, double height)
         {
             var crossWindCorrectionCurve = new CrosswindCorrectionCdxALookup(crossSectionArea.SI<SquareMeter>(),
-				DeclarationDataAdapterTruck.GetDeclarationAirResistanceCurve(parameterSet, crossSectionArea.SI<SquareMeter>(),
+				DeclarationDataAdapterHeavyLorry.GetDeclarationAirResistanceCurve(parameterSet, crossSectionArea.SI<SquareMeter>(),
                     height.SI<Meter>()),
                 CrossWindCorrectionMode.DeclarationModeCorrection);
 
diff --git a/VectoCore/VectoCoreTest/Models/Declaration/ShiftPolygonTest.cs b/VectoCore/VectoCoreTest/Models/Declaration/ShiftPolygonTest.cs
index ed1431e051..7725157f04 100644
--- a/VectoCore/VectoCoreTest/Models/Declaration/ShiftPolygonTest.cs
+++ b/VectoCore/VectoCoreTest/Models/Declaration/ShiftPolygonTest.cs
@@ -447,7 +447,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration
 				},
 			};
 
-			var dao = new DeclarationDataAdapterTruck();
+			var dao = new DeclarationDataAdapterHeavyLorry();
 			var gearboxData = new JSONGearboxDataV5(JSONInputDataFactory.ReadFile(gearboxFile), gearboxFile);
 			var engineInput = new JSONEngineDataV3(JSONInputDataFactory.ReadFile(engineFile), engineFile);
 			var vehicle = new MockDeclarationVehicleInputData() {
@@ -499,7 +499,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration
 				new Point(123.0457, 2530),
 			};
 
-			var dao = new DeclarationDataAdapterTruck();
+			var dao = new DeclarationDataAdapterHeavyLorry();
 			var gearboxData = new JSONGearboxDataV5(JSONInputDataFactory.ReadFile(gearboxFile), gearboxFile);
 			var engineInput = new JSONEngineDataV3(JSONInputDataFactory.ReadFile(engineFile), engineFile);
 			var vehicle = new MockDeclarationVehicleInputData() {
@@ -617,7 +617,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration
 			var gearboxData = job.JobInputData.Vehicle.Components.GearboxInputData;
 			var idlespeed = VectoMath.Max(
 				job.JobInputData.Vehicle.EngineIdleSpeed, job.JobInputData.Vehicle.Components.EngineInputData.EngineModes.First().IdleSpeed);
-			var dao = new DeclarationDataAdapterTruck();
+			var dao = new DeclarationDataAdapterHeavyLorry();
 			var engineData = dao.CreateEngineData(job.JobInputData.Vehicle, job.JobInputData.Vehicle.Components.EngineInputData.EngineModes.First(), new Mission() {MissionType = MissionType.LongHaul});
 			var axlegearRatio = job.JobInputData.Vehicle.Components.AxleGearInputData.Ratio;
 			var rdyn = job.JobInputData.Vehicle.Components.AxleWheels.AxlesDeclaration.Where(x => x.AxleType == AxleType.VehicleDriven)
@@ -871,7 +871,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration
 		public void ComputeShiftPolygonXML(string xmlJob)
 		{
 			var inputData = xmlInputReader.CreateDeclaration(xmlJob);
-			var dao = new DeclarationDataAdapterTruck();
+			var dao = new DeclarationDataAdapterHeavyLorry();
 
 			var gearboxData = inputData.JobInputData.Vehicle.Components.GearboxInputData;
 			var engineData = dao.CreateEngineData(inputData.JobInputData.Vehicle, inputData.JobInputData.Vehicle.Components.EngineInputData.EngineModes.First(), new Mission() {MissionType = MissionType.LongHaul});
diff --git a/VectoCore/VectoCoreTest/Models/SimulationComponent/ATGearboxTest.cs b/VectoCore/VectoCoreTest/Models/SimulationComponent/ATGearboxTest.cs
index 14128abd69..4232527565 100644
--- a/VectoCore/VectoCoreTest/Models/SimulationComponent/ATGearboxTest.cs
+++ b/VectoCore/VectoCoreTest/Models/SimulationComponent/ATGearboxTest.cs
@@ -264,7 +264,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			var gearboxInput = JSONInputDataFactory.ReadGearbox(gbxFile);
 			var engineInput = JSONInputDataFactory.ReadEngine(EngineDataFile);
 
-			var dao = new DeclarationDataAdapterTruck();
+			var dao = new DeclarationDataAdapterHeavyLorry();
 			var vehicleInput = new MockDeclarationVehicleInputData() {
 				EngineInputData = engineInput,
 				GearboxInputData = gearboxInput
diff --git a/VectoCore/VectoCoreTest/Models/SimulationComponent/VehicleTest.cs b/VectoCore/VectoCoreTest/Models/SimulationComponent/VehicleTest.cs
index 5a93340cb3..a60957b949 100644
--- a/VectoCore/VectoCoreTest/Models/SimulationComponent/VehicleTest.cs
+++ b/VectoCore/VectoCoreTest/Models/SimulationComponent/VehicleTest.cs
@@ -107,7 +107,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			var vehicleData = MockSimulationDataFactory.CreateVehicleDataFromFile(VehicleDataFileTruck);
 			var airdragData = MockSimulationDataFactory.CreateAirdragDataFromFile(VehicleDataFileTruck);
 			airdragData.CrossWindCorrectionCurve = new CrosswindCorrectionCdxALookup(6.46.SI<SquareMeter>(),
-				DeclarationDataAdapterTruck.GetDeclarationAirResistanceCurve("TractorSemitrailer",
+				DeclarationDataAdapterHeavyLorry.GetDeclarationAirResistanceCurve("TractorSemitrailer",
 					6.46.SI<SquareMeter>(), height.SI<Meter>()), CrossWindCorrectionMode.DeclarationModeCorrection);
 			var vehicle = new Vehicle(container, vehicleData,airdragData);
 
@@ -131,7 +131,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			var vehicleData = MockSimulationDataFactory.CreateVehicleDataFromFile(VehicleDataFileTruck);
 			var airdragData = MockSimulationDataFactory.CreateAirdragDataFromFile(VehicleDataFileTruck);
 			airdragData.CrossWindCorrectionCurve = new CrosswindCorrectionCdxALookup(6.2985.SI<SquareMeter>(),
-				DeclarationDataAdapterTruck.GetDeclarationAirResistanceCurve("TractorSemitrailer",
+				DeclarationDataAdapterHeavyLorry.GetDeclarationAirResistanceCurve("TractorSemitrailer",
 					6.2985.SI<SquareMeter>(), 3.SI<Meter>()), CrossWindCorrectionMode.DeclarationModeCorrection);
 
 			var vehicle = new Vehicle(container, vehicleData,airdragData);
diff --git a/VectoCore/VectoCoreTest/Models/SimulationComponentData/ValidationTest.cs b/VectoCore/VectoCoreTest/Models/SimulationComponentData/ValidationTest.cs
index 1e725e6157..22d2f21c64 100644
--- a/VectoCore/VectoCoreTest/Models/SimulationComponentData/ValidationTest.cs
+++ b/VectoCore/VectoCoreTest/Models/SimulationComponentData/ValidationTest.cs
@@ -169,7 +169,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData
 				WHTCRural = 1.1,
 				WHTCUrban = 1.1
 			};
-			var dao = new DeclarationDataAdapterTruck();
+			var dao = new DeclarationDataAdapterHeavyLorry();
 
 			var dummyGearbox = new DummyGearboxData() {
 				Type = GearboxType.AMT,
@@ -646,6 +646,8 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData
 		public DigestData DigestValue { get; set; }
 		public GearboxType Type { get; set; }
 		public IList<ITransmissionInputData> Gears { get; set; }
+		public bool DifferentialIncluded { get; }
+		public double AxlegearRatio { get; }
 
 		public KilogramSquareMeter Inertia { get; set; }
 		public Second TractionInterruption { get; set; }
diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.6_Buses/vecto_vehicle-medium_lorry.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.6_Buses/vecto_vehicle-medium_lorry.xml
index 982043e82b..a5b2e62df0 100644
--- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.6_Buses/vecto_vehicle-medium_lorry.xml
+++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.6_Buses/vecto_vehicle-medium_lorry.xml
@@ -199,6 +199,7 @@ urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_
 					<TransmissionType>AMT</TransmissionType>
 					<MainCertificationMethod>Standard values</MainCertificationMethod>
 					<DifferentialIncluded>true</DifferentialIncluded>
+					<AxlegearRatio>2.600</AxlegearRatio>
 					<v2.6:Gears xsi:type="v2.0:GearsDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0">
 						<Gear number="1">
 							<Ratio>14.930</Ratio>
diff --git a/VectoCore/VectoCoreTest/Utils/MockSimulationDataFactory.cs b/VectoCore/VectoCoreTest/Utils/MockSimulationDataFactory.cs
index 537a8322d6..db09f2be07 100644
--- a/VectoCore/VectoCoreTest/Utils/MockSimulationDataFactory.cs
+++ b/VectoCore/VectoCoreTest/Utils/MockSimulationDataFactory.cs
@@ -60,7 +60,7 @@ namespace TUGraz.VectoCore.Tests.Utils
 			var gearboxInput = JSONInputDataFactory.ReadGearbox(gearBoxFile);
 			var engineInput = JSONInputDataFactory.ReadEngine(engineFile);
 			if (declarationMode) {
-				var dao = new DeclarationDataAdapterTruck();
+				var dao = new DeclarationDataAdapterHeavyLorry();
 				var vehicleInput = new MockDeclarationVehicleInputData() {
 					EngineInputData = engineInput,
 					GearboxInputData = gearboxInput
@@ -122,7 +122,7 @@ namespace TUGraz.VectoCore.Tests.Utils
 		public static AxleGearData CreateAxleGearDataFromFile(string axleGearFile, bool declarationMode = true)
 		{
 			if (declarationMode) {
-				var dao = new DeclarationDataAdapterTruck();
+				var dao = new DeclarationDataAdapterHeavyLorry();
 				var axleGearInput = JSONInputDataFactory.ReadGearbox(axleGearFile);
 				return dao.CreateAxleGearData((IAxleGearInputData)axleGearInput);
 			} else {
diff --git a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs
index d452aaebc3..f9115920c3 100644
--- a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs
+++ b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs
@@ -832,7 +832,7 @@ namespace TUGraz.VectoCore.Tests.XML
 
 				var gbxType = inputDataProvider.JobInputData.Vehicle.Components.GearboxInputData.Type;
 				Assert.AreEqual(gearboxType, gbxType.ToXMLFormat());
-				Assert.IsTrue(DeclarationDataAdapterTruck.SupportedGearboxTypes.Contains(gbxType));
+				Assert.IsTrue(DeclarationDataAdapterHeavyLorry.SupportedGearboxTypes.Contains(gbxType));
 			}
 		}
 
-- 
GitLab