From b020dee04a9a281da0ace088e01be40633e0e626 Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Thu, 14 Jul 2022 16:17:08 +0200
Subject: [PATCH] removing "fuel mode" in VIF results copying tyre data from
 input to vif to preserve original information MRF / CIF: results initially
 contain dummy values so that testcases run through and generate syntactically
 valid xml update VIF schema: component data does not contain signature, no id
 attribute extend dummy run data factory primary bus for PEV remove fuelmode
 in mockup results

---
 .../InputData/DeclarationInputData.cs         |   2 +-
 .../VectoCommon/Models/AxleConfiguration.cs   |  15 +
 .../InputData/FileIO/JSON/JSONInputData.cs    |   2 +-
 .../XMLDeclarationMultistageInputData.cs      |   5 +-
 ...ryVehicleBusResultsInputDataProviderV01.cs |   2 +-
 .../XMLDeclarationTyreDataProvider.cs         |   6 +
 .../IXMLTyreDeclarationInputData.cs           |   6 +-
 .../XMLDeclarationMultistageInputReader.cs    |  16 +-
 .../VectoCore/InputData/Impl/InputData.cs     |   2 +-
 ...rationModePrimaryBusVectoRunDataFactory.cs |  32 ++
 .../AbstractCustomerReport.cs                 |   5 +
 .../CIFNinjectModule.cs                       |   2 +
 .../CustomerInformationFile.cs                |   1 +
 .../XMLCustomerReportCompletedBus.cs          |   2 +-
 .../AbstractManufacturerReport.cs             |   5 +
 .../XMLManufacturerReportCompletedBus.cs      |   4 +-
 .../AbstractVIFXmlType.cs                     |  14 -
 .../ComponentGroup.cs                         |   8 +-
 .../Components/VIFAdasType.cs                 |  20 +
 .../Components/VIFAuxiliaryType.cs            |  62 ++-
 .../Components/VIFAxleWheelsType.cs           |  62 +--
 .../Components/VIFBoostingLimitationsType.cs  |   4 +-
 .../VIFElectricEnergyStorageType.cs           |  96 ++---
 .../Components/VIFElectricMachineGENType.cs   |   7 +-
 .../VIFElectricMachineSystemMeasuredType.cs   |  14 +-
 .../Components/VIFElectricMachineType.cs      |   2 +-
 .../VIFElectricMotorTorqueLimitsType.cs       |  10 +-
 .../Components/VIFIepcType.cs                 |  36 +-
 .../Components/VIFTorqueConverterType.cs      |  21 +-
 .../IVIFReportFactory.cs                      |  11 +-
 .../VIFNinjectModule.cs                       |  96 ++++-
 .../VehicleInformationFile.cs                 | 108 +++++-
 .../VehicleParameterGroup.cs                  |  60 ++-
 .../VehicleWriter.cs                          |  21 +-
 .../XSD/VectoOutputMultistep.0.1.xsd          |  63 +--
 ...entional_primaryBus_AMT_DifferentTyres.xml | 362 ++++++++++++++++++
 .../exempted_completed.VIF_Report_2.xml       |   2 +-
 .../CustomerInformationFileWriterTest.cs      |  66 ++--
 .../Reports/ManufacturerReportWriterTest.cs   |  67 ++--
 .../XML/XMLMultistageBusDataTest.cs           |   2 +-
 .../MRF_MockupResults_PEV_Lorry.xml           |   1 -
 .../VIF_MockupResults_Conv_Bus.xml            |   1 -
 .../VIF_MockupResults_OVC-HEV_Bus.xml         |   1 -
 .../VIF_MockupResults_PEV_Bus.xml             |   1 -
 .../VIF_MockupResults_non-OVC-HEV_Bus.xml     |   1 -
 .../VectoMockup/Ninject/VIFMockupModule.cs    |  29 +-
 .../VectoMockupTest/MockUpVectoTest.cs        |  32 +-
 47 files changed, 1082 insertions(+), 305 deletions(-)
 create mode 100644 VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.4/Distributed/PrimaryBus/Conventional_primaryBus_AMT_DifferentTyres.xml

diff --git a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs
index 022b8d0570..beec70895a 100644
--- a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs
+++ b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs
@@ -1091,7 +1091,7 @@ namespace TUGraz.VectoCommon.InputData
 		Kilogram TotalVehicleMass { get; }
 		Kilogram Payload { get; }
 		double PassengerCount { get; }
-		string FuelMode { get; }
+		//string FuelMode { get; }
 	}
 
 
diff --git a/VectoCommon/VectoCommon/Models/AxleConfiguration.cs b/VectoCommon/VectoCommon/Models/AxleConfiguration.cs
index 4de78fb9e5..fb5868430d 100644
--- a/VectoCommon/VectoCommon/Models/AxleConfiguration.cs
+++ b/VectoCommon/VectoCommon/Models/AxleConfiguration.cs
@@ -31,6 +31,7 @@
 
 using System;
 using System.Diagnostics.CodeAnalysis;
+using TUGraz.VectoCommon.Resources;
 using TUGraz.VectoCommon.Utils;
 
 namespace TUGraz.VectoCommon.Models
@@ -73,6 +74,20 @@ namespace TUGraz.VectoCommon.Models
 					throw new ArgumentOutOfRangeException("self", self, null);
 			}
 		}
+
+		public static string ToXMLFormat(this AxleType self)
+		{
+			switch (self) {
+				case AxleType.VehicleDriven:
+					return "VehicleDriven";
+				case AxleType.VehicleNonDriven:
+					return "VehicleNonDriven";
+				case AxleType.Trailer:
+					return "Trailer";
+				default:
+					throw new ArgumentOutOfRangeException(nameof(self), self, null);
+			}
+		}
 	}
 
 	public static class AxleConfigurationHelper
diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputData.cs
index 04cea2dbe1..2be61cbf0f 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputData.cs
@@ -836,7 +836,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 				TotalVehicleMass = (node.SelectSingleNode($"./*[local-name()='{XMLNames.Report_ResultEntry_TotalVehicleMass}']")?.InnerText.ToDouble() ?? 0).SI<Kilogram>(),
 				Payload = (node.SelectSingleNode($"./*[local-name()='{XMLNames.Report_Result_Payload}']")?.InnerText.ToDouble() ?? 0).SI<Kilogram>(),
 				PassengerCount = node.SelectSingleNode($"./*[local-name()='{XMLNames.Bus_PassengerCount}']")?.InnerText.ToDouble() ?? 0,
-				FuelMode = "" //node.SelectSingleNode($"./*[local-name()='{XMLNames.Report_Result_FuelMode}']").InnerText
+				//FuelMode = "" //node.SelectSingleNode($"./*[local-name()='{XMLNames.Report_Result_FuelMode}']").InnerText
 			};
 		}
 
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationMultistageInputData.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationMultistageInputData.cs
index 14c1eaecd0..fff8cb9b01 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationMultistageInputData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationMultistageInputData.cs
@@ -153,8 +153,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 		{
 			return ResultsInputData.Results.FirstOrDefault(
 				x => x.VehicleGroup == vehicleClass &&
-					(x.SimulationParameter.Payload - payload).IsEqual(0, 1) && x.Mission == mission &&
-					x.SimulationParameter.FuelMode.Equals(fuelMode, StringComparison.InvariantCultureIgnoreCase));
+					(x.SimulationParameter.Payload - payload).IsEqual(0, 1) && x.Mission == mission 
+					// && x.SimulationParameter.FuelMode.Equals(fuelMode, StringComparison.InvariantCultureIgnoreCase)
+					);
 		}
 
 		public XmlNode ResultsNode => GetNode(XMLNames.Report_Results);
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationPrimaryVehicleBusResultsInputDataProviderV01.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationPrimaryVehicleBusResultsInputDataProviderV01.cs
index 21ae0bdaed..0679d48964 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationPrimaryVehicleBusResultsInputDataProviderV01.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationPrimaryVehicleBusResultsInputDataProviderV01.cs
@@ -84,7 +84,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 				TotalVehicleMass = GetString(XMLNames.Report_ResultEntry_TotalVehicleMass, xmlNode).ToDouble().SI<Kilogram>(),
 				Payload = GetString(XMLNames.Report_Result_Payload, xmlNode).ToDouble().SI<Kilogram>(),
 				PassengerCount = GetString(XMLNames.Bus_PassengerCount, xmlNode).ToDouble(),
-				FuelMode = GetString(XMLNames.Report_Result_FuelMode, xmlNode)
+				//FuelMode = GetString(XMLNames.Report_Result_FuelMode, xmlNode)
 			};
 		}
 	}
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationTyreDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationTyreDataProvider.cs
index f02cc722c8..ab19c6b897 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationTyreDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationTyreDataProvider.cs
@@ -78,6 +78,12 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 		public virtual string FuelEfficiencyClass => DeclarationData.Wheels.TyreClass.Lookup(RollResistanceCoefficient);
 
 		#endregion
+
+		#region Implementation of IXMLTyreDeclarationInputData
+
+		public XmlNode GetXmlNode => BaseNode;
+
+		#endregion
 	}
 
 	// ---------------------------------------------------------------------------------------
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLTyreDeclarationInputData.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLTyreDeclarationInputData.cs
index b31986822a..79ed20d1a6 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLTyreDeclarationInputData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLTyreDeclarationInputData.cs
@@ -29,9 +29,13 @@
 *   Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology
 */
 
+using System.Xml;
 using TUGraz.VectoCommon.InputData;
 
 namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces
 {
-	public interface IXMLTyreDeclarationInputData : ITyreDeclarationInputData, IXMLResource { }
+	public interface IXMLTyreDeclarationInputData : ITyreDeclarationInputData, IXMLResource
+	{
+		XmlNode GetXmlNode { get; }
+	}
 }
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationMultistageInputReader.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationMultistageInputReader.cs
index b30e181990..c68a007daf 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationMultistageInputReader.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationMultistageInputReader.cs
@@ -592,7 +592,21 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 				////return _manufacturingStages.Any(x => x.Vehicle.ExemptedVehicle);
 			}
 		}
-		public VehicleCategory VehicleCategory { get => VehicleDeclarationType == VehicleDeclarationType.final ? VehicleCategory.HeavyBusCompletedVehicle : VehicleCategory.HeavyBusInterimVehicle; }
+		public VehicleCategory VehicleCategory
+		{
+			get
+			{
+				if (ExemptedVehicle) {
+					return IsInputDataCompleteExempted(VectoSimulationJobType.ConventionalVehicle, false) 
+						? VehicleCategory.HeavyBusCompletedVehicle
+						: VehicleCategory.HeavyBusInterimVehicle;
+				}
+				return VehicleDeclarationType == VehicleDeclarationType.final
+					? VehicleCategory.HeavyBusCompletedVehicle
+					: VehicleCategory.HeavyBusInterimVehicle;
+			}
+		}
+
 		public AxleConfiguration AxleConfiguration { get; }
 		public IList<ITorqueLimitInputData> TorqueLimits { get; }
 
diff --git a/VectoCore/VectoCore/InputData/Impl/InputData.cs b/VectoCore/VectoCore/InputData/Impl/InputData.cs
index e3a7d4c85d..903a0d7ffe 100644
--- a/VectoCore/VectoCore/InputData/Impl/InputData.cs
+++ b/VectoCore/VectoCore/InputData/Impl/InputData.cs
@@ -284,7 +284,7 @@ namespace TUGraz.VectoCore.InputData.Impl
 		public Kilogram TotalVehicleMass { get; internal set; }
 		public Kilogram Payload { get; internal set; }
 		public double PassengerCount { get; internal set; }
-		public string FuelMode { get; internal set; }
+		//public string FuelMode { get; internal set; }
 	}
 
 	public class ApplicationInformation : IApplicationInformation
diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModePrimaryBusVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModePrimaryBusVectoRunDataFactory.cs
index 09465baf9c..5e162563ef 100644
--- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModePrimaryBusVectoRunDataFactory.cs
+++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModePrimaryBusVectoRunDataFactory.cs
@@ -66,6 +66,38 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
 		}
 
 		private IEnumerable<VectoRunData> VectoRunDataHeavyBusPrimary()
+		{
+			switch (InputDataProvider.JobInputData.JobType) {
+				case VectoSimulationJobType.ConventionalVehicle:
+				case VectoSimulationJobType.ParallelHybridVehicle:
+				case VectoSimulationJobType.SerialHybridVehicle:
+					return VectoRunDataConventionalHeavyBusPrimaryNonExempted();
+				case VectoSimulationJobType.BatteryElectricVehicle:
+					return VectoRunDataBatteryElectricHeavyBusPrimaryNonExempted();
+				case VectoSimulationJobType.EngineOnlySimulation:
+					break;
+				default:
+					throw new ArgumentOutOfRangeException();
+			}
+			return VectoRunDataConventionalHeavyBusPrimaryNonExempted();
+		}
+
+		private IEnumerable<VectoRunData> VectoRunDataBatteryElectricHeavyBusPrimaryNonExempted()
+		{
+			var vehicle = InputDataProvider.JobInputData.Vehicle;
+			foreach (var mission in _segment.Missions) {
+				foreach (var loading in mission.Loadings) {
+					var simulationRunData = CreateVectoRunData(vehicle, 0, mission, loading);
+					if (simulationRunData == null) {
+						continue;
+					}
+					yield return simulationRunData;
+				}
+
+			}
+		}
+
+		private IEnumerable<VectoRunData> VectoRunDataConventionalHeavyBusPrimaryNonExempted()
 		{
 			var vehicle = InputDataProvider.JobInputData.Vehicle;
 			var engine = vehicle.Components.EngineInputData;
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/AbstractCustomerReport.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/AbstractCustomerReport.cs
index a39d6028fb..eba4c7d321 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/AbstractCustomerReport.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/AbstractCustomerReport.cs
@@ -35,6 +35,11 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation
 		protected AbstractCustomerReport(ICustomerInformationFileFactory cifFactory)
 		{
 			_cifFactory = cifFactory;
+
+			// MQ: write dummy result element for testcases (2022-07-13)
+			Results = new  XElement(Cif_0_9 + "Results",
+				new XElement(Cif_0_9 + "Status", "success"),
+				new XElement(Cif_0_9 + "ExemptedVehicle"));
 		}
 
 
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/CIFNinjectModule.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/CIFNinjectModule.cs
index f8597ae7b9..e944a51702 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/CIFNinjectModule.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/CIFNinjectModule.cs
@@ -97,7 +97,9 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation
 					true,
 					false,
 					false)));
+
 			#region MediumLorryCIF
+
 			Bind<IXMLCustomerReport>().To<ConventionalLorry_CIF>().Named(nameCombinationMethod(
 				ToParams(VehicleCategoryHelper.Van, VectoSimulationJobType.ConventionalVehicle,
 					ArchitectureID.UNKNOWN, false, false, false)));
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/CustomerInformationFile/CustomerInformationFile.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/CustomerInformationFile/CustomerInformationFile.cs
index e29f62db5f..0def98c7b2 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/CustomerInformationFile/CustomerInformationFile.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/CustomerInformationFile/CustomerInformationFile.cs
@@ -19,6 +19,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation
 		
         protected CustomerInformationFile(ICustomerInformationFileFactory cifFactory) : base(cifFactory) { }
 	}
+
     #region LorryCIF
     public class ConventionalLorry_CIF : CustomerInformationFile
 	{
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/XMLCustomerReportCompletedBus.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/XMLCustomerReportCompletedBus.cs
index 49e0c3f6a8..c604214d7c 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/XMLCustomerReportCompletedBus.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/XMLCustomerReportCompletedBus.cs
@@ -149,7 +149,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation
 					XMLHelper.ValueAsUnit(result.TotalVehicleMass, XMLNames.Unit_kg)),
                 new XElement(tns + XMLNames.Report_Result_MassPassengers, XMLHelper.ValueAsUnit(result.Payload, XMLNames.Unit_kg)),
                 result.PassengerCount.HasValue && result.PassengerCount.Value > 0 ? new XElement(tns + XMLNames.Report_Result_PassengerCount, result.PassengerCount.Value.ToMinSignificantDigits(3, 1)) : null,
-				new XElement(tns + XMLNames.Report_Result_FuelMode, primaryResult.SimulationParameter.FuelMode)
+				//new XElement(tns + XMLNames.Report_Result_FuelMode, primaryResult.SimulationParameter.FuelMode)
 			};
 		}
 
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/AbstractManufacturerReport.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/AbstractManufacturerReport.cs
index 0202037e06..ddeed612ee 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/AbstractManufacturerReport.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/AbstractManufacturerReport.cs
@@ -41,6 +41,11 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.
 		protected AbstractManufacturerReport(IManufacturerReportFactory MRFReportFactory)
 		{
 			_mRFReportFactory = MRFReportFactory;
+
+			// MQ: write dummy result element for testcases (2022-07-13)
+			Results = new XElement(Mrf_0_9 + "Results",
+				new XElement(Mrf_0_9 + "Status", "success"),
+				new XElement(Mrf_0_9 + "ExemptedVehicle"));
 		}
 
 		#region Implementation of IXMLManufacturerReport
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportCompletedBus.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportCompletedBus.cs
index d630c4f5ca..770a98df0a 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportCompletedBus.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportCompletedBus.cs
@@ -190,8 +190,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport
 					tns + XMLNames.Report_ResultEntry_TotalVehicleMass,
 					XMLHelper.ValueAsUnit(primaryResult.SimulationParameter.TotalVehicleMass, XMLNames.Unit_kg)),
 				new XElement(tns + XMLNames.Report_ResultEntry_Payload, XMLHelper.ValueAsUnit(primaryResult.SimulationParameter.Payload, XMLNames.Unit_kg)),
