diff --git a/VECTO/Input Files/Vehicle.vb b/VECTO/Input Files/Vehicle.vb
index 059350a4627fbe1fe80ddc878f6fa211db3d9965..44d02dad99c6b4a408bcf2943b885e15cb61e302 100644
--- a/VECTO/Input Files/Vehicle.vb	
+++ b/VECTO/Input Files/Vehicle.vb	
@@ -360,6 +360,12 @@ Public Class Vehicle
 		End Get
 	End Property
 
+	Public ReadOnly Property ManufacturerAddress As String Implements IVehicleDeclarationInputData.ManufacturerAddress
+		Get
+			Return "N.A."
+		End Get
+	End Property
+
 	Public ReadOnly Property AirDragArea As SquareMeter Implements IAirdragEngineeringInputData.AirDragArea
 		Get
 			Return CdA0.SI(Of SquareMeter)()
diff --git a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs
index 033de94e30e113e349aae9ec7f4c2bc99e9c21d3..ad8450509d25e91d5e4a78bd38b59cc920f720b6 100644
--- a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs
+++ b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs
@@ -111,6 +111,8 @@ namespace TUGraz.VectoCommon.InputData
 		/// cf. VECTO Input Parameters.xlsx
 		/// </summary>
 		IList<IAxleDeclarationInputData> Axles { get; }
+
+		string ManufacturerAddress { get; }
 	}
 
 	public interface IAirdragDeclarationInputData : IComponentInputData
diff --git a/VectoCommon/VectoHashing/VectoComponents.cs b/VectoCommon/VectoHashing/VectoComponents.cs
index 60340b81abc82fe2c2a8924c2e247508d611a084..30fa44297dbac03ae14e1c9194292eb4d9e5ae07 100644
--- a/VectoCommon/VectoHashing/VectoComponents.cs
+++ b/VectoCommon/VectoHashing/VectoComponents.cs
@@ -14,7 +14,8 @@ namespace TUGraz.VectoHashing
 		Airdrag,
 		Tyre,
 		Vehicle,
-		VectoOutput
+		VectoOutput,
+		VectoCustomerInformation
 	}
 
 	public static class VectoComponentsExtensionMethods
@@ -42,6 +43,8 @@ namespace TUGraz.VectoHashing
 					return XMLNames.Component_Vehicle;
 				case VectoComponents.VectoOutput:
 					return "VectoOutput";
+				case VectoComponents.VectoCustomerInformation:
+					return "VectoCustomerInformation";
 				default:
 					throw new ArgumentOutOfRangeException("VectoComponents", component, null);
 			}
@@ -68,6 +71,8 @@ namespace TUGraz.VectoHashing
 					return "TYRE-";
 				case VectoComponents.VectoOutput:
 					return "RESULT-";
+				case VectoComponents.VectoCustomerInformation:
+					return "COC-";
 				default:
 					throw new ArgumentOutOfRangeException("VectoComponents", component, null);
 			}
diff --git a/VectoCommon/VectoHashing/VectoHash.cs b/VectoCommon/VectoHashing/VectoHash.cs
index 113a409a07b07ce9831a3435b8e77ef3dcfddfbe..f7ef4c6305ce0d2ac146a6ed1bfee6bf19012299 100644
--- a/VectoCommon/VectoHashing/VectoHash.cs
+++ b/VectoCommon/VectoHashing/VectoHash.cs
@@ -141,7 +141,9 @@ namespace TUGraz.VectoHashing
 				}
 			} else if (Document.DocumentElement.LocalName.Equals("VectoOutput")) {
 				components = new List<VectoComponents>() { VectoComponents.VectoOutput };
-			} else {
+			} else if (Document.DocumentElement.LocalName.Equals("VectoCustomerInformation")) {
+				components = new List<VectoComponents>() { VectoComponents.VectoCustomerInformation };
+			}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());
diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs
index 0cfe43ce72b7f6d3fb5f438e016bb67968a2d03b..e5f1e4459da2e88c8e2265cfa60888c14791ec6a 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs
@@ -123,6 +123,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 			get { return AxleWheels().Cast<IAxleEngineeringInputData>().ToList(); }
 		}
 
+		public string ManufacturerAddress { get { return "N.A."; } }
+
 		IList<IAxleDeclarationInputData> IVehicleDeclarationInputData.Axles
 		{
 			get { return AxleWheels().Cast<IAxleDeclarationInputData>().ToList(); }
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationVehicleDataProvider.cs
index f2f1a0dcfb54fe3372057db25557180c92245f1b..72d865717bd7db7ad6a7f4ddb668b3efe16f0ae0 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationVehicleDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationVehicleDataProvider.cs
@@ -122,6 +122,11 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration
 			}
 		}
 
+		public string ManufacturerAddress
+		{
+			get { return GetElementValue(XMLNames.Component_ManufacturerAddress); }
+		}
+
 		public double RetarderRatio
 		{
 			get { return GetDoubleElementValue(XMLNames.Vehicle_RetarderRatio); }
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringVehicleDataProvider.cs
index 4cb0cddace7ddc86bab1bcae53316afd315a5a08..7adc0c852e119685015d88b01fbb4503dd2f48c1 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringVehicleDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringVehicleDataProvider.cs
@@ -110,6 +110,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering
 			get { return AxleEngineeringInput().Cast<IAxleEngineeringInputData>().ToList(); }
 		}
 
