diff --git a/VectoCommon/VectoCommon/BusAuxiliaries/IPneumaticUserInputsConfig.cs b/VectoCommon/VectoCommon/BusAuxiliaries/IPneumaticUserInputsConfig.cs
index d93ab63a6983274231cb63a64232ef0bff1e4817..aaa7b17d7a58bca1d8ba3847d6438ed9cda2baf5 100644
--- a/VectoCommon/VectoCommon/BusAuxiliaries/IPneumaticUserInputsConfig.cs
+++ b/VectoCommon/VectoCommon/BusAuxiliaries/IPneumaticUserInputsConfig.cs
@@ -49,4 +49,26 @@ namespace TUGraz.VectoCommon.BusAuxiliaries
 			}
 		}
 	}
+
+	public static class ConsumerTechnologyHelper
+	{
+		public static ConsumerTechnology Parse(string technology)
+		{
+			switch (technology.ToLowerInvariant())
+			{
+				case "mechanically":
+				case "mechanic":
+					return ConsumerTechnology.Mechanically;
+				case "electrically":
+				case "electric":
+				case "electronically":
+					return ConsumerTechnology.Electrically;
+				case "pneumatically":
+				case "pneumatic":
+					return ConsumerTechnology.Pneumatically;
+				default:
+					return ConsumerTechnology.Unknown;
+			}
+		}
+	}
 }
diff --git a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs
index f5612da621ab43a183afb31b961694fec490d16e..eef6124600fbc050a797de0db80b8994b6c5425f 100644
--- a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs
+++ b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs
@@ -41,6 +41,7 @@ using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Models.Declaration;
 
 
+
 namespace TUGraz.VectoCommon.InputData
 {
 	public interface IDeclarationJobInputData
@@ -743,6 +744,7 @@ namespace TUGraz.VectoCommon.InputData
 
 	public interface IPneumaticSupplyDeclarationData
 	{
+		string Clutch { get; }
 		double Ratio { get; }
 
 		string CompressorSize { get; }
@@ -757,7 +759,6 @@ namespace TUGraz.VectoCommon.InputData
 		ConsumerTechnology AirsuspensionControl { get; }
 		ConsumerTechnology AdBlueDosing { get; }
 		ConsumerTechnology DoorDriveTechnology { get; }
-
 	}
 
 	public interface IHVACBusAuxiliariesDeclarationData
@@ -780,6 +781,45 @@ namespace TUGraz.VectoCommon.InputData
 		bool EngineWasteGasHeatExchanger { get; }
 
 		bool SeparateAirDistributionDucts { get; }
+	}
+
+	public interface ICompressorType
+	{
+		string DriverAC { get; }
+		string PassengerAC { get; }
+	}
+
+	public interface IResultsInputData
+	{
+		string Status { get; }
+
+		IList<IResult> Results { get; }
+	}
+
 
+	public interface IResult
+	{
+		string ResultStatus { get; }
+
+		string VehicleGroup { get; }
+
+		string Mission { get; }
+
+		ISimulationParameter SimulationParameter { get; }
+	}
+
+	public interface ISimulationParameter
+	{
+		Kilogram TotalVehicleMass { get; } 
+		Kilogram Payload { get; } 
+		int PassengerCount { get; }
+		string FuelMode { get; }
+	}
+	
+
+	public interface IApplicationInformation
+	{
+		string SimulationToolVersion { get; }
+		DateTime Date { get; }
 	}
 }
diff --git a/VectoCommon/VectoCommon/InputData/IInputDataProvider.cs b/VectoCommon/VectoCommon/InputData/IInputDataProvider.cs
index a8b41009b7faf84236d4bf97988359cec2a09635..464ce79f20d9cb30e0849263395e94cb1ae1c574 100644
--- a/VectoCommon/VectoCommon/InputData/IInputDataProvider.cs
+++ b/VectoCommon/VectoCommon/InputData/IInputDataProvider.cs
@@ -54,4 +54,16 @@ namespace TUGraz.VectoCommon.InputData
 
 	}
 
+	public interface IPrimaryVehicleInputDataProvider : IInputDataProvider
+	{
+		IVehicleDeclarationInputData Vehicle { get; }
+
+		DigestData ResultDataHash { get; }
+
+		IResultsInputData ResultsInputData { get; }
+
+		IApplicationInformation ApplicationInformation { get; }
+
+		DigestData ManufacturerHash { get; }
+	}
 }
diff --git a/VectoCommon/VectoCommon/Models/VehicleCategory.cs b/VectoCommon/VectoCommon/Models/VehicleCategory.cs
index f18775a3cc662f35fb2d57f35dcdb88a4f775ded..e279361998f6b9158e010837c3da81caf70fbb4d 100644
--- a/VectoCommon/VectoCommon/Models/VehicleCategory.cs
+++ b/VectoCommon/VectoCommon/Models/VehicleCategory.cs
@@ -126,5 +126,19 @@ namespace TUGraz.VectoCommon.Models
 					throw new ArgumentOutOfRangeException("VehicleCategory", category, null);
 			}
 		}
+
+		public static VehicleCategory Parse(string vehicleCategory)
+		{
+			switch (vehicleCategory) {
+				case "Bus":
+					return VehicleCategory.HeavyBusPrimaryVehicle;
+				case "Tractor":
+					return VehicleCategory.Tractor;
+				case "Rigid Lorry":
+					return VehicleCategory.RigidTruck;
+				default:
+					return VehicleCategory.Unknown;
+			}
+		}
 	}
 }
\ No newline at end of file
diff --git a/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs b/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs
index 1ce46301d1083806294b39577648a8fa06bd35af..dd41bb937f3be38a869bc722fe504e4bbfb78975 100644
--- a/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs
+++ b/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs
@@ -402,156 +402,319 @@ namespace TUGraz.VectoCommon.Resources {
             }
         }
         
+        
+		/// <summary>
+        ///   Looks up a localized string similar to AdBlueDosing.
+        /// </summary>
+        public static string Bus_AdBlueDosing {
+            get {
+                return ResourceManager.GetString("Bus_AdBlueDosing", resourceCulture);
+            }
+        }
+        
         /// <summary>
-        ///   Looks up a localized string similar to ElectricSystem.
+        ///   Looks up a localized string similar to AdjustableAuxiliaryHeater.
         /// </summary>