-				new XElement(tns + "PassengerCount", primaryResult.SimulationParameter.PassengerCount.ToMinSignificantDigits(3, 1)),
-				new XElement(tns + XMLNames.Report_Result_FuelMode, primaryResult.SimulationParameter.FuelMode)
+				new XElement(tns + "PassengerCount", primaryResult.SimulationParameter.PassengerCount.ToMinSignificantDigits(3, 1))
+				//new XElement(tns + XMLNames.Report_Result_FuelMode, primaryResult.SimulationParameter.FuelMode)
 			);
 		}
 
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/AbstractVIFXmlType.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/AbstractVIFXmlType.cs
index 1a890be412..d6170e971d 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/AbstractVIFXmlType.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/AbstractVIFXmlType.cs
@@ -29,19 +29,5 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 			_vifFactory = vifFactory;
 		}
 
-		protected XElement GetSignature(DigestData digestData)
-		{
-			return new XElement(_v20 + XMLNames.DI_Signature,
-				new XElement(_di + XMLNames.DI_Signature_Reference,
-					new XAttribute(XMLNames.DI_Signature_Reference_URI_Attr, digestData.Reference),
-					new XElement(_di + XMLNames.DI_Signature_Reference_Transforms,
-						new XElement(_di + XMLNames.DI_Signature_Reference_Transforms_Transform,
-							new XAttribute(XMLNames.DI_Signature_Algorithm_Attr, digestData.CanonicalizationMethods[0])),
-						new XElement(_di + XMLNames.DI_Signature_Reference_Transforms_Transform,
-							new XAttribute(XMLNames.DI_Signature_Algorithm_Attr, "http://www.w3.org/2001/10/xml-exc-c14n#"))),
-					new XElement(_di + XMLNames.DI_Signature_Reference_DigestMethod,
-						new XAttribute(XMLNames.DI_Signature_Algorithm_Attr, "http://www.w3.org/2001/04/xmlenc#sha256")),
-					new XElement(_di + XMLNames.DI_Signature_Reference_DigestValue, digestData.DigestValue)));
-		}
 	}
 }
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/ComponentGroup.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/ComponentGroup.cs
index 8f5964b301..490b86029c 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/ComponentGroup.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/ComponentGroup.cs
@@ -63,7 +63,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 				_vifReportFactory.GetIepcType().GetElement(inputData),
 				_vifReportFactory.GetAxlegearType().GetElement(inputData),
 				_vifReportFactory.GetAxleWheelsType().GetElement(inputData),
-				_vifReportFactory.GetAuxiliaryType().GetElement(inputData));
+				_vifReportFactory.GetAuxiliaryIEPC_SType().GetElement(inputData));
 		}
 
 		#endregion
@@ -80,10 +80,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 			return new XElement(_vif + XMLNames.Vehicle_Components,
 				new XAttribute(_xsi + XMLNames.XSIType, "Vehicle_HEV-Px_ComponentsVIFType"),
 				_vifReportFactory.GetEngineType().GetElement(inputData),
-				_vifReportFactory.GetIepcType().GetElement(inputData),
-				_vifReportFactory.GetElectricEnergyStorageType().GetElement(inputData),
-				_vifReportFactory.GetElectricMachineGENType().GetElement(inputData),
 				_vifReportFactory.GetElectricMachineType().GetElement(inputData),
+				_vifReportFactory.GetElectricEnergyStorageType().GetElement(inputData),
 				_vifReportFactory.GetTransmissionType().GetElement(inputData),
 				_vifReportFactory.GetTorqueConvertType().GetElement(inputData),
 				_vifReportFactory.GetAngelDriveType().GetElement(inputData),
@@ -237,7 +235,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 		public override XElement GetElement(IDeclarationInputDataProvider inputData)
 		{
 			return new XElement(_vif + XMLNames.Vehicle_Components,
-				new XAttribute(_xsi + XMLNames.XSIType, "Vehicle-IEPC_ComponentsVIFType"),
+				new XAttribute(_xsi + XMLNames.XSIType, "Vehicle_PEV-IEPC_ComponentsVIFType"),
 				_vifReportFactory.GetIepcType().GetElement(inputData),
 				_vifReportFactory.GetElectricEnergyStorageType().GetElement(inputData),
 				_vifReportFactory.GetAxlegearType().GetElement(inputData),
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFAdasType.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFAdasType.cs
index 3499ef6c15..4fe0824f85 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFAdasType.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFAdasType.cs
@@ -76,4 +76,24 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 
 		#endregion
 	}
+
+	public class VIFIEPCAdasType : AbstractVIFXmlType, IVIFFAdasType
+	{
+		public VIFIEPCAdasType(IVIFReportFactory vifFactory) : base(vifFactory) { }
+
+		#region Implementation of IXmlTypeWriter
+
+		public XElement GetXmlType(IAdvancedDriverAssistantSystemDeclarationInputData adas)
+		{
+			if (adas == null)
+				return null;
+
+			return new XElement(_vif + XMLNames.Vehicle_ADAS,
+				new XAttribute("xmlns", _v24),
+				new XAttribute(_xsi + XMLNames.XSIType, "ADAS_IEPC_Type"),
+				new XElement(_v24 + XMLNames.Vehicle_ADAS_PCC, adas.PredictiveCruiseControl.ToXMLFormat()));
+		}
+
+		#endregion
+	}
 }
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFAuxiliaryType.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFAuxiliaryType.cs
index 38b2757721..2c0908c63c 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFAuxiliaryType.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFAuxiliaryType.cs
@@ -21,7 +21,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 		public virtual XElement GetElement(IDeclarationInputDataProvider inputData)
 		{
 			var aux = inputData.JobInputData.Vehicle.Components.BusAuxiliaries;
-			if (aux != null)
+			if (aux == null)
 				return null;
 
 			return new XElement(_vif + XMLNames.Component_Auxiliaries,
@@ -155,7 +155,59 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 		public override XElement GetElement(IDeclarationInputDataProvider inputData)
 		{
 			var aux = inputData.JobInputData.Vehicle.Components.BusAuxiliaries;
-			if (aux != null)
+			if (aux == null)
+				return null;
+
+			return new XElement(_vif + XMLNames.Component_Auxiliaries,
+				new XElement(_vif + XMLNames.ComponentDataWrapper,
+					new XAttribute(_xsi + XMLNames.XSIType, "AUX_HEV-S_PrimaryBusType"),
+					new XElement(_vif + XMLNames.BusAux_Fan,
+						new XElement(_vif + XMLNames.Auxiliaries_Auxiliary_Technology, aux.FanTechnology)),
+					GetSteeringPumpElement(aux.SteeringPumpTechnology),
+					GetElectricSystem(aux.ElectricSupply),
+					GetPneumaticSystem(aux.PneumaticSupply, aux.PneumaticConsumers),
+					GetHvac(aux.HVACAux)
+				));
+		}
+
+
+		protected override XElement GetElectricSystem(IElectricSupplyDeclarationData electricSupply)
+		{
+			return new XElement(_vif + XMLNames.BusAux_ElectricSystem,
+				new XElement(_vif + XMLNames.BusAux_ElectricSystem_AlternatorTechnology,
+					electricSupply.AlternatorTechnology.ToXMLFormat()),
+				new XElement(_vif + XMLNames.BusAux_ElectricSystem_SupplyFromHEVPossible,
+					electricSupply.ESSupplyFromHEVREESS));
+		}
+
+
+		protected override XElement GetPneumaticSystem(IPneumaticSupplyDeclarationData pSupply, IPneumaticConsumersDeclarationData pConsumer)
+		{
+			return new XElement(_vif + XMLNames.BusAux_PneumaticSystem,
+				new XElement(_vif + XMLNames.Bus_SizeOfAirSupply, pSupply.CompressorSize),
+				new XElement(_vif + XMLNames.CompressorDrive, pSupply.CompressorDrive.GetLabel()),
+				new XElement(_vif + XMLNames.Vehicle_Clutch, pSupply.Clutch),
+				new XElement(_vif + XMLNames.Bus_CompressorRatio, pSupply.Ratio.ToXMLFormat(3)),
+				new XElement(_vif + XMLNames.Bus_SmartRegenerationSystem, pSupply.SmartRegeneration),
+				new XElement(_vif + XMLNames.Bus_AirsuspensionControl, GetXMLAirsuspensionControl(pConsumer.AirsuspensionControl)),
+				new XElement(_vif + XMLNames.BusAux_PneumaticSystem_SCRReagentDosing, pConsumer.AdBlueDosing == ConsumerTechnology.Pneumatically)
+			);
+		}
+
+		#endregion
+	}
+
+	public class VIFAuxiliaryIEPC_SType : VIFAuxiliaryType
+	{
+		public VIFAuxiliaryIEPC_SType(IVIFReportFactory vifFactory) : base(vifFactory) { }
+
+
+		#region Overrides of VIFAuxiliaryType
+
+		public override XElement GetElement(IDeclarationInputDataProvider inputData)
+		{
+			var aux = inputData.JobInputData.Vehicle.Components.BusAuxiliaries;
+			if (aux == null)
 				return null;
 
 			return new XElement(_vif + XMLNames.Component_Auxiliaries,
@@ -208,7 +260,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 		{
 
 			var aux = inputData.JobInputData.Vehicle.Components.BusAuxiliaries;
-			if (aux != null)
+			if (aux == null)
 				return null;
 
 			return new XElement(_vif + XMLNames.Component_Auxiliaries,
@@ -254,7 +306,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 		public override XElement GetElement(IDeclarationInputDataProvider inputData)
 		{
 			var aux = inputData.JobInputData.Vehicle.Components.BusAuxiliaries;
-			if (aux != null)
+			if (aux == null)
 				return null;
 
 			return new XElement(_vif + XMLNames.Component_Auxiliaries,
@@ -301,7 +353,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 		{
 
 			var aux = inputData.JobInputData.Vehicle.Components.BusAuxiliaries;
-			if (aux != null)
+			if (aux == null)
 				return null;
 
 			return new XElement(_vif + XMLNames.Component_Auxiliaries,
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFAxleWheelsType.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFAxleWheelsType.cs
index b2d266ac86..f4119fb9f8 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFAxleWheelsType.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFAxleWheelsType.cs
@@ -1,8 +1,12 @@
 using System.Collections.Generic;
 using System.Xml;
 using System.Xml.Linq;
+using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Resources;
+using TUGraz.VectoCommon.Utils;
+using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces;
 using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter;
 
 namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile.VehicleInformationFile_0_1.Components
@@ -16,14 +20,17 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 		public XElement GetElement(IDeclarationInputDataProvider inputData)
 		{
 			var axleWheels = inputData.JobInputData.Vehicle.Components.AxleWheels;
-			if (axleWheels != null)
+			if (axleWheels == null)
 				return null;
 
 			return new XElement(_vif + XMLNames.Component_AxleWheels,
 				new XElement(_vif + XMLNames.ComponentDataWrapper,
-					new XAttribute(_xsi + XMLNames.XSIType, "AxleDataDeclarationType"),
+                    new XAttribute(_xsi + XMLNames.XSIType, "AxleWheelsDataVIFType"),
+                    new XElement(_vif + XMLNames.AxleWheels_Axles,
 						GetAxleData(axleWheels.AxlesDeclaration)
-				));
+					)
+				)
+			);
 		}
 		
 		private List<XElement> GetAxleData(IList<IAxleDeclarationInputData> axleInput)
@@ -34,9 +41,12 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 			foreach (var currentAxle in axleInput) {
 				var axle = new XElement(_vif + XMLNames.AxleWheels_Axles_Axle,
 					new XAttribute(XMLNames.AxleWheels_Axles_Axle_AxleNumber_Attr, axleNumber++),
-					//new XAttribute(XNamespace.Xmlns + "v2.0", _v20),
-					new XAttribute(_xsi + XMLNames.XSIType, "AxleDataDeclarationType"),
-					GetTyre(currentAxle.Tyre));
+                    new XAttribute("xmlns", _v20),
+                    new XAttribute(_xsi + XMLNames.XSIType, "AxleDataDeclarationType"),
+					new XElement(_v20 + XMLNames.AxleWheels_Axles_Axle_AxleType, currentAxle.AxleType.ToXMLFormat()),
+					new XElement(_v20 + XMLNames.AxleWheels_Axles_Axle_TwinTyres, currentAxle.TwinTyres),
+					new XElement(_v20 + XMLNames.AxleWheels_Axles_Axle_Steered, currentAxle.Steered),
+                    GetTyre(currentAxle.Tyre));
 				axles.Add(axle);
 			}
 
@@ -45,24 +55,30 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 
 		private XElement GetTyre(ITyreDeclarationInputData tyre)
 		{
-			var currentTyre = 
-				new XElement(_v20 + XMLNames.ComponentDataWrapper,
-					new XAttribute(_xsi + XMLNames.XSIType, "TyreDataDeclarationType"),
-					new XAttribute("id", tyre.DigestValue.Reference),
-					new XElement(XMLNames.Component_Manufacturer, tyre.Manufacturer),
-					new XElement(XMLNames.Component_Model, tyre.Model),
-					new XElement(XMLNames.Component_CertificationNumber, tyre.CertificationNumber),
-					new XElement(XMLNames.Component_Date, XmlConvert.ToString(tyre.Date, XmlDateTimeSerializationMode.Utc)),
-					new XElement(XMLNames.Component_AppVersion, tyre.Date),
-					new XElement(XMLNames.AxleWheels_Axles_Axle_Dimension, tyre.Dimension),
-					new XElement(XMLNames.AxleWheels_Axles_Axle_RRCDeclared, tyre.RollResistanceCoefficient),
-					new XElement(XMLNames.AxleWheels_Axles_Axle_FzISO, tyre.FuelEfficiencyClass)
-			);
+			var xmlTyre = tyre as IXMLTyreDeclarationInputData;
+			if (xmlTyre == null) {
+				throw new VectoException("Tyre input data must be in XML format");
+			}
 
-			return new XElement(_v20 + XMLNames.AxleWheels_Axles_Axle_Tyre,
-				currentTyre,
-				GetSignature(tyre.DigestValue)
-			);
+			return XElement.Load(xmlTyre.GetXmlNode.CreateNavigator().ReadSubtree());
+			//var currentTyre = 
+			//	new XElement(_v20 + XMLNames.ComponentDataWrapper,
+			//		new XAttribute(_xsi + XMLNames.XSIType, "TyreDataDeclarationType"),
+			//		new XAttribute("id", tyre.DigestValue.Reference),
+			//		new XElement(XMLNames.Component_Manufacturer, tyre.Manufacturer),
+			//		new XElement(XMLNames.Component_Model, tyre.Model),
+			//		new XElement(XMLNames.Component_CertificationNumber, tyre.CertificationNumber),
+			//		new XElement(XMLNames.Component_Date, XmlConvert.ToString(tyre.Date, XmlDateTimeSerializationMode.Utc)),
+			//		new XElement(XMLNames.Component_AppVersion, tyre.Date),
+			//		new XElement(XMLNames.AxleWheels_Axles_Axle_Dimension, tyre.Dimension),
+			//		new XElement(XMLNames.AxleWheels_Axles_Axle_RRCDeclared, tyre.RollResistanceCoefficient.ToXMLFormat(4)),
+			//		new XElement(XMLNames.AxleWheels_Axles_Axle_FzISO, tyre.TyreTestLoad.ToXMLFormat())
+			//);
+
+			//return new XElement(_v20 + XMLNames.AxleWheels_Axles_Axle_Tyre,
+			//	currentTyre,
+			//	GetSignature(tyre.DigestValue)
+			//);
 		}
 		
 		#endregion
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFBoostingLimitationsType.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFBoostingLimitationsType.cs
index 2c67c67ac4..32e286734b 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFBoostingLimitationsType.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFBoostingLimitationsType.cs
@@ -18,7 +18,9 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 			if (boostingLimitations == null)
 				return null;
 			
-			var boostingLimitationsXElement = new XElement(_vif + XMLNames.Vehicle_BoostingLimitation);
+			var boostingLimitationsXElement = new XElement(_vif + XMLNames.Vehicle_BoostingLimitation,
+				new XAttribute(_xsi + XMLNames.XSIType, "BoostingLimitationsType"),
+				new XAttribute("xmlns", _v24.NamespaceName));
 			foreach (DataRow row in boostingLimitations.Rows)
 			{
 				boostingLimitationsXElement.Add(new XElement(_v24 + XMLNames.BoostingLimitation_Entry,
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricEnergyStorageType.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricEnergyStorageType.cs
index 6902eada93..b216b9d2db 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricEnergyStorageType.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricEnergyStorageType.cs
@@ -2,6 +2,7 @@
 using System.Data;
 using System.Xml;
 using System.Xml.Linq;
+using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Resources;
@@ -27,10 +28,10 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 			foreach (var entry in electricStorages) {
 				switch (entry.REESSPack.StorageType) {
 					case REESSType.SuperCap:
-						result.Add(GetCapacitor(entry as ISuperCapDeclarationInputData));
+						result.Add(GetCapacitor(entry));
 						break;
 					case REESSType.Battery:
-						result.Add(GetBattery(entry as IBatteryPackDeclarationInputData, entry.StringId));
+						result.Add(GetBattery(entry));
 						break;
 				}
 			}
@@ -40,46 +41,53 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 
 		#endregion
 
-		private XElement GetCapacitor(ISuperCapDeclarationInputData capacitor)
+		private XElement GetCapacitor(IElectricStorageDeclarationInputData reess)
 		{
-			if(capacitor  == null)
+			if(reess  == null)
 				return null;
 
+			var supercap = reess.REESSPack as ISuperCapDeclarationInputData;
+			if (supercap == null) {
+				throw new VectoException("Electric energy storage of type 'Capacitor' requires capacitor component");
+			}
+
 			return new XElement(_vif + XMLNames.ElectricEnergyStorage_Capacitor,
 					new XElement(_vif + XMLNames.ComponentDataWrapper,
 						new XAttribute(_xsi + XMLNames.XSIType, "CapacitorSystemDataType"),
-						new XAttribute("id", capacitor.DigestValue.Reference),
-					new XElement(_vif + XMLNames.Component_Manufacturer, capacitor.Manufacturer),
-					new XElement(_vif + XMLNames.Component_Model, capacitor.Model), 
-					new XElement(_vif + XMLNames.Report_Component_CertificationNumber, capacitor.CertificationNumber), 
-					new XElement(_vif + XMLNames.Component_Date, XmlConvert.ToString( capacitor.Date, XmlDateTimeSerializationMode.Utc)),
-					new XElement(_vif + XMLNames.Component_AppVersion, capacitor.AppVersion),
-					new XElement(_vif + XMLNames.Component_CertificationMethod, capacitor.CertificationMethod.ToXMLFormat()),
-					new XElement(_vif + XMLNames.Capacitor_Capacitance, capacitor.Capacity.ToXMLFormat(2)),
-					new XElement(_vif + XMLNames.Capacitor_InternalResistance, capacitor.InternalResistance.ToXMLFormat(2)),
-					new XElement(_vif + XMLNames.Capacitor_MinVoltage, capacitor.MinVoltage.ToXMLFormat(2)),
-					new XElement(_vif + XMLNames.Capacitor_MaxVoltage, capacitor.MaxVoltage.ToXMLFormat(2)),
-					new XElement(_vif + XMLNames.Capacitor_MaxChargingCurrent, capacitor.MaxCurrentCharge.ToXMLFormat(2)),
-					new XElement(_vif + XMLNames.Capacitor_MaxDischargingCurrent, capacitor.MaxCurrentDischarge.ToXMLFormat(2)), 
-						capacitor.TestingTemperature == null 
+					new XElement(_vif + XMLNames.Component_Manufacturer, supercap.Manufacturer),
+					new XElement(_vif + XMLNames.Component_Model, supercap.Model), 
+					new XElement(_vif + XMLNames.Report_Component_CertificationNumber, supercap.CertificationNumber), 
+					new XElement(_vif + XMLNames.Component_Date, XmlConvert.ToString(supercap.Date, XmlDateTimeSerializationMode.Utc)),
+					new XElement(_vif + XMLNames.Component_AppVersion, supercap.AppVersion),
+					new XElement(_vif + XMLNames.Component_CertificationMethod, supercap.CertificationMethod.ToXMLFormat()),
+					new XElement(_vif + XMLNames.Capacitor_Capacitance, supercap.Capacity.ToXMLFormat(2)),
+					new XElement(_vif + XMLNames.Capacitor_InternalResistance, supercap.InternalResistance.ToXMLFormat(2)),
+					new XElement(_vif + XMLNames.Capacitor_MinVoltage, supercap.MinVoltage.ToXMLFormat(2)),
+					new XElement(_vif + XMLNames.Capacitor_MaxVoltage, supercap.MaxVoltage.ToXMLFormat(2)),
+					new XElement(_vif + XMLNames.Capacitor_MaxChargingCurrent, supercap.MaxCurrentCharge.ToXMLFormat(2)),
+					new XElement(_vif + XMLNames.Capacitor_MaxDischargingCurrent, supercap.MaxCurrentDischarge.ToXMLFormat(2)),
+						supercap.TestingTemperature == null 
 						? null 
-						: new XElement(_vif + XMLNames.REESS_TestingTemperature, capacitor.TestingTemperature.ToXMLFormat())
+						: new XElement(_vif + XMLNames.REESS_TestingTemperature, supercap.TestingTemperature.AsDegCelsius.ToXMLFormat(0))
 					));
 		}
 
 
-		private  XElement GetBattery(IBatteryPackDeclarationInputData battery, int id)
+		private  XElement GetBattery(IElectricStorageDeclarationInputData reess)
 		{
-			if (battery == null)
+			if (reess == null)
 				return null;
+			var battery = reess.REESSPack as IBatteryPackDeclarationInputData;
+			if (battery == null) {
+				throw new VectoException("Electric energy storage of type 'Battery' requires battery component");
+			}
+
 
 			var result = new XElement(_vif + XMLNames.ElectricEnergyStorage_Battery,
-				new XElement(_vif + XMLNames.Battery_StringID, id),
-				new XElement(_vif + "REESS",
-					GetReess(battery),
-					GetSignature(battery.DigestValue)),
-				battery.MinSOC.HasValue ? null : new XElement(_vif + XMLNames.Battery_SOCmin, battery.MinSOC.Value),
-				battery.MaxSOC.HasValue ? null : new XElement(_vif + XMLNames.Battery_SOCmax, battery.MaxSOC.Value)
+				new XElement(_vif + XMLNames.Battery_StringID, reess.StringId),
+				new XElement(_vif + "REESS", GetReess(battery)),
+				battery.MinSOC.HasValue ? new XElement(_vif + XMLNames.Battery_SOCmin, battery.MinSOC.Value) : null,
+				battery.MaxSOC.HasValue ? new XElement(_vif + XMLNames.Battery_SOCmax, battery.MaxSOC.Value) : null
 			);
 			
 			return result;
@@ -90,7 +98,6 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 		{
 			return new XElement(_vif + XMLNames.ComponentDataWrapper,
 				new XAttribute(_xsi + XMLNames.XSIType, "BatterySystemDataType"),
-				new XAttribute("id", battery.DigestValue.Reference),
 				new XElement(_vif + XMLNames.Component_Manufacturer, battery.Manufacturer),
 				new XElement(_vif + XMLNames.Component_Model, battery.Model),
 				new XElement(_vif + XMLNames.Report_Component_CertificationNumber, battery.CertificationNumber),
@@ -104,11 +111,10 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 				new XElement(_vif + XMLNames.REESS_JunctionboxIncluded, battery.JunctionboxIncluded),
 				battery.TestingTemperature == null
 					? null
-					: new XElement(_vif + XMLNames.REESS_TestingTemperature, battery.TestingTemperature.ToXMLFormat()),
+					: new XElement(_vif + XMLNames.REESS_TestingTemperature, battery.TestingTemperature.AsDegCelsius.ToXMLFormat(0)),
 				GetOcv(battery.VoltageCurve),
-				GetInternalResistance(battery.InternalResistanceCurve),
 				GetCurrentLimits(battery.MaxCurrentMap)
-				);
+			);
 
 		}
 
@@ -127,33 +133,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 			}
 			return new XElement(_vif + XMLNames.REESS_OCV, entries);
 		}
-
-
-		private XElement GetInternalResistance(DataTable internalResistance)
-		{
-			var entries = new List<XElement>();
-
-			foreach (DataRow row in internalResistance.Rows) {
-				var soc = row[XMLNames.REESS_OCV_SoC];
-				var r2 = row[XMLNames.REESS_InternalResistanceCurve_R2].ToString().ToDouble();
-				var r10 = row[XMLNames.REESS_InternalResistanceCurve_R10].ToString().ToDouble();
-				var r20 = row[XMLNames.REESS_InternalResistanceCurve_R20].ToString().ToDouble();
-				var r120 = row[XMLNames.REESS_InternalResistanceCurve_R120].ToString();
-
-				entries.Add(new XElement(_vif + XMLNames.REESS_MapEntry,
-					new XAttribute(XMLNames.REESS_OCV_SoC, soc),
-					new XAttribute(XMLNames.REESS_InternalResistanceCurve_R2, r2.ToXMLFormat(2)),
-					new XAttribute(XMLNames.REESS_InternalResistanceCurve_R10, r10.ToXMLFormat(2)),
-					new XAttribute(XMLNames.REESS_InternalResistanceCurve_R20, r20.ToXMLFormat(2)),
-					r120.IsNullOrEmpty() ?
-						null : new XAttribute(XMLNames.REESS_InternalResistanceCurve_R120, r120.ToDouble().ToXMLFormat(2))
-				));
-			}
-			
-			return new XElement(_vif + XMLNames.REESS_InternalResistanceCurve, entries);
-		}
-
-
+		
 		private XElement GetCurrentLimits(DataTable batteryMaxCurrentMap)
 		{
 			var entries = new List<XElement>();
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricMachineGENType.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricMachineGENType.cs
index bf07afe341..b090d322ef 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricMachineGENType.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricMachineGENType.cs
@@ -57,7 +57,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 					new XAttribute(XMLNames.ADC_TorqueLossMap_InputTorque, inputTorque),
 					new XAttribute(XMLNames.ADC_TorqueLossMap_TorqueLoss, torqueLoss.ToXMLFormat(2))));
 			}
-			
+
 			return new XElement(_vif + XMLNames.Component_ADC,
 				new XElement(_vif + XMLNames.ComponentDataWrapper,
 					new XAttribute(_xsi + XMLNames.XSIType, "ADCDataDeclarationType"),
@@ -70,9 +70,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 					new XElement(_vif + XMLNames.ADC_Ratio, adcData.Ratio.ToXMLFormat(3)),
 					new XElement(_vif + XMLNames.Component_CertificationMethod, adcData.CertificationMethod.ToXMLFormat()),
 					new XElement(_vif + XMLNames.ADC_TorqueLossMap, lossEntries)
-				),
-				GetSignature(adcData.DigestValue)
-				);
+				)
+			);
 		}
 
 
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricMachineSystemMeasuredType.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricMachineSystemMeasuredType.cs
index 4e1aacbb22..74879bb885 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricMachineSystemMeasuredType.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricMachineSystemMeasuredType.cs
@@ -28,7 +28,6 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 			return new XElement(_vif + XMLNames.ElectricMachineSystem,
 				new XElement(_vif + XMLNames.ComponentDataWrapper,
 					new XAttribute(_xsi + XMLNames.XSIType, "ElectricMachineSystemDataDeclarationType"),
-					new XAttribute("id", em.DigestValue.Reference),
 					GetElectricMachineSystemCommon(em),
 					new XElement(_vif + XMLNames.Component_CertificationMethod, em.CertificationMethod.ToXMLFormat()),
 					GetElectricMachineSystemPowerRange(em),
@@ -37,9 +36,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 					GetVoltageLevels(em.VoltageLevels, em.CertificationMethod),
 					GetDragCurve(em.DragCurve),
 					GetConditioning(em.Conditioning)
-				),
-				GetSignature(em.DigestValue)
-				);
+				)
+			);
 		}
 		
 		#endregion
@@ -60,7 +58,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 		protected virtual List<XElement> GetElectricMachineSystemPowerRange(IElectricMotorDeclarationInputData em)
 		{
 			return new List<XElement> {
-				new XElement(_vif + XMLNames.ElectricMachine_R85RatedPower, em.R85RatedPower.ToXMLFormat()),
+				new XElement(_vif + XMLNames.ElectricMachine_R85RatedPower, em.R85RatedPower.ToXMLFormat(0)),
 				new XElement(_vif + XMLNames.ElectricMachine_RotationalInertia, em.Inertia.ToXMLFormat(2))
 			};
 		}
@@ -75,7 +73,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 				var entry = new XElement(_vif + XMLNames.ElectricMachine_VoltageLevel,
 					certificationMethod == CertificationMethod.StandardValues 
 						? null 
-						: new XElement(_vif + XMLNames.VoltageLevel_Voltage, voltageLevel.VoltageLevel.ToXMLFormat()),
+						: new XElement(_vif + XMLNames.VoltageLevel_Voltage, voltageLevel.VoltageLevel.ToXMLFormat(0)),
 					new XElement(_vif + XMLNames.ElectricMachine_ContinuousTorque, voltageLevel.ContinuousTorque.ToXMLFormat(2)),
 					new XElement(_vif + XMLNames.ElectricMachine_TestSpeedContinuousTorque, voltageLevel.ContinuousTorqueSpeed.ToXMLFormat(2)),
 					new XElement(_vif + XMLNames.ElectricMachine_OverloadTorque, voltageLevel.OverloadTorque.ToXMLFormat(2)),
@@ -110,7 +108,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 				maxTorqueCurveEntries.Add(element);
 			}
 
-			return new XElement(XMLNames.MaxTorqueCurve, maxTorqueCurveEntries);
+			return new XElement(_vif + XMLNames.MaxTorqueCurve, maxTorqueCurveEntries);
 		}
 
 