+		public string ManufacturerAddress { get { return "N.A."; } }
+
 		IList<IAxleDeclarationInputData> IVehicleDeclarationInputData.Axles
 		{
 			get { return AxleEngineeringInput().Cast<IAxleDeclarationInputData>().ToList(); }
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs
index b33ae94d72a0bb51987c7f5a3208f7bcd4c24868..cd9d0d26215a470fa042a059343fc7d17bcf4ce6 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs
@@ -89,6 +89,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 
 			var retVal = SetCommonVehicleData(data);
 			retVal.VIN = data.VIN;
+			retVal.ManufacturerAddress = data.ManufacturerAddress;
 			retVal.LegislativeClass = data.LegislativeClass;
 			retVal.TrailerGrossVehicleWeight = mission.Trailer.Sum(t => t.TrailerGrossVehicleWeight).DefaultIfNull(0);
 
diff --git a/VectoCore/VectoCore/Models/Declaration/MissionType.cs b/VectoCore/VectoCore/Models/Declaration/MissionType.cs
index 35dae7e633a17fbcbcad886d44ac50fc81f0c470..3b3c54a7286a240b7c7ade04fdd83d67d7ffeaa8 100644
--- a/VectoCore/VectoCore/Models/Declaration/MissionType.cs
+++ b/VectoCore/VectoCore/Models/Declaration/MissionType.cs
@@ -76,11 +76,13 @@ namespace TUGraz.VectoCore.Models.Declaration
 		{
 			switch (self) {
 				case MissionType.LongHaul:
-				case MissionType.LongHaulEMS:
 					return "Long Haul";
+				case MissionType.LongHaulEMS:
+					return "Long Haul EMS";
 				case MissionType.RegionalDelivery:
-				case MissionType.RegionalDeliveryEMS:
 					return "Regional Delivery";
+				case MissionType.RegionalDeliveryEMS:
+					return "Regional Delivery EMS";
 				case MissionType.UrbanDelivery:
 					return "Urban Delivery";
 				case MissionType.MunicipalUtility:
diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs
index ba64c342f157941f4d3e7d8b2fe8f606dd39d989..e7faef20506cb59be284fcb33f03b6dfdce0c92a 100644
--- a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs
@@ -79,9 +79,6 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 						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, report);
 					break;
 				case ExecutionMode.Engineering:
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/VehicleData.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/VehicleData.cs
index 0ce74d45a22b36fbba74625a310c32304644ff92..23baa05605b395456d844af0c7d066b709ad0232 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Data/VehicleData.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/VehicleData.cs
@@ -68,6 +68,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 
 		public AxleConfiguration AxleConfiguration { get; internal set; }
 
+		public string ManufacturerAddress { get; internal set; }
+
 
 		[Required, ValidateObject] private List<Axle> _axleData;
 
diff --git a/VectoCore/VectoCore/OutputData/DeclarationReport.cs b/VectoCore/VectoCore/OutputData/DeclarationReport.cs
index 59c107bfa8df78dbac70b41b0b0c3372b43a3069..b81e6b9cf896b4e24ea40935558ef2d6d37febb2 100644
--- a/VectoCore/VectoCore/OutputData/DeclarationReport.cs
+++ b/VectoCore/VectoCore/OutputData/DeclarationReport.cs
@@ -46,8 +46,6 @@ namespace TUGraz.VectoCore.OutputData
 		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; }
 	}
 
 	/// <summary>
@@ -98,11 +96,6 @@ namespace TUGraz.VectoCore.OutputData
 		/// </summary>
 		public string Creator { get; set; }
 
-		/// <summary>
-		/// The name of the job file (report name will be the same)
-		/// </summary>
-		public string JobName { get; set; }
-
 		/// <summary>
 		/// The result count determines how many results must be given before the report gets written.
 		/// </summary>
diff --git a/VectoCore/VectoCore/OutputData/FileIO/FileOutputWriter.cs b/VectoCore/VectoCore/OutputData/FileIO/FileOutputWriter.cs
index 87e9681b906236091f61d250b32a85f1ecee0832..f5604b2f7e09c4b64f74a1471a87777a0bf8b6dc 100644
--- a/VectoCore/VectoCore/OutputData/FileIO/FileOutputWriter.cs
+++ b/VectoCore/VectoCore/OutputData/FileIO/FileOutputWriter.cs
@@ -57,6 +57,11 @@ namespace TUGraz.VectoCore.OutputData.FileIO
 			get { return Path.ChangeExtension(_jobFile, "RESULT.xml"); }
 		}
 
+		public string XMLCoCReportName
+		{
+			get { return Path.ChangeExtension(_jobFile, "COC.xml"); }
+		}
+
 
 		public string SumFileName
 		{
@@ -101,6 +106,8 @@ namespace TUGraz.VectoCore.OutputData.FileIO
 					return new FileStream(PDFReportName, FileMode.Create);
 				case ReportType.DeclarationReportXMLFulll:
 					return new FileStream(XMLFullReportName, FileMode.Create);
+				case ReportType.DeclarationReportXMLCOC:
+					return new FileStream(XMLCoCReportName, FileMode.Create);
 				default:
 
 					throw new ArgumentOutOfRangeException("type");
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLCustomerReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLCustomerReport.cs
new file mode 100644
index 0000000000000000000000000000000000000000..9b6f72e9a5b18e571b48819fa3b4366169988be6
--- /dev/null
+++ b/VectoCore/VectoCore/OutputData/XML/XMLCustomerReport.cs
@@ -0,0 +1,157 @@
+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.Models.Declaration;
+using TUGraz.VectoCore.Models.Simulation.Data;
+using TUGraz.VectoCore.Models.Simulation.Impl;
+using TUGraz.VectoHashing;
+
+namespace TUGraz.VectoCore.OutputData.XML
+{
+	public class XMLCustomerReport
+	{
+		protected XElement VehiclePart;
+
+		protected XElement InputDataIntegrity;
+
+		protected XElement Results;
+
+		protected XNamespace tns;
+		protected XNamespace di;
+		private bool allSuccess = true;
+
+		public XMLCustomerReport()
+		{
+			di = "http://www.w3.org/2000/09/xmldsig#";
+			tns = "urn:tugraz:ivt:VectoAPI:COCOutput: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.Component_Model, modelData.VehicleData.ModelName),
+				new XElement(tns + XMLNames.Component_Manufacturer, modelData.VehicleData.Manufacturer),
+				new XElement(tns + XMLNames.Component_ManufacturerAddress, modelData.VehicleData.ManufacturerAddress),
+				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 + "EngineRatedPower", modelData.EngineData.RatedPowerDeclared.ToXMLFormat(0)),
+				new XElement(tns + "EngineDisplacement",
+					modelData.EngineData.Displacement.ConvertTo().Cubic.Centi.Meter.ToXMLFormat(0)),
+				new XElement(tns + XMLNames.Engine_FuelType, modelData.EngineData.FuelType.ToXMLFormat()),
+				new XElement(tns + "TransmissionMainCertificationMethod", modelData.GearboxData.CertificationMethod.ToXMLFormat()),
+				new XElement(tns + XMLNames.Gearbox_TransmissionType, modelData.GearboxData.Type.ToXMLFormat()),
+				new XElement(tns + "GearsCount", modelData.GearboxData.Gears.Count),
+				new XElement(tns + "Retarder", modelData.Retarder.Type.IsDedicatedComponent()),
+				new XElement(tns + "AxleRatio", modelData.AxleGearData.AxleGear.Ratio.ToXMLFormat(3))
+				);
+			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")
+				);
+		}
+
+		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)
+					};
+				default:
+					throw new ArgumentOutOfRangeException();
+			}
+		}
+
+		private object[] GetSuccessResultEntry(XMLDeclarationReport.ResultEntry result)
+		{
+			var fuel = FuelData.Instance().Lookup(result.FuelType);
+
+			return new object[] {
+				new XElement(tns + "Payload", new XAttribute("unit", "kg"), result.Payload.ToXMLFormat(0)),
+				new XElement(tns + "FuelType", result.FuelType.ToXMLFormat()),
+				new XElement(tns + "AverageSpeed", new XAttribute("unit", "km/h"), result.AverageSpeed.AsKmph.ToXMLFormat(1)),
+				XMLDeclarationReport.GetResults(result, tns, false).Cast<object>().ToArray()
+			};
+		}
+
+		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 void GenerateReport(XElement resultSignature)
+		{
+			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 + "VectoCustomerInformation",
+				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}VectoCOC.xsd", tns, AbstractXMLWriter.SchemaLocationBaseUrl)),
+				new XElement(tns + "Data",
+					vehicle,
+					new XElement(tns + "ResultDataSignature", resultSignature),
+					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);
+			Report = h.AddHash();
+		}
+
+		public XDocument Report { get; private set; }
+	}
+}
\ No newline at end of file
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs
index bfa8f3092f6f7205abcc496a2d5b21a01e5a586f..f13905e10b14f272e317d0e2c5bae3d2e34b1d66 100644
--- a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs
+++ b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs
@@ -1,24 +1,22 @@
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Globalization;
+using System.Collections.Generic;
 using System.Linq;
