From f45801f06dd6c3e5b17f5a0177f20ec975e26124 Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Wed, 31 May 2017 17:59:09 +0200
Subject: [PATCH] implementing XML Report generation. fetching all required
 input data, make airdragdata a separate component

---
 VECTO/GUI/MainForm.vb                         |   6 +-
 VECTO/Input Files/Engine.vb                   |  12 +-
 VECTO/Input Files/Gearbox.vb                  |  18 +-
 VECTO/Input Files/VectoJob.vb                 |   7 +
 VECTO/Input Files/Vehicle.vb                  |  41 +-
 .../InputData/DeclarationInputData.cs         |  10 +-
 .../InputData/IInputDataProvider.cs           |   4 +
 .../VectoCommon/Models/AxleLineType.cs        |  34 +
 .../VectoCommon/Models/CertificationMethod.cs |  28 +
 .../Models/CrossWindCorrectionMode.cs         |  16 +
 .../VectoCommon/Models/RetarderType.cs        |  18 +
 .../VectoCommon/Models/VehicleCategory.cs     |  19 +
 .../Resources/XMLNames.Designer.cs            |  13 +-
 .../VectoCommon/Resources/XMLNames.resx       | 774 ++++++++++++++++++
 VectoCommon/VectoCommon/VectoCommon.csproj    |  14 +
 VectoCommon/VectoHashing/VectoComponents.cs   |   7 +-
 VectoCommon/VectoHashing/VectoHash.cs         |  58 +-
 VectoCommon/VectoHashing/VectoHashing.csproj  |   4 -
 VectoConsole/Program.cs                       |   1 -
 .../FileIO/JSON/JSONComponentInputData.cs     |   3 +
 .../InputData/FileIO/JSON/JSONEngineData.cs   |  10 +-
 .../InputData/FileIO/JSON/JSONGearboxData.cs  |  12 +-
 .../InputData/FileIO/JSON/JSONInputData.cs    |   3 +
 .../InputData/FileIO/JSON/JSONVehicleData.cs  |  17 +-
 ...ractDeclarationXMLComponentDataProvider.cs |  16 +-
 .../XMLDeclarationAirdragDataProvider.cs      |   8 +-
 .../XMLDeclarationAngledriveDataProvider.cs   |   2 +-
 .../XMLDeclarationAuxiliaryDataProvider.cs    |   2 +-
 .../XMLDeclarationAxlegearDataProvider.cs     |  15 +-
 .../XMLDeclarationDriverDataProvider.cs       |   1 -
 .../XMLDeclarationEngineDataProvider.cs       |   2 +-
 .../XMLDeclarationGearboxDataProvider.cs      |   7 +-
 .../XMLDeclarationInputDataProvider.cs        |  15 +-
 .../XMLDeclarationJobInputDataProvider.cs     |   2 +-
 .../XMLDeclarationRetarderDataProvider.cs     |   2 +-
 ...LDeclarationTorqueConverterDataProvider.cs |   2 +-
 .../XMLDeclarationVehicleDataProvider.cs      |  12 +-
 ...ractEngineeringXMLComponentDataProvider.cs |   2 +-
 .../XMLEngineeringAirdragDataProvider.cs      |   2 +-
 .../XMLEngineeringAngledriveDataProvider.cs   |   2 +-
 .../XMLEngineeringAuxiliaryDataProvider.cs    |   2 +-
 .../XMLEngineeringAxlegearDataProvider.cs     |   9 +-
 .../XMLEngineeringDriverDataProvider.cs       |   2 +-
 .../XMLEngineeringEngineDataProvider.cs       |   2 +-
 .../XMLEngineeringGearboxDataProvider.cs      |   2 +-
 .../XMLEngineeringInputDataProvider.cs        |   2 +-
 .../XMLEngineeringJobInputDataProvider.cs     |   2 +-
 .../XMLEngineeringRetarderDataProvider.cs     |   2 +-
 ...LEngineeringTorqueConverterDataProvider.cs |   2 +-
 .../XMLEngineeringVehicleDataProvider.cs      |  12 +-
 .../VectoCore/InputData/Impl/InputData.cs     |   6 +-
 .../AbstractSimulationDataAdapter.cs          |  39 +-
 .../DeclarationDataAdapter.cs                 |  44 +-
 .../EngineeringDataAdapter.cs                 |  38 +-
 .../DeclarationModeVectoRunDataFactory.cs     |  25 +-
 .../EngineeringModeVectoRunDataFactory.cs     |   5 +-
 .../Models/Declaration/MissionType.cs         |  32 +
 .../VectoCore/Models/Declaration/Segment.cs   |   6 +-
 .../VectoCore/Models/Declaration/Segments.cs  |   1 +
 .../Models/Simulation/Data/VectoRunData.cs    |  24 +-
 .../Models/Simulation/IVehicleContainer.cs    |   5 +-
 .../Simulation/Impl/PowertrainBuilder.cs      |   6 +-
 .../Simulation/Impl/SimulatorFactory.cs       |   8 +-
 .../Models/Simulation/Impl/VectoRun.cs        |  30 +-
 .../Simulation/Impl/VehicleContainer.cs       |  15 +-
 .../SimulationComponent/Data/AxleGearData.cs  |   6 +
 .../Data/ICrossWindCorrection.cs              |   1 +
 .../Data/SimulationComponentData.cs           |   7 +-
 .../SimulationComponent/Data/VehicleData.cs   |  23 +-
 .../SimulationComponent/Impl/Vehicle.cs       |  13 +-
 .../VectoCore/OutputData/DeclarationReport.cs |  74 +-
 .../OutputData/FileIO/FileOutputWriter.cs     |   9 +
 VectoCore/VectoCore/OutputData/IDataWriter.cs |   4 +-
 .../OutputData/IModalDataContainer.cs         | 142 ++--
 .../OutputData/ModalDataContainer.cs          |  13 +-
 .../OutputData/SummaryDataContainer.cs        |  40 +-
 .../OutputData/XML/AbstractXMLWriter.cs       |  57 +-
 .../OutputData/XML/AttributeMappings.cs       |   2 +-
 .../OutputData/XML/XMLDeclarationReport.cs    | 311 ++++---
 .../OutputData/XML/XMLDeclarationWriter.cs    |   8 +-
 .../OutputData/XML/XMLEngineeringWriter.cs    |   8 +-
 .../VectoCore/OutputData/XML/XMLFullReport.cs | 348 ++++++++
 .../Resources/Declaration/SegmentTable.csv    |  58 +-
 VectoCore/VectoCore/Resources/XMLNames.resx   | 771 -----------------
 .../VectoCore/Resources/XSD/VectoCOC.xsd      |   2 +-
 .../VectoCore/Resources/XSD/VectoOutput.xsd   | 220 +++--
 VectoCore/VectoCore/Utils/XPathHelper.cs      |   2 +-
 VectoCore/VectoCore/VectoCore.csproj          |  15 +-
 .../VectoCoreTest/Integration/ATPowerTrain.cs |  21 +-
 .../Integration/CoachAdvancedAuxPowertrain.cs |  25 +-
 .../Integration/CoachPowerTrain.cs            |  19 +-
 .../SimulationRuns/FullPowertrain.cs          |  32 +-
 .../SimulationRuns/MinimalPowertrain.cs       |  21 +-
 .../Integration/Truck40tPowerTrain.cs         |  24 +-
 .../DeclarationAdapterTestHelper.cs           |   4 +-
 .../DeclarationDataAdapterTest_Class2.cs      |  12 +-
 .../DeclarationDataAdapterTest_Class5.cs      |  16 +-
 .../DeclarationDataAdapterTest_Class9.cs      |  20 +-
 .../Models/Simulation/AuxTests.cs             |   2 +-
 .../Simulation/MeasuredSpeedModeTest.cs       |  20 +-
 .../Models/SimulationComponent/DriverTest.cs  |  24 +-
 .../Models/SimulationComponent/VehicleTest.cs |  13 +-
 .../SimulationComponentData/ValidationTest.cs |  19 +-
 .../Utils/MockEngineDataProvider.cs           |   2 +-
 .../Utils/MockModalDataContainer.cs           |  10 +-
 VectoCore/VectoCoreTest/Utils/MockRunData.cs  |   3 +
 .../Utils/MockSimulationDataFactory.cs        |  10 +-
 .../Utils/MockVehicleContainer.cs             |   4 +
 .../XML/XMLDeclarationInputTest.cs            |   2 +-
 .../XML/XMLEngineeringInputSingleTest.cs      |   2 +-
 110 files changed, 2375 insertions(+), 1606 deletions(-)
 create mode 100644 VectoCommon/VectoCommon/Models/AxleLineType.cs
 create mode 100644 VectoCommon/VectoCommon/Models/CertificationMethod.cs
 rename {VectoCore/VectoCore => VectoCommon/VectoCommon}/Resources/XMLNames.Designer.cs (99%)
 create mode 100644 VectoCommon/VectoCommon/Resources/XMLNames.resx
 create mode 100644 VectoCore/VectoCore/OutputData/XML/XMLFullReport.cs
 delete mode 100644 VectoCore/VectoCore/Resources/XMLNames.resx

diff --git a/VECTO/GUI/MainForm.vb b/VECTO/GUI/MainForm.vb
index 3a3e4c08a0..c408c7348c 100644
--- a/VECTO/GUI/MainForm.vb
+++ b/VECTO/GUI/MainForm.vb
@@ -46,12 +46,12 @@ Imports TUGraz.VectoCommon.Exceptions
 Imports TUGraz.VectoCommon.InputData
 Imports TUGraz.VectoCommon.Models
 Imports TUGraz.VectoCommon.OutputData
+Imports TUGraz.VectoCommon.Resources
 Imports TUGraz.VectoCommon.Utils
 Imports TUGraz.VectoCore.InputData.FileIO.XML.Declaration
 Imports TUGraz.VectoCore.InputData.FileIO.XML.Engineering
 Imports TUGraz.VectoCore.OutputData
 Imports TUGraz.VectoCore.OutputData.FileIO
-Imports TUGraz.VectoCore.Resources
 Imports TUGraz.VectoCore.Utils
 Imports VectoAuxiliaries
 
@@ -1101,10 +1101,10 @@ lbFound:
 		Next
 
 		For Each job As String In JobFileList
-			Dim report As String = New FileOutputWriter(job).PDFReportName
+			Dim report As String = New FileOutputWriter(job).XMLFullReportName
 			If File.Exists(report) Then
 				sender.ReportProgress(100, New VectoProgress With {.Target = "ListBox",
-										.Message = String.Format("PDF-Report for '{0}' written to {1}", Path.GetFileName(job), report),
+										.Message = String.Format("XML-Report for '{0}' written to {1}", Path.GetFileName(job), report),
 										.Link = "<RUN>" + report})
 			End If
 		Next
diff --git a/VECTO/Input Files/Engine.vb b/VECTO/Input Files/Engine.vb
index 49117b8f8a..4d749d83b4 100644
--- a/VECTO/Input Files/Engine.vb	
+++ b/VECTO/Input Files/Engine.vb	
@@ -308,21 +308,21 @@ Public Class Engine
 		End Get
 	End Property
 
-	Public ReadOnly Property CertificationNumber As String Implements IComponentInputData.CertificationNumber
+	Public ReadOnly Property CertificationMethod As CertificationMethod Implements IComponentInputData.CertificationMethod
 		Get
-			Return "N.A."
+			Return CertificationMethod.NotCertified
 		End Get
 	End Property
 
-	Public ReadOnly Property DigestValue As String Implements IComponentInputData.DigestValue
+	Public ReadOnly Property CertificationNumber As String Implements IComponentInputData.CertificationNumber
 		Get
-			Return ""
+			Return "N.A."
 		End Get
 	End Property
 
-	Public ReadOnly Property IntegrityStatus As IntegrityStatus Implements IComponentInputData.IntegrityStatus
+	Public ReadOnly Property DigestValue As String Implements IComponentInputData.DigestValue
 		Get
-			Return IntegrityStatus.NotChecked
+			Return ""
 		End Get
 	End Property
 
diff --git a/VECTO/Input Files/Gearbox.vb b/VECTO/Input Files/Gearbox.vb
index 270a887281..93fdf4e6cf 100644
--- a/VECTO/Input Files/Gearbox.vb	
+++ b/VECTO/Input Files/Gearbox.vb	
@@ -314,21 +314,21 @@ Public Class Gearbox
 		End Get
 	End Property
 
-	Public ReadOnly Property CertificationNumber As String Implements IComponentInputData.CertificationNumber
+	Public ReadOnly Property CertificationMethod As CertificationMethod Implements IComponentInputData.CertificationMethod
 		Get
-			Return "N.A."
+			Return CertificationMethod.NotCertified
 		End Get
 	End Property
 
-	Public ReadOnly Property DigestValue As String Implements IComponentInputData.DigestValue
+	Public ReadOnly Property CertificationNumber As String Implements IComponentInputData.CertificationNumber
 		Get
-			Return ""
+			Return "N.A."
 		End Get
 	End Property
 
-	Public ReadOnly Property IntegrityStatus As IntegrityStatus Implements IComponentInputData.IntegrityStatus
+	Public ReadOnly Property DigestValue As String Implements IComponentInputData.DigestValue
 		Get
-			Return IntegrityStatus.NotChecked
+			Return ""
 		End Get
 	End Property
 
@@ -523,5 +523,11 @@ Public Class Gearbox
 			Return GearLossMap(0, True).ToDouble(0)
 		End Get
 	End Property
+
+	Public ReadOnly Property LineType As AxleLineType Implements IAxleGearInputData.LineType
+		Get
+			Return AxleLineType.SinglePortalAxle
+		End Get
+	End Property
 End Class
 
diff --git a/VECTO/Input Files/VectoJob.vb b/VECTO/Input Files/VectoJob.vb
index 8a65f4a791..78a1748537 100644
--- a/VECTO/Input Files/VectoJob.vb	
+++ b/VECTO/Input Files/VectoJob.vb	
@@ -17,6 +17,7 @@ Imports System.IO
 Imports System.Linq
 Imports System.Runtime.Remoting.Messaging
 Imports System.Text
+Imports System.Xml.Linq
 Imports Newtonsoft.Json.Linq
 Imports TUGraz.VECTO.Input_Files
 Imports TUGraz.VectoCommon.Exceptions
@@ -593,6 +594,12 @@ Public Class VectoJob
 		End Get
 	End Property
 
+	Public ReadOnly Property XMLHash As XElement Implements IDeclarationInputDataProvider.XMLHash
+		Get
+			Return Nothing
+		End Get
+	End Property
+
 
 	Public ReadOnly Property SavedInDeclarationMode As Boolean Implements IDeclarationJobInputData.SavedInDeclarationMode
 		Get
diff --git a/VECTO/Input Files/Vehicle.vb b/VECTO/Input Files/Vehicle.vb
index 1cea72e46c..059350a462 100644
--- a/VECTO/Input Files/Vehicle.vb	
+++ b/VECTO/Input Files/Vehicle.vb	
@@ -93,6 +93,7 @@ Public Class Vehicle
 	Public Shared Function ValidateVehicle(vehicle As Vehicle, validationContext As ValidationContext) As ValidationResult
 
 		Dim vehicleData As VehicleData
+		Dim airdragData As AirdragData
 		Dim retarderData As RetarderData
 		Dim ptoData As PTOData = Nothing
 		Dim angledriveData As AngledriveData
@@ -109,14 +110,16 @@ Public Class Vehicle
 				Dim doa As DeclarationDataAdapter = New DeclarationDataAdapter()
 				Dim segment As Segment = DeclarationData.Segments.Lookup(vehicle.VehicleCategory, vehicle.AxleConfiguration,
 																		vehicle.GrossVehicleMassRating, vehicle.CurbMassChassis)
-				vehicleData = doa.CreateVehicleData(vehicle, vehicle, segment.Missions.First(),
-													segment.Missions.First().Loadings.First().Value, segment.VehicleHeight, segment.MunicipalBodyWeight)
+				vehicleData = doa.CreateVehicleData(vehicle, segment.Missions.First(),
+													segment.Missions.First().Loadings.First().Value, segment.MunicipalBodyWeight)
+				airdragData = doa.CreateAirdragData(vehicle, segment.Missions.First(), segment)
 				retarderData = doa.CreateRetarderData(vehicle)
 				angledriveData = doa.CreateAngledriveData(vehicle, False)
 				ptoData = doa.CreatePTOTransmissionData(vehicle)
 			Else
 				Dim doa As EngineeringDataAdapter = New EngineeringDataAdapter()
-				vehicleData = doa.CreateVehicleData(vehicle, vehicle)
+				vehicleData = doa.CreateVehicleData(vehicle)
+				airdragData = doa.CreateAirdragData(vehicle, vehicle)
 				retarderData = doa.CreateRetarderData(vehicle)
 				angledriveData = doa.CreateAngledriveData(vehicle, True)
 				ptoData = doa.CreatePTOTransmissionData(vehicle)
@@ -130,6 +133,14 @@ Public Class Vehicle
 										result.Select(Function(r) r.ErrorMessage + String.Join(Environment.NewLine, r.MemberNames)).ToList())
 			End If
 
+			result = airdragData.Validate(If(Cfg.DeclMode, ExecutionMode.Declaration, ExecutionMode.Engineering), gbxType,
+										emsCycle)
+			If result.Any() Then
+				Return _
+					New ValidationResult("Airdrag Configuration is invalid. ",
+										result.Select(Function(r) r.ErrorMessage + String.Join(Environment.NewLine, r.MemberNames)).ToList())
+			End If
+
 			result = retarderData.Validate(If(Cfg.DeclMode, ExecutionMode.Declaration, ExecutionMode.Engineering), gbxType,
 											emsCycle)
 			If result.Any() Then
@@ -285,21 +296,21 @@ Public Class Vehicle
 		End Get
 	End Property
 
-	Public ReadOnly Property CertificationNumber As String Implements IComponentInputData.CertificationNumber
+	Public ReadOnly Property CertificationMethod As CertificationMethod Implements IComponentInputData.CertificationMethod
 		Get
-			Return "N.A."	'ToDo
+			Return CertificationMethod.NotCertified
 		End Get
 	End Property
 
-	Public ReadOnly Property DigestValue As String Implements IComponentInputData.DigestValue
+	Public ReadOnly Property CertificationNumber As String Implements IComponentInputData.CertificationNumber
 		Get
-			Return ""
+			Return "N.A."	'ToDo
 		End Get
 	End Property
 
-	Public ReadOnly Property IntegrityStatus As IntegrityStatus Implements IComponentInputData.IntegrityStatus
+	Public ReadOnly Property DigestValue As String Implements IComponentInputData.DigestValue
 		Get
-			Return IntegrityStatus.NotChecked
+			Return ""
 		End Get
 	End Property
 
@@ -317,6 +328,18 @@ Public Class Vehicle
 		End Get
 	End Property
 
+	Public ReadOnly Property VIN As String Implements IVehicleDeclarationInputData.VIN
+		Get
+			Return "N.A."
+		End Get
+	End Property
+
+	Public ReadOnly Property LegislativeClass As String Implements IVehicleDeclarationInputData.LegislativeClass
+		Get
+			Return "N3"
+		End Get
+	End Property
+
 	Public ReadOnly Property CurbMassChassis As Kilogram Implements IVehicleDeclarationInputData.CurbMassChassis
 		Get
 			Return Mass.SI(Of Kilogram)()
diff --git a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs
index a76b52edff..033de94e30 100644
--- a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs
+++ b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs
@@ -60,15 +60,19 @@ namespace TUGraz.VectoCommon.InputData
 
 		string TechnicalReportId { get; }
 
+		CertificationMethod CertificationMethod { get; }
+
 		string CertificationNumber { get; }
 
 		string DigestValue { get; }
-
-		IntegrityStatus IntegrityStatus { get; }
 	}
 
 	public interface IVehicleDeclarationInputData : IComponentInputData
 	{
+		string VIN { get; }
+
+		string LegislativeClass { get; }
+
 		/// <summary>
 		/// P036
 		/// cf. VECTO Input Parameters.xlsx
@@ -278,6 +282,8 @@ namespace TUGraz.VectoCommon.InputData
 		/// cf. VECTO Input Parameters.xlsx
 		/// </summary>
 		double Efficiency { get; }
+
+		AxleLineType LineType { get; }
 	}
 
 	public interface ITorqueConverterDeclarationInputData : IComponentInputData
diff --git a/VectoCommon/VectoCommon/InputData/IInputDataProvider.cs b/VectoCommon/VectoCommon/InputData/IInputDataProvider.cs
index 93db0d939d..3a4e75c5bc 100644
--- a/VectoCommon/VectoCommon/InputData/IInputDataProvider.cs
+++ b/VectoCommon/VectoCommon/InputData/IInputDataProvider.cs
@@ -29,6 +29,8 @@
 *   Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology
 */
 
+using System.Xml.Linq;
+
 namespace TUGraz.VectoCommon.InputData
 {
 	public interface IInputDataProvider {}
@@ -58,6 +60,8 @@ namespace TUGraz.VectoCommon.InputData
 		IDriverDeclarationInputData DriverInputData { get; }
 
 		IPTOTransmissionInputData PTOTransmissionInputData { get; }
+
+		XElement XMLHash { get; }
 	}
 
 	public interface IEngineeringInputDataProvider : IInputDataProvider
diff --git a/VectoCommon/VectoCommon/Models/AxleLineType.cs b/VectoCommon/VectoCommon/Models/AxleLineType.cs
new file mode 100644
index 0000000000..4361d0ef32
--- /dev/null
+++ b/VectoCommon/VectoCommon/Models/AxleLineType.cs
@@ -0,0 +1,34 @@
+using System;
+
+namespace TUGraz.VectoCommon.Models
+{
+	public enum AxleLineType
+	{
+		SingleReductionAxle,
+		SinglePortalAxle,
+		HubReductionAxle,
+		SingleReductionTandemAxle,
+		HubReductionTandemAxle
+	}
+
+	public static class AxleLineTypeHelper
+	{
+		public static string ToXMLFormat(this AxleLineType type)
+		{
+			switch (type) {
+				case AxleLineType.SingleReductionAxle:
+					return "Single reduction axle";
+				case AxleLineType.SinglePortalAxle:
+					return "Single portal axle";
+				case AxleLineType.HubReductionAxle:
+					return "Hub reduction axle";
+				case AxleLineType.SingleReductionTandemAxle:
+					return "Single reduction tandem axle";
+				case AxleLineType.HubReductionTandemAxle:
+					return "Hub reduction tandem axle";
+				default:
+					throw new ArgumentOutOfRangeException("AxleLineType", type, null);
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/VectoCommon/VectoCommon/Models/CertificationMethod.cs b/VectoCommon/VectoCommon/Models/CertificationMethod.cs
new file mode 100644
index 0000000000..04d17398eb
--- /dev/null
+++ b/VectoCommon/VectoCommon/Models/CertificationMethod.cs
@@ -0,0 +1,28 @@
+using System;
+
+namespace TUGraz.VectoCommon.Models
+{
+	public enum CertificationMethod
+	{
+		StandardValues,
+		Measured,
+		NotCertified
+	}
+
+	public static class CertificationMethodHelper
+	{
+		public static string ToXMLFormat(this CertificationMethod method)
+		{
+			switch (method) {
+				case CertificationMethod.StandardValues:
+					return "Standard values";
+				case CertificationMethod.Measured:
+					return "Measured";
+				case CertificationMethod.NotCertified:
+					return "NOT CERTIFIED";
+				default:
+					throw new ArgumentOutOfRangeException("CertificationMethod", method, null);
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/VectoCommon/VectoCommon/Models/CrossWindCorrectionMode.cs b/VectoCommon/VectoCommon/Models/CrossWindCorrectionMode.cs
index 2a8a8453ae..b49c8cd64f 100644
--- a/VectoCommon/VectoCommon/Models/CrossWindCorrectionMode.cs
+++ b/VectoCommon/VectoCommon/Models/CrossWindCorrectionMode.cs
@@ -98,5 +98,21 @@ namespace TUGraz.VectoCommon.Models
 					throw new ArgumentOutOfRangeException("CrosswindCorrectionMode", mode, null);
 			}
 		}
+
+		public static string ToXMLFormat(this CrossWindCorrectionMode mode)
+		{
+			switch (mode) {
+				case CrossWindCorrectionMode.NoCorrection:
+					return "No Correction";
+				case CrossWindCorrectionMode.SpeedDependentCorrectionFactor:
+					return "Speed Dependent Correction Factor";
+				case CrossWindCorrectionMode.VAirBetaLookupTable:
+					return "VAir Beta Lookup Table";
+				case CrossWindCorrectionMode.DeclarationModeCorrection:
+					return "Declaration Mode Correction";
+				default:
+					throw new ArgumentOutOfRangeException("CrosswindCorrection", mode, null);
+			}
+		}
 	}
 }
\ No newline at end of file
diff --git a/VectoCommon/VectoCommon/Models/RetarderType.cs b/VectoCommon/VectoCommon/Models/RetarderType.cs
index 6cf5dedea7..e4cf57f7c3 100644
--- a/VectoCommon/VectoCommon/Models/RetarderType.cs
+++ b/VectoCommon/VectoCommon/Models/RetarderType.cs
@@ -87,6 +87,24 @@ namespace TUGraz.VectoCommon.Models
 			}
 		}
 
+		public static string ToXMLFormat(this RetarderType type)
+		{
+			switch (type) {
+				case RetarderType.None:
+					return "None";
+				case RetarderType.TransmissionInputRetarder:
+					return "Transmission Input Retarder";
+				case RetarderType.TransmissionOutputRetarder:
+					return "Transmission Output Retarder";
+				case RetarderType.EngineRetarder:
+					return "Engine Retarder";
+				case RetarderType.LossesIncludedInTransmission:
+					return "Losses included in Gearbox";
+				default:
+					throw new ArgumentOutOfRangeException("RetarderType", type, null);
+			}
+		}
+
 		public static bool IsDedicatedComponent(this RetarderType retarder)
 		{
 			return retarder == RetarderType.TransmissionInputRetarder || retarder == RetarderType.TransmissionOutputRetarder;
diff --git a/VectoCommon/VectoCommon/Models/VehicleCategory.cs b/VectoCommon/VectoCommon/Models/VehicleCategory.cs
index 0b8bf3e377..dc08130576 100644
--- a/VectoCommon/VectoCommon/Models/VehicleCategory.cs
+++ b/VectoCommon/VectoCommon/Models/VehicleCategory.cs
@@ -29,6 +29,8 @@
 *   Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology
 */
 
+using System;
+
 namespace TUGraz.VectoCommon.Models
 {
 	public enum VehicleCategory
@@ -77,5 +79,22 @@ namespace TUGraz.VectoCommon.Models
 					return category.ToString();
 			}
 		}
+
+		public static string ToXMLFormat(this VehicleCategory vehicleCategory)
+		{
+			switch (vehicleCategory) {
+				case VehicleCategory.Coach:
+				case VehicleCategory.Tractor:
+					return vehicleCategory.ToString();
+				case VehicleCategory.CityBus:
+					return "City Bus";
+				case VehicleCategory.InterurbanBus:
+					return "Interurban Bus";
+				case VehicleCategory.RigidTruck:
+					return "Rigid Truck";
+				default:
+					throw new ArgumentOutOfRangeException("vehicleCategory", vehicleCategory, null);
+			}
+		}
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Resources/XMLNames.Designer.cs b/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs
similarity index 99%
rename from VectoCore/VectoCore/Resources/XMLNames.Designer.cs
rename to VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs
index 3a3f28389d..1392f9fee1 100644
--- a/VectoCore/VectoCore/Resources/XMLNames.Designer.cs
+++ b/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs
@@ -8,7 +8,7 @@
 // </auto-generated>
 //------------------------------------------------------------------------------
 
-namespace TUGraz.VectoCore.Resources {
+namespace TUGraz.VectoCommon.Resources {
     using System;
     
     
@@ -39,7 +39,7 @@ namespace TUGraz.VectoCore.Resources {
         public static global::System.Resources.ResourceManager ResourceManager {
             get {
                 if (object.ReferenceEquals(resourceMan, null)) {
-                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("TUGraz.VectoCore.Resources.XMLNames", typeof(XMLNames).Assembly);
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("TUGraz.VectoCommon.Resources.XMLNames", typeof(XMLNames).Assembly);
                     resourceMan = temp;
                 }
                 return resourceMan;
@@ -222,6 +222,15 @@ namespace TUGraz.VectoCore.Resources {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to LineType.
+        /// </summary>
+        public static string Axlegear_LineType {
+            get {
+                return ResourceManager.GetString("Axlegear_LineType", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to Ratio.
         /// </summary>
diff --git a/VectoCommon/VectoCommon/Resources/XMLNames.resx b/VectoCommon/VectoCommon/Resources/XMLNames.resx
new file mode 100644
index 0000000000..93abb53b29
--- /dev/null
+++ b/VectoCommon/VectoCommon/Resources/XMLNames.resx
@@ -0,0 +1,774 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="VectoInputEngineering" xml:space="preserve">
+    <value>VectoInputEngineering</value>
+  </data>
+  <data name="Component_Vehicle" xml:space="preserve">
+    <value>Vehicle</value>
+  </data>
+  <data name="Vehicle_VehicleCategory" xml:space="preserve">
+    <value>VehicleCategory</value>
+  </data>
+  <data name="Vehicle_AxleConfiguration" xml:space="preserve">
+    <value>AxleConfiguration</value>
+  </data>
+  <data name="Vehicle_CurbWeightChassis" xml:space="preserve">
+    <value>CurbWeightChassis</value>
+  </data>
+  <data name="Vehicle_GrossVehicleMass" xml:space="preserve">
+    <value>GrossVehicleMass</value>
+  </data>
+  <data name="Vehicle_AirDragArea" xml:space="preserve">
+    <value>CdxA</value>
+  </data>
+  <data name="Vehicle_SteeredAxles" xml:space="preserve">
+    <value>SteeredAxles</value>
+  </data>
+  <data name="Vehicle_RetarderType" xml:space="preserve">
+    <value>RetarderType</value>
+  </data>
+  <data name="Vehicle_AngledriveType" xml:space="preserve">
+    <value>AngledriveType</value>
+  </data>
+  <data name="Vehicle_PTOType" xml:space="preserve">
+    <value>PTOType</value>
+  </data>
+  <data name="Vehicle_Components" xml:space="preserve">
+    <value>Components</value>
+  </data>
+  <data name="Vehicle_RetarderRatio" xml:space="preserve">
+    <value>RetarderRatio</value>
+  </data>
+  <data name="Vehicle_CurbWeightExtra" xml:space="preserve">
+    <value>CurbWeightExtra</value>
+  </data>
+  <data name="Vehicle_Loading" xml:space="preserve">
+    <value>Loading</value>
+  </data>
+  <data name="Vehicle_CrossWindCorrectionMode" xml:space="preserve">
+    <value>CrossWindCorrectionMode</value>
+  </data>
+  <data name="Vehicle_AdvancedDriverAssist" xml:space="preserve">
+    <value>AdvancedDriverAssist</value>
+  </data>
+  <data name="Vehicle_AdvancedDriverAssist_EngineStartStop" xml:space="preserve">
+    <value>EngineStartStop</value>
+  </data>
+  <data name="Vehicle_AdvancedDriverAssist_EngineStartStop_Enabled" xml:space="preserve">
+    <value>Enabled</value>
+  </data>
+  <data name="Component_Engine" xml:space="preserve">
+    <value>Engine</value>
+  </data>
+  <data name="ComponentDataWrapper" xml:space="preserve">
+    <value>Data</value>
+  </data>
+  <data name="Engine_Displacement" xml:space="preserve">
+    <value>Displacement</value>
+  </data>
+  <data name="Engine_IdlingSpeed" xml:space="preserve">
+    <value>IdlingSpeed</value>
+  </data>
+  <data name="Engine_WHTCUrban" xml:space="preserve">
+    <value>WHTCUrban</value>
+  </data>
+  <data name="Engine_WHTCRural" xml:space="preserve">
+    <value>WHTCRural</value>
+  </data>
+  <data name="Engine_WHTCMotorway" xml:space="preserve">
+    <value>WHTCMotorway</value>
+  </data>
+  <data name="Engine_ColdHotBalancingFactor" xml:space="preserve">
+    <value>BFColdHot</value>
+  </data>
+  <data name="Engine_FuelConsumptionMap" xml:space="preserve">
+    <value>FuelConsumptionMap</value>
+  </data>
+  <data name="Engine_FullLoadAndDragCurve" xml:space="preserve">
+    <value>FullLoadAndDragCurve</value>
+  </data>
+  <data name="Component_Gearbox" xml:space="preserve">
+    <value>Gearbox</value>
+  </data>
+  <data name="Gearbox_TransmissionType" xml:space="preserve">
+    <value>TransmissionType</value>
+  </data>
+  <data name="Gearbox_Gear_Ratio" xml:space="preserve">
+    <value>Ratio</value>
+  </data>
+  <data name="Gearbox_Gear_TorqueLossMap" xml:space="preserve">
+    <value>TorqueLossMap</value>
+  </data>
+  <data name="AngleDrive_TorqueLossMap" xml:space="preserve">
+    <value>TorqueLossMap</value>
+  </data>
+  <data name="Axlegear_TorqueLossMap" xml:space="preserve">
+    <value>TorqueLossMap</value>
+  </data>
+  <data name="Axlegear_Ratio" xml:space="preserve">
+    <value>Ratio</value>
+  </data>
+  <data name="AngleDrive_Ratio" xml:space="preserve">
+    <value>Ratio</value>
+  </data>
+  <data name="Component_Angledrive" xml:space="preserve">
+    <value>Angledrive</value>
+  </data>
+  <data name="Component_Retarder" xml:space="preserve">
+    <value>Retarder</value>
+  </data>
+  <data name="Component_Axlegear" xml:space="preserve">
+    <value>Axlegear</value>
+  </data>
+  <data name="Retarder_RetarderLossMap" xml:space="preserve">
+    <value>RetarderLossMap</value>
+  </data>
+  <data name="Component_AxleWheels" xml:space="preserve">
+    <value>AxleWheels</value>
+  </data>
+  <data name="AxleWheels_Axles_Axle" xml:space="preserve">
+    <value>Axle</value>
+  </data>
+  <data name="AxleWheels_Axles" xml:space="preserve">
+    <value>Axles</value>
+  </data>
+  <data name="AxleWheels_Axles_Axle_Dimension" xml:space="preserve">
+    <value>Dimension</value>
+  </data>
+  <data name="AxleWheels_Axles_Axle_RRCISO" xml:space="preserve">
+    <value>RRCISO</value>
+  </data>
+  <data name="AxleWheels_Axles_Axle_FzISO" xml:space="preserve">
+    <value>FzISO</value>
+  </data>
+  <data name="AxleWheels_Axles_Axle_WeightShare" xml:space="preserve">
+    <value>WeightShare</value>
+  </data>
+  <data name="AxleWheels_Axles_Axle_Inertia" xml:space="preserve">
+    <value>Inertia</value>
+  </data>
+  <data name="AxleWheels_Axles_Axle_DynamicTyreRadius" xml:space="preserve">
+    <value>DynamicTyreRadius</value>
+  </data>
+  <data name="VectoJob_EngineOnlyMode" xml:space="preserve">
+    <value>EngineOnlyMode</value>
+  </data>
+  <data name="VectoJob_MissionCycles" xml:space="preserve">
+    <value>MissionCycles</value>
+  </data>
+  <data name="Missions_Cycle" xml:space="preserve">
+    <value>Cycle</value>
+  </data>
+  <data name="AngleDrive_Efficiency" xml:space="preserve">
+    <value>Efficiency</value>
+  </data>
+  <data name="Axlegear_Efficiency" xml:space="preserve">
+    <value>Efficiency</value>
+  </data>
+  <data name="Gearbox_Gear_Efficiency" xml:space="preserve">
+    <value>Efficiency</value>
+  </data>
+  <data name="Gearbox_Gears_Gear" xml:space="preserve">
+    <value>Gear</value>
+  </data>
+  <data name="Gearbox_Gears" xml:space="preserve">
+    <value>Gears</value>
+  </data>
+  <data name="Gearbox_Gears_MaxTorque" xml:space="preserve">
+    <value>MaxTorque</value>
+  </data>
+  <data name="Gearbox_Inertia" xml:space="preserve">
+    <value>Inertia</value>
+  </data>
+  <data name="Engine_Inertia" xml:space="preserve">
+    <value>Inertia</value>
+  </data>
+  <data name="Engine_WHTCEngineering" xml:space="preserve">
+    <value>WHTCEngineering</value>
+  </data>
+  <data name="ExternalResource" xml:space="preserve">
+    <value>Resource</value>
+  </data>
+  <data name="Component_TorqueConverter" xml:space="preserve">
+    <value>TorqueConverter</value>
+  </data>
+  <data name="TorqueConverter_ReferenceRPM" xml:space="preserve">
+    <value>ReferenceRPM</value>
+  </data>
+  <data name="TorqueConverter_Characteristics" xml:space="preserve">
+    <value>Characteristics</value>
+  </data>
+  <data name="TorqueConverter_Inertia" xml:space="preserve">
+    <value>Inertia</value>
+  </data>
+  <data name="Gearbox_TractionInterruption" xml:space="preserve">
+    <value>TractionInterruption</value>
+  </data>
+  <data name="Gearbox_Gears_Gear_ShiftPolygon" xml:space="preserve">
+    <value>ShiftPolygon</value>
+  </data>
+  <data name="TorqueConverter_ShiftPolygon" xml:space="preserve">
+    <value>ShiftPolygon</value>
+  </data>
+  <data name="Component_DriverModel" xml:space="preserve">
+    <value>DriverModel</value>
+  </data>
+  <data name="DriverModel_LookAheadCoasting" xml:space="preserve">
+    <value>LookAheadCoasting</value>
+  </data>
+  <data name="DriverModel_LookAheadCoasting_Enabled" xml:space="preserve">
+    <value>Enabled</value>
+  </data>
+  <data name="DriverModel_LookAheadCoasting_MinSpeed" xml:space="preserve">
+    <value>MinSpeed</value>
+  </data>
+  <data name="DriverModel_LookAheadCoasting_PreviewDistanceFactor" xml:space="preserve">
+    <value>PreviewDistanceFactor</value>
+  </data>
+  <data name="DriverModel_LookAheadCoasting_DecisionFactorOffset" xml:space="preserve">
+    <value>DecisionFactorOffset</value>
+  </data>
+  <data name="DriverModel_LookAheadCoasting_DecisionFactorScaling" xml:space="preserve">
+    <value>DecisionFactorScaling</value>
+  </data>
+  <data name="DriverModel_LookAheadCoasting_SpeedDependentDecisionFactor" xml:space="preserve">
+    <value>SpeedDependentDecisionFactor</value>
+  </data>
+  <data name="DriverModel_LookAheadCoasting_VelocityDropDecisionFactor" xml:space="preserve">
+    <value>VelocityDropDecisionFactor</value>
+  </data>
+  <data name="DriverModel_Overspeed" xml:space="preserve">
+    <value>Overspeed</value>
+  </data>
+  <data name="DriverModel_Overspeed_Mode" xml:space="preserve">
+    <value>Mode</value>
+  </data>
+  <data name="DriverModel_Overspeed_MinSpeed" xml:space="preserve">
+    <value>MinSpeed</value>
+  </data>
+  <data name="DriverModel_Overspeed_AllowedOverspeed" xml:space="preserve">
+    <value>AllowedOverspeed</value>
+  </data>
+  <data name="DriverModel_Overspeed_AllowedUnderspeed" xml:space="preserve">
+    <value>AllowedUnderspeed</value>
+  </data>
+  <data name="DriverModel_DriverAccelerationCurve" xml:space="preserve">
+    <value>DriverAccelerationCurve</value>
+  </data>
+  <data name="DriverModel_ShiftStrategyParameters" xml:space="preserve">
+    <value>ShiftStrategyParameters</value>
+  </data>
+  <data name="DriverModel_ShiftStrategyParameters_UpshiftMinAcceleration" xml:space="preserve">
+    <value>UpshiftMinAcceleration</value>
+  </data>
+  <data name="DriverModel_ShiftStrategyParameters_DownshiftAfterUpshiftDelay" xml:space="preserve">
+    <value>DownshiftAfterUpshiftDelay</value>
+  </data>
+  <data name="DriverModel_ShiftStrategyParameters_UpshiftAfterDownshiftDelay" xml:space="preserve">
+    <value>UpshiftAfterDownshiftDelay</value>
+  </data>
+  <data name="DriverModel_ShiftStrategyParameters_TorqueReserve" xml:space="preserve">
+    <value>TorqueReserve</value>
+  </data>
+  <data name="DriverModel_ShiftStrategyParameters_TimeBetweenGearshift" xml:space="preserve">
+    <value>TimeBetweenGearshift</value>
+  </data>
+  <data name="DriverModel_ShiftStrategyParameters_StartSpeed" xml:space="preserve">
+    <value>StartSpeed</value>
+  </data>
+  <data name="DriverModel_ShiftStrategyParameters_StartAcceleration" xml:space="preserve">
+    <value>StartAcceleration</value>
+  </data>
+  <data name="DriverModel_ShiftStrategyParameters_StartTorqueReserve" xml:space="preserve">
+    <value>StartTorqueReserve</value>
+  </data>
+  <data name="VectoInputDeclaration" xml:space="preserve">
+    <value>VectoInputDeclaration</value>
+  </data>
+  <data name="Auxiliaries_Auxiliary_ConstantAuxLoad" xml:space="preserve">
+    <value>ConstantAuxLoad</value>
+  </data>
+  <data name="Auxiliaries_Auxiliary_TransmissionRatioToEngine" xml:space="preserve">
+    <value>TransmissionRatioToEngine</value>
+  </data>
+  <data name="Auxiliaries_Auxiliary_EfficiencyToEngine" xml:space="preserve">
+    <value>EfficiencyToEngine</value>
+  </data>
+  <data name="Auxiliaries_Auxiliary_EfficiencyAuxSupply" xml:space="preserve">
+    <value>EfficiencyAuxSupply</value>
+  </data>
+  <data name="Auxiliaries_Auxiliary_AuxMap" xml:space="preserve">
+    <value>AuxMap</value>
+  </data>
+  <data name="Auxiliaries_Auxiliary" xml:space="preserve">
+    <value>Auxiliary</value>
+  </data>
+  <data name="Component_Auxiliaries" xml:space="preserve">
+    <value>Auxiliaries</value>
+  </data>
+  <data name="Auxiliaries_Auxiliary_Technology" xml:space="preserve">
+    <value>Technology</value>
+  </data>
+  <data name="VectoComponentEngineering" xml:space="preserve">
+    <value>VectoComponentEngineering</value>
+  </data>
+  <data name="AxleWheels_Axles_Axle_AxleNumber_Attr" xml:space="preserve">
+    <value>axleNumber</value>
+  </data>
+  <data name="AxleWheels_Axles_Axle_TwinTyres_Attr" xml:space="preserve">
+    <value>TwinTyres</value>
+  </data>
+  <data name="AxleWheels_Axles_Axle_AxleType_Attr" xml:space="preserve">
+    <value>AxleType</value>
+  </data>
+  <data name="Gearbox_Gear_GearNumber_Attr" xml:space="preserve">
+    <value>number</value>
+  </data>
+  <data name="ExtResource_Type_Attr" xml:space="preserve">
+    <value>type</value>
+  </data>
+  <data name="ExtResource_File_Attr" xml:space="preserve">
+    <value>file</value>
+  </data>
+  <data name="ExtResource_Type_Value_CSV" xml:space="preserve">
+    <value>csv</value>
+  </data>
+  <data name="ExtResource_Type_Value_XML" xml:space="preserve">
+    <value>xml</value>
+  </data>
+  <data name="ExtResource_Component_Attr" xml:space="preserve">
+    <value>component</value>
+  </data>
+  <data name="Auxiliaries_Auxiliary_ID_Attr" xml:space="preserve">
+    <value>id</value>
+  </data>
+  <data name="Component_ID_Attr" xml:space="preserve">
+    <value>id</value>
+  </data>
+  <data name="Vehicle_CrosswindCorrectionMap_VehicleSpeed_Attr" xml:space="preserve">
+    <value>vehicleSpeed</value>
+  </data>
+  <data name="Vehicle_AccelerationCurve_MaxAcceleration_Attr" xml:space="preserve">
+    <value>maxAcceleration</value>
+  </data>
+  <data name="Vehicle_AccelerationCurve_MaxDeceleration_Attr" xml:space="preserve">
+    <value>maxDeceleration</value>
+  </data>
+  <data name="Engine_FuelConsumptionMap_EngineSpeed_Attr" xml:space="preserve">
+    <value>engineSpeed</value>
+  </data>
+  <data name="Engine_EngineFullLoadCurve_EngineSpeed_Attr" xml:space="preserve">
+    <value>engineSpeed</value>
+  </data>
+  <data name="Engine_FuelConsumptionMap_Torque_Attr" xml:space="preserve">
+    <value>torque</value>
+  </data>
+  <data name="Engine_FuelConsumptionMap_FuelConsumption_Attr" xml:space="preserve">
+    <value>fuelConsumption</value>
+  </data>
+  <data name="Engine_FullLoadCurve_MaxTorque_Attr" xml:space="preserve">
+    <value>maxTorque</value>
+  </data>
+  <data name="Engine_FullLoadCurve_DragTorque_Attr" xml:space="preserve">
+    <value>dragTorque</value>
+  </data>
+  <data name="Gear_ShiftPolygon_EngineTorque_Attr" xml:space="preserve">
+    <value>engineTorque</value>
+  </data>
+  <data name="Gear_ShiftPolygonMapping_DownshiftSpeed_Attr" xml:space="preserve">
+    <value>downshiftSpeed</value>
+  </data>
+  <data name="Gear_ShiftPolygonMapping_UpshiftSpeed_Attr" xml:space="preserve">
+    <value>upshiftSpeed</value>
+  </data>
+  <data name="Aux_AuxMap_AuxiliarySpeed_Attr" xml:space="preserve">
+    <value>auxiliarySpeed</value>
+  </data>
+  <data name="Aux_AuxMap_MechanicalPower_Attr" xml:space="preserve">
+    <value>mechanicalPower</value>
+  </data>
+  <data name="Auxr_AuxMapMapping_SupplyPower_Attr" xml:space="preserve">
+    <value>supplyPower</value>
+  </data>
+  <data name="Retarder_RetarderLossmap_RetarderSpeed_Attr" xml:space="preserve">
+    <value>retarderSpeed</value>
+  </data>
+  <data name="Retarder_RetarderLossmap_TorqueLoss_Attr" xml:space="preserve">
+    <value>torqueLoss</value>
+  </data>
+  <data name="TransmissionLossmap_TorqueLoss_Attr" xml:space="preserve">
+    <value>torqueLoss</value>
+  </data>
+  <data name="TransmissionLossmap_InputSpeed_Attr" xml:space="preserve">
+    <value>inputSpeed</value>
+  </data>
+  <data name="TransmissionLossmap_InputTorque_Attr" xml:space="preserve">
+    <value>inputTorque</value>
+  </data>
+  <data name="TorqueConverterData_SpeedRatio_Attr" xml:space="preserve">
+    <value>speedRatio</value>
+  </data>
+  <data name="TorqueConverterData_TorqueRatio_Attr" xml:space="preserve">
+    <value>torqueRatio</value>
+  </data>
+  <data name="TorqueConverterDataMapping_InputTorqueRef_Attr" xml:space="preserve">
+    <value>inputTorqueRef</value>
+  </data>
+  <data name="Driver_CoastingDFTargetSpeedLookupMapping_TargetVelocity_Attr" xml:space="preserve">
+    <value>targetVelocity</value>
+  </data>
+  <data name="Driver_CoastingDFVelocityDropLookupMapping_VelocityDrop_Attr" xml:space="preserve">
+    <value>velocityDrop</value>
+  </data>
+  <data name="Driver_CoastingDFTargetSpeedLookupMapping_DecisionFactor_Attr" xml:space="preserve">
+    <value>decisionFactorVel</value>
+  </data>
+  <data name="Driver_CoastingDFVelocityDropLookupMapping_DecisionFactorDrop_Attr" xml:space="preserve">
+    <value>decisionFactorDrop</value>
+  </data>
+  <data name="Component_Manufacturer" xml:space="preserve">
+    <value>Manufacturer</value>
+  </data>
+  <data name="Component_Creator" xml:space="preserve">
+    <value>Creator</value>
+  </data>
+  <data name="Component_Date" xml:space="preserve">
+    <value>Date</value>
+  </data>
+  <data name="Component_Model" xml:space="preserve">
+    <value>Model</value>
+  </data>
+  <data name="Component_CertificationNumber_Attr" xml:space="preserve">
+    <value>certificationNumber</value>
+  </data>
+  <data name="Angledrive_LossMap_Entry" xml:space="preserve">
+    <value>Entry</value>
+  </data>
+  <data name="Axlegear_TorqueLossMap_Entry" xml:space="preserve">
+    <value>Entry</value>
+  </data>
+  <data name="Engine_FuelConsumptionMap_Entry" xml:space="preserve">
+    <value>Entry</value>
+  </data>
+  <data name="Engine_FullLoadCurve_Entry" xml:space="preserve">
+    <value>Entry</value>
+  </data>
+  <data name="Gearbox_Gear_TorqueLossMap_Entry" xml:space="preserve">
+    <value>Entry</value>
+  </data>
+  <data name="Retarder_RetarderLossMap_Entry" xml:space="preserve">
+    <value>Entry</value>
+  </data>
+  <data name="TorqueConverter_Characteristics_Entry" xml:space="preserve">
+    <value>Entry</value>
+  </data>
+  <data name="Vehicle_AdvancedDriverAssist_EngineStartStop_ActivationDelay" xml:space="preserve">
+    <value>ActivationDelay</value>
+  </data>
+  <data name="Vehicle_AdvancedDriverAssist_EngineStartStop_MinOnTime" xml:space="preserve">
+    <value>MinOnTime</value>
+  </data>
+  <data name="Vehicle_AdvancedDriverAssist_EngineStartStop_MaxSpeed" xml:space="preserve">
+    <value>MaxSpeed</value>
+  </data>
+  <data name="DriverModel_DriverAccelerationCurve_Entry" xml:space="preserve">
+    <value>Entry</value>
+  </data>
+  <data name="LookAheadCoasting_SpeedDependentDecisionFactor_Entry" xml:space="preserve">
+    <value>Entry</value>
+  </data>
+  <data name="LookAheadCoasting_VelocityDropDecisionFactor_Entry" xml:space="preserve">
+    <value>Entry</value>
+  </data>
+  <data name="Gearbox_Gears_Gear_ShiftPolygon_Entry" xml:space="preserve">
+    <value>Entry</value>
+  </data>
+  <data name="TorqueConverter_ShiftPolygon_Entry" xml:space="preserve">
+    <value>Entry</value>
+  </data>
+  <data name="Vehicle_AccelerationCurve_VehicleSpeed_Attr" xml:space="preserve">
+    <value>vehicleSpeed</value>
+  </data>
+  <data name="Vehicle_CrosswindCorrectionData" xml:space="preserve">
+    <value>CrossWindCorrectionData</value>
+  </data>
+  <data name="Vehicle_CrosswindCorrectionData_Entry" xml:space="preserve">
+    <value>Entry</value>
+  </data>
+  <data name="Vehicle_CrosswindCorrectionMap_CdScalingFactor" xml:space="preserve">
+    <value>CdScalingFactor</value>
+  </data>
+  <data name="Vehicle_CrosswindCorrectionMap_Beta" xml:space="preserve">
+    <value>beta</value>
+  </data>
+  <data name="Vehicle_CrosswindCorrectionMap_DeltaCdxA" xml:space="preserve">
+    <value>deltaCdxA</value>
+  </data>
+  <data name="Auxiliaries_Auxiliary_AuxMap_Entry" xml:space="preserve">
+    <value>Entry</value>
+  </data>
+  <data name="Vehicle_PTOIdleLossMap" xml:space="preserve">
+    <value>PTOIdleLossMap</value>
+  </data>
+  <data name="Vehicle_PTOIdleLossMap_Entry" xml:space="preserve">
+    <value>Entry</value>
+  </data>
+  <data name="Vehicle_PTOIdleLossMap_EngineSpeed_Attr" xml:space="preserve">
+    <value>engineSpeed</value>
+  </data>
+  <data name="Vehicle_PTOIdleLossMap_TorqueLoss_Attr" xml:space="preserve">
+    <value>ptoTorqueLoss</value>
+  </data>
+  <data name="Vehicle_PTOCycle" xml:space="preserve">
+    <value>PTOCycle</value>
+  </data>
+  <data name="Vehicle_PTOCycle_Entry" xml:space="preserve">
+    <value>Entry</value>
+  </data>
+  <data name="Vehicle_PTOCycle_Time_Attr" xml:space="preserve">
+    <value>time</value>
+  </data>
+  <data name="Vehicle_PTOCycle_EngineSpeed_Attr" xml:space="preserve">
+    <value>engineSpeed</value>
+  </data>
+  <data name="Vehicle_PTOCycle_Torque_Attr" xml:space="preserve">
+    <value>torque</value>
+  </data>
+  <data name="Vehicle_CurbMassChassis" xml:space="preserve">
+    <value>CurbMassChassis</value>
+  </data>
+  <data name="Vehicle_VIN" xml:space="preserve">
+    <value>VIN</value>
+  </data>
+  <data name="AxleWheels_Axles_Axle_AxleType" xml:space="preserve">
+    <value>AxleType</value>
+  </data>
+  <data name="AxleWheels_Axles_Axle_TwinTyres" xml:space="preserve">
+    <value>TwinTyres</value>
+  </data>
+  <data name="AxleWheels_Axles_Axle_Steered" xml:space="preserve">
+    <value>Steered</value>
+  </data>
+  <data name="AxleWheels_Axles_Axle_Tyre" xml:space="preserve">
+    <value>Tyre</value>
+  </data>
+  <data name="Component_AirDrag" xml:space="preserve">
+    <value>AirDrag</value>
+  </data>
+  <data name="AirDrag_DeclaredCdxA" xml:space="preserve">
+    <value>DeclaredCdxA</value>
+  </data>
+  <data name="Vehicle_CurbMassExtra" xml:space="preserve">
+    <value>CurbMassExtra</value>
+  </data>
+  <data name="Component_TechnicalReportId" xml:space="preserve">
+    <value>TechnicalReportId</value>
+  </data>
+  <data name="AxleWheels_Axles_Axle_RRCDeclared" xml:space="preserve">
+    <value>RRCDeclared</value>
+  </data>
+  <data name="Component_AppVersion" xml:space="preserve">
+    <value>AppVersion</value>
+  </data>
+  <data name="Component_CertificationMethod" xml:space="preserve">
+    <value>CertificationMethod</value>
+  </data>
+  <data name="Component_Gearbox_CertificationMethod" xml:space="preserve">
+    <value>MainCertificationMethod</value>
+  </data>
+  <data name="Engine_RatedSpeed" xml:space="preserve">
+    <value>RatedSpeed</value>
+  </data>
+  <data name="Engine_RatedPower" xml:space="preserve">
+    <value>RatedPower</value>
+  </data>
+  <data name="Engine_MaxTorque" xml:space="preserve">
+    <value>MaxEngineTorque</value>
+  </data>
+  <data name="Engine_FuelType" xml:space="preserve">
+    <value>FuelType</value>
+  </data>
+  <data name="Engine_CorrecionFactor_NCV" xml:space="preserve">
+    <value>CFNCV</value>
+  </data>
+  <data name="Engine_CorrectionFactor_RegPer" xml:space="preserve">
+    <value>CFRegPer</value>
+  </data>
+  <data name="Vehicle_PTO" xml:space="preserve">
+    <value>PTO</value>
+  </data>
+  <data name="Vehicle_PTO_ShaftsGearWheels" xml:space="preserve">
+    <value>PTOShaftsGearWheels</value>
+  </data>
+  <data name="Vehicle_PTO_OtherElements" xml:space="preserve">
+    <value>PTOOtherElements</value>
+  </data>
+  <data name="Vehicle_IdlingSpeed" xml:space="preserve">
+    <value>IdlingSpeed</value>
+  </data>
+  <data name="Vehicle_LegislativeClass" xml:space="preserve">
+    <value>LegislativeClass</value>
+  </data>
+  <data name="DI_Signature" xml:space="preserve">
+    <value>Signature</value>
+  </data>
+  <data name="DI_Signature_Reference" xml:space="preserve">
+    <value>Reference</value>
+  </data>
+  <data name="DI_Signature_Reference_URI_Attr" xml:space="preserve">
+    <value>URI</value>
+  </data>
+  <data name="DI_Signature_Reference_Transforms" xml:space="preserve">
+    <value>Transforms</value>
+  </data>
+  <data name="DI_Signature_Reference_Transforms_Transform" xml:space="preserve">
+    <value>Transform</value>
+  </data>
+  <data name="DI_Signature_Algorithm_Attr" xml:space="preserve">
+    <value>Algorithm</value>
+  </data>
+  <data name="DI_Signature_Reference_DigestMethod" xml:space="preserve">
+    <value>DigestMethod</value>
+  </data>
+  <data name="DI_Signature_Reference_DigestValue" xml:space="preserve">
+    <value>DigestValue</value>
+  </data>
+  <data name="Component_ManufacturerAddress" xml:space="preserve">
+    <value>ManufacturerAddress</value>
+  </data>
+  <data name="Vehicle_TorqueLimits" xml:space="preserve">
+    <value>TorqueLimits</value>
+  </data>
+  <data name="Vehicle_TorqueLimits_Entry_Gear_Attr" xml:space="preserve">
+    <value>gear</value>
+  </data>
+  <data name="Vehicle_TorqueLimits_Entry_MaxTorque_Attr" xml:space="preserve">
+    <value>maxTorque</value>
+  </data>
+  <data name="Vehicle_TorqueLimits_Entry" xml:space="preserve">
+    <value>Entry</value>
+  </data>
+  <data name="Gearbox_Gear_MaxSpeed" xml:space="preserve">
+    <value>MaxSpeed</value>
+  </data>
+  <data name="Axlegear_LineType" xml:space="preserve">
+    <value>LineType</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/VectoCommon/VectoCommon/VectoCommon.csproj b/VectoCommon/VectoCommon/VectoCommon.csproj
index 132c66726a..3eab0336e6 100644
--- a/VectoCommon/VectoCommon/VectoCommon.csproj
+++ b/VectoCommon/VectoCommon/VectoCommon.csproj
@@ -59,6 +59,8 @@
     <Compile Include="Models\AngledriveType.cs" />
     <Compile Include="Models\AuxiliaryModel.cs" />
     <Compile Include="Models\AxleConfiguration.cs" />
+    <Compile Include="Models\AxleLineType.cs" />
+    <Compile Include="Models\CertificationMethod.cs" />
     <Compile Include="Models\CrossWindCorrectionMode.cs" />
     <Compile Include="Models\DriverMode.cs" />
     <Compile Include="Models\ExecutionMode.cs" />
@@ -72,6 +74,11 @@
     <Compile Include="OutputData\IOutputFileWriter.cs" />
     <Compile Include="OutputData\IOutputPlugin.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Resources\XMLNames.Designer.cs">
+      <DependentUpon>XMLNames.resx</DependentUpon>
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+    </Compile>
     <Compile Include="Utils\DoubleExtensionMethods.cs" />
     <Compile Include="Utils\EnumerableExtensionMethods.cs" />
     <Compile Include="Utils\EnumHelper.cs" />
@@ -84,6 +91,13 @@
   <ItemGroup>
     <None Include="packages.config" />
   </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="Resources\XMLNames.resx">
+      <Generator>PublicResXFileCodeGenerator</Generator>
+      <LastGenOutput>XMLNames.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
diff --git a/VectoCommon/VectoHashing/VectoComponents.cs b/VectoCommon/VectoHashing/VectoComponents.cs
index 7b0ab169ce..60340b81ab 100644
--- a/VectoCommon/VectoHashing/VectoComponents.cs
+++ b/VectoCommon/VectoHashing/VectoComponents.cs
@@ -1,5 +1,5 @@
 using System;
-using TUGraz.VectoCore.Resources;
+using TUGraz.VectoCommon.Resources;
 
 namespace TUGraz.VectoHashing
 {
@@ -14,6 +14,7 @@ namespace TUGraz.VectoHashing
 		Airdrag,
 		Tyre,
 		Vehicle,
+		VectoOutput
 	}
 
 	public static class VectoComponentsExtensionMethods
@@ -39,6 +40,8 @@ namespace TUGraz.VectoHashing
 					return XMLNames.AxleWheels_Axles_Axle_Tyre;
 				case VectoComponents.Vehicle:
 					return XMLNames.Component_Vehicle;
+				case VectoComponents.VectoOutput:
+					return "VectoOutput";
 				default:
 					throw new ArgumentOutOfRangeException("VectoComponents", component, null);
 			}
@@ -63,6 +66,8 @@ namespace TUGraz.VectoHashing
 					return "AD-";
 				case VectoComponents.Tyre:
 					return "TYRE-";
+				case VectoComponents.VectoOutput:
+					return "RESULT-";
 				default:
 					throw new ArgumentOutOfRangeException("VectoComponents", component, null);
 			}
diff --git a/VectoCommon/VectoHashing/VectoHash.cs b/VectoCommon/VectoHashing/VectoHash.cs
index 3602a8bdbf..31f22e326f 100644
--- a/VectoCommon/VectoHashing/VectoHash.cs
+++ b/VectoCommon/VectoHashing/VectoHash.cs
@@ -5,8 +5,8 @@ using System.IO;
 using System.Linq;
 using System.Xml;
 using System.Xml.Linq;
+using TUGraz.VectoCommon.Resources;
 using TUGraz.VectoCommon.Utils;
-using TUGraz.VectoCore.Resources;
 using TUGraz.VectoHashing.Impl;
 using TUGraz.VectoHashing.Util;
 
@@ -59,7 +59,8 @@ namespace TUGraz.VectoHashing
 			var retVal = new List<VectoComponents>();
 			foreach (var component in EnumHelper.GetValues<VectoComponents>()) {
 				var count =
-					Document.SelectNodes(string.Format("//*[local-name()='{0}']", component.XMLElementName())).Count;
+					Document.SelectNodes(string.Format("//*[local-name()='VectoInputDeclaration']/*[local-name()='{0}']",
+						component.XMLElementName())).Count;
 				for (var i = 0; i < count; i++) {
 					retVal.Add(component);
 				}
@@ -67,20 +68,32 @@ namespace TUGraz.VectoHashing
 			return retVal;
 		}
 
+		public XElement ComputeXmlHash()
+		{
+			var nodes = Document.SelectNodes(GetComponentQueryString());
+			if (nodes == null || nodes.Count == 0) {
+				throw new Exception("No component found");
+			}
+			var componentId = nodes[0].Attributes[XMLNames.Component_ID_Attr].Value;
+			var hash = DoComputeHash(nodes[0]);
+			return hash.ToXDocument().Root;
+		}
+
 		public string ComputeHash()
 		{
 			var nodes = Document.SelectNodes(GetComponentQueryString());
 			if (nodes == null || nodes.Count == 0) {
 				throw new Exception("No component found");
 			}
-			return DoComputeHash(nodes[0]);
+			var componentId = nodes[0].Attributes[XMLNames.Component_ID_Attr].Value;
+			return GetHashValueFromSig(DoComputeHash(nodes[0]), componentId);
 		}
 
+
 		public string ComputeHash(VectoComponents component, int index = 0)
 		{
 			var nodes = Document.SelectNodes(GetComponentQueryString(component));
 
-
 			if (nodes == null || nodes.Count == 0) {
 				throw new Exception(string.Format("Component {0} not found", component.XMLElementName()));
 			}
@@ -88,13 +101,14 @@ namespace TUGraz.VectoHashing
 				throw new Exception(string.Format("index exceeds number of components found! index: {0}, #components: {1}", index,
 					nodes.Count));
 			}
-			return DoComputeHash(nodes[index]);
+			var componentId = nodes[index].Attributes[XMLNames.Component_ID_Attr].Value;
+			return GetHashValueFromSig(DoComputeHash(nodes[index]), componentId);
 		}
 
-		private static string DoComputeHash(XmlNode dataNode)
+		private static XmlDocument DoComputeHash(XmlNode dataNode)
 		{
 			var parent = dataNode.ParentNode;
-			var componentId = dataNode.Attributes[XMLNames.Component_ID_Attr].Value;
+
 			if (parent == null) {
 				throw new Exception("Invalid structure of input XML!");
 			}
@@ -104,21 +118,31 @@ namespace TUGraz.VectoHashing
 			var newNode = newDoc.ImportNode(parent, true);
 			node.AppendChild(newNode);
 
-			var hash = XMLHashProvider.ComputeHash(newDoc, componentId);
-			return GetHashValueFromSig(hash, componentId);
+			var componentId = dataNode.Attributes[XMLNames.Component_ID_Attr].Value;
+			return XMLHashProvider.ComputeHash(newDoc, componentId);
 		}
 
 		public XDocument AddHash()
 		{
-			var components = GetContainigComponents();
-			if (components.Contains(VectoComponents.Vehicle)) {
-				throw new Exception("adding hash for Vehicle is not supported");
+			if (Document.DocumentElement == null) {
+				throw new Exception("invalid input document");
 			}
-			if (components.Count > 1) {
-				throw new Exception("input must not contain multiple components!");
-			}
-			if (components.Count == 0) {
-				throw new Exception("input does not contain a known component!");
+			IList<VectoComponents> components;
+			if (Document.DocumentElement.LocalName.Equals(XMLNames.VectoInputDeclaration)) {
+				components = GetContainigComponents();
+				if (components.Contains(VectoComponents.Vehicle)) {
+					throw new Exception("adding hash for Vehicle is not supported");
+				}
+				if (components.Count > 1) {
+					throw new Exception("input must not contain multiple components!");
+				}
+				if (components.Count == 0) {
+					throw new Exception("input does not contain a known component!");
+				}
+			} else if (Document.DocumentElement.LocalName.Equals("VectoOutput")) {
+				components = new List<VectoComponents>() { VectoComponents.VectoOutput };
+			} else {
+				throw new Exception("unknown document structure! neither input data nor output data format");
 			}
 			var query = string.Format("//*[local-name()='{0}']/*[local-name()='Data']", components[0].XMLElementName());
 			var node = Document.SelectSingleNode(query);
diff --git a/VectoCommon/VectoHashing/VectoHashing.csproj b/VectoCommon/VectoHashing/VectoHashing.csproj
index 447ea68acb..965dbb5057 100644
--- a/VectoCommon/VectoHashing/VectoHashing.csproj
+++ b/VectoCommon/VectoHashing/VectoHashing.csproj
@@ -57,10 +57,6 @@
     <EmbeddedResource Include="Resources\XSLT\SortInputData.xslt" />
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="..\..\VectoCore\VectoCore\VectoCore.csproj">
-      <Project>{CD36938A-ADD9-4C65-96DA-B397CDEEA90A}</Project>
-      <Name>VectoCore</Name>
-    </ProjectReference>
     <ProjectReference Include="..\VectoCommon\VectoCommon.csproj">
       <Project>{79A066AD-69A9-4223-90F6-6ED5D2D084F4}</Project>
       <Name>VectoCommon</Name>
diff --git a/VectoConsole/Program.cs b/VectoConsole/Program.cs
index 460135bfc4..e415ffa02e 100644
--- a/VectoConsole/Program.cs
+++ b/VectoConsole/Program.cs
@@ -51,7 +51,6 @@ using TUGraz.VectoCore.InputData.FileIO.XML.Engineering;
 using TUGraz.VectoCore.Models.Simulation.Impl;
 using TUGraz.VectoCore.OutputData;
 using TUGraz.VectoCore.OutputData.FileIO;
-using TUGraz.VectoCore.Resources;
 using LogManager = NLog.LogManager;
 
 namespace VectoConsole
diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs
index 2df6ff7a50..1518f394d1 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs
@@ -31,6 +31,7 @@
 
 using System;
 using System.IO;
+using System.Xml.Linq;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCore.Configuration;
 using TUGraz.VectoCore.Utils;
@@ -178,5 +179,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 		{
 			get { return PTOTransmission; }
 		}
+
+		public XElement XMLHash { get { return null; } }
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONEngineData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONEngineData.cs
index 3564f87230..eced7e2b03 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONEngineData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONEngineData.cs
@@ -246,19 +246,19 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 			get { return "N/A"; }
 		}
 
-		public string CertificationNumber
+		public CertificationMethod CertificationMethod
 		{
-			get { return "N/A"; }
+			get { return CertificationMethod.NotCertified; }
 		}
 
-		public string DigestValue
+		public string CertificationNumber
 		{
 			get { return "N/A"; }
 		}
 
-		public IntegrityStatus IntegrityStatus
+		public string DigestValue
 		{
-			get { return IntegrityStatus.Unknown; }
+			get { return "N/A"; }
 		}
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONGearboxData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONGearboxData.cs
index 3891417b5c..c3bc053dba 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONGearboxData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONGearboxData.cs
@@ -172,6 +172,11 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 			}
 		}
 
+		public AxleLineType LineType
+		{
+			get { return AxleLineType.SingleReductionAxle; }
+		}
+
 		#endregion
 
 		#region IGearboxInputData
@@ -489,6 +494,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 			get { return "N/A"; }
 		}
 
+		public CertificationMethod CertificationMethod { get { return CertificationMethod.NotCertified; } }
+
 		public string CertificationNumber
 		{
 			get { return "N/A"; }
@@ -498,10 +505,5 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 		{
 			get { return ""; }
 		}
-
-		public IntegrityStatus IntegrityStatus
-		{
-			get { return IntegrityStatus.Unknown; }
-		}
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputData.cs
index b56eb792ed..5778ab0487 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputData.cs
@@ -34,6 +34,7 @@ using System;
 using System.Collections.Generic;
 using System.IO;
 using System.Linq;
+using System.Xml.Linq;
 using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
@@ -328,6 +329,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 			get { return PTOTransmission; }
 		}
 
+		public XElement XMLHash { get { return null; } }
+
 		IAuxiliariesDeclarationInputData IDeclarationInputDataProvider.AuxiliaryInputData()
 		{
 			return this;
diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs
index 0ff7981068..0cfe43ce72 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs
@@ -49,6 +49,16 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 
 		#region IVehicleInputData
 
+		public string VIN
+		{
+			get { return "N.A."; }
+		}
+
+		public string LegislativeClass
+		{
+			get { return "N3"; }
+		}
+
 		public VehicleCategory VehicleCategory
 		{
 			get {
@@ -345,6 +355,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 			get { return "N.A."; }
 		}
 
+		public CertificationMethod CertificationMethod { get {return CertificationMethod.NotCertified;} }
+
 		public string CertificationNumber
 		{
 			get { return "N.A."; }
@@ -354,10 +366,5 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 		{
 			get { return ""; }
 		}
-
-		public IntegrityStatus IntegrityStatus
-		{
-			get { return IntegrityStatus.Unknown; }
-		}
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/AbstractDeclarationXMLComponentDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/AbstractDeclarationXMLComponentDataProvider.cs
index 20c5c9dfec..95d726f8ad 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/AbstractDeclarationXMLComponentDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/AbstractDeclarationXMLComponentDataProvider.cs
@@ -5,9 +5,9 @@ using System.Xml.XPath;
 using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Resources;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Configuration;
-using TUGraz.VectoCore.Resources;
 using TUGraz.VectoCore.Utils;
 
 namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration
@@ -78,14 +78,22 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration
 			get { return GetElementValue(XMLNames.Component_TechnicalReportId); }
 		}
 
+		public CertificationMethod CertificationMethod
+		{
+			get {
+				var value = GetElementValue(XMLNames.Component_CertificationMethod);
+				return value.ParseEnum<CertificationMethod>();
+			}
+		}
+
 		public string CertificationNumber
 		{
-			get { return GetAttributeValue("../", "certificationNumber"); }
+			get { return GetAttributeValue("..", "certificationNumber"); }
 		}
 
 		public virtual string DigestValue
 		{
-			get { return ""; }
+			get { return GetElementValue("..//*[local-name()='DigestValue']"); }
 		}
 
 		public virtual IntegrityStatus IntegrityStatus
@@ -105,8 +113,6 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration
 		protected string GetElementValue(string relativePath)
 		{
 			var path = Helper.Query(XBasePath, relativePath.Any() ? relativePath : null);
-			//new StringBuilder(XBasePath +
-			//				(relativePath.Any() ? string.Format("/{0}:{1}", Constants.DeclarationNSPrefix, relativePath) : ""));
 
 			var node = Navigator.SelectSingleNode(path.ToString(), Manager);
 			if (node == null) {
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationAirdragDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationAirdragDataProvider.cs
index 4b75142ad6..628364e6f4 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationAirdragDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationAirdragDataProvider.cs
@@ -1,7 +1,8 @@
 using System;
 using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Resources;
 using TUGraz.VectoCommon.Utils;
-using TUGraz.VectoCore.Resources;
 
 namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration
 {
@@ -17,6 +18,11 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration
 				XMLNames.ComponentDataWrapper);
 		}
 
+		public new CertificationMethod CertificationMethod
+		{
+			get { return CertificationMethod.Measured; }
+		}
+
 		public SquareMeter AirDragArea
 		{
 			get { return GetDoubleElementValue(XMLNames.AirDrag_DeclaredCdxA).SI<SquareMeter>(); }
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationAngledriveDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationAngledriveDataProvider.cs
index d08e38034d..ecdcc756b0 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationAngledriveDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationAngledriveDataProvider.cs
@@ -2,7 +2,7 @@
 using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
-using TUGraz.VectoCore.Resources;
+using TUGraz.VectoCommon.Resources;
 
 namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration
 {
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationAuxiliaryDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationAuxiliaryDataProvider.cs
index d2a74f4469..51f26834fe 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationAuxiliaryDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationAuxiliaryDataProvider.cs
@@ -1,9 +1,9 @@
 using System.Collections.Generic;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Resources;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.InputData.Impl;
-using TUGraz.VectoCore.Resources;
 
 namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration
 {
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationAxlegearDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationAxlegearDataProvider.cs
index b4eedd1136..3136d63951 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationAxlegearDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationAxlegearDataProvider.cs
@@ -1,7 +1,10 @@
-using TUGraz.IVT.VectoXML;
+using System.ComponentModel.DataAnnotations;
+using TUGraz.IVT.VectoXML;
 using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.InputData;
-using TUGraz.VectoCore.Resources;
+using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Resources;
+using TUGraz.VectoCommon.Utils;
 
 namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration
 {
@@ -33,5 +36,13 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration
 		{
 			get { throw new VectoException("Efficiency not supported in Declaration Mode!"); }
 		}
+
+		public AxleLineType LineType
+		{
+			get {
+				var value = GetElementValue(XMLNames.Axlegear_LineType);
+				return value.ParseEnum<AxleLineType>();
+			}
+		}
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationDriverDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationDriverDataProvider.cs
index d9ac30840c..eb6fbcc25f 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationDriverDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationDriverDataProvider.cs
@@ -3,7 +3,6 @@ using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCore.InputData.Impl;
 using TUGraz.VectoCore.Models.SimulationComponent.Data;
-using TUGraz.VectoCore.Resources;
 
 namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration
 {
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationEngineDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationEngineDataProvider.cs
index 5b7e33e630..c034d2cdd1 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationEngineDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationEngineDataProvider.cs
@@ -1,8 +1,8 @@
 using TUGraz.IVT.VectoXML;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Resources;
 using TUGraz.VectoCommon.Utils;
-using TUGraz.VectoCore.Resources;
 
 namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration
 {
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationGearboxDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationGearboxDataProvider.cs
index ad7d6865cc..5ed7d6a5dd 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationGearboxDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationGearboxDataProvider.cs
@@ -4,9 +4,9 @@ using System.Xml;
 using TUGraz.IVT.VectoXML;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Resources;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.InputData.Impl;
-using TUGraz.VectoCore.Resources;
 
 namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration
 {
@@ -22,6 +22,11 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration
 				XMLNames.ComponentDataWrapper);
 		}
 
+		public new CertificationMethod CertificationMethod
+		{
+			get { return GetElementValue(XMLNames.Component_Gearbox_CertificationMethod).ParseEnum<CertificationMethod>(); }
+		}
+
 		public GearboxType Type
 		{
 			get {
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationInputDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationInputDataProvider.cs
index 072528514e..f2b10b5cee 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationInputDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationInputDataProvider.cs
@@ -1,10 +1,12 @@
 using System;
 using System.Xml;
+using System.Xml.Linq;
 using System.Xml.Schema;
 using System.Xml.XPath;
 using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCore.Utils;
+using TUGraz.VectoHashing;
 
 namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration
 {
@@ -31,7 +33,14 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration
 
 				inputData = XmlReader.Create(inputData, settings);
 			}
-			Document = new XPathDocument(inputData);
+			//Document = new XPathDocument(inputData);
+
+			var xmldoc = new XmlDocument();
+			xmldoc.Load(inputData);
+			var h = VectoHash.Load(xmldoc);
+			XMLHash = h.ComputeXmlHash();
+
+			Document = new XPathDocument(new XmlNodeReader(xmldoc));
 
 			//CheckInputDocument();
 
@@ -46,7 +55,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration
 			RetarderInputData = new XMLDeclarationRetarderDataProvider(this);
 			XMLDriverData = new XMLDeclarationDriverDataProvider(this);
 			XMLAuxiliaryData = new XMLDeclarationAuxiliaryDataProvider(this);
-			PTOTransmissionInputData = _vehicleInputData.GetPTOData(); 
+			PTOTransmissionInputData = _vehicleInputData.GetPTOData();
 		}
 
 		private static void ValidationCallBack(object sender, ValidationEventArgs args)
@@ -102,5 +111,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration
 		}
 
 		public IPTOTransmissionInputData PTOTransmissionInputData { get; private set; }
+
+		public XElement XMLHash { get; private set; }
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationJobInputDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationJobInputDataProvider.cs
index 91d79472fd..eda7fb2898 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationJobInputDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationJobInputDataProvider.cs
@@ -1,5 +1,5 @@
 using TUGraz.VectoCommon.InputData;
-using TUGraz.VectoCore.Resources;
+using TUGraz.VectoCommon.Resources;
 
 namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration
 {
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationRetarderDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationRetarderDataProvider.cs
index 556f235174..c2c1190d9a 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationRetarderDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationRetarderDataProvider.cs
@@ -1,7 +1,7 @@
 using TUGraz.IVT.VectoXML;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
-using TUGraz.VectoCore.Resources;
+using TUGraz.VectoCommon.Resources;
 
 namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration
 {
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationTorqueConverterDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationTorqueConverterDataProvider.cs
index 9d63b2f2ce..b4b72b8980 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationTorqueConverterDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationTorqueConverterDataProvider.cs
@@ -1,6 +1,6 @@
 using TUGraz.IVT.VectoXML;
 using TUGraz.VectoCommon.InputData;
-using TUGraz.VectoCore.Resources;
+using TUGraz.VectoCommon.Resources;
 
 namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration
 {
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationVehicleDataProvider.cs
index 66e6f60b1a..f2f1a0dcfb 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationVehicleDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationVehicleDataProvider.cs
@@ -5,10 +5,10 @@ using System.Xml;
 using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Resources;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.InputData.Impl;
 using TUGraz.VectoCore.Models.Declaration;
-using TUGraz.VectoCore.Resources;
 
 namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration
 {
@@ -26,6 +26,16 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration
 			get { return GetElementValue(XMLNames.Vehicle_VIN); }
 		}
 
+		public string VIN
+		{
+			get { return GetElementValue(XMLNames.Vehicle_VIN); }
+		}
+
+		public string LegislativeClass
+		{
+			get { return GetElementValue(XMLNames.Vehicle_LegislativeClass); }
+		}
+
 		public VehicleCategory VehicleCategory
 		{
 			get { return GetElementValue(XMLNames.Vehicle_VehicleCategory).ParseEnum<VehicleCategory>(); }
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/AbstractEngineeringXMLComponentDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/AbstractEngineeringXMLComponentDataProvider.cs
index 6e7bcbf04f..6ef8935c83 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/AbstractEngineeringXMLComponentDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/AbstractEngineeringXMLComponentDataProvider.cs
@@ -4,8 +4,8 @@ using System.Xml.XPath;
 using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Resources;
 using TUGraz.VectoCore.InputData.FileIO.XML.Declaration;
-using TUGraz.VectoCore.Resources;
 using TUGraz.VectoCore.Utils;
 
 namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringAirdragDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringAirdragDataProvider.cs
index 74ee5e26a1..e97f216e48 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringAirdragDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringAirdragDataProvider.cs
@@ -3,8 +3,8 @@ using System.Xml.XPath;
 using TUGraz.IVT.VectoXML;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Resources;
 using TUGraz.VectoCommon.Utils;
-using TUGraz.VectoCore.Resources;
 
 namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering
 {
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringAngledriveDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringAngledriveDataProvider.cs
index 24c4a8c3b7..c13802ae76 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringAngledriveDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringAngledriveDataProvider.cs
@@ -2,7 +2,7 @@ using System.Xml.XPath;
 using TUGraz.IVT.VectoXML;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
-using TUGraz.VectoCore.Resources;
+using TUGraz.VectoCommon.Resources;
 
 namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering
 {
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringAuxiliaryDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringAuxiliaryDataProvider.cs
index 12dcbfd7cf..13f5364ebf 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringAuxiliaryDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringAuxiliaryDataProvider.cs
@@ -6,9 +6,9 @@ using TUGraz.IVT.VectoXML;
 using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Resources;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.InputData.Impl;
-using TUGraz.VectoCore.Resources;
 
 namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering
 {
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringAxlegearDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringAxlegearDataProvider.cs
index c753be74f5..d0ff022d73 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringAxlegearDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringAxlegearDataProvider.cs
@@ -1,7 +1,9 @@
 using System.Xml.XPath;
 using TUGraz.IVT.VectoXML;
 using TUGraz.VectoCommon.InputData;
-using TUGraz.VectoCore.Resources;
+using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Resources;
+using TUGraz.VectoCommon.Utils;
 
 namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering
 {
@@ -31,5 +33,10 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering
 		{
 			get { return GetDoubleElementValue(Helper.Query(XMLNames.Axlegear_TorqueLossMap, XMLNames.Axlegear_Efficiency)); }
 		}
+
+		public AxleLineType LineType
+		{
+			get { return GetElementValue(XMLNames.Axlegear_LineType).ParseEnum<AxleLineType>(); }
+		}
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringDriverDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringDriverDataProvider.cs
index 202218f349..03c9fbc543 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringDriverDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringDriverDataProvider.cs
@@ -6,12 +6,12 @@ using TUGraz.IVT.VectoXML;
 using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Resources;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Configuration;
 using TUGraz.VectoCore.InputData.Impl;
 using TUGraz.VectoCore.Models.Declaration;
 using TUGraz.VectoCore.Models.SimulationComponent.Data;
-using TUGraz.VectoCore.Resources;
 using TUGraz.VectoCore.Utils;
 
 namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringEngineDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringEngineDataProvider.cs
index 9c43a85bda..e3b159ae5d 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringEngineDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringEngineDataProvider.cs
@@ -4,9 +4,9 @@ using TUGraz.IVT.VectoXML;
 using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Resources;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.InputData.Reader;
-using TUGraz.VectoCore.Resources;
 
 namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering
 {
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringGearboxDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringGearboxDataProvider.cs
index b2aca7b704..f0554c6be3 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringGearboxDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringGearboxDataProvider.cs
@@ -4,9 +4,9 @@ using System.Xml.XPath;
 using TUGraz.IVT.VectoXML;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Resources;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.InputData.Impl;
-using TUGraz.VectoCore.Resources;
 
 namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering
 {
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringInputDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringInputDataProvider.cs
index 0472ce0210..adad476b88 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringInputDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringInputDataProvider.cs
@@ -5,8 +5,8 @@ using System.Xml.XPath;
 using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Resources;
 using TUGraz.VectoCore.Configuration;
-using TUGraz.VectoCore.Resources;
 using TUGraz.VectoCore.Utils;
 
 namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringJobInputDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringJobInputDataProvider.cs
index 863989dab0..05e1a399c7 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringJobInputDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringJobInputDataProvider.cs
@@ -4,11 +4,11 @@ using System.Xml;
 using System.Xml.XPath;
 using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCommon.Resources;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Configuration;
 using TUGraz.VectoCore.InputData.Impl;
 using TUGraz.VectoCore.Models.Declaration;
-using TUGraz.VectoCore.Resources;
 using TUGraz.VectoCore.Utils;
 
 namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringRetarderDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringRetarderDataProvider.cs
index 68c7fa0c9e..5bab7e6f50 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringRetarderDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringRetarderDataProvider.cs
@@ -3,8 +3,8 @@ using System.Xml.XPath;
 using TUGraz.IVT.VectoXML;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Resources;
 using TUGraz.VectoCore.InputData.Reader.ComponentData;
-using TUGraz.VectoCore.Resources;
 
 namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering
 {
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringTorqueConverterDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringTorqueConverterDataProvider.cs
index 02670357bf..42bb53b985 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringTorqueConverterDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringTorqueConverterDataProvider.cs
@@ -1,8 +1,8 @@
 using System.Xml.XPath;
 using TUGraz.IVT.VectoXML;
 using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCommon.Resources;
 using TUGraz.VectoCommon.Utils;
-using TUGraz.VectoCore.Resources;
 
 namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering
 {
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringVehicleDataProvider.cs
index 53ff07727f..4cb0cddace 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringVehicleDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringVehicleDataProvider.cs
@@ -9,11 +9,11 @@ using TUGraz.IVT.VectoXML;
 using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Resources;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Configuration;
 using TUGraz.VectoCore.InputData.Impl;
 using TUGraz.VectoCore.Models.Declaration;
-using TUGraz.VectoCore.Resources;
 
 namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering
 {
@@ -30,6 +30,16 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering
 			get { return GetAttributeValue("", XMLNames.Component_ID_Attr); }
 		}
 
+		public string VIN
+		{
+			get { return GetElementValue(XMLNames.Vehicle_VIN); }
+		}
+
+		public string LegislativeClass
+		{
+			get { return GetElementValue(XMLNames.Vehicle_LegislativeClass); }
+		}
+
 		public VehicleCategory VehicleCategory
 		{
 			get { return GetElementValue(XMLNames.Vehicle_VehicleCategory).ParseEnum<VehicleCategory>(); }
diff --git a/VectoCore/VectoCore/InputData/Impl/InputData.cs b/VectoCore/VectoCore/InputData/Impl/InputData.cs
index fdb93d5ba9..7817248f8b 100644
--- a/VectoCore/VectoCore/InputData/Impl/InputData.cs
+++ b/VectoCore/VectoCore/InputData/Impl/InputData.cs
@@ -104,18 +104,16 @@ namespace TUGraz.VectoCore.InputData.Impl
 
 		public string Model { get; internal set; }
 
-		public string Creator { get; internal set; }
-
 		public string Date { get; internal set; }
 
 		public string TechnicalReportId { get; internal set; }
 
+		public CertificationMethod CertificationMethod { get; internal set; }
+
 		public string CertificationNumber { get; internal set; }
 
 		public string DigestValue { get; internal set; }
 
-		public IntegrityStatus IntegrityStatus { get; internal set; }
-
 		public string Wheels { get; internal set; }
 
 		public bool TwinTyres { get; internal set; }
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs
index 19e10be48d..c763eeeacb 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs
@@ -52,12 +52,13 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 		{
 			var retVal = new VehicleData {
 				SavedInDeclarationMode = data.SavedInDeclarationMode,
+				VIN = data.VIN,
 				Manufacturer = data.Manufacturer,
 				ModelName = data.Model,
 				Date = data.Date,
-				CertificationNumber = data.TechnicalReportId,
+				//CertificationNumber = data.CertificationNumber,
 				DigestValueInput = data.DigestValue,
-				IntegrityStatus = data.IntegrityStatus,
+				LegislativeClass = data.LegislativeClass,
 				VehicleCategory = data.VehicleCategory,
 				AxleConfiguration = data.AxleConfiguration,
 				CurbWeight = data.CurbMassChassis,
@@ -67,6 +68,20 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 			return retVal;
 		}
 
+		internal AirdragData SetCommonAirdragData(IAirdragDeclarationInputData data)
+		{
+			var retVal = new AirdragData() {
+				SavedInDeclarationMode = data.SavedInDeclarationMode,
+				Manufacturer = data.Manufacturer,
+				ModelName = data.Model,
+				Date = data.Date,
+				CertificationMethod = data.CertificationMethod,
+				CertificationNumber = data.CertificationNumber,
+				DigestValueInput = data.DigestValue,
+			};
+			return retVal;
+		}
+
 		internal RetarderData SetCommonRetarderData(IRetarderInputData data)
 		{
 			try {
@@ -96,9 +111,9 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 				retarder.Manufacturer = data.Manufacturer;
 				retarder.ModelName = data.Model;
 				retarder.Date = data.Date;
-				retarder.CertificationNumber = data.TechnicalReportId;
+				retarder.CertificationMethod = data.CertificationMethod;
+				retarder.CertificationNumber = data.CertificationNumber;
 				retarder.DigestValueInput = data.DigestValue;
-				retarder.IntegrityStatus = data.IntegrityStatus;
 
 				return retarder;
 			} catch (Exception e) {
@@ -113,9 +128,8 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 				Manufacturer = data.Manufacturer,
 				ModelName = data.Model,
 				Date = data.Date,
-				CertificationNumber = data.TechnicalReportId,
+				CertificationNumber = data.CertificationNumber,
 				DigestValueInput = data.DigestValue,
-				IntegrityStatus = data.IntegrityStatus,
 				Displacement = data.Displacement,
 				IdleSpeed = data.IdleSpeed,
 				ConsumptionMap = FuelConsumptionMapReader.Create(data.FuelConsumptionMap),
@@ -134,9 +148,9 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 				Manufacturer = data.Manufacturer,
 				ModelName = data.Model,
 				Date = data.Date,
-				CertificationNumber = data.TechnicalReportId,
+				CertificationMethod = data.CertificationMethod,
+				CertificationNumber = data.CertificationNumber,
 				DigestValueInput = data.DigestValue,
-				IntegrityStatus = data.IntegrityStatus,
 				Type = data.Type
 			};
 		}
@@ -160,10 +174,11 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 				SavedInDeclarationMode = data.SavedInDeclarationMode,
 				Manufacturer = data.Manufacturer,
 				ModelName = data.Model,
+				LineType = data.LineType,
 				Date = data.Date,
-				CertificationNumber = data.TechnicalReportId,
+				CertificationMethod = data.CertificationMethod,
+				CertificationNumber = data.CertificationNumber,
 				DigestValueInput = data.DigestValue,
-				IntegrityStatus = data.IntegrityStatus,
 				AxleGear = new GearData { LossMap = axleLossMap, Ratio = data.Ratio }
 			};
 		}
@@ -189,9 +204,9 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 							Manufacturer = data.Manufacturer,
 							ModelName = data.Model,
 							Date = data.Date,
-							CertificationNumber = data.TechnicalReportId,
+							CertificationMethod = data.CertificationMethod,
+							CertificationNumber = data.CertificationNumber,
 							DigestValueInput = data.DigestValue,
-							IntegrityStatus = data.IntegrityStatus,
 							Type = type,
 							Angledrive = new TransmissionData { Ratio = data.Ratio }
 						};
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs
index 7612d7fc15..3556dae703 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs
@@ -80,8 +80,8 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 			return retVal;
 		}
 
-		internal VehicleData CreateVehicleData(IVehicleDeclarationInputData data, IAirdragDeclarationInputData airdragData,
-			Mission mission, Kilogram loading, Meter vehicleHeight, Kilogram municipalBodyWeight)
+		internal VehicleData CreateVehicleData(IVehicleDeclarationInputData data, Mission mission, Kilogram loading,
+			Kilogram municipalBodyWeight)
 		{
 			if (!data.SavedInDeclarationMode) {
 				WarnDeclarationMode("VehicleData");
@@ -93,7 +93,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 			retVal.BodyAndTrailerWeight = (mission.MissionType == MissionType.MunicipalUtility
 				? municipalBodyWeight
 				: mission.BodyCurbWeight) + mission.Trailer.Sum(t => t.TrailerCurbWeight).DefaultIfNull(0);
-			retVal.CurbWeight += retVal.BodyAndTrailerWeight;
+			//retVal.CurbWeight += retVal.BodyAndTrailerWeight;
 
 			retVal.Loading = loading;
 			var drivenIndex = DrivenAxleIndex(data.Axles);
@@ -101,12 +101,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 				DeclarationData.Wheels.Lookup(data.Axles[drivenIndex].Wheels).DynamicTyreRadius;
 			retVal.CargoVolume = mission.MissionType != MissionType.Construction ? mission.TotalCargoVolume : 0.SI<CubicMeter>();
 
-			var aerodynamicDragArea = airdragData.AirDragArea + mission.Trailer.Sum(t => t.DeltaCdA).DefaultIfNull(0);
 
-			retVal.CrossWindCorrectionCurve =
-				new CrosswindCorrectionCdxALookup(aerodynamicDragArea,
-					GetDeclarationAirResistanceCurve(mission.CrossWindCorrectionParameters, aerodynamicDragArea, vehicleHeight),
-					CrossWindCorrectionMode.DeclarationModeCorrection);
 			var axles = data.Axles;
 			if (axles.Count < mission.AxleWeightDistribution.Length) {
 				throw new VectoException("Vehicle does not contain sufficient axles. {0} axles defined, {1} axles required",
@@ -414,5 +409,38 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 
 			return null;
 		}
+
+		public AirdragData CreateAirdragData(IAirdragDeclarationInputData airdragInputData, Mission mission,
+			Segment segment)
+		{
+			if (airdragInputData == null) {
+				return DefaultAirdragData(mission, segment);
+			}
+
+			var retVal = SetCommonAirdragData(airdragInputData);
+			var aerodynamicDragArea = airdragInputData.AirDragArea + mission.Trailer.Sum(t => t.DeltaCdA).DefaultIfNull(0);
+
+			retVal.DeclaredAirdragArea = airdragInputData.AirDragArea;
+			retVal.CrossWindCorrectionCurve =
+				new CrosswindCorrectionCdxALookup(aerodynamicDragArea,
+					GetDeclarationAirResistanceCurve(mission.CrossWindCorrectionParameters, aerodynamicDragArea, segment.VehicleHeight),
+					CrossWindCorrectionMode.DeclarationModeCorrection);
+			return retVal;
+		}
+
+		private AirdragData DefaultAirdragData(Mission mission, Segment segment)
+		{
+			var aerodynamicDragArea = mission.MissionType == MissionType.Construction
+				? segment.CdAConstruction
+				: segment.CdADefault + mission.Trailer.Sum(t => t.DeltaCdA).DefaultIfNull(0);
+
+			return new AirdragData() {
+				CertificationMethod = CertificationMethod.StandardValues,
+				DeclaredAirdragArea = mission.MissionType == MissionType.Construction ? segment.CdAConstruction : segment.CdADefault,
+				CrossWindCorrectionCurve = new CrosswindCorrectionCdxALookup(aerodynamicDragArea,
+					GetDeclarationAirResistanceCurve(mission.CrossWindCorrectionParameters, aerodynamicDragArea, segment.VehicleHeight),
+					CrossWindCorrectionMode.DeclarationModeCorrection)
+			};
+		}
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs
index ca5b47bf0b..c5c5727ba9 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs
@@ -48,7 +48,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 {
 	public class EngineeringDataAdapter : AbstractSimulationDataAdapter
 	{
-		internal VehicleData CreateVehicleData(IVehicleEngineeringInputData data, IAirdragEngineeringInputData airdragData)
+		internal VehicleData CreateVehicleData(IVehicleEngineeringInputData data)
 		{
 			if (data.SavedInDeclarationMode) {
 				WarnEngineeringMode("VehicleData");
@@ -56,12 +56,30 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 
 			var retVal = SetCommonVehicleData(data);
 			retVal.BodyAndTrailerWeight = data.CurbMassExtra;
-			retVal.CurbWeight += data.CurbMassExtra;
+			//retVal.CurbWeight += data.CurbMassExtra;
 			retVal.TrailerGrossVehicleWeight = 0.SI<Kilogram>();
 			retVal.Loading = data.Loading;
 			retVal.DynamicTyreRadius = data.DynamicTyreRadius;
-			retVal.CrossWindCorrectionMode = airdragData.CrossWindCorrectionMode;
 			var axles = data.Axles;
+
+
+			retVal.AxleData = axles.Select(axle => new Axle {
+				WheelsDimension = axle.Wheels,
+				Inertia = axle.Inertia,
+				TwinTyres = axle.TwinTyres,
+				RollResistanceCoefficient = axle.RollResistanceCoefficient,
+				AxleWeightShare = axle.AxleWeightShare,
+				TyreTestLoad = axle.TyreTestLoad,
+				//Wheels = axle.WheelsStr
+			}).ToList();
+			return retVal;
+		}
+
+		public AirdragData CreateAirdragData(IAirdragEngineeringInputData airdragData, IVehicleEngineeringInputData data)
+		{
+			var retVal = SetCommonAirdragData(airdragData);
+			retVal.CrossWindCorrectionMode = airdragData.CrossWindCorrectionMode;
+
 			switch (airdragData.CrossWindCorrectionMode) {
 				case CrossWindCorrectionMode.NoCorrection:
 					retVal.CrossWindCorrectionCurve =
@@ -80,26 +98,16 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 					break;
 				case CrossWindCorrectionMode.DeclarationModeCorrection:
 					var height = DeclarationData.Segments.LookupHeight(data.VehicleCategory, data.AxleConfiguration,
-						retVal.GrossVehicleWeight);
+						data.GrossVehicleMassRating);
 					retVal.CrossWindCorrectionCurve =
 						new CrosswindCorrectionCdxALookup(airdragData.AirDragArea,
 							DeclarationDataAdapter.GetDeclarationAirResistanceCurve(
-								GetAirdragParameterSet(retVal.VehicleCategory, data.AxleConfiguration, axles.Count),
+								GetAirdragParameterSet(data.VehicleCategory, data.AxleConfiguration, data.Axles.Count),
 								airdragData.AirDragArea, height), CrossWindCorrectionMode.DeclarationModeCorrection);
 					break;
 				default:
 					throw new ArgumentOutOfRangeException("CrosswindCorrection", airdragData.CrossWindCorrectionMode.ToString());
 			}
-
-			retVal.AxleData = axles.Select(axle => new Axle {
-				WheelsDimension = axle.Wheels,
-				Inertia = axle.Inertia,
-				TwinTyres = axle.TwinTyres,
-				RollResistanceCoefficient = axle.RollResistanceCoefficient,
-				AxleWeightShare = axle.AxleWeightShare,
-				TyreTestLoad = axle.TyreTestLoad,
-				//Wheels = axle.WheelsStr
-			}).ToList();
 			return retVal;
 		}
 
diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeVectoRunDataFactory.cs
index 2e7c1e1a78..f28051a3c6 100644
--- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeVectoRunDataFactory.cs
+++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeVectoRunDataFactory.cs
@@ -71,9 +71,9 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
 			var driverdata = dao.CreateDriverData(InputDataProvider.DriverInputData);
 			driverdata.AccelerationCurve = AccelerationCurveReader.ReadFromStream(segment.AccelerationFile);
 
-			var tempVehicle = dao.CreateVehicleData(InputDataProvider.VehicleInputData, InputDataProvider.AirdragInputData,
-				segment.Missions.First(), segment.Missions.First().Loadings.First().Value, segment.VehicleHeight,
-				segment.MunicipalBodyWeight);
+			var tempVehicle = dao.CreateVehicleData(InputDataProvider.VehicleInputData, segment.Missions.First(),
+				segment.Missions.First().Loadings.First().Value, segment.MunicipalBodyWeight);
+			var airdragData = dao.CreateAirdragData(InputDataProvider.AirdragInputData, segment.Missions.First(),segment);
 			var engineData = dao.CreateEngineData(InputDataProvider.EngineInputData, InputDataProvider.GearboxInputData,
 				InputDataProvider.VehicleInputData.TorqueLimits);
 			var axlegearData = dao.CreateAxleGearData(InputDataProvider.AxleGearInputData, false);
@@ -83,19 +83,21 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
 			var retarderData = dao.CreateRetarderData(InputDataProvider.RetarderInputData);
 
 			var ptoTransmissionData = dao.CreatePTOTransmissionData(InputDataProvider.PTOTransmissionInputData);
+
 			var municipalPtoTransmissionData = CreateDefaultPTOData();
 			if (Report != null) {
 				var powertrainConfig = new VectoRunData() {
 					VehicleData =
-						dao.CreateVehicleData(InputDataProvider.VehicleInputData, InputDataProvider.AirdragInputData,
-							segment.Missions.First(), segment.Missions.First().Loadings.First().Value, segment.VehicleHeight,
-							segment.MunicipalBodyWeight),
+						dao.CreateVehicleData(InputDataProvider.VehicleInputData, segment.Missions.First(),
+							segment.Missions.First().Loadings.First().Value, segment.MunicipalBodyWeight),
+					AirdragData = airdragData,
 					EngineData = engineData,
 					GearboxData = gearboxData,
 					AxleGearData = axlegearData,
 					Retarder = retarderData,
 					Aux = dao.CreateAuxiliaryData(InputDataProvider.AuxiliaryInputData(), segment.Missions.First().MissionType,
-						segment.VehicleClass)
+						segment.VehicleClass),
+					InputDataHash = InputDataProvider.XMLHash
 				};
 				Report.InitializeReport(powertrainConfig, segment);
 			}
@@ -118,8 +120,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
 					var simulationRunData = new VectoRunData {
 						Loading = loading.Key,
 						VehicleData =
-							dao.CreateVehicleData(InputDataProvider.VehicleInputData, InputDataProvider.AirdragInputData, mission,
-								loading.Value, segment.VehicleHeight, segment.MunicipalBodyWeight),
+							dao.CreateVehicleData(InputDataProvider.VehicleInputData, mission, loading.Value, segment.MunicipalBodyWeight),
+						AirdragData = dao.CreateAirdragData(InputDataProvider.AirdragInputData, mission, segment),
 						EngineData = engineData.Copy(),
 						GearboxData = gearboxData,
 						AxleGearData = axlegearData,
@@ -136,11 +138,12 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
 						Mission = mission,
 						PTO = mission.MissionType == MissionType.MunicipalUtility
 							? municipalPtoTransmissionData
-							: ptoTransmissionData
+							: ptoTransmissionData,
+						InputDataHash = InputDataProvider.XMLHash
 					};
 					simulationRunData.EngineData.FuelConsumptionCorrectionFactor = DeclarationData.WHTCCorrection.Lookup(
 						mission.MissionType.GetNonEMSMissionType(), engineData.WHTCRural, engineData.WHTCUrban, engineData.WHTCMotorway) *
-																		engineData.ColdHotCorrectionFactor;
+																					engineData.ColdHotCorrectionFactor;
 					//simulationRunData.Cycle.Name = mission.MissionType.ToString();
 					simulationRunData.VehicleData.VehicleClass = segment.VehicleClass;
 					yield return simulationRunData;
diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringModeVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringModeVectoRunDataFactory.cs
index 737b325469..47f3607160 100644
--- a/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringModeVectoRunDataFactory.cs
+++ b/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringModeVectoRunDataFactory.cs
@@ -64,7 +64,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
 			var engineData = dao.CreateEngineData(InputDataProvider.EngineInputData, InputDataProvider.GearboxInputData,
 				InputDataProvider.VehicleInputData.TorqueLimits);
 
-			var tempVehicle = dao.CreateVehicleData(InputDataProvider.VehicleInputData, InputDataProvider.AirdragInputData);
+			var tempVehicle = dao.CreateVehicleData(InputDataProvider.VehicleInputData);
 
 			var axlegearData = dao.CreateAxleGearData(InputDataProvider.AxleGearInputData, useEfficiencyFallback: true);
 			var gearboxData = dao.CreateGearboxData(InputDataProvider.GearboxInputData, engineData, axlegearData.AxleGear.Ratio,
@@ -88,7 +88,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
 					GearboxData = gearboxData,
 					AxleGearData = axlegearData,
 					AngledriveData = angledriveData,
-					VehicleData = dao.CreateVehicleData(InputDataProvider.VehicleInputData, InputDataProvider.AirdragInputData),
+					VehicleData = dao.CreateVehicleData(InputDataProvider.VehicleInputData),
+					AirdragData = dao.CreateAirdragData(InputDataProvider.AirdragInputData, InputDataProvider.VehicleInputData),
 					DriverData = driver,
 					Aux = dao.CreateAuxiliaryData(InputDataProvider.AuxiliaryInputData()),
 					AdvancedAux = dao.CreateAdvancedAuxData(InputDataProvider.AuxiliaryInputData()),
diff --git a/VectoCore/VectoCore/Models/Declaration/MissionType.cs b/VectoCore/VectoCore/Models/Declaration/MissionType.cs
index 8052e790aa..35dae7e633 100644
--- a/VectoCore/VectoCore/Models/Declaration/MissionType.cs
+++ b/VectoCore/VectoCore/Models/Declaration/MissionType.cs
@@ -29,6 +29,8 @@
 *   Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology
 */
 
+using System;
+
 namespace TUGraz.VectoCore.Models.Declaration
 {
 	public enum MissionType
@@ -69,5 +71,35 @@ namespace TUGraz.VectoCore.Models.Declaration
 			}
 			return self;
 		}
+
+		public static string ToXMLFormat(this MissionType self)
+		{
+			switch (self) {
+				case MissionType.LongHaul:
+				case MissionType.LongHaulEMS:
+					return "Long Haul";
+				case MissionType.RegionalDelivery:
+				case MissionType.RegionalDeliveryEMS:
+					return "Regional Delivery";
+				case MissionType.UrbanDelivery:
+					return "Urban Delivery";
+				case MissionType.MunicipalUtility:
+					return "Municipal Utility";
+				case MissionType.Construction:
+					return "Construction";
+				//case MissionType.HeavyUrban:
+				//	return "";
+				//case MissionType.Urban:
+				//	return "";
+				//case MissionType.Suburban:
+				//	return "";
+				//case MissionType.Interurban:
+				//	return "";
+				//case MissionType.Coach:
+				//	return "";
+				default:
+					throw new ArgumentOutOfRangeException("MissionType", self, null);
+			}
+		}
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Models/Declaration/Segment.cs b/VectoCore/VectoCore/Models/Declaration/Segment.cs
index 24f5a92ce7..9dfa065d27 100644
--- a/VectoCore/VectoCore/Models/Declaration/Segment.cs
+++ b/VectoCore/VectoCore/Models/Declaration/Segment.cs
@@ -37,6 +37,8 @@ namespace TUGraz.VectoCore.Models.Declaration
 {
 	public class Segment
 	{
+		public VehicleClass VehicleClass { get; internal set; }
+
 		public VehicleCategory VehicleCategory { get; set; }
 
 		public AxleConfiguration AxleConfiguration { get; set; }
@@ -47,8 +49,6 @@ namespace TUGraz.VectoCore.Models.Declaration
 
 		public Kilogram GrossVehicleMassRating { get; set; }
 
-		public VehicleClass VehicleClass { get; internal set; }
-
 		public Stream AccelerationFile { get; internal set; }
 
 		public Mission[] Missions { get; internal set; }
@@ -57,6 +57,8 @@ namespace TUGraz.VectoCore.Models.Declaration
 
 		public MeterPerSecond DesignSpeed { get; internal set; }
 
+		public SquareMeter CdADefault { get; internal set; }
+
 		public SquareMeter CdAConstruction { get; internal set; }
 
 		public Kilogram MunicipalBodyWeight { get; internal set; }
diff --git a/VectoCore/VectoCore/Models/Declaration/Segments.cs b/VectoCore/VectoCore/Models/Declaration/Segments.cs
index 17cf2d02f1..ca1951e2f6 100644
--- a/VectoCore/VectoCore/Models/Declaration/Segments.cs
+++ b/VectoCore/VectoCore/Models/Declaration/Segments.cs
@@ -92,6 +92,7 @@ namespace TUGraz.VectoCore.Models.Declaration
 				VehicleHeight = LookupHeight(vehicleCategory, axleConfiguration, grossVehicleMassRating),
 				DesignSpeed = row.ParseDouble("designspeed").KMPHtoMeterPerSecond(),
 				GrossVehicleMassRating = grossVehicleMassRating,
+				CdADefault = row.ParseDouble("cdxa_default").SI<SquareMeter>(),
 				CdAConstruction = string.IsNullOrEmpty(row["cdxa_construction"].ToString())
 					? null
 					: row.ParseDouble("cdxa_construction").SI<SquareMeter>(),
diff --git a/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs b/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs
index bdb4ad19c1..cf94796b32 100644
--- a/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs
@@ -32,6 +32,7 @@
 using System.Collections.Generic;
 using System.ComponentModel.DataAnnotations;
 using System.Linq;
+using System.Xml.Linq;
 using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
@@ -49,6 +50,9 @@ namespace TUGraz.VectoCore.Models.Simulation.Data
 		[ValidateObject]
 		public VehicleData VehicleData { get; internal set; }
 
+		[Required, ValidateObject]
+		public AirdragData AirdragData { get; internal set; }
+
 		[ValidateObject]
 		public CombustionEngineData EngineData { get; internal set; }
 
@@ -81,18 +85,20 @@ namespace TUGraz.VectoCore.Models.Simulation.Data
 		public ExecutionMode ExecutionMode { get; internal set; }
 
 		[Required, MinLength(1)]
-		public string JobName { get; set; }
+		public string JobName { get; internal set; }
 
-		public string ModFileSuffix { get; set; }
+		public string ModFileSuffix { get; internal set; }
 
 		[ValidateObject]
-		public IDeclarationReport Report { get; set; }
+		public IDeclarationReport Report { get; internal set; }
 
 		[Required, ValidateObject]
-		public LoadingType Loading { get; set; }
+		public LoadingType Loading { get; internal set; }
 
 		[ValidateObject]
-		public Mission Mission { get; set; }
+		public Mission Mission { get; internal set; }
+
+		public XElement InputDataHash { get; internal set; }
 
 		public class AuxData
 		{
@@ -108,14 +114,6 @@ namespace TUGraz.VectoCore.Models.Simulation.Data
 			[ValidateObject] public AuxiliaryData Data;
 		}
 
-		public class StartStopData
-		{
-			public bool Enabled;
-			[Required, SIRange(0, 120 / Constants.MeterPerSecondToKMH)] public MeterPerSecond MaxSpeed;
-			[Required, SIRange(0, 100)] public Second MinTime;
-			[Required, SIRange(0, 100)] public Second Delay;
-		}
-
 		public static ValidationResult ValidateRunData(VectoRunData runData, ValidationContext validationContext)
 		{
 			var gearboxData = runData.GearboxData;
diff --git a/VectoCore/VectoCore/Models/Simulation/IVehicleContainer.cs b/VectoCore/VectoCore/Models/Simulation/IVehicleContainer.cs
index f2b90a7edf..46e518f1ae 100644
--- a/VectoCore/VectoCore/Models/Simulation/IVehicleContainer.cs
+++ b/VectoCore/VectoCore/Models/Simulation/IVehicleContainer.cs
@@ -29,7 +29,9 @@
 *   Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology
 */
 
+using System;
 using System.ComponentModel.DataAnnotations;
+using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Models.Connector.Ports;
 using TUGraz.VectoCore.Models.Simulation.Data;
@@ -69,6 +71,7 @@ namespace TUGraz.VectoCore.Models.Simulation
 		/// <summary>
 		/// Finishes the simulation.
 		/// </summary>
-		new void FinishSimulation();
+		/// <param name="exception"></param>
+		void FinishSimulationRun(Exception exception = null);
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
index bf281f6531..551e52b2f5 100644
--- a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
@@ -137,7 +137,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 			// --> axleGear --> (retarder) --> GearBox --> (retarder) --> Clutch --> engine <-- Aux
 			var cycle = new MeasuredSpeedDrivingCycle(container, data.Cycle);
 			var powertrain = cycle
-				.AddComponent(new Vehicle(container, data.VehicleData))
+				.AddComponent(new Vehicle(container, data.VehicleData, data.AirdragData))
 				.AddComponent(new Wheels(container, data.VehicleData.DynamicTyreRadius, data.VehicleData.WheelsInertia))
 				.AddComponent(new Brakes(container))
 				.AddComponent(new AxleGear(container, data.AxleGearData))
@@ -168,7 +168,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 			// MeasuredSpeedDrivingCycle --> vehicle --> wheels --> brakes 
 			// --> axleGear --> (retarder) --> CycleGearBox --> (retarder) --> CycleClutch --> engine <-- Aux
 			var powertrain = new MeasuredSpeedDrivingCycle(container, data.Cycle)
-				.AddComponent(new Vehicle(container, data.VehicleData))
+				.AddComponent(new Vehicle(container, data.VehicleData, data.AirdragData))
 				.AddComponent(new Wheels(container, data.VehicleData.DynamicTyreRadius, data.VehicleData.WheelsInertia))
 				.AddComponent(new Brakes(container))
 				.AddComponent(new AxleGear(container, data.AxleGearData))
@@ -197,7 +197,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 			// --> axleGear --> (retarder) --> gearBox --> (retarder) --> clutch --> engine <-- Aux
 			var cycle = new DistanceBasedDrivingCycle(container, data.Cycle);
 			var powertrain = cycle.AddComponent(new Driver(container, data.DriverData, new DefaultDriverStrategy()))
-				.AddComponent(new Vehicle(container, data.VehicleData))
+				.AddComponent(new Vehicle(container, data.VehicleData, data.AirdragData))
 				.AddComponent(new Wheels(container, data.VehicleData.DynamicTyreRadius, data.VehicleData.WheelsInertia))
 				.AddComponent(new Brakes(container))
 				.AddComponent(new AxleGear(container, data.AxleGearData))
diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs
index 45f7d7dac2..ba64c342f1 100644
--- a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs
@@ -45,6 +45,7 @@ using TUGraz.VectoCore.Models.Declaration;
 using TUGraz.VectoCore.Models.SimulationComponent.Data;
 using TUGraz.VectoCore.OutputData;
 using TUGraz.VectoCore.OutputData.ModFilter;
+using TUGraz.VectoCore.OutputData.XML;
 
 namespace TUGraz.VectoCore.Models.Simulation.Impl
 {
@@ -77,10 +78,11 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 					if (declDataProvider == null) {
 						throw new VectoException("InputDataProvider does not implement DeclarationData interface");
 					}
+					var report = declarationReport ?? new XMLDeclarationReport(writer);
 					if (declarationReport != null) {
 						declarationReport.JobName = declDataProvider.JobInputData().JobName;
 					}
-					DataReader = new DeclarationModeVectoRunDataFactory(declDataProvider, declarationReport);
+					DataReader = new DeclarationModeVectoRunDataFactory(declDataProvider, report);
 					break;
 				case ExecutionMode.Engineering:
 					var engDataProvider = dataProvider as IEngineeringInputDataProvider;
@@ -132,11 +134,11 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 			foreach (var data in DataReader.NextRun()) {
 				var d = data;
 				if (d.Report != null) {
-					d.Report.PrepareResult(d.Loading, d.Mission);
+					d.Report.PrepareResult(d.Loading, d.Mission, d);
 				}
 				Action<ModalDataContainer> addReportResult = writer => {
 					if (d.Report != null) {
-						d.Report.AddResult(d.Loading, d.Mission, writer);
+						d.Report.AddResult(d.Loading, d.Mission, d, writer);
 					}
 				};
 				if (!data.Cycle.CycleType.IsDistanceBased() && ModalResults1Hz && !warning1Hz) {
diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/VectoRun.cs b/VectoCore/VectoCore/Models/Simulation/Impl/VectoRun.cs
index 2d5f0bd1dc..4468139f37 100644
--- a/VectoCore/VectoCore/Models/Simulation/Impl/VectoRun.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Impl/VectoRun.cs
@@ -114,7 +114,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 						if (_cancelled) {
 							Log.Error("Run canceled!");
 							Container.RunStatus = Status.Canceled;
-							Container.FinishSimulation();
+							Container.FinishSimulationRun();
 							return;
 						}
 						Container.AbsTime = AbsTime;
@@ -124,38 +124,40 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 				Log.Error("SIMULATION RUN ABORTED! ========================");
 				Log.Error(vse);
 				Container.RunStatus = Status.Aborted;
-				Container.FinishSimulation();
-				throw new VectoSimulationException("{6} ({7} {8}) - absTime: {0}, distance: {1}, dt: {2}, v: {3}, Gear: {4} | {5}",
-					vse,
-					AbsTime, Container.Distance, dt, Container.VehicleSpeed, TryCatch(() => Container.Gear),
+				var ex = new VectoSimulationException("{6} ({7} {8}) - absTime: {0}, distance: {1}, dt: {2}, v: {3}, Gear: {4} | {5}",
+					vse,AbsTime, Container.Distance, dt, Container.VehicleSpeed, TryCatch(() => Container.Gear),
 					vse.Message, RunIdentifier, CycleName, RunSuffix);
+				Container.FinishSimulationRun(ex);
+				throw ex;
 			} catch (VectoException ve) {
 				Log.Error("SIMULATION RUN ABORTED! ========================");
 				Log.Error(ve);
 				Container.RunStatus = Status.Aborted;
+				var ex = new VectoSimulationException("{6} ({7} {8}) - absTime: {0}, distance: {1}, dt: {2}, v: {3}, Gear: {4} | {5}",
+					ve,
+					AbsTime, Container.Distance, dt, Container.VehicleSpeed, TryCatch(() => Container.Gear), ve.Message,
+					RunIdentifier, CycleName, RunSuffix);
 				try {
-					Container.FinishSimulation();
+					Container.FinishSimulationRun(ex);
 				} catch (Exception ve2) {
 					ve = new VectoException("Multiple Exceptions occured.",
 						new AggregateException(ve, new VectoException("Exception during finishing Simulation.", ve2)));
 				}
-
-				throw new VectoSimulationException("{6} ({7} {8}) - absTime: {0}, distance: {1}, dt: {2}, v: {3}, Gear: {4} | {5}",
-					ve,
-					AbsTime, Container.Distance, dt, Container.VehicleSpeed, TryCatch(() => Container.Gear), ve.Message,
-					RunIdentifier, CycleName, RunSuffix);
+				throw ex;
 			} catch (Exception e) {
 				Log.Error("SIMULATION RUN ABORTED! ========================");
 				Log.Error(e);
 				Container.RunStatus = Status.Aborted;
-				Container.FinishSimulation();
-				throw new VectoSimulationException("{6} ({7} {8}) - absTime: {0}, distance: {1}, dt: {2}, v: {3}, Gear: {4} | {5}",
+				
+				var ex = new VectoSimulationException("{6} ({7} {8}) - absTime: {0}, distance: {1}, dt: {2}, v: {3}, Gear: {4} | {5}",
 					e, AbsTime,
 					Container.Distance, dt, Container.VehicleSpeed, TryCatch(() => Container.Gear), e.Message,
 					RunIdentifier, CycleName, RunSuffix);
+				Container.FinishSimulationRun(ex);
+				throw ex;
 			}
 			Container.RunStatus = Progress < 1 ? Status.Aborted : Status.Success;
-			Container.FinishSimulation();
+			Container.FinishSimulationRun();
 			if (Progress.IsSmaller(1, 1e-9)) {
 				throw new VectoSimulationException(
 					"{5} ({6} {7}) Progress: {8} - absTime: {0}, distance: {1}, dt: {2}, v: {3}, Gear: {4}",
diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/VehicleContainer.cs b/VectoCore/VectoCore/Models/Simulation/Impl/VehicleContainer.cs
index 1d19735199..a4dfbd5cab 100644
--- a/VectoCore/VectoCore/Models/Simulation/Impl/VehicleContainer.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Impl/VehicleContainer.cs
@@ -264,7 +264,10 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 			return Cycle;
 		}
 
-		public FuelType FuelType { get { return ModData.FuelData.FuelType; } }
+		public FuelType FuelType
+		{
+			get { return ModData.FuelData.FuelType; }
+		}
 
 		public Second AbsTime { get; set; }
 
@@ -320,17 +323,22 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 			}
 		}
 
-		public void FinishSimulation()
+		public void FinishSimulationRun(Exception e = null)
 		{
 			Log.Info("VehicleContainer finishing simulation.");
 			ModData.Finish(RunStatus);
 
 			WriteSumData(ModData);
 
-			ModData.FinishSimulation();
+			ModData.FinishSimulation(e);
 			DrivingCycle.FinishSimulation();
 		}
 
+		public void FinishSimulation()
+		{
+			throw new NotImplementedException();
+		}
+
 		public VectoRun.Status RunStatus { get; set; }
 
 		#endregion
@@ -361,6 +369,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 			return DrivingCycle.LookAhead(time);
 		}
 
+
 		public Watt BrakePower
 		{
 			get { return Brakes.BrakePower; }
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/AxleGearData.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/AxleGearData.cs
index 643ed4d1bf..9e753dcb26 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Data/AxleGearData.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/AxleGearData.cs
@@ -29,6 +29,8 @@
 *   Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology
 */
 
+using System;
+using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox;
 
@@ -37,5 +39,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 	public class AxleGearData : SimulationComponentData
 	{
 		[ValidateObject] public TransmissionData AxleGear;
+
+		public AxleLineType LineType;
 	}
+
+	
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/ICrossWindCorrection.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/ICrossWindCorrection.cs
index 535265ffd0..7b96aae29c 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Data/ICrossWindCorrection.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/ICrossWindCorrection.cs
@@ -42,6 +42,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 		void SetDataBus(IDataBus dataBus);
 
 		CrossWindCorrectionMode CorrectionMode { get; }
+
 		SquareMeter AirDragArea { get; }
 
 		Watt AverageAirDragPowerLoss(MeterPerSecond v1, MeterPerSecond v2);
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/SimulationComponentData.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/SimulationComponentData.cs
index 72d66259e2..2eed9ad6e2 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Data/SimulationComponentData.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/SimulationComponentData.cs
@@ -34,6 +34,7 @@ using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Models.Simulation.Data;
+using TUGraz.VectoCore.OutputData.XML;
 using TUGraz.VectoCore.Utils;
 
 namespace TUGraz.VectoCore.Models.SimulationComponent.Data
@@ -48,14 +49,12 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 
 		public string Date { get; internal set; }
 
+		public CertificationMethod CertificationMethod { get; internal set; }
+
 		public string CertificationNumber { get; internal set; }
 
 		public string DigestValueInput { get; internal set; }
 
-		public string DigestValueComputed { get; internal set; }
-
-		public IntegrityStatus IntegrityStatus { get; internal set; }
-
 		protected static ExecutionMode GetExecutionMode(ValidationContext context)
 		{
 			var validationService =
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/VehicleData.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/VehicleData.cs
index 74a4ae43bd..c25999c543 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Data/VehicleData.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/VehicleData.cs
@@ -42,6 +42,18 @@ using TUGraz.VectoCore.Utils;
 
 namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 {
+
+	public class AirdragData : SimulationComponentData
+	{
+
+		public CrossWindCorrectionMode CrossWindCorrectionMode { get; set; }
+
+		[Required, ValidateObject]
+		public ICrossWindCorrection CrossWindCorrectionCurve { get; internal set; }
+
+		public SquareMeter DeclaredAirdragArea { get; internal set; }
+	}
+
 	/// <summary>
 	/// Data Class for the Vehicle
 	/// </summary>
@@ -50,15 +62,15 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 	{
 		public string VIN { get; internal set; }
 
+		public string LegislativeClass { get; internal set; }
+
 		public VehicleCategory VehicleCategory { get; internal set; }
 
 		public VehicleClass VehicleClass { get; internal set; }
 
 		public AxleConfiguration AxleConfiguration { get; internal set; }
 
-		[Required, ValidateObject]
-		public ICrossWindCorrection CrossWindCorrectionCurve { get; internal set; }
-
+		
 		[Required, ValidateObject] private List<Axle> _axleData;
 
 		private KilogramSquareMeter _wheelsInertia;
@@ -150,8 +162,6 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 			protected internal set { _rollResistanceCoefficientWithoutTrailer = value; }
 		}
 
-		public CrossWindCorrectionMode CrossWindCorrectionMode { get; set; }
-
 		public Kilogram TotalVehicleWeight
 		{
 			get {
@@ -168,9 +178,10 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 
 		public Kilogram TotalCurbWeight
 		{
-			get { return CurbWeight ?? 0.SI<Kilogram>(); }
+			get { return (CurbWeight ?? 0.SI<Kilogram>()) + (BodyAndTrailerWeight ?? 0.SI<Kilogram>()); }
 		}
 
+
 		protected void ComputeRollResistanceAndReducedMassWheels()
 		{
 			if (TotalVehicleWeight == 0.SI<Kilogram>()) {
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Vehicle.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Vehicle.cs
index 00db671c14..d6ab6d75a9 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Vehicle.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Vehicle.cs
@@ -50,14 +50,19 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 	{
 		internal readonly VehicleData ModelData;
 
-		public Vehicle(IVehicleContainer container, VehicleData modelData) : base(container)
+		public AirdragData AirdragData;
+
+
+		public Vehicle(IVehicleContainer container, VehicleData modelData, AirdragData airdrag) : base(container)
 		{
 			ModelData = modelData;
-			if (modelData.CrossWindCorrectionCurve != null) {
-				modelData.CrossWindCorrectionCurve.SetDataBus(container);
+			AirdragData = airdrag;
+			if (AirdragData.CrossWindCorrectionCurve != null) {
+				AirdragData.CrossWindCorrectionCurve.SetDataBus(container);
 			}
 		}
 
+
 		public IResponse Initialize(MeterPerSecond vehicleSpeed, Radian roadGradient)
 		{
 			PreviousState = new VehicleState {
@@ -187,7 +192,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 
 		private Watt ComputeAirDragPowerLoss(MeterPerSecond v1, MeterPerSecond v2)
 		{
-			return ModelData.CrossWindCorrectionCurve.AverageAirDragPowerLoss(v1, v2);
+			return AirdragData.CrossWindCorrectionCurve.AverageAirDragPowerLoss(v1, v2);
 		}
 
 		public Meter Distance
diff --git a/VectoCore/VectoCore/OutputData/DeclarationReport.cs b/VectoCore/VectoCore/OutputData/DeclarationReport.cs
index 7c15dd5354..59c107bfa8 100644
--- a/VectoCore/VectoCore/OutputData/DeclarationReport.cs
+++ b/VectoCore/VectoCore/OutputData/DeclarationReport.cs
@@ -43,8 +43,8 @@ namespace TUGraz.VectoCore.OutputData
 {
 	public interface IDeclarationReport
 	{
-		void PrepareResult(LoadingType loading, Mission mission);
-		void AddResult(LoadingType loadingType, Mission mission, IModalDataContainer modData);
+		void PrepareResult(LoadingType loading, Mission mission, VectoRunData runData);
+		void AddResult(LoadingType loadingType, Mission mission, VectoRunData runData, IModalDataContainer modData);
 		void InitializeReport(VectoRunData modelData, Segment segment);
 		string Creator { get; set; }
 		string JobName { get; set; }
@@ -55,45 +55,27 @@ namespace TUGraz.VectoCore.OutputData
 	/// </summary>
 	public abstract class DeclarationReport<T> : IDeclarationReport where T : new()
 	{
-		///// <summary>
-		///// Container class for one mission and the modData for the different loadings.
-		///// </summary>
-		//protected class ResultContainer<TResultEntry>
-		//{
-		//	/// <summary>
-		//	/// The mission
-		//	/// </summary>
-		//	public Mission Mission;
-
-		//	/// <summary>
-		//	/// Dictionary of LoadingTypes and DeclarationResults
-		//	/// </summary>
-		//	public Dictionary<LoadingType, TResultEntry> ModData;
-		//}
 		public class ResultContainer<TEntry>
 		{
-			//public Stream PDFPage;
-			public Mission Mission;
-
-			public MissionProfile MissionProfile;
+			public MissionType Mission;
 
 			public Dictionary<LoadingType, TEntry> ModData;
 		}
 
-		public class MissionProfile
-		{
-			public readonly IList<double> DistanceKm;
-			public readonly IList<double> TargetSpeed;
-			public readonly IList<double> Altitude;
-
-			public MissionProfile(IModalDataContainer m)
-			{
-				DistanceKm = m.GetValues<Meter>(ModalResultField.dist).Select(v => v.ConvertTo().Kilo.Meter).ToDouble();
-				TargetSpeed =
-					m.GetValues<MeterPerSecond>(ModalResultField.v_targ).Select(v => v.ConvertTo().Kilo.Meter.Per.Hour).ToDouble();
-				Altitude = m.GetValues<Meter>(ModalResultField.altitude).ToDouble();
-			}
-		}
+		//public class MissionProfile
+		//{
+		//	public readonly IList<double> DistanceKm;
+		//	public readonly IList<double> TargetSpeed;
+		//	public readonly IList<double> Altitude;
+
+		//	public MissionProfile(IModalDataContainer m)
+		//	{
+		//		DistanceKm = m.GetValues<Meter>(ModalResultField.dist).Select(v => v.ConvertTo().Kilo.Meter).ToDouble();
+		//		TargetSpeed =
+		//			m.GetValues<MeterPerSecond>(ModalResultField.v_targ).Select(v => v.ConvertTo().Kilo.Meter.Per.Hour).ToDouble();
+		//		Altitude = m.GetValues<Meter>(ModalResultField.altitude).ToDouble();
+		//	}
+		//}
 
 		/// <summary>
 		/// Dictionary of MissionTypes and their corresponding results.
@@ -127,12 +109,12 @@ namespace TUGraz.VectoCore.OutputData
 		private int _resultCount;
 
 		[MethodImpl(MethodImplOptions.Synchronized)]
-		public void PrepareResult(LoadingType loading, Mission mission)
+		public void PrepareResult(LoadingType loading, Mission mission, VectoRunData runData)
 		{
 			if (!Missions.ContainsKey(mission.MissionType)) {
 				Missions[mission.MissionType] = new ResultContainer<T>() {
-					Mission = mission,
-					ModData = new Dictionary<LoadingType, T>()
+					Mission = mission.MissionType,
+					ModData = new Dictionary<LoadingType, T>(),
 				};
 			}
 			Missions[mission.MissionType].ModData[loading] = new T();
@@ -140,7 +122,8 @@ namespace TUGraz.VectoCore.OutputData
 
 
 		[MethodImpl(MethodImplOptions.Synchronized)]
-		public void AddResult(LoadingType loadingType, Mission mission, IModalDataContainer modData)
+		public void AddResult(LoadingType loadingType, Mission mission, VectoRunData runData,
+			IModalDataContainer modData)
 		{
 			if (modData.RunStatus != VectoRun.Status.Success) {
 				//Missions.Clear();
@@ -152,12 +135,12 @@ namespace TUGraz.VectoCore.OutputData
 			if (!Missions[mission.MissionType].ModData.ContainsKey(loadingType)) {
 				throw new VectoException("Unknown loading type {0} for mission {1}", loadingType, mission.MissionType);
 			}
-			if (Missions[mission.MissionType].MissionProfile == null) {
-				Missions[mission.MissionType].MissionProfile = new MissionProfile(modData);
-			}
+			//if (Missions[mission.MissionType].MissionProfile == null) {
+			//	Missions[mission.MissionType].MissionProfile = new MissionProfile(modData);
+			//}
 			_resultCount--;
 
-			DoAddResult(Missions[mission.MissionType].ModData[loadingType], loadingType, mission, modData);
+			DoAddResult(Missions[mission.MissionType].ModData[loadingType], runData, modData);
 
 			if (_resultCount == 0) {
 				DoWriteReport();
@@ -170,11 +153,10 @@ namespace TUGraz.VectoCore.OutputData
 		/// Adds the result of one run for the specific mission and loading. If all runs finished (given by the resultCount) the report will be written.
 		/// </summary>
 		/// <param name="entry"></param>
-		/// <param name="loadingType">Type of the loading.</param>
-		/// <param name="mission">The mission.</param>
+		/// <param name="runData"></param>
 		/// <param name="modData">The mod data.</param>
 		[MethodImpl(MethodImplOptions.Synchronized)]
-		protected abstract void DoAddResult(T entry, LoadingType loadingType, Mission mission, IModalDataContainer modData);
+		protected abstract void DoAddResult(T entry, VectoRunData runData, IModalDataContainer modData);
 
 
 		protected internal abstract void DoWriteReport();
diff --git a/VectoCore/VectoCore/OutputData/FileIO/FileOutputWriter.cs b/VectoCore/VectoCore/OutputData/FileIO/FileOutputWriter.cs
index bc2aebf957..87e9681b90 100644
--- a/VectoCore/VectoCore/OutputData/FileIO/FileOutputWriter.cs
+++ b/VectoCore/VectoCore/OutputData/FileIO/FileOutputWriter.cs
@@ -52,6 +52,12 @@ namespace TUGraz.VectoCore.OutputData.FileIO
 			get { return Path.ChangeExtension(_jobFile, Constants.FileExtensions.PDFReport); }
 		}
 
+		public string XMLFullReportName
+		{
+			get { return Path.ChangeExtension(_jobFile, "RESULT.xml"); }
+		}
+
+
 		public string SumFileName
 		{
 			get { return Path.ChangeExtension(_jobFile, Constants.FileExtensions.SumFile); }
@@ -93,7 +99,10 @@ namespace TUGraz.VectoCore.OutputData.FileIO
 			switch (type) {
 				case ReportType.DeclarationReportPdf:
 					return new FileStream(PDFReportName, FileMode.Create);
+				case ReportType.DeclarationReportXMLFulll:
+					return new FileStream(XMLFullReportName, FileMode.Create);
 				default:
+
 					throw new ArgumentOutOfRangeException("type");
 			}
 		}
diff --git a/VectoCore/VectoCore/OutputData/IDataWriter.cs b/VectoCore/VectoCore/OutputData/IDataWriter.cs
index 254835ca38..cb88ba8834 100644
--- a/VectoCore/VectoCore/OutputData/IDataWriter.cs
+++ b/VectoCore/VectoCore/OutputData/IDataWriter.cs
@@ -53,6 +53,8 @@ namespace TUGraz.VectoCore.OutputData
 
 	public enum ReportType
 	{
-		DeclarationReportPdf
+		DeclarationReportPdf,
+		DeclarationReportXMLFulll,
+		DeclarationReportXMLCOC
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/OutputData/IModalDataContainer.cs b/VectoCore/VectoCore/OutputData/IModalDataContainer.cs
index d61e162018..b746e57605 100644
--- a/VectoCore/VectoCore/OutputData/IModalDataContainer.cs
+++ b/VectoCore/VectoCore/OutputData/IModalDataContainer.cs
@@ -32,6 +32,7 @@
 using System;
 using System.Collections.Generic;
 using System.Data;
+using System.Diagnostics;
 using System.Linq;
 using System.Runtime.Remoting.Metadata.W3cXsd2001;
 using TUGraz.VectoCommon.Utils;
@@ -76,6 +77,10 @@ namespace TUGraz.VectoCore.OutputData
 
 		VectoRun.Status RunStatus { get; }
 
+		string Error { get; }
+
+		string StackTrace { get; }
+
 		/// <summary>
 		/// Finishes the writing of the DataWriter.
 		/// </summary>
@@ -85,7 +90,10 @@ namespace TUGraz.VectoCore.OutputData
 
 		IEnumerable<T> GetValues<T>(DataColumn col);
 
+		IEnumerable<T> GetValues<T>(Func<DataRow, T> selectorFunc);
+
 		Dictionary<string, DataColumn> Auxiliaries { get; set; }
+		
 		T TimeIntegral<T>(ModalResultField field, Func<SI, bool> filter = null) where T : SIBase<T>;
 
 		void SetDataValue(string fieldName, object value);
@@ -96,7 +104,8 @@ namespace TUGraz.VectoCore.OutputData
 		/// clear the modal data after the simulation
 		/// called after the simulation is finished and the sum-entries have been written
 		/// </summary>
-		void FinishSimulation();
+		/// <param name="exception"></param>
+		void FinishSimulation(Exception exception = null);
 	}
 
 	public static class ModalDataContainerExtensions
@@ -133,7 +142,7 @@ namespace TUGraz.VectoCore.OutputData
 			return self ?? defaultValue.SI<T>();
 		}
 
-		public static MeterPerSquareSecond AccelerationsPositive(this ModalDataContainer data)
+		public static MeterPerSquareSecond AccelerationsPositive(this IModalDataContainer data)
 		{
 			return data.GetValues<MeterPerSquareSecond>(ModalResultField.acc)
 				.Where(x => x > 0.125)
@@ -141,7 +150,7 @@ namespace TUGraz.VectoCore.OutputData
 				.Average();
 		}
 
-		public static MeterPerSquareSecond AccelerationsNegative(this ModalDataContainer data)
+		public static MeterPerSquareSecond AccelerationsNegative(this IModalDataContainer data)
 		{
 			return data.GetValues<MeterPerSquareSecond>(ModalResultField.acc)
 				.Where(x => x < -0.125)
@@ -149,48 +158,44 @@ namespace TUGraz.VectoCore.OutputData
 				.Average();
 		}
 
-		public static Scalar AccelerationTimeShare(this ModalDataContainer data)
+		public static Scalar AccelerationTimeShare(this IModalDataContainer data)
 		{
-			var accelerationTimeShare = data.Data.Rows.Cast<DataRow>()
-				.Select(x => new {
-					a = x.Field<MeterPerSquareSecond>((int)ModalResultField.acc).DefaultIfNull(0),
-					dt = x.Field<Second>((int)ModalResultField.simulationInterval)
-				})
+			var accelerationTimeShare = data.GetValues(x => new {
+				a = x.Field<MeterPerSquareSecond>((int)ModalResultField.acc).DefaultIfNull(0),
+				dt = x.Field<Second>((int)ModalResultField.simulationInterval)
+			})
 				.Sum(x => x.a > 0.125 ? x.dt : 0.SI<Second>()).DefaultIfNull(0);
 			return 100 * (accelerationTimeShare / data.Duration()).Cast<Scalar>();
 		}
 
-		public static Scalar DecelerationTimeShare(this ModalDataContainer data)
+		public static Scalar DecelerationTimeShare(this IModalDataContainer data)
 		{
-			var decelerationTimeShare = data.Data.Rows.Cast<DataRow>()
-				.Select(x => new {
-					a = x.Field<MeterPerSquareSecond>((int)ModalResultField.acc).DefaultIfNull(0),
-					dt = x.Field<Second>((int)ModalResultField.simulationInterval)
-				})
+			var decelerationTimeShare = data.GetValues(x => new {
+				a = x.Field<MeterPerSquareSecond>((int)ModalResultField.acc).DefaultIfNull(0),
+				dt = x.Field<Second>((int)ModalResultField.simulationInterval)
+			})
 				.Sum(x => x.a < -0.125 ? x.dt : 0.SI<Second>()).DefaultIfNull(0);
 			return 100 * (decelerationTimeShare / data.Duration()).Cast<Scalar>();
 		}
 
-		public static Scalar CruiseTimeShare(this ModalDataContainer data)
+		public static Scalar CruiseTimeShare(this IModalDataContainer data)
 		{
-			var cruiseTime = data.Data.Rows.Cast<DataRow>()
-				.Select(x => new {
-					v = x.Field<MeterPerSecond>((int)ModalResultField.v_act).DefaultIfNull(0),
-					a = x.Field<MeterPerSquareSecond>((int)ModalResultField.acc).DefaultIfNull(0),
-					dt = x.Field<Second>((int)ModalResultField.simulationInterval)
-				})
+			var cruiseTime = data.GetValues(x => new {
+				v = x.Field<MeterPerSecond>((int)ModalResultField.v_act).DefaultIfNull(0),
+				a = x.Field<MeterPerSquareSecond>((int)ModalResultField.acc).DefaultIfNull(0),
+				dt = x.Field<Second>((int)ModalResultField.simulationInterval)
+			})
 				.Sum(x => x.v >= 0.1.KMPHtoMeterPerSecond() && x.a.IsBetween(-0.125, 0.125) ? x.dt : 0.SI<Second>())
 				.DefaultIfNull(0);
 			return 100 * (cruiseTime / data.Duration()).Cast<Scalar>();
 		}
 
-		public static Scalar StopTimeShare(this ModalDataContainer data)
+		public static Scalar StopTimeShare(this IModalDataContainer data)
 		{
-			var stopTime = data.Data.Rows.Cast<DataRow>()
-				.Select(x => new {
-					v = x.Field<MeterPerSecond>((int)ModalResultField.v_act).DefaultIfNull(0),
-					dt = x.Field<Second>((int)ModalResultField.simulationInterval)
-				})
+			var stopTime = data.GetValues(x => new {
+				v = x.Field<MeterPerSecond>((int)ModalResultField.v_act).DefaultIfNull(0),
+				dt = x.Field<Second>((int)ModalResultField.simulationInterval)
+			})
 				.Sum(x => x.v < 0.1.KMPHtoMeterPerSecond() ? x.dt : 0.SI<Second>()) ?? 0.SI<Second>();
 			return 100 * (stopTime / data.Duration()).Cast<Scalar>();
 		}
@@ -455,26 +460,30 @@ namespace TUGraz.VectoCore.OutputData
 		}
 
 
-		public static MeterPerSecond MaxSpeed(this ModalDataContainer data)
+		public static MeterPerSecond MaxSpeed(this IModalDataContainer data)
 		{
 			return data.Max<MeterPerSecond>(ModalResultField.v_act).DefaultIfNull(0);
 		}
 
-		public static MeterPerSquareSecond MaxAcceleration(this ModalDataContainer data)
+		public static MeterPerSecond MinSpeed(this IModalDataContainer data)
+		{
+			return data.Min<MeterPerSecond>(ModalResultField.v_act).DefaultIfNull(0);
+		}
+
+		public static MeterPerSquareSecond MaxAcceleration(this IModalDataContainer data)
 		{
 			return data.Max<MeterPerSquareSecond>(ModalResultField.acc).DefaultIfNull(0);
 		}
 
-		public static MeterPerSquareSecond MaxDeceleration(this ModalDataContainer data)
+		public static MeterPerSquareSecond MaxDeceleration(this IModalDataContainer data)
 		{
 			return -data.Min<MeterPerSquareSecond>(ModalResultField.acc).DefaultIfNull(0);
 		}
 
-		public static PerSecond AvgEngineSpeed(this ModalDataContainer data)
+		public static PerSecond AvgEngineSpeed(this IModalDataContainer data)
 		{
-			var integral = data.Data.Rows.Cast<DataRow>()
-				.Sum(x => x.Field<PerSecond>((int)ModalResultField.n_eng_avg).Value() *
-						x.Field<Second>((int)ModalResultField.simulationInterval).Value());
+			var integral = data.GetValues(x => x.Field<PerSecond>((int)ModalResultField.n_eng_avg).Value() *
+												x.Field<Second>((int)ModalResultField.simulationInterval).Value()).Sum();
 			return (integral / Duration(data).Value()).SI<PerSecond>();
 		}
 
@@ -483,72 +492,71 @@ namespace TUGraz.VectoCore.OutputData
 			return data.Max<PerSecond>(ModalResultField.n_eng_avg);
 		}
 
-		public static Scalar EngineMaxLoadTimeShare(this ModalDataContainer data)
+		public static Scalar EngineMaxLoadTimeShare(this IModalDataContainer data)
 		{
-			var sum = data.Data.Rows.Cast<DataRow>()
-				.Select(x => new {
-					tMax = x.Field<NewtonMeter>((int)ModalResultField.Tq_full).DefaultIfNull(-1),
-					tEng = x.Field<NewtonMeter>((int)ModalResultField.T_eng_fcmap).DefaultIfNull(0),
-					dt = x.Field<Second>((int)ModalResultField.simulationInterval)
-				})
-				.Sum(x => x.tMax.IsEqual(x.tEng, 5.SI<NewtonMeter>()) ? x.dt : 0.SI<Second>()) ?? 0.SI<Second>();
+			var sum = data.GetValues(x => new {
+				tMax = x.Field<NewtonMeter>((int)ModalResultField.Tq_full).DefaultIfNull(-1),
+				tEng = x.Field<NewtonMeter>((int)ModalResultField.T_eng_fcmap).DefaultIfNull(0),
+				dt = x.Field<Second>((int)ModalResultField.simulationInterval)
+			}).Sum(x => x.tMax.IsEqual(x.tEng, 5.SI<NewtonMeter>()) ? x.dt : 0.SI<Second>()) ?? 0.SI<Second>();
 			return 100 * sum / Duration(data);
 		}
 
-		public static Scalar GearshiftCount(this ModalDataContainer data)
+		public static Scalar GearshiftCount(this IModalDataContainer data)
 		{
 			var prevGear = data.GetValues<uint>(ModalResultField.Gear).First();
 			var gearCount = 0;
-			foreach (DataRow row in data.Data.Rows) {
-				var gear = row.Field<uint>((int)ModalResultField.Gear);
-				var speed = row.Field<MeterPerSecond>((int)ModalResultField.v_act);
+
+			data.GetValues(x => {
+				var gear = x.Field<uint>((int)ModalResultField.Gear);
+				var speed = x.Field<MeterPerSecond>((int)ModalResultField.v_act);
 				if (speed != null && speed.IsSmallerOrEqual(0.1)) {
 					prevGear = 0;
 					gearCount++;
-					continue;
+					return gear; // not used
 				}
 				if (gear == 0 || gear == prevGear) {
-					continue;
+					return gear; // not used
 				}
 				gearCount++;
 				prevGear = gear;
-			}
+				return gear; // not used
+			});
 			return gearCount.SI<Scalar>();
 		}
 
-		public static Scalar CoastingTimeShare(this ModalDataContainer data)
+		public static Scalar CoastingTimeShare(this IModalDataContainer data)
 		{
-			var sum = data.Data.Rows.Cast<DataRow>()
-				.Select(x => new {
-					DrivingBehavior = x.Field<DrivingBehavior>((int)ModalResultField.drivingBehavior),
-					dt = x.Field<Second>((int)ModalResultField.simulationInterval)
-				})
+			var sum = data.GetValues(x => new {
+				DrivingBehavior = x.Field<DrivingBehavior>((int)ModalResultField.drivingBehavior),
+				dt = x.Field<Second>((int)ModalResultField.simulationInterval)
+			})
 				.Sum(x => x.DrivingBehavior == DrivingBehavior.Coasting ? x.dt : 0.SI<Second>()) ?? 0.SI<Second>();
 			return 100 * sum / Duration(data);
 		}
 
-		public static Scalar BrakingTimeShare(this ModalDataContainer data)
+		public static Scalar BrakingTimeShare(this IModalDataContainer data)
 		{
-			var sum = data.Data.Rows.Cast<DataRow>()
-				.Select(x => new {
-					DrivingBehavior = x.Field<DrivingBehavior>((int)ModalResultField.drivingBehavior),
-					dt = x.Field<Second>((int)ModalResultField.simulationInterval)
-				})
+			var sum = data.GetValues(x => new {
+				DrivingBehavior = x.Field<DrivingBehavior>((int)ModalResultField.drivingBehavior),
+				dt = x.Field<Second>((int)ModalResultField.simulationInterval)
+			})
 				.Sum(x => x.DrivingBehavior == DrivingBehavior.Braking ? x.dt : 0.SI<Second>()) ?? 0.SI<Second>();
 			return 100 * sum / Duration(data);
 		}
 
-		public static Dictionary<uint, Scalar> TimeSharePerGear(this ModalDataContainer data, uint gearCount)
+		public static Dictionary<uint, Scalar> TimeSharePerGear(this IModalDataContainer data, uint gearCount)
 		{
 			var retVal = new Dictionary<uint, Scalar>();
 			for (uint i = 0; i <= gearCount; i++) {
 				retVal[i] = 0.SI<Scalar>();
 			}
 
-			foreach (var dataRow in data.Data.Rows.Cast<DataRow>()) {
-				var gear = dataRow.Field<uint>((int)ModalResultField.Gear);
-				retVal[gear] += dataRow.Field<Second>((int)ModalResultField.simulationInterval).Value();
-			}
+			data.GetValues(x => {
+				var gear = x.Field<uint>((int)ModalResultField.Gear);
+				retVal[gear] += x.Field<Second>((int)ModalResultField.simulationInterval).Value();
+				return gear; // not used
+			});
 
 			var duration = Duration(data).Value();
 			for (uint i = 0; i <= gearCount; i++) {
diff --git a/VectoCore/VectoCore/OutputData/ModalDataContainer.cs b/VectoCore/VectoCore/OutputData/ModalDataContainer.cs
index 433f526adb..a6a5ec86d9 100644
--- a/VectoCore/VectoCore/OutputData/ModalDataContainer.cs
+++ b/VectoCore/VectoCore/OutputData/ModalDataContainer.cs
@@ -32,6 +32,7 @@
 using System;
 using System.Collections.Generic;
 using System.Data;
+using System.Diagnostics;
 using System.Globalization;
 using System.Linq;
 using System.Runtime.CompilerServices;
@@ -53,6 +54,7 @@ namespace TUGraz.VectoCore.OutputData
 
 		private readonly IModalDataWriter _writer;
 		private readonly List<string> _additionalColumns = new List<string>();
+		private Exception SimException;
 		public string RunName { get; private set; }
 		public string CycleName { get; private set; }
 		public string RunSuffix { get; private set; }
@@ -61,6 +63,9 @@ namespace TUGraz.VectoCore.OutputData
 
 		public VectoRun.Status RunStatus { get; protected set; }
 
+		public string Error { get { return SimException == null ? null : SimException.Message; } }
+		public string StackTrace { get { return SimException == null ? null : SimException.StackTrace; } }
+
 		public bool WriteAdvancedAux { get; set; }
 
 		public ModalDataContainer(string runName, FuelType fuel, IModalDataWriter writer, bool writeEngineOnly = false)
@@ -242,6 +247,11 @@ namespace TUGraz.VectoCore.OutputData
 			return Data.Rows.Cast<DataRow>().Select(x => x.Field<T>(col));
 		}
 
+		public IEnumerable<T> GetValues<T>(Func<DataRow, T> selectorFunc)
+		{
+			return from DataRow row in Data.Rows select selectorFunc(row);
+		}
+
 		public T TimeIntegral<T>(ModalResultField field, Func<SI, bool> filter = null) where T : SIBase<T>
 		{
 			var result = 0.0;
@@ -311,8 +321,9 @@ namespace TUGraz.VectoCore.OutputData
 			}
 		}
 
-		public void FinishSimulation()
+		public void FinishSimulation(Exception exception)
 		{
+			SimException = exception;
 			//Data.Clear(); //.Rows.Clear();
 			Data = null;
 			CurrentRow = null;
diff --git a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs
index 36e2b904b2..2c992aa64d 100644
--- a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs
+++ b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs
@@ -306,7 +306,8 @@ namespace TUGraz.VectoCore.OutputData
 				row[VEHICLE_MODEL] = runData.VehicleData.ModelName;
 
 				row[HDV_CO2_VEHICLE_CLASS] = runData.VehicleData.VehicleClass.GetClassNumber();
-				row[CURB_MASS] = runData.VehicleData.CurbWeight - (runData.VehicleData.BodyAndTrailerWeight ?? 0.SI<Kilogram>());
+				row[CURB_MASS] = runData.VehicleData.CurbWeight;
+					// - (runData.VehicleData.BodyAndTrailerWeight ?? 0.SI<Kilogram>());
 				row[LOADING] = runData.VehicleData.Loading;
 				row[CARGO_VOLUME] = runData.VehicleData.CargoVolume;
 
@@ -330,7 +331,7 @@ namespace TUGraz.VectoCore.OutputData
 				row[ENGINE_CF_REG_PER] = runData.EngineData.CorrectionFactorRegPer;
 				row[ENGINE_ACTUAL_CORRECTION_FACTOR] = runData.EngineData.FuelConsumptionCorrectionFactor;
 
-				row[CD_x_A] = runData.VehicleData.CrossWindCorrectionCurve.AirDragArea;
+				row[CD_x_A] = runData.AirdragData.CrossWindCorrectionCurve.AirDragArea;
 
 				row[ROLLING_RESISTANCE_COEFFICIENT_WO_TRAILER] =
 					runData.VehicleData.RollResistanceCoefficientWithoutTrailer;
@@ -514,38 +515,33 @@ namespace TUGraz.VectoCore.OutputData
 
 
 			row[ACC] = modData.AccelerationAverage();
-			var modal = modData as ModalDataContainer;
-			if (modal == null) {
-				Log.Error("unknown modal data container!");
-				return;
-			}
-			row[ACC_POS] = modal.AccelerationsPositive();
-			row[ACC_NEG] = modal.AccelerationsNegative();
-			var accTimeShare = modal.AccelerationTimeShare();
+			row[ACC_POS] = modData.AccelerationsPositive();
+			row[ACC_NEG] = modData.AccelerationsNegative();
+			var accTimeShare = modData.AccelerationTimeShare();
 			row[ACC_TIMESHARE] = accTimeShare;
-			var decTimeShare = modal.DecelerationTimeShare();
+			var decTimeShare = modData.DecelerationTimeShare();
 			row[DEC_TIMESHARE] = decTimeShare;
-			var cruiseTimeShare = modal.CruiseTimeShare();
+			var cruiseTimeShare = modData.CruiseTimeShare();
 			row[CRUISE_TIMESHARE] = cruiseTimeShare;
-			var stopTimeShare = modal.StopTimeShare();
+			var stopTimeShare = modData.StopTimeShare();
 			row[STOP_TIMESHARE] = stopTimeShare;
 
-			row[MAX_SPEED] = modal.MaxSpeed().AsKmph.SI<Scalar>();
-			row[MAX_ACCELERATION] = modal.MaxAcceleration();
-			row[MAX_DECELERATION] = modal.MaxDeceleration();
-			row[AVG_ENGINE_SPEED] = modal.AvgEngineSpeed().AsRPM.SI<Scalar>();
+			row[MAX_SPEED] = modData.MaxSpeed().AsKmph.SI<Scalar>();
+			row[MAX_ACCELERATION] = modData.MaxAcceleration();
+			row[MAX_DECELERATION] = modData.MaxDeceleration();
+			row[AVG_ENGINE_SPEED] = modData.AvgEngineSpeed().AsRPM.SI<Scalar>();
 			row[MAX_ENGINE_SPEED] = modData.MaxEngineSpeed().AsRPM.SI<Scalar>();
 
-			row[ENGINE_FULL_LOAD_TIME_SHARE] = modal.EngineMaxLoadTimeShare();
-			row[COASTING_TIME_SHARE] = modal.CoastingTimeShare();
-			row[BRAKING_TIME_SHARE] = modal.BrakingTimeShare();
+			row[ENGINE_FULL_LOAD_TIME_SHARE] = modData.EngineMaxLoadTimeShare();
+			row[COASTING_TIME_SHARE] = modData.CoastingTimeShare();
+			row[BRAKING_TIME_SHARE] = modData.BrakingTimeShare();
 
 			if (gearCount <= 0) {
 				return;
 			}
 
-			row[NUM_GEARSHIFTS] = modal.GearshiftCount();
-			var timeSharePerGear = modal.TimeSharePerGear(gearCount);
+			row[NUM_GEARSHIFTS] = modData.GearshiftCount();
+			var timeSharePerGear = modData.TimeSharePerGear(gearCount);
 
 			for (uint i = 0; i <= gearCount; i++) {
 				var colName = string.Format(TIME_SHARE_PER_GEAR_FORMAT, i);
diff --git a/VectoCore/VectoCore/OutputData/XML/AbstractXMLWriter.cs b/VectoCore/VectoCore/OutputData/XML/AbstractXMLWriter.cs
index 380ff1eb79..294928d83c 100644
--- a/VectoCore/VectoCore/OutputData/XML/AbstractXMLWriter.cs
+++ b/VectoCore/VectoCore/OutputData/XML/AbstractXMLWriter.cs
@@ -6,15 +6,15 @@ using System.Xml;
 using System.Xml.Linq;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Resources;
 using TUGraz.VectoCommon.Utils;
-using TUGraz.VectoCore.Resources;
 
 namespace TUGraz.IVT.VectoXML.Writer
 {
 	public abstract class AbstractXMLWriter
 	{
 		//protected const string SchemaLocationBaseUrl = "http://markus.quaritsch.at/VECTO/";
-		protected const string SchemaLocationBaseUrl = "https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/";
+		public const string SchemaLocationBaseUrl = "https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/";
 		protected const string SchemaVersion = "0.8";
 
 		protected XNamespace tns;
@@ -64,57 +64,6 @@ namespace TUGraz.IVT.VectoXML.Writer
 							})))
 				.Cast<object>().ToArray();
 		}
-
-		protected string GetVehicleCategoryXML(VehicleCategory vehicleCategory)
-		{
-			switch (vehicleCategory) {
-				case VehicleCategory.Coach:
-				case VehicleCategory.Tractor:
-					return vehicleCategory.ToString();
-				case VehicleCategory.CityBus:
-					return "City Bus";
-				case VehicleCategory.InterurbanBus:
-					return "Interurban Bus";
-				case VehicleCategory.RigidTruck:
-					return "Rigid Truck";
-
-				default:
-					throw new ArgumentOutOfRangeException("vehicleCategory", vehicleCategory, null);
-			}
-		}
-
-		protected string GetCorrectionModeXML(CrossWindCorrectionMode mode)
-		{
-			switch (mode) {
-				case CrossWindCorrectionMode.NoCorrection:
-					return "No Correction";
-				case CrossWindCorrectionMode.SpeedDependentCorrectionFactor:
-					return "Speed Dependent Correction Factor";
-				case CrossWindCorrectionMode.VAirBetaLookupTable:
-					return "VAir Beta Lookup Table";
-				case CrossWindCorrectionMode.DeclarationModeCorrection:
-					return "Declaration Mode Correction";
-				default:
-					throw new ArgumentOutOfRangeException("CrosswindCorrection", mode, null);
-			}
-		}
-
-		protected string GetRetarterTypeXML(RetarderType type)
-		{
-			switch (type) {
-				case RetarderType.None:
-					return "None";
-				case RetarderType.TransmissionInputRetarder:
-					return "Transmission Input Retarder";
-				case RetarderType.TransmissionOutputRetarder:
-					return "Transmission Output Retarder";
-				case RetarderType.EngineRetarder:
-					return "Engine Retarder";
-				case RetarderType.LossesIncludedInTransmission:
-					return "Losses included in Gearbox";
-				default:
-					throw new ArgumentOutOfRangeException("RetarderType", type, null);
-			}
-		}
+		
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/OutputData/XML/AttributeMappings.cs b/VectoCore/VectoCore/OutputData/XML/AttributeMappings.cs
index a51c7530eb..40b15debe4 100644
--- a/VectoCore/VectoCore/OutputData/XML/AttributeMappings.cs
+++ b/VectoCore/VectoCore/OutputData/XML/AttributeMappings.cs
@@ -1,9 +1,9 @@
 using System.Collections.Generic;
+using TUGraz.VectoCommon.Resources;
 using TUGraz.VectoCore.InputData.Reader;
 using TUGraz.VectoCore.InputData.Reader.ComponentData;
 using TUGraz.VectoCore.Models.Declaration;
 using TUGraz.VectoCore.Models.SimulationComponent.Data.Engine;
-using TUGraz.VectoCore.Resources;
 
 namespace TUGraz.IVT.VectoXML
 {
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs
index 2b3fb7b9e2..bfa8f3092f 100644
--- a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs
+++ b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs
@@ -1,5 +1,6 @@
 using System;
 using System.Collections.Generic;
+using System.Diagnostics;
 using System.Globalization;
 using System.Linq;
 using System.Security.Cryptography;
@@ -10,215 +11,193 @@ using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Models.Declaration;
 using TUGraz.VectoCore.Models.Simulation.Data;
+using TUGraz.VectoCore.Models.Simulation.Impl;
 using TUGraz.VectoCore.Models.SimulationComponent.Data;
 
 namespace TUGraz.VectoCore.OutputData.XML
 {
 	public class XMLDeclarationReport : DeclarationReport<XMLDeclarationReport.ResultEntry>
 	{
+		private XMLFullReport _fullReport;
+		private IOutputDataWriter Writer;
+
 		public class ResultEntry
 		{
-			public MeterPerSecond AverageSpeed;
-			public SI FcLiterPer100Km;
+			public MeterPerSecond AverageSpeed { get; private set; }
 
-			public SI Co2GramPerKilometer;
+			public Joule EnergyConsumptionTotal { get; private set; }
 
-			public void SetResultData(IModalDataContainer data)
-			{
-				AverageSpeed = data.Speed();
-				FcLiterPer100Km = data.FuelConsumptionFinalLiterPer100Kilometer() ?? 0.SI();
+			public Kilogram CO2Total { get; private set; }
 
-				Co2GramPerKilometer = (data.CO2PerMeter() ?? 0.SI<KilogramPerMeter>()).ConvertTo().Gramm.Per.Kilo.Meter;
-			}
-		}
+			public Kilogram FuelConsumptionTotal { get; private set; }
 
-		protected XElement VehicleConfiguration;
-		protected XElement IntegrityStatus;
+			public Meter Distance { get; private set; }
 
+			public Scalar GearshiftCount { get; private set; }
 
-		public XMLDeclarationReport()
-		{
-			Report = new XDocument(new XDeclaration("1.0", "utf-8", "yes"));
-		}
+			public Scalar FullLoadPercentage { get; private set; }
 
-		public XDocument Report { get; private set; }
+			public MeterPerSquareSecond MaxDeceleration { get; private set; }
 
+			public MeterPerSquareSecond MaxAcceleration { get; private set; }
 
-		protected override void DoAddResult(ResultEntry entry, LoadingType loadingType, Mission mission,
-			IModalDataContainer modData)
-		{
-			entry.SetResultData(modData);
-		}
+			public MeterPerSecond MaxSpeed { get; private set; }
 
-		protected internal override void DoWriteReport()
-		{
-			var xsi = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance");
-			var xsd = XNamespace.Get("http://www.w3.org/2001/XMLSchema");
-			XNamespace vectoNs = @"VectoOutput.XSD";
-			var vectoVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
-
-			Report.Add(new XElement("VectoOutput",
-				new XAttribute("schemaVersion", "0.1"),
-				new XAttribute("type", "declaration"),
-				//new XAttribute("xmlns", vectoNs.NamespaceName),
-				new XAttribute(xsi + "noNamespaceSchemaLocation", vectoNs.NamespaceName),
-				new XAttribute(XNamespace.Xmlns + "xsi", xsi.NamespaceName),
-				new XElement("DeclarationReport",
-					new XAttribute("id", GetReportID()),
-					new XElement("AppVersion", vectoVersion),
-					new XElement("Date", XmlConvert.ToString(DateTime.Now, XmlDateTimeSerializationMode.Utc)),
-					VehicleConfiguration,
-					IntegrityStatus,
-					new XElement("SimulationResults",
-						Missions.OrderBy(m => m.Key).Select((m, i) => GetResult(m.Value, i))
-						)
-					),
-				new XElement("Signature")
-				)
-				);
-		}
+			public MeterPerSecond MinSpeed { get; private set; }
 
+			public string Error { get; private set; }
 
-		private static XElement[] GetResult(ResultContainer<ResultEntry> result, int i)
-		{
-			var retVal = new List<XElement>();
-			foreach (var pair in result.ModData) {
-				var data = pair.Value;
-				var loading = result.Mission.Loadings[pair.Key];
-
-				retVal.Add(new XElement("SimulationRun",
-					new XElement("DrivingCycle", result.Mission.MissionType.ToString()),
-					new XElement("Loading",
-						new XAttribute("unit", "kg"),
-						loading.ToOutputFormat(1)),
-					GetFuelConsumptionReport(data, loading),
-					GetCO2Report(data, loading),
-					new XElement("AvgSpeed",
-						new XAttribute("unit", "km/h"),
-						data.AverageSpeed.ConvertTo().Kilo.Meter.Per.Hour.ToOutputFormat(3)
-						)
-					)
-					);
-			}
-			return retVal.ToArray();
-		}
+			public VectoRun.Status Status { get; private set; }
 
-		private static XElement GetCO2Report(ResultEntry data, Kilogram loading)
-		{
-			var retVal = new XElement("CO2Results",
-				new XElement("CO2",
-					new XAttribute("unit", "g/km"), data.Co2GramPerKilometer.ToOutputFormat(3)));
-			if (!loading.IsEqual(0)) {
-				retVal.Add(new XElement("CO2",
-					new XAttribute("unit", "g/t.km"), (data.Co2GramPerKilometer / loading.ConvertTo().Ton).ToOutputFormat(3)));
-			}
-			return retVal;
-		}
+			public string StackTrace { get; private set; }
 
-		private static XElement GetFuelConsumptionReport(ResultEntry data, Kilogram loading)
-		{
-			var retVal = new XElement("FuelConsumptionResults",
-				new XElement("FuelConsumption",
-					new XAttribute("unit", "l/100km"), data.FcLiterPer100Km.ToOutputFormat(3)));
-			if (!loading.IsEqual(0)) {
-				retVal.Add(new XElement("FuelConsumption",
-					new XAttribute("unit", "l/100t.km"), (data.FcLiterPer100Km / loading.ConvertTo().Ton).ToOutputFormat(3)));
+			public FuelType FuelType { get; private set; }
+
+			public Kilogram Payload { get; private set; }
+
+			public Kilogram TotalVehicleWeight { get; private set; }
+
+			public CubicMeter CargoVolume { get; private set; }
+
+
+			public void SetResultData(VectoRunData runData, IModalDataContainer data)
+			{
+				FuelType = data.FuelData.FuelType;
+				Payload = runData.VehicleData.Loading;
+				CargoVolume = runData.VehicleData.CargoVolume;
+				TotalVehicleWeight = runData.VehicleData.TotalVehicleWeight;
+				Status = data.RunStatus;
+				Error = data.Error;
+				StackTrace = data.StackTrace;
+				AverageSpeed = data.Speed();
+				MinSpeed = data.MinSpeed();
+				MaxSpeed = data.MaxSpeed();
+				MaxAcceleration = data.MaxAcceleration();
+				MaxDeceleration = data.MaxDeceleration();
+				FullLoadPercentage = data.EngineMaxLoadTimeShare();
+				GearshiftCount = data.GearshiftCount();
+
+				Distance = data.Distance();
+
+				FuelConsumptionTotal = data.TimeIntegral<Kilogram>(ModalResultField.FCFinal);
+				CO2Total = FuelConsumptionTotal * data.FuelData.CO2PerFuelWeight;
+				EnergyConsumptionTotal = FuelConsumptionTotal * data.FuelData.LowerHeatingValue;
 			}
-			return retVal;
 		}
 
-		private static string GetReportID()
+		public XMLDeclarationReport(IOutputDataWriter writer = null)
 		{
-			var md5 = MD5.Create();
-			return string.Format("VECTO-{0}",
-				Convert.ToBase64String(
-					md5.ComputeHash(Encoding.UTF8.GetBytes(DateTime.UtcNow.ToString(CultureInfo.InvariantCulture)))
-					)
-				);
+			_fullReport = new XMLFullReport(); //new XDocument(new XDeclaration("1.0", "utf-8", "yes"));
+			//CustomerReport = new XDocument(new XDeclaration("1.0", "utf-8", "yes"));
+
+			Writer = writer;
 		}
 
-		protected override void DoInitializeReport(VectoRunData modelData, Segment segment)
+		public XDocument FullReport
 		{
-			VehicleConfiguration = new XElement("Vehicle",
-				new XAttribute("id", modelData.VehicleData.CertificationNumber),
-				GetComponentAttributes(modelData.VehicleData));
-			var components = new XElement("Components",
-				GetComponentDescription("Engine", modelData.EngineData),
-				GetComponentDescription("Gearbox", modelData.GearboxData),
-				GetComponentDescription("Axlegear", modelData.AxleGearData)
-				);
-			if (modelData.Retarder.Type != RetarderType.None) {
-				components.Add(GetComponentDescription("Retarder", modelData.Retarder));
-			}
-			components.Add(GetWheelsDescription(modelData.VehicleData.AxleData));
-			components.Add(GetAuxiliariesDescription(modelData.Aux));
-			VehicleConfiguration.Add(components);
-
-			IntegrityStatus = new XElement("SignatureVerification");
-			IntegrityStatus.Add(GetIntegrityStatus(modelData.VehicleData));
-			IntegrityStatus.Add(GetIntegrityStatus(modelData.EngineData));
-			IntegrityStatus.Add(GetIntegrityStatus(modelData.GearboxData));
-			IntegrityStatus.Add(GetIntegrityStatus(modelData.AxleGearData));
-			if (modelData.Retarder.Type != RetarderType.None) {
-				IntegrityStatus.Add(GetIntegrityStatus(modelData.Retarder));
-			}
+			get { return _fullReport.Report; }
 		}
 
-		private static XElement GetIntegrityStatus(SimulationComponentData component)
+
+		protected override void DoAddResult(ResultEntry entry, VectoRunData runData, IModalDataContainer modData)
 		{
-			return new XElement("Entry",
-				new XAttribute("ref", component.CertificationNumber),
-				new XAttribute("digest", component.DigestValueInput),
-				new XAttribute("check", component.IntegrityStatus));
+			entry.SetResultData(runData, modData);
 		}
 
-		private static XElement GetAuxiliariesDescription(IEnumerable<VectoRunData.AuxData> aux)
+		protected internal override void DoWriteReport()
 		{
-			var retVal = new XElement("Component",
-				new XAttribute("type", "Auxiliaries"),
-				new XAttribute("id", "AUX"));
-			foreach (var auxData in aux) {
-				retVal.Add(new XElement("Auxiliary",
-					new XAttribute("name", auxData.ID),
-					new XAttribute("technology", auxData.Technology)
-					));
+			foreach (var result in Missions.OrderBy(m => m.Key)) {
+				_fullReport.AddResult(result.Value);
 			}
-			return retVal;
-		}
 
-		private static XElement GetWheelsDescription(List<Axle> axleData)
-		{
-			var retVal = new XElement("Component",
-				new XAttribute("type", "AxleWheels"),
-				new XAttribute("id", "AXL"));
-
-			foreach (var axle in axleData.Where(axle => axle.AxleType != AxleType.Trailer)) {
-				retVal.Add(new XElement("Axle",
-					new XAttribute("twinTyres", axle.TwinTyres),
-					new XAttribute("axleType", axle.AxleType.ToString()),
-					new XElement("Dimension", axle.WheelsDimension),
-					GetComponentAttributes(axle)));
+			if (Writer != null) {
+				var xmlWriter = new XmlTextWriter(Writer.WriteStream(ReportType.DeclarationReportXMLFulll), Encoding.UTF8) {
+					Formatting = Formatting.Indented
+				};
+				_fullReport.Report.WriteTo(xmlWriter);
+				xmlWriter.Flush();
+				xmlWriter.Close();
 			}
 
-			return retVal;
+			//var xsi = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance");
+			//var xsd = XNamespace.Get("http://www.w3.org/2001/XMLSchema");
+			//XNamespace vectoNs = @"VectoOutput.XSD";
+			//var vectoVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
+
+			//FullReport.Add(new XElement("VectoOutput",
+			//	new XAttribute("schemaVersion", "0.1"),
+			//	new XAttribute("type", "declaration"),
+			//	//new XAttribute("xmlns", vectoNs.NamespaceName),
+			//	new XAttribute(xsi + "noNamespaceSchemaLocation", vectoNs.NamespaceName),
+			//	new XAttribute(XNamespace.Xmlns + "xsi", xsi.NamespaceName),
+			//	new XElement("DeclarationReport",
+			//		new XAttribute("id", GetReportID()),
+			//		new XElement("AppVersion", vectoVersion),
+			//		new XElement("Date", XmlConvert.ToString(DateTime.Now, XmlDateTimeSerializationMode.Utc)),
+			//		VehicleConfiguration,
+			//		IntegrityStatus,
+			//		new XElement("SimulationResults",
+			//			Missions.OrderBy(m => m.Key).Select((m, i) => GetResult(m.Value, i))
+			//			)
+			//		),
+			//	new XElement("Signature")
+			//	)
+			//	);
 		}
 
-		private static XElement GetComponentDescription(string type, SimulationComponentData component)
-		{
-			return new XElement("Component",
-				new XAttribute("type", type),
-				new XAttribute("id", component.CertificationNumber),
-				GetComponentAttributes(component));
-		}
 
-		private static XElement[] GetComponentAttributes(SimulationComponentData component)
+		//private static XElement[] GetResult(ResultContainer<ResultEntry> result, int i)
+		//{
+		//	var retVal = new List<XElement>();
+		//	foreach (var pair in result.ModData) {
+		//		var data = pair.Value;
+		//		var loading = result.Mission.Loadings[pair.Key];
+
+		//		retVal.Add(new XElement("SimulationRun",
+		//			new XElement("DrivingCycle", result.Mission.MissionType.ToString()),
+		//			new XElement("Loading",
+		//				new XAttribute("unit", "kg"),
+		//				loading.ToOutputFormat(1)),
+		//			GetFuelConsumptionReport(data, loading),
+		//			GetCO2Report(data, loading),
+		//			new XElement("AvgSpeed",
+		//				new XAttribute("unit", "km/h"),
+		//				data.AverageSpeed.ConvertTo().Kilo.Meter.Per.Hour.ToOutputFormat(3)
+		//				)
+		//			)
+		//			);
+		//	}
+		//	return retVal.ToArray();
+		//}
+
+		//private static XElement GetCO2Report(ResultEntry data, Kilogram loading)
+		//{
+		//	var retVal = new XElement("CO2Results",
+		//		new XElement("CO2",
+		//			new XAttribute("unit", "g/km"), data.Co2GramPerKilometer.ToOutputFormat(3)));
+		//	if (!loading.IsEqual(0)) {
+		//		retVal.Add(new XElement("CO2",
+		//			new XAttribute("unit", "g/t.km"), (data.Co2GramPerKilometer / loading.ConvertTo().Ton).ToOutputFormat(3)));
+		//	}
+		//	return retVal;
+		//}
+
+		//private static XElement GetFuelConsumptionReport(ResultEntry data, Kilogram loading)
+		//{
+		//	var retVal = new XElement("FuelConsumptionResults",
+		//		new XElement("FuelConsumption",
+		//			new XAttribute("unit", "l/100km"), data.FcLiterPer100Km.ToOutputFormat(3)));
+		//	if (!loading.IsEqual(0)) {
+		//		retVal.Add(new XElement("FuelConsumption",
+		//			new XAttribute("unit", "l/100t.km"), (data.FcLiterPer100Km / loading.ConvertTo().Ton).ToOutputFormat(3)));
+		//	}
+		//	return retVal;
+		//}
+
+
+		protected override void DoInitializeReport(VectoRunData modelData, Segment segment)
 		{
-			return new[] {
-				new XElement("Vendor", component.Manufacturer),
-				new XElement("MakeAndModel", component.ModelName),
-				new XElement("TypeId", component.CertificationNumber),
-				new XElement("ComponentDataHash", component.DigestValueInput)
-			};
+			_fullReport.Initialize(modelData, segment);
 		}
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationWriter.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationWriter.cs
index 3f02a25371..169c0088c0 100644
--- a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationWriter.cs
+++ b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationWriter.cs
@@ -8,11 +8,11 @@ using TUGraz.IVT.VectoXML;
 using TUGraz.IVT.VectoXML.Writer;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Resources;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.InputData.Reader;
 using TUGraz.VectoCore.InputData.Reader.ComponentData;
 using TUGraz.VectoCore.Models.SimulationComponent.Data.Engine;
-using TUGraz.VectoCore.Resources;
 
 namespace TUGraz.VectoCore.OutputData.XML
 {
@@ -100,12 +100,12 @@ namespace TUGraz.VectoCore.OutputData.XML
 				new XAttribute(XMLNames.Component_ID_Attr, "VEH-" + vehicle.Model),
 				GetDefaultComponentElements(vehicle.TechnicalReportId, vehicle.Model, "N.A."),
 				new XElement(tns + XMLNames.Vehicle_LegislativeClass, "N3"),
-				new XElement(tns + XMLNames.Vehicle_VehicleCategory, GetVehicleCategoryXML(vehicle.VehicleCategory)),
+				new XElement(tns + XMLNames.Vehicle_VehicleCategory, vehicle.VehicleCategory.ToXMLFormat()),
 				new XElement(tns + XMLNames.Vehicle_AxleConfiguration, vehicle.AxleConfiguration.GetName()),
 				new XElement(tns + XMLNames.Vehicle_CurbMassChassis, vehicle.CurbMassChassis.ToXMLFormat(0)),
 				new XElement(tns + XMLNames.Vehicle_GrossVehicleMass, vehicle.GrossVehicleMassRating.ToXMLFormat(0)),
 				new XElement(tns + XMLNames.Vehicle_IdlingSpeed, data.EngineInputData.IdleSpeed.ToXMLFormat(0)),
-				new XElement(tns + XMLNames.Vehicle_RetarderType, GetRetarterTypeXML(retarder.Type)),
+				new XElement(tns + XMLNames.Vehicle_RetarderType, retarder.Type.ToXMLFormat()),
 				retarder.Type.IsDedicatedComponent()
 					? new XElement(tns + XMLNames.Vehicle_RetarderRatio, retarder.Ratio.ToXMLFormat(3))
 					: null,
@@ -341,7 +341,7 @@ namespace TUGraz.VectoCore.OutputData.XML
 				AddSignatureDummy(id)
 				);
 		}
-
+		
 		private string AuxTypeToXML(AuxiliaryType type)
 		{
 			return type.ToString();
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLEngineeringWriter.cs b/VectoCore/VectoCore/OutputData/XML/XMLEngineeringWriter.cs
index 3584b1b9e9..026e94b071 100644
--- a/VectoCore/VectoCore/OutputData/XML/XMLEngineeringWriter.cs
+++ b/VectoCore/VectoCore/OutputData/XML/XMLEngineeringWriter.cs
@@ -9,10 +9,10 @@ using TUGraz.IVT.VectoXML;
 using TUGraz.IVT.VectoXML.Writer;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Resources;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Configuration;
 using TUGraz.VectoCore.InputData.Reader.ComponentData;
-using TUGraz.VectoCore.Resources;
 using TUGraz.VectoCore.Utils;
 
 namespace TUGraz.VectoCore.OutputData.XML
@@ -191,12 +191,12 @@ namespace TUGraz.VectoCore.OutputData.XML
 			return new XElement(tns + XMLNames.Component_Vehicle,
 				new XAttribute(XMLNames.Component_ID_Attr, "VEH-" + vehicle.Model),
 				GetDefaultComponentElements(vehicle.TechnicalReportId, vehicle.Model),
-				new XElement(tns + XMLNames.Vehicle_VehicleCategory, GetVehicleCategoryXML(vehicle.VehicleCategory)),
+				new XElement(tns + XMLNames.Vehicle_VehicleCategory, vehicle.VehicleCategory.ToXMLFormat()),
 				new XElement(tns + XMLNames.Vehicle_AxleConfiguration, vehicle.AxleConfiguration.GetName()),
 				new XElement(tns + XMLNames.Vehicle_CurbMassChassis, vehicle.CurbMassChassis.Value().ToXMLFormat(0)),
 				new XElement(tns + XMLNames.Vehicle_GrossVehicleMass, vehicle.GrossVehicleMassRating.Value().ToXMLFormat(0)),
 				//new XElement(tns + XMLNames.Vehicle_AirDragArea, airdrag.AirDragArea.Value()),
-				new XElement(tns + XMLNames.Vehicle_RetarderType, GetRetarterTypeXML(retarder.Type)),
+				new XElement(tns + XMLNames.Vehicle_RetarderType, retarder.Type.ToXMLFormat()),
 				retarder.Type.IsDedicatedComponent()
 					? new XElement(tns + XMLNames.Vehicle_RetarderRatio, retarder.Ratio.ToXMLFormat(3))
 					: null,
@@ -514,7 +514,7 @@ namespace TUGraz.VectoCore.OutputData.XML
 				new XElement(tns + XMLNames.ComponentDataWrapper,
 					new XAttribute(XMLNames.Component_ID_Attr, id),
 					GetDefaultComponentElements(data.Model, "N.A."),
-					new XElement(tns + XMLNames.Vehicle_CrossWindCorrectionMode, GetCorrectionModeXML(data.CrossWindCorrectionMode)),
+					new XElement(tns + XMLNames.Vehicle_CrossWindCorrectionMode, data.CrossWindCorrectionMode.ToXMLFormat()),
 					new XElement(tns + XMLNames.Vehicle_AirDragArea, data.AirDragArea.Value().ToXMLFormat(2))),
 				GetCrossWindCorrectionData(data)
 				);
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLFullReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLFullReport.cs
new file mode 100644
index 0000000000..ef36c36649
--- /dev/null
+++ b/VectoCore/VectoCore/OutputData/XML/XMLFullReport.cs
@@ -0,0 +1,348 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Xml;
+using System.Xml.Linq;
+using TUGraz.IVT.VectoXML.Writer;
+using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Resources;
+using TUGraz.VectoCommon.Utils;
+using TUGraz.VectoCore.Configuration;
+using TUGraz.VectoCore.Models.Declaration;
+using TUGraz.VectoCore.Models.Simulation.Data;
+using TUGraz.VectoCore.Models.Simulation.Impl;
+using TUGraz.VectoCore.Models.SimulationComponent.Data;
+using TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox;
+using TUGraz.VectoHashing;
+
+namespace TUGraz.VectoCore.OutputData.XML
+{
+	public class XMLFullReport
+	{
+		protected XElement VehiclePart;
+
+		protected XElement InputDataIntegrity;
+
+		protected XElement Results;
+
+		protected XNamespace tns;
+		protected XNamespace di;
+		private bool allSuccess = true;
+
+
+		public XMLFullReport()
+		{
+			di = "http://www.w3.org/2000/09/xmldsig#";
+			tns = "urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.4";
+			VehiclePart = new XElement(tns + XMLNames.Component_Vehicle);
+			Results = new XElement(tns + "Results");
+		}
+
+		public void Initialize(VectoRunData modelData, Segment segment)
+		{
+			VehiclePart.Add(
+				new XElement(tns + XMLNames.Vehicle_VIN, modelData.VehicleData.VIN),
+				new XElement(tns + XMLNames.Vehicle_VehicleCategory, modelData.VehicleData.LegislativeClass),
+				new XElement(tns + "VehicleGroup", segment.VehicleClass.GetClassNumber()),
+				new XElement(tns + XMLNames.Vehicle_AxleConfiguration, modelData.VehicleData.AxleConfiguration.GetName()),
+				new XElement(tns + XMLNames.Vehicle_GrossVehicleMass, modelData.VehicleData.GrossVehicleWeight.ToXMLFormat(0)),
+				new XElement(tns + XMLNames.Vehicle_CurbMassChassis, modelData.VehicleData.CurbWeight.ToXMLFormat(0)),
+				new XElement(tns + XMLNames.Vehicle_PTO, modelData.PTO != null),
+				GetTorqueLimits(modelData.EngineData),
+				new XElement(tns + XMLNames.Vehicle_Components,
+					GetEngineDescription(modelData.EngineData),
+					GetGearboxDescription(modelData.GearboxData),
+					GetTorqueConverterDescription(modelData.GearboxData.TorqueConverterData),
+					GetRetarderDescription(modelData.Retarder),
+					GetAngledriveDescription(modelData.AngledriveData),
+					GetAxlegearDescription(modelData.AxleGearData),
+					GetAirDragDescription(modelData.AirdragData),
+					GetAxleWheelsDescription(modelData.VehicleData),
+					GetAuxiliariesDescription(modelData.Aux)
+					)
+				);
+			InputDataIntegrity = new XElement(tns + "InputDataSignature",
+				modelData.InputDataHash == null ? CreateDummySig() : new XElement(modelData.InputDataHash));
+		}
+
+		private XElement CreateDummySig()
+		{
+			return new XElement(di + XMLNames.DI_Signature_Reference,
+				new XElement(di + XMLNames.DI_Signature_Reference_DigestMethod,
+					new XAttribute(XMLNames.DI_Signature_Algorithm_Attr, "null")),
+				new XElement(di + XMLNames.DI_Signature_Reference_DigestValue, "NOT AVAILABLE")
+				);
+		}
+
+		private XElement GetTorqueLimits(CombustionEngineData modelData)
+		{
+			var limits = new List<XElement>();
+			var maxTorque = modelData.FullLoadCurves[0].MaxTorque;
+			for (uint i = 1; i < modelData.FullLoadCurves.Count; i++) {
+				if (!maxTorque.IsEqual(modelData.FullLoadCurves[i].MaxTorque, 1e-3.SI<NewtonMeter>())) {
+					limits.Add(new XElement(tns + XMLNames.Vehicle_TorqueLimits_Entry,
+						new XAttribute(XMLNames.Vehicle_TorqueLimits_Entry_Gear_Attr, i),
+						new XAttribute(XMLNames.Vehicle_TorqueLimits_Entry_MaxTorque_Attr,
+							modelData.FullLoadCurves[i].MaxTorque.ToXMLFormat(0))));
+				}
+			}
+
+			return limits.Count == 0 ? null : new XElement(tns + XMLNames.Vehicle_TorqueLimits, limits.Cast<object>().ToArray());
+		}
+
+		private XElement GetEngineDescription(CombustionEngineData engineData)
+		{
+			return new XElement(tns + XMLNames.Component_Engine,
+				GetCommonDescription(engineData),
+				new XElement(tns + XMLNames.Engine_RatedPower, engineData.RatedPowerDeclared.ToXMLFormat(0)),
+				new XElement(tns + XMLNames.Engine_IdlingSpeed, engineData.IdleSpeed.AsRPM.ToXMLFormat(0)),
+				new XElement(tns + XMLNames.Engine_RatedSpeed, engineData.RatedSpeedDeclared.AsRPM.ToXMLFormat(0)),
+				new XElement(tns + XMLNames.Engine_Displacement,
+					engineData.Displacement.ConvertTo().Cubic.Centi.Meter.ToXMLFormat(0)),
+				new XElement(tns + XMLNames.Engine_FuelType, engineData.FuelType.ToXMLFormat())
+				);
+		}
+
+		private XElement GetGearboxDescription(GearboxData gearboxData)
+		{
+			return new XElement(tns + XMLNames.Component_Gearbox,
+				GetCommonDescription(gearboxData),
+				new XElement(tns + XMLNames.Gearbox_TransmissionType, gearboxData.Type.ToXMLFormat()),
+				new XElement(tns + "GearsCount", gearboxData.Gears.Count),
+				new XElement(tns + "TransmissionRatioFinalGear", gearboxData.Gears.Last().Value.Ratio.ToXMLFormat(3))
+				);
+		}
+
+		private XElement GetTorqueConverterDescription(TorqueConverterData torqueConverterData)
+		{
+			if (torqueConverterData == null) {
+				return null;
+			}
+			return new XElement(tns + XMLNames.Component_TorqueConverter,
+				GetCommonDescription(torqueConverterData));
+		}
+
+		private XElement GetRetarderDescription(RetarderData retarder)
+		{
+			return new XElement(tns + XMLNames.Component_Retarder,
+				new XElement(tns + XMLNames.Vehicle_RetarderType, retarder.Type.ToXMLFormat()),
+				retarder.Type.IsDedicatedComponent() ? GetCommonDescription(retarder) : null);
+		}
+
+		private object GetAngledriveDescription(AngledriveData angledriveData)
+		{
+			if (angledriveData == null) {
+				return null;
+			}
+			return new XElement(tns + XMLNames.Component_Angledrive,
+				GetCommonDescription(angledriveData),
+				new XElement(tns + XMLNames.AngleDrive_Ratio, angledriveData.Angledrive.Ratio));
+		}
+
+		private XElement GetAxlegearDescription(AxleGearData axleGearData)
+		{
+			return new XElement(tns + XMLNames.Component_Axlegear,
+				GetCommonDescription(axleGearData),
+				new XElement(tns + XMLNames.Axlegear_LineType, axleGearData.LineType.ToXMLFormat()),
+				new XElement(tns + XMLNames.Axlegear_Ratio, axleGearData.AxleGear.Ratio.ToXMLFormat(3)));
+		}
+
+		private XElement GetAirDragDescription(AirdragData airdragData)
+		{
+			if (airdragData.CertificationMethod == CertificationMethod.StandardValues) {
+				return new XElement(tns + XMLNames.Component_AirDrag,
+					new XElement(tns + "CertificationMethod", airdragData.CertificationMethod.ToXMLFormat()),
+					new XElement(tns + "CdxA", airdragData.DeclaredAirdragArea.ToXMLFormat(2))
+					);
+			}
+			return new XElement(tns + XMLNames.Component_AirDrag,
+				new XElement(tns + XMLNames.Component_Model, airdragData.ModelName),
+				new XElement(tns + "CertificationMethod", airdragData.CertificationMethod.ToXMLFormat()),
+				new XElement(tns + "CertificationNumber", airdragData.CertificationNumber),
+				new XElement(tns + XMLNames.DI_Signature_Reference_DigestValue, airdragData.DigestValueInput),
+				new XElement(tns + "CdxA", airdragData.DeclaredAirdragArea.ToXMLFormat(2))
+				);
+		}
+
+		private XElement GetAxleWheelsDescription(VehicleData vehicleData)
+		{
+			var retVal = new XElement(tns + XMLNames.Component_AxleWheels);
+			var axleData = vehicleData.AxleData;
+			for (var i = 0; i < axleData.Count; i++) {
+				if (axleData[i].AxleType == AxleType.Trailer) {
+					continue;
+				}
+				retVal.Add(GetAxleDescription(i + 1, axleData[i]));
+			}
+
+			return retVal;
+		}
+
+		private XElement GetAxleDescription(int i, Axle axle)
+		{
+			return new XElement(tns + XMLNames.AxleWheels_Axles_Axle,
+				new XAttribute(XMLNames.AxleWheels_Axles_Axle_AxleNumber_Attr, i),
+				new XElement(tns + "TyreDimension", axle.WheelsDimension),
+				new XElement(tns + "TyreCertificationNumber", axle.CertificationNumber),
+				new XElement(tns + "TyreRRCDeclared", axle.RollResistanceCoefficient.ToXMLFormat(4)),
+				new XElement(tns + XMLNames.AxleWheels_Axles_Axle_TwinTyres, axle.TwinTyres));
+		}
+
+		private XElement GetAuxiliariesDescription(IEnumerable<VectoRunData.AuxData> aux)
+		{
+			var auxData = aux.ToDictionary(a => a.ID);
+			var auxList = new[] {
+				AuxiliaryType.Fan, AuxiliaryType.SteeringPump, AuxiliaryType.ElectricSystem, AuxiliaryType.PneumaticSystem,
+				AuxiliaryType.HVAC
+			};
+			var retVal = new XElement(tns + XMLNames.Component_Auxiliaries);
+			foreach (var auxId in auxList) {
+				foreach (var entry in auxData[auxId.Key()].Technology) {
+					retVal.Add(new XElement(tns + GetTagName(auxId), entry));
+				}
+			}
+			return retVal;
+		}
+
+		private string GetTagName(AuxiliaryType auxId)
+		{
+			return auxId.ToString() + "Technology";
+		}
+
+		private object[] GetCommonDescription(CombustionEngineData data)
+		{
+			return new object[] {
+				new XElement(tns + XMLNames.Component_Model, data.ModelName),
+				new XElement(tns + "CertificationNumber", data.CertificationNumber),
+				new XElement(tns + XMLNames.DI_Signature_Reference_DigestValue, data.DigestValueInput)
+			};
+		}
+
+		private object[] GetCommonDescription(SimulationComponentData data)
+		{
+			return new object[] {
+				new XElement(tns + XMLNames.Component_Model, data.ModelName),
+				new XElement(tns + "CertificationMethod", data.CertificationMethod.ToXMLFormat()),
+				data.CertificationMethod == CertificationMethod.StandardValues
+					? null
+					: new XElement(tns + "CertificationNumber", data.CertificationNumber),
+				new XElement(tns + XMLNames.DI_Signature_Reference_DigestValue, data.DigestValueInput)
+			};
+		}
+
+		public void AddResult(
+			DeclarationReport<XMLDeclarationReport.ResultEntry>.ResultContainer<XMLDeclarationReport.ResultEntry> entry)
+		{
+			foreach (var resultEntry in entry.ModData) {
+				allSuccess &= resultEntry.Value.Status == VectoRun.Status.Success;
+				Results.Add(new XElement(tns + "Result",
+					new XAttribute("status", resultEntry.Value.Status.ToString().ToLower()),
+					new XElement(tns + "Mission", entry.Mission.ToXMLFormat()),
+					GetResults(resultEntry)));
+			}
+		}
+
+		private object[] GetResults(KeyValuePair<LoadingType, XMLDeclarationReport.ResultEntry> resultEntry)
+		{
+			switch (resultEntry.Value.Status) {
+				case VectoRun.Status.Pending:
+				case VectoRun.Status.Running:
+					return null; // should not happen!
+				case VectoRun.Status.Success:
+					return GetSuccessResultEntry(resultEntry.Value);
+				case VectoRun.Status.Canceled:
+				case VectoRun.Status.Aborted:
+					return new object[] {
+						new XElement("Error", resultEntry.Value.Error),
+						new XElement("ErrorDetails", resultEntry.Value.StackTrace),
+					};
+				default:
+					throw new ArgumentOutOfRangeException();
+			}
+		}
+
+		private object[] GetSuccessResultEntry(XMLDeclarationReport.ResultEntry result)
+		{
+			return new object[] {
+				new XElement(tns + "Distance", new XAttribute("unit", "km"), result.Distance.ToXMLFormat(1)),
+				new XElement(tns + "SimulationParameters",
+					new XElement(tns + "TotalVehicleMass", new XAttribute("unit", "kg"), result.TotalVehicleWeight.ToXMLFormat(0)),
+					new XElement(tns + "Payload", new XAttribute("unit", "kg"), result.Payload.ToXMLFormat(0)),
+					new XElement(tns + "FuelType", result.FuelType.ToXMLFormat())
+					),
+				new XElement(tns + "VehiclePerformance",
+					new XElement(tns + "AverageSpeed", new XAttribute("unit", "km/h"), result.AverageSpeed.AsKmph.ToXMLFormat(1)),
+					new XElement(tns + "MinSpeed", new XAttribute("unit", "km/h"), result.MinSpeed.AsKmph.ToXMLFormat(1)),
+					new XElement(tns + "MaxSpeed", new XAttribute("unit", "km/h"), result.MaxSpeed.AsKmph.ToXMLFormat(1)),
+					new XElement(tns + "MaxDeceleration", new XAttribute("unit", "m/s²"), result.MaxDeceleration.ToXMLFormat(2)),
+					new XElement(tns + "MaxAcceleration", new XAttribute("unit", "m/s²"), result.MaxAcceleration.ToXMLFormat(2)),
+					new XElement(tns + "FullLoadDrivingtimePercentage", result.FullLoadPercentage.ToXMLFormat(0)),
+					new XElement(tns + "GearshiftCount", result.GearshiftCount.ToXMLFormat(0))
+					),
+				//FC
+				new XElement(tns + "FuelConsumption", new XAttribute("unit", "g/km"),
+					(result.FuelConsumptionTotal.ConvertTo().Gramm / result.Distance.ConvertTo().Kilo.Meter).ToXMLFormat(1)),
+				new XElement(tns + "FuelConsumption", new XAttribute("unit", "g/t-km"),
+					(result.FuelConsumptionTotal.ConvertTo().Gramm / result.Distance.ConvertTo().Kilo.Meter /
+					result.Payload.ConvertTo().Ton).ToXMLFormat(1)),
+				new XElement(tns + "FuelConsumption", new XAttribute("unit", "g/m³-km"),
+					(result.FuelConsumptionTotal.ConvertTo().Gramm / result.Distance.ConvertTo().Kilo.Meter / result.CargoVolume)
+						.ToXMLFormat(1)),
+				new XElement(tns + "FuelConsumption", new XAttribute("unit", "MJ/km"),
+					(result.EnergyConsumptionTotal / result.Distance.ConvertTo().Kilo.Meter / 1e6).ToXMLFormat(1)),
+				//CO2
+				new XElement(tns + "CO2", new XAttribute("unit", "g/km"),
+					(result.CO2Total.ConvertTo().Gramm / result.Distance.ConvertTo().Kilo.Meter).ToXMLFormat(1)),
+				new XElement(tns + "CO2", new XAttribute("unit", "g/t-km"),
+					(result.CO2Total.ConvertTo().Gramm / result.Distance.ConvertTo().Kilo.Meter /
+					result.Payload.ConvertTo().Ton).ToXMLFormat(1)),
+				new XElement(tns + "CO2", new XAttribute("unit", "g/m³-km"),
+					(result.CO2Total.ConvertTo().Gramm / result.Distance.ConvertTo().Kilo.Meter / result.CargoVolume)
+						.ToXMLFormat(1)),
+			};
+		}
+
+		private XElement GetApplicationInfo()
+		{
+			var vectodll = AssemblyName.GetAssemblyName("VectoCore.dll");
+			return new XElement(tns + "ApplicationInformation",
+				new XElement(tns + "SimulationToolVersion", vectodll.Version),
+				new XElement(tns + "Date", XmlConvert.ToString(DateTime.Now, XmlDateTimeSerializationMode.Utc)));
+		}
+
+		public XDocument Report
+		{
+			get {
+				var xsi = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance");
+				var retVal = new XDocument();
+				var results = new XElement(Results);
+				results.AddFirst(new XElement(tns + "Status", allSuccess ? "success" : "error"));
+				var vehicle = new XElement(VehiclePart);
+				vehicle.Add(InputDataIntegrity);
+				retVal.Add(new XElement(tns + "VectoOutput",
+					new XAttribute("schemaVersion", "0.4"),
+					new XAttribute(XNamespace.Xmlns + "xsi", xsi.NamespaceName),
+					new XAttribute("xmlns", tns),
+					new XAttribute(XNamespace.Xmlns + "di", di),
+					new XAttribute(xsi + "schemaLocation",
+						string.Format("{0} {1}VectoOutput.xsd", tns, AbstractXMLWriter.SchemaLocationBaseUrl)),
+					new XElement(tns + "Data",
+						vehicle,
+						results,
+						GetApplicationInfo())
+					)
+					);
+				var stream = new MemoryStream();
+				var writer = new StreamWriter(stream);
+				writer.Write(retVal);
+				writer.Flush();
+				stream.Seek(0, SeekOrigin.Begin);
+				var h = VectoHash.Load(stream);
+				return h.AddHash();
+				//return retVal;
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Resources/Declaration/SegmentTable.csv b/VectoCore/VectoCore/Resources/Declaration/SegmentTable.csv
index e8dba5ade9..44b2ad00f7 100644
--- a/VectoCore/VectoCore/Resources/Declaration/SegmentTable.csv
+++ b/VectoCore/VectoCore/Resources/Declaration/SegmentTable.csv
@@ -1,29 +1,29 @@
-Valid,Vehicle Category,Axle Conf.,GVW_Min,GVW_Max,HDV class,Height,DesignSpeed,Body,Trailer,EMS   ,.vacc file,Cross Wind Correction - Long haul,Cross Wind Correction - EMS,Cross Wind Correction - Other,Truck Axles - Long haul,Truck Axles - Other,Trailer Axles - Long haul,Trailer Axles - Other,Truck Axles - Long haul EMS,Truck Axles - Other EMS,Trailer Axles - Long haul EMS,Trailer Axles - Other EMS,Long haul       ,Long haul EMS ,Regional delivery ,Regional delivery EMS,Urban delivery  ,Municipal utility,Construction,Heavy Urban,Urban,Suburban,Interurban,Coach,CdxA_Construction,BodyWeight_MunicipalUtility
-## 0 ,RigidTruck      ,4x2       ,0      ,7.5    ,0        ,4.0   ,85         ,    ,       ,      ,Truck.vacc,                                 ,                           ,RigidSolo                    ,                       ,                   ,                         ,                     ,                           ,                       ,                             ,                         ,-               ,              ,pc10(R)/pc50(R)   ,                     ,pc10(R)/pc50(R) ,-                ,-           ,-          ,-    ,-       ,-         ,-    ,                 ,
-1    ,RigidTruck      ,4x2       ,7.5    ,10     ,1        ,3.6   ,85         ,B1  ,       ,      ,Truck.vacc,                                 ,                           ,RigidSolo                    ,                       ,45/55              ,                         ,                     ,                           ,                       ,                             ,                         ,-               ,-             ,pc10(R)/pc50(R)   ,-                    ,pc10(R)/pc50(R) ,-                ,-           ,-          ,-    ,-       ,-         ,-    ,                 , 
-1    ,Tractor         ,4x2       ,7.5    ,10     ,1        ,3.6   ,85         ,B1  ,       ,      ,Truck.vacc,                                 ,                           ,RigidSolo                    ,                       ,45/55              ,                         ,                     ,                           ,                       ,                             ,                         ,-               ,-             ,pc10(R)/pc50(R)   ,-                    ,pc10(R)/pc50(R) ,-                ,-           ,-          ,-    ,-       ,-         ,-    ,                 , 
-1    ,RigidTruck      ,4x2       ,10     ,12     ,2        ,3.75  ,85         ,B2  ,T1     ,      ,Truck.vacc,RigidTrailer                     ,                           ,RigidSolo                    ,22.5/32.5              ,45/55              ,45                       ,                     ,                           ,                       ,                             ,                         ,pc10(R)/pc75(R) ,-             ,pc10(R)/pc50(R)   ,-                    ,pc10(R)/pc50(R) ,-                ,-           ,-          ,-    ,-       ,-         ,-    ,                 , 
-1    ,Tractor         ,4x2       ,10     ,12     ,2        ,3.75  ,85         ,B2  ,T1     ,      ,Truck.vacc,RigidTrailer                     ,                           ,RigidSolo                    ,22.5/32.5              ,45/55              ,45                       ,                     ,                           ,                       ,                             ,                         ,pc10(R)/pc75(R) ,-             ,pc10(R)/pc50(R)   ,-                    ,pc10(R)/pc50(R) ,-                ,-           ,-          ,-    ,-       ,-         ,-    ,                 , 
-1    ,RigidTruck      ,4x2       ,12     ,16     ,3        ,3.9   ,85         ,B3  ,       ,      ,Truck.vacc,                                 ,                           ,RigidSolo                    ,                       ,40/60              ,                         ,                     ,                           ,                       ,                             ,                         ,-               ,-             ,pc10(R)/pc50(R)   ,-                    ,pc10(R)/pc50(R) ,-                ,-           ,-          ,-    ,-       ,-         ,-    ,                 , 
-1    ,Tractor         ,4x2       ,12     ,16     ,3        ,3.9   ,85         ,B3  ,       ,      ,Truck.vacc,                                 ,                           ,RigidSolo                    ,                       ,40/60              ,                         ,                     ,                           ,                       ,                             ,                         ,-               ,-             ,pc10(R)/pc50(R)   ,-                    ,pc10(R)/pc50(R) ,-                ,-           ,-          ,-    ,-       ,-         ,-    ,                 , 
-1    ,RigidTruck      ,4x2       ,16     ,99     ,4        ,4.0   ,85         ,B4  ,T2     ,      ,Truck.vacc,RigidTrailer                     ,                           ,RigidSolo                    ,20/30                  ,45/55              ,50                       ,                     ,                           ,                       ,                             ,                         ,1900/14000      ,-             ,900/4400          ,-                    ,-               ,600/3000         ,-           ,-          ,-    ,-       ,-         ,-    ,                 , 6000
-1    ,Tractor         ,4x2       ,16     ,99     ,5        ,4.0   ,85         ,    ,ST1    ,ST1+T2,Truck.vacc,TractorSemitrailer               ,RigidTrailer               ,TractorSemitrailer           ,20/25                  ,25/25              ,55                       ,50                   ,15/20                      ,17.5/25                ,40/25                        ,35/22.5                  ,2600/19300      ,3500/26500    ,2600/12900        ,3500/17500           ,-               ,-                ,-           ,-          ,-    ,-       ,-         ,-    ,                 , 
-0    ,RigidTruck      ,4x4       ,7.5    ,16     ,6        ,3.75  ,85         ,    ,       ,      ,Truck.vacc,                                 ,                           ,RigidSolo                    ,                       ,                   ,                         ,                     ,                           ,                       ,                             ,                         ,-               ,-             ,-                 ,-                    ,-               ,???              ,???         ,-          ,-    ,-       ,-         ,-    ,                 , 
-0    ,RigidTruck      ,4x4       ,16     ,99     ,7        ,4.0   ,85         ,    ,       ,      ,Truck.vacc,                                 ,                           ,RigidSolo                    ,                       ,                   ,                         ,                     ,                           ,                       ,                             ,                         ,-               ,-             ,-                 ,-                    ,-               ,-                ,???         ,-          ,-    ,-       ,-         ,-    ,                 , 
-0    ,Tractor         ,4x4       ,16     ,99     ,8        ,4.0   ,85         ,    ,       ,      ,Truck.vacc,                                 ,                           ,TractorSemitrailer           ,                       ,                   ,                         ,                     ,                           ,                       ,                             ,                         ,-               ,-             ,-                 ,-                    ,-               ,-                ,???         ,-          ,-    ,-       ,-         ,-    ,                 , 
-1    ,RigidTruck      ,6x2       ,0      ,99     ,9        ,4.0   ,85         ,B5  ,T2     ,D+ST1 ,Truck.vacc,RigidTrailer                     ,RigidTrailer               ,RigidSolo                    ,20/30/15               ,35/40/25           ,35                       ,                     ,15/20/10                   ,17.5/20/10             ,22.5/32.5                    ,22.5/30                  ,2600/19300      ,3500/26500    ,1400/7100         ,3500/17500           ,-               ,1200/6000        ,-           ,-          ,-    ,-       ,-         ,-    ,                 , 6750
-1    ,Tractor         ,6x2       ,0      ,99     ,10       ,4.0   ,85         ,    ,ST1    ,ST1+T2,Truck.vacc,TractorSemitrailer               ,RigidTrailer               ,TractorSemitrailer           ,15/10/20               ,20/10/20           ,55                       ,50                   ,12.5/15/10                 ,15/15/10               ,37.5/25                      ,35/25                    ,2600/19300      ,3500/26500    ,2600/12900        ,3500/17500           ,-               ,-                ,-           ,-          ,-    ,-       ,-         ,-    ,                 , 
-1    ,RigidTruck      ,6x4       ,0      ,99     ,11       ,4.0   ,85         ,B5  ,T2     ,D+ST1 ,Truck.vacc,RigidTrailer                     ,RigidTrailer               ,RigidSolo                    ,20/22.5/22.5           ,35/35/30           ,35                       ,                     ,15/20/10                   ,17.5/20/10             ,22.5/32.5                    ,22.5/30                  ,2600/19300      ,3500/26500    ,1400/7100         ,3500/17500           ,-               ,1200/6000        ,1400/7100   ,-          ,-    ,-       ,-         ,-    ,8.5              , 6750
-1    ,Tractor         ,6x4       ,0      ,99     ,12       ,4.0   ,85         ,    ,ST1    ,ST1+T2,Truck.vacc,TractorSemitrailer               ,RigidTrailer               ,TractorSemitrailer           ,15/15/15               ,20/15/15           ,55                       ,50                   ,12.5/15/10                 ,15/15/10               ,37.5/25                      ,35/25                    ,2600/19300      ,3500/26500    ,2600/12900        ,3500/17500           ,-               ,-                ,2600/12900  ,-          ,-    ,-       ,-         ,-    ,8.8              , 
-0    ,RigidTruck      ,6x6       ,0      ,99     ,13       ,3.6   ,85         ,    ,       ,      ,Truck.vacc,                                 ,                           ,RigidSolo                    ,                       ,                   ,                         ,                     ,                           ,                       ,                             ,                         ,-               ,-             ,-                 ,-                    ,-               ,-                ,???         ,-          ,-    ,-       ,-         ,-    ,                 , 
-0    ,Tractor         ,6x6       ,0      ,99     ,14       ,3.6   ,85         ,    ,       ,      ,Truck.vacc,                                 ,                           ,TractorSemitrailer           ,                       ,                   ,                         ,                     ,                           ,                       ,                             ,                         ,-               ,-             ,-                 ,-                    ,-               ,-                ,???         ,-          ,-    ,-       ,-         ,-    ,                 , 
-0    ,RigidTruck      ,8x2       ,0      ,99     ,15       ,3.6   ,85         ,    ,       ,      ,Truck.vacc,                                 ,                           ,RigidSolo                    ,                       ,                   ,                         ,                     ,                           ,                       ,                             ,                         ,-               ,-             ,???               ,-                    ,-               ,-                ,-           ,-          ,-    ,-       ,-         ,-    ,                 , 
-1    ,RigidTruck      ,8x4       ,0      ,99     ,16       ,3.6   ,85         ,    ,       ,      ,Truck.vacc,                                 ,                           ,RigidSolo                    ,                       ,25/25/25/25        ,                         ,                     ,                           ,                       ,                             ,                         ,-               ,-             ,-                 ,-                    ,-               ,-                ,2600/12900  ,-          ,-    ,-       ,-         ,-    ,                 , 
-0    ,RigidTruck      ,8x6       ,0      ,99     ,17       ,3.6   ,85         ,    ,       ,      ,Truck.vacc,                                 ,                           ,RigidSolo                    ,                       ,                   ,                         ,                     ,                           ,                       ,                             ,                         ,-               ,-             ,-                 ,-                    ,-               ,-                ,???         ,-          ,-    ,-       ,-         ,-    ,9.0              , 
-0    ,RigidTruck      ,8x8       ,0      ,99     ,17       ,4.0   ,85         ,    ,       ,      ,Truck.vacc,                                 ,                           ,RigidSolo                    ,                       ,                   ,                         ,                     ,                           ,                       ,                             ,                         ,-               ,-             ,-                 ,-                    ,-               ,-                ,???         ,-          ,-    ,-       ,-         ,-    ,                 , 
-0    ,CityBus         ,4x2       ,0      ,18     ,B1       ,4.0   ,85         ,    ,       ,      ,          ,                                 ,                           ,CoachBus                     ,                       ,                   ,                         ,                     ,                           ,                       ,                             ,                         ,-               ,-             ,-                 ,-                    ,-               ,-                ,-           ,???        ,???  ,???     ,-         ,-    ,                 , 
-0    ,InterurbanBus   ,4x2       ,0      ,18     ,B2       ,4.0   ,85         ,    ,       ,      ,          ,                                 ,                           ,CoachBus                     ,                       ,                   ,                         ,                     ,                           ,                       ,                             ,                         ,-               ,-             ,-                 ,-                    ,-               ,-                ,-           ,-          ,-    ,-       ,???       ,-    ,                 , 
-0    ,Coach           ,4x2       ,0      ,18     ,B3       ,4.0   ,85         ,    ,       ,      ,          ,                                 ,                           ,CoachBus                     ,                       ,                   ,                         ,                     ,                           ,                       ,                             ,                         ,-               ,-             ,-                 ,-                    ,-               ,-                ,-           ,-          ,-    ,-       ,-         ,???  ,                 , 
-0    ,CityBus         ,6x2       ,18     ,99     ,B4       ,4.0   ,85         ,    ,       ,      ,          ,                                 ,                           ,CoachBus                     ,                       ,                   ,                         ,                     ,                           ,                       ,                             ,                         ,-               ,-             ,-                 ,-                    ,-               ,-                ,-           ,???        ,???  ,???     ,-         ,-    ,                 , 
-0    ,InterurbanBus   ,6x2       ,18     ,99     ,B5       ,4.0   ,85         ,    ,       ,      ,          ,                                 ,                           ,CoachBus                     ,                       ,                   ,                         ,                     ,                           ,                       ,                             ,                         ,-               ,-             ,-                 ,-                    ,-               ,-                ,-           ,-          ,-    ,-       ,???       ,-    ,                 , 
-0    ,Coach           ,6x2       ,18     ,99     ,B6       ,4.0   ,85         ,    ,       ,      ,          ,                                 ,                           ,CoachBus                     ,                       ,                   ,                         ,                     ,                           ,                       ,                             ,                         ,-               ,-             ,-                 ,-                    ,-               ,-                ,-           ,-          ,-    ,-       ,-         ,???  ,                 , 
\ No newline at end of file
+Valid,Vehicle Category,Axle Conf.,GVW_Min,GVW_Max,HDV class,Height,DesignSpeed,Body,Trailer,EMS   ,.vacc file,Cross Wind Correction - Long haul,Cross Wind Correction - EMS,Cross Wind Correction - Other,Truck Axles - Long haul,Truck Axles - Other,Trailer Axles - Long haul,Trailer Axles - Other,Truck Axles - Long haul EMS,Truck Axles - Other EMS,Trailer Axles - Long haul EMS,Trailer Axles - Other EMS,Long haul       ,Long haul EMS ,Regional delivery ,Regional delivery EMS,Urban delivery  ,Municipal utility,Construction,Heavy Urban,Urban,Suburban,Interurban,Coach,CdxA_Default,CdxA_Construction,BodyWeight_MunicipalUtility
+## 0 ,RigidTruck      ,4x2       ,0      ,7.5    ,0        ,4.0   ,85         ,    ,       ,      ,Truck.vacc,                                 ,                           ,RigidSolo                    ,                       ,                   ,                         ,                     ,                           ,                       ,                             ,                         ,-               ,              ,pc10(R)/pc50(R)   ,                     ,pc10(R)/pc50(R) ,-                ,-           ,-          ,-    ,-       ,-         ,-    ,            ,                 ,
+1    ,RigidTruck      ,4x2       ,7.5    ,10     ,1        ,3.6   ,85         ,B1  ,       ,      ,Truck.vacc,                                 ,                           ,RigidSolo                    ,                       ,45/55              ,                         ,                     ,                           ,                       ,                             ,                         ,-               ,-             ,pc10(R)/pc50(R)   ,-                    ,pc10(R)/pc50(R) ,-                ,-           ,-          ,-    ,-       ,-         ,-    ,7.1         ,                 , 
+1    ,Tractor         ,4x2       ,7.5    ,10     ,1        ,3.6   ,85         ,B1  ,       ,      ,Truck.vacc,                                 ,                           ,RigidSolo                    ,                       ,45/55              ,                         ,                     ,                           ,                       ,                             ,                         ,-               ,-             ,pc10(R)/pc50(R)   ,-                    ,pc10(R)/pc50(R) ,-                ,-           ,-          ,-    ,-       ,-         ,-    ,7.1         ,                 , 
+1    ,RigidTruck      ,4x2       ,10     ,12     ,2        ,3.75  ,85         ,B2  ,T1     ,      ,Truck.vacc,RigidTrailer                     ,                           ,RigidSolo                    ,22.5/32.5              ,45/55              ,45                       ,                     ,                           ,                       ,                             ,                         ,pc10(R)/pc75(R) ,-             ,pc10(R)/pc50(R)   ,-                    ,pc10(R)/pc50(R) ,-                ,-           ,-          ,-    ,-       ,-         ,-    ,7.2         ,                 , 
+1    ,Tractor         ,4x2       ,10     ,12     ,2        ,3.75  ,85         ,B2  ,T1     ,      ,Truck.vacc,RigidTrailer                     ,                           ,RigidSolo                    ,22.5/32.5              ,45/55              ,45                       ,                     ,                           ,                       ,                             ,                         ,pc10(R)/pc75(R) ,-             ,pc10(R)/pc50(R)   ,-                    ,pc10(R)/pc50(R) ,-                ,-           ,-          ,-    ,-       ,-         ,-    ,7.2         ,                 , 
+1    ,RigidTruck      ,4x2       ,12     ,16     ,3        ,3.9   ,85         ,B3  ,       ,      ,Truck.vacc,                                 ,                           ,RigidSolo                    ,                       ,40/60              ,                         ,                     ,                           ,                       ,                             ,                         ,-               ,-             ,pc10(R)/pc50(R)   ,-                    ,pc10(R)/pc50(R) ,-                ,-           ,-          ,-    ,-       ,-         ,-    ,7.4         ,                 , 
+1    ,Tractor         ,4x2       ,12     ,16     ,3        ,3.9   ,85         ,B3  ,       ,      ,Truck.vacc,                                 ,                           ,RigidSolo                    ,                       ,40/60              ,                         ,                     ,                           ,                       ,                             ,                         ,-               ,-             ,pc10(R)/pc50(R)   ,-                    ,pc10(R)/pc50(R) ,-                ,-           ,-          ,-    ,-       ,-         ,-    ,7.4         ,                 , 
+1    ,RigidTruck      ,4x2       ,16     ,99     ,4        ,4.0   ,85         ,B4  ,T2     ,      ,Truck.vacc,RigidTrailer                     ,                           ,RigidSolo                    ,20/30                  ,45/55              ,50                       ,                     ,                           ,                       ,                             ,                         ,1900/14000      ,-             ,900/4400          ,-                    ,-               ,600/3000         ,-           ,-          ,-    ,-       ,-         ,-    ,8.4         ,                 , 6000
+1    ,Tractor         ,4x2       ,16     ,99     ,5        ,4.0   ,85         ,    ,ST1    ,ST1+T2,Truck.vacc,TractorSemitrailer               ,RigidTrailer               ,TractorSemitrailer           ,20/25                  ,25/25              ,55                       ,50                   ,15/20                      ,17.5/25                ,40/25                        ,35/22.5                  ,2600/19300      ,3500/26500    ,2600/12900        ,3500/17500           ,-               ,-                ,-           ,-          ,-    ,-       ,-         ,-    ,8.7         ,                 , 
+0    ,RigidTruck      ,4x4       ,7.5    ,16     ,6        ,3.75  ,85         ,    ,       ,      ,Truck.vacc,                                 ,                           ,RigidSolo                    ,                       ,                   ,                         ,                     ,                           ,                       ,                             ,                         ,-               ,-             ,-                 ,-                    ,-               ,???              ,???         ,-          ,-    ,-       ,-         ,-    ,            ,                 , 
+0    ,RigidTruck      ,4x4       ,16     ,99     ,7        ,4.0   ,85         ,    ,       ,      ,Truck.vacc,                                 ,                           ,RigidSolo                    ,                       ,                   ,                         ,                     ,                           ,                       ,                             ,                         ,-               ,-             ,-                 ,-                    ,-               ,-                ,???         ,-          ,-    ,-       ,-         ,-    ,            ,                 , 
+0    ,Tractor         ,4x4       ,16     ,99     ,8        ,4.0   ,85         ,    ,       ,      ,Truck.vacc,                                 ,                           ,TractorSemitrailer           ,                       ,                   ,                         ,                     ,                           ,                       ,                             ,                         ,-               ,-             ,-                 ,-                    ,-               ,-                ,???         ,-          ,-    ,-       ,-         ,-    ,            ,                 , 
+1    ,RigidTruck      ,6x2       ,0      ,99     ,9        ,4.0   ,85         ,B5  ,T2     ,D+ST1 ,Truck.vacc,RigidTrailer                     ,RigidTrailer               ,RigidSolo                    ,20/30/15               ,35/40/25           ,35                       ,                     ,15/20/10                   ,17.5/20/10             ,22.5/32.5                    ,22.5/30                  ,2600/19300      ,3500/26500    ,1400/7100         ,3500/17500           ,-               ,1200/6000        ,-           ,-          ,-    ,-       ,-         ,-    ,8.5         ,                 , 6750
+1    ,Tractor         ,6x2       ,0      ,99     ,10       ,4.0   ,85         ,    ,ST1    ,ST1+T2,Truck.vacc,TractorSemitrailer               ,RigidTrailer               ,TractorSemitrailer           ,15/10/20               ,20/10/20           ,55                       ,50                   ,12.5/15/10                 ,15/15/10               ,37.5/25                      ,35/25                    ,2600/19300      ,3500/26500    ,2600/12900        ,3500/17500           ,-               ,-                ,-           ,-          ,-    ,-       ,-         ,-    ,8.8         ,                 , 
+1    ,RigidTruck      ,6x4       ,0      ,99     ,11       ,4.0   ,85         ,B5  ,T2     ,D+ST1 ,Truck.vacc,RigidTrailer                     ,RigidTrailer               ,RigidSolo                    ,20/22.5/22.5           ,35/35/30           ,35                       ,                     ,15/20/10                   ,17.5/20/10             ,22.5/32.5                    ,22.5/30                  ,2600/19300      ,3500/26500    ,1400/7100         ,3500/17500           ,-               ,1200/6000        ,1400/7100   ,-          ,-    ,-       ,-         ,-    ,8.5         ,8.5              , 6750
+1    ,Tractor         ,6x4       ,0      ,99     ,12       ,4.0   ,85         ,    ,ST1    ,ST1+T2,Truck.vacc,TractorSemitrailer               ,RigidTrailer               ,TractorSemitrailer           ,15/15/15               ,20/15/15           ,55                       ,50                   ,12.5/15/10                 ,15/15/10               ,37.5/25                      ,35/25                    ,2600/19300      ,3500/26500    ,2600/12900        ,3500/17500           ,-               ,-                ,2600/12900  ,-          ,-    ,-       ,-         ,-    ,8.8         ,8.8              , 
+0    ,RigidTruck      ,6x6       ,0      ,99     ,13       ,3.6   ,85         ,    ,       ,      ,Truck.vacc,                                 ,                           ,RigidSolo                    ,                       ,                   ,                         ,                     ,                           ,                       ,                             ,                         ,-               ,-             ,-                 ,-                    ,-               ,-                ,???         ,-          ,-    ,-       ,-         ,-    ,            ,                 , 
+0    ,Tractor         ,6x6       ,0      ,99     ,14       ,3.6   ,85         ,    ,       ,      ,Truck.vacc,                                 ,                           ,TractorSemitrailer           ,                       ,                   ,                         ,                     ,                           ,                       ,                             ,                         ,-               ,-             ,-                 ,-                    ,-               ,-                ,???         ,-          ,-    ,-       ,-         ,-    ,            ,                 , 
+0    ,RigidTruck      ,8x2       ,0      ,99     ,15       ,3.6   ,85         ,    ,       ,      ,Truck.vacc,                                 ,                           ,RigidSolo                    ,                       ,                   ,                         ,                     ,                           ,                       ,                             ,                         ,-               ,-             ,???               ,-                    ,-               ,-                ,-           ,-          ,-    ,-       ,-         ,-    ,            ,                 , 
+1    ,RigidTruck      ,8x4       ,0      ,99     ,16       ,3.6   ,85         ,    ,       ,      ,Truck.vacc,                                 ,                           ,RigidSolo                    ,                       ,25/25/25/25        ,                         ,                     ,                           ,                       ,                             ,                         ,-               ,-             ,-                 ,-                    ,-               ,-                ,2600/12900  ,-          ,-    ,-       ,-         ,-    ,            ,                 , 
+0    ,RigidTruck      ,8x6       ,0      ,99     ,17       ,3.6   ,85         ,    ,       ,      ,Truck.vacc,                                 ,                           ,RigidSolo                    ,                       ,                   ,                         ,                     ,                           ,                       ,                             ,                         ,-               ,-             ,-                 ,-                    ,-               ,-                ,???         ,-          ,-    ,-       ,-         ,-    ,9.0         ,9.0              , 
+0    ,RigidTruck      ,8x8       ,0      ,99     ,17       ,4.0   ,85         ,    ,       ,      ,Truck.vacc,                                 ,                           ,RigidSolo                    ,                       ,                   ,                         ,                     ,                           ,                       ,                             ,                         ,-               ,-             ,-                 ,-                    ,-               ,-                ,???         ,-          ,-    ,-       ,-         ,-    ,            ,                 , 
+0    ,CityBus         ,4x2       ,0      ,18     ,B1       ,4.0   ,85         ,    ,       ,      ,          ,                                 ,                           ,CoachBus                     ,                       ,                   ,                         ,                     ,                           ,                       ,                             ,                         ,-               ,-             ,-                 ,-                    ,-               ,-                ,-           ,???        ,???  ,???     ,-         ,-    ,            ,                 , 
+0    ,InterurbanBus   ,4x2       ,0      ,18     ,B2       ,4.0   ,85         ,    ,       ,      ,          ,                                 ,                           ,CoachBus                     ,                       ,                   ,                         ,                     ,                           ,                       ,                             ,                         ,-               ,-             ,-                 ,-                    ,-               ,-                ,-           ,-          ,-    ,-       ,???       ,-    ,            ,                 , 
+0    ,Coach           ,4x2       ,0      ,18     ,B3       ,4.0   ,85         ,    ,       ,      ,          ,                                 ,                           ,CoachBus                     ,                       ,                   ,                         ,                     ,                           ,                       ,                             ,                         ,-               ,-             ,-                 ,-                    ,-               ,-                ,-           ,-          ,-    ,-       ,-         ,???  ,            ,                 , 
+0    ,CityBus         ,6x2       ,18     ,99     ,B4       ,4.0   ,85         ,    ,       ,      ,          ,                                 ,                           ,CoachBus                     ,                       ,                   ,                         ,                     ,                           ,                       ,                             ,                         ,-               ,-             ,-                 ,-                    ,-               ,-                ,-           ,???        ,???  ,???     ,-         ,-    ,            ,                 , 
+0    ,InterurbanBus   ,6x2       ,18     ,99     ,B5       ,4.0   ,85         ,    ,       ,      ,          ,                                 ,                           ,CoachBus                     ,                       ,                   ,                         ,                     ,                           ,                       ,                             ,                         ,-               ,-             ,-                 ,-                    ,-               ,-                ,-           ,-          ,-    ,-       ,???       ,-    ,            ,                 , 
+0    ,Coach           ,6x2       ,18     ,99     ,B6       ,4.0   ,85         ,    ,       ,      ,          ,                                 ,                           ,CoachBus                     ,                       ,                   ,                         ,                     ,                           ,                       ,                             ,                         ,-               ,-             ,-                 ,-                    ,-               ,-                ,-           ,-          ,-    ,-       ,-         ,???  ,            ,                 , 
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Resources/XMLNames.resx b/VectoCore/VectoCore/Resources/XMLNames.resx
deleted file mode 100644
index 8c810ec83d..0000000000
--- a/VectoCore/VectoCore/Resources/XMLNames.resx
+++ /dev/null
@@ -1,771 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
-	<!-- 
-		Microsoft ResX Schema 
-		
-		Version 2.0
-		
-		The primary goals of this format is to allow a simple XML format 
-		that is mostly human readable. The generation and parsing of the 
-		various data types are done through the TypeConverter classes 
-		associated with the data types.
-		
-		Example:
-		
-		... ado.net/XML headers & schema ...
-		<resheader name="resmimetype">text/microsoft-resx</resheader>
-		<resheader name="version">2.0</resheader>
-		<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-		<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-		<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-		<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-		<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-				<value>[base64 mime encoded serialized .NET Framework object]</value>
-		</data>
-		<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-				<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-				<comment>This is a comment</comment>
-		</data>
-								
-		There are any number of "resheader" rows that contain simple 
-		name/value pairs.
-		
-		Each data row contains a name, and value. The row also contains a 
-		type or mimetype. Type corresponds to a .NET class that support 
-		text/value conversion through the TypeConverter architecture. 
-		Classes that don't support this are serialized and stored with the 
-		mimetype set.
-		
-		The mimetype is used for serialized objects, and tells the 
-		ResXResourceReader how to depersist the object. This is currently not 
-		extensible. For a given mimetype the value must be set accordingly:
-		
-		Note - application/x-microsoft.net.object.binary.base64 is the format 
-		that the ResXResourceWriter will generate, however the reader can 
-		read any of the formats listed below.
-		
-		mimetype: application/x-microsoft.net.object.binary.base64
-		value   : The object must be serialized with 
-						: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-						: and then encoded with base64 encoding.
-		
-		mimetype: application/x-microsoft.net.object.soap.base64
-		value   : The object must be serialized with 
-						: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-						: and then encoded with base64 encoding.
-
-		mimetype: application/x-microsoft.net.object.bytearray.base64
-		value   : The object must be serialized into a byte array 
-						: using a System.ComponentModel.TypeConverter
-						: and then encoded with base64 encoding.
-		-->
-	<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-		<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-		<xsd:element name="root" msdata:IsDataSet="true">
-			<xsd:complexType>
-				<xsd:choice maxOccurs="unbounded">
-					<xsd:element name="metadata">
-						<xsd:complexType>
-							<xsd:sequence>
-								<xsd:element name="value" type="xsd:string" minOccurs="0" />
-							</xsd:sequence>
-							<xsd:attribute name="name" use="required" type="xsd:string" />
-							<xsd:attribute name="type" type="xsd:string" />
-							<xsd:attribute name="mimetype" type="xsd:string" />
-							<xsd:attribute ref="xml:space" />
-						</xsd:complexType>
-					</xsd:element>
-					<xsd:element name="assembly">
-						<xsd:complexType>
-							<xsd:attribute name="alias" type="xsd:string" />
-							<xsd:attribute name="name" type="xsd:string" />
-						</xsd:complexType>
-					</xsd:element>
-					<xsd:element name="data">
-						<xsd:complexType>
-							<xsd:sequence>
-								<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-								<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-							</xsd:sequence>
-							<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-							<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-							<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-							<xsd:attribute ref="xml:space" />
-						</xsd:complexType>
-					</xsd:element>
-					<xsd:element name="resheader">
-						<xsd:complexType>
-							<xsd:sequence>
-								<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-							</xsd:sequence>
-							<xsd:attribute name="name" type="xsd:string" use="required" />
-						</xsd:complexType>
-					</xsd:element>
-				</xsd:choice>
-			</xsd:complexType>
-		</xsd:element>
-	</xsd:schema>
-	<resheader name="resmimetype">
-		<value>text/microsoft-resx</value>
-	</resheader>
-	<resheader name="version">
-		<value>2.0</value>
-	</resheader>
-	<resheader name="reader">
-		<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-	</resheader>
-	<resheader name="writer">
-		<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-	</resheader>
-	<data name="VectoInputEngineering" xml:space="preserve">
-		<value>VectoInputEngineering</value>
-	</data>
-	<data name="Component_Vehicle" xml:space="preserve">
-		<value>Vehicle</value>
-	</data>
-	<data name="Vehicle_VehicleCategory" xml:space="preserve">
-		<value>VehicleCategory</value>
-	</data>
-	<data name="Vehicle_AxleConfiguration" xml:space="preserve">
-		<value>AxleConfiguration</value>
-	</data>
-	<data name="Vehicle_CurbWeightChassis" xml:space="preserve">
-		<value>CurbWeightChassis</value>
-	</data>
-	<data name="Vehicle_GrossVehicleMass" xml:space="preserve">
-		<value>GrossVehicleMass</value>
-	</data>
-	<data name="Vehicle_AirDragArea" xml:space="preserve">
-		<value>CdxA</value>
-	</data>
-	<data name="Vehicle_SteeredAxles" xml:space="preserve">
-		<value>SteeredAxles</value>
-	</data>
-	<data name="Vehicle_RetarderType" xml:space="preserve">
-		<value>RetarderType</value>
-	</data>
-	<data name="Vehicle_AngledriveType" xml:space="preserve">
-		<value>AngledriveType</value>
-	</data>
-	<data name="Vehicle_PTOType" xml:space="preserve">
-		<value>PTOType</value>
-	</data>
-	<data name="Vehicle_Components" xml:space="preserve">
-		<value>Components</value>
-	</data>
-	<data name="Vehicle_RetarderRatio" xml:space="preserve">
-		<value>RetarderRatio</value>
-	</data>
-	<data name="Vehicle_CurbWeightExtra" xml:space="preserve">
-		<value>CurbWeightExtra</value>
-	</data>
-	<data name="Vehicle_Loading" xml:space="preserve">
-		<value>Loading</value>
-	</data>
-	<data name="Vehicle_CrossWindCorrectionMode" xml:space="preserve">
-		<value>CrossWindCorrectionMode</value>
-	</data>
-	<data name="Vehicle_AdvancedDriverAssist" xml:space="preserve">
-		<value>AdvancedDriverAssist</value>
-	</data>
-	<data name="Vehicle_AdvancedDriverAssist_EngineStartStop" xml:space="preserve">
-		<value>EngineStartStop</value>
-	</data>
-	<data name="Vehicle_AdvancedDriverAssist_EngineStartStop_Enabled" xml:space="preserve">
-		<value>Enabled</value>
-	</data>
-	<data name="Component_Engine" xml:space="preserve">
-		<value>Engine</value>
-	</data>
-	<data name="ComponentDataWrapper" xml:space="preserve">
-		<value>Data</value>
-	</data>
-	<data name="Engine_Displacement" xml:space="preserve">
-		<value>Displacement</value>
-	</data>
-	<data name="Engine_IdlingSpeed" xml:space="preserve">
-		<value>IdlingSpeed</value>
-	</data>
-	<data name="Engine_WHTCUrban" xml:space="preserve">
-		<value>WHTCUrban</value>
-	</data>
-	<data name="Engine_WHTCRural" xml:space="preserve">
-		<value>WHTCRural</value>
-	</data>
-	<data name="Engine_WHTCMotorway" xml:space="preserve">
-		<value>WHTCMotorway</value>
-	</data>
-	<data name="Engine_ColdHotBalancingFactor" xml:space="preserve">
-		<value>BFColdHot</value>
-	</data>
-	<data name="Engine_FuelConsumptionMap" xml:space="preserve">
-		<value>FuelConsumptionMap</value>
-	</data>
-	<data name="Engine_FullLoadAndDragCurve" xml:space="preserve">
-		<value>FullLoadAndDragCurve</value>
-	</data>
-	<data name="Component_Gearbox" xml:space="preserve">
-		<value>Gearbox</value>
-	</data>
-	<data name="Gearbox_TransmissionType" xml:space="preserve">
-		<value>TransmissionType</value>
-	</data>
-	<data name="Gearbox_Gear_Ratio" xml:space="preserve">
-		<value>Ratio</value>
-	</data>
-	<data name="Gearbox_Gear_TorqueLossMap" xml:space="preserve">
-		<value>TorqueLossMap</value>
-	</data>
-	<data name="AngleDrive_TorqueLossMap" xml:space="preserve">
-		<value>TorqueLossMap</value>
-	</data>
-	<data name="Axlegear_TorqueLossMap" xml:space="preserve">
-		<value>TorqueLossMap</value>
-	</data>
-	<data name="Axlegear_Ratio" xml:space="preserve">
-		<value>Ratio</value>
-	</data>
-	<data name="AngleDrive_Ratio" xml:space="preserve">
-		<value>Ratio</value>
-	</data>
-	<data name="Component_Angledrive" xml:space="preserve">
-		<value>Angledrive</value>
-	</data>
-	<data name="Component_Retarder" xml:space="preserve">
-		<value>Retarder</value>
-	</data>
-	<data name="Component_Axlegear" xml:space="preserve">
-		<value>Axlegear</value>
-	</data>
-	<data name="Retarder_RetarderLossMap" xml:space="preserve">
-		<value>RetarderLossMap</value>
-	</data>
-	<data name="Component_AxleWheels" xml:space="preserve">
-		<value>AxleWheels</value>
-	</data>
-	<data name="AxleWheels_Axles_Axle" xml:space="preserve">
-		<value>Axle</value>
-	</data>
-	<data name="AxleWheels_Axles" xml:space="preserve">
-		<value>Axles</value>
-	</data>
-	<data name="AxleWheels_Axles_Axle_Dimension" xml:space="preserve">
-		<value>Dimension</value>
-	</data>
-	<data name="AxleWheels_Axles_Axle_RRCISO" xml:space="preserve">
-		<value>RRCISO</value>
-	</data>
-	<data name="AxleWheels_Axles_Axle_FzISO" xml:space="preserve">
-		<value>FzISO</value>
-	</data>
-	<data name="AxleWheels_Axles_Axle_WeightShare" xml:space="preserve">
-		<value>WeightShare</value>
-	</data>
-	<data name="AxleWheels_Axles_Axle_Inertia" xml:space="preserve">
-		<value>Inertia</value>
-	</data>
-	<data name="AxleWheels_Axles_Axle_DynamicTyreRadius" xml:space="preserve">
-		<value>DynamicTyreRadius</value>
-	</data>
-	<data name="VectoJob_EngineOnlyMode" xml:space="preserve">
-		<value>EngineOnlyMode</value>
-	</data>
-	<data name="VectoJob_MissionCycles" xml:space="preserve">
-		<value>MissionCycles</value>
-	</data>
-	<data name="Missions_Cycle" xml:space="preserve">
-		<value>Cycle</value>
-	</data>
-	<data name="AngleDrive_Efficiency" xml:space="preserve">
-		<value>Efficiency</value>
-	</data>
-	<data name="Axlegear_Efficiency" xml:space="preserve">
-		<value>Efficiency</value>
-	</data>
-	<data name="Gearbox_Gear_Efficiency" xml:space="preserve">
-		<value>Efficiency</value>
-	</data>
-	<data name="Gearbox_Gears_Gear" xml:space="preserve">
-		<value>Gear</value>
-	</data>
-	<data name="Gearbox_Gears" xml:space="preserve">
-		<value>Gears</value>
-	</data>
-	<data name="Gearbox_Gears_MaxTorque" xml:space="preserve">
-		<value>MaxTorque</value>
-	</data>
-	<data name="Gearbox_Inertia" xml:space="preserve">
-		<value>Inertia</value>
-	</data>
-	<data name="Engine_Inertia" xml:space="preserve">
-		<value>Inertia</value>
-	</data>
-	<data name="Engine_WHTCEngineering" xml:space="preserve">
-		<value>WHTCEngineering</value>
-	</data>
-	<data name="ExternalResource" xml:space="preserve">
-		<value>Resource</value>
-	</data>
-	<data name="Component_TorqueConverter" xml:space="preserve">
-		<value>TorqueConverter</value>
-	</data>
-	<data name="TorqueConverter_ReferenceRPM" xml:space="preserve">
-		<value>ReferenceRPM</value>
-	</data>
-	<data name="TorqueConverter_Characteristics" xml:space="preserve">
-		<value>Characteristics</value>
-	</data>
-	<data name="TorqueConverter_Inertia" xml:space="preserve">
-		<value>Inertia</value>
-	</data>
-	<data name="Gearbox_TractionInterruption" xml:space="preserve">
-		<value>TractionInterruption</value>
-	</data>
-	<data name="Gearbox_Gears_Gear_ShiftPolygon" xml:space="preserve">
-		<value>ShiftPolygon</value>
-	</data>
-	<data name="TorqueConverter_ShiftPolygon" xml:space="preserve">
-		<value>ShiftPolygon</value>
-	</data>
-	<data name="Component_DriverModel" xml:space="preserve">
-		<value>DriverModel</value>
-	</data>
-	<data name="DriverModel_LookAheadCoasting" xml:space="preserve">
-		<value>LookAheadCoasting</value>
-	</data>
-	<data name="DriverModel_LookAheadCoasting_Enabled" xml:space="preserve">
-		<value>Enabled</value>
-	</data>
-	<data name="DriverModel_LookAheadCoasting_MinSpeed" xml:space="preserve">
-		<value>MinSpeed</value>
-	</data>
-	<data name="DriverModel_LookAheadCoasting_PreviewDistanceFactor" xml:space="preserve">
-		<value>PreviewDistanceFactor</value>
-	</data>
-	<data name="DriverModel_LookAheadCoasting_DecisionFactorOffset" xml:space="preserve">
-		<value>DecisionFactorOffset</value>
-	</data>
-	<data name="DriverModel_LookAheadCoasting_DecisionFactorScaling" xml:space="preserve">
-		<value>DecisionFactorScaling</value>
-	</data>
-	<data name="DriverModel_LookAheadCoasting_SpeedDependentDecisionFactor" xml:space="preserve">
-		<value>SpeedDependentDecisionFactor</value>
-	</data>
-	<data name="DriverModel_LookAheadCoasting_VelocityDropDecisionFactor" xml:space="preserve">
-		<value>VelocityDropDecisionFactor</value>
-	</data>
-	<data name="DriverModel_Overspeed" xml:space="preserve">
-		<value>Overspeed</value>
-	</data>
-	<data name="DriverModel_Overspeed_Mode" xml:space="preserve">
-		<value>Mode</value>
-	</data>
-	<data name="DriverModel_Overspeed_MinSpeed" xml:space="preserve">
-		<value>MinSpeed</value>
-	</data>
-	<data name="DriverModel_Overspeed_AllowedOverspeed" xml:space="preserve">
-		<value>AllowedOverspeed</value>
-	</data>
-	<data name="DriverModel_Overspeed_AllowedUnderspeed" xml:space="preserve">
-		<value>AllowedUnderspeed</value>
-	</data>
-	<data name="DriverModel_DriverAccelerationCurve" xml:space="preserve">
-		<value>DriverAccelerationCurve</value>
-	</data>
-	<data name="DriverModel_ShiftStrategyParameters" xml:space="preserve">
-		<value>ShiftStrategyParameters</value>
-	</data>
-	<data name="DriverModel_ShiftStrategyParameters_UpshiftMinAcceleration" xml:space="preserve">
-		<value>UpshiftMinAcceleration</value>
-	</data>
-	<data name="DriverModel_ShiftStrategyParameters_DownshiftAfterUpshiftDelay" xml:space="preserve">
-		<value>DownshiftAfterUpshiftDelay</value>
-	</data>
-	<data name="DriverModel_ShiftStrategyParameters_UpshiftAfterDownshiftDelay" xml:space="preserve">
-		<value>UpshiftAfterDownshiftDelay</value>
-	</data>
-	<data name="DriverModel_ShiftStrategyParameters_TorqueReserve" xml:space="preserve">
-		<value>TorqueReserve</value>
-	</data>
-	<data name="DriverModel_ShiftStrategyParameters_TimeBetweenGearshift" xml:space="preserve">
-		<value>TimeBetweenGearshift</value>
-	</data>
-	<data name="DriverModel_ShiftStrategyParameters_StartSpeed" xml:space="preserve">
-		<value>StartSpeed</value>
-	</data>
-	<data name="DriverModel_ShiftStrategyParameters_StartAcceleration" xml:space="preserve">
-		<value>StartAcceleration</value>
-	</data>
-	<data name="DriverModel_ShiftStrategyParameters_StartTorqueReserve" xml:space="preserve">
-		<value>StartTorqueReserve</value>
-	</data>
-	<data name="VectoInputDeclaration" xml:space="preserve">
-		<value>VectoInputDeclaration</value>
-	</data>
-	<data name="Auxiliaries_Auxiliary_ConstantAuxLoad" xml:space="preserve">
-		<value>ConstantAuxLoad</value>
-	</data>
-	<data name="Auxiliaries_Auxiliary_TransmissionRatioToEngine" xml:space="preserve">
-		<value>TransmissionRatioToEngine</value>
-	</data>
-	<data name="Auxiliaries_Auxiliary_EfficiencyToEngine" xml:space="preserve">
-		<value>EfficiencyToEngine</value>
-	</data>
-	<data name="Auxiliaries_Auxiliary_EfficiencyAuxSupply" xml:space="preserve">
-		<value>EfficiencyAuxSupply</value>
-	</data>
-	<data name="Auxiliaries_Auxiliary_AuxMap" xml:space="preserve">
-		<value>AuxMap</value>
-	</data>
-	<data name="Auxiliaries_Auxiliary" xml:space="preserve">
-		<value>Auxiliary</value>
-	</data>
-	<data name="Component_Auxiliaries" xml:space="preserve">
-		<value>Auxiliaries</value>
-	</data>
-	<data name="Auxiliaries_Auxiliary_Technology" xml:space="preserve">
-		<value>Technology</value>
-	</data>
-	<data name="VectoComponentEngineering" xml:space="preserve">
-		<value>VectoComponentEngineering</value>
-	</data>
-	<data name="AxleWheels_Axles_Axle_AxleNumber_Attr" xml:space="preserve">
-		<value>axleNumber</value>
-	</data>
-	<data name="AxleWheels_Axles_Axle_TwinTyres_Attr" xml:space="preserve">
-		<value>TwinTyres</value>
-	</data>
-	<data name="AxleWheels_Axles_Axle_AxleType_Attr" xml:space="preserve">
-		<value>AxleType</value>
-	</data>
-	<data name="Gearbox_Gear_GearNumber_Attr" xml:space="preserve">
-		<value>number</value>
-	</data>
-	<data name="ExtResource_Type_Attr" xml:space="preserve">
-		<value>type</value>
-	</data>
-	<data name="ExtResource_File_Attr" xml:space="preserve">
-		<value>file</value>
-	</data>
-	<data name="ExtResource_Type_Value_CSV" xml:space="preserve">
-		<value>csv</value>
-	</data>
-	<data name="ExtResource_Type_Value_XML" xml:space="preserve">
-		<value>xml</value>
-	</data>
-	<data name="ExtResource_Component_Attr" xml:space="preserve">
-		<value>component</value>
-	</data>
-	<data name="Auxiliaries_Auxiliary_ID_Attr" xml:space="preserve">
-		<value>id</value>
-	</data>
-	<data name="Component_ID_Attr" xml:space="preserve">
-		<value>id</value>
-	</data>
-	<data name="Vehicle_CrosswindCorrectionMap_VehicleSpeed_Attr" xml:space="preserve">
-		<value>vehicleSpeed</value>
-	</data>
-	<data name="Vehicle_AccelerationCurve_MaxAcceleration_Attr" xml:space="preserve">
-		<value>maxAcceleration</value>
-	</data>
-	<data name="Vehicle_AccelerationCurve_MaxDeceleration_Attr" xml:space="preserve">
-		<value>maxDeceleration</value>
-	</data>
-	<data name="Engine_FuelConsumptionMap_EngineSpeed_Attr" xml:space="preserve">
-		<value>engineSpeed</value>
-	</data>
-	<data name="Engine_EngineFullLoadCurve_EngineSpeed_Attr" xml:space="preserve">
-		<value>engineSpeed</value>
-	</data>
-	<data name="Engine_FuelConsumptionMap_Torque_Attr" xml:space="preserve">
-		<value>torque</value>
-	</data>
-	<data name="Engine_FuelConsumptionMap_FuelConsumption_Attr" xml:space="preserve">
-		<value>fuelConsumption</value>
-	</data>
-	<data name="Engine_FullLoadCurve_MaxTorque_Attr" xml:space="preserve">
-		<value>maxTorque</value>
-	</data>
-	<data name="Engine_FullLoadCurve_DragTorque_Attr" xml:space="preserve">
-		<value>dragTorque</value>
-	</data>
-	<data name="Gear_ShiftPolygon_EngineTorque_Attr" xml:space="preserve">
-		<value>engineTorque</value>
-	</data>
-	<data name="Gear_ShiftPolygonMapping_DownshiftSpeed_Attr" xml:space="preserve">
-		<value>downshiftSpeed</value>
-	</data>
-	<data name="Gear_ShiftPolygonMapping_UpshiftSpeed_Attr" xml:space="preserve">
-		<value>upshiftSpeed</value>
-	</data>
-	<data name="Aux_AuxMap_AuxiliarySpeed_Attr" xml:space="preserve">
-		<value>auxiliarySpeed</value>
-	</data>
-	<data name="Aux_AuxMap_MechanicalPower_Attr" xml:space="preserve">
-		<value>mechanicalPower</value>
-	</data>
-	<data name="Auxr_AuxMapMapping_SupplyPower_Attr" xml:space="preserve">
-		<value>supplyPower</value>
-	</data>
-	<data name="Retarder_RetarderLossmap_RetarderSpeed_Attr" xml:space="preserve">
-		<value>retarderSpeed</value>
-	</data>
-	<data name="Retarder_RetarderLossmap_TorqueLoss_Attr" xml:space="preserve">
-		<value>torqueLoss</value>
-	</data>
-	<data name="TransmissionLossmap_TorqueLoss_Attr" xml:space="preserve">
-		<value>torqueLoss</value>
-	</data>
-	<data name="TransmissionLossmap_InputSpeed_Attr" xml:space="preserve">
-		<value>inputSpeed</value>
-	</data>
-	<data name="TransmissionLossmap_InputTorque_Attr" xml:space="preserve">
-		<value>inputTorque</value>
-	</data>
-	<data name="TorqueConverterData_SpeedRatio_Attr" xml:space="preserve">
-		<value>speedRatio</value>
-	</data>
-	<data name="TorqueConverterData_TorqueRatio_Attr" xml:space="preserve">
-		<value>torqueRatio</value>
-	</data>
-	<data name="TorqueConverterDataMapping_InputTorqueRef_Attr" xml:space="preserve">
-		<value>inputTorqueRef</value>
-	</data>
-	<data name="Driver_CoastingDFTargetSpeedLookupMapping_TargetVelocity_Attr" xml:space="preserve">
-		<value>targetVelocity</value>
-	</data>
-	<data name="Driver_CoastingDFVelocityDropLookupMapping_VelocityDrop_Attr" xml:space="preserve">
-		<value>velocityDrop</value>
-	</data>
-	<data name="Driver_CoastingDFTargetSpeedLookupMapping_DecisionFactor_Attr" xml:space="preserve">
-		<value>decisionFactorVel</value>
-	</data>
-	<data name="Driver_CoastingDFVelocityDropLookupMapping_DecisionFactorDrop_Attr" xml:space="preserve">
-		<value>decisionFactorDrop</value>
-	</data>
-	<data name="Component_Manufacturer" xml:space="preserve">
-		<value>Manufacturer</value>
-	</data>
-	<data name="Component_Creator" xml:space="preserve">
-		<value>Creator</value>
-	</data>
-	<data name="Component_Date" xml:space="preserve">
-		<value>Date</value>
-	</data>
-	<data name="Component_Model" xml:space="preserve">
-		<value>Model</value>
-	</data>
-	<data name="Component_CertificationNumber_Attr" xml:space="preserve">
-		<value>certificationNumber</value>
-	</data>
-	<data name="Angledrive_LossMap_Entry" xml:space="preserve">
-		<value>Entry</value>
-	</data>
-	<data name="Axlegear_TorqueLossMap_Entry" xml:space="preserve">
-		<value>Entry</value>
-	</data>
-	<data name="Engine_FuelConsumptionMap_Entry" xml:space="preserve">
-		<value>Entry</value>
-	</data>
-	<data name="Engine_FullLoadCurve_Entry" xml:space="preserve">
-		<value>Entry</value>
-	</data>
-	<data name="Gearbox_Gear_TorqueLossMap_Entry" xml:space="preserve">
-		<value>Entry</value>
-	</data>
-	<data name="Retarder_RetarderLossMap_Entry" xml:space="preserve">
-		<value>Entry</value>
-	</data>
-	<data name="TorqueConverter_Characteristics_Entry" xml:space="preserve">
-		<value>Entry</value>
-	</data>
-	<data name="Vehicle_AdvancedDriverAssist_EngineStartStop_ActivationDelay" xml:space="preserve">
-		<value>ActivationDelay</value>
-	</data>
-	<data name="Vehicle_AdvancedDriverAssist_EngineStartStop_MinOnTime" xml:space="preserve">
-		<value>MinOnTime</value>
-	</data>
-	<data name="Vehicle_AdvancedDriverAssist_EngineStartStop_MaxSpeed" xml:space="preserve">
-		<value>MaxSpeed</value>
-	</data>
-	<data name="DriverModel_DriverAccelerationCurve_Entry" xml:space="preserve">
-		<value>Entry</value>
-	</data>
-	<data name="LookAheadCoasting_SpeedDependentDecisionFactor_Entry" xml:space="preserve">
-		<value>Entry</value>
-	</data>
-	<data name="LookAheadCoasting_VelocityDropDecisionFactor_Entry" xml:space="preserve">
-		<value>Entry</value>
-	</data>
-	<data name="Gearbox_Gears_Gear_ShiftPolygon_Entry" xml:space="preserve">
-		<value>Entry</value>
-	</data>
-	<data name="TorqueConverter_ShiftPolygon_Entry" xml:space="preserve">
-		<value>Entry</value>
-	</data>
-	<data name="Vehicle_AccelerationCurve_VehicleSpeed_Attr" xml:space="preserve">
-    <value>vehicleSpeed</value>
-  </data>
-	<data name="Vehicle_CrosswindCorrectionData" xml:space="preserve">
-    <value>CrossWindCorrectionData</value>
-  </data>
-	<data name="Vehicle_CrosswindCorrectionData_Entry" xml:space="preserve">
-    <value>Entry</value>
-  </data>
-	<data name="Vehicle_CrosswindCorrectionMap_CdScalingFactor" xml:space="preserve">
-    <value>CdScalingFactor</value>
-  </data>
-	<data name="Vehicle_CrosswindCorrectionMap_Beta" xml:space="preserve">
-    <value>beta</value>
-  </data>
-	<data name="Vehicle_CrosswindCorrectionMap_DeltaCdxA" xml:space="preserve">
-    <value>deltaCdxA</value>
-  </data>
-	<data name="Auxiliaries_Auxiliary_AuxMap_Entry" xml:space="preserve">
-    <value>Entry</value>
-  </data>
-	<data name="Vehicle_PTOIdleLossMap" xml:space="preserve">
-    <value>PTOIdleLossMap</value>
-  </data>
-	<data name="Vehicle_PTOIdleLossMap_Entry" xml:space="preserve">
-    <value>Entry</value>
-  </data>
-	<data name="Vehicle_PTOIdleLossMap_EngineSpeed_Attr" xml:space="preserve">
-    <value>engineSpeed</value>
-  </data>
-	<data name="Vehicle_PTOIdleLossMap_TorqueLoss_Attr" xml:space="preserve">
-    <value>ptoTorqueLoss</value>
-  </data>
-	<data name="Vehicle_PTOCycle" xml:space="preserve">
-    <value>PTOCycle</value>
-  </data>
-	<data name="Vehicle_PTOCycle_Entry" xml:space="preserve">
-    <value>Entry</value>
-  </data>
-	<data name="Vehicle_PTOCycle_Time_Attr" xml:space="preserve">
-    <value>time</value>
-  </data>
-	<data name="Vehicle_PTOCycle_EngineSpeed_Attr" xml:space="preserve">
-    <value>engineSpeed</value>
-  </data>
-	<data name="Vehicle_PTOCycle_Torque_Attr" xml:space="preserve">
-    <value>torque</value>
-  </data>
-	<data name="Vehicle_CurbMassChassis" xml:space="preserve">
-    <value>CurbMassChassis</value>
-  </data>
-	<data name="Vehicle_VIN" xml:space="preserve">
-    <value>VIN</value>
-  </data>
-	<data name="AxleWheels_Axles_Axle_AxleType" xml:space="preserve">
-    <value>AxleType</value>
-  </data>
-	<data name="AxleWheels_Axles_Axle_TwinTyres" xml:space="preserve">
-    <value>TwinTyres</value>
-  </data>
-	<data name="AxleWheels_Axles_Axle_Steered" xml:space="preserve">
-    <value>Steered</value>
-  </data>
-	<data name="AxleWheels_Axles_Axle_Tyre" xml:space="preserve">
-    <value>Tyre</value>
-  </data>
-	<data name="Component_AirDrag" xml:space="preserve">
-    <value>AirDrag</value>
-  </data>
-	<data name="AirDrag_DeclaredCdxA" xml:space="preserve">
-    <value>DeclaredCdxA</value>
-  </data>
-	<data name="Vehicle_CurbMassExtra" xml:space="preserve">
-    <value>CurbMassExtra</value>
-  </data>
-	<data name="Component_TechnicalReportId" xml:space="preserve">
-    <value>TechnicalReportId</value>
-  </data>
-	<data name="AxleWheels_Axles_Axle_RRCDeclared" xml:space="preserve">
-    <value>RRCDeclared</value>
-  </data>
-	<data name="Component_AppVersion" xml:space="preserve">
-    <value>AppVersion</value>
-  </data>
-	<data name="Component_CertificationMethod" xml:space="preserve">
-    <value>CertificationMethod</value>
-  </data>
-	<data name="Component_Gearbox_CertificationMethod" xml:space="preserve">
-    <value>MainCertificationMethod</value>
-  </data>
-	<data name="Engine_RatedSpeed" xml:space="preserve">
-    <value>RatedSpeed</value>
-  </data>
-	<data name="Engine_RatedPower" xml:space="preserve">
-    <value>RatedPower</value>
-  </data>
-	<data name="Engine_MaxTorque" xml:space="preserve">
-    <value>MaxEngineTorque</value>
-  </data>
-	<data name="Engine_FuelType" xml:space="preserve">
-    <value>FuelType</value>
-  </data>
-	<data name="Engine_CorrecionFactor_NCV" xml:space="preserve">
-    <value>CFNCV</value>
-  </data>
-	<data name="Engine_CorrectionFactor_RegPer" xml:space="preserve">
-    <value>CFRegPer</value>
-  </data>
-	<data name="Vehicle_PTO" xml:space="preserve">
-    <value>PTO</value>
-  </data>
-	<data name="Vehicle_PTO_ShaftsGearWheels" xml:space="preserve">
-    <value>PTOShaftsGearWheels</value>
-  </data>
-	<data name="Vehicle_PTO_OtherElements" xml:space="preserve">
-    <value>PTOOtherElements</value>
-  </data>
-	<data name="Vehicle_IdlingSpeed" xml:space="preserve">
-    <value>IdlingSpeed</value>
-  </data>
-	<data name="Vehicle_LegislativeClass" xml:space="preserve">
-    <value>LegislativeClass</value>
-  </data>
-	<data name="DI_Signature" xml:space="preserve">
-    <value>Signature</value>
-  </data>
-	<data name="DI_Signature_Reference" xml:space="preserve">
-    <value>Reference</value>
-  </data>
-	<data name="DI_Signature_Reference_URI_Attr" xml:space="preserve">
-    <value>URI</value>
-  </data>
-	<data name="DI_Signature_Reference_Transforms" xml:space="preserve">
-    <value>Transforms</value>
-  </data>
-	<data name="DI_Signature_Reference_Transforms_Transform" xml:space="preserve">
-    <value>Transform</value>
-  </data>
-	<data name="DI_Signature_Algorithm_Attr" xml:space="preserve">
-    <value>Algorithm</value>
-  </data>
-	<data name="DI_Signature_Reference_DigestMethod" xml:space="preserve">
-    <value>DigestMethod</value>
-  </data>
-	<data name="DI_Signature_Reference_DigestValue" xml:space="preserve">
-    <value>DigestValue</value>
-  </data>
-	<data name="Component_ManufacturerAddress" xml:space="preserve">
-    <value>ManufacturerAddress</value>
-  </data>
-	<data name="Vehicle_TorqueLimits" xml:space="preserve">
-    <value>TorqueLimits</value>
-  </data>
-	<data name="Vehicle_TorqueLimits_Entry_Gear_Attr" xml:space="preserve">
-    <value>gear</value>
-  </data>
-	<data name="Vehicle_TorqueLimits_Entry_MaxTorque_Attr" xml:space="preserve">
-    <value>maxTorque</value>
-  </data>
-	<data name="Vehicle_TorqueLimits_Entry" xml:space="preserve">
-    <value>Entry</value>
-  </data>
-	<data name="Gearbox_Gear_MaxSpeed" xml:space="preserve">
-    <value>MaxSpeed</value>
-  </data>
-</root>
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Resources/XSD/VectoCOC.xsd b/VectoCore/VectoCore/Resources/XSD/VectoCOC.xsd
index 7dc7b26960..a3294f7311 100644
--- a/VectoCore/VectoCore/Resources/XSD/VectoCOC.xsd
+++ b/VectoCore/VectoCore/Resources/XSD/VectoCOC.xsd
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- edited with XMLSpy v2016 rel. 2 (x64) (http://www.altova.com) by Helmut Eichlseder (TU Graz/Inst. f. VKM und THD) -->
 <!--W3C XML Schema generated by XMLSpy vXMLSpy Professional Edition v2016 rel. 2 (x64) (http://www.altova.com)-->
-<xs:schema xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.2" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vdecdef="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v0.8" targetNamespace="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.2" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.1">
+<xs:schema xmlns="urn:tugraz:ivt:VectoAPI:COCOutput:v0.4" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vdecdef="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v0.8" targetNamespace="urn:tugraz:ivt:VectoAPI:COCOutput:v0.4" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.4">
 	<xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v0.8" schemaLocation="VectoDeclarationDefinitions.0.8.xsd"/>
 	<xs:element name="VectoCustomerInformation">
 		<xs:annotation>
diff --git a/VectoCore/VectoCore/Resources/XSD/VectoOutput.xsd b/VectoCore/VectoCore/Resources/XSD/VectoOutput.xsd
index 445585b87c..ff024ed8cb 100644
--- a/VectoCore/VectoCore/Resources/XSD/VectoOutput.xsd
+++ b/VectoCore/VectoCore/Resources/XSD/VectoOutput.xsd
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- edited with XMLSpy v2016 rel. 2 (x64) (http://www.altova.com) by Helmut Eichlseder (TU Graz/Inst. f. VKM und THD) -->
 <!--W3C XML Schema generated by XMLSpy vXMLSpy Professional Edition v2016 rel. 2 (x64) (http://www.altova.com)-->
-<xs:schema xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.2" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vdecdef="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v0.8" targetNamespace="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.2" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.1">
+<xs:schema xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.4" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vdecdef="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v0.8" targetNamespace="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.4" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.4">
 	<xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v0.8" schemaLocation="VectoDeclarationDefinitions.0.8.xsd"/>
 	<xs:element name="VectoOutput">
 		<xs:annotation>
@@ -62,100 +62,101 @@
 		</xs:complexContent>
 	</xs:complexType>
 	<xs:complexType name="GearboxType">
-		<xs:complexContent>
-			<xs:extension base="ComponentDescriptionType">
-				<xs:sequence>
-					<xs:element name="MainCertificationMethod" type="vdecdef:GearboxCertificationOptionType">
-						<xs:annotation>
-							<xs:documentation>P154</xs:documentation>
-						</xs:annotation>
-					</xs:element>
-					<xs:element name="TransmissionType" type="vdecdef:GearboxTransmissionTypeType">
-						<xs:annotation>
-							<xs:documentation>P076</xs:documentation>
-						</xs:annotation>
-					</xs:element>
-					<xs:element name="GearsCount">
-						<xs:annotation>
-							<xs:documentation>P199</xs:documentation>
-						</xs:annotation>
-						<xs:simpleType>
-							<xs:restriction base="xs:int">
-								<xs:minInclusive value="1"/>
-							</xs:restriction>
-						</xs:simpleType>
-					</xs:element>
-					<xs:element name="TransmissionRatioFinalGear" type="vdecdef:GearboxGearRatioType">
-						<xs:annotation>
-							<xs:documentation>P078</xs:documentation>
-						</xs:annotation>
-					</xs:element>
-				</xs:sequence>
-			</xs:extension>
-		</xs:complexContent>
+		<xs:sequence>
+			<xs:element name="Model" type="vdecdef:ModelType"/>
+			<xs:element name="CertificationMethod" type="vdecdef:GearboxCertificationOptionType">
+				<xs:annotation>
+					<xs:documentation>P154</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element name="CertificationNumber" type="vdecdef:CertificationNumberType" minOccurs="0"/>
+			<xs:element name="DigestValue" type="xs:token"/>
+			<xs:element name="TransmissionType" type="vdecdef:GearboxTransmissionTypeType">
+				<xs:annotation>
+					<xs:documentation>P076</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element name="GearsCount">
+				<xs:annotation>
+					<xs:documentation>P199</xs:documentation>
+				</xs:annotation>
+				<xs:simpleType>
+					<xs:restriction base="xs:int">
+						<xs:minInclusive value="1"/>
+					</xs:restriction>
+				</xs:simpleType>
+			</xs:element>
+			<xs:element name="TransmissionRatioFinalGear" type="vdecdef:GearboxGearRatioType">
+				<xs:annotation>
+					<xs:documentation>P078</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+		</xs:sequence>
 	</xs:complexType>
 	<xs:complexType name="RetarderType">
-		<xs:complexContent>
-			<xs:extension base="ComponentDescriptionType">
-				<xs:sequence>
-					<xs:element name="CertificationMethod" type="vdecdef:RetarderCertificationOptionType">
-						<xs:annotation>
-							<xs:documentation>P255</xs:documentation>
-						</xs:annotation>
-					</xs:element>
-				</xs:sequence>
-			</xs:extension>
-		</xs:complexContent>
+		<xs:sequence>
+			<xs:element name="RetarderType" type="vdecdef:RetarderTypeType">
+				<xs:annotation>
+					<xs:documentation>P052</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:sequence minOccurs="0">
+				<xs:element name="Model" type="vdecdef:ModelType"/>
+				<xs:element name="CertificationMethod" type="vdecdef:RetarderCertificationOptionType">
+					<xs:annotation>
+						<xs:documentation>P255</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+				<xs:element name="CertificationNumber" type="vdecdef:CertificationNumberType" minOccurs="0"/>
+				<xs:element name="DigestValue" type="xs:token"/>
+			</xs:sequence>
+		</xs:sequence>
 	</xs:complexType>
 	<xs:complexType name="AngledriveType">
-		<xs:complexContent>
-			<xs:extension base="ComponentDescriptionType">
-				<xs:sequence>
-					<xs:element name="CertificationMethod" type="vdecdef:AngledriveCertificationOptionType">
-						<xs:annotation>
-							<xs:documentation>P258</xs:documentation>
-						</xs:annotation>
-					</xs:element>
-					<xs:element name="Ratio" type="vdecdef:AngledriveRatioType">
-						<xs:annotation>
-							<xs:documentation>P176</xs:documentation>
-						</xs:annotation>
-					</xs:element>
-				</xs:sequence>
-			</xs:extension>
-		</xs:complexContent>
+		<xs:sequence>
+			<xs:element name="Model" type="vdecdef:ModelType"/>
+			<xs:element name="CertificationMethod" type="vdecdef:AngledriveCertificationOptionType">
+				<xs:annotation>
+					<xs:documentation>P258</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element name="CertificationNumber" type="vdecdef:CertificationNumberType" minOccurs="0"/>
+			<xs:element name="DigestValue" type="xs:token"/>
+			<xs:element name="Ratio" type="vdecdef:AngledriveRatioType">
+				<xs:annotation>
+					<xs:documentation>P176</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+		</xs:sequence>
 	</xs:complexType>
 	<xs:complexType name="AxlegearType">
-		<xs:complexContent>
-			<xs:extension base="ComponentDescriptionType">
-				<xs:sequence>
-					<xs:element name="CertificationMethod" type="vdecdef:AxlegearCertificationOptionType">
-						<xs:annotation>
-							<xs:documentation>P256</xs:documentation>
-						</xs:annotation>
-					</xs:element>
-					<xs:element name="LineType" type="vdecdef:AxlegearLineTypeType">
-						<xs:annotation>
-							<xs:documentation>P253</xs:documentation>
-						</xs:annotation>
-					</xs:element>
-					<xs:element name="Ratio" type="vdecdef:AxlegearRatioType">
-						<xs:annotation>
-							<xs:documentation>P150</xs:documentation>
-						</xs:annotation>
-					</xs:element>
-				</xs:sequence>
-			</xs:extension>
-		</xs:complexContent>
+		<xs:sequence>
+			<xs:element name="Model" type="vdecdef:ModelType"/>
+			<xs:element name="CertificationMethod" type="vdecdef:AxlegearCertificationOptionType">
+				<xs:annotation>
+					<xs:documentation>P256</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element name="CertificationNumber" type="vdecdef:CertificationNumberType" minOccurs="0"/>
+			<xs:element name="DigestValue" type="xs:token"/>
+			<xs:element name="LineType" type="vdecdef:AxlegearLineTypeType">
+				<xs:annotation>
+					<xs:documentation>P253</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element name="Ratio" type="vdecdef:AxlegearRatioType">
+				<xs:annotation>
+					<xs:documentation>P150</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+		</xs:sequence>
 	</xs:complexType>
 	<xs:complexType name="AirdragType">
 		<xs:sequence>
-			<xs:sequence minOccurs="0">
-				<xs:element name="Model"/>
-				<xs:element name="CertificationNumber"/>
-				<xs:element name="DigestValue"/>
-			</xs:sequence>
+			<xs:element name="Model" minOccurs="0"/>
 			<xs:element name="CertificationMethod" type="AirdragCertificationOptionType"/>
+			<xs:element name="CertificationNumber" minOccurs="0"/>
+			<xs:element name="DigestValue" minOccurs="0"/>
 			<xs:element name="CdxA" type="vdecdef:AirdragCdxAType">
 				<xs:annotation>
 					<xs:documentation>P245</xs:documentation>
@@ -180,7 +181,7 @@
 					<xs:documentation>P046</xs:documentation>
 				</xs:annotation>
 			</xs:element>
-			<xs:element name="TwinTyre" type="vdecdef:AxleTwinTyresType">
+			<xs:element name="TwinTyres" type="vdecdef:AxleTwinTyresType">
 				<xs:annotation>
 					<xs:documentation>P045</xs:documentation>
 				</xs:annotation>
@@ -206,16 +207,7 @@
 				</xs:annotation>
 				<xs:complexType>
 					<xs:simpleContent>
-						<xs:extension base="vdecdef:AuxSPTechnologyType">
-							<xs:attribute name="axleNumber" use="required">
-								<xs:simpleType>
-									<xs:restriction base="xs:int">
-										<xs:minInclusive value="1"/>
-										<xs:maxInclusive value="4"/>
-									</xs:restriction>
-								</xs:simpleType>
-							</xs:attribute>
-						</xs:extension>
+						<xs:extension base="vdecdef:AuxSPTechnologyType"/>
 					</xs:simpleContent>
 				</xs:complexType>
 			</xs:element>
@@ -285,32 +277,28 @@
 					<xs:documentation>P038</xs:documentation>
 				</xs:annotation>
 			</xs:element>
-			<xs:element name="RetarderType" type="vdecdef:RetarderTypeType">
-				<xs:annotation>
-					<xs:documentation>P052</xs:documentation>
-				</xs:annotation>
-			</xs:element>
 			<xs:element name="PTO" type="xs:boolean">
 				<xs:annotation>
 					<xs:documentation>P247</xs:documentation>
 				</xs:annotation>
 			</xs:element>
-			<xs:element name="TorqueLimits" type="TorqueLimitsType"/>
+			<xs:element name="TorqueLimits" type="TorqueLimitsType" minOccurs="0"/>
 			<xs:element name="Components">
 				<xs:complexType>
 					<xs:sequence>
 						<xs:element name="Engine" type="EngineType"/>
 						<xs:element name="Gearbox" type="GearboxType"/>
 						<xs:element name="Torqueconverter" type="TorqueconverterType" minOccurs="0"/>
-						<xs:element name="Retarder" type="RetarderType" minOccurs="0"/>
+						<xs:element name="Retarder" type="RetarderType"/>
 						<xs:element name="Angledrive" type="AngledriveType" minOccurs="0"/>
 						<xs:element name="Axlegear" type="AxlegearType"/>
-						<xs:element name="Airdrag" type="AirdragType"/>
+						<xs:element name="AirDrag" type="AirdragType"/>
 						<xs:element name="AxleWheels" type="AxleWheelsType"/>
 						<xs:element name="Auxiliaries" type="AuxiliariesType"/>
 					</xs:sequence>
 				</xs:complexType>
 			</xs:element>
+			<xs:element name="InputDataSignature" type="vdecdef:SignatureType"/>
 		</xs:sequence>
 	</xs:complexType>
 	<xs:complexType name="SimulationParametersType">
@@ -391,13 +379,12 @@
 					</xs:restriction>
 				</xs:simpleType>
 			</xs:element>
-			<xs:element name="GearShiftCount" type="xs:int"/>
+			<xs:element name="GearshiftCount" type="xs:int"/>
 		</xs:sequence>
 	</xs:complexType>
 	<xs:complexType name="VectoOutputDataType">
 		<xs:sequence>
 			<xs:element name="Vehicle" type="VehicleType"/>
-			<xs:element name="InputDataSignature" type="vdecdef:SignatureType"/>
 			<xs:element name="Results">
 				<xs:complexType>
 					<xs:sequence>
@@ -535,16 +522,15 @@
 		</xs:attribute>
 	</xs:complexType>
 	<xs:complexType name="TorqueconverterType">
-		<xs:complexContent>
-			<xs:extension base="ComponentDescriptionType">
-				<xs:sequence>
-					<xs:element name="CertificationMethod" type="vdecdef:TorqueConverterCertificationOptionType">
-						<xs:annotation>
-							<xs:documentation>P257</xs:documentation>
-						</xs:annotation>
-					</xs:element>
-				</xs:sequence>
-			</xs:extension>
-		</xs:complexContent>
+		<xs:sequence>
+			<xs:element name="Model" type="vdecdef:ModelType"/>
+			<xs:element name="CertificationMethod" type="vdecdef:TorqueConverterCertificationOptionType">
+				<xs:annotation>
+					<xs:documentation>P257</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element name="CertificationNumber" type="vdecdef:CertificationNumberType" minOccurs="0"/>
+			<xs:element name="DigestValue" type="xs:token"/>
+		</xs:sequence>
 	</xs:complexType>
 </xs:schema>
diff --git a/VectoCore/VectoCore/Utils/XPathHelper.cs b/VectoCore/VectoCore/Utils/XPathHelper.cs
index 040e43e499..42c1485904 100644
--- a/VectoCore/VectoCore/Utils/XPathHelper.cs
+++ b/VectoCore/VectoCore/Utils/XPathHelper.cs
@@ -22,7 +22,7 @@ namespace TUGraz.VectoCore.Utils
 		{
 			return string.Join("/",
 				xpathSections.Select(
-					x => string.IsNullOrWhiteSpace(x) || x.Equals("..") || x.Contains(":") || x.StartsWith("@") ? x : NSPrefix(x)))
+					x => string.IsNullOrWhiteSpace(x) || x.StartsWith("..") || x.Contains(":") || x.StartsWith("@") ? x : NSPrefix(x)))
 				;
 		}
 
diff --git a/VectoCore/VectoCore/VectoCore.csproj b/VectoCore/VectoCore/VectoCore.csproj
index d6779dd357..8588ecb4ff 100644
--- a/VectoCore/VectoCore/VectoCore.csproj
+++ b/VectoCore/VectoCore/VectoCore.csproj
@@ -193,11 +193,7 @@
     <Compile Include="OutputData\XML\XMLDeclarationReport.cs" />
     <Compile Include="OutputData\XML\XMLDeclarationWriter.cs" />
     <Compile Include="OutputData\XML\XMLEngineeringWriter.cs" />
-    <Compile Include="Resources\XMLNames.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DesignTime>True</DesignTime>
-      <DependentUpon>XMLNames.resx</DependentUpon>
-    </Compile>
+    <Compile Include="OutputData\XML\XMLFullReport.cs" />
     <Compile Include="Utils\ProviderExtensions.cs" />
     <Compile Include="Models\Declaration\AirDrag.cs" />
     <Compile Include="Models\Declaration\Fan.cs" />
@@ -340,11 +336,6 @@
     <Compile Include="Utils\XPathHelper.cs" />
   </ItemGroup>
   <ItemGroup>
-    <EmbeddedResource Include="Resources\XMLNames.resx">
-      <SubType>Designer</SubType>
-      <Generator>PublicResXFileCodeGenerator</Generator>
-      <LastGenOutput>XMLNames.Designer.cs</LastGenOutput>
-    </EmbeddedResource>
     <None Include="app.config" />
     <None Include="packages.config" />
     <EmbeddedResource Include="JsonKeys.resx">
@@ -455,6 +446,10 @@
       <Project>{79a066ad-69a9-4223-90f6-6ed5d2d084f4}</Project>
       <Name>VectoCommon</Name>
     </ProjectReference>
+    <ProjectReference Include="..\..\VectoCommon\VectoHashing\VectoHashing.csproj">
+      <Project>{B673E12F-D323-4C4C-8805-9915B2C72D3D}</Project>
+      <Name>VectoHashing</Name>
+    </ProjectReference>
   </ItemGroup>
   <ItemGroup />
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
diff --git a/VectoCore/VectoCoreTest/Integration/ATPowerTrain.cs b/VectoCore/VectoCoreTest/Integration/ATPowerTrain.cs
index 3797a8a9bd..c7299426ed 100644
--- a/VectoCore/VectoCoreTest/Integration/ATPowerTrain.cs
+++ b/VectoCore/VectoCoreTest/Integration/ATPowerTrain.cs
@@ -91,11 +91,13 @@ namespace TUGraz.VectoCore.Tests.Integration
 			}
 
 			var vehicleData = CreateVehicleData(3300.SI<Kilogram>());
+			var airdragData = CreateAirdragData();
 			var driverData = CreateDriverData(AccelerationFile, overspeed);
 
 			var runData = new VectoRunData() {
 				AxleGearData = axleGearData,
 				VehicleData = vehicleData,
+				AirdragData = airdragData,
 				GearboxData = gearboxData,
 				EngineData = engineData,
 				JobName = modFileName,
@@ -109,7 +111,7 @@ namespace TUGraz.VectoCore.Tests.Integration
 			var cycle = new DistanceBasedDrivingCycle(container, cycleData);
 			var engine = new CombustionEngine(container, engineData);
 			var tmp = cycle.AddComponent(new Driver(container, driverData, new DefaultDriverStrategy()))
-				.AddComponent(new Vehicle(container, vehicleData))
+				.AddComponent(new Vehicle(container, vehicleData, airdragData))
 				.AddComponent(new Wheels(container, vehicleData.DynamicTyreRadius, vehicleData.WheelsInertia))
 				.AddComponent(new Brakes(container))
 				.AddComponent(new AxleGear(container, axleGearData))
@@ -202,12 +204,6 @@ namespace TUGraz.VectoCore.Tests.Integration
 			};
 			return new VehicleData {
 				AxleConfiguration = AxleConfiguration.AxleConfig_4x2,
-				//AerodynamicDragAera = 3.2634.SI<SquareMeter>(),
-				//CrossWindCorrectionMode = CrossWindCorrectionMode.NoCorrection,
-				CrossWindCorrectionCurve =
-					new CrosswindCorrectionCdxALookup(3.2634.SI<SquareMeter>(),
-						CrossWindCorrectionCurveReader.GetNoCorrectionCurve(3.2634.SI<SquareMeter>()),
-						CrossWindCorrectionMode.NoCorrection),
 				CurbWeight = 11500.SI<Kilogram>(),
 				Loading = loading,
 				DynamicTyreRadius = 0.465.SI<Meter>(),
@@ -216,6 +212,17 @@ namespace TUGraz.VectoCore.Tests.Integration
 			};
 		}
 
+		private static AirdragData CreateAirdragData()
+		{
+			return new AirdragData() {
+				CrossWindCorrectionCurve =
+					new CrosswindCorrectionCdxALookup(3.2634.SI<SquareMeter>(),
+						CrossWindCorrectionCurveReader.GetNoCorrectionCurve(3.2634.SI<SquareMeter>()),
+						CrossWindCorrectionMode.NoCorrection),
+			};
+		}
+
+
 		private static DriverData CreateDriverData(string accelerationFile, bool overspeed = false)
 		{
 			return new DriverData {
diff --git a/VectoCore/VectoCoreTest/Integration/CoachAdvancedAuxPowertrain.cs b/VectoCore/VectoCoreTest/Integration/CoachAdvancedAuxPowertrain.cs
index 3bfa4573d4..c33dbba6e9 100644
--- a/VectoCore/VectoCoreTest/Integration/CoachAdvancedAuxPowertrain.cs
+++ b/VectoCore/VectoCoreTest/Integration/CoachAdvancedAuxPowertrain.cs
@@ -75,7 +75,10 @@ namespace TUGraz.VectoCore.Tests.Integration
 			bool highEnginePower = true)
 		{
 			var fileWriter = new FileOutputWriter(modFileName);
-			var modData = new ModalDataContainer(modFileName, FuelType.DieselCI, fileWriter) { WriteAdvancedAux = true, WriteModalResults = true };
+			var modData = new ModalDataContainer(modFileName, FuelType.DieselCI, fileWriter) {
+				WriteAdvancedAux = true,
+				WriteModalResults = true
+			};
 			var container = new VehicleContainer(ExecutionMode.Engineering, modData) {
 				RunData = new VectoRunData { JobName = modFileName, Cycle = cycleData }
 			};
@@ -85,6 +88,7 @@ namespace TUGraz.VectoCore.Tests.Integration
 				gearboxData.Gears.Count);
 			var axleGearData = CreateAxleGearData();
 			var vehicleData = CreateVehicleData(3300.SI<Kilogram>());
+			var airdragData = CreateAirdragData();
 			var driverData = CreateDriverData(AccelerationFile, overspeed);
 
 			var cycle = new DistanceBasedDrivingCycle(container, cycleData);
@@ -93,12 +97,13 @@ namespace TUGraz.VectoCore.Tests.Integration
 			var runData = new VectoRunData() {
 				AxleGearData = axleGearData,
 				VehicleData = vehicleData,
+				AirdragData = airdragData,
 				GearboxData = gearboxData,
 				EngineData = engineData
 			};
 
 			cycle.AddComponent(new Driver(container, driverData, new DefaultDriverStrategy()))
-				.AddComponent(new Vehicle(container, vehicleData))
+				.AddComponent(new Vehicle(container, vehicleData, airdragData))
 				.AddComponent(new Wheels(container, vehicleData.DynamicTyreRadius, vehicleData.WheelsInertia))
 				.AddComponent(new Brakes(container))
 				.AddComponent(new AxleGear(container, axleGearData))
@@ -182,12 +187,6 @@ namespace TUGraz.VectoCore.Tests.Integration
 			};
 			return new VehicleData {
 				AxleConfiguration = AxleConfiguration.AxleConfig_6x2,
-				//AerodynamicDragAera = 3.2634.SI<SquareMeter>(),
-				//CrossWindCorrectionMode = CrossWindCorrectionMode.NoCorrection,
-				CrossWindCorrectionCurve =
-					new CrosswindCorrectionCdxALookup(3.2634.SI<SquareMeter>(),
-						CrossWindCorrectionCurveReader.GetNoCorrectionCurve(3.2634.SI<SquareMeter>()),
-						CrossWindCorrectionMode.NoCorrection),
 				CurbWeight = 15700.SI<Kilogram>(),
 				Loading = loading,
 				DynamicTyreRadius = 0.52.SI<Meter>(),
@@ -196,6 +195,16 @@ namespace TUGraz.VectoCore.Tests.Integration
 			};
 		}
 
+		private static AirdragData CreateAirdragData()
+		{
+			return new AirdragData() {
+				CrossWindCorrectionCurve =
+					new CrosswindCorrectionCdxALookup(3.2634.SI<SquareMeter>(),
+						CrossWindCorrectionCurveReader.GetNoCorrectionCurve(3.2634.SI<SquareMeter>()),
+						CrossWindCorrectionMode.NoCorrection),
+			};
+		}
+
 		private static DriverData CreateDriverData(string accelerationFile, bool overspeed = false)
 		{
 			return new DriverData {
diff --git a/VectoCore/VectoCoreTest/Integration/CoachPowerTrain.cs b/VectoCore/VectoCoreTest/Integration/CoachPowerTrain.cs
index dce0151e0f..abb2aae21b 100644
--- a/VectoCore/VectoCoreTest/Integration/CoachPowerTrain.cs
+++ b/VectoCore/VectoCoreTest/Integration/CoachPowerTrain.cs
@@ -93,16 +93,18 @@ namespace TUGraz.VectoCore.Tests.Integration
 			var cycle = new DistanceBasedDrivingCycle(container, cycleData);
 			var engine = new CombustionEngine(container, engineData);
 			var clutch = new Clutch(container, engineData);
+			var airDragData = CreateAirdragData();
 
 			var runData = new VectoRunData() {
 				VehicleData = vehicleData,
 				AxleGearData = axleGearData,
 				GearboxData = gearboxData,
-				EngineData = engineData
+				EngineData = engineData,
+				AirdragData = airDragData
 			};
 
 			var tmp = cycle.AddComponent(new Driver(container, driverData, new DefaultDriverStrategy()))
-				.AddComponent(new Vehicle(container, vehicleData))
+				.AddComponent(new Vehicle(container, vehicleData, airDragData))
 				.AddComponent(new Wheels(container, vehicleData.DynamicTyreRadius, vehicleData.WheelsInertia))
 				.AddComponent(new Brakes(container))
 				.AddComponent(new AxleGear(container, axleGearData))
@@ -189,9 +191,7 @@ namespace TUGraz.VectoCore.Tests.Integration
 				AxleConfiguration = AxleConfiguration.AxleConfig_6x2,
 				//AerodynamicDragAera = 3.2634.SI<SquareMeter>(),
 				//CrossWindCorrectionMode = CrossWindCorrectionMode.NoCorrection,
-				CrossWindCorrectionCurve =
-					new CrosswindCorrectionCdxALookup(3.2634.SI<SquareMeter>(), CrossWindCorrectionCurveReader.GetNoCorrectionCurve(3.2634.SI<SquareMeter>()),
-						CrossWindCorrectionMode.NoCorrection),
+				
 				CurbWeight = 15700.SI<Kilogram>(),
 				Loading = loading,
 				DynamicTyreRadius = 0.52.SI<Meter>(),
@@ -200,6 +200,15 @@ namespace TUGraz.VectoCore.Tests.Integration
 			};
 		}
 
+		private static AirdragData CreateAirdragData()
+		{
+			return new AirdragData() {
+				CrossWindCorrectionCurve =
+					new CrosswindCorrectionCdxALookup(3.2634.SI<SquareMeter>(), CrossWindCorrectionCurveReader.GetNoCorrectionCurve(3.2634.SI<SquareMeter>()),
+						CrossWindCorrectionMode.NoCorrection),
+			};
+		}
+
 		private static DriverData CreateDriverData(string accelerationFile, bool overspeed = false)
 		{
 			return new DriverData {
diff --git a/VectoCore/VectoCoreTest/Integration/SimulationRuns/FullPowertrain.cs b/VectoCore/VectoCoreTest/Integration/SimulationRuns/FullPowertrain.cs
index 0fe65c037d..02a975cb56 100644
--- a/VectoCore/VectoCoreTest/Integration/SimulationRuns/FullPowertrain.cs
+++ b/VectoCore/VectoCoreTest/Integration/SimulationRuns/FullPowertrain.cs
@@ -80,6 +80,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
 			var axleGearData = CreateAxleGearData();
 			var vehicleData = CreateVehicleData(3300.SI<Kilogram>());
 			var driverData = CreateDriverData(AccelerationFile);
+			var airDragData = CreateAirdragData();
 
 			var cycle = new DistanceBasedDrivingCycle(container, cycleData);
 			var cyclePort = cycle.OutPort();
@@ -88,11 +89,12 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
 				EngineData = engineData,
 				AxleGearData = axleGearData,
 				GearboxData = gearboxData,
-				VehicleData = vehicleData
+				VehicleData = vehicleData,
+				AirdragData = airDragData
 			};
 
 			cycle.AddComponent(new Driver(container, driverData, new DefaultDriverStrategy()))
-				.AddComponent(new Vehicle(container, vehicleData))
+				.AddComponent(new Vehicle(container, vehicleData,airDragData))
 				.AddComponent(new Wheels(container, vehicleData.DynamicTyreRadius, vehicleData.WheelsInertia))
 				.AddComponent(new Brakes(container))
 				.AddComponent(new AxleGear(container, axleGearData))
@@ -143,6 +145,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
 			var axleGearData = CreateAxleGearData();
 			var vehicleData = CreateVehicleData(3300.SI<Kilogram>());
 			var driverData = CreateDriverData(AccelerationFile);
+			var airDragData = CreateAirdragData();
 
 			var cycle = new DistanceBasedDrivingCycle(container, cycleData);
 
@@ -150,12 +153,13 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
 				EngineData = engineData,
 				VehicleData = vehicleData,
 				AxleGearData = axleGearData,
-				GearboxData = gearboxData
+				GearboxData = gearboxData,
+				AirdragData = airDragData
 			};
 
 			var cyclePort = cycle.OutPort();
 			cycle.AddComponent(new Driver(container, driverData, new DefaultDriverStrategy()))
-				.AddComponent(new Vehicle(container, vehicleData))
+				.AddComponent(new Vehicle(container, vehicleData,airDragData))
 				.AddComponent(new Wheels(container, vehicleData.DynamicTyreRadius, vehicleData.WheelsInertia))
 				.AddComponent(new Brakes(container))
 				.AddComponent(new AxleGear(container, axleGearData))
@@ -220,19 +224,21 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
 			var cycleData = DrivingCycleDataReader.ReadFromFile(CycleFile, CycleType.DistanceBased, false);
 			var axleGearData = CreateAxleGearData();
 			var vehicleData = CreateVehicleData(3300.SI<Kilogram>());
+			var airDragData = CreateAirdragData();
 			var driverData = CreateDriverData(AccelerationFile);
 
 			var runData = new VectoRunData() {
 				EngineData = engineData,
 				VehicleData = vehicleData,
 				AxleGearData = axleGearData,
-				GearboxData = gearboxData
+				GearboxData = gearboxData,
+				AirdragData = airDragData
 			};
 
 			var cycle = new DistanceBasedDrivingCycle(container, cycleData);
 			var cyclePort = cycle.OutPort();
 			cycle.AddComponent(new Driver(container, driverData, new DefaultDriverStrategy()))
-				.AddComponent(new Vehicle(container, vehicleData))
+				.AddComponent(new Vehicle(container, vehicleData, airDragData))
 				.AddComponent(new Wheels(container, vehicleData.DynamicTyreRadius, vehicleData.WheelsInertia))
 				.AddComponent(new Brakes(container))
 				.AddComponent(new AxleGear(container, axleGearData))
@@ -399,10 +405,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
 			};
 			return new VehicleData {
 				AxleConfiguration = AxleConfiguration.AxleConfig_6x2,
-				CrossWindCorrectionCurve =
-					new CrosswindCorrectionCdxALookup(3.2634.SI<SquareMeter>(),
-						CrossWindCorrectionCurveReader.GetNoCorrectionCurve(3.2634.SI<SquareMeter>()),
-						CrossWindCorrectionMode.NoCorrection),
+				
 				CurbWeight = 15700.SI<Kilogram>(),
 				Loading = loading,
 				DynamicTyreRadius = 0.52.SI<Meter>(),
@@ -411,6 +414,15 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
 			};
 		}
 
+		private static AirdragData CreateAirdragData()
+		{
+			return new AirdragData(){
+				CrossWindCorrectionCurve =
+					new CrosswindCorrectionCdxALookup(3.2634.SI<SquareMeter>(),
+						CrossWindCorrectionCurveReader.GetNoCorrectionCurve(3.2634.SI<SquareMeter>()),
+						CrossWindCorrectionMode.NoCorrection),}; 
+		}
+
 		private static DriverData CreateDriverData(string accelerationFile)
 		{
 			return new DriverData {
diff --git a/VectoCore/VectoCoreTest/Integration/SimulationRuns/MinimalPowertrain.cs b/VectoCore/VectoCoreTest/Integration/SimulationRuns/MinimalPowertrain.cs
index 84d54158c3..03ce3ed327 100644
--- a/VectoCore/VectoCoreTest/Integration/SimulationRuns/MinimalPowertrain.cs
+++ b/VectoCore/VectoCoreTest/Integration/SimulationRuns/MinimalPowertrain.cs
@@ -80,7 +80,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
 
 			var driver = new Driver(container, driverData, new DefaultDriverStrategy());
 			var engine = new CombustionEngine(container, engineData);
-			driver.AddComponent(new Vehicle(container, vehicleData))
+			driver.AddComponent(new Vehicle(container, vehicleData, CreateAirdragData()))
 				.AddComponent(new Wheels(container, vehicleData.DynamicTyreRadius, vehicleData.WheelsInertia))
 				.AddComponent(new AxleGear(container, axleGearData))
 				.AddComponent(new Clutch(container, engineData))
@@ -127,7 +127,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
 			var cycle = new DistanceBasedDrivingCycle(container, cycleData);
 
 			cycle.AddComponent(new Driver(container, driverData, new DefaultDriverStrategy()))
-				.AddComponent(new Vehicle(container, vehicleData))
+				.AddComponent(new Vehicle(container, vehicleData, CreateAirdragData()))
 				.AddComponent(new Wheels(container, vehicleData.DynamicTyreRadius, vehicleData.WheelsInertia))
 				.AddComponent(new Brakes(container))
 				.AddComponent(new AxleGear(container, axleGearData))
@@ -198,7 +198,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
 
 			var cycle = new DistanceBasedDrivingCycle(container, cycleData);
 			cycle.AddComponent(new Driver(container, driverData, new DefaultDriverStrategy()))
-				.AddComponent(new Vehicle(container, vehicleData))
+				.AddComponent(new Vehicle(container, vehicleData, CreateAirdragData()))
 				.AddComponent(new Wheels(container, vehicleData.DynamicTyreRadius, vehicleData.WheelsInertia))
 				.AddComponent(new Brakes(container))
 				.AddComponent(new AxleGear(container, axleGearData))
@@ -275,10 +275,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
 			};
 			return new VehicleData {
 				AxleConfiguration = AxleConfiguration.AxleConfig_6x2,
-				CrossWindCorrectionCurve =
-					new CrosswindCorrectionCdxALookup(3.2634.SI<SquareMeter>(),
-						CrossWindCorrectionCurveReader.GetNoCorrectionCurve(3.2634.SI<SquareMeter>()),
-						CrossWindCorrectionMode.NoCorrection),
+				
 				CurbWeight = 15700.SI<Kilogram>(),
 				Loading = loading,
 				DynamicTyreRadius = 0.52.SI<Meter>(),
@@ -287,6 +284,16 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
 			};
 		}
 
+		private static AirdragData CreateAirdragData()
+		{
+			return new AirdragData() {
+				CrossWindCorrectionCurve =
+					new CrosswindCorrectionCdxALookup(3.2634.SI<SquareMeter>(),
+						CrossWindCorrectionCurveReader.GetNoCorrectionCurve(3.2634.SI<SquareMeter>()),
+						CrossWindCorrectionMode.NoCorrection),
+			};
+		}
+
 		private static DriverData CreateDriverData(string accelerationFile)
 		{
 			return new DriverData {
diff --git a/VectoCore/VectoCoreTest/Integration/Truck40tPowerTrain.cs b/VectoCore/VectoCoreTest/Integration/Truck40tPowerTrain.cs
index 00b8cab64b..e1b97d5278 100644
--- a/VectoCore/VectoCoreTest/Integration/Truck40tPowerTrain.cs
+++ b/VectoCore/VectoCoreTest/Integration/Truck40tPowerTrain.cs
@@ -85,7 +85,9 @@ namespace TUGraz.VectoCore.Tests.Integration
 			Kilogram massExtra, Kilogram loading, bool overspeed = false, GearboxType gbxType = GearboxType.AMT)
 		{
 			var fileWriter = new FileOutputWriter(modFileName);
-			var modData = new ModalDataContainer(Path.GetFileName(modFileName), FuelType.DieselCI, fileWriter) { WriteModalResults = true };
+			var modData = new ModalDataContainer(Path.GetFileName(modFileName), FuelType.DieselCI, fileWriter) {
+				WriteModalResults = true
+			};
 			var container = new VehicleContainer(ExecutionMode.Engineering, modData) {
 				RunData = new VectoRunData { JobName = modFileName, Cycle = cycleData }
 			};
@@ -94,6 +96,7 @@ namespace TUGraz.VectoCore.Tests.Integration
 			var engineData = MockSimulationDataFactory.CreateEngineDataFromFile(EngineFile, gearboxData.Gears.Count);
 			var axleGearData = CreateAxleGearData();
 			var vehicleData = CreateVehicleData(massExtra, loading);
+			var airdragData = CreateAirdragData();
 			var driverData = CreateDriverData(AccelerationFile, overspeed);
 
 			var cycle = new DistanceBasedDrivingCycle(container, cycleData);
@@ -103,6 +106,7 @@ namespace TUGraz.VectoCore.Tests.Integration
 			var runData = new VectoRunData() {
 				EngineData = engineData,
 				VehicleData = vehicleData,
+				AirdragData = airdragData,
 				AxleGearData = axleGearData,
 				GearboxData = gearboxData
 			};
@@ -120,7 +124,7 @@ namespace TUGraz.VectoCore.Tests.Integration
 			}
 
 			dynamic tmp = cycle.AddComponent(new Driver(container, driverData, new DefaultDriverStrategy()))
-				.AddComponent(new Vehicle(container, vehicleData))
+				.AddComponent(new Vehicle(container, vehicleData, airdragData))
 				.AddComponent(new Wheels(container, vehicleData.DynamicTyreRadius, vehicleData.WheelsInertia))
 				.AddComponent(new Brakes(container))
 				.AddComponent(new AxleGear(container, axleGearData))
@@ -218,12 +222,6 @@ namespace TUGraz.VectoCore.Tests.Integration
 			};
 			return new VehicleData {
 				AxleConfiguration = AxleConfiguration.AxleConfig_4x2,
-				//AerodynamicDragAera = 6.2985.SI<SquareMeter>(),
-				//CrossWindCorrectionMode = CrossWindCorrectionMode.NoCorrection,
-				CrossWindCorrectionCurve =
-					new CrosswindCorrectionCdxALookup(6.2985.SI<SquareMeter>(),
-						CrossWindCorrectionCurveReader.GetNoCorrectionCurve(6.2985.SI<SquareMeter>()),
-						CrossWindCorrectionMode.NoCorrection),
 				CurbWeight = 7100.SI<Kilogram>() + massExtra,
 				Loading = loading,
 				DynamicTyreRadius = 0.4882675.SI<Meter>(),
@@ -232,6 +230,16 @@ namespace TUGraz.VectoCore.Tests.Integration
 			};
 		}
 
+		private static AirdragData CreateAirdragData()
+		{
+			return new AirdragData() {
+				CrossWindCorrectionCurve =
+					new CrosswindCorrectionCdxALookup(6.2985.SI<SquareMeter>(),
+						CrossWindCorrectionCurveReader.GetNoCorrectionCurve(6.2985.SI<SquareMeter>()),
+						CrossWindCorrectionMode.NoCorrection),
+			};
+		}
+
 		private static DriverData CreateDriverData(string accelerationFile, bool overspeed = false)
 		{
 			return new DriverData {
diff --git a/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationAdapterTestHelper.cs b/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationAdapterTestHelper.cs
index 066547b81e..8f16812954 100644
--- a/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationAdapterTestHelper.cs
+++ b/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationAdapterTestHelper.cs
@@ -21,7 +21,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter
 			return runData;
 		}
 
-		public static void AssertVehicleData(VehicleData vehicleData, VehicleCategory vehicleCategory,
+		public static void AssertVehicleData(VehicleData vehicleData, AirdragData airdragData, VehicleCategory vehicleCategory,
 			VehicleClass vehicleClass, AxleConfiguration axleConfiguration, double wheelsInertia, double totalVehicleWeight,
 			double totalRollResistance, double aerodynamicDragArea)
 		{
@@ -32,7 +32,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter
 			Assert.AreEqual(wheelsInertia, vehicleData.WheelsInertia.Value(), 1e-6, "WheelsInertia");
 			Assert.AreEqual(totalRollResistance, vehicleData.TotalRollResistanceCoefficient, 1e-6, "TotalRollResistance");
 
-			Assert.AreEqual(aerodynamicDragArea, vehicleData.CrossWindCorrectionCurve.AirDragArea.Value(), 1e-6, "Cd x A");
+			Assert.AreEqual(aerodynamicDragArea, airdragData.CrossWindCorrectionCurve.AirDragArea.Value(), 1e-6, "Cd x A");
 		}
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationDataAdapterTest_Class2.cs b/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationDataAdapterTest_Class2.cs
index b200620805..626557be45 100644
--- a/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationDataAdapterTest_Class2.cs
+++ b/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationDataAdapterTest_Class2.cs
@@ -27,7 +27,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter
 			Assert.AreEqual(6, runData.Length);
 
 			// long haul, min load
-			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData,
+			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData,
 				vehicleCategory: VehicleCategory.RigidTruck,
 				vehicleClass: VehicleClass.Class2,
 				axleConfiguration: AxleConfiguration.AxleConfig_4x2,
@@ -43,7 +43,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter
 			var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file);
 
 			// long haul, ref load
-			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData,
+			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData,
 				vehicleCategory: VehicleCategory.RigidTruck,
 				vehicleClass: VehicleClass.Class2,
 				axleConfiguration: AxleConfiguration.AxleConfig_4x2,
@@ -60,7 +60,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter
 			var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file);
 
 			// regional del., min load
-			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData,
+			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData,
 				vehicleCategory: VehicleCategory.RigidTruck,
 				vehicleClass: VehicleClass.Class2,
 				axleConfiguration: AxleConfiguration.AxleConfig_4x2,
@@ -76,7 +76,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter
 			var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file);
 
 			// regional del., ref load
-			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData,
+			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData,
 				vehicleCategory: VehicleCategory.RigidTruck,
 				vehicleClass: VehicleClass.Class2,
 				axleConfiguration: AxleConfiguration.AxleConfig_4x2,
@@ -92,7 +92,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter
 		{
 			var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file);
 			// municipal, min load
-			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData,
+			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData,
 				vehicleCategory: VehicleCategory.RigidTruck,
 				vehicleClass: VehicleClass.Class2,
 				axleConfiguration: AxleConfiguration.AxleConfig_4x2,
@@ -108,7 +108,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter
 			var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file);
 
 			// municipal, min load
-			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData,
+			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData,
 				vehicleCategory: VehicleCategory.RigidTruck,
 				vehicleClass: VehicleClass.Class2,
 				axleConfiguration: AxleConfiguration.AxleConfig_4x2,
diff --git a/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationDataAdapterTest_Class5.cs b/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationDataAdapterTest_Class5.cs
index 38e1589b02..619f310597 100644
--- a/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationDataAdapterTest_Class5.cs
+++ b/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationDataAdapterTest_Class5.cs
@@ -28,7 +28,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter
 			Assert.AreEqual(8, runData.Length);
 
 			// long haul, min load
-			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData,
+			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData,
 				vehicleCategory: VehicleCategory.Tractor,
 				vehicleClass: VehicleClass.Class5,
 				axleConfiguration: AxleConfiguration.AxleConfig_4x2,
@@ -44,7 +44,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter
 			var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file);
 
 			// long haul, ref load
-			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData,
+			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData,
 				vehicleCategory: VehicleCategory.Tractor,
 				vehicleClass: VehicleClass.Class5,
 				axleConfiguration: AxleConfiguration.AxleConfig_4x2,
@@ -62,7 +62,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter
 			Assert.AreEqual(8, runData.Length);
 
 			// long haul, min load
-			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData,
+			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData,
 				vehicleCategory: VehicleCategory.Tractor,
 				vehicleClass: VehicleClass.Class5,
 				axleConfiguration: AxleConfiguration.AxleConfig_4x2,
@@ -78,7 +78,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter
 			var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file);
 
 			// long haul, ref load
-			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData,
+			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData,
 				vehicleCategory: VehicleCategory.Tractor,
 				vehicleClass: VehicleClass.Class5,
 				axleConfiguration: AxleConfiguration.AxleConfig_4x2,
@@ -94,7 +94,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter
 			var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file);
 
 			// regional del., min load
-			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData,
+			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData,
 				vehicleCategory: VehicleCategory.Tractor,
 				vehicleClass: VehicleClass.Class5,
 				axleConfiguration: AxleConfiguration.AxleConfig_4x2,
@@ -110,7 +110,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter
 			var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file);
 
 			// regional del., ref load
-			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData,
+			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData,
 				vehicleCategory: VehicleCategory.Tractor,
 				vehicleClass: VehicleClass.Class5,
 				axleConfiguration: AxleConfiguration.AxleConfig_4x2,
@@ -126,7 +126,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter
 			var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file);
 
 			// regional del., min load
-			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData,
+			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData,
 				vehicleCategory: VehicleCategory.Tractor,
 				vehicleClass: VehicleClass.Class5,
 				axleConfiguration: AxleConfiguration.AxleConfig_4x2,
@@ -142,7 +142,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter
 			var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file);
 
 			// regional del., ref load
-			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData,
+			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData,
 				vehicleCategory: VehicleCategory.Tractor,
 				vehicleClass: VehicleClass.Class5,
 				axleConfiguration: AxleConfiguration.AxleConfig_4x2,
diff --git a/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationDataAdapterTest_Class9.cs b/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationDataAdapterTest_Class9.cs
index 37107d56ab..bc25ac128d 100644
--- a/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationDataAdapterTest_Class9.cs
+++ b/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationDataAdapterTest_Class9.cs
@@ -28,7 +28,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter
 			Assert.AreEqual(10, runData.Length);
 
 			// long haul, min load
-			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData,
+			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData,
 				vehicleCategory: VehicleCategory.RigidTruck,
 				vehicleClass: VehicleClass.Class9,
 				axleConfiguration: AxleConfiguration.AxleConfig_6x2,
@@ -45,7 +45,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter
 			var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file);
 
 			// long haul, ref load
-			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData,
+			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData,
 				vehicleCategory: VehicleCategory.RigidTruck,
 				vehicleClass: VehicleClass.Class9,
 				axleConfiguration: AxleConfiguration.AxleConfig_6x2,
@@ -61,7 +61,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter
 			var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file);
 
 			// long haul, min load
-			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData,
+			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData,
 				vehicleCategory: VehicleCategory.RigidTruck,
 				vehicleClass: VehicleClass.Class9,
 				axleConfiguration: AxleConfiguration.AxleConfig_6x2,
@@ -77,7 +77,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter
 			var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file);
 
 			// long haul, ref load
-			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData,
+			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData,
 				vehicleCategory: VehicleCategory.RigidTruck,
 				vehicleClass: VehicleClass.Class9,
 				axleConfiguration: AxleConfiguration.AxleConfig_6x2,
@@ -93,7 +93,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter
 			var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file);
 
 			// regional del., min load
-			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData,
+			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData,
 				vehicleCategory: VehicleCategory.RigidTruck,
 				vehicleClass: VehicleClass.Class9,
 				axleConfiguration: AxleConfiguration.AxleConfig_6x2,
@@ -109,7 +109,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter
 			var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file);
 
 			// regional del., ref load
-			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData,
+			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData,
 				vehicleCategory: VehicleCategory.RigidTruck,
 				vehicleClass: VehicleClass.Class9,
 				axleConfiguration: AxleConfiguration.AxleConfig_6x2,
@@ -125,7 +125,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter
 			var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file);
 
 			// regional del., min load
-			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData,
+			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData,
 				vehicleCategory: VehicleCategory.RigidTruck,
 				vehicleClass: VehicleClass.Class9,
 				axleConfiguration: AxleConfiguration.AxleConfig_6x2,
@@ -141,7 +141,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter
 			var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file);
 
 			// regional del., ref load
-			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData,
+			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData,
 				vehicleCategory: VehicleCategory.RigidTruck,
 				vehicleClass: VehicleClass.Class9,
 				axleConfiguration: AxleConfiguration.AxleConfig_6x2,
@@ -157,7 +157,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter
 			var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file);
 
 			// municipal, min load
-			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData,
+			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData,
 				vehicleCategory: VehicleCategory.RigidTruck,
 				vehicleClass: VehicleClass.Class9,
 				axleConfiguration: AxleConfiguration.AxleConfig_6x2,
@@ -173,7 +173,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter
 			var runData = DeclarationAdapterTestHelper.CreateVectoRunData(file);
 
 			// municipal, min load
-			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData,
+			DeclarationAdapterTestHelper.AssertVehicleData(runData[runIdx].VehicleData, runData[runIdx].AirdragData,
 				vehicleCategory: VehicleCategory.RigidTruck,
 				vehicleClass: VehicleClass.Class9,
 				axleConfiguration: AxleConfiguration.AxleConfig_6x2,
diff --git a/VectoCore/VectoCoreTest/Models/Simulation/AuxTests.cs b/VectoCore/VectoCoreTest/Models/Simulation/AuxTests.cs
index b9185306ca..b896ba2afd 100644
--- a/VectoCore/VectoCoreTest/Models/Simulation/AuxTests.cs
+++ b/VectoCore/VectoCoreTest/Models/Simulation/AuxTests.cs
@@ -109,7 +109,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation
 				t += dt;
 			}
 
-			container.FinishSimulation();
+			container.FinishSimulationRun();
 			sumWriter.Finish();
 
 			var testColumns = new[] { "P_aux_FAN", "P_aux_STP", "P_aux_AC", "P_aux_ES", "P_aux_PS", "P_aux" };
diff --git a/VectoCore/VectoCoreTest/Models/Simulation/MeasuredSpeedModeTest.cs b/VectoCore/VectoCoreTest/Models/Simulation/MeasuredSpeedModeTest.cs
index aaac9863c9..3e6abd4692 100644
--- a/VectoCore/VectoCoreTest/Models/Simulation/MeasuredSpeedModeTest.cs
+++ b/VectoCore/VectoCoreTest/Models/Simulation/MeasuredSpeedModeTest.cs
@@ -230,10 +230,6 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation
 				VehicleData =
 					new VehicleData {
 						VehicleCategory = VehicleCategory.RigidTruck,
-						CrossWindCorrectionCurve =
-							new CrosswindCorrectionCdxALookup(6.16498344.SI<SquareMeter>(),
-								CrossWindCorrectionCurveReader.GetNoCorrectionCurve(6.16498344.SI<SquareMeter>()),
-								CrossWindCorrectionMode.NoCorrection),
 						GrossVehicleWeight = 12000.SI<Kilogram>(),
 						CurbWeight = 3400.SI<Kilogram>(),
 						DynamicTyreRadius = 0.5.SI<Meter>(),
@@ -242,6 +238,12 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation
 								new Axle { AxleWeightShare = 1.0, TyreTestLoad = 52532.SI<Newton>(), Inertia = 10.SI<KilogramSquareMeter>() }
 							}
 					},
+				AirdragData = new AirdragData() {
+					CrossWindCorrectionCurve =
+						new CrosswindCorrectionCdxALookup(6.16498344.SI<SquareMeter>(),
+							CrossWindCorrectionCurveReader.GetNoCorrectionCurve(6.16498344.SI<SquareMeter>()),
+							CrossWindCorrectionMode.NoCorrection),
+				},
 				AxleGearData = new AxleGearData { AxleGear = new GearData { Ratio = 2.3 } },
 				EngineData =
 					new CombustionEngineData {
@@ -297,11 +299,13 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation
 						VehicleCategory = VehicleCategory.RigidTruck,
 						WheelsInertia = 2.SI<KilogramSquareMeter>(),
 						DynamicTyreRadius = 0.85.SI<Meter>(),
-						CrossWindCorrectionCurve =
-							new CrosswindCorrectionCdxALookup(6.16498344.SI<SquareMeter>(),
-								CrossWindCorrectionCurveReader.GetNoCorrectionCurve(6.16498344.SI<SquareMeter>()),
-								CrossWindCorrectionMode.NoCorrection)
 					},
+				AirdragData = new AirdragData() {
+					CrossWindCorrectionCurve =
+						new CrosswindCorrectionCdxALookup(6.16498344.SI<SquareMeter>(),
+							CrossWindCorrectionCurveReader.GetNoCorrectionCurve(6.16498344.SI<SquareMeter>()),
+							CrossWindCorrectionMode.NoCorrection)
+				},
 				AxleGearData = new AxleGearData { AxleGear = new GearData { Ratio = 2.3 } },
 				EngineData = new CombustionEngineData {
 					IdleSpeed = 560.RPMtoRad(),
diff --git a/VectoCore/VectoCoreTest/Models/SimulationComponent/DriverTest.cs b/VectoCore/VectoCoreTest/Models/SimulationComponent/DriverTest.cs
index 84abb65280..60d9b5bc01 100644
--- a/VectoCore/VectoCoreTest/Models/SimulationComponent/DriverTest.cs
+++ b/VectoCore/VectoCoreTest/Models/SimulationComponent/DriverTest.cs
@@ -67,6 +67,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			var engineData = MockSimulationDataFactory.CreateEngineDataFromFile(EngineFile, 1);
 			
 			var vehicleData = CreateVehicleData(33000.SI<Kilogram>());
+			var airdragData = CreateAirdragData();
 			vehicleData.DynamicTyreRadius = 0.026372213.SI<Meter>(); // take into account axle ratio, gear ratio
 
 			var driverData = CreateDriverData();
@@ -79,7 +80,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			var driver = new Driver(vehicleContainer, driverData, new DefaultDriverStrategy());
 			var engine = new CombustionEngine(vehicleContainer, engineData);
 			var clutch = new Clutch(vehicleContainer, engineData);
-			dynamic tmp = AddComponent(driver, new Vehicle(vehicleContainer, vehicleData));
+			dynamic tmp = AddComponent(driver, new Vehicle(vehicleContainer, vehicleData, airdragData));
 			tmp = AddComponent(tmp, new Wheels(vehicleContainer, vehicleData.DynamicTyreRadius, vehicleData.WheelsInertia));
 			tmp = AddComponent(tmp, clutch);
 			AddComponent(tmp, engine);
@@ -125,6 +126,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 
 			var vehicleData = CreateVehicleData(33000.SI<Kilogram>());
 			vehicleData.DynamicTyreRadius = 0.026372213.SI<Meter>(); // take into account axle ratio, gear ratio
+			var airdragData = CreateAirdragData();
 			var driverData = CreateDriverData();
 
 			var fileWriter = new FileOutputWriter("Coach_MinimalPowertrain_Coasting");
@@ -136,7 +138,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			var engine = new CombustionEngine(vehicleContainer, engineData);
 			var clutch = new Clutch(vehicleContainer, engineData);
 
-			dynamic tmp = AddComponent(driver, new Vehicle(vehicleContainer, vehicleData));
+			dynamic tmp = AddComponent(driver, new Vehicle(vehicleContainer, vehicleData, airdragData));
 			tmp = AddComponent(tmp, new Wheels(vehicleContainer, vehicleData.DynamicTyreRadius, vehicleData.WheelsInertia));
 			tmp = AddComponent(tmp, clutch);
 			AddComponent(tmp, engine);
@@ -183,6 +185,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			var engineData = MockSimulationDataFactory.CreateEngineDataFromFile(EngineFileHigh, 1);
 
 			var vehicleData = CreateVehicleData(33000.SI<Kilogram>());
+			var airdragData = CreateAirdragData();
 
 			// take into account the axle ratio and 1st-gear ratio
 			vehicleData.DynamicTyreRadius /= (3.24 * 6.38);
@@ -197,7 +200,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 
 			var driver = new Driver(vehicleContainer, driverData, new DefaultDriverStrategy());
 
-			dynamic tmp = AddComponent(driver, new Vehicle(vehicleContainer, vehicleData));
+			dynamic tmp = AddComponent(driver, new Vehicle(vehicleContainer, vehicleData, airdragData));
 			tmp = AddComponent(tmp, new Wheels(vehicleContainer, vehicleData.DynamicTyreRadius, vehicleData.WheelsInertia));
 			var engine = new CombustionEngine(vehicleContainer, engineData);
 			var clutch = new Clutch(vehicleContainer, engineData);
@@ -395,10 +398,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			};
 			return new VehicleData {
 				AxleConfiguration = AxleConfiguration.AxleConfig_4x2,
-				CrossWindCorrectionCurve =
-					new CrosswindCorrectionCdxALookup(3.2634.SI<SquareMeter>(),
-						CrossWindCorrectionCurveReader.GetNoCorrectionCurve(3.2634.SI<SquareMeter>()),
-						CrossWindCorrectionMode.NoCorrection),
+				
 				CurbWeight = 15700.SI<Kilogram>(),
 				Loading = loading,
 				DynamicTyreRadius = 0.52.SI<Meter>(),
@@ -407,6 +407,16 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			};
 		}
 
+		private static AirdragData CreateAirdragData()
+		{
+			return new AirdragData() {
+				CrossWindCorrectionCurve =
+					new CrosswindCorrectionCdxALookup(3.2634.SI<SquareMeter>(),
+						CrossWindCorrectionCurveReader.GetNoCorrectionCurve(3.2634.SI<SquareMeter>()),
+						CrossWindCorrectionMode.NoCorrection),
+			};
+		}
+
 		private static DriverData CreateDriverData()
 		{
 			return new DriverData {
diff --git a/VectoCore/VectoCoreTest/Models/SimulationComponent/VehicleTest.cs b/VectoCore/VectoCoreTest/Models/SimulationComponent/VehicleTest.cs
index 0fb88564c2..8b54bfe1e2 100644
--- a/VectoCore/VectoCoreTest/Models/SimulationComponent/VehicleTest.cs
+++ b/VectoCore/VectoCoreTest/Models/SimulationComponent/VehicleTest.cs
@@ -59,9 +59,10 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 
 			//var reader = new EngineeringModeSimulationDataReader();
 			var vehicleData = MockSimulationDataFactory.CreateVehicleDataFromFile(VehicleDataFileCoach);
+			var airdragData = MockSimulationDataFactory.CreateAirdragDataFromFile(VehicleDataFileCoach);
 			//VehicleData.ReadFromFile(VehicleDataFile);
 			//vehicleData.CrossWindCorrectionMode = CrossWindCorrectionMode.NoCorrection;
-			var vehicle = new Vehicle(container, vehicleData);
+			var vehicle = new Vehicle(container, vehicleData, airdragData);
 			var driver = new MockDriver(container) { DriverBehavior = DrivingBehavior.Driving };
 			var mockPort = new MockFvOutPort();
 			vehicle.InPort().Connect(mockPort);
@@ -97,10 +98,11 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			var container = new VehicleContainer(ExecutionMode.Declaration);
 
 			var vehicleData = MockSimulationDataFactory.CreateVehicleDataFromFile(VehicleDataFileTruck);
-			vehicleData.CrossWindCorrectionCurve = new CrosswindCorrectionCdxALookup(6.46.SI<SquareMeter>(),
+			var airdragData = MockSimulationDataFactory.CreateAirdragDataFromFile(VehicleDataFileTruck);
+			airdragData.CrossWindCorrectionCurve = new CrosswindCorrectionCdxALookup(6.46.SI<SquareMeter>(),
 				DeclarationDataAdapter.GetDeclarationAirResistanceCurve("TractorSemitrailer",
 					6.46.SI<SquareMeter>(), height.SI<Meter>()), CrossWindCorrectionMode.DeclarationModeCorrection);
-			var vehicle = new Vehicle(container, vehicleData);
+			var vehicle = new Vehicle(container, vehicleData,airdragData);
 
 			var mockPort = new MockFvOutPort();
 			vehicle.InPort().Connect(mockPort);
@@ -120,11 +122,12 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			var container = new VehicleContainer(ExecutionMode.Declaration);
 
 			var vehicleData = MockSimulationDataFactory.CreateVehicleDataFromFile(VehicleDataFileTruck);
-			vehicleData.CrossWindCorrectionCurve = new CrosswindCorrectionCdxALookup(6.2985.SI<SquareMeter>(),
+			var airdragData = MockSimulationDataFactory.CreateAirdragDataFromFile(VehicleDataFileTruck);
+			airdragData.CrossWindCorrectionCurve = new CrosswindCorrectionCdxALookup(6.2985.SI<SquareMeter>(),
 				DeclarationDataAdapter.GetDeclarationAirResistanceCurve("TractorSemitrailer",
 					6.2985.SI<SquareMeter>(), 3.SI<Meter>()), CrossWindCorrectionMode.DeclarationModeCorrection);
 
-			var vehicle = new Vehicle(container, vehicleData);
+			var vehicle = new Vehicle(container, vehicleData,airdragData);
 			var driver = new MockDriver(container) { DriverBehavior = DrivingBehavior.Driving };
 			var mockPort = new MockFvOutPort();
 			vehicle.InPort().Connect(mockPort);
diff --git a/VectoCore/VectoCoreTest/Models/SimulationComponentData/ValidationTest.cs b/VectoCore/VectoCoreTest/Models/SimulationComponentData/ValidationTest.cs
index 9fe61c7f04..7dffbd7671 100644
--- a/VectoCore/VectoCoreTest/Models/SimulationComponentData/ValidationTest.cs
+++ b/VectoCore/VectoCoreTest/Models/SimulationComponentData/ValidationTest.cs
@@ -183,11 +183,6 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData
 		{
 			var vehicleData = new VehicleData {
 				AxleConfiguration = AxleConfiguration.AxleConfig_4x2,
-				CrossWindCorrectionMode = CrossWindCorrectionMode.NoCorrection,
-				CrossWindCorrectionCurve =
-					new CrosswindCorrectionCdxALookup(5.SI<SquareMeter>(),
-						CrossWindCorrectionCurveReader.GetNoCorrectionCurve(5.SI<SquareMeter>()),
-						CrossWindCorrectionMode.NoCorrection),
 				CurbWeight = 7500.SI<Kilogram>(),
 				DynamicTyreRadius = 0.5.SI<Meter>(),
 				//CurbWeigthExtra = 0.SI<Kilogram>(),
@@ -249,11 +244,6 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData
 			};
 			var vehicleData = new VehicleData {
 				AxleConfiguration = AxleConfiguration.AxleConfig_4x2,
-				CrossWindCorrectionMode = CrossWindCorrectionMode.NoCorrection,
-				CrossWindCorrectionCurve =
-					new CrosswindCorrectionCdxALookup(5.SI<SquareMeter>(),
-						CrossWindCorrectionCurveReader.GetNoCorrectionCurve(5.SI<SquareMeter>()),
-						CrossWindCorrectionMode.NoCorrection),
 				CurbWeight = 7500.SI<Kilogram>(),
 				DynamicTyreRadius = 0.5.SI<Meter>(),
 				//CurbWeigthExtra = 0.SI<Kilogram>(),
@@ -280,6 +270,13 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData
 
 			container.RunData = new VectoRunData {
 				VehicleData = vehicleData,
+				AirdragData = new AirdragData() {
+					CrossWindCorrectionMode = CrossWindCorrectionMode.NoCorrection,
+					CrossWindCorrectionCurve =
+						new CrosswindCorrectionCdxALookup(5.SI<SquareMeter>(),
+							CrossWindCorrectionCurveReader.GetNoCorrectionCurve(5.SI<SquareMeter>()),
+							CrossWindCorrectionMode.NoCorrection)
+				},
 				GearboxData = gearboxData,
 				EngineData = engineData,
 				AxleGearData = axleGearData
@@ -625,9 +622,9 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData
 		public string Creator { get; set; }
 		public string Date { get; set; }
 		public string TechnicalReportId { get; set; }
+		public CertificationMethod CertificationMethod { get{return CertificationMethod.NotCertified;}}
 		public string CertificationNumber { get; set; }
 		public string DigestValue { get; set; }
-		public IntegrityStatus IntegrityStatus { get; set; }
 		public GearboxType Type { get; set; }
 		public IList<ITransmissionInputData> Gears { get; set; }
 		public KilogramSquareMeter Inertia { get; set; }
diff --git a/VectoCore/VectoCoreTest/Utils/MockEngineDataProvider.cs b/VectoCore/VectoCoreTest/Utils/MockEngineDataProvider.cs
index c764eccacb..e158346b7a 100644
--- a/VectoCore/VectoCoreTest/Utils/MockEngineDataProvider.cs
+++ b/VectoCore/VectoCoreTest/Utils/MockEngineDataProvider.cs
@@ -46,9 +46,9 @@ namespace TUGraz.VectoCore.Tests.Utils
 		public string Creator { get; set; }
 		public string Date { get; set; }
 		public string TechnicalReportId { get; set; }
+		public CertificationMethod CertificationMethod { get{return CertificationMethod.NotCertified;} }
 		public string CertificationNumber { get; set; }
 		public string DigestValue { get; set; }
-		public IntegrityStatus IntegrityStatus { get; set; }
 		public CubicMeter Displacement { get; set; }
 		public PerSecond IdleSpeed { get; set; }
 		public double WHTCMotorway { get; set; }
diff --git a/VectoCore/VectoCoreTest/Utils/MockModalDataContainer.cs b/VectoCore/VectoCoreTest/Utils/MockModalDataContainer.cs
index ba581dd6ec..727ca9fb00 100644
--- a/VectoCore/VectoCoreTest/Utils/MockModalDataContainer.cs
+++ b/VectoCore/VectoCoreTest/Utils/MockModalDataContainer.cs
@@ -82,6 +82,9 @@ namespace TUGraz.VectoCore.Tests.Utils
 			get { return VectoRun.Status.Success; }
 		}
 
+		public string Error { get { return null; } }
+		public string StackTrace { get { return null; } }
+
 		public void Finish(VectoRun.Status runStatus) {}
 
 		public bool WriteModalResults { get; set; }
@@ -96,6 +99,11 @@ namespace TUGraz.VectoCore.Tests.Utils
 			return Data.Rows.Cast<DataRow>().Select(x => x.Field<T>(col));
 		}
 
+		public IEnumerable<T> GetValues<T>(Func<DataRow, T> selectorFunc)
+		{
+			throw new NotImplementedException();
+		}
+
 		public T TimeIntegral<T>(ModalResultField field, Func<SI, bool> filter = null) where T : SIBase<T>
 		{
 			throw new NotImplementedException();
@@ -122,7 +130,7 @@ namespace TUGraz.VectoCore.Tests.Utils
 			throw new NotImplementedException();
 		}
 
-		public void FinishSimulation()
+		public void FinishSimulation(Exception exception)
 		{
 			Data.Rows.Clear();
 		}
diff --git a/VectoCore/VectoCoreTest/Utils/MockRunData.cs b/VectoCore/VectoCoreTest/Utils/MockRunData.cs
index dcb7af96af..2da0eabb14 100644
--- a/VectoCore/VectoCoreTest/Utils/MockRunData.cs
+++ b/VectoCore/VectoCoreTest/Utils/MockRunData.cs
@@ -53,6 +53,9 @@ namespace TUGraz.VectoCore.Tests.Utils
 				Loading = 0.SI<Kilogram>(),
 				TotalRollResistanceCoefficient = 0,
 				DynamicTyreRadius = 1.SI<Meter>(),
+				
+			};
+			AirdragData = new AirdragData() {
 				CrossWindCorrectionCurve =
 					new CrosswindCorrectionCdxALookup(1.SI<SquareMeter>(),
 						CrossWindCorrectionCurveReader.GetNoCorrectionCurve(1.SI<SquareMeter>()), CrossWindCorrectionMode.NoCorrection)
diff --git a/VectoCore/VectoCoreTest/Utils/MockSimulationDataFactory.cs b/VectoCore/VectoCoreTest/Utils/MockSimulationDataFactory.cs
index d37a2d5f52..be3aacb4bb 100644
--- a/VectoCore/VectoCoreTest/Utils/MockSimulationDataFactory.cs
+++ b/VectoCore/VectoCoreTest/Utils/MockSimulationDataFactory.cs
@@ -88,7 +88,15 @@ namespace TUGraz.VectoCore.Tests.Utils
 			var dao = new EngineeringDataAdapter();
 			var vehicleInput = JSONInputDataFactory.ReadJsonVehicle(vehicleDataFile);
 			var airdragData = vehicleInput as IAirdragEngineeringInputData;
-			return dao.CreateVehicleData(vehicleInput, airdragData);
+			return dao.CreateVehicleData(vehicleInput);
+		}
+
+		public static AirdragData CreateAirdragDataFromFile(string vehicleDataFile)
+		{
+			var dao = new EngineeringDataAdapter();
+			var vehicleInput = JSONInputDataFactory.ReadJsonVehicle(vehicleDataFile);
+			var airdragData = vehicleInput as IAirdragEngineeringInputData;
+			return dao.CreateAirdragData(airdragData, vehicleInput);
 		}
 
 		public static DriverData CreateDriverDataFromFile(string driverDataFile)
diff --git a/VectoCore/VectoCoreTest/Utils/MockVehicleContainer.cs b/VectoCore/VectoCoreTest/Utils/MockVehicleContainer.cs
index 344ae6fafc..43f636130d 100644
--- a/VectoCore/VectoCoreTest/Utils/MockVehicleContainer.cs
+++ b/VectoCore/VectoCoreTest/Utils/MockVehicleContainer.cs
@@ -29,7 +29,9 @@
 *   Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology
 */
 
+using System;
 using System.Collections.Generic;
+using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Models.Connector.Ports;
@@ -212,6 +214,8 @@ namespace TUGraz.VectoCore.Tests.Utils
 
 		public void FinishSimulation() {}
 
+		public void FinishSimulationRun(Exception e) {}
+
 		public Watt SetAxlegearLoss
 		{
 			set { _axlegearLoss = value; }
diff --git a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs
index 028f1d49ec..6e98703bbd 100644
--- a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs
+++ b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs
@@ -7,6 +7,7 @@ using System.Xml.Linq;
 using Microsoft.VisualStudio.TestTools.UnitTesting;
 using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Resources;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Configuration;
 using TUGraz.VectoCore.InputData.FileIO.XML.Declaration;
@@ -16,7 +17,6 @@ using TUGraz.VectoCore.Models.Simulation.Impl;
 using TUGraz.VectoCore.Models.SimulationComponent.Data.Engine;
 using TUGraz.VectoCore.OutputData;
 using TUGraz.VectoCore.OutputData.FileIO;
-using TUGraz.VectoCore.Resources;
 using TUGraz.VectoCore.Tests.Utils;
 using TUGraz.VectoCore.Utils;
 
diff --git a/VectoCore/VectoCoreTest/XML/XMLEngineeringInputSingleTest.cs b/VectoCore/VectoCoreTest/XML/XMLEngineeringInputSingleTest.cs
index 2ad733f98f..f26108d0b0 100644
--- a/VectoCore/VectoCoreTest/XML/XMLEngineeringInputSingleTest.cs
+++ b/VectoCore/VectoCoreTest/XML/XMLEngineeringInputSingleTest.cs
@@ -6,6 +6,7 @@ using Microsoft.VisualStudio.TestTools.UnitTesting;
 using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Resources;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Configuration;
 using TUGraz.VectoCore.InputData.FileIO.XML.Engineering;
@@ -15,7 +16,6 @@ using TUGraz.VectoCore.Models.Simulation.Impl;
 using TUGraz.VectoCore.Models.SimulationComponent.Data.Engine;
 using TUGraz.VectoCore.OutputData;
 using TUGraz.VectoCore.OutputData.FileIO;
-using TUGraz.VectoCore.Resources;
 using TUGraz.VectoCore.Tests.Utils;
 using TUGraz.VectoCore.Utils;
 
-- 
GitLab