@@ -124,7 +122,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 
 				var entry = new XElement(_vif + XMLNames.DragCurve_Entry,
 					new XAttribute(XMLNames.DragCurve_OutShaftSpeed, outShaftSpeed.ToXMLFormat(2)),
-					new XAttribute(XMLNames.DragCurve_DragTorque, dragTorque));
+					new XAttribute(XMLNames.DragCurve_DragTorque, dragTorque.ToXMLFormat(2)));
 
 				entries.Add(entry);
 			}
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricMachineType.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricMachineType.cs
index 71770a0b23..8b15519253 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricMachineType.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricMachineType.cs
@@ -31,7 +31,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 		
 		private XElement GetElectricMachineType(ElectricMachineEntry<IElectricMotorDeclarationInputData> electricMachineData)
 		{
-			return new XElement(_vif + XMLNames.ElectricMachineSystem,
+			return new XElement(_vif + XMLNames.Component_ElectricMachine,
 				new XElement(_vif + XMLNames.ElectricMachine_Count, electricMachineData.Count),
 				_vifFactory.GetElectricMachineSystemType().GetElement(electricMachineData.ElectricMachine),
 				Get25GearRatio(electricMachineData.RatioPerGear),
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricMotorTorqueLimitsType.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricMotorTorqueLimitsType.cs
index a267ce88d6..e7e4fc4ac4 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricMotorTorqueLimitsType.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFElectricMotorTorqueLimitsType.cs
@@ -27,7 +27,13 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 					GetVoltageLevels(entry.Value)));
 			}
 
-			return new XElement(_vif + XMLNames.ElectricMotorTorqueLimits, electricMachine);
+			var xmlType = inputData.JobInputData.Vehicle.VehicleType == VectoSimulationJobType.SerialHybridVehicle
+				? "ElectricMachineTorqueLimitsSerialHybridType"
+				: "ElectricMachineTorqueLimitsType";
+			return new XElement(_vif + XMLNames.ElectricMotorTorqueLimits,
+				new XAttribute(_xsi + XMLNames.XSIType, xmlType),
+				new XAttribute("xmlns", _v24),
+				electricMachine);
 		}
 
 		private  List<XElement> GetVoltageLevels(List<Tuple<Volt, TableData>> voltageLevels)
@@ -54,7 +60,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 				}
 				
 				voltageEntries.Add( new XElement(_v24 + XMLNames.ElectricMachine_VoltageLevel, 
-					new XElement(_v24 + XMLNames.VoltageLevel_Voltage, voltage.ToXMLFormat()),
+					new XElement(_v24 + XMLNames.VoltageLevel_Voltage, voltage.ToXMLFormat(0)),
 					new XElement(_v24 + XMLNames.MaxTorqueCurve, maxTorqueCurveEntries)));
 
 			}
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFIepcType.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFIepcType.cs
index 3ce438c3d9..9000b5e845 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFIepcType.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFIepcType.cs
@@ -2,11 +2,14 @@
 using System.Data;
 using System.Xml;
 using System.Xml.Linq;
+using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Resources;
 using TUGraz.VectoCommon.Utils;
+using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider;
 using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter;
+using TUGraz.VectoCore.Utils;
 
 namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile.VehicleInformationFile_0_1.Components
 {
@@ -22,6 +25,14 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 			if (iepc == null)
 				return null;
 
+			var xmlIepc = iepc as AbstractCommonComponentType;
+			if (xmlIepc == null) {
+				throw new VectoException("IEPC requires input to be in XML format");
+			}
+
+			var certificationMethod = xmlIepc.XMLSource
+				.SelectSingleNode(XMLHelper.QueryLocalName(XMLNames.Component_CertificationMethod))?.InnerText;
+
 			return new XElement(_vif + XMLNames.Component_IEPC,
 					new XElement(_vif + XMLNames.ComponentDataWrapper,
 						new XAttribute(_xsi + XMLNames.XSIType, "IEPCMeasuredDataDeclarationType"),
@@ -31,8 +42,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 						new XElement(_vif + XMLNames.Component_Date, XmlConvert.ToString(iepc.Date, XmlDateTimeSerializationMode.Utc)),
 						new XElement(_vif + XMLNames.Component_AppVersion, iepc.AppVersion),
 						new XElement(_vif + XMLNames.ElectricMachine_ElectricMachineType, iepc.ElectricMachineType.ToString()),
-						new XElement(_vif + XMLNames.Component_CertificationMethod, iepc.CertificationMethod.ToXMLFormat()),
-						new XElement(_vif + XMLNames.ElectricMachine_R85RatedPower, iepc.R85RatedPower.ToXMLFormat()),
+						new XElement(_vif + XMLNames.Component_CertificationMethod, certificationMethod),
+						new XElement(_vif + XMLNames.ElectricMachine_R85RatedPower, iepc.R85RatedPower.ToXMLFormat(0)),
 						new XElement(_vif + XMLNames.ElectricMachine_RotationalInertia, iepc.Inertia.ToXMLFormat(2)),
 						new XElement(_vif + XMLNames.IEPC_DifferentialIncluded, iepc.DifferentialIncluded),
 						new XElement(_vif + XMLNames.IEPC_DesignTypeWheelMotor, iepc.DesignTypeWheelMotor),
@@ -43,8 +54,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 						GetVoltageLevels(iepc.VoltageLevels),
 						GetDragCurves(iepc.DragCurves),
 						GetConditioning(iepc.Conditioning)
-					),
-					GetSignature(iepc.DigestValue)
+					)
 			);
 		}
 		
@@ -59,19 +69,21 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 
 				var currentGear = new XElement(_vif + XMLNames.Gear_EntryName,
 					new XAttribute("number", gearEntry.GearNumber.ToString()),
-					new XElement(_vif + XMLNames.GearRatio_Ratio, gearEntry.Ratio.ToXMLFormat(3),
+					new XElement(_vif + XMLNames.GearRatio_Ratio, gearEntry.Ratio.ToXMLFormat(3)),
 					gearEntry.MaxOutputShaftTorque == null 
 						? null
-						: new XElement(_vif + XMLNames.Gear_MaxOutputShaftTorque, gearEntry.MaxOutputShaftTorque.ToXMLFormat()),
+						: new XElement(_vif + XMLNames.Gear_MaxOutputShaftTorque, gearEntry.MaxOutputShaftTorque.ToXMLFormat(0)),
 
 					gearEntry.MaxOutputShaftSpeed == null 
 						? null 
-						: new XElement(_vif + XMLNames.Gear_MaxOutputShaftSpeed, gearEntry.MaxOutputShaftSpeed.ToXMLFormat()))
+						: new XElement(_vif + XMLNames.Gear_MaxOutputShaftSpeed, gearEntry.MaxOutputShaftSpeed.AsRPM.ToXMLFormat(0))
 					);
 				gears.Add(currentGear);
 			}
 			