-using System.Security.Cryptography;
 using System.Text;
 using System.Xml;
 using System.Xml.Linq;
+using System.Xml.XPath;
 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 XMLCustomerReport _customerReport;
+
 		private IOutputDataWriter Writer;
 
 		public class ResultEntry
@@ -88,6 +86,7 @@ namespace TUGraz.VectoCore.OutputData.XML
 		public XMLDeclarationReport(IOutputDataWriter writer = null)
 		{
 			_fullReport = new XMLFullReport(); //new XDocument(new XDeclaration("1.0", "utf-8", "yes"));
+			_customerReport = new XMLCustomerReport();
 			//CustomerReport = new XDocument(new XDeclaration("1.0", "utf-8", "yes"));
 
 			Writer = writer;
@@ -98,6 +97,11 @@ namespace TUGraz.VectoCore.OutputData.XML
 			get { return _fullReport.Report; }
 		}
 
+		public XDocument CustomerReport
+		{
+			get { return _customerReport.Report; }
+		}
+
 
 		protected override void DoAddResult(ResultEntry entry, VectoRunData runData, IModalDataContainer modData)
 		{
@@ -108,96 +112,88 @@ namespace TUGraz.VectoCore.OutputData.XML
 		{
 			foreach (var result in Missions.OrderBy(m => m.Key)) {
 				_fullReport.AddResult(result.Value);
+				_customerReport.AddResult(result.Value);
 			}
 
+			_fullReport.GenerateReport();
+			var fullReportHash = GetSignature(_fullReport.Report);
+			_customerReport.GenerateReport(fullReportHash);
+
 			if (Writer != null) {
-				var xmlWriter = new XmlTextWriter(Writer.WriteStream(ReportType.DeclarationReportXMLFulll), Encoding.UTF8) {
-					Formatting = Formatting.Indented
-				};
-				_fullReport.Report.WriteTo(xmlWriter);
-				xmlWriter.Flush();
-				xmlWriter.Close();
+				using (var xmlWriter = new XmlTextWriter(Writer.WriteStream(ReportType.DeclarationReportXMLFulll), Encoding.UTF8)) {
+					xmlWriter.Formatting = Formatting.Indented;
+					_fullReport.Report.WriteTo(xmlWriter);
+					xmlWriter.Flush();
+					xmlWriter.Close();
+				}
+
+				using (var xmlWriter = new XmlTextWriter(Writer.WriteStream(ReportType.DeclarationReportXMLCOC), Encoding.UTF8)) {
+					xmlWriter.Formatting = Formatting.Indented;
+					_customerReport.Report.WriteTo(xmlWriter);
+					xmlWriter.Flush();
+					xmlWriter.Close();
+				}
 			}
-
-			//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[] 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;
-		//}
+		private XElement GetSignature(XDocument report)
+		{
+			return report.XPathSelectElement("/*[local-name()='VectoOutput']/*[local-name()='Signature']/*");
+		}
 
 
 		protected override void DoInitializeReport(VectoRunData modelData, Segment segment)
 		{
 			_fullReport.Initialize(modelData, segment);
+			_customerReport.Initialize(modelData, segment);
+		}
+
+
+		public static List<XElement> GetResults(XMLDeclarationReport.ResultEntry result, XNamespace tns, bool fullOutput)
+		{
+			var fuel = FuelData.Instance().Lookup(result.FuelType);
+			var retVal = new List<XElement>();
+			//FC
+			retVal.Add(new XElement(tns + "FuelConsumption", new XAttribute("unit", "g/km"),
+				(result.FuelConsumptionTotal.ConvertTo().Gramm / result.Distance.ConvertTo().Kilo.Meter).ToXMLFormat(1)));
+			retVal.Add(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)));
+			retVal.Add(new XElement(tns + "FuelConsumption", new XAttribute("unit", "g/m³-km"),
+				(result.FuelConsumptionTotal.ConvertTo().Gramm / result.Distance.ConvertTo().Kilo.Meter / result.CargoVolume)
+					.ToXMLFormat(1)));
+			if (fullOutput) {
+				retVal.Add(new XElement(tns + "FuelConsumption", new XAttribute("unit", "MJ/km"),
+					(result.EnergyConsumptionTotal / result.Distance.ConvertTo().Kilo.Meter / 1e6)
+						.ToXMLFormat(1)));
+				retVal.Add(new XElement(tns + "FuelConsumption", new XAttribute("unit", "MJ/t-km"),
+					(result.EnergyConsumptionTotal / result.Distance.ConvertTo().Kilo.Meter / result.Payload.ConvertTo().Ton / 1e6)
+						.ToXMLFormat(1)));
+				retVal.Add(new XElement(tns + "FuelConsumption", new XAttribute("unit", "MJ/m³-km"),
+					(result.EnergyConsumptionTotal / result.Distance.ConvertTo().Kilo.Meter / result.CargoVolume / 1e6).ToXMLFormat(1)));
+			}
+			if (fuel.FuelDensity != null) {
+				retVal.Add(new XElement(tns + "FuelConsumption", new XAttribute("unit", "l/100km"),
+					(result.FuelConsumptionTotal.ConvertTo().Gramm / fuel.FuelDensity / result.Distance.ConvertTo().Kilo.Meter * 100)
+						.ToXMLFormat(1)));
+				retVal.Add(new XElement(tns + "FuelConsumption", new XAttribute("unit", "l/t-km"),
+					(result.FuelConsumptionTotal.ConvertTo().Gramm / fuel.FuelDensity / result.Distance.ConvertTo().Kilo.Meter /
+					result.Payload.ConvertTo().Ton).ToXMLFormat(1)));
+				retVal.Add(new XElement(tns + "FuelConsumption", new XAttribute("unit", "l/m³-km"),
+					(result.FuelConsumptionTotal.ConvertTo().Gramm / fuel.FuelDensity / result.Distance.ConvertTo().Kilo.Meter /
+					result.CargoVolume).ToXMLFormat(1)));
+			}
+			//CO2
+			retVal.Add(new XElement(tns + "CO2", new XAttribute("unit", "g/km"),
+				(result.CO2Total.ConvertTo().Gramm / result.Distance.ConvertTo().Kilo.Meter).ToXMLFormat(1)));
+			retVal.Add(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)));
+			retVal.Add(new XElement(tns + "CO2", new XAttribute("unit", "g/m³-km"),
+				(result.CO2Total.ConvertTo().Gramm / result.Distance.ConvertTo().Kilo.Meter / result.CargoVolume)
+					.ToXMLFormat(1)));
+
+			return retVal;
 		}
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLFullReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLFullReport.cs
index ef36c366490896660f29591785e9ca1cb8e3141f..564470d59ea5af7b1000c4198f0db97084a030b8 100644
--- a/VectoCore/VectoCore/OutputData/XML/XMLFullReport.cs
+++ b/VectoCore/VectoCore/OutputData/XML/XMLFullReport.cs
@@ -9,7 +9,6 @@ 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;
@@ -89,7 +88,9 @@ namespace TUGraz.VectoCore.OutputData.XML
 				}
 			}
 