-        public static string BusAux_ElectricSystem {
+        public static string Bus_AdjustableAuxiliaryHeater {
             get {
-                return ResourceManager.GetString("BusAux_ElectricSystem", resourceCulture);
+                return ResourceManager.GetString("Bus_AdjustableAuxiliaryHeater", resourceCulture);
             }
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to ratio.
+        ///   Looks up a localized string similar to AdjustableCoolantThermostat.
         /// </summary>
-        public static string BusAux_ElectricSystem_Alternator_Ratio_Attr {
+        public static string Bus_AdjustableCoolantThermostat {
             get {
-                return ResourceManager.GetString("BusAux_ElectricSystem_Alternator_Ratio_Attr", resourceCulture);
+                return ResourceManager.GetString("Bus_AdjustableCoolantThermostat", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to AirsuspensionControl.
+        /// </summary>
+        public static string Bus_AirsuspensionControl {
+            get {
+                return ResourceManager.GetString("Bus_AirsuspensionControl", resourceCulture);
             }
         }
         
         /// <summary>
         ///   Looks up a localized string similar to AlternatorTechnology.
         /// </summary>
-        public static string BusAux_ElectricSystem_AlternatorTechnology {
+        public static string Bus_AlternatorTechnology {
             get {
-                return ResourceManager.GetString("BusAux_ElectricSystem_AlternatorTechnology", resourceCulture);
+                return ResourceManager.GetString("Bus_AlternatorTechnology", resourceCulture);
             }
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to ResultCards.
+        ///   Looks up a localized string similar to AuxiliaryHeaterPower.
         /// </summary>
-        public static string BusAux_ElectricSystem_ResultCards {
+        public static string Bus_AuxiliaryHeaterPower {
             get {
-                return ResourceManager.GetString("BusAux_ElectricSystem_ResultCards", resourceCulture);
+                return ResourceManager.GetString("Bus_AuxiliaryHeaterPower", resourceCulture);
             }
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to SmartElectrics.
+        ///   Looks up a localized string similar to Brakelights.
         /// </summary>
-        public static string BusAux_ElectricSystem_SmartElectrics {
+        public static string Bus_Brakelights {
             get {
-                return ResourceManager.GetString("BusAux_ElectricSystem_SmartElectrics", resourceCulture);
+                return ResourceManager.GetString("Bus_Brakelights", resourceCulture);
             }
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to PneumaticSystem.
+        ///   Looks up a localized string similar to CompressorRatio.
         /// </summary>
-        public static string BusAux_PneumaticSystem {
+        public static string Bus_CompressorRatio {
             get {
-                return ResourceManager.GetString("BusAux_PneumaticSystem", resourceCulture);
+                return ResourceManager.GetString("Bus_CompressorRatio", resourceCulture);
             }
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to AdBlueDosing.
+        ///   Looks up a localized string similar to CompressorType.
         /// </summary>
-        public static string BusAux_PneumaticSystem_AdBlueDosing {
+        public static string Bus_CompressorType {
             get {
-                return ResourceManager.GetString("BusAux_PneumaticSystem_AdBlueDosing", resourceCulture);
+                return ResourceManager.GetString("Bus_CompressorType", resourceCulture);
             }
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to AirsuspensionControl.
+        ///   Looks up a localized string similar to Dayrunninglights.
         /// </summary>
-        public static string BusAux_PneumaticSystem_AirsuspensionControl {
+        public static string Bus_Dayrunninglights {
             get {
-                return ResourceManager.GetString("BusAux_PneumaticSystem_AirsuspensionControl", resourceCulture);
+                return ResourceManager.GetString("Bus_Dayrunninglights", resourceCulture);
             }
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to CompressorRatio.
+        ///   Looks up a localized string similar to DoorDriveTechnology.
+        /// </summary>
+        public static string Bus_DoorDriveTechnology {
+            get {
+                return ResourceManager.GetString("Bus_DoorDriveTechnology", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to DoubleGlasing.
+        /// </summary>
+        public static string Bus_DoubleGlasing {
+            get {
+                return ResourceManager.GetString("Bus_DoubleGlasing", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to DriverAC.
+        /// </summary>
+        public static string Bus_DriverAC {
+            get {
+                return ResourceManager.GetString("Bus_DriverAC", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to EngineWasteGasHeatExchanger.
+        /// </summary>
+        public static string Bus_EngineWasteGasHeatExchanger {
+            get {
+                return ResourceManager.GetString("Bus_EngineWasteGasHeatExchanger", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to EntranceHeight.
+        /// </summary>
+        public static string Bus_EntranceHeight {
+            get {
+                return ResourceManager.GetString("Bus_EntranceHeight", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Headlights.
+        /// </summary>
+        public static string Bus_Headlights {
+            get {
+                return ResourceManager.GetString("Bus_Headlights", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to HeatPump.
+        /// </summary>
+        public static string Bus_HeatPump {
+            get {
+                return ResourceManager.GetString("Bus_HeatPump", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to HeightIntegratedBody.
+        /// </summary>
+        public static string Bus_HeighIntegratedBody {
+            get {
+                return ResourceManager.GetString("Bus_HeighIntegratedBody", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Interiorlights.
         /// </summary>
-        public static string BusAux_PneumaticSystem_CompressorRatio {
+        public static string Bus_Interiorlights {
             get {
-                return ResourceManager.GetString("BusAux_PneumaticSystem_CompressorRatio", resourceCulture);
+                return ResourceManager.GetString("Bus_Interiorlights", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to LowEntry.
+        /// </summary>
+        public static string Bus_LowEntry {
+            get {
+                return ResourceManager.GetString("Bus_LowEntry", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to LowerDeck.
+        /// </summary>
+        public static string Bus_LowerDeck {
+            get {
+                return ResourceManager.GetString("Bus_LowerDeck", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to PassengerAC.
+        /// </summary>
+        public static string Bus_PassengerAC {
+            get {
+                return ResourceManager.GetString("Bus_PassengerAC", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to PassengerCount.
+        /// </summary>
+        public static string Bus_PassengerCount {
+            get {
+                return ResourceManager.GetString("Bus_PassengerCount", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Positionlights.
+        /// </summary>
+        public static string Bus_Positionlights {
+            get {
+                return ResourceManager.GetString("Bus_Positionlights", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to ResultCards.
+        /// </summary>
+        public static string Bus_ResultCards {
+            get {
+                return ResourceManager.GetString("Bus_ResultCards", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to SeparateAirDistributionDucts.
+        /// </summary>
+        public static string Bus_SeparateAirDistributionDucts {
+            get {
+                return ResourceManager.GetString("Bus_SeparateAirDistributionDucts", resourceCulture);
             }
         }
         
         /// <summary>
         ///   Looks up a localized string similar to SizeOfAirSupply.
         /// </summary>
-        public static string BusAux_PneumaticSystem_CompressorSize {
+        public static string Bus_SizeOfAirSupply {
             get {
-                return ResourceManager.GetString("BusAux_PneumaticSystem_CompressorSize", resourceCulture);
+                return ResourceManager.GetString("Bus_SizeOfAirSupply", resourceCulture);
             }
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to DoorDriveTechnology.
+        ///   Looks up a localized string similar to SmartElectrics.
         /// </summary>
-        public static string BusAux_PneumaticSystem_DoorDriveTechnology {
+        public static string Bus_Smart_Electrics {
             get {
-                return ResourceManager.GetString("BusAux_PneumaticSystem_DoorDriveTechnology", resourceCulture);
+                return ResourceManager.GetString("Bus_Smart_Electrics", resourceCulture);
             }
         }
         
         /// <summary>
         ///   Looks up a localized string similar to SmartCompressionSystem.
         /// </summary>
-        public static string BusAux_PneumaticSystem_SmartcompressionSystem {
+        public static string Bus_SmartCompressionSystem {
             get {
-                return ResourceManager.GetString("BusAux_PneumaticSystem_SmartcompressionSystem", resourceCulture);
+                return ResourceManager.GetString("Bus_SmartCompressionSystem", resourceCulture);
             }
         }
         
         /// <summary>
         ///   Looks up a localized string similar to SmartRegenerationSystem.
         /// </summary>
-        public static string BusAux_PneumaticSystem_SmartRegenerationSystem {
+        public static string Bus_SmartRegenerationSystem {
             get {
-                return ResourceManager.GetString("BusAux_PneumaticSystem_SmartRegenerationSystem", resourceCulture);
+                return ResourceManager.GetString("Bus_SmartRegenerationSystem", resourceCulture);
             }
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to Entry.
+        ///   Looks up a localized string similar to Status.
+        /// </summary>
+        public static string Bus_Status {
+            get {
+                return ResourceManager.GetString("Bus_Status", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to SystemConfiguration.
         /// </summary>
-        public static string BusAux_ResultCard_Entry {
+        public static string Bus_SystemConfiguration {
             get {
-                return ResourceManager.GetString("BusAux_ResultCard_Entry", resourceCulture);
+                return ResourceManager.GetString("Bus_SystemConfiguration", resourceCulture);
             }
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to Idle.
+        ///   Looks up a localized string similar to UpperDeck.
         /// </summary>
-        public static string BusAux_ResultCard_Idle {
+        public static string Bus_UpperDeck {
             get {
-                return ResourceManager.GetString("BusAux_ResultCard_Idle", resourceCulture);
+                return ResourceManager.GetString("Bus_UpperDeck", resourceCulture);
             }
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to Overrun.
+        ///   Looks up a localized string similar to VehicleLength.
         /// </summary>
-        public static string BusAux_ResultCard_Overrun {
+        public static string Bus_VehicleLength {
             get {
-                return ResourceManager.GetString("BusAux_ResultCard_Overrun", resourceCulture);
+                return ResourceManager.GetString("Bus_VehicleLength", resourceCulture);
             }
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to Traction.
+        ///   Looks up a localized string similar to VehicleWidth.
         /// </summary>
-        public static string BusAux_ResultCard_Traction {
+        public static string Bus_VehicleWidth {
             get {
-                return ResourceManager.GetString("BusAux_ResultCard_Traction", resourceCulture);
+                return ResourceManager.GetString("Bus_VehicleWidth", resourceCulture);
             }
         }
         
@@ -744,6 +907,15 @@ namespace TUGraz.VectoCommon.Resources {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to Transmission.
+        /// </summary>
+        public static string Component_Transmission {
+            get {
+                return ResourceManager.GetString("Component_Transmission", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to Vehicle.
         /// </summary>
@@ -1770,6 +1942,15 @@ namespace TUGraz.VectoCommon.Resources {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to ManufacturerAddressCompletedVehicle.
+        /// </summary>
+        public static string ManufacturerAddressCompletedVehicle {
+            get {
+                return ResourceManager.GetString("ManufacturerAddressCompletedVehicle", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to ManufacturerAddressPrimaryVehicle.
         /// </summary>
@@ -1779,6 +1960,15 @@ namespace TUGraz.VectoCommon.Resources {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to ManufacturerCompletedVehicle.
+        /// </summary>
+        public static string ManufacturerCompletedVehicle {
+            get {
+                return ResourceManager.GetString("ManufacturerCompletedVehicle", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to ManufacturerPrimaryVehicle.
         /// </summary>
@@ -2417,7 +2607,16 @@ namespace TUGraz.VectoCommon.Resources {
                 return ResourceManager.GetString("ResultCard_Entry_SmartCurrent_Attr", resourceCulture);
             }
         }
-        
+		
+		/// <summary>
+        ///   Looks up a localized string similar to status.
+        /// </summary>
+        public static string Result_Status {
+            get {
+                return ResourceManager.GetString("Result_Status", resourceCulture);
+			}
+		}
+		
         /// <summary>
         ///   Looks up a localized string similar to RetarderLossMap.
         /// </summary>
@@ -2454,6 +2653,33 @@ namespace TUGraz.VectoCommon.Resources {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to ApplicationInformation.
+        /// </summary>
+        public static string Tag_ApplicationInformation {
+            get {
+                return ResourceManager.GetString("Tag_ApplicationInformation", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to ResultDataSignature.
+        /// </summary>
+        public static string Tag_ResultDataSignatureNode {
+            get {
+                return ResourceManager.GetString("Tag_ResultDataSignatureNode", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Vehicle.
+        /// </summary>
+        public static string Tag_Vehicle {
+            get {
+                return ResourceManager.GetString("Tag_Vehicle", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to CCUpshiftMinAcceleration.
         /// </summary>
@@ -2949,6 +3175,15 @@ namespace TUGraz.VectoCommon.Resources {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to Clutch.
+        /// </summary>
+        public static string Vehicle_Clutch {
+            get {
+                return ResourceManager.GetString("Vehicle_Clutch", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to Components.
         /// </summary>
@@ -3255,6 +3490,15 @@ namespace TUGraz.VectoCommon.Resources {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to RegisteredClass.
+        /// </summary>
+        public static string Vehicle_RegisteredClass {
+            get {
+                return ResourceManager.GetString("Vehicle_RegisteredClass", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to RetarderRatio.
         /// </summary>
@@ -3345,6 +3589,15 @@ namespace TUGraz.VectoCommon.Resources {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to VehicleCode.
+        /// </summary>
+        public static string Vehicle_VehicleCode {
+            get {
+                return ResourceManager.GetString("Vehicle_VehicleCode", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to VIN.
         /// </summary>
diff --git a/VectoCommon/VectoCommon/Resources/XMLNames.resx b/VectoCommon/VectoCommon/Resources/XMLNames.resx
index e846ad7002ef54fdfa9dcb09d407d79c9b1b3118..dc80551895e785b501f4656447f31a6692e8406f 100644
--- a/VectoCommon/VectoCommon/Resources/XMLNames.resx
+++ b/VectoCommon/VectoCommon/Resources/XMLNames.resx
@@ -207,6 +207,9 @@
   <data name="Component_Gearbox" xml:space="preserve">
     <value>Gearbox</value>
   </data>
+  <data name="Component_Transmission" xml:space="preserve">
+    <value>Transmission</value>
+  </data>
   <data name="Gearbox_TransmissionType" xml:space="preserve">
     <value>TransmissionType</value>
   </data>
@@ -1227,4 +1230,139 @@
   <data name="BusAux_PneumaticSystem_SmartRegenerationSystem" xml:space="preserve">
     <value>SmartRegenerationSystem</value>
   </data>
+  <data name="ManufacturerCompletedVehicle" xml:space="preserve">
+    <value>ManufacturerCompletedVehicle</value>
+  </data>
+  <data name="ManufacturerAddressCompletedVehicle" xml:space="preserve">
+    <value>ManufacturerAddressCompletedVehicle</value>
+  </data>
+  <data name="Vehicle_RegisteredClass" xml:space="preserve">
+    <value>RegisteredClass</value>
+  </data>
+  <data name="Vehicle_VehicleCode" xml:space="preserve">
+    <value>VehicleCode</value>
+  </data>
+  <data name="Bus_LowEntry" xml:space="preserve">
+    <value>LowEntry</value>
+  </data>
+  <data name="Bus_HeighIntegratedBody" xml:space="preserve">
+    <value>HeightIntegratedBody</value>
+  </data>
+  <data name="Bus_VehicleLength" xml:space="preserve">
+    <value>VehicleLength</value>
+  </data>
+  <data name="Bus_VehicleWidth" xml:space="preserve">
+    <value>VehicleWidth</value>
+  </data>
+  <data name="Bus_EntranceHeight" xml:space="preserve">
+    <value>EntranceHeight</value>
+  </data>
+  <data name="Bus_DoorDriveTechnology" xml:space="preserve">
+    <value>DoorDriveTechnology</value>
+  </data>
+  <data name="Bus_LowerDeck" xml:space="preserve">
+    <value>LowerDeck</value>
+  </data>
+  <data name="Bus_UpperDeck" xml:space="preserve">
+    <value>UpperDeck</value>
+  </data>
+  <data name="Bus_Dayrunninglights" xml:space="preserve">
+    <value>Dayrunninglights</value>
+  </data>
+  <data name="Bus_Headlights" xml:space="preserve">
+    <value>Headlights</value>
+  </data>
+  <data name="Bus_Positionlights" xml:space="preserve">
+    <value>Positionlights</value>
+  </data>
+  <data name="Bus_Brakelights" xml:space="preserve">
+    <value>Brakelights</value>
+  </data>
+  <data name="Bus_Interiorlights" xml:space="preserve">
+    <value>Interiorlights</value>
+  </data>
+  <data name="Bus_AlternatorTechnology" xml:space="preserve">
+    <value>AlternatorTechnology</value>
+  </data>
+  <data name="Bus_SystemConfiguration" xml:space="preserve">
+    <value>SystemConfiguration</value>
+  </data>
+  <data name="Bus_AuxiliaryHeaterPower" xml:space="preserve">
+    <value>AuxiliaryHeaterPower</value>
+  </data>
+  <data name="Bus_DoubleGlasing" xml:space="preserve">
+    <value>DoubleGlasing</value>
+  </data>
+  <data name="Bus_HeatPump" xml:space="preserve">
+    <value>HeatPump</value>
+  </data>
+  <data name="Bus_AdjustableAuxiliaryHeater" xml:space="preserve">
+    <value>AdjustableAuxiliaryHeater</value>
+  </data>
+  <data name="Bus_SeparateAirDistributionDucts" xml:space="preserve">
+    <value>SeparateAirDistributionDucts</value>
+  </data>
+  <data name="Bus_CompressorType" xml:space="preserve">
+    <value>CompressorType</value>
+  </data>
+  <data name="Bus_DriverAC" xml:space="preserve">
+    <value>DriverAC</value>
+  </data>
+  <data name="Bus_PassengerAC" xml:space="preserve">
+    <value>PassengerAC</value>
+  </data>
+  <data name="Bus_ResultCards" xml:space="preserve">
+    <value>ResultCards</value>
+  </data>
+  <data name="Tag_Vehicle" xml:space="preserve">
+    <value>Vehicle</value>
+  </data>
+  <data name="Bus_AdjustableCoolantThermostat" xml:space="preserve">
+    <value>AdjustableCoolantThermostat</value>
+  </data>
+  <data name="Bus_EngineWasteGasHeatExchanger" xml:space="preserve">
+    <value>EngineWasteGasHeatExchanger</value>
+  </data>
+  <data name="Bus_SizeOfAirSupply" xml:space="preserve">
+    <value>SizeOfAirSupply</value>
+  </data>
+  <data name="Bus_CompressorRatio" xml:space="preserve">
+    <value>CompressorRatio</value>
+  </data>
+  <data name="Bus_SmartCompressionSystem" xml:space="preserve">
+    <value>SmartCompressionSystem</value>
+  </data>
+  <data name="Bus_SmartRegenerationSystem" xml:space="preserve">
+    <value>SmartRegenerationSystem</value>
+  </data>
+  <data name="Bus_AirsuspensionControl" xml:space="preserve">
+    <value>AirsuspensionControl</value>
+  </data>
+  <data name="Bus_AdBlueDosing" xml:space="preserve">
+    <value>AdBlueDosing</value>
+  </data>
+  <data name="Bus_DoorDriveTechnology" xml:space="preserve">
+    <value>DoorDriveTechnology</value>
+  </data>
+  <data name="Vehicle_Clutch" xml:space="preserve">
+    <value>Clutch</value>
+  </data>
+  <data name="Tag_ApplicationInformation" xml:space="preserve">
+    <value>ApplicationInformation</value>
+  </data>
+  <data name="Tag_ResultDataSignatureNode" xml:space="preserve">
+    <value>ResultDataSignature</value>
+  </data>
+  <data name="Bus_Status" xml:space="preserve">
+    <value>Status</value>
+  </data>
+  <data name="Bus_PassengerCount" xml:space="preserve">
+    <value>PassengerCount</value>
+  </data>
+  <data name="Result_Status" xml:space="preserve">
+    <value>status</value>
+  </data>
+  <data name="Bus_Smart_Electrics" xml:space="preserve">
+    <value>SmartElectrics</value>
+  </data>
 </root>
\ No newline at end of file
diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs
index 22b65685608a1df9904f35a1c22e680853cbeeda..2045185b3aa8dbb912a4d49f1873640e58d5966d 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs
@@ -174,6 +174,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 
 		#region Implementation of IPneumaticSupplyDeclarationData
 
+		public string Clutch { get; }
 		public virtual double Ratio { get { return Body["Aux"]?["PneumaticSupply"]?.GetEx<double>("Ratio") ?? 0.0; } }
 		public virtual string CompressorSize { get {
 			return Body["Aux"]?["PneumaticSupply"]?.GetEx<string>("CompressorSize");
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationAngledriveDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationAngledriveDataProvider.cs
index ad38591df6a23c8add6fff598332340ad4c25d48..dfc920f986a3e4289b3ea6bde190975f80a5a09f 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationAngledriveDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationAngledriveDataProvider.cs
@@ -93,4 +93,26 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 			get { return NAMESPACE_URI; }
 		}
 	}
+
+
+	// ---------------------------------------------------------------------------------------
+
+	public class XMLDeclarationPrimaryVehicleBusAngledriveDataProviderV01 : XMLDeclarationAngledriveDataProviderV10
+	{
+		public new static XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_PRIMARY_BUS_VEHICLE_URI_V01;
+
+		public new const string XSD_TYPE = "AngledriveDataPIFType";
+
+		public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE);
+
+
+		public XMLDeclarationPrimaryVehicleBusAngledriveDataProviderV01(
+			IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile)
+			: base(vehicle, componentNode, sourceFile) { }
+
+		protected override XNamespace SchemaNamespace
+		{
+			get { return NAMESPACE_URI; }
+		}
+	}
 }
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationAxlegearDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationAxlegearDataProvider.cs
index dbaa69e9c385044c127631d9df95678b73ff5b5a..db695af2cd04eb590dcb2cbe70df8f0c3b5447ed 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationAxlegearDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationAxlegearDataProvider.cs
@@ -95,4 +95,25 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 		}
 	}
 
+
+	// ---------------------------------------------------------------------------------------
+
+	public class XMLDeclarationPrimaryVehicleBusAxlegearDataProviderV01 : XMLDeclarationAxlegearDataProviderV10
+	{
+		public new static XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_PRIMARY_BUS_VEHICLE_URI_V01;
+
+		public new const string XSD_TYPE = "AxlegearDataPIFType";
+
+		public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE);
+
+
+		public XMLDeclarationPrimaryVehicleBusAxlegearDataProviderV01(
+			IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) 
+			: base(vehicle, componentNode, sourceFile) { }
+
+		protected override XNamespace SchemaNamespace
+		{
+			get { return NAMESPACE_URI; }
+		}
+	}
 }
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs
index 9712369c87be6464790deccd8c225fa1d7c8ae16..4b5dc14286ca5302bd7c3458b7a6ef48565909d7 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs
@@ -1,8 +1,12 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
 using System.Linq;
+using System.Windows.Forms;
 using System.Xml;
 using System.Xml.Linq;
 using TUGraz.VectoCommon.BusAuxiliaries;
+using Castle.Core.Internal;
+using TUGraz.VectoCommon.BusAuxiliaries;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Resources;
 using TUGraz.VectoCommon.Utils;
@@ -23,7 +27,15 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 
 		public static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE);
 
-		public XMLDeclarationPrimaryBusAuxiliariesDataProviderV26(
+		private const string RATIO_ATTRIBUTE = "ratio";
+		private const string CURRENT_ATTRIBUTE = "current";
+		private const string SMART_CURRENT_ATTRIBUTE = "smartCurrent";
+		private const string IDLE_NODE_NAME = "Idle";
+		private const string TRANSACTION_NODE_NAME = "Traction";
+		private const string OVERRUN_NODE_NAME = "Overrun";
+		
+
+		public XMLDeclarationBusAuxiliariesDataProviderV26(
 			IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) : base(componentNode) { }
 
 		#region Implementation of IBusAuxiliariesDeclarationData
@@ -216,6 +228,33 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 		{
 			get { return false; }
 		}
+					BrakelightsLED = GetBool(XMLNames.Bus_Brakelights),
+					InteriorLightsLED = GetBool(XMLNames.Bus_Interiorlights)
+				};
+			}
+		}
+
+		public IPneumaticSupplyDeclarationData PneumaticSupply { get { return null; } }
+	
+		public IPneumaticConsumersDeclarationData PneumaticConsumers { get { return null;} }
+
+		public IHVACBusAuxiliariesDeclarationData HVACAux
+		{
+			get
+			{
+				var hvac = new HVACBusAuxiliariesDeclarationData
+				{
+					SystemConfiguration = GetString(XMLNames.Bus_SystemConfiguration).ToInt(),
+					CompressorType = new CompressorType(GetString(XMLNames.Bus_DriverAC), GetString(XMLNames.Bus_PassengerAC)),
+					AuxHeaterPower = GetString(XMLNames.Bus_AuxiliaryHeaterPower).ToDouble().SI<Watt>(),
+					DoubleGlasing = GetBool(XMLNames.Bus_DoubleGlasing),
+					HeatPump = GetBool(XMLNames.Bus_HeatPump),
+					AdjustableAuxiliaryHeater = GetBool(XMLNames.Bus_AdjustableAuxiliaryHeater),
+					SeparateAirDistributionDucts = GetBool(XMLNames.Bus_SeparateAirDistributionDucts)
+				};
+				return hvac;
+			}
+		}
 
 		#endregion
 	}
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationComponentsDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationComponentsDataProvider.cs
index 81b820810e18c0b76defe333ac60be0a48f93c80..0b3ad62e0ff87221e59e1fa09b7f02efa586a4c3 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationComponentsDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationComponentsDataProvider.cs
@@ -193,4 +193,89 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 			get { return NAMESPACE_URI; }
 		}
 	}
-}
+
+	// ---------------------------------------------------------------------------------------
+
+
+	public class XMLDeclarationCompleteBusComponentsDataProviderV26 : XMLDeclarationComponentsDataProviderV10, IXMLVehicleComponentsDeclaration
+	{
+		public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V26;
+
+		public new const string XSD_TYPE = "CompletedVehicleComponentsDeclarationType";
+
+		public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE);
+
+		private IBusAuxiliariesDeclarationData _busAuxiliaries;
+
+		public XMLDeclarationCompleteBusComponentsDataProviderV26(
+			IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) : base(
+			vehicle, componentNode, sourceFile)
+		{ }
+
+		IGearboxDeclarationInputData IVehicleComponentsDeclaration.GearboxInputData
+		{
+			get { return null; }
+		}
+		
+		IAuxiliariesDeclarationInputData IVehicleComponentsDeclaration.AuxiliaryInputData
+		{
+			get { return null; }
+		}
+
+		public override IBusAuxiliariesDeclarationData BusAuxiliaries { get { return _busAuxiliaries ?? (_busAuxiliaries = ComponentReader.BusAuxiliariesInputData); } }
+
+		protected override XNamespace SchemaNamespace
+		{
+			get { return NAMESPACE_URI; }
+		}
+	}
+
+
+	// ---------------------------------------------------------------------------------------
+
+
+	public class XMLDeclarationComponentsPrimaryVehicleBusDataProviderV01 : XMLDeclarationComponentsDataProviderV10, IXMLVehicleComponentsDeclaration
+	{
+		public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_PRIMARY_BUS_VEHICLE_URI_V01;
+
+		public new const string XSD_TYPE = "VehicleComponentsPIFType";
+
+		public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE);
+
+		private IBusAuxiliariesDeclarationData _busAuxiliaries;
+
+		
+		public XMLDeclarationComponentsPrimaryVehicleBusDataProviderV01(IXMLDeclarationVehicleData vehicle, XmlNode componentNode,
+			string sourceFile) : base(vehicle, componentNode, sourceFile) { }
+
+		IRetarderInputData IVehicleComponentsDeclaration.RetarderInputData
+		{
+			get { return null; }
+		}
+
+		ITorqueConverterDeclarationInputData IVehicleComponentsDeclaration.TorqueConverterInputData
+		{
+			get { return null; }
+		}
+		
+		IAirdragDeclarationInputData IVehicleComponentsDeclaration.AirdragInputData
+		{
+			get { return null; }
+		}
+		
+		IAuxiliariesDeclarationInputData IVehicleComponentsDeclaration.AuxiliaryInputData
+		{
+			get { return null; }
+		}
+
+		public override IBusAuxiliariesDeclarationData BusAuxiliaries
+		{
+			get { return _busAuxiliaries ?? (_busAuxiliaries = ComponentReader.BusAuxiliariesInputData); }
+		}
+
+		protected override XNamespace SchemaNamespace
+		{
+			get { return NAMESPACE_URI; }
+		}
+	}
+}
\ No newline at end of file
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationEngineDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationEngineDataProvider.cs
index 2d2afbc90f1321f56569f577b73d4c839c9e4603..db992c93b17928b22779b13365304716234b6001 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationEngineDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationEngineDataProvider.cs
@@ -115,7 +115,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 			public virtual FuelType FuelType
 			{
 				get {
-					var value = GetString(XMLNames.Engine_FuelType);
+					var value = GetString(XMLNames.Engine_FuelType).Replace(" ","");
 					if ("LPG".Equals(value, StringComparison.InvariantCultureIgnoreCase)) {
 						return FuelType.LPGPI;
 					}
@@ -468,4 +468,34 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 			#endregion
 		}
 	}
+
+	// ---------------------------------------------------------------------------------------
+
+	public class XMLDeclarationPrimaryVehicleBusEngineDataProviderV01 : XMLDeclarationEngineDataProviderV23
+	{
+
+		public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_PRIMARY_BUS_VEHICLE_URI_V01;
+
+		public new const string XSD_TYPE = "EngineDataPIFType";
+
+		public new static readonly string QUALIFIED_XSD_TYPE =
+			XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE);
+
+		public XMLDeclarationPrimaryVehicleBusEngineDataProviderV01(IXMLDeclarationVehicleData vehicle, XmlNode componentNode,
+			string sourceFile) : base(vehicle, componentNode, sourceFile) { }
+		
+		public override IList<IEngineModeDeclarationInputData> EngineModes
+		{
+			get
+			{
+				return _engineModes ??
+						(_engineModes = new List<IEngineModeDeclarationInputData>() { new XMLSingleFuelEngineMode(BaseNode) });
+			}
+		}
+
+		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 7f0bdbc79b3789917037c3329ec2a4a38e2cd66b..25d2370f8675e50f63ec7cebaec493d264209dc0 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationGearboxDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationGearboxDataProvider.cs
@@ -146,4 +146,23 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 			get { return NAMESPACE_URI; }
 		}
 	}
+
+	// ---------------------------------------------------------------------------------------
+
+	public class XMLDeclarationPrimaryVehicleBusGearboxDataProviderV01 : XMLDeclarationGearboxDataProviderV10
+	{
+		public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_PRIMARY_BUS_VEHICLE_URI_V01;
+
+		public new const string XSD_TYPE = "TransmissionDataPIFType";
+
+		public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE);
+
+		public XMLDeclarationPrimaryVehicleBusGearboxDataProviderV01(IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) 
+			: base(vehicle, componentNode, sourceFile) { }
+
+		protected override XNamespace SchemaNamespace
+		{
+			get { return NAMESPACE_URI; }
+		}
+	}
 }
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationInputDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationInputDataProvider.cs
index 05d479ce6ede43adf12dcca505e200737bde6dff..490086b8c99419d08335ff8453cb2eb5a0ee6d85 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationInputDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationInputDataProvider.cs
@@ -31,11 +31,14 @@
 
 using System.Xml;
 using System.Xml.Linq;
+using Castle.Components.DictionaryAdapter.Xml;
 using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCommon.Resources;
 using TUGraz.VectoCore.InputData.FileIO.XML.Common;
 using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces;
 using TUGraz.VectoCore.Utils;
 using TUGraz.VectoHashing;
+using XmlDocumentType = System.Xml.XmlDocumentType;
 
 namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration
 {
@@ -100,6 +103,108 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration
 
 		public XMLDeclarationInputDataProviderV20(XmlDocument xmlDoc, string fileName) : base(xmlDoc, fileName) { }
 
+
+	}
+
+
+	// ---------------------------------------------------------------------------------------
+
+	public class XMLPrimaryVehicleBusInputDataV01 : AbstractXMLResource, IXMLPrimaryVehicleBusInputData
+	{
+		public static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_PRIMARY_BUS_VEHICLE_NAMESPACE;
+
+		public const string XSD_TYPE = "PrimaryVehicleHeavyBusType";
+
+		public static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE);
+		
+		protected readonly XmlDocument Document;
+		protected IDeclarationJobInputData JobData;
+
+		private IVehicleDeclarationInputData _vehicle;
+		private IApplicationInformation _applicationInformation;
+		private IResultsInputData _resultsInputData;
+		
+
+		public XMLPrimaryVehicleBusInputDataV01(XmlDocument xmlDoc, string fileName) : base(xmlDoc, fileName)
+		{
+			Document = xmlDoc;
+			SourceType = DataSourceType.XMLFile;
+		}
+
+
+		#region IPrimaryVehicleInputDataProvider interface
+
+		public IVehicleDeclarationInputData Vehicle
+		{
+			get { return _vehicle ?? (_vehicle = Reader.JobData.Vehicle); }
+		}
+
+		public DigestData ResultDataHash
+		{
+			get { return Reader.GetDigestData(GetNode(XMLNames.Tag_ResultDataSignatureNode)); }
+		}
+
+		public IApplicationInformation ApplicationInformation
+		{
+			get { return _applicationInformation ?? (_applicationInformation = Reader.ApplicationInformation); }
+		}
+
+		public DigestData ManufacturerHash
+		{
+			get { return Reader.GetDigestData(Document.LastChild.LastChild); }
+		}
+
+		public IResultsInputData ResultsInputData
+		{
+			get { return _resultsInputData ?? (_resultsInputData = Reader.ResultsInputData); }
+		}
+
+		#endregion
+
+
+
+		#region IXMLPrimaryVehicleBusInputData interface 
+
+		public IXMLDeclarationPrimaryVehicleBusInputDataReader Reader { protected get; set; }
+
+		public XmlNode ResultsNode
+		{
+			get { return GetNode(XMLNames.Report_Results); }
+		}
+
+		public XmlNode ApplicationInformationNode
+		{
+			get { return GetNode(XMLNames.Tag_ApplicationInformation); }
+		}
+
+		#endregion
+
+
+		#region AbstractXMLResource class
+
+		protected override XNamespace SchemaNamespace
+		{
+			get { return NAMESPACE_URI; }
+		}
+
+		public override DataSource DataSource
+		{
+			get { return new DataSource { SourceFile = SourceFile, SourceVersion = "", SourceType = SourceType }; }
+		}
+
+		protected override DataSourceType SourceType { get; }
+
+		#endregion
+
+		public virtual IDeclarationJobInputData JobInputData
+		{
+			get { return JobData ?? (JobData = Reader.JobData); }
+		}
 		
 	}
+
+
+
+
+
 }
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationJobInputDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationJobInputDataProvider.cs
index 239a4b413b870d41ecf8ef09b1b3d781219282b3..621ce2b10d1b5ff29148c615e372d68355c1ec9a 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationJobInputDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationJobInputDataProvider.cs
@@ -85,4 +85,61 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 			get { return NAMESPACE_URI; }
 		}
 	}
+
+	// ---------------------------------------------------------------------------------------
+
+	public class XMLDeclarationPrimaryVehicleBusJobInputDataProviderV01 : AbstractXMLResource, IXMLPrimaryVehicleBusJobInputData
+	{
+
+		public static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_PRIMARY_BUS_VEHICLE_URI_V01;
+
+		public const string XSD_TYPE = "PrimaryVehicleHeavyBusDataType";
+
+		public static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE);
+
+
+		protected IVehicleDeclarationInputData _vehicle;
+
+
+		public XMLDeclarationPrimaryVehicleBusJobInputDataProviderV01(XmlNode node, IXMLPrimaryVehicleBusInputData inputProvider,
+			string fileName) : base(node, fileName)
+		{
+			InputData = inputProvider;
+		}
+
+		protected override XNamespace SchemaNamespace
+		{
+			get { return NAMESPACE_URI; }
+		}
+
+		public string ShiftStrategy
+		{
+			get { return null; }
+		}
+
+		public bool SavedInDeclarationMode
+		{
+			get { return true; }
+		}
+
+		public string JobName
+		{
+			get { return Vehicle.Identifier; }
+		}
+		
+		protected override DataSourceType SourceType
+		{
+			get { return DataSourceType.XMLFile; }
+		}
+
+		public IVehicleDeclarationInputData Vehicle
+		{
+			get { return _vehicle ?? (_vehicle = Reader.CreateVehicle); }
+		}
+
+		public IXMLJobDataReader Reader { protected get; set; }
+		public IXMLPrimaryVehicleBusInputData InputData { get; }
+	}
+
+
 }
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationPrimaryVehicleBusApplicationInformationDataProviderV01.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationPrimaryVehicleBusApplicationInformationDataProviderV01.cs
new file mode 100644
index 0000000000000000000000000000000000000000..3a2197108fabe44fd2824a3833826b69eeaaa5d9
--- /dev/null
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationPrimaryVehicleBusApplicationInformationDataProviderV01.cs
@@ -0,0 +1,38 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml;
+using System.Xml.Linq;
+using Castle.Components.DictionaryAdapter.Xml;
+using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCommon.Resources;
+using TUGraz.VectoCore.InputData.FileIO.XML.Common;
+using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces;
+using TUGraz.VectoCore.Utils;
+
+namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
+{
+	public class XMLDeclarationPrimaryVehicleBusApplicationInformationDataProviderV01 : AbstractXMLType, IXMLApplicationInformationData
+	{
+		public static XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_PRIMARY_BUS_VEHICLE_URI_V01;
+
+		public const string XSD_TYPE = "ApplicationInformationPIFType";
+
+		public static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE);
+
+		public XMLDeclarationPrimaryVehicleBusApplicationInformationDataProviderV01(XmlNode applicationNode) 
+			: base(applicationNode) { }
+
+		public string SimulationToolVersion
+		{
+			get { return GetString(XMLNames.Report_ApplicationInfo_SimulationToolVersion); }
+		}
+
+		public DateTime Date
+		{
+			get { return XmlConvert.ToDateTime(GetString(XMLNames.Report_ApplicationInfo_Date), XmlDateTimeSerializationMode.Utc); }
+		}
+	}
+}
\ No newline at end of file
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationPrimaryVehicleBusResultsInputDataProviderV01.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationPrimaryVehicleBusResultsInputDataProviderV01.cs
new file mode 100644
index 0000000000000000000000000000000000000000..39f4078eb1c8d4af430488f1512122893620eb12
--- /dev/null
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationPrimaryVehicleBusResultsInputDataProviderV01.cs
@@ -0,0 +1,87 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml;
+using System.Xml.Linq;
+using Castle.Components.DictionaryAdapter.Xml;
+using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCommon.Resources;
+using TUGraz.VectoCommon.Utils;
+using TUGraz.VectoCore.InputData.FileIO.XML.Common;
+using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces;
+using TUGraz.VectoCore.InputData.Impl;
+using TUGraz.VectoCore.Utils;
+
+namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
+{
+	public class XMLDeclarationPrimaryVehicleBusResultsInputDataProviderV01 : AbstractXMLType, IXMLResultsInputData
+	{
+		public static XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_PRIMARY_BUS_VEHICLE_URI_V01;
+
+		public const string XSD_TYPE = "ResultsPIFType";
+
+		public static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE);
+
+		private XmlNode _resultsNode;
+
+		public XMLDeclarationPrimaryVehicleBusResultsInputDataProviderV01(XmlNode resultsNode) : base(resultsNode)
+		{
+			_resultsNode = resultsNode;
+		}
+		public string Status
+		{
+			get { return GetString(XMLNames.Bus_Status); }
+		}
+
+		public IList<IResult> Results
+		{
+			get { return ReadResults(); }
+		}
+		
+
+		private IList<IResult> ReadResults()
+		{
+			if (_resultsNode == null || _resultsNode?.ChildNodes.Count == 0)
+				return null;
+
+			var results = new List<IResult>();
+
+			foreach (XmlNode resultNode in _resultsNode.ChildNodes) {
+				if(resultNode.Name == XMLNames.Report_Result_Result)
+					results.Add(GetResult(resultNode));
+			}
+			
+			return results;
+		}
+
+		private IResult GetResult(XmlNode xmlNode)
+		{
+			var resultStatus = GetAttribute(xmlNode, XMLNames.Result_Status);
+			var vehicleGroup = GetString(XMLNames.Report_Vehicle_VehicleGroup, xmlNode);
+			var mission = GetString(XMLNames.Report_Result_Mission, xmlNode);
+			var simulationNode = GetNode(XMLNames.Report_ResultEntry_SimulationParameters, xmlNode);
+			var simulationParams = GetSimulationParameter(simulationNode);
+
+			return new Result {
+				ResultStatus = resultStatus,
+				Mission = mission,
+				VehicleGroup = vehicleGroup,
+				SimulationParameter = simulationParams
+			};
+		}
+
+
+		private ISimulationParameter GetSimulationParameter(XmlNode xmlNode)
+		{
+			return new SimulationParameter
+			{
+				TotalVehicleMass = GetString(XMLNames.Report_ResultEntry_TotalVehicleMass, xmlNode).ToDouble().SI<Kilogram>(),
+				Payload = GetString(XMLNames.Report_Result_Payload, xmlNode).ToDouble().SI<Kilogram>(),
+				PassengerCount =  GetString(XMLNames.Bus_PassengerCount, xmlNode).ToInt(),
+				FuelMode =  GetString(XMLNames.Report_Result_FuelMode, xmlNode)
+			};
+		}
+	}
+}
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs
index 9c094ac3593246f342428824bf1fda138ea0d35e..58be885d890d4844c5ce7398ae3dee9401722980 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs
@@ -31,6 +31,8 @@
 
 using System;
 using System.Collections.Generic;
+using System.Runtime.InteropServices;
+using System.Windows.Forms.VisualStyles;
 using System.Xml;
 using System.Xml.Linq;
 using TUGraz.VectoCommon.BusAuxiliaries;
@@ -38,6 +40,7 @@ using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Resources;
 using TUGraz.VectoCommon.Utils;
+using TUGraz.VectoCore.InputData.FileIO.XML.Common;
 using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces;
 using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader;
 using TUGraz.VectoCore.InputData.Impl;
@@ -680,4 +683,300 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 
 		#endregion
 	}
+	public class XMLDeclarationCompletedBusDataProviderV26 : XMLDeclarationVehicleDataProviderV20
+	{
+		public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V26;
+
+		public new const string XSD_TYPE = "CompletedVehicleDeclarationType";
+
+		public new static readonly string QUALIFIED_XSD_TYPE =
+			XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE);
+
+		public XMLDeclarationCompletedBusDataProviderV26(
+			IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) : base(jobData, xmlNode, sourceFile)
+		{
+			SourceType = DataSourceType.XMLEmbedded;
+		}
+
+
+		#region Overrides of AbstractCommonComponentType
+
+		public override string Manufacturer { get { return GetString(XMLNames.ManufacturerCompletedVehicle); } }
+
+		public override string ManufacturerAddress { get { return GetString(XMLNames.ManufacturerAddressCompletedVehicle); } }
+
+		#endregion
+
+
+		#region Overrides of XMLDeclarationVehicleDataProviderV10
+
+		public override string RegisteredClass { get { return GetString(XMLNames.Vehicle_RegisteredClass); } }
+
+		public override VehicleCode VehicleCode { get { return GetString(XMLNames.Vehicle_VehicleCode).ParseEnum<VehicleCode>(); } }
+
+		//TechnicalPermissibleMaximumLadenMass
+		public override Kilogram GrossVehicleMassRating { get { return GetDouble(XMLNames.TPMLM).SI<Kilogram>(); } }
+
+		public override TankSystem? TankSystem
+		{
+			get
+			{
+				return GetString(XMLNames.Vehicle_NgTankSystem).ParseEnum<TankSystem>();
+			}
+		}
+
+		public override int NumberOfPassengersLowerDeck
+		{
+			get
+			{
+				var node = GetNode(XMLNames.Bus_LowerDeck);
+				return XmlConvert.ToInt32(node.InnerText);
+			}
+		}
+
+		public override int NuberOfPassengersUpperDeck
+		{
+			get
+			{
+				var node = GetNode(XMLNames.Bus_UpperDeck);
+				return XmlConvert.ToInt32(node.InnerText);
+			}
+		}
+
+		//HeightIntegratedBody
+		public override Meter Height { get { return GetDouble(XMLNames.Bus_HeighIntegratedBody).SI<Meter>(); }}
+
+		//VehicleLength
+		public override Meter Length { get { return GetDouble(XMLNames.Bus_VehicleLength).SI<Meter>(); } }
+
+		//VehicleWidth
+		public override Meter Width { get { return GetDouble(XMLNames.Bus_VehicleWidth).SI<Meter>(); } }
+
+		public override XmlElement PTONode
+		{
+			get { return null; }
+		}
+		
+		#endregion
+
+		public bool LowEntry { get { return GetBool(XMLNames.Bus_LowEntry); } }
+
+		public Meter EntranceHeight { get { return GetDouble(XMLNames.Bus_EntranceHeight).SI<Meter>(); } }
+
+		public string DoorDriveTechnology { get { return GetString(XMLNames.Bus_DoorDriveTechnology); } }
+
+
+		#region Overrides of AbstractXMLResource
+
+		protected override XNamespace SchemaNamespace
+		{
+			get { return NAMESPACE_URI; }
+		}
+
+		protected override DataSourceType SourceType { get; }
+
+		#endregion
+	}
+
+
+	// ---------------------------------------------------------------------------------------
+
+	public class XMLDeclarationPrimaryVehicleBusDataProviderV01 : AbstractCommonComponentType, IXMLDeclarationVehicleData
+	{
+		public  static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_PRIMARY_BUS_VEHICLE_URI_V01;
+
+		public  const string XSD_TYPE = "VehiclePIFType";
+
+		public  static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE);
+
+		protected IXMLPrimaryVehicleBusJobInputData BusJobData;
+		private XmlElement _adasNode;
+		private IAdvancedDriverAssistantSystemDeclarationInputData _adas;
+		private XmlElement _componentNode;
+		private IVehicleComponentsDeclaration _components;
+		
+
+
+		public XMLDeclarationPrimaryVehicleBusDataProviderV01(IXMLPrimaryVehicleBusJobInputData busJobData, XmlNode xmlNode, string sourceFile) 
+			: base(xmlNode, sourceFile)
+		{
+			BusJobData = busJobData;
+		}
+
+		#region Overrides of AbstractCommonComponentType
+
+		public override string Manufacturer
+		{
+			get { return GetString(XMLNames.ManufacturerPrimaryVehicle); }
+		}
+
+		public string ManufacturerAddress
+		{
+			get { return GetString(XMLNames.ManufacturerAddressPrimaryVehicle); }
+		}
+
+		#endregion
+
+		
+		#region IXMLDeclarationVehicleData interface
+
+		public string VIN { get { return GetString(XMLNames.Vehicle_VIN); } }
+		
+		public VehicleCategory VehicleCategory
+		{
+			get { return   VehicleCategoryHelper.Parse(GetString(XMLNames.Vehicle_VehicleCategory)); }
+		}
+
+		public AxleConfiguration AxleConfiguration
+		{
+			get { return AxleConfigurationHelper.Parse(GetString(XMLNames.Vehicle_AxleConfiguration)); }
+		}
+
+		//TechnicalPermissibleMaximumLadenMass
+		public Kilogram GrossVehicleMassRating
+		{
+			get { return GetDouble(XMLNames.TPMLM).SI<Kilogram>(); } 
+		}
+
+		//IdlingSpeed
+		public PerSecond EngineIdleSpeed
+		{
+			get { return GetDouble(XMLNames.Engine_IdlingSpeed).SI<PerSecond>(); } 
+		}
+
+		public RetarderType RetarderType
+		{
+			get { return GetString(XMLNames.Vehicle_RetarderType).ParseEnum<RetarderType>(); }
+		}
+
+		public double RetarderRatio
+		{
+			get { return GetDouble(XMLNames.Vehicle_RetarderRatio); }
+		}
+		
+		public AngledriveType AngledriveType
+		{
+			get { return GetString(XMLNames.Vehicle_AngledriveType).ParseEnum<AngledriveType>(); }
+		}
+
+		public bool ZeroEmissionVehicle
+		{
+			get { return GetBool(XMLNames.Vehicle_ZeroEmissionVehicle); }
+		}
+
+		public XmlElement ADASNode
+		{
+			get
+			{
+				return _adasNode ?? (_adasNode = GetNode(XMLNames.Vehicle_ADAS, required: false) as XmlElement);
+			}
+		}
+
+		public IXMLADASReader ADASReader { get; set; }
+
+		public IAdvancedDriverAssistantSystemDeclarationInputData ADAS
+		{
+			get { return _adas ?? (_adas =  ADASReader.ADASInputData); }
+		}
+
+
+		public IList<ITorqueLimitInputData> TorqueLimits
+		{
+			get { return ReadTorqueLimits(); }
+		}
+		
+		public XmlElement ComponentNode
+		{
+			get
+			{
+				if (ExemptedVehicle)
+				{
+					return null;
+				}
+
+				return _componentNode ?? (_componentNode = GetNode(XMLNames.Vehicle_Components) as XmlElement);
+			}
+		}
+		public IXMLComponentReader ComponentReader { get; set; }
+
+		public IVehicleComponentsDeclaration Components
+		{
+			get
+			{
+				return _components ?? (_components = ComponentReader.ComponentInputData);
+			}
+		}
+
+
+		#region  Non seeded Properties
+
+		public string Identifier { get; }
+		public bool ExemptedVehicle { get; }
+		public LegislativeClass LegislativeClass { get; }
+		public int NuberOfPassengersUpperDeck { get; }
+		public int NumberOfPassengersLowerDeck { get; }
+		public Kilogram CurbMassChassis { get; }
+		public bool VocationalVehicle { get; }
+		public bool SleeperCab { get; }
+		public TankSystem? TankSystem { get; }
+
+		public bool HybridElectricHDV { get; }
+		public bool DualFuelVehicle { get; }
+		public Watt MaxNetPower1 { get; }
+		public Watt MaxNetPower2 { get; }
+		public string RegisteredClass { get; }
+		public VehicleCode VehicleCode { get; }
+		public FloorType FloorType { get; }
+		public bool Articulated { get; }
+		public Meter Height { get; }
+		public Meter Length { get; }
+		public Meter Width { get; }
+
+		public XmlElement PTONode { get; }
+		public IXMLPTOReader PTOReader { get; set; }
+		public IPTOTransmissionInputData PTOTransmissionInputData { get; }
+
+
+		#endregion
+
+
+		#endregion
+		
+		#region Overrides of AbstractXMLResource
+
+		protected override XNamespace SchemaNamespace
+		{
+			get { return NAMESPACE_URI; }
+		}
+
+		protected override DataSourceType SourceType
+		{
+			get { return DataSourceType.XMLFile; }
+		}
+
+		#endregion
+
+
+		private IList<ITorqueLimitInputData> ReadTorqueLimits()
+		{
+			var torqueLimits = new List<ITorqueLimitInputData>();
+			var limits = GetNodes(new[] { XMLNames.Vehicle_TorqueLimits, XMLNames.Vehicle_TorqueLimits_Entry });
+			foreach (XmlNode current in limits)
+			{
+				if (current.Attributes != null)
+				{
+					torqueLimits.Add(
+						new TorqueLimitInputData()
+						{
+							Gear = GetAttribute(current, XMLNames.Vehicle_TorqueLimits_Entry_Gear_Attr).ToInt(),
+							MaxTorque = GetAttribute(current, XMLNames.Vehicle_TorqueLimits_Entry_MaxTorque_Attr)
+								.ToDouble().SI<NewtonMeter>()
+						});
+				}
+			}
+
+			return torqueLimits;
+		}
+	}
+
 }
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLGearData.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLGearData.cs
index 637a7314e7c781c968178b98296a2a81763b50ba..828a61afa93cd5dda46b58af8954ed3a7cbf0028 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLGearData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLGearData.cs
@@ -123,4 +123,23 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 			get { return NAMESPACE_URI; }
 		}
 	}
+
+	// ---------------------------------------------------------------------------------------
+
+	public class XMLPrimaryVehicleBusTransmissionDataV01 : XMLGearDataV10
+	{
+		public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_PRIMARY_BUS_VEHICLE_URI_V01;
+
+		public new const string XSD_TYPE = "TransmissionGearPIFType";
+
+		public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE);
+
+		public XMLPrimaryVehicleBusTransmissionDataV01(XmlNode gearNode, string sourceFile) 
+			: base(gearNode, sourceFile) { }
+
+		protected override XNamespace SchemaNamespace
+		{
+			get { return NAMESPACE_URI; }
+		}
+	}
 }
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Factory/IDeclarationInjectFactory.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Factory/IDeclarationInjectFactory.cs
index 3738d5c86b73c4daa68c7559b32c78f15e38cd77..29b6f4f34dea764d2112e2a79ee402052b272f57 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Factory/IDeclarationInjectFactory.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Factory/IDeclarationInjectFactory.cs
@@ -1,4 +1,5 @@
 using System.Xml;
+using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces;
 using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader;
 
@@ -16,11 +17,24 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Factory
 
 		IXMLDeclarationInputData CreateInputProvider(string version, XmlDocument xmlDoc, string fileName);
 
+		IXMLPrimaryVehicleBusInputData CreatePrimaryVehicleBusInputProvider(string version, XmlDocument xmlDoc, string fileName);
+
+
 		IXMLDeclarationJobInputData CreateJobData(
 			string version, XmlNode node, IXMLDeclarationInputData inputProvider, string fileName);
 
+		IXMLPrimaryVehicleBusJobInputData CreatePrimaryVehicleJobData(
+			string version, XmlNode node, IXMLPrimaryVehicleBusInputData inputProvider, string fileName);
+
+
+
 		IXMLDeclarationVehicleData CreateVehicleData(
 			string version, IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile);
+		
+		IXMLDeclarationVehicleData CreatePrimaryVehicleData(
+			string version, IXMLPrimaryVehicleBusJobInputData busJobData, XmlNode xmlNode, string sourceFile);
+
+
 
 		IXMLVehicleComponentsDeclaration CreateComponentData(
 			string version, IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile);
@@ -74,9 +88,17 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Factory
 		IXMLDeclarationInputDataReader CreateInputReader(
 			string version, IXMLDeclarationInputData inputData, XmlNode baseNode);
 
+		IXMLDeclarationPrimaryVehicleBusInputDataReader CreatePrimaryVehicleBusInputReader(
+			string version, IXMLPrimaryVehicleBusInputData inputData, XmlNode baseNode);
+
+
 		IXMLJobDataReader CreateJobReader(
 			string version, IXMLDeclarationJobInputData jobData, XmlNode jobNode);
 
+		IXMLJobDataReader CreatePrimaryVehicleJobReader(
+			string version, IXMLPrimaryVehicleBusJobInputData busJobData, XmlNode jobNode);
+
+		
 		IXMLComponentReader CreateComponentReader(
 			string version, IXMLDeclarationVehicleData vehicle, XmlNode componentsNode);
 
@@ -91,6 +113,11 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Factory
 		IXMLAxleReader CreateAxleReader(string version, IXMLDeclarationVehicleData vehicle, XmlNode componentsNode);
 		IXMLGearboxReader CreateGearboxReader(string version, IXMLDeclarationVehicleData vehicle, XmlNode componentsNode);
 		IXMLAuxiliaryReader CreateAuxiliariesReader(string version, IXMLDeclarationVehicleData vehicle, XmlNode componentsNode);
+		
+		IXMLApplicationInformationData CreateApplicationInformationReader(string version, XmlNode applicationNode);
+
+		IXMLResultsInputData CreateResultsInputDataReader(string version, XmlNode resultsNode);
+
 	}
 
 }
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/IXMLDeclarationInputDataReader.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/IXMLDeclarationInputDataReader.cs
index cc0921b0ee696de8ea7974484597a72b96ac3265..44b0aeeebcb2129dc55f6a8ffd8ba8ca64cb32a8 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/IXMLDeclarationInputDataReader.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/IXMLDeclarationInputDataReader.cs
@@ -1,3 +1,4 @@
+using System.Xml;
 using TUGraz.VectoCommon.InputData;
 
 namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration
@@ -6,4 +7,13 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration
 	{
 		IDeclarationJobInputData JobData { get; }
 	}
+
+	public interface IXMLDeclarationPrimaryVehicleBusInputDataReader : IXMLDeclarationInputDataReader
+	{
+		IResultsInputData ResultsInputData { get; }
+
+		DigestData GetDigestData(XmlNode xmlNode);
+
+		IApplicationInformation ApplicationInformation { get; }
+	}
 }
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLApplicationInformationData.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLApplicationInformationData.cs
new file mode 100644
index 0000000000000000000000000000000000000000..e0a0285fad3f47ededa38d7a47c7367fe19474ba
--- /dev/null
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLApplicationInformationData.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using TUGraz.VectoCommon.InputData;
+
+namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces
+{
+	public interface IXMLApplicationInformationData : IApplicationInformation
+	{
+	}
+}
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLDeclarationInputData.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLDeclarationInputData.cs
index 074178188367155536473846cbd6e77cb06d1429..1ad7902920c9e411d0a1a7f3e55786997e8df3e0 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLDeclarationInputData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLDeclarationInputData.cs
@@ -1,3 +1,4 @@
+using System.Xml;
 using TUGraz.VectoCommon.InputData;
 
 namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces
@@ -6,4 +7,15 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces
 	{
 		IXMLDeclarationInputDataReader Reader { set; }
 	}
+
+
+
+	public interface IXMLPrimaryVehicleBusInputData : IPrimaryVehicleInputDataProvider, IXMLResource
+	{
+		IXMLDeclarationPrimaryVehicleBusInputDataReader Reader { set; }
+
+		XmlNode ResultsNode { get; }
+
+		XmlNode ApplicationInformationNode { get; }
+	}
 }
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLDeclarationJobInputData.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLDeclarationJobInputData.cs
index 671e52b5ecf2ec26594fdcc76cb24f21090eec2f..ae8db5654e30bd77e9db3ed831c2b2bfb8427010 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLDeclarationJobInputData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLDeclarationJobInputData.cs
@@ -9,4 +9,11 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces
 
 		IXMLDeclarationInputData InputData { get; }
 	}
+
+	public interface IXMLPrimaryVehicleBusJobInputData : IDeclarationJobInputData, IXMLResource
+	{
+		IXMLJobDataReader Reader { set; }
+
+		IXMLPrimaryVehicleBusInputData InputData { get; }
+	}
 }
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLResultsInputData.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLResultsInputData.cs
new file mode 100644
index 0000000000000000000000000000000000000000..2f108bc810fd7de6c186ee2d0e8434e3ac390695
--- /dev/null
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLResultsInputData.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using TUGraz.VectoCommon.InputData;
+
+namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces
+{
+	public interface IXMLResultsInputData : IResultsInputData
+	{
+	}
+}
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV26InjectModule.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV26InjectModule.cs
index 814dd3f262300d50eb50a4a42b69ff827df9dc81..d2a946a414c4cdb9f521cf0bb662b866d5d027a3 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV26InjectModule.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV26InjectModule.cs
@@ -15,12 +15,17 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.NinjectModules {
 			Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationPrimaryBusVehicleDataProviderV26>()
 												.Named(XMLDeclarationPrimaryBusVehicleDataProviderV26.QUALIFIED_XSD_TYPE);
 
+			Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationCompletedBusDataProviderV26>()
+												.Named(XMLDeclarationCompletedBusDataProviderV26.QUALIFIED_XSD_TYPE);
+
 
 			Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationPrimaryBusComponentsDataProviderV26>()
 													.Named(XMLDeclarationPrimaryBusComponentsDataProviderV26.QUALIFIED_XSD_TYPE);
 
 			Bind<IXMLBusAuxiliariesDeclarationData>().To<XMLDeclarationPrimaryBusAuxiliariesDataProviderV26>()
 													.Named(XMLDeclarationPrimaryBusAuxiliariesDataProviderV26.QUALIFIED_XSD_TYPE);
+			Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationCompleteBusComponentsDataProviderV26>()
+													.Named(XMLDeclarationCompleteBusComponentsDataProviderV26.QUALIFIED_XSD_TYPE);
 
 
 			Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationMediumLorryVehicleDataProviderV26>()
@@ -32,8 +37,14 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.NinjectModules {
 			Bind<IXMLGearboxDeclarationInputData>().To<XMLDeclarationGearboxDataProviderV26>()
 													.Named(XMLDeclarationGearboxDataProviderV26.QUALIFIED_XSD_TYPE);
 
+			Bind<IXMLBusAuxiliariesDeclarationData>().To<XMLDeclarationCompleteBusAuxiliariesDataProviderV26>()
+													.Named(XMLDeclarationCompleteBusAuxiliariesDataProviderV26.QUALIFIED_XSD_TYPE);
+
+
 			Bind<IXMLComponentReader>().To<XMLComponentReaderV26>().Named(XMLComponentReaderV26.QUALIFIED_XSD_TYPE);
 
+			Bind<IXMLComponentReader>().To<XMLComponentReaderV26>().Named(XMLComponentReaderV26.QUALIFIED_COMPLETE_XSD_TYPE);
+
 			Bind<IXMLComponentReader>().To<XMLComponentReaderNoAxlegearV26>().Named(XMLComponentReaderNoAxlegearV26.QUALIFIED_XSD_TYPE);
 
 			Bind<IXMLGearboxReader>().To<XMLGearboxReaderV26>().Named(XMLGearboxReaderV26.QUALIFIED_XSD_TYPE);
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationPrimaryVehicleBusV01InjectModule.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationPrimaryVehicleBusV01InjectModule.cs
new file mode 100644
index 0000000000000000000000000000000000000000..cdc5f22125a2cc296e5e39fa9809642e42ab9e96
--- /dev/null
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationPrimaryVehicleBusV01InjectModule.cs
@@ -0,0 +1,72 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Ninject.Modules;
+using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider;
+using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces;
+using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader;
+using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl;
+
+namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.NinjectModules
+{
+	public class XMLDeclarationPrimaryVehicleBusV01InjectModule : NinjectModule
+	{
+		#region Overrides of NinjectModule
+		
+		public override void Load()
+		{
+
+			Bind<IXMLPrimaryVehicleBusInputData>().To<XMLPrimaryVehicleBusInputDataV01>()
+				.Named(XMLPrimaryVehicleBusInputDataV01.QUALIFIED_XSD_TYPE);
+
+			Bind<IXMLPrimaryVehicleBusJobInputData>().To<XMLDeclarationPrimaryVehicleBusJobInputDataProviderV01>()
+				.Named(XMLDeclarationPrimaryVehicleBusJobInputDataProviderV01.QUALIFIED_XSD_TYPE);
+
+			Bind<IXMLJobDataReader>().To<XMLJobDataPrimaryVehicleReaderV01>()
+				.Named(XMLJobDataPrimaryVehicleReaderV01.QUALIFIED_XSD_TYPE);
+			
+			Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationPrimaryVehicleBusDataProviderV01>()
+				.Named(XMLDeclarationPrimaryVehicleBusDataProviderV01.QUALIFIED_XSD_TYPE);
+			
+			Bind<IXMLDeclarationPrimaryVehicleBusInputDataReader>().To<XMLPrimaryVehicleBusInputReaderV01>()
+				.Named(XMLPrimaryVehicleBusInputReaderV01.QUALIFIED_XSD_TYPE);
+			
+			Bind<IXMLComponentReader>().To<XMLPrimaryVehicleBusComponentReaderV01>()
+				.Named(XMLPrimaryVehicleBusComponentReaderV01.QUALIFIED_XSD_TYPE);
+			
+			Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationComponentsPrimaryVehicleBusDataProviderV01>()
+				.Named(XMLDeclarationComponentsPrimaryVehicleBusDataProviderV01.QUALIFIED_XSD_TYPE);
+
+			Bind<IXMLEngineDeclarationInputData>().To<XMLDeclarationPrimaryVehicleBusEngineDataProviderV01>()
+				.Named(XMLDeclarationPrimaryVehicleBusEngineDataProviderV01.QUALIFIED_XSD_TYPE);
+			
+			Bind<IXMLGearboxDeclarationInputData>().To<XMLDeclarationPrimaryVehicleBusGearboxDataProviderV01>()
+				.Named(XMLDeclarationPrimaryVehicleBusGearboxDataProviderV01.QUALIFIED_XSD_TYPE);
+
+			Bind<IXMLGearboxReader>().To<XMLPrimaryVehicleBusComponentReaderV01>()
+				.Named(XMLPrimaryVehicleBusComponentReaderV01.GEARBOX_READER_QUALIFIED_XSD_TYPE);
+
+			Bind<IXMLGearData>().To<XMLPrimaryVehicleBusTransmissionDataV01>()
+				.Named(XMLPrimaryVehicleBusTransmissionDataV01.QUALIFIED_XSD_TYPE);
+			
+			Bind<IXMLAngledriveInputData>().To<XMLDeclarationPrimaryVehicleBusAngledriveDataProviderV01>()
+				.Named(XMLDeclarationPrimaryVehicleBusAngledriveDataProviderV01.QUALIFIED_XSD_TYPE);
+
+			Bind<IXMLAxleGearInputData>().To<XMLDeclarationPrimaryVehicleBusAxlegearDataProviderV01>().Named(
+				XMLDeclarationPrimaryVehicleBusAxlegearDataProviderV01.QUALIFIED_XSD_TYPE);
+
+			Bind<IXMLApplicationInformationData>().To<XMLDeclarationPrimaryVehicleBusApplicationInformationDataProviderV01>()
+				.Named(XMLDeclarationPrimaryVehicleBusApplicationInformationDataProviderV01.QUALIFIED_XSD_TYPE);
+
+			Bind<IXMLResultsInputData>().To<XMLDeclarationPrimaryVehicleBusResultsInputDataProviderV01>()
+				.Named(XMLDeclarationPrimaryVehicleBusResultsInputDataProviderV01.QUALIFIED_XSD_TYPE);
+
+
+		}
+
+		#endregion
+
+	}
+}
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationReaderInjectModule.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationReaderInjectModule.cs
index 1830ebea3f4b01618d16ef63c49c1511c85065bf..8b483fe54979043bfd526b54b8ea1f56d6176142 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationReaderInjectModule.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationReaderInjectModule.cs
@@ -21,6 +21,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration
 				new XMLDeclarationInputDataV22InjectModule(),
 				new XMLDeclarationInputDataV23InjectModule(),
 				new XMLDeclarationInputDataV26InjectModule(),
+				new XMLDeclarationPrimaryVehicleBusV01InjectModule(), 
 			});
 
 			#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 1da79730898eb938c75c8d0afa4a537763cc5513..223f774548ddc57782a48e0154f81d19ab79f287 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLComponentReader.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLComponentReader.cs
@@ -1,4 +1,6 @@
 using System;
+using System.Runtime.Remoting.Messaging;
+using System.Windows.Forms.VisualStyles;
 using System.Xml;
 using System.Xml.Linq;
 using Ninject;
@@ -48,7 +50,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 		public XMLComponentReaderV10(IXMLDeclarationVehicleData vehicle, XmlNode componentsNode) : base(
 			vehicle, componentsNode)
 		{
-			if (componentsNode == null) {
+			if (componentsNode == null)
+			{
 				throw new VectoException("component node must not be null!");
 			}
 
@@ -64,22 +67,26 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 
 		public virtual IAirdragDeclarationInputData AirdragInputData
 		{
-			get {
+			get
+			{
 				return _airdragInputData ?? (_airdragInputData = CreateComponent(XMLNames.Component_AirDrag, AirdragCreator, true));
 			}
 		}
 
 		public virtual IGearboxDeclarationInputData GearboxInputData
 		{
-			get {
+			get
+			{
 				return _gearboxInputData ?? (_gearboxInputData = CreateComponent(XMLNames.Component_Gearbox, GearboxCreator));
 			}
 		}
 
 		public virtual ITorqueConverterDeclarationInputData TorqueConverterInputData
 		{
-			get {
-				if (_torqueConverterInputData == null && BaseNode.SelectSingleNode(XMLHelper.QueryLocalName(XMLNames.Component_TorqueConverter)) == null) {
+			get
+			{
+				if (_torqueConverterInputData == null && BaseNode.SelectSingleNode(XMLHelper.QueryLocalName(XMLNames.Component_TorqueConverter)) == null)
+				{
 					return null;
 				}
 				return _torqueConverterInputData ?? (_torqueConverterInputData = CreateComponent(
@@ -92,9 +99,12 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 		public virtual ITransmissionInputData CreateGear(XmlNode gearNode)
 		{
 			var version = XMLHelper.GetXsdType(gearNode.SchemaInfo.SchemaType);
-			try {
+			try
+			{
 				return Factory.CreateGearData(version, gearNode, ParentComponent.DataSource.SourceFile);
-			} catch (Exception e) {
+			}
+			catch (Exception e)
+			{
 				var gearNumber = gearNode.Attributes?.GetNamedItem(XMLNames.Gearbox_Gear_GearNumber_Attr).InnerText;
 				throw new VectoException(
 					"Unsupported XML Version! Node: {0} Gear: {1} Version: {2}", e, gearNode.LocalName, gearNumber, version);
@@ -104,9 +114,12 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 		public virtual IAuxiliaryDeclarationInputData CreateAuxiliary(XmlNode auxNode)
 		{
 			var version = XMLHelper.GetXsdType(auxNode.ParentNode.ParentNode.SchemaInfo.SchemaType);
-			try {
+			try
+			{
 				return Factory.CreateAuxiliaryData(version, auxNode, Vehicle);
-			} catch (Exception e) {
+			}
+			catch (Exception e)
+			{
 				throw new VectoException("Unsupported XML version! Node: {0} version: {1}", e, auxNode.LocalName, version);
 			}
 		}
@@ -114,11 +127,14 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 		public virtual IAxleDeclarationInputData CreateAxle(XmlNode axleNode)
 		{
 			var version = XMLHelper.GetXsdType(axleNode.SchemaInfo.SchemaType);
-			try {
+			try
+			{
 				var axle = Factory.CreateAxleData(version, Vehicle, axleNode, (Vehicle as IXMLResource).DataSource.SourceFile);
 				axle.Reader = Factory.CreateAxleReader(version, Vehicle, axleNode);
 				return axle;
-			} catch (Exception e) {
+			}
+			catch (Exception e)
+			{
 				var axleNumber = axleNode.Attributes?.GetNamedItem(XMLNames.AxleWheels_Axles_Axle_AxleNumber_Attr).InnerText;
 				throw new VectoException(
 					"Unsupported XML Version! Node: {0} Axle: {1} Version: {2}", e, axleNode.LocalName, axleNumber, version);
@@ -128,7 +144,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 
 		public virtual IAxleGearInputData AxleGearInputData
 		{
-			get {
+			get
+			{
 				return _axlegearInputData ?? (_axlegearInputData = CreateComponent(XMLNames.Component_Axlegear, AxlegearCreator));
 			}
 		}
@@ -136,7 +153,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 
 		public virtual IAngledriveInputData AngledriveInputData
 		{
-			get {
+			get
+			{
 				return _angledriveInputData ??
 						(_angledriveInputData = CreateComponent(XMLNames.Component_Angledrive, AngledriveCreator, true));
 			}
@@ -150,7 +168,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 
 		public virtual IAuxiliariesDeclarationInputData AuxiliaryData
 		{
-			get {
+			get
+			{
 				return _auxiliaryInputData ??
 						(_auxiliaryInputData = CreateComponent(XMLNames.Component_Auxiliaries, AuxiliaryCreator));
 			}
@@ -159,7 +178,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 
 		public virtual IRetarderInputData RetarderInputData
 		{
-			get {
+			get
+			{
 				return _retarderInputData ??
 						(_retarderInputData = CreateComponent(XMLNames.Component_Retarder, RetarderCreator, true));
 			}
@@ -168,7 +188,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 
 		public virtual IAxlesDeclarationInputData AxlesDeclarationInputData
 		{
-			get {
+			get
+			{
 				return _axlesInputData ?? (_axlesInputData = CreateComponent(XMLNames.Component_AxleWheels, AxleWheelsCreator));
 			}
 		}
@@ -183,7 +204,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 		protected virtual IAirdragDeclarationInputData AirdragCreator(
 			string version, XmlNode componentNode, string sourceFile)
 		{
-			if (version == null) {
+			if (version == null)
+			{
 				return new XMLDeclarationAirdragDataProviderV10(Vehicle, null, sourceFile);
 			}
 
@@ -201,7 +223,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 		protected virtual ITorqueConverterDeclarationInputData TorqueConverterCreator(
 			string version, XmlNode componentNode, string sourceFile)
 		{
-			if (version == null) {
+			if (version == null)
+			{
 				return new XMLDeclarationTorqueConverterDataProviderV10(Vehicle, componentNode, sourceFile);
 			}
 
@@ -215,7 +238,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 
 		protected virtual IAngledriveInputData AngledriveCreator(string version, XmlNode componentNode, string sourceFile)
 		{
-			if (version == null) {
+			if (version == null)
+			{
 				return new XMLDeclarationAngledriveDataProviderV10(Vehicle, componentNode, sourceFile);
 			}
 
@@ -229,7 +253,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 
 		protected virtual IRetarderInputData RetarderCreator(string version, XmlNode componentNode, string sourceFile)
 		{
-			if (version == null) {
+			if (version == null)
+			{
 				return new XMLDeclarationRetarderDataProviderV10(Vehicle, componentNode, sourceFile);
 			}
 
@@ -287,7 +312,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 
 
 		public XMLComponentReaderV20(IXMLDeclarationVehicleData vehicle, XmlNode componentsNode) : base(
-			vehicle, componentsNode) { }
+			vehicle, componentsNode)
+		{ }
 	}
 
 	// ---------------------------------------------------------------------------------------
@@ -295,16 +321,78 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 	public class XMLComponentReaderV26 : XMLComponentReaderV20
 	{
 		public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V26;
+
 		public new const string XSD_TYPE = "PrimaryVehicleComponentsDeclarationType";
 		public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE);
 
+		public const string COMPLETE_XSD_TYPE = "CompletedVehicleComponentsDeclarationType";
+		public static readonly string QUALIFIED_COMPLETE_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, COMPLETE_XSD_TYPE);
+
+
 		protected IBusAuxiliariesDeclarationData _busAuxInputData;
 
 
 		public XMLComponentReaderV26(IXMLDeclarationVehicleData vehicle, XmlNode componentsNode) : base(
-			vehicle, componentsNode) { }
+			vehicle, componentsNode)
+		{ }
+
+		public override IBusAuxiliariesDeclarationData BusAuxiliariesInputData { get { return _busAuxInputData ?? (_busAuxInputData = CreateComponent(XMLNames.Component_Auxiliaries, BusAuxCreator)); } }
+
+		protected virtual IBusAuxiliariesDeclarationData BusAuxCreator(string version, XmlNode componentNode, string sourceFile)
+		{
+			return Factory.CreateBusAuxiliaires(version, Vehicle, componentNode, sourceFile);
+		}
+	}
+
+
+	public class XMLPrimaryVehicleBusComponentReaderV01 : XMLComponentReaderV20
+	{
+		public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_PRIMARY_BUS_VEHICLE_URI_V01;
+
+		public new const string XSD_TYPE = "VehicleComponentsPIFType";
+		public new const string GEARBOX_READER_TYPE = "TransmissionDataPIFType";
+
+		public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE);
+		public new static readonly string GEARBOX_READER_QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI, GEARBOX_READER_TYPE);
+
+		protected IBusAuxiliariesDeclarationData _busAuxInputData;
 
-		public override IBusAuxiliariesDeclarationData BusAuxiliariesInputData { get { return  _busAuxInputData ?? (_busAuxInputData = CreateComponent(XMLNames.Component_Auxiliaries, BusAuxCreator)); } }
+
+		public XMLPrimaryVehicleBusComponentReaderV01(IXMLDeclarationVehicleData vehicle, XmlNode componentsNode)
+			: base(vehicle, componentsNode) { }
+
+		public override IGearboxDeclarationInputData GearboxInputData
+		{
+			get
+			{
+				return _gearboxInputData ?? (_gearboxInputData = CreateComponent(XMLNames.Component_Transmission, GearboxCreator));
+			}
+		}
+		
+		public override IRetarderInputData RetarderInputData
+		{
+			get { return null; }
+		}
+		
+		public override ITorqueConverterDeclarationInputData TorqueConverterInputData
+		{
+			get { return null; }
+		}
+		
+		public override IAirdragDeclarationInputData AirdragInputData
+		{
+			get { return null; }
+		}
+		
+		public override IAuxiliariesDeclarationInputData AuxiliaryData
+		{
+			get { return null; }
+		}
+		
+		public override IBusAuxiliariesDeclarationData BusAuxiliariesInputData
+		{
+			get { return _busAuxInputData ?? (_busAuxInputData = CreateComponent(XMLNames.Component_Auxiliaries, BusAuxCreator)); }
+		}
 
 		protected virtual IBusAuxiliariesDeclarationData BusAuxCreator(string version, XmlNode componentNode, string sourceFile)
 		{
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationInputReader.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationInputReader.cs
index 7262a7d5422ebb3b86bd7f47bb10182c0c9cb1ee..6008ba605ea5fa687067642d837e38763d2afb29 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationInputReader.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationInputReader.cs
@@ -5,6 +5,7 @@ using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Resources;
 using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Factory;
 using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces;
+using TUGraz.VectoCore.InputData.Impl;
 using TUGraz.VectoCore.Utils;
 
 namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
@@ -58,7 +59,88 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 
 		public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE);
 
-		public XMLDeclarationInputReaderV20(IXMLDeclarationInputData inputData, XmlNode baseNode) : base(inputData, baseNode) { }
+		public XMLDeclarationInputReaderV20(IXMLDeclarationInputData inputData, XmlNode baseNode) : base(inputData,
+			baseNode)
+		{
+
+		}
 	}
 
+
+	// ---------------------------------------------------------------------------------------
+
+	public class XMLPrimaryVehicleBusInputReaderV01 : AbstractComponentReader, IXMLDeclarationPrimaryVehicleBusInputDataReader
+	{
+
+		public static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_PRIMARY_BUS_VEHICLE_NAMESPACE;
+
+		public const string XSD_TYPE = "PrimaryVehicleHeavyBusType";
+
+		public static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE);
+		
+
+		protected XmlNode JobNode;
+		protected IDeclarationJobInputData _jobData;
+		protected IXMLPrimaryVehicleBusInputData _primaryInputData;
+		protected IApplicationInformation _applicationInformation;
+		protected IResultsInputData _resultsInputData;
+
+		[Inject]
+		public IDeclarationInjectFactory Factory { protected get; set; }
+
+		
+		public XMLPrimaryVehicleBusInputReaderV01(IXMLPrimaryVehicleBusInputData inputData, XmlNode baseNode) : base(inputData,  baseNode)
+		{
+			JobNode =  baseNode;
+			_primaryInputData = inputData;
+		}
+
+		public IDeclarationJobInputData JobData
+		{
+			get
+			{
+				return _jobData ?? (_jobData = CreateComponent(XMLNames.VectoPrimaryVehicleReport, JobCreator));
+			}
+		}
+
+
+		protected  IDeclarationJobInputData JobCreator(string version, XmlNode node, string arg3)
+		{
+			var job = Factory.CreatePrimaryVehicleJobData(version, BaseNode, _primaryInputData,
+				(_primaryInputData as IXMLResource).DataSource.SourceFile);
+			job.Reader = Factory.CreatePrimaryVehicleJobReader(version, job, JobNode);
+			return job;
+		}
+		
+
+		public IResultsInputData ResultsInputData
+		{
+			get{ return _resultsInputData ?? 
+						(_resultsInputData = CreateComponent(XMLNames.Report_Results, ResultsInputDataCreator)); }
+		}
+		
+		protected IResultsInputData ResultsInputDataCreator(string version, XmlNode node, string arg3)
+		{
+			return Factory.CreateResultsInputDataReader(version, node);
+		}
+		
+
+		public DigestData GetDigestData(XmlNode xmlNode)
+		{
+			return xmlNode == null ? null : new DigestData(xmlNode);
+		}
+		
+
+		protected IApplicationInformation ApplicationCreator(string version, XmlNode node, string agr3)
+		{
+			return Factory.CreateApplicationInformationReader(version, node);
+		}
+		
+
+		public IApplicationInformation ApplicationInformation
+		{
+			get { return _applicationInformation ?? 
+						(_applicationInformation = CreateComponent(XMLNames.Tag_ApplicationInformation, ApplicationCreator)); }
+		}
+	}
 }
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 c8e39abe71ee84777eb086e94ceadb583222b828..74bc6a042f69b200b348ba8f5b354f23e2c8e12d 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLJobDataReader.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLJobDataReader.cs
@@ -3,6 +3,7 @@ using System.Xml.Linq;
 using Ninject;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Resources;
+using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider;
 using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Factory;
 using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces;
 using TUGraz.VectoCore.Utils;
@@ -104,4 +105,45 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 			return vehicle;
 		}
 	}
+
+
+	// ---------------------------------------------------------------------------------------
+
+	public class XMLJobDataPrimaryVehicleReaderV01 : AbstractComponentReader, IXMLJobDataReader
+	{
+
+		public static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_PRIMARY_BUS_VEHICLE_URI_V01;
+
+		public const string XSD_TYPE = "PrimaryVehicleHeavyBusDataType";
+
+		public static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE);
+
+
+		[Inject]
+		public IDeclarationInjectFactory Factory { protected get; set; }
+
+		protected IVehicleDeclarationInputData _vehicle;
+
+		private readonly IXMLPrimaryVehicleBusJobInputData _primaryBusJobData;
+		
+		public XMLJobDataPrimaryVehicleReaderV01(IXMLPrimaryVehicleBusJobInputData busJobData, XmlNode jobNode) 
+			: base(busJobData, jobNode)
+		{
+			_primaryBusJobData = busJobData;
+		}
+		
+		public IVehicleDeclarationInputData CreateVehicle
+		{
+			get { return _vehicle ?? (_vehicle = CreateComponent(XMLNames.Component_Vehicle, VehicleCreator)); }
+		}
+
+		protected IVehicleDeclarationInputData VehicleCreator(string version, XmlNode vehicleNode, string sourceFile)
+		{
+			var vehicle = Factory.CreatePrimaryVehicleData(version, _primaryBusJobData, vehicleNode, sourceFile);
+			vehicle.ComponentReader = GetReader(vehicle, vehicle.ComponentNode, Factory.CreateComponentReader);
+			vehicle.ADASReader = GetReader(vehicle, vehicle.ADASNode, Factory.CreateADASReader);
+			
+			return vehicle;
+		}
+	}
 }
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/XMLInputDataFactory.cs b/VectoCore/VectoCore/InputData/FileIO/XML/XMLInputDataFactory.cs
index bdfe21bbdc3d4feafc6702bd6e943f74ccd6b321..9ed6cdf680b9278cdc9e02573153c9710c67c328 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/XMLInputDataFactory.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/XMLInputDataFactory.cs
@@ -105,11 +105,15 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML
 				throw new VectoException("unknown xml file! {0}", xmlDoc.DocumentElement.LocalName);
 			}
 
+
+
 			new XMLValidator(xmlDoc, null, XMLValidator.CallBackExceptionOnError).ValidateXML(documentType.Value);
 
-			switch (documentType.Value) {
+			switch (documentType.Value)
+			{
 				case XmlDocumentType.DeclarationJobData: return ReadDeclarationJob(xmlDoc, source);
 				case XmlDocumentType.EngineeringJobData: return ReadEngineeringJob(xmlDoc, source);
+				case XmlDocumentType.PrimaryVehicleBusOutputData: return ReadPrimaryVehicleDeclarationJob(xmlDoc, source);
 				case XmlDocumentType.EngineeringComponentData:
 				case XmlDocumentType.DeclarationComponentData:
 				case XmlDocumentType.ManufacturerReport:
@@ -139,5 +143,20 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML
 				throw new VectoException("Failed to read Declaration job version {0}", e, versionNumber);
 			}
 		}
+
+		private IPrimaryVehicleInputDataProvider ReadPrimaryVehicleDeclarationJob(XmlDocument xmlDoc, string source)
+		{
+			var versionNumber = XMLHelper.GetXsdType(xmlDoc.DocumentElement?.SchemaInfo.SchemaType);
+			try {
+				var input = DeclarationFactory.CreatePrimaryVehicleBusInputProvider(versionNumber, xmlDoc, source);
+				input.Reader = DeclarationFactory.CreatePrimaryVehicleBusInputReader(versionNumber, input, xmlDoc.DocumentElement);
+				return input;
+			}
+			catch (Exception e) {
+				throw new VectoException("Failed to read Declaration job version {0}", e, versionNumber);
+			}
+		}
+
+
 	}
 }
diff --git a/VectoCore/VectoCore/InputData/Impl/InputData.cs b/VectoCore/VectoCore/InputData/Impl/InputData.cs
index e636829275d12a412dc28ae41d19f3763178b7af..d4d0fbfff2599ec1d8e50d4c8647e3d4b85cf85f 100644
--- a/VectoCore/VectoCore/InputData/Impl/InputData.cs
+++ b/VectoCore/VectoCore/InputData/Impl/InputData.cs
@@ -31,9 +31,11 @@
 
 using System;
 using System.Collections.Generic;
+using TUGraz.VectoCommon.BusAuxiliaries;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
+using TUGraz.VectoCore.Models.Declaration;
 
 namespace TUGraz.VectoCore.InputData.Impl
 {
@@ -203,6 +205,14 @@ namespace TUGraz.VectoCore.InputData.Impl
 		#endregion
 	}
 
+	public class ResultCardDeclarationInputData : IResultCardDeclarationInputData
+	{
+		public IList<IResultCardEntry> Idle { get; internal set; }
+		public IList<IResultCardEntry> Traction { get; internal set; }
+		public IList<IResultCardEntry> Overrun { get; internal set; }
+	}
+
+
 	public class ResultCardEntry : IResultCardEntry
 	{
 		public ResultCardEntry(Ampere current, Ampere smartCurrent)
@@ -218,4 +228,100 @@ namespace TUGraz.VectoCore.InputData.Impl
 
 		#endregion
 	}
+
+	public class ElectricConsumersDeclarationData : IElectricConsumersDeclarationData
+	{
+		public bool InteriorLightsLED { get; internal set; }
+		public bool DayrunninglightsLED { get; internal set; }
+		public bool PositionlightsLED { get; internal set; }
+		public bool HeadlightsLED { get; internal set; }
+		public bool BrakelightsLED { get; internal set; }
+	}
+
+	public class ElectricSupplyDeclarationData : IElectricSupplyDeclarationData
+	{
+		public IList<IAlternatorDeclarationInputData> Alternators { get; internal set; }
+		public IResultCardDeclarationInputData ResultCards { get; internal set; }
+		public bool SmartElectrics { get; internal set; }
+	}
+
+
+	public class HVACBusAuxiliariesDeclarationData : IHVACBusAuxiliariesDeclarationData
+	{
+		public bool AdjustableAuxiliaryHeater { get; internal set; }
+
+		public bool AdjustableCoolantThermostat { get; internal set; }
+
+		public Watt AuxHeaterPower { get; internal set; }
+
+		public ICompressorType CompressorType { get; internal set; }
+		
+		public bool DoubleGlasing { get; internal set; }
+
+		public bool EngineWasteGasHeatExchanger { get; internal set; }
+
+		public bool HeatPump { get; internal set; }
+
+		public bool SeparateAirDistributionDucts { get; internal set; }
+
+		public int SystemConfiguration { get; internal set; }
+	}
+
+	public class CompressorType : ICompressorType
+	{
+		public string DriverAC { get; }
+		public string PassengerAC { get; }
+		public CompressorType(string driverAC, string passengerAC)
+		{
+			DriverAC = driverAC;
+			PassengerAC = passengerAC;
+		}
+	}
+
+	public class PneumaticConsumersDeclarationData : IPneumaticConsumersDeclarationData
+	{
+		public ConsumerTechnology AirsuspensionControl { get; internal set; }
+		public ConsumerTechnology AdBlueDosing { get; internal set; }
+		public ConsumerTechnology DoorDriveTechnology { get; internal set; }
+	}
+
+
+	public class PneumaticSupplyDeclarationData : IPneumaticSupplyDeclarationData
+	{
+		public string Clutch { get; internal set; }
+		public double Ratio { get; internal set; }
+		public string CompressorSize { get; internal set; }
+		public bool SmartAirCompression { get; internal set; }
+		public bool SmartRegeneration { get; internal set; }
+	}
+
+
+	public class ResultInputData : IResultsInputData
+	{
+		public string Status { get; internal set; }
+
+		public IList<IResult> Results { get; internal set; }
+	}
+	
+	public class Result : IResult
+	{
+		public string ResultStatus { get; internal set; }
+		public string VehicleGroup { get; internal set; }
+		public string Mission { get; internal set; }
+		public ISimulationParameter SimulationParameter { get; internal set; }
+	}
+
+	public class SimulationParameter : ISimulationParameter
+	{
+		public Kilogram TotalVehicleMass { get; internal set; }
+		public Kilogram Payload { get; internal set; }
+		public int PassengerCount { get; internal set; }
+		public string FuelMode { get; internal set; }
+	}
+
+	public class ApplicationInformation : IApplicationInformation
+	{
+		public string SimulationToolVersion { get; internal set; }
+		public DateTime Date { get; internal set; }
+	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.2.6_Buses.xsd b/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.2.6_Buses.xsd
index 07e7ca455602c0ec9b01da2652a032936502cd98..73a1be6cd18121b9ba84bb31832ed5e42e35151f 100644
--- a/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.2.6_Buses.xsd
+++ b/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.2.6_Buses.xsd
@@ -282,6 +282,17 @@
 										</xs:simpleType>
 									</xs:element>
 								</xs:sequence>
+											</xs:element>
+											<xs:element name="Overrun">
+												<xs:complexType>
+													<xs:sequence>
+														<xs:element name="Entry" type="tns:ResultCardEntryType" minOccurs="2" maxOccurs="unbounded"/>
+													</xs:sequence>
+												</xs:complexType>
+											</xs:element>
+										</xs:sequence>
+									</xs:complexType>
+								</xs:element>
 							</xs:sequence>
 						</xs:complexType>
 					</xs:element>
@@ -621,6 +632,26 @@
 			<xs:enumeration value="mechanically"/>
 		</xs:restriction>
 	</xs:simpleType>
+	<xs:complexType name="ResultCardEntryType">
+		<xs:attribute name="current" type="v1.0:Double2" use="required"/>
+		<xs:attribute name="smartCurrent" type="v1.0:Double2" use="required"/>
+	</xs:complexType>
+	<xs:simpleType name="PneumaticSystemTechnologyType">
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="Small"/>
+			<xs:enumeration value="Medium Supply 1-stage"/>
+			<xs:enumeration value="Medium Supply 2-stage"/>
+			<xs:enumeration value="Large Supply 1-stage"/>
+			<xs:enumeration value="Large Supply 2-stage"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="PneumaticSystemClutchTypeType">
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="none"/>
+			<xs:enumeration value="visco"/>
+			<xs:enumeration value="mechanically"/>
+		</xs:restriction>
+	</xs:simpleType>
 	<xs:complexType name="ResultCardsType">
 		<xs:sequence>
 			<xs:element name="Idle">
diff --git a/VectoCore/VectoCore/Utils/XMLDefinitions.cs b/VectoCore/VectoCore/Utils/XMLDefinitions.cs
index 2fc4028572e9003774a1c7bd5b10cdec93c4de76..29093bdd30c30deb687a7cbd2d4238190221bf74 100644
--- a/VectoCore/VectoCore/Utils/XMLDefinitions.cs
+++ b/VectoCore/VectoCore/Utils/XMLDefinitions.cs
@@ -1,5 +1,6 @@
 using System;
 using System.Collections.Generic;
+using System.Xml.Linq;
 
 namespace TUGraz.VectoCore.Utils
 {
@@ -7,12 +8,14 @@ namespace TUGraz.VectoCore.Utils
 	public enum XmlDocumentType
 	{
 		DeclarationJobData = 1 << 1,
+		PrimaryVehicleBusOutputData = 1 << 2,
 		DeclarationComponentData = 1 << 3,
 		EngineeringJobData = 1 << 4,
 		EngineeringComponentData = 1 << 5,
 		ManufacturerReport = 1 << 6,
 		CustomerReport = 1 << 7,
-		MonitoringReport = 1 << 8,
+		MonitoringReport = 1 << 8
+
 	}
 
 	
@@ -52,7 +55,6 @@ namespace TUGraz.VectoCore.Utils
 
 		public const string DECLARATION_DEFINITIONS_NAMESPACE_URI_V26 = DECLARATION_NAMESPACE + ":DEV:v2.6";
 
-
 		public const string DECLARATION_INPUT_NAMESPACE = "urn:tugraz:ivt:VectoAPI:DeclarationInput";
 
 		public const string DECLARATION_INPUT_NAMESPACE_URI_V10 = DECLARATION_INPUT_NAMESPACE + ":v1.0";
@@ -61,6 +63,11 @@ namespace TUGraz.VectoCore.Utils
 
 //		public const string DECLARATION_COMPONENT_NAMESPACE_URI_V10 = "urn:tugraz:ivt:VectoAPI:DeclarationComponent:v1.0";
 
+		public const string DECLARATION_PRIMARY_BUS_VEHICLE_NAMESPACE = "urn:tugraz:ivt:VectoAPI:DeclarationOutput:PrimaryVehicleInformation";
+
+		public const string DECLARATION_PRIMARY_BUS_VEHICLE_URI_V01 =
+			DECLARATION_PRIMARY_BUS_VEHICLE_NAMESPACE + ":HeavyBus:v0.1";
+
 
 		public const string DECLARATION_MANUFACTURER_REPORT_V05 = "urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.5";
 
@@ -77,6 +84,7 @@ namespace TUGraz.VectoCore.Utils
 
 		private static Dictionary<XmlDocumentType, string> schemaFilenames = new Dictionary<XmlDocumentType, string>() {
 			{XmlDocumentType.DeclarationJobData, "VectoDeclarationJob.xsd"},
+			{XmlDocumentType.PrimaryVehicleBusOutputData, "VectoOutputPrimaryVehicleInformation.xsd"},
 			{XmlDocumentType.DeclarationComponentData, "VectoDeclarationComponent.xsd"},
 			{XmlDocumentType.EngineeringJobData, "VectoEngineeringJob.xsd" },
 			{XmlDocumentType.EngineeringComponentData, "VectoEngineeringComponent.xsd" },
@@ -85,6 +93,7 @@ namespace TUGraz.VectoCore.Utils
 			{XmlDocumentType.MonitoringReport , "VectoMonitoring.xsd"},
 		};
 
+		public static XNamespace DECLARATION_OUTPUT_PRIMARY_HEAVY_BUS = "urn:tugraz:ivt:VectoAPI:DeclarationOutput:PrimaryVehicleInformation:HeavyBus:v0.1";
 
 
 		public static string GetSchemaFilename(XmlDocumentType type)
diff --git a/VectoCore/VectoCore/Utils/XMLHelper.cs b/VectoCore/VectoCore/Utils/XMLHelper.cs
index 64abf035b0b0a064fd8314ac1360fab5c2f8ff5e..e87178fbb5c6da4a79d4744cb7d339d9f4353ae6 100644
--- a/VectoCore/VectoCore/Utils/XMLHelper.cs
+++ b/VectoCore/VectoCore/Utils/XMLHelper.cs
@@ -53,6 +53,7 @@ namespace TUGraz.VectoCore.Utils
 				case "VectoInputDeclaration": return XmlDocumentType.DeclarationJobData;
 				case "VectoInputEngineering": return XmlDocumentType.EngineeringJobData;
 				case "VectoComponentEngineering": return XmlDocumentType.EngineeringComponentData;
+				case "VectoOutputPrimaryVehicle": return XmlDocumentType.PrimaryVehicleBusOutputData;
 			}
 
 			return null;
diff --git a/VectoCore/VectoCore/VectoCore.csproj b/VectoCore/VectoCore/VectoCore.csproj
index 5039ccc04333ff7fa2cecdfa399f56b70d5fe654..0c2b8ef23b2395234a8fe8164a1395c7e0cdd3c5 100644
--- a/VectoCore/VectoCore/VectoCore.csproj
+++ b/VectoCore/VectoCore/VectoCore.csproj
@@ -147,6 +147,7 @@
     <Compile Include="InputData\FileIO\XML\Common\AbstractXMLResource.cs" />
     <Compile Include="InputData\FileIO\XML\Common\AbstractXMLType.cs" />
     <Compile Include="InputData\FileIO\XML\Declaration\DataProvider\XMLAuxiliaryDeclarationDataProvider.cs" />
+    <Compile Include="InputData\FileIO\XML\Declaration\DataProvider\XMLDeclarationPrimaryVehicleBusApplicationInformationDataProviderV01.cs" />
     <Compile Include="InputData\FileIO\XML\Declaration\DataProvider\XMLDeclarationBusAuxiliariesDataProvider.cs" />
     <Compile Include="InputData\FileIO\XML\Declaration\DataProvider\XMLDeclarationADASDataProvider.cs" />
     <Compile Include="InputData\FileIO\XML\Declaration\DataProvider\XMLDeclarationAirdragDataProvider.cs" />
@@ -164,8 +165,10 @@
     <Compile Include="InputData\FileIO\XML\Declaration\DataProvider\XMLDeclarationTorqueConverterDataProvider.cs" />
     <Compile Include="InputData\FileIO\XML\Declaration\DataProvider\XMLDeclarationTyreDataProvider.cs" />
     <Compile Include="InputData\FileIO\XML\Declaration\DataProvider\XMLGearData.cs" />
+    <Compile Include="InputData\FileIO\XML\Declaration\DataProvider\XMLDeclarationPrimaryVehicleBusResultsInputDataProviderV01.cs" />
     <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLAirdragDeclarationInputData.cs" />
     <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLAngledriveInputData.cs" />
+    <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLApplicationInformationData.cs" />
     <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLAuxiliariesDeclarationInputData.cs" />
     <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLAxleDeclarationInputData.cs" />
     <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLAxleGearInputData.cs" />
@@ -176,6 +179,7 @@
     <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLGearboxDeclarationInputData.cs" />
     <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLGearData.cs" />
     <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLPTOTransmissionInputData.cs" />
+    <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLResultsInputData.cs" />
     <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLRetarderInputData.cs" />
     <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLTorqueConverterDeclarationInputData.cs" />
     <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLTyreDeclarationInputData.cs" />
@@ -185,6 +189,7 @@
     <Compile Include="InputData\FileIO\XML\Declaration\NinjectModules\XMLDeclarationInputDataV22InjectModule.cs" />
     <Compile Include="InputData\FileIO\XML\Declaration\NinjectModules\XMLDeclarationInputDataV23InjectModule.cs" />
     <Compile Include="InputData\FileIO\XML\Declaration\NinjectModules\XMLDeclarationInputDataV26InjectModule.cs" />
+    <Compile Include="InputData\FileIO\XML\Declaration\NinjectModules\XMLDeclarationPrimaryVehicleBusV01InjectModule.cs" />
     <Compile Include="InputData\FileIO\XML\Declaration\Reader\Impl\AbstractComponentReader.cs" />
     <Compile Include="InputData\FileIO\XML\Declaration\Reader\Impl\XMLADASReader.cs" />
     <Compile Include="InputData\FileIO\XML\Declaration\Reader\Impl\XMLComponentReader.cs" />
diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.6_Buses/example_heavyBus_PIF.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.6_Buses/example_heavyBus_PIF.xml
index d6e66333da26bea5dbffe7cb854bd743355b1515..1030f2f24a6f1c89f3d02862d8690c5c054be8ab 100644
--- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.6_Buses/example_heavyBus_PIF.xml
+++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.6_Buses/example_heavyBus_PIF.xml
@@ -1,23 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<tns:VectoOutputPrimaryVehicle 
-	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
-	xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:PrimaryVehicleInformation" 
-	xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:PrimaryVehicleInformation" 
-	xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" 
-	xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3" 
-	xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" 
-	xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" 
-	xmlns:pif="urn:tugraz:ivt:VectoAPI:PrimaryVehicleInformation" 
-	xmlns:pbus="urn:tugraz:ivt:VectoAPI:DeclarationOutput:PrimaryVehicleInformation:HeavyBus:v0.1" 
-	xmlns:di="http://www.w3.org/2000/09/xmldsig#" 
-
-xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:PrimaryVehicleInformation E:\QUAM\Workspace\VECTO_DEV_Buses\VectoCore\VectoCore\Resources\XSD/VectoOutputPrimaryVehicleInformation.xsd urn:tugraz:ivt:VectoAPI:DeclarationOutput:PrimaryVehicleInformation:HeavyBus:v0.1 E:\QUAM\Workspace\VECTO_DEV_Buses\VectoCore\VectoCore\Resources\XSD/VectoOutputPrimaryBus.xsd urn:tugraz:ivt:VectoAPI:DeclarationDefinitions E:\QUAM\Workspace\VECTO_DEV_Buses\VectoCore\VectoCore\Resources\XSD/VectoDeclarationDefinitions.xsd urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_Buses\VectoCore\VectoCore\Resources\XSD/VectoDeclarationDefinitions.2.1.xsd">
-
-<!-- 
+<tns:VectoOutputPrimaryVehicle xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:PrimaryVehicleInformation" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:PrimaryVehicleInformation" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:pif="urn:tugraz:ivt:VectoAPI:PrimaryVehicleInformation" xmlns:pbus="urn:tugraz:ivt:VectoAPI:DeclarationOutput:PrimaryVehicleInformation:HeavyBus:v0.1" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:PrimaryVehicleInformation E:\QUAM\Workspace\VECTO_DEV_Buses\VectoCore\VectoCore\Resources\XSD/VectoOutputPrimaryVehicleInformation.xsd urn:tugraz:ivt:VectoAPI:DeclarationOutput:PrimaryVehicleInformation:HeavyBus:v0.1 E:\QUAM\Workspace\VECTO_DEV_Buses\VectoCore\VectoCore\Resources\XSD/VectoOutputPrimaryBus.xsd urn:tugraz:ivt:VectoAPI:DeclarationDefinitions E:\QUAM\Workspace\VECTO_DEV_Buses\VectoCore\VectoCore\Resources\XSD/VectoDeclarationDefinitions.xsd urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_Buses\VectoCore\VectoCore\Resources\XSD/VectoDeclarationDefinitions.2.1.xsd">
+	<!-- 
 xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:PrimaryVehicleInformation E:\QUAM\Workspace\VECTO_DEV_Buses\VectoCore\VectoCore\Resources\XSD/VectoOutputPrimaryVehicleInformation.xsd urn:tugraz:ivt:VectoAPI:DeclarationOutput:PrimaryVehicleInformation:HeavyBus:v0.1 E:\QUAM\Workspace\VECTO_DEV_Buses\VectoCore\VectoCore\Resources\XSD/VectoOutputPrimaryBus.xsd"
---> 
+-->
 	<tns:Data id="PIFHB-VEH-1234567890" xsi:type="pbus:PrimaryVehicleHeavyBusDataType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:PrimaryVehicleInformation:HeavyBus:v0.1">
-	
 		<Vehicle xsi:type="VehiclePIFType">
 			<ManufacturerPrimaryVehicle>Generic Truck Manufacturer</ManufacturerPrimaryVehicle>
 			<ManufacturerAddressPrimaryVehicle>Street, ZIP City</ManufacturerAddressPrimaryVehicle>
@@ -238,20 +224,20 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:PrimaryVehicleInformation E:\QUAM\Wo
 						<ElectricSystem>
 							<AlternatorTechnology ratio="1.000">default</AlternatorTechnology>
 							<SmartElectrics>false</SmartElectrics>
-<ResultCards>
-	<Idle>
-		<Entry current="0.00" smartCurrent="0.00"/>
-		<Entry current="100.00" smartCurrent="120.00"/>
-	</Idle>
-	<Traction>
-		<Entry current="0.00" smartCurrent="0.00"/>
-		<Entry current="100.00" smartCurrent="120.00"/>
-	</Traction>
-	<Overrun>
-		<Entry current="0.00" smartCurrent="0.00"/>
-		<Entry current="100.00" smartCurrent="120.00"/>
-	</Overrun>
-</ResultCards>						</ElectricSystem>
+							<ResultCards>
+								<Idle>
+									<Entry current="0.00" smartCurrent="0.00"/>
+									<Entry current="100.00" smartCurrent="120.00"/>
+								</Idle>
+								<Traction>
+									<Entry current="0.00" smartCurrent="0.00"/>
+									<Entry current="100.00" smartCurrent="120.00"/>
+								</Traction>
+								<Overrun>
+									<Entry current="0.00" smartCurrent="0.00"/>
+									<Entry current="100.00" smartCurrent="120.00"/>
+								</Overrun>
+							</ResultCards>
 						<PneumaticSystem>
 							<SizeOfAirSupply>Small</SizeOfAirSupply>
 							<Clutch>none</Clutch>
@@ -283,7 +269,7 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:PrimaryVehicleInformation E:\QUAM\Wo
 		<Results>
 			<Status>success</Status>
 			<Result status="success">
-			<VehicleGroup>P31SD</VehicleGroup>
+				<VehicleGroup>P31SD</VehicleGroup>
 				<Mission>Regional Delivery</Mission>
 				<SimulationParameters>
 					<TotalVehicleMass unit="kg">8810</TotalVehicleMass>
@@ -385,13 +371,13 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:PrimaryVehicleInformation E:\QUAM\Wo
 		</ApplicationInformation>
 	</tns:Data>
 	<Signature>
-	<di:Reference URI="#PIFHB-VEH-1234567890">
-		<di:Transforms>
-					<di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/>
-					<di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
-				</di:Transforms>
-				<di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
-				<di:DigestValue>4TkUGQTX8tevHOU9Cj9uyCFuI/aqcEYlo/gyVjVQmv0=</di:DigestValue>
-	</di:Reference>
+		<di:Reference URI="#PIFHB-VEH-1234567890">
+			<di:Transforms>
+				<di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/>
+				<di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
+			</di:Transforms>
+			<di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
+			<di:DigestValue>4TkUGQTX8tevHOU9Cj9uyCFuI/aqcEYlo/gyVjVQmv0=</di:DigestValue>
+		</di:Reference>
 	</Signature>
 </tns:VectoOutputPrimaryVehicle>
diff --git a/VectoCore/VectoCoreTest/VectoCoreTest.csproj b/VectoCore/VectoCoreTest/VectoCoreTest.csproj
index 64865e053a203fffe790bff81f542119209be71d..22eb02fe20dce74a48ebb9fb35a1264f12ca4e1f 100644
--- a/VectoCore/VectoCoreTest/VectoCoreTest.csproj
+++ b/VectoCore/VectoCoreTest/VectoCoreTest.csproj
@@ -210,11 +210,13 @@
     <Compile Include="Utils\MockModalDataContainer.cs" />
     <Compile Include="Utils\DoubleExtensionMethodTest.cs" />
     <Compile Include="Utils\VectoMathTest.cs" />
+    <Compile Include="XML\XMLCompleteBusReaderTest.cs" />
     <Compile Include="XML\XMLDeclarationInputTest.cs" />
     <Compile Include="XML\XMLDeclarationReaderVersionsTest.cs" />
     <Compile Include="XML\XMLEngineeringInputRefTest.cs" />
     <Compile Include="XML\XMLEngineeringInputSingleTest.cs" />
     <Compile Include="XML\XMLReportTest.cs" />
+    <Compile Include="XML\XMLPrimaryVehicleBusReaderTest.cs" />
     <Compile Include="XML\XMLWritingTest.cs" />
   </ItemGroup>
   <ItemGroup>
@@ -3587,8 +3589,15 @@
     <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\vecto_vehicle-medium_lorry.xml">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
+    <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\example_heavyBus_PIF.xml">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </Content>
+    <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\vecto_vehicle-completed_heavyBus.xml">
+      <SubType>Designer</SubType>
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </Content>
     <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\vecto_vehicle-primary_heavyBus.xml">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
     </Content>
     <Content Include="TestData\XML\XMLReaderDeclaration\Tractor_4x2_vehicle-class-5_5_t_0.xml">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
diff --git a/VectoCore/VectoCoreTest/XML/XMLCompleteBusReaderTest.cs b/VectoCore/VectoCoreTest/XML/XMLCompleteBusReaderTest.cs
new file mode 100644
index 0000000000000000000000000000000000000000..fd31271326c60fa036e147f06a310e5e2c93e3c6
--- /dev/null
+++ b/VectoCore/VectoCoreTest/XML/XMLCompleteBusReaderTest.cs
@@ -0,0 +1,116 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml;
+using Ninject;
+using NUnit.Framework;
+using TUGraz.VECTO;
+using TUGraz.VectoCommon.Exceptions;
+using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Utils;
+using TUGraz.VectoCore.InputData.FileIO.XML;
+using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider;
+
+namespace TUGraz.VectoCore.Tests.XML
+{
+
+	[TestFixture]
+	public class XMLCompleteBusReaderTest
+	{
+		private const string CompleteBusExample =
+			"TestData/XML/XMLReaderDeclaration/SchemaVersion2.6_Buses/vecto_vehicle-completed_heavyBus.xml";
+
+
+
+		protected IXMLInputDataReader xmlInputReader;
+		private IKernel _kernel;
+
+
+		[OneTimeSetUp]
+		public void RunBeforeAnyTests()
+		{
+			Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory);
+
+			_kernel = new StandardKernel(new VectoNinjectModule());
+			xmlInputReader = _kernel.Get<IXMLInputDataReader>();
+		}
+
+
+		[TestCase]
+		public void TestCompleteBusVehicleData()
+		{
+			var reader = XmlReader.Create(CompleteBusExample);
+
+			var inputDataProvider = xmlInputReader.CreateDeclaration(reader);
+			var vehicle = inputDataProvider.JobInputData.Vehicle;
+
+			Assert.IsNotNull(vehicle);
+			Assert.AreEqual("Some Manufacturer", vehicle.Manufacturer);
+			Assert.AreEqual("Infinite Loop 1", vehicle.ManufacturerAddress);
+			Assert.AreEqual("Sample Bus Model", vehicle.Model);
+			Assert.AreEqual("VEH-1234567890", vehicle.VIN);
+			Assert.AreEqual(DateTime.Parse("2020-01-09T11:00:00Z").ToUniversalTime(), vehicle.Date);
+			Assert.IsTrue(vehicle.LegislativeClass == LegislativeClass.N2);
+			Assert.AreEqual("II+III", vehicle.RegisteredClass);
+			Assert.IsTrue(vehicle.VehicleCode == VehicleCode.CD);
+			Assert.AreEqual(8300, vehicle.CurbMassChassis.Value());
+			Assert.AreEqual(15400, vehicle.GrossVehicleMassRating.Value());//TechnicalPermissibleMaximumLadenMass ?!?
+			Assert.That(() => vehicle.TankSystem, Throws.InstanceOf<VectoException>());
+			Assert.AreEqual(50, vehicle.NumberOfPassengersLowerDeck);
+			Assert.AreEqual(0, vehicle.NuberOfPassengersUpperDeck);
+			Assert.IsTrue(((XMLDeclarationCompletedBusDataProviderV26)vehicle).LowEntry);
+			Assert.AreEqual(2.700, vehicle.Height.Value());
+			Assert.AreEqual(11.830, vehicle.Length.Value());
+			Assert.AreEqual(2.550, vehicle.Width.Value());
+			Assert.AreEqual(0.120, ((XMLDeclarationCompletedBusDataProviderV26)vehicle).EntranceHeight.Value());
+			Assert.AreEqual("pneumatic", ((XMLDeclarationCompletedBusDataProviderV26)vehicle).DoorDriveTechnology);
+	
+			var components = inputDataProvider.JobInputData.Vehicle.Components;
+			Assert.IsNotNull(components);
+			
+			var airDrag = components.AirdragInputData;
+
+			Assert.AreEqual("Generic Manufacturer", airDrag.Manufacturer);
+			Assert.AreEqual("Generic Model", airDrag.Model);
+			Assert.AreEqual("e12*0815/8051*2017/05E0000*00", airDrag.CertificationNumber);
+			Assert.AreEqual(DateTime.Parse("2017-03-24T15:00:00Z").ToUniversalTime(), airDrag.Date.ToUniversalTime());
+			Assert.AreEqual("Vecto AirDrag x.y", airDrag.AppVersion);
+			//CdxA ?!?
+			//TransferredCdxA ?!? 
+			Assert.AreEqual(6.34, airDrag.AirDragArea.Value());
+			
+			Assert.AreEqual("#CabinX23h", airDrag.DigestValue.Reference);
+			Assert.AreEqual("urn:vecto:xml:2017:canonicalization", airDrag.DigestValue.CanonicalizationMethods[0]);
+			Assert.AreEqual("http://www.w3.org/2001/10/xml-exc-c14n#", airDrag.DigestValue.CanonicalizationMethods[1]);
+			Assert.AreEqual("http://www.w3.org/2001/04/xmlenc#sha256", airDrag.DigestValue.DigestMethod);
+			Assert.AreEqual("b9SHCfOoVrBxFQ8wwDK32OO+9bd85DuaUdgs6j/29N8=", airDrag.DigestValue.DigestValue);
+
+			var auxiliaries = components.BusAuxiliaries;
+			Assert.IsFalse(auxiliaries.ElectricConsumers.DayrunninglightsLED);
+			Assert.IsFalse(auxiliaries.ElectricConsumers.HeadlightsLED);
+			Assert.IsFalse(auxiliaries.ElectricConsumers.PositionlightsLED);
+			Assert.IsFalse(auxiliaries.ElectricConsumers.BrakelightsLED);
+			Assert.IsFalse(auxiliaries.ElectricConsumers.InteriorLightsLED);
+			
+			var electricSupl = components.BusAuxiliaries.ElectricSupply;
+			Assert.IsNotNull(electricSupl.Alternators);
+			Assert.AreEqual(1, electricSupl.Alternators.Count);
+			Assert.AreEqual(1.000, electricSupl.Alternators.First().Ratio);
+			Assert.AreEqual("default", electricSupl.Alternators.First().Technology);
+
+			var havacAux = components.BusAuxiliaries.HVACAux;
+			Assert.IsNotNull(havacAux);
+			Assert.AreEqual(7, havacAux.SystemConfiguration);
+			Assert.AreEqual("2-stage", havacAux.CompressorType.DriverAC);
+			Assert.AreEqual("3-stage", havacAux.CompressorType.PassengerAC);
+			Assert.AreEqual(0.SI<Watt>(), havacAux.AuxHeaterPower);
+			Assert.IsTrue(havacAux.DoubleGlasing);
+			Assert.IsFalse(havacAux.HeatPump);
+			Assert.IsTrue(havacAux.AdjustableAuxiliaryHeater);
+			Assert.IsTrue(havacAux.SeparateAirDistributionDucts);
+		}
+	}
+}
diff --git a/VectoCore/VectoCoreTest/XML/XMLPrimaryVehicleBusReaderTest.cs b/VectoCore/VectoCoreTest/XML/XMLPrimaryVehicleBusReaderTest.cs
new file mode 100644
index 0000000000000000000000000000000000000000..f46b01ac4240dd8be4770eacb8d8bbf6d627b2aa
--- /dev/null
+++ b/VectoCore/VectoCoreTest/XML/XMLPrimaryVehicleBusReaderTest.cs
@@ -0,0 +1,401 @@
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml;
+using Ninject;
+using NUnit.Framework;
+using TUGraz.VectoCommon.BusAuxiliaries;
+using TUGraz.VectoCommon.Exceptions;
+using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Utils;
+using TUGraz.VectoCore.InputData.FileIO.XML;
+using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider;
+using TUGraz.VectoCore.Models.Declaration;
+using TUGraz.VectoCore.InputData.Reader.ComponentData;
+
+namespace TUGraz.VectoCore.Tests.XML
+{
+
+	[TestFixture]
+	class XMLPrimaryVehicleBusReaderTest
+	{
+
+		private const string vehilcePIFExample =
+			"TestData/XML/XMLReaderDeclaration/SchemaVersion2.6_Buses/example_heavyBus_PIF.xml";
+
+		protected IXMLInputDataReader xmlInputReader;
+		private IKernel _kernel;
+
+
+		[OneTimeSetUp]
+		public void RunBeforeAnyTests()
+		{
+			Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory);
+
+			_kernel = new StandardKernel(new VectoNinjectModule());
+			xmlInputReader = _kernel.Get<IXMLInputDataReader>();
+		}
+
+
+		[TestCase]
+		public void TestPrimaryVehicleBusData()
+		{
+
+			var reader = XmlReader.Create(vehilcePIFExample);
+			var inputDataProvider = xmlInputReader.Create(reader) as IPrimaryVehicleInputDataProvider;
+
+			var vehicle = inputDataProvider.Vehicle;
+
+			Assert.AreEqual("Generic Truck Manufacturer", vehicle.Manufacturer);
+			Assert.AreEqual("Street, ZIP City", vehicle.ManufacturerAddress);
+			Assert.AreEqual("Generic Model", vehicle.Model);
+			Assert.AreEqual("VEH-1234567890", vehicle.VIN);
+			Assert.AreEqual(DateTime.Parse("2017-02-15T11:00:00Z").ToUniversalTime(), vehicle.Date);
+			Assert.IsTrue(VehicleCategory.HeavyBusPrimaryVehicle == vehicle.VehicleCategory);
+			Assert.IsTrue(AxleConfiguration.AxleConfig_4x2 == vehicle.AxleConfiguration);
+			Assert.AreEqual(25000, vehicle.GrossVehicleMassRating.Value());
+			Assert.AreEqual(600, vehicle.EngineIdleSpeed.Value());
+			Assert.AreEqual("Transmission Output Retarder", ((XMLDeclarationPrimaryVehicleBusDataProviderV01)vehicle).RetarderType.ToXMLFormat());
+			Assert.AreEqual(1.000, ((XMLDeclarationPrimaryVehicleBusDataProviderV01)vehicle).RetarderRatio);
+			Assert.AreEqual("None", ((XMLDeclarationPrimaryVehicleBusDataProviderV01)vehicle).AngledriveType.ToXMLFormat());
+			Assert.IsFalse(((XMLDeclarationPrimaryVehicleBusDataProviderV01)vehicle).ZeroEmissionVehicle);
+
+			Assert.IsFalse(vehicle.ADAS.EngineStopStart);
+			Assert.IsTrue(EcoRollType.None == vehicle.ADAS.EcoRoll);
+			Assert.IsTrue(PredictiveCruiseControlType.None == vehicle.ADAS.PredictiveCruiseControl);
+
+			Assert.IsNotNull(vehicle.TorqueLimits);
+			Assert.AreEqual(3, vehicle.TorqueLimits.Count);
+			Assert.AreEqual(6, vehicle.TorqueLimits[0].Gear);
+			Assert.AreEqual(1800, vehicle.TorqueLimits[0].MaxTorque.Value());
+			Assert.AreEqual(1, vehicle.TorqueLimits[1].Gear);
+			Assert.AreEqual(2500, vehicle.TorqueLimits[1].MaxTorque.Value());
+			Assert.AreEqual(12, vehicle.TorqueLimits[2].Gear);
+			Assert.AreEqual(1900, vehicle.TorqueLimits[2].MaxTorque.Value());
+
+			var components = inputDataProvider.Vehicle.Components;
+
+			TestEngineDataPIFType(components.EngineInputData);
+
+			TestTransmissionDataPIFType(components.GearboxInputData);
+
+			Assert.IsNull(components.TorqueConverterInputData);
+
+			TestAngledrive(components.AngledriveInputData);
+
+			Assert.IsNull(components.RetarderInputData);
+
+			TestAxlegear(components.AxleGearInputData);
+
+			TestAxleWheels(components.AxleWheels);
+
+			TestAuxiliaries(components.BusAuxiliaries);
+
+			TestPneumaticSystem(components.BusAuxiliaries.PneumaticSupply,
+				components.BusAuxiliaries.PneumaticConsumers);
+
+			TestHVAC(components.BusAuxiliaries.HVACAux);
+
+			TestResultDataSignature(inputDataProvider.ResultDataHash);
+
+			TestResultData(inputDataProvider.ResultsInputData);
+
+			TestApplicationInformation(inputDataProvider.ApplicationInformation);
+
+			TestSignature(inputDataProvider.ManufacturerHash);
+		}
+
+		
+		private void TestEngineDataPIFType(IEngineDeclarationInputData engine)
+		{
+			Assert.IsNotNull(engine);
+			Assert.AreEqual("Generic Engine Manufacturer", engine.Manufacturer);
+			Assert.AreEqual("Generic 40t Long Haul Truck Engine", engine.Model);
+			Assert.AreEqual("e12*0815/8051*2017/05E0000*00", engine.CertificationNumber);
+			Assert.AreEqual(DateTime.Parse("2017-02-15T11:00:00Z").ToUniversalTime(), engine.Date);
+			Assert.AreEqual("VectoEngine x.y", engine.AppVersion);
+			Assert.AreEqual(12730.SI(Unit.SI.Cubic.Centi.Meter).Cast<CubicMeter>(), engine.Displacement);//12730
+			Assert.AreEqual(2200, engine.RatedSpeedDeclared.AsRPM);
+			Assert.AreEqual(380000, engine.RatedPowerDeclared.Value());
+			Assert.AreEqual(2400, engine.MaxTorqueDeclared.Value());
+
+			Assert.IsTrue(engine.WHRType == WHRType.None);
+
+			Assert.IsNotNull(engine.EngineModes);
+			Assert.AreEqual(1, engine.EngineModes.Count);
+			Assert.AreEqual(560, engine.EngineModes[0].IdleSpeed.AsRPM);
+
+			var loadCurve = engine.EngineModes[0].FullLoadCurve;
+			Assert.AreEqual(10, loadCurve.Rows.Count);
+			Assert.AreEqual(3, loadCurve.Columns.Count);
+			Assert.AreEqual(FullLoadCurveReader.Fields.EngineSpeed, loadCurve.Columns[0].Caption);
+			Assert.AreEqual(FullLoadCurveReader.Fields.TorqueFullLoad, loadCurve.Columns[1].Caption);
+			Assert.AreEqual(FullLoadCurveReader.Fields.TorqueDrag, loadCurve.Columns[2].Caption);
+
+			var startRow = 0;
+			Assert.IsTrue(CheckLoadCurveEntry("560.00", "1180.00", "-149.00", loadCurve, ref startRow));
+			Assert.IsTrue(CheckLoadCurveEntry("600.00", "1282.00", "-148.00", loadCurve, ref startRow));
+			Assert.IsTrue(CheckLoadCurveEntry("800.00", "1791.00", "-149.00", loadCurve, ref startRow));
+			Assert.IsTrue(CheckLoadCurveEntry("1000.00", "2300.00", "-160.00", loadCurve, ref startRow));
+			Assert.IsTrue(CheckLoadCurveEntry("1200.00", "2300.00", "-179.00", loadCurve, ref startRow));
+			Assert.IsTrue(CheckLoadCurveEntry("1400.00", "2300.00", "-203.00", loadCurve, ref startRow));
+			Assert.IsTrue(CheckLoadCurveEntry("1600.00", "2079.00", "-235.00", loadCurve, ref startRow));
+			Assert.IsTrue(CheckLoadCurveEntry("1800.00", "1857.00", "-264.00", loadCurve, ref startRow));
+			Assert.IsTrue(CheckLoadCurveEntry("2000.00", "1352.00", "-301.00", loadCurve, ref startRow));
+			Assert.IsTrue(CheckLoadCurveEntry("2100.00", "1100.00", "-320.00", loadCurve, ref startRow));
+
+			Assert.AreEqual(1, engine.EngineModes[0].Fuels.Count);
+			Assert.AreEqual(FuelType.DieselCI, engine.EngineModes[0].Fuels[0].FuelType);
+		}
+		
+		private void TestTransmissionDataPIFType(IGearboxDeclarationInputData transmission)
+		{
+			Assert.AreEqual("Generic Gearbox Manufacturer", transmission.Manufacturer);
+			Assert.AreEqual("Generic 40t Long Haul Truck Gearbox", transmission.Model);
+			Assert.AreEqual(CertificationMethod.StandardValues, transmission.CertificationMethod);
+			Assert.AreEqual("e12*0815/8051*2017/05E0000*00", transmission.CertificationNumber);
+			Assert.AreEqual(DateTime.Parse("2017-01-11T11:00:00Z").ToUniversalTime(), transmission.Date);
+			Assert.AreEqual("3.0.1", transmission.AppVersion);
+			Assert.AreEqual(GearboxType.AMT, transmission.Type);
+
+			var gears = transmission.Gears;
+			Assert.IsNotNull(gears);
+			Assert.AreEqual(12, gears.Count);
+
+			var currentGearEntry = 0;
+
+			Assert.IsTrue(CheckGearEntry(14.930, 1900, 2000, 1, gears, ref currentGearEntry));
+			Assert.IsTrue(CheckGearEntry(11.640, 1900, 2000, 2, gears, ref currentGearEntry));
+			Assert.IsTrue(CheckGearEntry(9.020, null, 2000, 3, gears, ref currentGearEntry));
+			Assert.IsTrue(CheckGearEntry(7.040, null, 2000, 4, gears, ref currentGearEntry));
+			Assert.IsTrue(CheckGearEntry(5.640, null, 2000, 5, gears, ref currentGearEntry));
+			Assert.IsTrue(CheckGearEntry(4.400, null, 2000, 6, gears, ref currentGearEntry));
+			Assert.IsTrue(CheckGearEntry(3.390, null, 2000, 7, gears, ref currentGearEntry));
+			Assert.IsTrue(CheckGearEntry(2.650, null, 2000, 8, gears, ref currentGearEntry));
+			Assert.IsTrue(CheckGearEntry(2.050, null, 2000, 9, gears, ref currentGearEntry));
+			Assert.IsTrue(CheckGearEntry(1.600, null, 2000, 10, gears, ref currentGearEntry));
+			Assert.IsTrue(CheckGearEntry(1.280, null, 2000, 11, gears, ref currentGearEntry));
+			Assert.IsTrue(CheckGearEntry(1.000, null, null, 12, gears, ref currentGearEntry));
+		}
+
+		private void TestAngledrive(IAngledriveInputData angeldrive)
+		{
+			Assert.IsNotNull(angeldrive);
+			Assert.AreEqual("Generic Gearbox Manufacturer", angeldrive.Manufacturer);
+			Assert.AreEqual("Generic 40t Long Haul Truck Gearbox", angeldrive.Model);
+			Assert.AreEqual(CertificationMethod.StandardValues, angeldrive.CertificationMethod);
+			Assert.AreEqual("e12*0815/8051*2017/05E0000*00", angeldrive.CertificationNumber);
+			Assert.AreEqual(DateTime.Parse("2017-01-11T11:00:00Z").ToUniversalTime(), angeldrive.Date);
+			Assert.AreEqual("3.0.1", angeldrive.AppVersion);
+			Assert.AreEqual(2.345, angeldrive.Ratio);
+
+			Assert.IsNull(angeldrive.LossMap);
+			Assert.That(() => angeldrive.Efficiency, Throws.TypeOf<VectoException>());
+		}
+
+		private void TestAxlegear(IAxleGearInputData axelGear)
+		{
+			Assert.AreEqual("Generic Gearbox Manufacturer", axelGear.Manufacturer);
+			Assert.AreEqual("Generic 40t Long Haul Truck AxleGear", axelGear.Model);
+			Assert.AreEqual(CertificationMethod.StandardValues, axelGear.CertificationMethod);
+			Assert.AreEqual("e12*0815/8051*2017/05E0000*00", axelGear.CertificationNumber);
+			Assert.AreEqual(DateTime.Parse("2017-01-11T11:00:00Z").ToUniversalTime(), axelGear.Date);
+			Assert.AreEqual("3.0.1", axelGear.AppVersion);
+			Assert.AreEqual(AxleLineType.SinglePortalAxle, axelGear.LineType);
+			Assert.AreEqual(2.590, axelGear.Ratio);
+
+			Assert.IsNull(axelGear.LossMap);
+			Assert.That(() => axelGear.Efficiency, Throws.TypeOf<VectoException>());
+		}
+
+		private void TestAxleWheels(IAxlesDeclarationInputData axles)
+		{
+			Assert.AreEqual(2, axles.AxlesDeclaration.Count);
+			var axle1 = axles.AxlesDeclaration[0];
+			var axle2 = axles.AxlesDeclaration[1];
+
+			Assert.AreEqual(AxleType.VehicleNonDriven, axle1.AxleType);
+			Assert.AreEqual(false, axle1.TwinTyres);
+			//Data Id ??!?
+
+			var tyre1 = axle1.Tyre;
+			Assert.AreEqual("Generic Wheels Manufacturer", tyre1.Manufacturer);
+			Assert.AreEqual("Generic Wheel", tyre1.Model);
+			Assert.AreEqual("e12*0815/8051*2017/05E0000*00", tyre1.CertificationNumber);
+			Assert.AreEqual(DateTime.Parse("2017-01-11T14:00:00Z").ToUniversalTime(), tyre1.Date);
+			Assert.AreEqual("Tyre Generation App 1.0", tyre1.AppVersion);
+			Assert.AreEqual("315/70 R22.5", tyre1.Dimension);
+			Assert.AreEqual(0.0055, tyre1.RollResistanceCoefficient);
+			Assert.AreEqual(31300, tyre1.TyreTestLoad.Value());//85% of the maximum tyre payload
+
+			Assert.AreEqual("#WHL-5432198760-315-70-R22.5", tyre1.DigestValue.Reference);
+			Assert.AreEqual("urn:vecto:xml:2017:canonicalization", tyre1.DigestValue.CanonicalizationMethods[0]);
+			Assert.AreEqual("http://www.w3.org/2001/10/xml-exc-c14n#", tyre1.DigestValue.CanonicalizationMethods[1]);
+			Assert.AreEqual("http://www.w3.org/2001/04/xmlenc#sha256", tyre1.DigestValue.DigestMethod);
+			Assert.AreEqual("4TkUGQTX8tevHOU9Cj9uyCFuI/aqcEYlo/gyVjVQmv0=", tyre1.DigestValue.DigestValue);
+
+			var tyre2 = axle2.Tyre;
+			Assert.AreEqual("Generic Wheels Manufacturer", tyre2.Manufacturer);
+			Assert.AreEqual("Generic Wheel", tyre2.Model);
+			Assert.AreEqual("e12*0815/8051*2017/05E0000*00", tyre2.CertificationNumber);
+			Assert.AreEqual(DateTime.Parse("2017-01-11T14:00:00Z").ToUniversalTime(), tyre2.Date);
+			Assert.AreEqual("Tyre Generation App 1.0", tyre2.AppVersion);
+			Assert.AreEqual("315/70 R22.5", tyre2.Dimension);
+			Assert.AreEqual(0.0063, tyre2.RollResistanceCoefficient);
+			Assert.AreEqual(31300, tyre2.TyreTestLoad.Value());
+
+			Assert.AreEqual("#WHL-5432198760-315-70-R22.5", tyre2.DigestValue.Reference);
+			Assert.AreEqual("urn:vecto:xml:2017:canonicalization", tyre2.DigestValue.CanonicalizationMethods[0]);
+			Assert.AreEqual("http://www.w3.org/2001/10/xml-exc-c14n#", tyre2.DigestValue.CanonicalizationMethods[1]);
+			Assert.AreEqual("http://www.w3.org/2001/04/xmlenc#sha256", tyre2.DigestValue.DigestMethod);
+			Assert.AreEqual("KljvtvGUUQ/L7MiLVAqU+bckL5PNDNNwdeLH9kUVrfM=", tyre2.DigestValue.DigestValue);
+		}
+
+		private void TestAuxiliaries(IBusAuxiliariesDeclarationData auxiliaries)
+		{
+			Assert.AreEqual("Hydraulic driven - Constant displacement pump", auxiliaries.FanTechnology);
+			Assert.AreEqual(1, auxiliaries.SteeringPumpTechnology.Count);
+			Assert.AreEqual("Variable displacement elec. controlled", auxiliaries.SteeringPumpTechnology[0]);
+			
+			Assert.AreEqual(1, auxiliaries.ElectricSupply.Alternators.Count);
+			Assert.AreEqual("default", auxiliaries.ElectricSupply.Alternators[0].Technology);
+			Assert.AreEqual(1.0000, auxiliaries.ElectricSupply.Alternators[0].Ratio);
+			Assert.AreEqual(false, auxiliaries.ElectricSupply.SmartElectrics);
+
+			Assert.AreEqual(2, auxiliaries.ElectricSupply.ResultCards.Idle.Count);
+			Assert.AreEqual(0.00, auxiliaries.ElectricSupply.ResultCards.Idle[0].Current.Value());
+			Assert.AreEqual(0.00, auxiliaries.ElectricSupply.ResultCards.Idle[0].SmartCurrent.Value());
+			Assert.AreEqual(100.00, auxiliaries.ElectricSupply.ResultCards.Idle[1].Current.Value());
+			Assert.AreEqual(120.00, auxiliaries.ElectricSupply.ResultCards.Idle[1].SmartCurrent.Value());
+
+			Assert.AreEqual(2, auxiliaries.ElectricSupply.ResultCards.Traction.Count);
+			Assert.AreEqual(0.00, auxiliaries.ElectricSupply.ResultCards.Traction[0].Current.Value());
+			Assert.AreEqual(0.00, auxiliaries.ElectricSupply.ResultCards.Traction[0].SmartCurrent.Value());
+			Assert.AreEqual(100.00, auxiliaries.ElectricSupply.ResultCards.Traction[1].Current.Value());
+			Assert.AreEqual(120.00, auxiliaries.ElectricSupply.ResultCards.Traction[1].SmartCurrent.Value());
+
+			Assert.AreEqual(2, auxiliaries.ElectricSupply.ResultCards.Overrun.Count);
+			Assert.AreEqual(0.00, auxiliaries.ElectricSupply.ResultCards.Overrun[0].Current.Value());
+			Assert.AreEqual(0.00, auxiliaries.ElectricSupply.ResultCards.Overrun[0].SmartCurrent.Value());
+			Assert.AreEqual(100.00, auxiliaries.ElectricSupply.ResultCards.Overrun[1].Current.Value());
+			Assert.AreEqual(120.00, auxiliaries.ElectricSupply.ResultCards.Overrun[1].SmartCurrent.Value());
+		}
+
+		private void TestPneumaticSystem(IPneumaticSupplyDeclarationData supply,
+			IPneumaticConsumersDeclarationData consumers)
+		{
+			Assert.AreEqual("Small", supply.CompressorSize);
+			Assert.AreEqual("none", supply.Clutch);
+			Assert.AreEqual(1.000, supply.Ratio);
+			Assert.AreEqual(false, supply.SmartAirCompression);
+			Assert.AreEqual(false, supply.SmartRegeneration);
+
+			Assert.AreEqual(ConsumerTechnology.Pneumatically, consumers.AdBlueDosing);
+			Assert.AreEqual(ConsumerTechnology.Mechanically, consumers.AirsuspensionControl);
+			Assert.AreEqual(ConsumerTechnology.Pneumatically, consumers.DoorDriveTechnology);
+		}
+		
+		private void TestHVAC(IHVACBusAuxiliariesDeclarationData hvac)
+		{
+			Assert.AreEqual(true, hvac.AdjustableCoolantThermostat);
+			Assert.AreEqual(true, hvac.EngineWasteGasHeatExchanger);
+		}
+		
+		private void TestResultDataSignature(DigestData resultDataSignature)
+		{
+			Assert.AreEqual("#MRF-VEH-1234567890", resultDataSignature.Reference);
+			Assert.AreEqual("urn:vecto:xml:2017:canonicalization", resultDataSignature.CanonicalizationMethods[0]);
+			Assert.AreEqual("http://www.w3.org/2001/10/xml-exc-c14n#", resultDataSignature.CanonicalizationMethods[1]);
+			Assert.AreEqual("http://www.w3.org/2001/04/xmlenc#sha256", resultDataSignature.DigestMethod);
+			Assert.AreEqual("4TkUGQTX8tevHOU9Cj9uyCFuI/aqcEYlo/gyVjVQmv0=", resultDataSignature.DigestValue);
+		}
+
+		private void TestResultData(IResultsInputData resultsInputData)
+		{
+			Assert.AreEqual("success", resultsInputData.Status);
+			Assert.AreEqual(4, resultsInputData.Results.Count);
+
+			var result = resultsInputData.Results[0];
+			Assert.AreEqual("success", result.ResultStatus);
+			Assert.AreEqual("P31SD", result.VehicleGroup);
+			Assert.AreEqual("Regional Delivery", result.Mission);
+
+			TestSimulationParameter(8810, 920, 20, "single fuel mode", result.SimulationParameter);
+
+			result = resultsInputData.Results[1];
+			Assert.AreEqual("success", result.ResultStatus);
+			Assert.AreEqual("P31SD", result.VehicleGroup);
+			Assert.AreEqual("Regional Delivery", result.Mission);
+
+			TestSimulationParameter(12490, 4600, 80, "single fuel mode", result.SimulationParameter);
+
+			result = resultsInputData.Results[2];
+			Assert.AreEqual("success", result.ResultStatus);
+			Assert.AreEqual("P31DD", result.VehicleGroup);
+			Assert.AreEqual("Urban Delivery", result.Mission);
+
+			TestSimulationParameter(8810, 920, 20, "single fuel mode", result.SimulationParameter);
+
+			result = resultsInputData.Results[3];
+			Assert.AreEqual("success", result.ResultStatus);
+			Assert.AreEqual("P31DD", result.VehicleGroup);
+			Assert.AreEqual("Urban Delivery", result.Mission);
+
+			TestSimulationParameter(12490, 4600, 80, "single fuel mode", result.SimulationParameter);
+		}
+
+		private void TestApplicationInformation(IApplicationInformation applicationInformation)
+		{
+			Assert.AreEqual("Sample File Generator", applicationInformation.SimulationToolVersion);
+			Assert.AreEqual(DateTime.Parse("2017-01-01T00:00:00Z").ToUniversalTime(), applicationInformation.Date);
+		}
+
+		private void TestSignature(DigestData manufacturerSignature)
+		{
+			Assert.AreEqual("#PIFHB-VEH-1234567890", manufacturerSignature.Reference);
+			Assert.AreEqual("urn:vecto:xml:2017:canonicalization", manufacturerSignature.CanonicalizationMethods[0]);
+			Assert.AreEqual("http://www.w3.org/2001/10/xml-exc-c14n#", manufacturerSignature.CanonicalizationMethods[1]);
+			Assert.AreEqual("http://www.w3.org/2001/04/xmlenc#sha256", manufacturerSignature.DigestMethod);
+			Assert.AreEqual("4TkUGQTX8tevHOU9Cj9uyCFuI/aqcEYlo/gyVjVQmv0=", manufacturerSignature.DigestValue);
+		}
+
+		private void TestSimulationParameter(double totalVehicleMass, double payload, int passengerCount,
+			string fuelMode, ISimulationParameter simulationParameter)
+		{
+			Assert.AreEqual(totalVehicleMass.SI<Kilogram>(), simulationParameter.TotalVehicleMass);
+			Assert.AreEqual(payload.SI<Kilogram>(), simulationParameter.Payload);
+			Assert.AreEqual(passengerCount, simulationParameter.PassengerCount);
+			Assert.AreEqual(fuelMode, simulationParameter.FuelMode);
+		}
+		
+		private bool CheckLoadCurveEntry(string engineSpeed, string maxTorque, string dragTorque, TableData loadCurve, ref int currentRow)
+		{
+			var result = engineSpeed == loadCurve.Rows[currentRow][0].ToString() &&
+						 maxTorque == loadCurve.Rows[currentRow][1].ToString() &&
+						 dragTorque == loadCurve.Rows[currentRow][2].ToString();
+
+			currentRow++;
+			return result;
+		}
+		
+
+		private bool CheckGearEntry(double? ratio, double? maxTorque, double? maxSpeed, int gearNumber, IList<ITransmissionInputData> gears, ref int currentEntry)
+		{
+			var currentMaxTorque =  maxTorque?.SI<NewtonMeter>();
+			var currentMaxSpeed = maxSpeed?.RPMtoRad();
+
+			var result = gears[currentEntry].Gear == gearNumber &&
+						 gears[currentEntry].Ratio == ratio &&
+						 gears[currentEntry].MaxTorque == currentMaxTorque &&
+						 gears[currentEntry].MaxInputSpeed == currentMaxSpeed;
+			
+			currentEntry++;
+			return result;
+		}
+	}
+}