-			return new XElement(_vif + XMLNames.Gearbox_Gears, gears);
+			return new XElement(_vif + XMLNames.Gearbox_Gears, 
+				new XAttribute(_xsi + XMLNames.XSIType, "IEPCGearsDeclarationType"),
+				gears);
 		}
 
 
@@ -82,7 +94,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 			foreach (var voltageEntry in voltageData) {
 
 				var voltage = new XElement(_vif + XMLNames.ElectricMachine_VoltageLevel,
-					new XElement(_vif + XMLNames.VoltageLevel_Voltage, voltageEntry.VoltageLevel.ToXMLFormat()),
+					new XElement(_vif + XMLNames.VoltageLevel_Voltage, voltageEntry.VoltageLevel.ToXMLFormat(0)),
 					new XElement(_vif + XMLNames.ElectricMachine_ContinuousTorque, voltageEntry.ContinuousTorque.ToXMLFormat(2)),
 					new XElement(_vif + XMLNames.ElectricMachine_TestSpeedContinuousTorque, voltageEntry.ContinuousTorqueSpeed.ToXMLFormat(2)),
 					new XElement(_vif + XMLNames.ElectricMachine_OverloadTorque, voltageEntry.OverloadTorque.ToXMLFormat(2)),
@@ -118,7 +130,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 				maxTorqueCurveEntries.Add(element);
 			}
 
-			return new XElement(XMLNames.MaxTorqueCurve, maxTorqueCurveEntries);
+			return new XElement(_vif + XMLNames.MaxTorqueCurve, maxTorqueCurveEntries);
 		}
 		
 		private List<XElement> GetPowerMap(IList<IElectricMotorPowerMap> powerMapData)
@@ -141,7 +153,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 				}
 
 				var powerEntry = new XElement(_vif + XMLNames.PowerMap,
-					new XAttribute(XMLNames.Gear_GearNumber_Attr, powerMapEntry.Gear),
+					new XAttribute("gear", powerMapEntry.Gear),
 					entries);
 
 				powerMaps.Add(powerEntry);
@@ -162,7 +174,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 
 					var entry = new XElement(_vif + XMLNames.DragCurve_Entry,
 						new XAttribute(XMLNames.DragCurve_OutShaftSpeed, outShaftSpeed.ToXMLFormat(2)),
-						new XAttribute(XMLNames.DragCurve_DragTorque, dragTorque));
+						new XAttribute(XMLNames.DragCurve_DragTorque, dragTorque.ToXMLFormat(2)));
 
 					entries.Add(entry);
 				}
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFTorqueConverterType.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFTorqueConverterType.cs
index 552e9eae4f..3b175196b5 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFTorqueConverterType.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFTorqueConverterType.cs
@@ -22,20 +22,23 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 			var torque = inputData.JobInputData.Vehicle.Components.TorqueConverterInputData;
 			if (torque == null)
 				return null;
-			
+
 			return new XElement(_vif + XMLNames.Component_TorqueConverter,
-					new XElement(_vif + XMLNames.ComponentDataWrapper,
+				new XElement(_vif + XMLNames.ComponentDataWrapper,
 					new XAttribute(_xsi + XMLNames.XSIType, "TorqueConverterDataVIFType"),
-					_vif + XMLNames.Component_Manufacturer, torque.Manufacturer,
-					_vif + XMLNames.Component_Model, torque.Model,
-					_vif + XMLNames.Component_CertificationMethod, torque.CertificationMethod.ToXMLFormat(),
+					new XElement(_vif + XMLNames.Component_Manufacturer, torque.Manufacturer),
+					new XElement(_vif + XMLNames.Component_Model, torque.Model),
+					new XElement(_vif + XMLNames.Component_CertificationMethod,
+						torque.CertificationMethod.ToXMLFormat()),
 					torque.CertificationMethod == CertificationMethod.StandardValues
 						? null
-						: new XElement(_vif + XMLNames.Report_Component_CertificationNumber, torque.CertificationNumber),
-					_vif + XMLNames.Component_Date, XmlConvert.ToString(torque.Date, XmlDateTimeSerializationMode.Utc),
-					_vif + XMLNames.Component_AppVersion, torque.AppVersion,
+						: new XElement(_vif + XMLNames.Report_Component_CertificationNumber,
+							torque.CertificationNumber),
+					new XElement(_vif + XMLNames.Component_Date,
+						XmlConvert.ToString(torque.Date, XmlDateTimeSerializationMode.Utc)),
+					new XElement(_vif + XMLNames.Component_AppVersion, torque.AppVersion),
 					GetCharacteristics(torque.TCData)
-					));
+				));
 		}
 
 
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/IVIFReportFactory.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/IVIFReportFactory.cs
index 428f981960..05ef87e541 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/IVIFReportFactory.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/IVIFReportFactory.cs
@@ -25,6 +25,10 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 		IXmlTypeWriter GetPevE3VehicleType();
 		IXmlTypeWriter GetPevE4VehicleType();
 
+		IXmlTypeWriter GetPevIEPCVehicleType();
+
+		IXmlTypeWriter GetExemptedVehicleType();
+
 
 		#endregion
 
@@ -39,7 +43,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 		IXmlTypeWriter GetPevE2ComponentVIFType();
 		IXmlTypeWriter GetPevE3ComponentVIFType();
 		IXmlTypeWriter GetPevE4ComponentVIFType();
-		IXmlTypeWriter GetIepcComponentVIFType();
+		IXmlTypeWriter GetPevIEPCComponentVIFType();
 
 		#endregion
 
@@ -49,10 +53,14 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 		IVIFFAdasType GetConventionalADASType();
 		IVIFFAdasType GetHEVADASType();
 		IVIFFAdasType GetPEVADASType();
+		IVIFFAdasType GetIEPCADASType();
 
 		IXmlTypeWriter GetAngelDriveType();
 		IXmlTypeWriter GetAuxiliaryType();
 		IXmlTypeWriter GetAuxiliaryHevSType();
+
+		IXmlTypeWriter GetAuxiliaryIEPC_SType();
+
 		IXmlTypeWriter GetAuxiliaryHevPType();
 		IXmlTypeWriter GetAuxiliaryIEPCType();
 		IXmlTypeWriter GetAuxiliaryPEVType();
@@ -85,6 +93,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 		IReportOutputGroup GetHevSxVehicleParameterGroup();
 		IReportOutputGroup GetIepcVehicleParameterGroup();
 		IReportOutputGroup GetPevExVehicleParmeterGroup();
+		IReportOutputGroup GetPevIEPCVehicleParmeterGroup();
 		IReportOutputGroup GetHevPxVehicleParameterGroup();
 
 		#endregion
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VIFNinjectModule.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VIFNinjectModule.cs
index 00b5149586..93847c2dd6 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VIFNinjectModule.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VIFNinjectModule.cs
@@ -31,9 +31,87 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 					false,
 					false)));
 
+			Bind<IXMLVehicleInformationFile>().To<HEV_Px_PrimaryBus_VIF>().Named(nameCombinationMethod.Invoke(
+				ToParams(VehicleCategoryHelper.PrimaryBus,
+					VectoSimulationJobType.ParallelHybridVehicle,
+					ArchitectureID.UNKNOWN,
+					false,
+					false,
+					false)));
+
+			Bind<IXMLVehicleInformationFile>().To<HEV_S2_PrimaryBus_VIF>().Named(nameCombinationMethod.Invoke(
+				ToParams(VehicleCategoryHelper.PrimaryBus,
+					VectoSimulationJobType.SerialHybridVehicle,
+					ArchitectureID.S2,
+					false,
+					false,
+					false)));
+
+			Bind<IXMLVehicleInformationFile>().To<HEV_S3_PrimaryBus_VIF>().Named(nameCombinationMethod.Invoke(
+				ToParams(VehicleCategoryHelper.PrimaryBus,
+					VectoSimulationJobType.SerialHybridVehicle,
+					ArchitectureID.S3,
+					false,
+					false,
+					false)));
+			Bind<IXMLVehicleInformationFile>().To<HEV_S4_PrimaryBus_VIF>().Named(nameCombinationMethod.Invoke(
+				ToParams(VehicleCategoryHelper.PrimaryBus,
+					VectoSimulationJobType.SerialHybridVehicle,
+					ArchitectureID.S4,
+					false,
+					false,
+					false)));
+
+			Bind<IXMLVehicleInformationFile>().To<HEV_IEPC_S_PrimaryBus_VIF>().Named(nameCombinationMethod.Invoke(
+				ToParams(VehicleCategoryHelper.PrimaryBus,
+					VectoSimulationJobType.SerialHybridVehicle,
+					ArchitectureID.S_IEPC,
+					false,
+					true,
+					false)));
+
+			Bind<IXMLVehicleInformationFile>().To<PEV_E2_PrimaryBus_VIF>().Named(nameCombinationMethod.Invoke(
+				ToParams(VehicleCategoryHelper.PrimaryBus,
+					VectoSimulationJobType.BatteryElectricVehicle,
+					ArchitectureID.E2,
+					false,
+					false,
+					false)));
+
+			Bind<IXMLVehicleInformationFile>().To<PEV_E3_PrimaryBus_VIF>().Named(nameCombinationMethod.Invoke(
+				ToParams(VehicleCategoryHelper.PrimaryBus,
+					VectoSimulationJobType.BatteryElectricVehicle,
+					ArchitectureID.E3,
+					false,
+					false,
+					false)));
+
+			Bind<IXMLVehicleInformationFile>().To<PEV_E4_PrimaryBus_VIF>().Named(nameCombinationMethod.Invoke(
+				ToParams(VehicleCategoryHelper.PrimaryBus,
+					VectoSimulationJobType.BatteryElectricVehicle,
+					ArchitectureID.E4,
+					false,
+					false,
+					false)));
+
+			Bind<IXMLVehicleInformationFile>().To<PEV_IEPC_PrimaryBus_VIF>().Named(nameCombinationMethod.Invoke(
+				ToParams(VehicleCategoryHelper.PrimaryBus,
+					VectoSimulationJobType.BatteryElectricVehicle,
+					ArchitectureID.E_IEPC,
+					false,
+					true,
+					false)));
+
+			Bind<IXMLVehicleInformationFile>().To<Exempted_PrimaryBus_VIF>().Named(nameCombinationMethod.Invoke(
+				ToParams(VehicleCategoryHelper.PrimaryBus,
+					VectoSimulationJobType.ConventionalVehicle,
+					ArchitectureID.UNKNOWN,
+					true,
+					false,
+					false)));
 
 			#region VehicleTypes
-			
+
 			Bind<IXmlTypeWriter>().To<ConventionalVehicleType>().When(AccessedViaVIFFactory)
 				.NamedLikeFactoryMethod((IVIFReportFactory f) => f.GetConventionalVehicleType());
 
@@ -64,6 +142,9 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 			Bind<IXmlTypeWriter>().To<PevE4VehicleType>().When(AccessedViaVIFFactory)
 				.NamedLikeFactoryMethod((IVIFReportFactory f) => f.GetPevE4VehicleType());
 
+			Bind<IXmlTypeWriter>().To<PevIEPCVehicleType>().When(AccessedViaVIFFactory)
+				.NamedLikeFactoryMethod((IVIFReportFactory f) => f.GetPevIEPCVehicleType());
+
 			#endregion
 
 
@@ -97,7 +178,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 				.NamedLikeFactoryMethod((IVIFReportFactory f) => f.GetPevE4ComponentVIFType());
 
 			Bind<IXmlTypeWriter>().To<IepcComponentVIFType>().When(AccessedViaVIFFactory)
-				.NamedLikeFactoryMethod((IVIFReportFactory f) => f.GetIepcComponentVIFType());
+				.NamedLikeFactoryMethod((IVIFReportFactory f) => f.GetPevIEPCComponentVIFType());
 
 			#endregion
 
@@ -129,7 +210,10 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 
 			Bind<IReportOutputGroup>().To<PevExVehicleParameterGroup>().When(AccessedViaVIFFactory)
 				.NamedLikeFactoryMethod((IVIFReportFactory f) => f.GetPevExVehicleParmeterGroup());
-
+			
+			Bind<IReportOutputGroup>().To<PevIEPCVehicleParameterGroup>().When(AccessedViaVIFFactory)
+				.NamedLikeFactoryMethod((IVIFReportFactory f) => f.GetPevIEPCVehicleParmeterGroup());
+			
 			Bind<IReportOutputGroup>().To<HevPxVehicleParameterGroup>().When(AccessedViaVIFFactory)
 				.NamedLikeFactoryMethod((IVIFReportFactory f) => f.GetHevPxVehicleParameterGroup());
 
@@ -147,6 +231,9 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 			Bind<IVIFFAdasType>().To<VIFPEVAdasType>().When(AccessedViaVIFFactory)
 				.NamedLikeFactoryMethod((IVIFReportFactory f) => f.GetPEVADASType());
 
+			Bind<IVIFFAdasType>().To<VIFIEPCAdasType>().When(AccessedViaVIFFactory)
+				.NamedLikeFactoryMethod((IVIFReportFactory f) => f.GetIEPCADASType());
+
 			Bind<IXmlTypeWriter>().To<VIFAngleDriveType>().When(AccessedViaVIFFactory)
 				.NamedLikeFactoryMethod((IVIFReportFactory f) => f.GetAngelDriveType());
 
@@ -156,6 +243,9 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 			Bind<IXmlTypeWriter>().To<VIFAuxiliaryHevSType>().When(AccessedViaVIFFactory)
 				.NamedLikeFactoryMethod((IVIFReportFactory f) => f.GetAuxiliaryHevSType());
 
+			Bind<IXmlTypeWriter>().To<VIFAuxiliaryIEPC_SType>().When(AccessedViaVIFFactory)
+				.NamedLikeFactoryMethod((IVIFReportFactory f) => f.GetAuxiliaryIEPC_SType());
+
 			Bind<IXmlTypeWriter>().To<VIFAuxiliaryHevPType>().When(AccessedViaVIFFactory)
 				.NamedLikeFactoryMethod((IVIFReportFactory f) => f.GetAuxiliaryHevPType());
 
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VehicleInformationFile/VehicleInformationFile.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VehicleInformationFile/VehicleInformationFile.cs
index 25c5ce35c5..821164202c 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VehicleInformationFile/VehicleInformationFile.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VehicleInformationFile/VehicleInformationFile.cs
@@ -7,7 +7,7 @@ using TUGraz.VectoCommon.InputData;
 
 namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile.VehicleInformationFile_0_1.VIFReport
 {
-	internal class VehicleInformationFile : AbstractVehicleInformationFile
+	internal abstract class VehicleInformationFile : AbstractVehicleInformationFile
 	{
 		private string _outputDataType;
 
@@ -20,18 +20,118 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 
 		public override string OutputDataType => _outputDataType;
 
+		
+
+		#endregion
+	}
+
+	internal class Conventional_PrimaryBus_VIF : VehicleInformationFile
+	{
+		public Conventional_PrimaryBus_VIF(IVIFReportFactory vifFactory) : base(vifFactory) { }
+
 		public override void InitializeVehicleData(IDeclarationInputDataProvider inputData)
 		{
 			Vehicle = _vifFactory.GetConventionalVehicleType().GetElement(inputData);
 		}
+	}
 
-		#endregion
+	internal class HEV_Px_PrimaryBus_VIF : VehicleInformationFile
+	{
+		public HEV_Px_PrimaryBus_VIF(IVIFReportFactory vifFactory) : base(vifFactory) { }
+
+		public override void InitializeVehicleData(IDeclarationInputDataProvider inputData)
+		{
+			Vehicle = _vifFactory.GetHevPxVehicleType().GetElement(inputData);
+		}
 	}
 
-	internal class Conventional_PrimaryBus_VIF : VehicleInformationFile
+	internal class HEV_S2_PrimaryBus_VIF : VehicleInformationFile
 	{
-		public Conventional_PrimaryBus_VIF(IVIFReportFactory vifFactory) : base(vifFactory) { }
+		public HEV_S2_PrimaryBus_VIF(IVIFReportFactory vifFactory) : base(vifFactory) { }
+
+		public override void InitializeVehicleData(IDeclarationInputDataProvider inputData)
+		{
+			Vehicle = _vifFactory.GetHevS2VehicleType().GetElement(inputData);
+		}
+	}
+
+	internal class HEV_S3_PrimaryBus_VIF : VehicleInformationFile
+	{
+		public HEV_S3_PrimaryBus_VIF(IVIFReportFactory vifFactory) : base(vifFactory) { }
+
+		public override void InitializeVehicleData(IDeclarationInputDataProvider inputData)
+		{
+			Vehicle = _vifFactory.GetHevS3VehicleType().GetElement(inputData);
+		}
 	}
 
+	internal class HEV_S4_PrimaryBus_VIF : VehicleInformationFile
+	{
+		public HEV_S4_PrimaryBus_VIF(IVIFReportFactory vifFactory) : base(vifFactory) { }
 
+		public override void InitializeVehicleData(IDeclarationInputDataProvider inputData)
+		{
+			Vehicle = _vifFactory.GetHevS4VehicleType().GetElement(inputData);
+		}
+	}
+
+	internal class HEV_IEPC_S_PrimaryBus_VIF : VehicleInformationFile
+	{
+		public HEV_IEPC_S_PrimaryBus_VIF(IVIFReportFactory vifFactory) : base(vifFactory) { }
+
+		public override void InitializeVehicleData(IDeclarationInputDataProvider inputData)
+		{
+			Vehicle = _vifFactory.GetHevIepcSVehicleType().GetElement(inputData);
+		}
+	}
+
+	internal class PEV_E2_PrimaryBus_VIF : VehicleInformationFile
+	{
+		public PEV_E2_PrimaryBus_VIF(IVIFReportFactory vifFactory) : base(vifFactory) { }
+
+		public override void InitializeVehicleData(IDeclarationInputDataProvider inputData)
+		{
+			Vehicle = _vifFactory.GetPevE2VehicleType().GetElement(inputData);
+		}
+	}
+
+	internal class PEV_E3_PrimaryBus_VIF : VehicleInformationFile
+	{
+		public PEV_E3_PrimaryBus_VIF(IVIFReportFactory vifFactory) : base(vifFactory) { }
+
+		public override void InitializeVehicleData(IDeclarationInputDataProvider inputData)
+		{
+			Vehicle = _vifFactory.GetPevE3VehicleType().GetElement(inputData);
+		}
+	}
+
+	internal class PEV_E4_PrimaryBus_VIF : VehicleInformationFile
+	{
+		public PEV_E4_PrimaryBus_VIF(IVIFReportFactory vifFactory) : base(vifFactory) { }
+
+		public override void InitializeVehicleData(IDeclarationInputDataProvider inputData)
+		{
+			Vehicle = _vifFactory.GetPevE4VehicleType().GetElement(inputData);
+		}
+	}
+
+	internal class PEV_IEPC_PrimaryBus_VIF : VehicleInformationFile
+	{
+		public PEV_IEPC_PrimaryBus_VIF(IVIFReportFactory vifFactory) : base(vifFactory) { }
+
+		public override void InitializeVehicleData(IDeclarationInputDataProvider inputData)
+		{
+			Vehicle = _vifFactory.GetPevIEPCVehicleType().GetElement(inputData);
+		}
+	}
+
+	internal class Exempted_PrimaryBus_VIF : VehicleInformationFile
+	{
+		public Exempted_PrimaryBus_VIF(IVIFReportFactory vifFactory) : base(vifFactory) { }
+
+		public override void InitializeVehicleData(IDeclarationInputDataProvider inputData)
+		{
+			Vehicle = _vifFactory.GetExemptedVehicleType().GetElement(inputData);
+		}
+	}
 }
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VehicleParameterGroup.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VehicleParameterGroup.cs
index 7b0859b1c6..74e32ed277 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VehicleParameterGroup.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VehicleParameterGroup.cs
@@ -50,7 +50,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 				new XElement(_vif + XMLNames.ChassisConfiguration, vehicle.VehicleCategory.ToXMLFormat()),
 				new XElement(_vif + XMLNames.Vehicle_AxleConfiguration, vehicle.AxleConfiguration.ToXMLFormat()),
 				new XElement(_vif + XMLNames.Vehicle_Articulated, vehicle.Articulated),