-			return limits.Count == 0 ? null : new XElement(tns + XMLNames.Vehicle_TorqueLimits, limits.Cast<object>().ToArray());
+			return limits.Count == 0
+				? null
+				: new XElement(tns + XMLNames.Vehicle_TorqueLimits, limits.Cast<object>().ToArray());
 		}
 
 		private XElement GetEngineDescription(CombustionEngineData engineData)
@@ -282,25 +283,7 @@ namespace TUGraz.VectoCore.OutputData.XML
 					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)),
+				XMLDeclarationReport.GetResults(result, tns, true).Cast<object>().ToArray()
 			};
 		}
 
@@ -312,37 +295,36 @@ namespace TUGraz.VectoCore.OutputData.XML
 				new XElement(tns + "Date", XmlConvert.ToString(DateTime.Now, XmlDateTimeSerializationMode.Utc)));
 		}
 
-		public XDocument Report
+		public void GenerateReport()
 		{
-			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;
-			}
+			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);
+			Report = h.AddHash();
 		}
+
+		public XDocument Report { get; private set; }
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Resources/XSD/VectoCOC.xsd b/VectoCore/VectoCore/Resources/XSD/VectoCOC.xsd
index 5887df8523ce79f35424a11958263e1800cdc285..aeb336e3e43219ec874004f95210c29f7331956e 100644
--- a/VectoCore/VectoCore/Resources/XSD/VectoCOC.xsd
+++ b/VectoCore/VectoCore/Resources/XSD/VectoCOC.xsd
@@ -177,16 +177,10 @@
 					</xs:restriction>
 				</xs:simpleType>
 			</xs:element>
-			<xs:element name="Retarder">
+			<xs:element name="Retarder" type="xs:boolean">
 				<xs:annotation>
 					<xs:documentation>P052</xs:documentation>
 				</xs:annotation>
-				<xs:simpleType>
-					<xs:restriction base="xs:string">
-						<xs:enumeration value="yes"/>
-						<xs:enumeration value="no"/>
-					</xs:restriction>
-				</xs:simpleType>
 			</xs:element>
 			<xs:element name="AxleRatio" type="vdecdef:AxlegearRatioType">
 				<xs:annotation>
@@ -240,7 +234,9 @@
 	</xs:simpleType>
 	<xs:simpleType name="MissionTypeType">
 		<xs:restriction base="xs:token">
+			<xs:enumeration value="Long Haul EMS"/>
 			<xs:enumeration value="Long Haul"/>
+			<xs:enumeration value="Regional Delivery EMS"/>
 			<xs:enumeration value="Regional Delivery"/>
 			<xs:enumeration value="Urban Delivery"/>
 			<xs:enumeration value="Municipal Utility"/>
diff --git a/VectoCore/VectoCore/Resources/XSD/VectoOutput.xsd b/VectoCore/VectoCore/Resources/XSD/VectoOutput.xsd
index ff024ed8cb8c2ef3c795818ea5039b28cc801005..214b10f49d4ce751414d8730cc79f394d2ca5474 100644
--- a/VectoCore/VectoCore/Resources/XSD/VectoOutput.xsd
+++ b/VectoCore/VectoCore/Resources/XSD/VectoOutput.xsd
@@ -21,110 +21,66 @@
 			<xs:attribute name="schemaVersion" type="xs:decimal" use="required"/>
 		</xs:complexType>
 	</xs:element>
-	<xs:complexType name="ComponentDescriptionType">
+	<xs:complexType name="AirdragType">
 		<xs:sequence>
-			<xs:element name="Model" type="vdecdef:ModelType"/>
-			<xs:element name="CertificationNumber" type="vdecdef:CertificationNumberType"/>
-			<xs:element name="DigestValue" type="xs:token"/>
+			<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>
+				</xs:annotation>
+			</xs:element>
 		</xs:sequence>
 	</xs:complexType>
-	<xs:complexType name="EngineType">
-		<xs:complexContent>
-			<xs:extension base="ComponentDescriptionType">
-				<xs:sequence>
-					<xs:element name="RatedPower" type="vdecdef:EngineRatedPower">
-						<xs:annotation>
-							<xs:documentation>P250</xs:documentation>
-						</xs:annotation>
-					</xs:element>
-					<xs:element name="IdlingSpeed" type="vdecdef:EngineDeclaredSpeedType">
-						<xs:annotation>
-							<xs:documentation>P063 / P198</xs:documentation>
-						</xs:annotation>
-					</xs:element>
-					<xs:element name="RatedSpeed" type="vdecdef:EngineDeclaredSpeedType">
-						<xs:annotation>
-							<xs:documentation>P249</xs:documentation>
-						</xs:annotation>
-					</xs:element>
-					<xs:element name="Displacement" type="vdecdef:EngineDisplacementType">
-						<xs:annotation>
-							<xs:documentation>P061</xs:documentation>
-						</xs:annotation>
-					</xs:element>
-					<xs:element name="FuelType" type="vdecdef:FuelTypeType">
-						<xs:annotation>
-							<xs:documentation>P193</xs:documentation>
-						</xs:annotation>
-					</xs:element>
-				</xs:sequence>
-			</xs:extension>
-		</xs:complexContent>
-	</xs:complexType>
-	<xs:complexType name="GearboxType">
+	<xs:complexType name="AngledriveType">
 		<xs:sequence>
 			<xs:element name="Model" type="vdecdef:ModelType"/>
-			<xs:element name="CertificationMethod" type="vdecdef:GearboxCertificationOptionType">
+			<xs:element name="CertificationMethod" type="vdecdef:AngledriveCertificationOptionType">
 				<xs:annotation>
-					<xs:documentation>P154</xs:documentation>
+					<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="TransmissionType" type="vdecdef:GearboxTransmissionTypeType">
+			<xs:element name="Ratio" type="vdecdef:AngledriveRatioType">
 				<xs:annotation>
-					<xs:documentation>P076</xs:documentation>
+					<xs:documentation>P176</xs:documentation>
 				</xs:annotation>
 			</xs:element>
-			<xs:element name="GearsCount">
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="AuxiliariesType">
+		<xs:sequence>
+			<xs:element name="FanTechnology" type="vdecdef:AuxFanTechnologyType">
 				<xs:annotation>
-					<xs:documentation>P199</xs:documentation>
+					<xs:documentation>P181</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:element name="SteeringPumpTechnology" maxOccurs="4">
 				<xs:annotation>
-					<xs:documentation>P078</xs:documentation>
+					<xs:documentation>P182</xs:documentation>
 				</xs:annotation>
+				<xs:complexType>
+					<xs:simpleContent>
+						<xs:extension base="vdecdef:AuxSPTechnologyType"/>
+					</xs:simpleContent>
+				</xs:complexType>
 			</xs:element>
-		</xs:sequence>
-	</xs:complexType>
-	<xs:complexType name="RetarderType">
-		<xs:sequence>
-			<xs:element name="RetarderType" type="vdecdef:RetarderTypeType">
+			<xs:element name="ElectricSystemTechnology" type="vdecdef:AuxESTechnologyType">
 				<xs:annotation>
-					<xs:documentation>P052</xs:documentation>
+					<xs:documentation>P183</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:sequence>
-			<xs:element name="Model" type="vdecdef:ModelType"/>
-			<xs:element name="CertificationMethod" type="vdecdef:AngledriveCertificationOptionType">
+			<xs:element name="PneumaticSystemTechnology" type="vdecdef:AuxPSTechnologyType">
 				<xs:annotation>
-					<xs:documentation>P258</xs:documentation>
+					<xs:documentation>P184</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:element name="HVACTechnology" type="vdecdef:AuxHVACTechnologyType">
 				<xs:annotation>
-					<xs:documentation>P176</xs:documentation>
+					<xs:documentation>P185</xs:documentation>
 				</xs:annotation>
 			</xs:element>
 		</xs:sequence>
@@ -151,19 +107,6 @@
 			</xs:element>
 		</xs:sequence>
 	</xs:complexType>
-	<xs:complexType name="AirdragType">
-		<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>
-				</xs:annotation>
-			</xs:element>
-		</xs:sequence>
-	</xs:complexType>
 	<xs:complexType name="AxleType">
 		<xs:sequence>
 			<xs:element name="TyreDimension" type="vdecdef:TyreDimensionType">
@@ -194,111 +137,143 @@
 			<xs:element name="Axle" type="AxleType"/>
 		</xs:sequence>
 	</xs:complexType>
-	<xs:complexType name="AuxiliariesType">
+	<xs:complexType name="CO2Type">
+		<xs:simpleContent>
+			<xs:extension base="xs:double">
+				<xs:attribute name="unit" type="CO2UnitType" use="required"/>
+			</xs:extension>
+		</xs:simpleContent>
+	</xs:complexType>
+	<xs:complexType name="ComponentDescriptionType">
 		<xs:sequence>