-				new XElement(_vif + XMLNames.TPMLM, vehicle.GrossVehicleMassRating.ToXMLFormat()),
+				new XElement(_vif + XMLNames.TPMLM, vehicle.GrossVehicleMassRating.ToXMLFormat(0)),
 			};
 
 			return result;
@@ -71,7 +71,9 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 			var result = new List<XElement>
 			{
 				new XElement(_vif + XMLNames.Vehicle_RetarderType, vehicle.Components.RetarderInputData.Type.ToXMLFormat()),
-				new XElement(_vif + XMLNames.Vehicle_RetarderRatio, vehicle.Components.RetarderInputData?.Ratio.ToXMLFormat(3)),
+				vehicle.Components.RetarderInputData.Type.IsDedicatedComponent()
+					? new XElement(_vif + XMLNames.Vehicle_RetarderRatio, vehicle.Components.RetarderInputData?.Ratio.ToXMLFormat(3))
+					: null,
 			};
 			return result;
 		}
@@ -89,10 +91,11 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 		{
 			var vehicle = inputData.JobInputData.Vehicle;
 
-			var result = new List<XElement>
-			{
-				new XElement(_vif + XMLNames.Vehicle_OvcHev, vehicle.Components.RetarderInputData.Type.ToXMLFormat()),
-				new XElement(_vif + XMLNames.Vehicle_RetarderRatio, vehicle.Components.RetarderInputData?.Ratio.ToXMLFormat(3)),
+			var result = new List<XElement> {
+				new XElement(_vif + XMLNames.Vehicle_OvcHev, vehicle.OvcHev),
+				vehicle.OvcHev
+					? new XElement(_vif + XMLNames.Vehicle_MaxChargingPower, vehicle.MaxChargingPower.ToXMLFormat(0))
+					: null,
 			};
 			return result;
 		}
@@ -124,7 +127,9 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 				new XElement(_vif + XMLNames.TPMLM, vehicle.GrossVehicleMassRating.ToXMLFormat(0)),
 				new XElement(_vif + XMLNames.Vehicle_IdlingSpeed, vehicle.EngineIdleSpeed.AsRPM.ToXMLFormat(0)),
 				new XElement(_vif + XMLNames.Vehicle_RetarderType, vehicle.Components.RetarderInputData.Type.ToXMLFormat()),
-				new XElement(_vif + XMLNames.Vehicle_RetarderRatio, vehicle.Components.RetarderInputData.Ratio.ToXMLFormat(3)),
+				vehicle.Components.RetarderInputData.Type.IsDedicatedComponent()
+					? new XElement(_vif + XMLNames.Vehicle_RetarderRatio, vehicle.Components.RetarderInputData?.Ratio.ToXMLFormat(3))
+					: null,
 				new XElement(_vif + XMLNames.Vehicle_AngledriveType, vehicle.Components.AngledriveInputData.Type.ToXMLFormat()),
 				new XElement(_vif + XMLNames.Vehicle_ZeroEmissionVehicle, vehicle.ZeroEmissionVehicle),
 				_vifReportFactory.GetConventionalADASType().GetXmlType(inputData.JobInputData.Vehicle.ADAS),
@@ -152,9 +157,9 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 			var result = new List<XElement>();
 			result.AddRange(_vifReportFactory.GetPrimaryBusGeneralParameterGroup().GetElements(inputData));
 			result.AddRange(_vifReportFactory.GetPrimaryBusChassisParameterGroup().GetElements(inputData));
-			result.Add(new XElement(_vif + XMLNames.Vehicle_IdlingSpeed, vehicle.EngineIdleSpeed.ToXMLFormat()));
+			result.Add(new XElement(_vif + XMLNames.Vehicle_IdlingSpeed, vehicle.EngineIdleSpeed.AsRPM.ToXMLFormat(0)));
 			result.AddRange(_vifReportFactory.GetPrimaryBusRetarderParameterGroup().GetElements(inputData));
-			result.Add(new XElement(_vif + XMLNames.Vehicle_AngledriveType, vehicle.Components.AngledriveInputData.Type.ToXMLFormat()));
+			result.Add(new XElement(_vif + XMLNames.Vehicle_AngledriveType, (vehicle.Components.AngledriveInputData?.Type ?? AngledriveType.None).ToXMLFormat()));
 			result.Add(new XElement(_vif + XMLNames.Vehicle_ZeroEmissionVehicle, vehicle.ZeroEmissionVehicle));
 			result.Add(new XElement(_vif + XMLNames.Vehicle_ArchitectureID, vehicle.ArchitectureID.GetLabel()));
 			result.AddRange(_vifReportFactory.GetPrimaryBusXevParameterGroup().GetElements(inputData));
@@ -182,9 +187,9 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 			var result = new List<XElement>();
 			result.AddRange(_vifReportFactory.GetPrimaryBusGeneralParameterGroup().GetElements(inputData));
 			result.AddRange(_vifReportFactory.GetPrimaryBusChassisParameterGroup().GetElements(inputData));
-			result.Add(new XElement(_vif + XMLNames.Vehicle_IdlingSpeed, vehicle.EngineIdleSpeed.ToXMLFormat()));
+			result.Add(new XElement(_vif + XMLNames.Vehicle_IdlingSpeed, vehicle.EngineIdleSpeed.AsRPM.ToXMLFormat(0)));
 			result.AddRange(_vifReportFactory.GetPrimaryBusRetarderParameterGroup().GetElements(inputData));
-			result.Add(new XElement(_vif + XMLNames.Vehicle_AngledriveType, vehicle.Components.AngledriveInputData.Type.ToXMLFormat()));
+			result.Add(new XElement(_vif + XMLNames.Vehicle_AngledriveType, (vehicle.Components.AngledriveInputData?.Type ?? AngledriveType.None).ToXMLFormat()));
 			result.Add(new XElement(_vif + XMLNames.Vehicle_ZeroEmissionVehicle, vehicle.ZeroEmissionVehicle));
 			result.Add(new XElement(_vif + XMLNames.Vehicle_ArchitectureID, vehicle.ArchitectureID.GetLabel()));
 			result.AddRange(_vifReportFactory.GetPrimaryBusXevParameterGroup().GetElements(inputData));
@@ -239,7 +244,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 			result.AddRange(_vifReportFactory.GetPrimaryBusGeneralParameterGroup().GetElements(inputData));
 			result.AddRange(_vifReportFactory.GetPrimaryBusChassisParameterGroup().GetElements(inputData));
 			result.AddRange(_vifReportFactory.GetPrimaryBusRetarderParameterGroup().GetElements(inputData));
-			result.Add(new XElement(_vif + XMLNames.Vehicle_AngledriveType, vehicle.Components.AngledriveInputData.Type.ToXMLFormat()));
+			result.Add(new XElement(_vif + XMLNames.Vehicle_AngledriveType, (vehicle.Components.AngledriveInputData?.Type ?? AngledriveType.None).ToXMLFormat()));
 			result.Add(new XElement(_vif + XMLNames.Vehicle_ZeroEmissionVehicle, vehicle.ZeroEmissionVehicle));
 			result.Add(new XElement(_vif + XMLNames.Vehicle_ArchitectureID, vehicle.ArchitectureID.GetLabel()));
 			result.AddRange(_vifReportFactory.GetPrimaryBusXevParameterGroup().GetElements(inputData));
@@ -254,6 +259,35 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 		#endregion
 	}
 