-			<xs:element name="FanTechnology" type="vdecdef:AuxFanTechnologyType">
-				<xs:annotation>
-					<xs:documentation>P181</xs:documentation>
-				</xs:annotation>
-			</xs:element>
-			<xs:element name="SteeringPumpTechnology" maxOccurs="4">
-				<xs:annotation>
-					<xs:documentation>P182</xs:documentation>
-				</xs:annotation>
-				<xs:complexType>
-					<xs:simpleContent>
-						<xs:extension base="vdecdef:AuxSPTechnologyType"/>
-					</xs:simpleContent>
-				</xs:complexType>
-			</xs:element>
-			<xs:element name="ElectricSystemTechnology" type="vdecdef:AuxESTechnologyType">
-				<xs:annotation>
-					<xs:documentation>P183</xs:documentation>
-				</xs:annotation>
-			</xs:element>
-			<xs:element name="PneumaticSystemTechnology" type="vdecdef:AuxPSTechnologyType">
-				<xs:annotation>
-					<xs:documentation>P184</xs:documentation>
-				</xs:annotation>
-			</xs:element>
-			<xs:element name="HVACTechnology" type="vdecdef:AuxHVACTechnologyType">
-				<xs:annotation>
-					<xs:documentation>P185</xs:documentation>
-				</xs:annotation>
-			</xs:element>
+			<xs:element name="Model" type="vdecdef:ModelType"/>
+			<xs:element name="CertificationNumber" type="vdecdef:CertificationNumberType"/>
+			<xs:element name="DigestValue" type="xs:token"/>
 		</xs:sequence>
 	</xs:complexType>
-	<xs:complexType name="TorqueLimitsEntryType">
-		<xs:attribute name="gear" type="vdecdef:GearboxGearNumberType" use="required">
-			<xs:annotation>
-				<xs:documentation>P196</xs:documentation>
-			</xs:annotation>
-		</xs:attribute>
-		<xs:attribute name="torqueLimit" type="vdecdef:TorqueLimitEntryMaxTorqueType" use="required">
-			<xs:annotation>
-				<xs:documentation>P197 / P194</xs:documentation>
-			</xs:annotation>
-		</xs:attribute>
+	<xs:complexType name="EngineType">
+		<xs:complexContent>
+			<xs:extension base="ComponentDescriptionType">
+				<xs:sequence>
+					<xs:element name="RatedPower" type="vdecdef:EngineRatedPower">
+						<xs:annotation>
+							<xs:documentation>P250</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="IdlingSpeed" type="vdecdef:EngineDeclaredSpeedType">
+						<xs:annotation>
+							<xs:documentation>P063 / P198</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="RatedSpeed" type="vdecdef:EngineDeclaredSpeedType">
+						<xs:annotation>
+							<xs:documentation>P249</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="Displacement" type="vdecdef:EngineDisplacementType">
+						<xs:annotation>
+							<xs:documentation>P061</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="FuelType" type="vdecdef:FuelTypeType">
+						<xs:annotation>
+							<xs:documentation>P193</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
 	</xs:complexType>
-	<xs:complexType name="TorqueLimitsType">
-		<xs:sequence>
-			<xs:element name="Entry" type="TorqueLimitsEntryType"/>
-		</xs:sequence>
+	<xs:complexType name="FuelConsumptionType">
+		<xs:simpleContent>
+			<xs:extension base="xs:double">
+				<xs:attribute name="unit" type="FuelConsumptionUnitType" use="required"/>
+			</xs:extension>
+		</xs:simpleContent>
 	</xs:complexType>
-	<xs:complexType name="VehicleType">
+	<xs:complexType name="GearboxType">
 		<xs:sequence>
-			<xs:element name="VIN">
-				<xs:annotation>
-					<xs:documentation>P238</xs:documentation>
-				</xs:annotation>
-			</xs:element>
-			<xs:element name="VehicleCategory" type="vdecdef:LegislativeClassDeclarationType">
-				<xs:annotation>
-					<xs:documentation>P251</xs:documentation>
-				</xs:annotation>
-			</xs:element>
-			<xs:element name="VehicleGroup" type="VehicleGroupType">
-				<xs:annotation>
-					<xs:documentation>VECTO</xs:documentation>
-				</xs:annotation>
-			</xs:element>
-			<xs:element name="AxleConfiguration" type="vdecdef:VehicleAxleConfigurationDeclarationType">
+			<xs:element name="Model" type="vdecdef:ModelType"/>
+			<xs:element name="CertificationMethod" type="vdecdef:GearboxCertificationOptionType">
 				<xs:annotation>
-					<xs:documentation>P037</xs:documentation>
+					<xs:documentation>P154</xs:documentation>
 				</xs:annotation>
 			</xs:element>
-			<xs:element name="GrossVehicleMass" type="vdecdef:VehicleGrossVehicleMassType">
+			<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>P041</xs:documentation>
+					<xs:documentation>P076</xs:documentation>
 				</xs:annotation>
 			</xs:element>
-			<xs:element name="CurbMassChassis" type="vdecdef:VehicleCurbMassChassisType">
+			<xs:element name="GearsCount">
 				<xs:annotation>
-					<xs:documentation>P038</xs:documentation>
+					<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="PTO" type="xs:boolean">
+			<xs:element name="TransmissionRatioFinalGear" type="vdecdef:GearboxGearRatioType">
 				<xs:annotation>
-					<xs:documentation>P247</xs:documentation>
+					<xs:documentation>P078</xs:documentation>
 				</xs:annotation>
 			</xs:element>