+	public class PevIEPCVehicleParameterGroup : AbstractVIFGroupWriter
+	{
+		public PevIEPCVehicleParameterGroup(IVIFReportFactory vifReportFactory) : base(vifReportFactory) { }
+
+		#region Overrides of AbstractVIFGroupWriter
+
+		public override IList<XElement> GetElements(IDeclarationInputDataProvider inputData)
+		{
+			var vehicle = inputData.JobInputData.Vehicle;
+
+			var result = new List<XElement>();
+			result.AddRange(_vifReportFactory.GetPrimaryBusGeneralParameterGroup().GetElements(inputData));
+			result.AddRange(_vifReportFactory.GetPrimaryBusChassisParameterGroup().GetElements(inputData));
+			result.AddRange(_vifReportFactory.GetPrimaryBusRetarderParameterGroup().GetElements(inputData));
+			result.Add(new XElement(_vif + XMLNames.Vehicle_AngledriveType, (vehicle.Components.AngledriveInputData?.Type ?? AngledriveType.None).ToXMLFormat()));
+			result.Add(new XElement(_vif + XMLNames.Vehicle_ZeroEmissionVehicle, vehicle.ZeroEmissionVehicle));
+			result.Add(new XElement(_vif + XMLNames.Vehicle_ArchitectureID, vehicle.ArchitectureID.GetLabel()));
+			result.AddRange(_vifReportFactory.GetPrimaryBusXevParameterGroup().GetElements(inputData));
+			result.Add(_vifReportFactory.GetIEPCADASType().GetXmlType(inputData.JobInputData.Vehicle.ADAS));
+			var motorTorqueLimits = _vifReportFactory.GetElectricMotorTorqueLimitsType().GetElement(inputData);
+			if (motorTorqueLimits != null)
+				result.Add(motorTorqueLimits);
+
+			return result;
+		}
+
+		#endregion
+	}
+
 	public class HevPxVehicleParameterGroup : AbstractVIFGroupWriter
 	{
 		public HevPxVehicleParameterGroup(IVIFReportFactory vifReportFactory) : base(vifReportFactory) { }
@@ -268,7 +302,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 
 			result.AddRange(_vifReportFactory.GetPrimaryBusGeneralParameterGroup().GetElements(inputData));
 			result.AddRange(_vifReportFactory.GetPrimaryBusChassisParameterGroup().GetElements(inputData));
-			result.Add(new XElement(_vif + XMLNames.Vehicle_IdlingSpeed, vehicle.EngineIdleSpeed.ToXMLFormat()));
+			result.Add(new XElement(_vif + XMLNames.Vehicle_IdlingSpeed, vehicle.EngineIdleSpeed.AsRPM.ToXMLFormat(0)));
 			result.AddRange(_vifReportFactory.GetPrimaryBusRetarderParameterGroup().GetElements(inputData));
 			result.Add(new XElement(_vif + XMLNames.Vehicle_AngledriveType, vehicle.Components.AngledriveInputData.Type.ToXMLFormat()));
 			result.Add(new XElement(_vif + XMLNames.Vehicle_ZeroEmissionVehicle, vehicle.ZeroEmissionVehicle));
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VehicleWriter.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VehicleWriter.cs
index 13ee86f729..30566013c1 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VehicleWriter.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VehicleWriter.cs
@@ -156,7 +156,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 		public override XElement GetElement(IDeclarationInputDataProvider inputData)
 		{
 			var vehicleData = _vifReportFactory.GetIepcVehicleParameterGroup().GetElements(inputData);
-			vehicleData.Add(_vifReportFactory.GetIepcComponentVIFType().GetElement(inputData));
+			vehicleData.Add(_vifReportFactory.GetPevIEPCComponentVIFType().GetElement(inputData));
 
 			return new XElement(_vif + XMLNames.Component_Vehicle,
 				new XAttribute(_xsi + XMLNames.XSIType, "IEPC_VehicleVIFType"),
@@ -223,4 +223,23 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 
 		#endregion
 	}
+
+	public class PevIEPCVehicleType : VehicleWriter
+	{
+		public PevIEPCVehicleType(IVIFReportFactory vifReportFactory) : base(vifReportFactory) { }
+
+		#region Overrides of VehicleWriter
+
+		public override XElement GetElement(IDeclarationInputDataProvider inputData)
+		{
+			var vehicleData = _vifReportFactory.GetPevIEPCVehicleParmeterGroup().GetElements(inputData);
+			vehicleData.Add(_vifReportFactory.GetPevIEPCComponentVIFType().GetElement(inputData));
+
+			return new XElement(_vif + XMLNames.Component_Vehicle,
+				new XAttribute(_xsi + XMLNames.XSIType, "IEPC_VehicleVIFType"),
+				vehicleData);
+		}
+
+		#endregion
+	}
 }
diff --git a/VectoCore/VectoCore/Resources/XSD/VectoOutputMultistep.0.1.xsd b/VectoCore/VectoCore/Resources/XSD/VectoOutputMultistep.0.1.xsd
index ee8c7ab04e..75df0c239a 100644
--- a/VectoCore/VectoCore/Resources/XSD/VectoOutputMultistep.0.1.xsd
+++ b/VectoCore/VectoCore/Resources/XSD/VectoOutputMultistep.0.1.xsd
@@ -178,16 +178,8 @@
 			<xs:extension base="vif:AbstractREESSDataType"/>
 		</xs:complexContent>
 	</xs:complexType>
-	<xs:complexType name="AbstractCapacitorSystemDataType" abstract="true">
-		<xs:complexContent>
-			<xs:extension base="vif:AbstractREESSDataType"/>
-		</xs:complexContent>
-	</xs:complexType>
-	<xs:complexType name="AbstractElectricMachineSystemDataType" abstract="true">
-		<xs:complexContent>
-			<xs:extension base="v1.0:VectoSimulationComponent"/>
-		</xs:complexContent>
-	</xs:complexType>
+	<xs:complexType name="AbstractCapacitorSystemDataType" abstract="true"/>
+	<xs:complexType name="AbstractElectricMachineSystemDataType" abstract="true"/>
 	<xs:complexType name="AbstractElectricMachineSystemVoltageLevelType" abstract="true"/>
 	<xs:complexType name="AbstractEngineDataVIFType" abstract="true"/>
 	<xs:complexType name="AbstractIEPCGearsDeclarationType" abstract="true"/>
@@ -195,11 +187,7 @@
 		<xs:attribute name="id" type="xs:NCName" use="required"/>
 	</xs:complexType>
 	<xs:complexType name="AbstractPrimaryVehicleType" abstract="true"/>
-	<xs:complexType name="AbstractREESSDataType" abstract="true">
-		<xs:complexContent>
-			<xs:extension base="v1.0:VectoSimulationComponent"/>
-		</xs:complexContent>
-	</xs:complexType>
+	<xs:complexType name="AbstractREESSDataType" abstract="true"/>
 	<xs:complexType name="AbstractTorqueConverterDataVIFType" abstract="true"/>
 	<xs:complexType name="AbstractTransmissionDataVIFType" abstract="true"/>
 	<xs:complexType name="AbstractTransmissionGearsVIFType" abstract="true"/>
@@ -1020,13 +1008,6 @@
 							</xs:sequence>
 						</xs:complexType>
 					</xs:element>
-					<xs:element name="InternalResistance">
-						<xs:complexType>
-							<xs:sequence>
-								<xs:element name="Entry" type="vif:BatterySystemInternalResistanceEntryType" minOccurs="2" maxOccurs="unbounded"/>
-							</xs:sequence>
-						</xs:complexType>
-					</xs:element>
 					<xs:element name="CurrentLimits">
 						<xs:complexType>
 							<xs:sequence>
@@ -1448,7 +1429,6 @@
 	<xs:complexType name="ElectricMachineSystemComponentDeclarationType">
 		<xs:sequence>
 			<xs:element name="Data" type="vif:AbstractElectricMachineSystemDataType"/>
-			<xs:element name="Signature" type="v2.0:SignatureType"/>
 		</xs:sequence>
 	</xs:complexType>
 	<xs:complexType name="ElectricMachineSystemMaxTorqueCurveType">
@@ -1500,7 +1480,7 @@
 							</xs:restriction>
 						</xs:simpleType>
 					</xs:element>
-					<xs:element name="VoltageLevel" type="vif:ElectricMachineSystemVoltageLevelMeasuredType" minOccurs="2" maxOccurs="unbounded"/>
+					<xs:element name="VoltageLevel" type="vif:ElectricMachineSystemVoltageLevelMeasuredType" maxOccurs="unbounded"/>
 					<xs:element name="DragCurve">
 						<xs:complexType>
 							<xs:sequence>
@@ -1847,7 +1827,7 @@
 						</xs:annotation>
 					</xs:element>
 					<xs:group ref="vif:Vehicle_PrimaryBus_Retarder_ParametersSequenceGroup"/>
-					<xs:element name="AngledriveType" type="v1.0:AngledriveTypeType">
+					<xs:element name="AngledriveType" type="v1.0:AngledriveTypeType" minOccurs="0">
 						<xs:annotation>
 							<xs:documentation>P180 - enum</xs:documentation>
 						</xs:annotation>
@@ -2099,7 +2079,6 @@
 	<xs:complexType name="IEPCType">
 		<xs:sequence>
 			<xs:element name="Data" type="vif:AbstractVIFIEPCDataType"/>
-			<xs:element name="Signature" type="v2.0:SignatureType"/>
 		</xs:sequence>
 	</xs:complexType>
 	<xs:complexType name="ManufacturingStepType">
@@ -2202,7 +2181,6 @@
 				<xs:complexType>
 					<xs:sequence>
 						<xs:element name="Data" type="vif:AbstractBatterySystemDataType"/>
-						<xs:element name="Signature" type="v2.0:SignatureType"/>
 					</xs:sequence>
 				</xs:complexType>
 			</xs:element>
@@ -2235,7 +2213,6 @@
 	<xs:complexType name="REESSCapacitorType">
 		<xs:sequence>
 			<xs:element name="Data" type="vif:AbstractCapacitorSystemDataType"/>
-			<xs:element name="Signature" type="v2.0:SignatureType"/>
 		</xs:sequence>
 	</xs:complexType>
 	<xs:complexType name="ResultPrimaryVehicleType">
@@ -2486,10 +2463,8 @@
 			<xs:extension base="vif:AbstractVehicleComponentsHEV_Px_VIFType">
 				<xs:sequence>
 					<xs:element name="Engine" type="vif:EngineComponentVIFType"/>
-					<xs:element name="IEPC" type="vif:IEPCType"/>
-					<xs:element name="ElectricEnergyStorage" type="vif:ElectricEnergyStorageType"/>
-					<xs:element name="ElectricMachineGEN" type="vif:ElectricMachineGENType"/>
 					<xs:element name="ElectricMachine" type="vif:ElectricMachineType"/>
+					<xs:element name="ElectricEnergyStorage" type="vif:ElectricEnergyStorageType"/>
 					<xs:element name="Transmission" type="vif:TransmissionComponentVIFType"/>
 					<xs:element name="TorqueConverter" type="vif:TorqueConverterVIFType" minOccurs="0"/>
 					<xs:element name="Angledrive" type="vif:AngledriveVIFType" minOccurs="0"/>
@@ -2576,6 +2551,19 @@
 			</xs:extension>
 		</xs:complexContent>
 	</xs:complexType>
+	<xs:complexType name="Vehicle_PEV-IEPC_ComponentsVIFType">
+		<xs:complexContent>
+			<xs:extension base="vif:AbstractVehicleComponentsIEPC_VIFType">
+				<xs:sequence>
+					<xs:element name="IEPC" type="vif:IEPCType"/>
+					<xs:element name="ElectricEnergyStorage" type="vif:ElectricEnergyStorageType"/>
+					<xs:element name="Axlegear" type="vif:AxlegearComponentVIFType" minOccurs="0"/>
+					<xs:element name="AxleWheels" type="vif:AxleWheelsComponentVIFType"/>
+					<xs:element name="Auxiliaries" type="vif:IEPC_PrimaryAuxiliairesVIFType"/>
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
 	<xs:complexType name="VehicleExemptedPrimaryBusType">
 		<xs:complexContent>
 			<xs:extension base="vif:AbstractPrimaryVehicleType">
@@ -2672,19 +2660,6 @@
 			</xs:extension>
 		</xs:complexContent>
 	</xs:complexType>
-	<xs:complexType name="Vehicle-IEPC_ComponentsVIFType">
-		<xs:complexContent>
-			<xs:extension base="vif:AbstractVehicleComponentsIEPC_VIFType">
-				<xs:sequence>
-					<xs:element name="IEPC" type="vif:IEPCType"/>
-					<xs:element name="ElectricEnergyStorage" type="vif:ElectricEnergyStorageType"/>
-					<xs:element name="Axlegear" type="vif:AxlegearComponentVIFType" minOccurs="0"/>
-					<xs:element name="AxleWheels" type="vif:AxleWheelsComponentVIFType"/>
-					<xs:element name="Auxiliaries" type="vif:IEPC_PrimaryAuxiliairesVIFType"/>
-				</xs:sequence>
-			</xs:extension>
-		</xs:complexContent>
-	</xs:complexType>
 	<xs:simpleType name="CO2UnitType">
 		<xs:restriction base="xs:string">
 			<xs:enumeration value="g/km"/>
diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.4/Distributed/PrimaryBus/Conventional_primaryBus_AMT_DifferentTyres.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.4/Distributed/PrimaryBus/Conventional_primaryBus_AMT_DifferentTyres.xml
new file mode 100644
index 0000000000..78174a72be
--- /dev/null
+++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.4/Distributed/PrimaryBus/Conventional_primaryBus_AMT_DifferentTyres.xml
@@ -0,0 +1,362 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd">
+	<v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Conventional_PrimaryBusDeclarationType">
+		<Manufacturer>Generic Truck Manufacturer</Manufacturer>
+		<ManufacturerAddress>Street, ZIP City</ManufacturerAddress>
+		<Model>Generic Model</Model>
+		<VIN>VEH-1234567890</VIN>
+		<Date>2017-02-15T11:00:00Z</Date>
+		<LegislativeCategory>M3</LegislativeCategory>
+		<ChassisConfiguration>Bus</ChassisConfiguration>
+		<AxleConfiguration>4x2</AxleConfiguration>
+		<Articulated>false</Articulated>
+		<TechnicalPermissibleMaximumLadenMass>25000</TechnicalPermissibleMaximumLadenMass>
+		<IdlingSpeed>600</IdlingSpeed>
+		<RetarderType>Transmission Output Retarder</RetarderType>
+		<RetarderRatio>1.000</RetarderRatio>
+		<AngledriveType>None</AngledriveType>
+		<ZeroEmissionVehicle>false</ZeroEmissionVehicle>
+		<ADAS xsi:type="ADAS_Conventional_Type">
+			<EngineStopStart>false</EngineStopStart>
+			<EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop>
+			<EcoRollWithEngineStop>false</EcoRollWithEngineStop>
+			<PredictiveCruiseControl>none</PredictiveCruiseControl>
+		</ADAS>
+		<TorqueLimits xsi:type="v2.0:TorqueLimitsType"><!-- optional -->
+			<v2.0:Entry gear="6" maxTorque="1800"/>
+			<v2.0:Entry gear="1" maxTorque="2500"/>
+			<v2.0:Entry gear="12" maxTorque="1900"/>
+		</TorqueLimits>
+		<Components xsi:type="Components_Conventional_PrimaryBusType">
+			<Engine xsi:type="v2.0:EngineComponentDeclarationType">
+				<v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0">
+					<Manufacturer>Generic Engine Manufacturer</Manufacturer>
+					<Model>Generic 40t Long Haul Truck Engine</Model>
+					<CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber>
+					<Date>2017-02-15T11:00:00Z</Date>
+					<AppVersion>VectoEngine x.y</AppVersion>
+					<Displacement>12730</Displacement>
+					<IdlingSpeed>560</IdlingSpeed>
+					<RatedSpeed>2200</RatedSpeed>
+					<RatedPower>380000</RatedPower>
+					<MaxEngineTorque>2300</MaxEngineTorque>
+					<WHTCUrban>1.0097</WHTCUrban>
+					<WHTCRural>1.0035</WHTCRural>
+					<WHTCMotorway>1.0200</WHTCMotorway>
+					<BFColdHot>1.0000</BFColdHot>
+					<CFRegPer>1.0000</CFRegPer>
+					<CFNCV>1.0000</CFNCV>
+					<FuelType>NG</FuelType>
+					<FuelConsumptionMap>
+						<Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/>
+						<Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/>
+						<Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/>
+						<Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/>
+					</FuelConsumptionMap>
+					<FullLoadAndDragCurve>
+						<Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/>
+						<Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/>
+						<Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/>
+					</FullLoadAndDragCurve>
+				</v2.0:Data>
+				<v2.0:Signature>
+					<di:Reference URI="#ENG-gooZah3D">
+						<di:Transforms>
+							<di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/>
+							<di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
+						</di:Transforms>
+						<di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
+						<di:DigestValue>/qqS7iMvDm0MYurhsIRZTF5FeS+MNA2HnoS1P8SrSdA=</di:DigestValue>
+					</di:Reference>
+				</v2.0:Signature>
+			</Engine>
+			<Gearbox xsi:type="v2.0:GearboxComponentDeclarationType">
+				<v2.0:Data id="gbx-vi2Oak2N" xsi:type="v2.0:GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0">
+					<Manufacturer>Generic Gearbox Manufacturer</Manufacturer>
+					<Model>Generic 40t Long Haul Truck Gearbox</Model>
+					<CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber>
+					<Date>2017-01-11T11:00:00Z</Date>
+					<AppVersion>3.0.1</AppVersion>
+					<TransmissionType>AMT</TransmissionType>
+					<MainCertificationMethod>Standard values</MainCertificationMethod>
+					<Gears xsi:type="GearsDeclarationType">
+						<Gear number="1">
+							<Ratio>14.930</Ratio>
+							<MaxTorque>1900</MaxTorque>
+							<MaxSpeed>2000</MaxSpeed>
+							<TorqueLossMap>
+								<Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/>
+								<Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/>
+								<Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/>
+								<Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/>
+								<Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/>
+								<Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/>
+							</TorqueLossMap>
+						</Gear>
+						<Gear number="2">
+							<Ratio>11.640</Ratio>
+							<MaxTorque>1900</MaxTorque>
+							<MaxSpeed>2000</MaxSpeed>
+							<TorqueLossMap>
+								<Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/>
+								<Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/>
+								<Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/>
+								<Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/>
+								<Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/>
+								<Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/>
+							</TorqueLossMap>
+						</Gear>
+					</Gears>
+				</v2.0:Data>
+				<v2.0:Signature>
+					<di:Reference URI="#gbx-vi2Oak2N">
+						<di:Transforms>
+							<di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/>
+							<di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
+						</di:Transforms>
+						<di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
+						<di:DigestValue>8fsWE1AvinkI5UcWuU/vyx3X2kKjarP/qPC+Uon+aBE=</di:DigestValue>
+					</di:Reference>
+				</v2.0:Signature>
+			</Gearbox>
+			<TorqueConverter><!-- optional -->
+				<v2.0:Data id="tc-123xyz" xsi:type="v2.0:TorqueConverterDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0">
+					<Manufacturer>Some Manufacturer</Manufacturer>
+					<Model>Some Model</Model>
+					<CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber>
+					<Date>2017-02-15T11:00:00Z</Date>
+					<AppVersion>TC CalcApp 123</AppVersion>
+					<CertificationMethod>Standard values</CertificationMethod>
+					<Characteristics>
+						<Entry speedRatio="0.0000" torqueRatio="1.00" inputTorqueRef="300.00"/>
+						<Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/>
+						<Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/>
+					</Characteristics>
+				</v2.0:Data>
+				<v2.0:Signature>
+					<di:Reference URI="#tc-123xyz">
+						<di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
+						<di:DigestValue>BpqbVEM5dAFXyIeZfvKBUhv+Oj4OU5R85aK9M4ylV+4=</di:DigestValue>
+					</di:Reference>
+				</v2.0:Signature>
+			</TorqueConverter>
+			<Angledrive><!-- optional -->
+				<v2.0:Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0">
+					<Manufacturer>Generic Gearbox Manufacturer</Manufacturer>
+					<Model>Generic 40t Long Haul Truck Gearbox</Model>
+					<CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber>
+					<Date>2017-01-11T11:00:00Z</Date>
+					<AppVersion>3.0.1</AppVersion>
+					<Ratio>2.345</Ratio>
+					<CertificationMethod>Standard values</CertificationMethod>
+					<TorqueLossMap>
+						<Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="100.00"/>
+						<Entry inputSpeed="1000.00" inputTorque="-1000.00" torqueLoss="100.00"/>
+						<Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="10.00"/>
+						<Entry inputSpeed="1000.00" inputTorque="0.00" torqueLoss="10.00"/>
+						<Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="100.00"/>
+						<Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/>
+					</TorqueLossMap>
+				</v2.0:Data>
+				<v2.0:Signature>
+					<di:Reference URI="#agl-vi2Oak2N">
+						<di:Transforms>
+							<di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/>
+							<di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
+						</di:Transforms>
+						<di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
+						<di:DigestValue>iVRxT+wETVrlCQhZMsiqRC1mKcw3a3KSeb1y5uhINQk=</di:DigestValue>
+					</di:Reference>
+				</v2.0:Signature>
+			</Angledrive>
+			<Retarder><!-- optional -->
+				<v2.0:Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0">
+					<Manufacturer>Generic Retarder Manufacturer</Manufacturer>
+					<Model>Generic Retarder</Model>
+					<CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber>
+					<Date>2017-01-11T11:00:00Z</Date>
+					<AppVersion>3.0.1</AppVersion>
+					<CertificationMethod>Standard values</CertificationMethod>
+					<RetarderLossMap>
+						<Entry retarderSpeed="0.00" torqueLoss="10.00"/>
+						<Entry retarderSpeed="2300.00" torqueLoss="20.58"/>
+					</RetarderLossMap>
+				</v2.0:Data>
+				<v2.0:Signature>
+					<di:Reference URI="#RET-Shai9imi">
+						<di:Transforms>
+							<di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/>
+							<di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
+						</di:Transforms>
+						<di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
+						<di:DigestValue>xcfok6Uo1kvFefSRo+W/oMfEfS5BdTklBugAjby2DUQ=</di:DigestValue>
+					</di:Reference>
+				</v2.0:Signature>
+			</Retarder>
+			<Axlegear>
+				<v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0">
+					<Manufacturer>Generic Gearbox Manufacturer</Manufacturer>
+					<Model>Generic 40t Long Haul Truck AxleGear</Model>
+					<CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber>
+					<Date>2017-01-11T11:00:00Z</Date>
+					<AppVersion>3.0.1</AppVersion>
+					<LineType>Single portal axle</LineType>
+					<Ratio>2.590</Ratio>
+					<CertificationMethod>Standard values</CertificationMethod>
+					<TorqueLossMap>
+						<Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/>
+						<Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/>
+						<Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/>
+						<Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/>
+						<Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/>
+						<Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/>
+					</TorqueLossMap>
+				</v2.0:Data>
+				<v2.0:Signature>
+					<di:Reference URI="#AXL-EC3ohnoh">
+						<di:Transforms>
+							<di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/>
+							<di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
+						</di:Transforms>
+						<di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
+						<di:DigestValue>Ux2vo+s07pGr9XCbvNs/YbJcFaZClORRGXpP6Eyeze8=</di:DigestValue>
+					</di:Reference>
+				</v2.0:Signature>
+			</Axlegear>
+			<AxleWheels>
+				<Data xsi:type="AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0">
+					<Axles>
+						<Axle axleNumber="1" xsi:type="AxleDataDeclarationType">
+							<AxleType>VehicleNonDriven</AxleType>
+							<TwinTyres>false</TwinTyres>
+							<Steered>true</Steered>
+							<Tyre>
+								<v2.0:Data id="WHL-5432198760-315-70-R22.5" xsi:type="TyreDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0">
+									<Manufacturer>Generic Wheels Manufacturer</Manufacturer>
+									<Model>Generic Wheel</Model>
+									<CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber>
+									<Date>2017-01-11T14:00:00Z</Date>
+									<AppVersion>Tyre Generation App 1.0</AppVersion>
+									<Dimension>315/70 R22.5</Dimension>
+									<RRCDeclared>0.0055</RRCDeclared>
+									<FzISO>31300</FzISO>
+								</v2.0:Data>
+								<Signature>
+									<di:Reference URI="#WHL-5432198760-315-70-R22.5">
+										<di:Transforms>
+											<di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/>
+											<di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
+										</di:Transforms>
+										<di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
+										<di:DigestValue>A/sq1ng4cqeOyauDUqUEnonRSPch3VCqZDX9Pf3tW1Q=</di:DigestValue>
+									</di:Reference>
+								</Signature>
+							</Tyre>
+						</Axle>
+						<Axle axleNumber="2" xsi:type="AxleDataDeclarationType">
+							<AxleType>VehicleDriven</AxleType>
+							<TwinTyres>true</TwinTyres>
+							<Steered>false</Steered>
+							<Tyre>
+								<Data id="WHL-5432198760-315-70-R22.5" xsi:type="TyreDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0">
+									<Manufacturer>Generic Wheels Manufacturer</Manufacturer>
+									<Model>Generic Wheel</Model>
+									<CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber>
+									<Date>2017-01-11T14:00:00Z</Date>
+									<AppVersion>Tyre Generation App 1.0</AppVersion>
+									<Dimension>315/70 R22.5</Dimension>
+									<RRCDeclared>0.0063</RRCDeclared>
+									<FzISO>31300</FzISO>
+								</Data>
+								<Signature>
+									<di:Reference URI="#WHL-5432198760-315-70-R22.5">
+										<di:Transforms>
+											<di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/>
+											<di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
+										</di:Transforms>
+										<di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
+										<di:DigestValue>z+KDXmc5MIezM6RVgfYax5J9Efi0ghciG2/wLLmWaBk=</di:DigestValue>
+									</di:Reference>
+								</Signature>
+							</Tyre>
+						</Axle>
+						<Axle axleNumber="3" xsi:type="AxleDataDeclarationType">
+							<AxleType>VehicleDriven</AxleType>
+							<TwinTyres>true</TwinTyres>
+							<Steered>false</Steered>
+							<Tyre>
+								<v2.0:Data id="WHL-5432198760-315-70-R22.5" xsi:type="TyreDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3">
+									<Manufacturer>Generic Wheels Manufacturer</Manufacturer>
+									<Model>Generic Wheel</Model>
+									<CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber>
+									<Date>2017-01-11T14:00:00Z</Date>
+									<AppVersion>Tyre Generation App 1.0</AppVersion>
+									<Dimension>315/70 R22.5</Dimension>
+									<TyreClass>C1</TyreClass>
+									<FuelEfficiencyClass>A</FuelEfficiencyClass>
+									<RRCDeclared>0.0063</RRCDeclared>
+									<FzISO>31300</FzISO>
+								</v2.0:Data>
+								<Signature>
+									<di:Reference URI="#WHL-5432198760-315-70-R22.5">
+										<di:Transforms>
+											<di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/>
+											<di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
+										</di:Transforms>
+										<di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
+										<di:DigestValue>z+KDXmc5MIezM6RVgfYax5J9Efi0ghciG2/wLLmWaBk=</di:DigestValue>
+									</di:Reference>
+								</Signature>
+							</Tyre>
+						</Axle>
+					</Axles>
+				</Data>
+			</AxleWheels>
+			<Auxiliaries>
+				<Data xsi:type="AUX_Conventional_PrimaryBusType">
+					<Fan>
+						<Technology>Hydraulic driven - Constant displacement pump</Technology>
+					</Fan>
+					<SteeringPump>
+						<Technology axleNumber="1">Variable displacement elec. controlled</Technology>
+					</SteeringPump>
+					<ElectricSystem>
+						<AlternatorTechnology>conventional</AlternatorTechnology>
+						<SmartAlternator><!-- optional -->
+							<RatedCurrent>100</RatedCurrent>
+							<RatedVoltage>48</RatedVoltage>
+						</SmartAlternator>
+						<SmartAlternator><!-- optional -->
+							<RatedCurrent>50</RatedCurrent>
+							<RatedVoltage>48</RatedVoltage>
+						</SmartAlternator>
+						<Battery><!-- optional -->
+							<BatteryTechnology>li-ion battery - high power</BatteryTechnology>
+							<RatedCapacity>50</RatedCapacity>
+							<NominalVoltage>48</NominalVoltage>
+						</Battery>
+						<Capacitor><!-- optional -->
+							<CapacitorTechnology>with DCDC converter</CapacitorTechnology>
+							<RatedCapacitance>120</RatedCapacitance>
+							<RatedVoltage>30</RatedVoltage>
+						</Capacitor>
+					</ElectricSystem>
+					<PneumaticSystem>
+						<SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply>
+						<CompressorDrive>mechanically</CompressorDrive>
+						<Clutch>none</Clutch>
+						<CompressorRatio>1.000</CompressorRatio>
+						<SmartCompressionSystem>false</SmartCompressionSystem>
+						<SmartRegenerationSystem>false</SmartRegenerationSystem>
+						<AirsuspensionControl>electronically</AirsuspensionControl>
+						<PneumaticSCRReagentDosing>true</PneumaticSCRReagentDosing>
+					</PneumaticSystem>
+					<HVAC>
+						<AdjustableCoolantThermostat>true</AdjustableCoolantThermostat>
+						<EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger>
+					</HVAC>
+				</Data>
+			</Auxiliaries>
+		</Components>
+	</v2.0:Vehicle>
+</tns:VectoInputDeclaration>
diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/exempted_completed.VIF_Report_2.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/exempted_completed.VIF_Report_2.xml
index ac99245ae3..51e8fe3a5a 100644
--- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/exempted_completed.VIF_Report_2.xml
+++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/exempted_completed.VIF_Report_2.xml
@@ -86,7 +86,7 @@
         <BodyworkCode>CE</BodyworkCode>
         <LowEntry>true</LowEntry>
         <HeightIntegratedBody>2000</HeightIntegratedBody>
-      </vif0.1:Vehicle>
+	</vif0.1:Vehicle>
       <ApplicationInformation>
         <SimulationToolVersion>0.7.5.2380-DEV</SimulationToolVersion>
         <Date>2021-08-24T09:29:02.5917498Z</Date>
diff --git a/VectoCore/VectoCoreTest/XML/Reports/CustomerInformationFileWriterTest.cs b/VectoCore/VectoCoreTest/XML/Reports/CustomerInformationFileWriterTest.cs
index 3336dd40e4..838196ad09 100644
--- a/VectoCore/VectoCoreTest/XML/Reports/CustomerInformationFileWriterTest.cs
+++ b/VectoCore/VectoCoreTest/XML/Reports/CustomerInformationFileWriterTest.cs
@@ -4,14 +4,15 @@ using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using System.Xml.Linq;
-using System.Xml.XPath;
 using NUnit.Framework;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
-using TUGraz.VectoCommon.Resources;
+using TUGraz.VectoCommon.Utils;
+using TUGraz.VectoCore.OutputData.XML;
 using TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile;
 using TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile.CustomerInformationFile_0_9.CustomerInformationFile;
 using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport;
+using TUGraz.VectoCore.Utils;
 
 namespace TUGraz.VectoCore.Tests.XML.Reports
 {
@@ -44,14 +45,15 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
 	out IMultistageBusInputDataProvider dataProvider)
 		{
 			Assert.IsFalse(string.IsNullOrEmpty(fileName));
-			dataProvider = _xmlReader.CreateDeclaration(fileName) as IMultistageBusInputDataProvider;
+			var tmp = _xmlReader.CreateDeclaration(fileName);
+			dataProvider = tmp as IMultistageBusInputDataProvider;
 
 			var arch = dataProvider.JobInputData.PrimaryVehicle.Vehicle.ArchitectureID;
 
 			dataProvider.JobInputData.PrimaryVehicle.Vehicle.VehicleCategory.GetVehicleType(); // HEV/PEV - Sx/Px
-			var ihpc = (dataProvider.JobInputData.PrimaryVehicle.Vehicle.Components.ElectricMachines?.Entries)?.Count(electric =>
+			var ihpc = (dataProvider.JobInputData.PrimaryVehicle.Vehicle.Components?.ElectricMachines?.Entries)?.Count(electric =>
 				electric.ElectricMachine.IHPCType != "None") > 0;
-			var iepc = (dataProvider.JobInputData.PrimaryVehicle.Vehicle.Components.IEPC != null);
+			var iepc = (dataProvider.JobInputData.PrimaryVehicle.Vehicle.Components?.IEPC != null);
 			var report = _cifFactory.GetCustomerReport(
 				dataProvider.JobInputData.ConsolidateManufacturingStage.Vehicle.VehicleCategory,
 				dataProvider.JobInputData.JobType,
@@ -69,23 +71,21 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
 			var report = GetCustomerReport(fileName, out var dataProvider) as ConventionalLorry_CIF;
 			Assert.NotNull(report);
 			report.InitializeVehicleData(dataProvider);
+			report.GenerateReport(XMLHelper.CreateDummySig(XNamespace.Get("http://www.w3.org/2000/09/xmldsig#")));
 
-			report.GenerateReport(new XElement("Signature", "Dummy"));
-
-			Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']"))));
+			Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.CustomerReport));
 			Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report));
 		}
 
-
 		[TestCase(HEV_Px_HeavyLorry)]
 		public void HEV_Px_IHPC_LorryCIFTest(string fileName)
 		{
 			var report = GetCustomerReport(fileName, out var dataProvider) as HEV_PxLorry_CIF;
 			Assert.NotNull(report);
 			report.InitializeVehicleData(dataProvider);
-			report.GenerateReport(new XElement("Signature", "Dummy"));
+			report.GenerateReport(XMLHelper.CreateDummySig(XNamespace.Get("http://www.w3.org/2000/09/xmldsig#")));
 
-			Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']"))));
+			Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.CustomerReport));
 			Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report));
 		}
 
@@ -96,9 +96,9 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
 			Assert.NotNull(report);
 			report.InitializeVehicleData(dataProvider);
 
-			report.GenerateReport(new XElement("Signature", "Dummy"));
+			report.GenerateReport(XMLHelper.CreateDummySig(XNamespace.Get("http://www.w3.org/2000/09/xmldsig#")));
 
-			Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']")))); Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report));
+			Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.CustomerReport)); Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report));
 		}
 
 
@@ -109,9 +109,9 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
 			Assert.NotNull(report);
 			report.InitializeVehicleData(dataProvider);
 
-			report.GenerateReport(new XElement("Signature", "Dummy"));
+			report.GenerateReport(XMLHelper.CreateDummySig(XNamespace.Get("http://www.w3.org/2000/09/xmldsig#")));
 
-			Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']"))));
+			Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.CustomerReport));
 			Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report));
 		}
 
@@ -124,9 +124,9 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
 			Assert.NotNull(report);
 			report.InitializeVehicleData(dataProvider);
 
-			report.GenerateReport(new XElement("Signature", "Dummy"));
+			report.GenerateReport(XMLHelper.CreateDummySig(XNamespace.Get("http://www.w3.org/2000/09/xmldsig#")));
 
-			Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']"))));
+			Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.CustomerReport));
 			Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report));
 		}
 
@@ -137,9 +137,9 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
 			Assert.NotNull(report);
 			report.InitializeVehicleData(dataProvider);
 
-			report.GenerateReport(new XElement("Signature", "Dummy"));
+			report.GenerateReport(XMLHelper.CreateDummySig(XNamespace.Get("http://www.w3.org/2000/09/xmldsig#")));
 
-			Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']"))));
+			Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.CustomerReport));
 			Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report));
 		}
 
@@ -150,9 +150,9 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
 			Assert.NotNull(report);
 			report.InitializeVehicleData(dataProvider);
 
-			report.GenerateReport(new XElement("Signature", "Dummy"));
+			report.GenerateReport(XMLHelper.CreateDummySig(XNamespace.Get("http://www.w3.org/2000/09/xmldsig#")));
 
-			Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']"))));
+			Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.CustomerReport));
 			Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report));
 		}
 
@@ -162,9 +162,9 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
 			var report = GetCustomerReport(fileName, out var dataProvider) as PEV_E3_Lorry_CIF;
 			Assert.NotNull(report);
 			report.InitializeVehicleData(dataProvider);
-			report.GenerateReport(new XElement("Signature", "Dummy"));
+			report.GenerateReport(XMLHelper.CreateDummySig(XNamespace.Get("http://www.w3.org/2000/09/xmldsig#")));
 
-			Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']"))));
+			Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.CustomerReport));
 			Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report));
 		}
 		[TestCase(PEV_E4_HeavyLorry)]
@@ -174,9 +174,9 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
 			Assert.NotNull(report);
 			report.InitializeVehicleData(dataProvider);
 
-			report.GenerateReport(new XElement("Signature", "Dummy"));
+			report.GenerateReport(XMLHelper.CreateDummySig(XNamespace.Get("http://www.w3.org/2000/09/xmldsig#")));
 
-			Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']"))));
+			Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.CustomerReport));
 			Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report));
 		}
         [TestCase(PEV_IEPC_HeavyLorry)]
@@ -186,9 +186,9 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
             Assert.NotNull(report);
             report.InitializeVehicleData(dataProvider);
 
-			report.GenerateReport(new XElement("Signature", "Dummy"));
+			report.GenerateReport(XMLHelper.CreateDummySig(XNamespace.Get("http://www.w3.org/2000/09/xmldsig#")));
 
-			Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']"))));
+			Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.CustomerReport));
 			Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report));
 		}
 
@@ -198,9 +198,9 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
 			var report = GetCustomerReport(fileName, out var dataProvider) as Exempted_Lorry_CIF;
 			Assert.NotNull(report);
 			report.InitializeVehicleData(dataProvider);
-			report.GenerateReport(new XElement("Signature", "Dummy"));
+			report.GenerateReport(XMLHelper.CreateDummySig(XNamespace.Get("http://www.w3.org/2000/09/xmldsig#")));
 
-			Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']"))));
+			Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.CustomerReport));
 			Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report));
 		}
 
@@ -212,9 +212,9 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
 			var report = GetCompletedBusCustomerReport(fileName, out var dataProvider) as Conventional_CompletedBusCIF;
 			Assert.NotNull(report);
 			report.InitializeVehicleData(dataProvider);
-			report.GenerateReport(new XElement("Signature", "Dummy"));
+			report.GenerateReport(XMLHelper.CreateDummySig(XNamespace.Get("http://www.w3.org/2000/09/xmldsig#")));
 
-			Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']"))));
+			Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.CustomerReport));
 			Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report));
 		}
 
@@ -226,9 +226,9 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
 			var report = GetCompletedBusCustomerReport(fileName, out var dataProvider) as Exempted_CompletedBusCIF;
 			Assert.NotNull(report);
 			report.InitializeVehicleData(dataProvider);
-			report.GenerateReport(new XElement("Signature", "Dummy"));
+			report.GenerateReport(XMLHelper.CreateDummySig(XNamespace.Get("http://www.w3.org/2000/09/xmldsig#")));
 
-			Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']"))));
+			Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.CustomerReport));
 			Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report));
 		}
 
diff --git a/VectoCore/VectoCoreTest/XML/Reports/ManufacturerReportWriterTest.cs b/VectoCore/VectoCoreTest/XML/Reports/ManufacturerReportWriterTest.cs
index 9676409081..170821dab6 100644
--- a/VectoCore/VectoCoreTest/XML/Reports/ManufacturerReportWriterTest.cs
+++ b/VectoCore/VectoCoreTest/XML/Reports/ManufacturerReportWriterTest.cs
@@ -7,13 +7,11 @@ using System.Threading.Tasks;
 using System.Xml;
 using System.Xml.Linq;
 using System.Xml.Schema;
-using System.Xml.XPath;
 using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.DataCollection;
 using Ninject;
 using NUnit.Framework;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
-using TUGraz.VectoCommon.Resources;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.InputData.FileIO.XML;
 using TUGraz.VectoCore.Models.Simulation;
@@ -36,7 +34,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
 	
 	public class MRF_CIF_WriterTestBase
 	{
-		protected string outputBasePath = @"C:\Users\Harry\source\vecto\mrf_report_0_9";
+		protected string outputBasePath; //@"C:\Users\Harry\source\vecto\mrf_report_0_9";
 		protected ISimulatorFactory _simulatorFactory;
 		protected IOutputDataWriter _outputWriter;
 		protected StandardKernel _kernel;
@@ -94,9 +92,11 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
 
 
 		protected const string Conventional_CompletedBus = @"TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\vecto_multistage_conventional_final_vif.VIF_Report_1.xml";
-		protected const string Exempted_CompletedBus = @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.4\Distributed\ExemptedVehicles\exempted_completedBus_input_full.xml";
 
-		public static bool ValidateAndPrint(XDocument document, string xsdPath = "../../../../VectoCore/Resources/XSD", Func<XDocument, XElement> elementSelector = null)
+		protected const string Exempted_CompletedBus = @"TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\exempted_completed.VIF_Report_2.xml";
+		//@"TestData\XML\XMLReaderDeclaration\SchemaVersion2.4\Distributed\ExemptedVehicles\exempted_completedBus_input_full.xml";
+
+		public static bool ValidateAndPrint(XDocument document, XmlDocumentType documentType)
 		{
 			var error = false;
 
@@ -108,7 +108,10 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
 				stream.Flush();
 				stream.Seek(0, SeekOrigin.Begin);
 				var validator = new XMLValidator(new XmlTextReader(stream));
-				error = !validator.ValidateXML(XmlDocumentType.CustomerReport | XmlDocumentType.ManufacturerReport);
+				error = !validator.ValidateXML(documentType);
+				if (error) {
+					TestContext.WriteLine(validator.ValidationError);
+				}
 			} finally {
 				TestContext.WriteLine(document);
 			}
@@ -123,6 +126,10 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
 			{
 				fileName = fileName + ".xml";
 			}
+
+			if (!Directory.Exists(basePath)) {
+				Directory.CreateDirectory(basePath);
+			}
 			var destPath = Path.Combine(basePath, fileName);
 			using (var writer = new XmlTextWriter(destPath, Encoding.UTF8) { Formatting = Formatting.Indented })
 			{
@@ -146,7 +153,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
 			_kernel = new StandardKernel(
 				new VectoNinjectModule()
 			);
-
+			outputBasePath = Path.Combine(TestContext.CurrentContext.TestDirectory, "XMLReports_0.9");
 		}
 
 		[SetUp]
@@ -219,7 +226,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
 			report.InitializeVehicleData(dataProvider);
 			report.GenerateReport();
 
-			Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector:(document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']"))));
+			Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport));
             Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report));
         }
 
@@ -231,7 +238,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
 			report.InitializeVehicleData(dataProvider);
 			report.GenerateReport();
 
-			Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']"))));
+			Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport));
 			Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report));
 		}
 
@@ -243,7 +250,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
 			report.InitializeVehicleData(dataProvider);
 			report.GenerateReport();
 
-			Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']"))));
+			Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport));
 			Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report));
 		}
 
@@ -255,7 +262,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
 			report.InitializeVehicleData(dataProvider);
 			report.GenerateReport();
 
-			Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']"))));
+			Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport));
 			Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report));
 		}
 
@@ -267,7 +274,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
 			report.InitializeVehicleData(dataProvider);
 			report.GenerateReport();
 
-			Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']"))));
+			Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport));
 			Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report));
 		}
 
@@ -279,7 +286,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
 			report.InitializeVehicleData(dataProvider);
 			report.GenerateReport();
 
-			Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']"))));
+			Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport));
 			Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report));
 		}
 
@@ -291,7 +298,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
 			report.InitializeVehicleData(dataProvider);
 			report.GenerateReport();
 
-			Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']"))));
+			Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport));
 			Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report));
 		}
 
@@ -304,7 +311,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
 			report.InitializeVehicleData(dataProvider);
 			report.GenerateReport();
 
-			Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']"))));
+			Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport));
 			Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report));
 		}
 
@@ -316,7 +323,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
 			report.InitializeVehicleData(dataProvider);
 			report.GenerateReport();
 
-			Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']"))));
+			Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport));
 			Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report));
 		}
 
@@ -328,7 +335,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
 			report.InitializeVehicleData(dataProvider);
 			report.GenerateReport();
 