-			<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"/>
-						<xs:element name="Angledrive" type="AngledriveType" minOccurs="0"/>
-						<xs:element name="Axlegear" type="AxlegearType"/>
-						<xs:element name="AirDrag" type="AirdragType"/>
-						<xs:element name="AxleWheels" type="AxleWheelsType"/>
-						<xs:element name="Auxiliaries" type="AuxiliariesType"/>
-					</xs:sequence>
-				</xs:complexType>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ResultType">
+		<xs:sequence>
+			<xs:element name="Mission" type="MissionTypeType"/>
+			<xs:choice>
+				<xs:sequence>
+					<xs:element name="Distance">
+						<xs:complexType>
+							<xs:simpleContent>
+								<xs:extension base="xs:double">
+									<xs:attribute name="unit" type="DistanceUnitType" use="required"/>
+								</xs:extension>
+							</xs:simpleContent>
+						</xs:complexType>
+					</xs:element>
+					<xs:element name="SimulationParameters" type="SimulationParametersType"/>
+					<xs:element name="VehiclePerformance" type="VehiclePerformanceType"/>
+					<xs:element name="FuelConsumption" type="FuelConsumptionType" maxOccurs="unbounded"/>
+					<xs:element name="CO2" type="CO2Type" maxOccurs="unbounded"/>
+				</xs:sequence>
+				<xs:sequence>
+					<xs:element name="Error" type="xs:string"/>
+					<xs:element name="ErrorDetails" type="xs:string"/>
+				</xs:sequence>
+			</xs:choice>
+		</xs:sequence>
+		<xs:attribute name="status" use="required">
+			<xs:simpleType>
+				<xs:restriction base="xs:string">
+					<xs:enumeration value="success"/>
+					<xs:enumeration value="error"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="RetarderType">
+		<xs:sequence>
+			<xs:element name="RetarderType" type="vdecdef:RetarderTypeType">
+				<xs:annotation>
+					<xs:documentation>P052</xs:documentation>
+				</xs:annotation>
 			</xs:element>
-			<xs:element name="InputDataSignature" type="vdecdef:SignatureType"/>
+			<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="SimulationParametersType">
@@ -324,6 +299,64 @@
 			<xs:element name="FuelType" type="vdecdef:FuelTypeType"/>
 		</xs:sequence>
 	</xs:complexType>
+	<xs:complexType name="TorqueconverterType">
+		<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:complexType name="TorqueLimitsEntryType">
+		<xs:attribute name="gear" type="vdecdef:GearboxGearNumberType" use="required">
+			<xs:annotation>
+				<xs:documentation>P196</xs:documentation>
+			</xs:annotation>
+		</xs:attribute>
+		<xs:attribute name="torqueLimit" type="vdecdef:TorqueLimitEntryMaxTorqueType" use="required">
+			<xs:annotation>
+				<xs:documentation>P197 / P194</xs:documentation>
+			</xs:annotation>
+		</xs:attribute>
+	</xs:complexType>
+	<xs:complexType name="TorqueLimitsType">
+		<xs:sequence>
+			<xs:element name="Entry" type="TorqueLimitsEntryType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="VectoOutputDataType">
+		<xs:sequence>
+			<xs:element name="Vehicle" type="VehicleType"/>
+			<xs:element name="Results">
+				<xs:complexType>
+					<xs:sequence>
+						<xs:element name="Status">
+							<xs:simpleType>
+								<xs:restriction base="xs:string">
+									<xs:enumeration value="success"/>
+									<xs:enumeration value="error"/>
+								</xs:restriction>
+							</xs:simpleType>
+						</xs:element>
+						<xs:element name="Result" type="ResultType" maxOccurs="unbounded"/>
+					</xs:sequence>
+				</xs:complexType>
+			</xs:element>
+			<xs:element name="ApplicationInformation">
+				<xs:complexType>
+					<xs:sequence>
+						<xs:element name="SimulationToolVersion"/>
+						<xs:element name="Date"/>
+					</xs:sequence>
+				</xs:complexType>
+			</xs:element>
+		</xs:sequence>
+		<xs:attribute name="id" use="required"/>
+	</xs:complexType>
 	<xs:complexType name="VehiclePerformanceType">
 		<xs:sequence>
 			<xs:element name="AverageSpeed">
@@ -382,39 +415,65 @@
 			<xs:element name="GearshiftCount" type="xs:int"/>
 		</xs:sequence>
 	</xs:complexType>
-	<xs:complexType name="VectoOutputDataType">
+	<xs:complexType name="VehicleType">
 		<xs:sequence>
-			<xs:element name="Vehicle" type="VehicleType"/>
-			<xs:element name="Results">
-				<xs:complexType>
-					<xs:sequence>
-						<xs:element name="Status">
-							<xs:simpleType>
-								<xs:restriction base="xs:string">
-									<xs:enumeration value="success"/>
-									<xs:enumeration value="error"/>
-								</xs:restriction>
-							</xs:simpleType>
-						</xs:element>
-						<xs:element name="Result" type="ResultType" maxOccurs="unbounded"/>
-					</xs:sequence>
-				</xs:complexType>
+			<xs:element name="VIN">
+				<xs:annotation>
+					<xs:documentation>P238</xs:documentation>
+				</xs:annotation>
 			</xs:element>
-			<xs:element name="ApplicationInformation">
+			<xs:element name="VehicleCategory" type="vdecdef:LegislativeClassDeclarationType">
+				<xs:annotation>
+					<xs:documentation>P251</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element name="VehicleGroup" type="VehicleGroupType">
+				<xs:annotation>
+					<xs:documentation>VECTO</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element name="AxleConfiguration" type="vdecdef:VehicleAxleConfigurationDeclarationType">
+				<xs:annotation>
+					<xs:documentation>P037</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element name="GrossVehicleMass" type="vdecdef:VehicleGrossVehicleMassType">
+				<xs:annotation>
+					<xs:documentation>P041</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element name="CurbMassChassis" type="vdecdef:VehicleCurbMassChassisType">
+				<xs:annotation>
+					<xs:documentation>P038</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" minOccurs="0"/>
+			<xs:element name="Components">
 				<xs:complexType>
 					<xs:sequence>
-						<xs:element name="SimulationToolVersion"/>
-						<xs:element name="Date"/>
+						<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"/>
+						<xs:element name="Angledrive" type="AngledriveType" minOccurs="0"/>
+						<xs:element name="Axlegear" type="AxlegearType"/>
+						<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:attribute name="id" use="required"/>
 	</xs:complexType>
-	<xs:simpleType name="VehicleGroupType">
-		<xs:restriction base="xs:int">
-			<xs:minInclusive value="1"/>
-			<xs:maxInclusive value="16"/>
+	<xs:simpleType name="AccelerationUnitType">
+		<xs:restriction base="xs:token">
+			<xs:enumeration value="m/s²"/>
 		</xs:restriction>
 	</xs:simpleType>
 	<xs:simpleType name="AirdragCertificationOptionType">