-			Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']"))));
+			Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport));
 			Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report));
 		}
 
@@ -340,7 +347,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
 			report.InitializeVehicleData(dataProvider);
 			report.GenerateReport();
 
-			Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']"))));
+			Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport));
 			Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report));
 		}
 
@@ -353,7 +360,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
 			report.InitializeVehicleData(dataProvider);
             report.GenerateReport();
 
-			Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']"))));
+			Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport));
 			Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report));
 		}
 
@@ -365,7 +372,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
 			report.InitializeVehicleData(dataProvider);
 			report.GenerateReport();
 
-			Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']"))));
+			Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport));
 			Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report));
 		}
 
@@ -380,7 +387,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
 			report.InitializeVehicleData(dataProvider);
 			report.GenerateReport();
 
-			Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']"))));
+			Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport));
 			Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report));
 		}
 
@@ -393,7 +400,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
 			report.InitializeVehicleData(dataProvider);
 			report.GenerateReport();
 
-			Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']"))));
+			Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport));
 			Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report));
 		}
 
@@ -405,7 +412,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
 			report.InitializeVehicleData(dataProvider);
 			report.GenerateReport();
 
-			Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']"))));
+			Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport));
 			Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report));
 		}
 
@@ -417,7 +424,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
 			report.InitializeVehicleData(dataProvider);
 			report.GenerateReport();
 
-			Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']"))));
+			Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport));
 			Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report));
 		}
 
@@ -431,7 +438,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
 			report.InitializeVehicleData(dataProvider);
 			report.GenerateReport();
 
-			Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']"))));
+			Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport));
 			Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report));
 		}
 
@@ -444,7 +451,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
 			report.InitializeVehicleData(dataProvider);
 			report.GenerateReport();
 
-			Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']"))));
+			Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport));
 			Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report));
 		}
 
@@ -456,7 +463,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
 			report.InitializeVehicleData(dataProvider);
 			report.GenerateReport();
 
-			Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']"))));
+			Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport));
 			Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report));
 		}
 
@@ -471,7 +478,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
 
 			report.GenerateReport();
 
-			Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']"))));
+			Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport));
 			Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report));
 		}
 
@@ -484,7 +491,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
 
 			report.GenerateReport();
 
-			Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']"))));
+			Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport));
 			Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report));
 		}
 
@@ -496,7 +503,7 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
             report.InitializeVehicleData(dataProvider);
 			report.GenerateReport();
 
-			Assert.IsTrue(ValidateAndPrint(report.Report, elementSelector: (document => document.XPathSelectElement($"//*[local-name()='{XMLNames.Component_Vehicle}']"))));
+			Assert.IsTrue(ValidateAndPrint(report.Report, XmlDocumentType.ManufacturerReport));
 			Assert.IsTrue(WriteToDisk(outputBasePath, TestContext.CurrentContext.Test.MethodName, report.Report));
 		}
 
diff --git a/VectoCore/VectoCoreTest/XML/XMLMultistageBusDataTest.cs b/VectoCore/VectoCoreTest/XML/XMLMultistageBusDataTest.cs
index e6f64bb85b..87c735b7e1 100644
--- a/VectoCore/VectoCoreTest/XML/XMLMultistageBusDataTest.cs
+++ b/VectoCore/VectoCoreTest/XML/XMLMultistageBusDataTest.cs
@@ -508,7 +508,7 @@ namespace TUGraz.VectoCore.Tests.XML
 			Assert.AreEqual(totalMass.SI<Kilogram>(), result.SimulationParameter.TotalVehicleMass);
 			Assert.AreEqual(payload.SI<Kilogram>(), result.SimulationParameter.Payload);
 			Assert.AreEqual(passenger, result.SimulationParameter.PassengerCount);
-			Assert.AreEqual(fuelMode, result.SimulationParameter.FuelMode);
+			//Assert.AreEqual(fuelMode, result.SimulationParameter.FuelMode);
 
 			index++;
 		}
diff --git a/VectoMockup/VectoMockup/MockupResults/MRF_MockupResults_PEV_Lorry.xml b/VectoMockup/VectoMockup/MockupResults/MRF_MockupResults_PEV_Lorry.xml
index b0bf83f452..7468105446 100644
--- a/VectoMockup/VectoMockup/MockupResults/MRF_MockupResults_PEV_Lorry.xml
+++ b/VectoMockup/VectoMockup/MockupResults/MRF_MockupResults_PEV_Lorry.xml
@@ -11,7 +11,6 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.9 V:\VectoCore\
 			<SimulationParameters>
 				<TotalVehicleMass unit="kg">17200</TotalVehicleMass>
 				<Payload unit="kg">2600</Payload>
-				<!--<PassengerCount>13.75</PassengerCount>--><!-- only for buses -->
 			</SimulationParameters>
 			<Total>
 				<VehiclePerformance>
diff --git a/VectoMockup/VectoMockup/MockupResults/VIF_MockupResults_Conv_Bus.xml b/VectoMockup/VectoMockup/MockupResults/VIF_MockupResults_Conv_Bus.xml
index 769cf42ce5..7e9f2a7fd3 100644
--- a/VectoMockup/VectoMockup/MockupResults/VIF_MockupResults_Conv_Bus.xml
+++ b/VectoMockup/VectoMockup/MockupResults/VIF_MockupResults_Conv_Bus.xml
@@ -11,7 +11,6 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile
 				<TotalVehicleMass unit="kg">15000</TotalVehicleMass>
 				<Payload unit="kg">15000</Payload>
 				<PassengerCount>2</PassengerCount>
-				<FuelMode>single fuel mode</FuelMode>
 			</SimulationParameters>
 			<Fuel type="NG CI">
 				<EnergyConsumption unit="MJ/km">20.71050</EnergyConsumption>
diff --git a/VectoMockup/VectoMockup/MockupResults/VIF_MockupResults_OVC-HEV_Bus.xml b/VectoMockup/VectoMockup/MockupResults/VIF_MockupResults_OVC-HEV_Bus.xml
index 92593e95b5..66f32c7cc0 100644
--- a/VectoMockup/VectoMockup/MockupResults/VIF_MockupResults_OVC-HEV_Bus.xml
+++ b/VectoMockup/VectoMockup/MockupResults/VIF_MockupResults_OVC-HEV_Bus.xml
@@ -10,7 +10,6 @@ xmlns:vif="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" xs
 				<TotalVehicleMass unit="kg">15000</TotalVehicleMass>
 				<Payload unit="kg">15000</Payload>
 				<PassengerCount>2</PassengerCount>
-				<FuelMode>single fuel mode</FuelMode>
 			</SimulationParameters>
 			<OVCMode type="charge depleting">
 				<Fuel type="NG CI">
diff --git a/VectoMockup/VectoMockup/MockupResults/VIF_MockupResults_PEV_Bus.xml b/VectoMockup/VectoMockup/MockupResults/VIF_MockupResults_PEV_Bus.xml
index 8bc10de87c..e849647bcd 100644
--- a/VectoMockup/VectoMockup/MockupResults/VIF_MockupResults_PEV_Bus.xml
+++ b/VectoMockup/VectoMockup/MockupResults/VIF_MockupResults_PEV_Bus.xml
@@ -10,7 +10,6 @@ xmlns:vif="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" xs
 				<TotalVehicleMass unit="kg">15000</TotalVehicleMass>
 				<Payload unit="kg">15000</Payload>
 				<PassengerCount>2</PassengerCount>
-				<FuelMode>single fuel mode</FuelMode>
 			</SimulationParameters>
 			<ElectricEnergyConsumption>
 				<EnergyConsumption unit="MJ/km">20.71050</EnergyConsumption>
diff --git a/VectoMockup/VectoMockup/MockupResults/VIF_MockupResults_non-OVC-HEV_Bus.xml b/VectoMockup/VectoMockup/MockupResults/VIF_MockupResults_non-OVC-HEV_Bus.xml
index fa303a1b49..6a96057869 100644
--- a/VectoMockup/VectoMockup/MockupResults/VIF_MockupResults_non-OVC-HEV_Bus.xml
+++ b/VectoMockup/VectoMockup/MockupResults/VIF_MockupResults_non-OVC-HEV_Bus.xml
@@ -10,7 +10,6 @@ xmlns:vif="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" xs
 				<TotalVehicleMass unit="kg">15000</TotalVehicleMass>
 				<Payload unit="kg">15000</Payload>
 				<PassengerCount>2</PassengerCount>
-				<FuelMode>single fuel mode</FuelMode>
 			</SimulationParameters>
 			<Fuel type="NG CI">
 				<EnergyConsumption unit="MJ/km">20.71050</EnergyConsumption>
diff --git a/VectoMockup/VectoMockup/Ninject/VIFMockupModule.cs b/VectoMockup/VectoMockup/Ninject/VIFMockupModule.cs
index e1b7072240..2e8c4a74eb 100644
--- a/VectoMockup/VectoMockup/Ninject/VIFMockupModule.cs
+++ b/VectoMockup/VectoMockup/Ninject/VIFMockupModule.cs
@@ -106,6 +106,16 @@ namespace TUGraz.VectoMockup.Ninject
 				return _vifReportFactoryImplementation.GetPevE4VehicleType();
 			}
 
+			public IXmlTypeWriter GetPevIEPCVehicleType()
+			{
+				return _vifReportFactoryImplementation.GetPevIEPCVehicleType();
+			}
+
+			public IXmlTypeWriter GetExemptedVehicleType()
+			{
+				return _vifReportFactoryImplementation.GetExemptedVehicleType();
+			}
+
 			public IXmlTypeWriter GetConventionalComponentType()
 			{
 				return _vifReportFactoryImplementation.GetConventionalComponentType();
@@ -151,9 +161,9 @@ namespace TUGraz.VectoMockup.Ninject
 				return _vifReportFactoryImplementation.GetPevE4ComponentVIFType();
 			}
 
-			public IXmlTypeWriter GetIepcComponentVIFType()
+			public IXmlTypeWriter GetPevIEPCComponentVIFType()
 			{
-				return _vifReportFactoryImplementation.GetIepcComponentVIFType();
+				return _vifReportFactoryImplementation.GetPevIEPCComponentVIFType();
 			}
 
 			public IVIFFAdasType GetConventionalADASType()
@@ -171,6 +181,11 @@ namespace TUGraz.VectoMockup.Ninject
 				return _vifReportFactoryImplementation.GetPEVADASType();
 			}
 
+			public IVIFFAdasType GetIEPCADASType()
+			{
+				return _vifReportFactoryImplementation.GetIEPCADASType();
+			}
+
 			public IXmlTypeWriter GetTorqueConvertType()
 			{
 				return _vifReportFactoryImplementation.GetTorqueConvertType();
@@ -236,6 +251,11 @@ namespace TUGraz.VectoMockup.Ninject
 				return _vifReportFactoryImplementation.GetPevExVehicleParmeterGroup();
 			}
 
+			public IReportOutputGroup GetPevIEPCVehicleParmeterGroup()
+			{
+				return _vifReportFactoryImplementation.GetPevIEPCVehicleParmeterGroup();
+			}
+
 			public IReportOutputGroup GetHevPxVehicleParameterGroup()
 			{
 				return _vifReportFactoryImplementation.GetHevPxVehicleParameterGroup();
@@ -256,6 +276,11 @@ namespace TUGraz.VectoMockup.Ninject
 				return _vifReportFactoryImplementation.GetAuxiliaryHevSType();
 			}
 
+			public IXmlTypeWriter GetAuxiliaryIEPC_SType()
+			{
+				return _vifReportFactoryImplementation.GetAuxiliaryIEPC_SType();
+			}
+
 			public IXmlTypeWriter GetAuxiliaryHevPType()
 			{
 				return _vifReportFactoryImplementation.GetAuxiliaryHevPType();
diff --git a/VectoMockup/VectoMockupTest/MockUpVectoTest.cs b/VectoMockup/VectoMockupTest/MockUpVectoTest.cs
index 70ee3f8c60..da02604721 100644
--- a/VectoMockup/VectoMockupTest/MockUpVectoTest.cs
+++ b/VectoMockup/VectoMockupTest/MockUpVectoTest.cs
@@ -20,6 +20,7 @@ using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory;
 using TUGraz.VectoCore.OutputData;
 using TUGraz.VectoCore.OutputData.FileIO;
 using TUGraz.VectoCore.Tests.XML.Reports;
+using XmlDocumentType = TUGraz.VectoCore.Utils.XmlDocumentType;
 
 namespace VectoMockupTest
 {
@@ -69,6 +70,8 @@ namespace VectoMockupTest
 
 		protected const string Conventional_PrimaryBus =
 			@"TestData\XML\XMLReaderDeclaration\SchemaVersion2.4\Distributed\PrimaryBus\Conventional_primaryBus_AMT.xml";
+		protected const string Conventional_PrimaryBus_Tyres =
+			@"TestData\XML\XMLReaderDeclaration\SchemaVersion2.4\Distributed\PrimaryBus\Conventional_primaryBus_AMT_DifferentTyres.xml";
 		protected const string HEV_Px_IHPC_PrimaryBus =
 			@"TestData\XML\XMLReaderDeclaration\SchemaVersion2.4\Distributed\PrimaryBus\HEV_primaryBus_AMT_Px.xml";
 		protected const string HEV_S2_PrimaryBus =
@@ -220,11 +223,12 @@ namespace VectoMockupTest
 			jobContainer.WaitFinished();
 			
 			CheckFileExists(fileWriter);
-			Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLFullReportName),XsdPath), "MRF invalid");
-			Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLCustomerReportName),XsdPath), "CIF invalid");
+			Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLFullReportName), XmlDocumentType.ManufacturerReport), "MRF invalid");
+			Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLCustomerReportName), XmlDocumentType.CustomerReport), "CIF invalid");
 		}
 
 		[TestCase(Conventional_PrimaryBus, TestName = "ConventionalPrimaryBus")]
+		[TestCase(Conventional_PrimaryBus_Tyres, TestName = "ConventionalPrimaryBus Tyres")]
         [TestCase(HEV_IEPC_S_PrimaryBus, TestName="HEV_IEPC_S_PrimaryBus")]
         [TestCase(HEV_Px_IHPC_PrimaryBus, TestName="HEV_Px_PrimaryBus")]
         [TestCase(HEV_S2_PrimaryBus, TestName="HEV_S2_PrimaryBus")]
@@ -249,8 +253,8 @@ namespace VectoMockupTest
 			jobContainer.Execute(false);
 			jobContainer.WaitFinished();
 			CheckFileExists(fileWriter, checkCif:false, checkPrimaryReport:true);
-			Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLPrimaryVehicleReportName), XsdPath), "VIF invalid" );
-			Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLFullReportName), XsdPath), "MRF invalid");
+			Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLPrimaryVehicleReportName), XmlDocumentType.MultistepOutputData), "VIF invalid" );
+			Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLFullReportName), XmlDocumentType.ManufacturerReport), "MRF invalid");
 		}
 
 		
@@ -409,8 +413,8 @@ namespace VectoMockupTest
 			jobContainer.WaitFinished();
 			
 			CheckFileExists(fileWriter);
-			Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLFullReportName),XsdPath), "MRF invalid");
-			Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLCustomerReportName),XsdPath), "CIF invalid");
+			Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLFullReportName), XmlDocumentType.ManufacturerReport), "MRF invalid");
+			Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLCustomerReportName), XmlDocumentType.CustomerReport), "CIF invalid");
 		}
 		
 		[TestCase(@"TestData/XML/XMLReaderDeclaration/SchemaVersion1.0/Tractor_4x2_vehicle-class-5_5_t_0.xml", TestName="Schema10Test1")]
@@ -438,8 +442,8 @@ namespace VectoMockupTest
 			jobContainer.WaitFinished();
 			
 			CheckFileExists(fileWriter);
-			Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLFullReportName),XsdPath), "MRF invalid");
-			Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLCustomerReportName),XsdPath), "CIF invalid");
+			Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLFullReportName), XmlDocumentType.ManufacturerReport), "MRF invalid");
+			Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLCustomerReportName), XmlDocumentType.CustomerReport), "CIF invalid");
 		}
 		
 		[TestCase(@"TestData/XML/XMLReaderDeclaration/SchemaVersion2.0/Tractor_4x2_vehicle-class-5_5_t_0.xml", TestName="Schema20Test1")]
@@ -467,8 +471,8 @@ namespace VectoMockupTest
 			jobContainer.WaitFinished();
 			
 			CheckFileExists(fileWriter);
-			Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLFullReportName),XsdPath), "MRF invalid");
-			Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLCustomerReportName),XsdPath), "CIF invalid");
+			Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLFullReportName), XmlDocumentType.ManufacturerReport), "MRF invalid");
+			Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLCustomerReportName), XmlDocumentType.CustomerReport), "CIF invalid");
 		}
 
 
@@ -500,8 +504,8 @@ namespace VectoMockupTest
 			jobContainer.WaitFinished();
 
 			CheckFileExists(fileWriter);
-			Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLFullReportName), XsdPath), "MRF invalid");
-			Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLCustomerReportName), XsdPath), "CIF invalid");
+			Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLFullReportName), XmlDocumentType.ManufacturerReport), "MRF invalid");
+			Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLCustomerReportName), XmlDocumentType.CustomerReport), "CIF invalid");
 		}
 
         [TestCase("TestData/XML/XMLReaderDeclaration/SchemaVersion2.4/Distributed/ExemptedVehicles/exempted_completedBus_input_full.xml", 
@@ -561,8 +565,8 @@ namespace VectoMockupTest
 				checkMrf:checkMrf, 
 				checkPrimaryMrf:checkPrimaryMrf, 
 				checkPrimaryReport:checkPrimaryReport);
-			if(checkMrf) Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLFullReportName), XsdPath), "MRF invalid");
-			if(checkCif) Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLCustomerReportName), XsdPath), "CIF invalid");
+			if(checkMrf) Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLFullReportName), XmlDocumentType.ManufacturerReport), "MRF invalid");
+			if(checkCif) Assert.IsTrue(MRF_CIF_WriterTestBase.ValidateAndPrint(XDocument.Load(fileWriter.XMLCustomerReportName), XmlDocumentType.CustomerReport), "CIF invalid");
 		}
 	}
 }
-- 
GitLab