@@ -423,19 +482,12 @@
 			<xs:enumeration value="Standard values"/>
 		</xs:restriction>
 	</xs:simpleType>
-	<xs:simpleType name="SpeedUnitType">
-		<xs:restriction base="xs:token">
-			<xs:enumeration value="km/h"/>
-		</xs:restriction>
-	</xs:simpleType>
-	<xs:simpleType name="AccelerationUnitType">
-		<xs:restriction base="xs:token">
-			<xs:enumeration value="m/s²"/>
-		</xs:restriction>
-	</xs:simpleType>
-	<xs:simpleType name="MassUnitType">
-		<xs:restriction base="xs:token">
-			<xs:enumeration value="kg"/>
+	<xs:simpleType name="CO2UnitType">
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="g/km"/>
+			<xs:enumeration value="g/t-km"/>
+			<xs:enumeration value="g/p-km"/>
+			<xs:enumeration value="g/m³-km"/>
 		</xs:restriction>
 	</xs:simpleType>
 	<xs:simpleType name="DistanceUnitType">
@@ -454,83 +506,35 @@
 			<xs:enumeration value="l/p-km"/>
 			<xs:enumeration value="l/m³-km"/>
 			<xs:enumeration value="MJ/km"/>
+			<xs:enumeration value="MJ/t-km"/>
+			<xs:enumeration value="MJ/m³-km"/>
 		</xs:restriction>
 	</xs:simpleType>
-	<xs:simpleType name="CO2UnitType">
-		<xs:restriction base="xs:string">
-			<xs:enumeration value="g/km"/>
-			<xs:enumeration value="g/t-km"/>
-			<xs:enumeration value="g/p-km"/>
-			<xs:enumeration value="g/m³-km"/>
+	<xs:simpleType name="MassUnitType">
+		<xs:restriction base="xs:token">
+			<xs:enumeration value="kg"/>
 		</xs:restriction>
 	</xs:simpleType>
 	<xs:simpleType name="MissionTypeType">
 		<xs:restriction base="xs:token">
+			<xs:enumeration value="Long Haul EMS"/>
 			<xs:enumeration value="Long Haul"/>
+			<xs:enumeration value="Regional Delivery EMS"/>
 			<xs:enumeration value="Regional Delivery"/>
 			<xs:enumeration value="Urban Delivery"/>
 			<xs:enumeration value="Municipal Utility"/>
 			<xs:enumeration value="Construction"/>
 		</xs:restriction>
 	</xs:simpleType>
-	<xs:complexType name="FuelConsumptionType">
-		<xs:simpleContent>
-			<xs:extension base="xs:double">
-				<xs:attribute name="unit" type="FuelConsumptionUnitType" use="required"/>
-			</xs:extension>
-		</xs:simpleContent>
-	</xs:complexType>
-	<xs:complexType name="CO2Type">
-		<xs:simpleContent>
-			<xs:extension base="xs:double">
-				<xs:attribute name="unit" type="CO2UnitType" use="required"/>
-			</xs:extension>
-		</xs:simpleContent>
-	</xs:complexType>
-	<xs:complexType name="ResultType">
-		<xs:sequence>
-			<xs:element name="Mission" type="MissionTypeType"/>
-			<xs:choice>
-				<xs:sequence>
-					<xs:element name="Distance">
-						<xs:complexType>
-							<xs:simpleContent>
-								<xs:extension base="xs:double">
-									<xs:attribute name="unit" type="DistanceUnitType" use="required"/>
-								</xs:extension>
-							</xs:simpleContent>
-						</xs:complexType>
-					</xs:element>
-					<xs:element name="SimulationParameters" type="SimulationParametersType"/>
-					<xs:element name="VehiclePerformance" type="VehiclePerformanceType"/>
-					<xs:element name="FuelConsumption" type="FuelConsumptionType" maxOccurs="unbounded"/>
-					<xs:element name="CO2" type="CO2Type" maxOccurs="unbounded"/>
-				</xs:sequence>
-				<xs:sequence>
-					<xs:element name="Error" type="xs:string"/>
-					<xs:element name="ErrorDetails" type="xs:string"/>
-				</xs:sequence>
-			</xs:choice>
-		</xs:sequence>
-		<xs:attribute name="status" use="required">
-			<xs:simpleType>
-				<xs:restriction base="xs:string">
-					<xs:enumeration value="success"/>
-					<xs:enumeration value="error"/>
-				</xs:restriction>
-			</xs:simpleType>
-		</xs:attribute>
-	</xs:complexType>
-	<xs:complexType name="TorqueconverterType">
-		<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:simpleType name="SpeedUnitType">
+		<xs:restriction base="xs:token">
+			<xs:enumeration value="km/h"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="VehicleGroupType">
+		<xs:restriction base="xs:int">
+			<xs:minInclusive value="1"/>
+			<xs:maxInclusive value="16"/>
+		</xs:restriction>
+	</xs:simpleType>
 </xs:schema>
diff --git a/VectoCore/VectoCore/VectoCore.csproj b/VectoCore/VectoCore/VectoCore.csproj
index 8588ecb4ffbbc9e44e618c341976567e34ceee58..928a841986916296e413443cbd5d7c4f950eb64e 100644
--- a/VectoCore/VectoCore/VectoCore.csproj
+++ b/VectoCore/VectoCore/VectoCore.csproj
@@ -190,6 +190,7 @@
     <Compile Include="OutputData\ModFilter\ModalData1HzFilter.cs" />
     <Compile Include="OutputData\XML\AbstractXMLWriter.cs" />
     <Compile Include="OutputData\XML\AttributeMappings.cs" />
+    <Compile Include="OutputData\XML\XMLCustomerReport.cs" />
     <Compile Include="OutputData\XML\XMLDeclarationReport.cs" />
     <Compile Include="OutputData\XML\XMLDeclarationWriter.cs" />
     <Compile Include="OutputData\XML\XMLEngineeringWriter.cs" />