diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/IFollowUpSimulatorFactoryCreator.cs b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/IFollowUpSimulatorFactoryCreator.cs
index 5e31641741d5d2d88287e620bc7972c9d429a025..64734f7a87b810bbdccfa417fe5118033fa2fa91 100644
--- a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/IFollowUpSimulatorFactoryCreator.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/IFollowUpSimulatorFactoryCreator.cs
@@ -8,6 +8,9 @@ using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider;
 using TUGraz.VectoCore.OutputData;
 using TUGraz.VectoCore.OutputData.FileIO;
 using TUGraz.VectoCore.OutputData.XML;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile.CustomerInformationFile_0_9;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile.VehicleInformationFile_0_1;
 
 namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory
 {
@@ -54,6 +57,9 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory
 		private readonly IDeclarationReport _originalDeclarationReport;
 		private readonly IDeclarationInputDataProvider _currentStageInputData;
 
+		private readonly IManufacturerReportFactory _mrfFactory;
+		private readonly IVIFReportFactory _vifFactory;
+
 		public InterimAfterPrimaryFactoryCreator(IMultistagePrimaryAndStageInputDataProvider originalStageInputData,
 			IOutputDataWriter originalReportWriter,
 			IDeclarationReport originalDeclarationReport,
diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactory.cs b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactory.cs
index 32f5b1d75561a1211946c585dc7e411cdaf32622..9ee76616a7223e4f70e29e4af23ea15f9a2c5539 100644
--- a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactory.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactory.cs
@@ -247,7 +247,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory
 										$"{validationErrors.Select(r => r.ErrorMessage + r.MemberNames.Join("; ")).Join("\n")}");
 			}
 		}
-
+		
 		private static VectoRun GetVectoRun(VectoRunData data, IModalDataContainer modData, ISumData sumWriter)
 		{
 			VectoRun run;
diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactoryDeclaration.cs b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactoryDeclaration.cs
index 740646b9f1e4dabdc9c4e81c13af75372ecc641c..d5593adef4db1dba489f21977ee3943c1dc07f89 100644
--- a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactoryDeclaration.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactoryDeclaration.cs
@@ -4,6 +4,8 @@ using TUGraz.VectoCore.InputData;
 using TUGraz.VectoCore.InputData.FileIO.XML;
 using TUGraz.VectoCore.OutputData;
 using TUGraz.VectoCore.OutputData.XML;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile.VehicleInformationFile_0_1;
 
 namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory
 {
@@ -15,6 +17,8 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory
 		private IDeclarationReport _currentStageDeclarationReport;
 		private IVTPReport _currentStageVTPReport;
 		protected readonly IXMLDeclarationReportFactory _xmlDeclarationReportFactory;
+		private IVIFReportFactory _vifFactory;
+		private IManufacturerReportFactory _mrfFactory;
 
 		
 
@@ -34,7 +38,6 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory
 			_currentStageInputData = dataProvider;
 			_xmlDeclarationReportFactory = xmlDeclarationReportFactory;
 
-
 			_currentStageDeclarationReport = declarationReport ?? xmlDeclarationReportFactory.CreateReport(dataProvider, writer);
 			_currentStageVTPReport = vtpReport ?? xmlDeclarationReportFactory.CreateVTPReport(dataProvider, writer);
 			_followUpSimulatorFactoryCreator = CreateFollowUpFactoryCreator(
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VTPReport/XMLVTPReport.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VTPReport/XMLVTPReport.cs
index 2a71aeeeba499abf6164fe939d24dac2396c47ea..c24b4bc62beab7a39f319b4c7603259f94b03776 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VTPReport/XMLVTPReport.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VTPReport/XMLVTPReport.cs
@@ -32,6 +32,7 @@
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using System.Runtime.CompilerServices;
 using System.Xml;
 using System.Xml.Linq;
 using NLog.Config;
@@ -57,6 +58,8 @@ using TUGraz.VectoCore.Models.Declaration.Auxiliaries;
 using TUGraz.VectoCore.Models.SimulationComponent.Impl;
 using LogManager = NLog.LogManager;
 
+[assembly: InternalsVisibleTo("VectoCoreTest")]
+
 namespace TUGraz.VectoCore.OutputData.XML
 {
 	internal class XMLVTPReport : DeclarationReport<XMLVTPReport.ResultEntry>, IVTPReport
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs
index a3e52501186392a1a1f3b17c78d6cb59e40014b5..d1f4eddbe487d04367bf61b3891a53ed94527653 100644
--- a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs
+++ b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs
@@ -48,7 +48,9 @@ using TUGraz.VectoCore.Models.Simulation.Data;
 using TUGraz.VectoCore.Models.Simulation.Impl;
 using TUGraz.VectoCore.Models.SimulationComponent.Data.ElectricComponents.Battery;
 using TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile.CustomerInformationFile_0_9;
 using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter;
 
 namespace TUGraz.VectoCore.OutputData.XML
 {
@@ -58,12 +60,16 @@ namespace TUGraz.VectoCore.OutputData.XML
 
 		protected IXMLCustomerReport CustomerRpt;
 
+		protected readonly IManufacturerReportFactory _mrfFactory;
+		protected readonly ICustomerInformationFileFactory _cifFactory;
+		
 
 		protected IDictionary<Tuple<MissionType, LoadingType>, double> _weightingFactors;
 
-		public XMLDeclarationReport(IReportWriter writer) : base(writer)
+		public XMLDeclarationReport(IReportWriter writer, IManufacturerReportFactory mrfFactory, ICustomerInformationFileFactory cifFactory) : base(writer)
 		{
-			throw new NotImplementedException("Use new implementation...");
+			_mrfFactory = mrfFactory;
+			_cifFactory = cifFactory;
 		}
 
 		protected XMLDeclarationReport(IReportWriter writer, bool dummy) : base(writer) { }
@@ -328,12 +334,24 @@ namespace TUGraz.VectoCore.OutputData.XML
 
 		protected virtual void InstantiateReports(VectoRunData modelData)
 		{
-			//if (modelData.Exempted) {
-			//	ManufacturerRpt = new XMLManufacturerReportExemptedTruck();
-			//} else {
-			//	ManufacturerRpt = new XMLManufacturerReportTruck();
-			//}
-			//CustomerRpt = new XMLCustomerReport();
+
+			var vehicleData = modelData.VehicleData.InputData;
+			var iepc = vehicleData.Components?.IEPC != null;
+			var ihpc =
+				vehicleData.Components?.ElectricMachines?.Entries?.Count(e => e.ElectricMachine.IHPCType != "None") > 0;
+
+			ManufacturerRpt = _mrfFactory.GetManufacturerReport(vehicleData.VehicleCategory,
+				vehicleData.VehicleType,
+				vehicleData.ArchitectureID,
+				vehicleData.ExemptedVehicle,
+				iepc,
+				ihpc);
+			CustomerRpt = _cifFactory.GetCustomerReport(vehicleData.VehicleCategory,
+				vehicleData.VehicleType,
+				vehicleData.ArchitectureID,
+				vehicleData.ExemptedVehicle,
+				iepc,
+				ihpc);
 		}
 
 		private static IDictionary<Tuple<MissionType, LoadingType>, double> ZeroWeighting =>
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportCompletedVehicle.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportCompletedVehicle.cs
index 44d3fdaa3513b689d2c4e506711b75846b9f26a0..e689c038a19b9b577fe27624508ae6494c6164de 100644
--- a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportCompletedVehicle.cs
+++ b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportCompletedVehicle.cs
@@ -5,39 +5,60 @@ using System.Linq;
 using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces;
 using TUGraz.VectoCore.Models.Declaration;
 using TUGraz.VectoCore.Models.Simulation.Data;
 using TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile.CustomerInformationFile_0_9;
 using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile.VehicleInformationFile_0_1;
 
-namespace TUGraz.VectoCore.OutputData.XML {
+namespace TUGraz.VectoCore.OutputData.XML
+{
+	/// <summary>
+	/// Create MRF and CIF of the complete(d) step
+	/// </summary>
 	public class XMLDeclarationReportCompletedVehicle : XMLDeclarationReport
 	{
-		public XMLDeclarationReportCompletedVehicle(IReportWriter writer) : base(writer, true) { }
+		#region Constructors
+		//public XMLDeclarationReportCompletedVehicle(IReportWriter writer) : base(writer) { }
+		public XMLDeclarationReportCompletedVehicle(IReportWriter writer, IManufacturerReportFactory mrfFactory,
+			ICustomerInformationFileFactory cifFactory,
+			IVIFReportFactory vifFactory) : base(writer, mrfFactory, cifFactory)
+		{
+		}
 
-		public IPrimaryVehicleInformationInputDataProvider PrimaryVehicleReportInputData { get; set; }
+		#endregion
 
-		#region Overrides of XMLDeclarationReport
+		public IPrimaryVehicleInformationInputDataProvider PrimaryVehicleReportInputData { get; set; }
 
+		#region Overrides of XMLDeclarationReportCompletedVehicle
 
 		protected override void InstantiateReports(VectoRunData modelData)
 		{
-			ManufacturerRpt = modelData.Exempted
-				? new XMLManufacturerReportExemptedCompletedBus() {
-					PrimaryVehicleRecordFile = PrimaryVehicleReportInputData
-				}
-				: new XMLManufacturerReportCompletedBus() {
-					PrimaryVehicleRecordFile = PrimaryVehicleReportInputData
-				};
-			CustomerRpt = modelData.Exempted
-				? new XMLCustomerReportExemptedCompletedBus() {
-					PrimaryVehicleRecordFile = PrimaryVehicleReportInputData
-				}
-				: new XMLCustomerReportCompletedBus() {
-					PrimaryVehicleRecordFile = PrimaryVehicleReportInputData
-				};
-		}
+			var inputData = modelData.InputData as IXMLMultistageInputDataProvider;
+			var primaryVehicle = inputData.JobInputData.PrimaryVehicle.Vehicle;
+
+			var ihpc = (primaryVehicle.Components?.ElectricMachines?.Entries)?.Count(electric => electric.ElectricMachine.IHPCType != "None") > 0;
+			var iepc = (primaryVehicle.Components?.IEPC != null);
+			ManufacturerRpt = _mrfFactory.GetManufacturerReport(
+				inputData.JobInputData.ConsolidateManufacturingStage.Vehicle.VehicleCategory,
+				inputData.JobInputData.JobType,
+				primaryVehicle.ArchitectureID,
+				primaryVehicle.ExemptedVehicle,
+				iepc,
+				ihpc);
+
+			CustomerRpt = _cifFactory.GetCustomerReport(
+				inputData.JobInputData.ConsolidateManufacturingStage.Vehicle.VehicleCategory,
+				inputData.JobInputData.JobType,
+				primaryVehicle.ArchitectureID,
+				primaryVehicle.ExemptedVehicle,
+				iepc,
+				ihpc);
 
+		}
 		public override void InitializeReport(VectoRunData modelData)
 		{
 			_weightingFactors = EqualWeighting;
@@ -49,6 +70,8 @@ namespace TUGraz.VectoCore.OutputData.XML {
 		}
 		#endregion
 
+
+
 		private static IDictionary<Tuple<MissionType, LoadingType>, double> EqualWeighting =>
 			new ReadOnlyDictionary<Tuple<MissionType, LoadingType>, double>(
 				new Dictionary<Tuple<MissionType, LoadingType>, double>() {
@@ -81,12 +104,14 @@ namespace TUGraz.VectoCore.OutputData.XML {
 		protected internal override void DoWriteReport()
 		{
 			foreach (var specificResult in Results.Where(x => VehicleClassHelper.IsCompletedBus(x.VehicleClass)).OrderBy(x => x.VehicleClass)
-												.ThenBy(x => x.FuelMode).ThenBy(x => x.Mission)) {
+						.ThenBy(x => x.FuelMode).ThenBy(x => x.Mission))
+			{
 
 				var genericResult = Results.First(x => x.VehicleClass.IsPrimaryBus() && x.FuelMode == specificResult.FuelMode &&
-						x.Mission == specificResult.Mission && x.LoadingType == specificResult.LoadingType);
+														x.Mission == specificResult.Mission && x.LoadingType == specificResult.LoadingType);
 				var primaryResult = genericResult.PrimaryResult ?? specificResult.PrimaryResult;
-				if (primaryResult == null) {
+				if (primaryResult == null)
+				{
 					throw new VectoException(
 						"no primary result entry set for simulation run vehicle class: {0}, mission: {1}, payload: {2}",
 						genericResult.VehicleClass, genericResult.Mission, genericResult.Payload);
@@ -98,7 +123,8 @@ namespace TUGraz.VectoCore.OutputData.XML {
 
 			GenerateReports();
 
-			if (Writer != null) {
+			if (Writer != null)
+			{
 				OutputReports();
 			}
 		}
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportFactory.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportFactory.cs
index ea2f38e53a21bb634336e62aa22468ea56d6d3a8..a66c3846b9e4d98600cda063f07f9c34f408ec5a 100644
--- a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportFactory.cs
+++ b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportFactory.cs
@@ -36,7 +36,8 @@ namespace TUGraz.VectoCore.OutputData.XML
 				case IMultistepBusInputDataProvider multistageBusInputDataProvider:
 					break;
 				case ISingleBusInputDataProvider singleBusInputDataProvider:
-					return new XMLDeclarationReportSingleBus09(outputWriter, _mrfFactory, _cifFactory);
+					throw new NotImplementedException();
+					//return new XMLDeclarationReportSingleBus(outputWriter, _mrfFactory, _cifFactory);
 				case IDeclarationInputDataProvider declarationInputDataProvider:
 					return CreateDeclarationReport(declarationInputDataProvider, outputWriter);
 				case IMultiStageTypeInputData multiStageTypeInputData:
@@ -69,14 +70,14 @@ namespace TUGraz.VectoCore.OutputData.XML
 		{
 			if (multistageVifInputData.VehicleInputData == null)
 			{
-				var reportCompleted = new XMLDeclarationReportCompletedVehicle_09(outputDataWriter, _mrfFactory, _cifFactory, _vifFactory)
+				var reportCompleted = new XMLDeclarationReportCompletedVehicle(outputDataWriter, _mrfFactory, _cifFactory, _vifFactory)
 				{
 					PrimaryVehicleReportInputData = multistageVifInputData.MultistageJobInputData.JobInputData.PrimaryVehicle,
 				};
 				return reportCompleted;
 			}
 			else {
-				var report = new XMLDeclarationReportInterimVehicle_09(outputDataWriter, _mrfFactory, _cifFactory, _vifFactory, _vifInterimFactory);
+				var report = new XMLDeclarationReportInterimVehicle(outputDataWriter, _mrfFactory, _cifFactory, _vifFactory, _vifInterimFactory);
 				return report;
 			}
 		}
@@ -87,19 +88,19 @@ namespace TUGraz.VectoCore.OutputData.XML
 			var vehicleCategory = declarationInputDataProvider.JobInputData.Vehicle.VehicleCategory;
 			if (vehicleCategory.IsLorry())
 			{
-				return new XMLDeclarationReport09(outputDataWriter, _mrfFactory, _cifFactory);
+				return new XMLDeclarationReport(outputDataWriter, _mrfFactory, _cifFactory);
 			}
 
 			if (vehicleCategory.IsBus())
 				switch (declarationInputDataProvider.JobInputData.Vehicle.VehicleCategory)
 				{
 					case VehicleCategory.HeavyBusCompletedVehicle:
-						return new XMLDeclarationReportCompletedVehicle_09(outputDataWriter, _mrfFactory, _cifFactory, _vifFactory)
+						return new XMLDeclarationReportCompletedVehicle(outputDataWriter,_mrfFactory,_cifFactory,_vifFactory)
 											{
 												PrimaryVehicleReportInputData = declarationInputDataProvider.PrimaryVehicleData,
 											};
 					case VehicleCategory.HeavyBusPrimaryVehicle:
-						return new XMLDeclarationReportPrimaryVehicle_09(outputDataWriter, _mrfFactory, _cifFactory, _vifFactory);
+						return new XMLDeclarationReportPrimaryVehicle(outputDataWriter, _mrfFactory, _vifFactory);
 
 					default:
 						break;
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportInterimVehicle.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportInterimVehicle.cs
new file mode 100644
index 0000000000000000000000000000000000000000..34f35a5a02effe8a22a68780941f94adeaf7d884
--- /dev/null
+++ b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportInterimVehicle.cs
@@ -0,0 +1,80 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using TUGraz.VectoCore.Models.Declaration;
+using TUGraz.VectoCore.Models.Simulation.Data;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile.CustomerInformationFile_0_9;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile.VehicleInformationFile_0_1;
+
+namespace TUGraz.VectoCore.OutputData.XML
+{
+	/// <summary>
+	/// Create VIF of an interim (or the complete(d) step
+	/// </summary>
+	public class XMLDeclarationReportInterimVehicle : XMLDeclarationReport
+	{
+		protected readonly IVIFReportFactory _vifFactory;
+
+		protected IXMLMultistepIntermediateReport MultistepIntermediateBusReport;
+		protected readonly IVIFReportInterimFactory _interimFactory;
+
+		public XMLDeclarationReportInterimVehicle(IReportWriter writer,
+			IManufacturerReportFactory mrfFactory,
+			ICustomerInformationFileFactory cifFactory,
+			IVIFReportFactory vifFactory, IVIFReportInterimFactory interimFactory) : base(writer, mrfFactory, cifFactory)
+		{
+			_vifFactory = vifFactory;
+			_interimFactory = interimFactory;
+		}
+
+		#region Overrides of XMLDeclarationReport
+
+		protected override void InstantiateReports(VectoRunData modelData)
+		{
+			var vehicleData = modelData.VehicleData.InputData;
+			var iepc = vehicleData.Components?.IEPC != null;
+			var ihpc =
+				vehicleData.Components?.ElectricMachines?.Entries?.Count(e => e.ElectricMachine.IHPCType != "None") > 0;
+
+			MultistepIntermediateBusReport = _interimFactory.GetInterimVIFReport(vehicleData.VehicleCategory,
+				vehicleData.VehicleType,
+				vehicleData.ArchitectureID,
+				vehicleData.ExemptedVehicle,
+				iepc,
+				ihpc);
+		}
+
+		#endregion
+
+		public override void InitializeReport(VectoRunData modelData)
+		{
+			//_multistageBusReport =
+			//	modelData.Exempted ? new XMLMultistageExemptedBusReport() : new XMLMultistageBusReport();
+			
+			InstantiateReports(modelData);
+
+			MultistepIntermediateBusReport.Initialize(modelData);
+		}
+
+		protected override void GenerateReports()
+		{
+			MultistepIntermediateBusReport.GenerateReport();
+		}
+
+		protected override void OutputReports()
+		{
+			Writer.WriteReport(ReportType.DeclarationReportMultistageVehicleXML, MultistepIntermediateBusReport.Report);
+		}
+
+		protected override void DoStoreResult(ResultEntry entry, VectoRunData runData, IModalDataContainer modData)
+		{
+			throw new NotSupportedException();
+		}
+		protected override void WriteResult(ResultEntry result)
+		{
+			throw new NotSupportedException();
+		}
+	}
+}
\ No newline at end of file
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportMultistageBusVehicle.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportMultistageBusVehicle.cs
new file mode 100644
index 0000000000000000000000000000000000000000..26aab4fc01faa04e468de6c5e075a8a2bcfcdcce
--- /dev/null
+++ b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportMultistageBusVehicle.cs
@@ -0,0 +1,54 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using TUGraz.VectoCommon.Exceptions;
+using TUGraz.VectoCore.Models.Declaration;
+using TUGraz.VectoCore.Models.Simulation.Data;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile;
+
+namespace TUGraz.VectoCore.OutputData.XML
+{
+	/// <summary>
+	/// Create VIF of an interim (or the complete(d) step
+	/// </summary>
+	public class XMLDeclarationReportMultistageBusVehicle : XMLDeclarationReport
+	{
+		protected IXMLMultistepIntermediateReport _multistageBusReport;
+
+		public XMLDeclarationReportMultistageBusVehicle(IReportWriter writer)
+			: base(writer, null,null)
+		{
+			throw new NotImplementedException();
+			//throw new VectoException("Used here");
+			//_multistageBusReport = new XMLMultistageBusReport();
+		}
+		
+		public override void InitializeReport(VectoRunData modelData)
+		{
+			_multistageBusReport =
+				modelData.Exempted ? new XMLMultistageExemptedBusReport() : new XMLMultistageBusReport();
+			_multistageBusReport.Initialize(modelData);
+		}
+		
+		protected override void GenerateReports()
+		{
+			_multistageBusReport.GenerateReport();
+		}
+		
+		protected override void OutputReports()
+		{
+			Writer.WriteReport(ReportType.DeclarationReportMultistageVehicleXML, _multistageBusReport.Report);
+		}
+		
+		protected override void DoStoreResult(ResultEntry entry, VectoRunData runData, IModalDataContainer modData)
+		{
+			throw new NotSupportedException();
+		}
+		protected override void WriteResult(ResultEntry result)
+		{
+			throw new NotSupportedException();
+		}
+	}
+}
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportPrimaryVehicle.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportPrimaryVehicle.cs
index 07dbb4d0ee70e2200d5e9f93d3aedfc6f37e5f24..cabd3946ee55772e626abd13e499012985adc1e7 100644
--- a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportPrimaryVehicle.cs
+++ b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportPrimaryVehicle.cs
@@ -1,40 +1,61 @@
 using System;
+using System.Collections.Generic;
+using System.Linq;
 using System.Xml.Linq;
 using TUGraz.VectoCore.Models.Simulation.Data;
-using TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile;
-using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter;
 using TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile.VehicleInformationFile_0_1;
 
-namespace TUGraz.VectoCore.OutputData.XML {
+namespace TUGraz.VectoCore.OutputData.XML
+{
+	/// <summary>
+	/// Create MRF and VIF for primary bus
+	/// </summary>
 	public class XMLDeclarationReportPrimaryVehicle : XMLDeclarationReport
 	{
-		protected IXMLVehicleInformationFile VehicleInformationFile;
+		private readonly IVIFReportFactory _vifFactory;
 
+		protected IXMLVehicleInformationFile VehicleInformationFile;
 
-		public XMLDeclarationReportPrimaryVehicle(IReportWriter writer) : base(writer, true)
-		{
-			throw new NotSupportedException("Use new implementation!");
-		}
 
 		public override XDocument CustomerReport => null;
 
 		public override XDocument PrimaryVehicleReport => VehicleInformationFile?.Report;
 
+		
+		public XMLDeclarationReportPrimaryVehicle(IReportWriter writer,
+			IManufacturerReportFactory mrfFactory,
+			IVIFReportFactory vifFactory) : base(writer, mrfFactory, null)
+		{
+			_vifFactory = vifFactory;
+		}
+		
 
-		#region Overrides of XMLDeclarationReport
 
+		#region Overrides of XMLDeclarationReport
 		protected override void InstantiateReports(VectoRunData modelData)
 		{
-			if (modelData.Exempted) {
-				ManufacturerRpt = new XMLManufacturerReportExeptedPrimaryBus();
-				CustomerRpt = new XMLCustomerReportExemptedPrimaryBus();
-				VehicleInformationFile = new XMLExemptedPrimaryBusVehicleReport();
+			var vehicleData = modelData.VehicleData.InputData;
+			var iepc = vehicleData.Components?.IEPC != null;
+			var ihpc =
+				vehicleData.Components?.ElectricMachines?.Entries?.Count(e => e.ElectricMachine.IHPCType != "None") > 0;
 
-			} else {
-				ManufacturerRpt = new XMLManufacturerReportPrimaryBus();
-				CustomerRpt = new XMLCustomerReport();
-				VehicleInformationFile = new XMLPrimaryBusVehicleReport();
-			}
+			ManufacturerRpt = _mrfFactory.GetManufacturerReport(vehicleData.VehicleCategory,
+				vehicleData.VehicleType,
+				vehicleData.ArchitectureID,
+				vehicleData.ExemptedVehicle,
+				iepc,
+				ihpc);
+
+			VehicleInformationFile = _vifFactory.GetVIFReport(vehicleData.VehicleCategory,
+				vehicleData.VehicleType,
+				vehicleData.ArchitectureID,
+				vehicleData.ExemptedVehicle,
+				iepc,
+				ihpc);
+
+			
 
 
 		}
@@ -44,9 +65,6 @@ namespace TUGraz.VectoCore.OutputData.XML {
 			base.InitializeReport(modelData);
 			VehicleInformationFile.Initialize(modelData);
 		}
-
-
-
 		protected override void WriteResult(ResultEntry result)
 		{
 			base.WriteResult(result);
@@ -61,14 +79,13 @@ namespace TUGraz.VectoCore.OutputData.XML {
 			VehicleInformationFile.GenerateReport(fullReportHash);
 		}
 
-	
+
 
 		protected override void OutputReports()
 		{
 			Writer.WriteReport(ReportType.DeclarationReportManufacturerXML, ManufacturerRpt.Report);
 			Writer.WriteReport(ReportType.DeclarationReportPrimaryVehicleXML, VehicleInformationFile.Report);
 		}
-
 		#endregion
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport_0_9.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport_0_9.cs
deleted file mode 100644
index 793ada402ec842a99348ba58b8d8a08f8e50eb89..0000000000000000000000000000000000000000
--- a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport_0_9.cs
+++ /dev/null
@@ -1,279 +0,0 @@
-using System;
-using System.Linq;
-using System.Xml.Linq;
-using TUGraz.VectoCommon.Models;
-using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces;
-using TUGraz.VectoCore.Models.Simulation.Data;
-using TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile.CustomerInformationFile_0_9;
-using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter;
-using TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile;
-using TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile.VehicleInformationFile_0_1;
-
-namespace TUGraz.VectoCore.OutputData.XML
-{
-	/// <summary>
-	/// Create MRF and VIF for primary bus
-	/// </summary>
-	public class XMLDeclarationReportPrimaryVehicle_09 : XMLDeclarationReport09
-	{
-		private readonly IManufacturerReportFactory _mrfFactory;
-		private readonly IVIFReportFactory _vifFactory;
-
-		protected IXMLVehicleInformationFile VehicleInformationFile;
-
-		public override XDocument CustomerReport => null;
-
-		public override XDocument PrimaryVehicleReport => VehicleInformationFile?.Report;
-
-		public XMLDeclarationReportPrimaryVehicle_09(IReportWriter writer,
-			IManufacturerReportFactory mrfFactory,
-			ICustomerInformationFileFactory cifFactory,
-			IVIFReportFactory vifFactory) : base(writer, mrfFactory, cifFactory)
-		{
-			_mrfFactory = mrfFactory;
-			//_cifFactory = cifFactory;
-			_vifFactory = vifFactory;
-		}
-
-		public override void InitializeReport(VectoRunData modelData)
-		{
-			base.InitializeReport(modelData);
-			VehicleInformationFile.Initialize(modelData);
-		}
-
-
-
-		protected override void WriteResult(ResultEntry result)
-		{
-			ManufacturerRpt.WriteResult(result);
-			//base.WriteResult(result);
-			VehicleInformationFile.WriteResult(result);
-		}
-
-		protected override void GenerateReports()
-		{
-			ManufacturerRpt.GenerateReport();
-			var fullReportHash = GetSignature(ManufacturerRpt.Report);
-			//CustomerRpt.GenerateReport(fullReportHash);
-			VehicleInformationFile.GenerateReport(fullReportHash);
-		}
-
-
-
-		protected override void OutputReports()
-		{
-			Writer.WriteReport(ReportType.DeclarationReportManufacturerXML, ManufacturerRpt.Report);
-			Writer.WriteReport(ReportType.DeclarationReportPrimaryVehicleXML, VehicleInformationFile.Report);
-		}
-
-
-
-		protected override void InstantiateReports(VectoRunData modelData)
-		{
-			var vehicleData = modelData.VehicleData.InputData;
-			var iepc = vehicleData.Components?.IEPC != null;
-			var ihpc =
-				vehicleData.Components?.ElectricMachines?.Entries?.Count(e => e.ElectricMachine.IHPCType != "None") > 0;
-
-			ManufacturerRpt = _mrfFactory.GetManufacturerReport(vehicleData.VehicleCategory,
-				vehicleData.VehicleType,
-				vehicleData.ArchitectureID,
-				vehicleData.ExemptedVehicle,
-				iepc,
-				ihpc);
-
-			VehicleInformationFile = _vifFactory.GetVIFReport(vehicleData.VehicleCategory,
-                vehicleData.VehicleType,
-                vehicleData.ArchitectureID,
-                vehicleData.ExemptedVehicle,
-                iepc,
-                ihpc);
-
-
-		}
-
-	}
-
-    // --------------------------------------------------
-
-    /// <summary>
-    /// Create VIF of an interim (or the complete(d) step
-    /// </summary>
-    public class XMLDeclarationReportInterimVehicle_09 : XMLDeclarationReport09
-	{
-		protected readonly IVIFReportFactory _vifFactory;
-
-		protected IXMLMultistepIntermediateReport MultistepIntermediateBusReport;
-		protected readonly IVIFReportInterimFactory _interimFactory;
-
-		public XMLDeclarationReportInterimVehicle_09(IReportWriter writer,
-			IManufacturerReportFactory mrfFactory,
-			ICustomerInformationFileFactory cifFactory,
-			IVIFReportFactory vifFactory, IVIFReportInterimFactory interimFactory) : base(writer, mrfFactory, cifFactory)
-		{
-			_vifFactory = vifFactory;
-			_interimFactory = interimFactory;
-		}
-
-		#region Overrides of XMLDeclarationReport
-
-		protected override void InstantiateReports(VectoRunData modelData)
-		{
-			var vehicleData = modelData.VehicleData.InputData;
-			var iepc = vehicleData.Components?.IEPC != null;
-			var ihpc =
-				vehicleData.Components?.ElectricMachines?.Entries?.Count(e => e.ElectricMachine.IHPCType != "None") > 0;
-
-			MultistepIntermediateBusReport = _interimFactory.GetInterimVIFReport(vehicleData.VehicleCategory,
-				vehicleData.VehicleType,
-				vehicleData.ArchitectureID,
-				vehicleData.ExemptedVehicle,
-				iepc,
-				ihpc);
-		}
-
-		#endregion
-
-		public override void InitializeReport(VectoRunData modelData)
-		{
-			//_multistageBusReport =
-			//	modelData.Exempted ? new XMLMultistageExemptedBusReport() : new XMLMultistageBusReport();
-			
-			InstantiateReports(modelData);
-
-			MultistepIntermediateBusReport.Initialize(modelData);
-		}
-
-		protected override void GenerateReports()
-		{
-			MultistepIntermediateBusReport.GenerateReport();
-		}
-
-		protected override void OutputReports()
-		{
-			Writer.WriteReport(ReportType.DeclarationReportMultistageVehicleXML, MultistepIntermediateBusReport.Report);
-		}
-
-		protected override void DoStoreResult(ResultEntry entry, VectoRunData runData, IModalDataContainer modData)
-		{
-			throw new NotSupportedException();
-		}
-		protected override void WriteResult(ResultEntry result)
-		{
-			throw new NotSupportedException();
-		}
-	}
-
-
-	// --------------------------------------------------
-
-	/// <summary>
-	/// Create MRF and CIF of the complete(d) step
-	/// </summary>
-	public class XMLDeclarationReportCompletedVehicle_09 : XMLDeclarationReportCompletedVehicle
-	{
-		protected readonly ICustomerInformationFileFactory _cifFactory;
-		protected readonly IManufacturerReportFactory _mrfFactory;
-
-		public XMLDeclarationReportCompletedVehicle_09(IReportWriter writer, IManufacturerReportFactory mrfFactory,
-			ICustomerInformationFileFactory cifFactory,
-			IVIFReportFactory vifFactory) : base(writer)
-		{
-            _cifFactory = cifFactory;
-			_mrfFactory = mrfFactory;
-		}
-
-		#region Overrides of XMLDeclarationReportCompletedVehicle
-
-		protected override void InstantiateReports(VectoRunData modelData)
-		{
-			var inputData = modelData.InputData as IXMLMultistageInputDataProvider;
-			var primaryVehicle = inputData.JobInputData.PrimaryVehicle.Vehicle;
-
-			var ihpc = (primaryVehicle.Components?.ElectricMachines?.Entries)?.Count(electric => electric.ElectricMachine.IHPCType != "None") > 0;
-			var iepc = (primaryVehicle.Components?.IEPC != null);
-			ManufacturerRpt = _mrfFactory.GetManufacturerReport(
-				inputData.JobInputData.ConsolidateManufacturingStage.Vehicle.VehicleCategory,
-				inputData.JobInputData.JobType,
-				primaryVehicle.ArchitectureID,
-				primaryVehicle.ExemptedVehicle,
-				iepc,
-				ihpc);
-
-			CustomerRpt = _cifFactory.GetCustomerReport(
-				inputData.JobInputData.ConsolidateManufacturingStage.Vehicle.VehicleCategory,
-				inputData.JobInputData.JobType,
-				primaryVehicle.ArchitectureID,
-				primaryVehicle.ExemptedVehicle,
-				iepc,
-				ihpc);
-
-		}
-
-		#endregion
-	}
-	// --------------------------------------------------
-
-	/// <summary>
-	/// Create MRF and CIF for lorries
-	/// </summary>
-	public class XMLDeclarationReport09 : XMLDeclarationReport
-	{
-		protected readonly IManufacturerReportFactory _mrfFactory;
-		protected readonly ICustomerInformationFileFactory _cifFactory;
-
-		public XMLDeclarationReport09(IReportWriter writer, IManufacturerReportFactory mrfFactory, ICustomerInformationFileFactory cifFactory) : base(writer, true)
-		{
-			_mrfFactory = mrfFactory;
-			_cifFactory = cifFactory;
-		}
-
-		protected override void InstantiateReports(VectoRunData modelData)
-		{
-			var vehicleData = modelData.VehicleData.InputData;
-			var iepc = vehicleData.Components?.IEPC != null;
-			var ihpc =
-				vehicleData.Components?.ElectricMachines?.Entries?.Count(e => e.ElectricMachine.IHPCType != "None") > 0;
-
-			ManufacturerRpt = _mrfFactory.GetManufacturerReport(vehicleData.VehicleCategory,
-				vehicleData.VehicleType,
-				vehicleData.ArchitectureID,
-				vehicleData.ExemptedVehicle,
-				iepc,
-				ihpc);
-			CustomerRpt = _cifFactory.GetCustomerReport(vehicleData.VehicleCategory,
-				vehicleData.VehicleType,
-				vehicleData.ArchitectureID,
-				vehicleData.ExemptedVehicle,
-				iepc,
-				ihpc);
-		}
-
-	}
-
-
-	public class XMLDeclarationReportSingleBus09 : XMLDeclarationReport09
-	{
-		
-		public XMLDeclarationReportSingleBus09(IReportWriter writer, IManufacturerReportFactory mrfFactory, ICustomerInformationFileFactory cifFactory) : base(writer, mrfFactory, cifFactory)
-		{ }
-
-		protected override void InstantiateReports(VectoRunData modelData)
-		{
-			var vehicleData = modelData.VehicleData.InputData;
-			var iepc = vehicleData.Components?.IEPC != null;
-			var ihpc =
-				vehicleData.Components?.ElectricMachines?.Entries?.Count(e => e.ElectricMachine.IHPCType != "None") > 0;
-
-			ManufacturerRpt = _mrfFactory.GetManufacturerReport(vehicleData.VehicleCategory,
-				vehicleData.VehicleType,
-				vehicleData.ArchitectureID,
-				vehicleData.ExemptedVehicle,
-				iepc,
-				ihpc);
-			// do not instantiate customer report for single bus - not fully implemented, not needed in the final application
-		}
-
-	}
-
-}
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/Integration/Declaration/HeavyLorry/LorrySimulation.cs b/VectoCore/VectoCoreTest/Integration/Declaration/HeavyLorry/LorrySimulation.cs
index 90ec851b56e1f5ab518dcaea912232c9d137e3f7..a7721e1234a3fc901facc90afe22dd332f927b13 100644
--- a/VectoCore/VectoCoreTest/Integration/Declaration/HeavyLorry/LorrySimulation.cs
+++ b/VectoCore/VectoCoreTest/Integration/Declaration/HeavyLorry/LorrySimulation.cs
@@ -74,6 +74,8 @@ public class LorrySimulation
 
 	private StandardKernel _kernel;
 	private IXMLInputDataReader _xmlReader;
+	private XmlSchemaSet _cifSchema = XMLValidator.GetXMLSchema(XmlDocumentType.CustomerReport);
+	private XmlSchemaSet _mrfSchema = XMLValidator.GetXMLSchema(XmlDocumentType.ManufacturerReport);
 
 	[OneTimeSetUp]
 	public void OneTimeSetup()
@@ -153,10 +155,8 @@ public class LorrySimulation
 
 		var mrfPath = fileWriter.GetWrittenFiles()[ReportType.DeclarationReportManufacturerXML];
 		var cifPath = fileWriter.GetWrittenFiles()[ReportType.DeclarationReportCustomerXML];
-		var cifSchema = XMLValidator.GetXMLSchema(XmlDocumentType.CustomerReport);
-		var mrfSchema = XMLValidator.GetXMLSchema(XmlDocumentType.ManufacturerReport);
-		XDocument.Load(mrfPath).Validate(mrfSchema, (sender, args) => Assert.Fail(args.Message));
-		XDocument.Load(cifPath).Validate(cifSchema, (sender, args) => Assert.Fail(args.Message));
+		XDocument.Load(mrfPath).Validate(_mrfSchema, (sender, args) => Assert.Fail(args.Message));
+		XDocument.Load(cifPath).Validate(_cifSchema, (sender, args) => Assert.Fail(args.Message));
 
 		VSUM_order_test(fileWriter.SumFileName, jobContainer.Runs.First().Run.GetContainer().RunData);
 	}
@@ -943,7 +943,7 @@ public class LorrySimulation
 		if (report == null) {
 			return; //also used in engineering mode
 		}
-		if (report is XMLDeclarationReport09 rep09) {
+		if (report is XMLDeclarationReport rep09) {
 			
 
 			GetField("_resultCount", rep09.GetType()).SetValue(rep09, count);
diff --git a/VectoCore/VectoCoreTest/Integration/Multistage/MultistageVehicleTest.cs b/VectoCore/VectoCoreTest/Integration/Multistage/MultistageVehicleTest.cs
index 8e4b47af188ab43d1b31cf8ad8aa5de9232a1102..483ad9a886e1d641ba93940f13d3da7c3f883a90 100644
--- a/VectoCore/VectoCoreTest/Integration/Multistage/MultistageVehicleTest.cs
+++ b/VectoCore/VectoCoreTest/Integration/Multistage/MultistageVehicleTest.cs
@@ -22,6 +22,8 @@ using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory;
 using TUGraz.VectoCore.OutputData;
 using TUGraz.VectoCore.OutputData.FileIO;
 using TUGraz.VectoCore.OutputData.XML;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile.VehicleInformationFile_0_1;
 using TUGraz.VectoCore.Tests.Integration.Declaration;
 using TUGraz.VectoCore.Tests.Models.Simulation;
 using TUGraz.VectoCore.Utils;
@@ -427,8 +429,10 @@ namespace TUGraz.VectoCore.Tests.Integration.Multistage
 
 			var writer = new FileOutputWriter(outputFile);
 
-            var xmlreport = new XMLDeclarationReportPrimaryVehicle(writer);
-            var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, writer);
+			var mrfFactory = _kernel.Get<IManufacturerReportFactory>();
+			var vifFactory = _kernel.Get<IVIFReportFactory>();
+			var xmlreport = new XMLDeclarationReportPrimaryVehicle(writer, mrfFactory, vifFactory);
+			var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, writer, xmlreport);
 			factory.WriteModalResults = true;
 			factory.Validate = false;
 
diff --git a/VectoCore/VectoCoreTest/Integration/XMLReportTest.cs b/VectoCore/VectoCoreTest/Integration/XMLReportTest.cs
index f54f2bc4184df981ed98ef202d6fbc33c16b0a96..df989b590310b9f545d3776d01250d4d6244ff92 100644
--- a/VectoCore/VectoCoreTest/Integration/XMLReportTest.cs
+++ b/VectoCore/VectoCoreTest/Integration/XMLReportTest.cs
@@ -49,6 +49,8 @@ using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory;
 using TUGraz.VectoCore.OutputData;
 using TUGraz.VectoCore.OutputData.FileIO;
 using TUGraz.VectoCore.OutputData.XML;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile.CustomerInformationFile_0_9;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter;
 using TUGraz.VectoCore.Tests.Utils;
 using TUGraz.VectoCore.Tests.XML;
 using TUGraz.VectoCore.Utils;
@@ -100,9 +102,9 @@ namespace TUGraz.VectoCore.Tests.Integration
 			// no need to run the simulation, we only check whether the meta-data is correct, no results are considered
 			//jobContainer.Execute();
 			//jobContainer.WaitFinished();
-			(xmlReport as XMLDeclarationReport09).DoWriteReport();
+			(xmlReport as XMLDeclarationReport).DoWriteReport();
 
-			var manufacturerReport = (xmlReport as XMLDeclarationReport09).FullReport;
+			var manufacturerReport = (xmlReport as XMLDeclarationReport).FullReport;
 
 			Assert.AreEqual(5, manufacturerReport.XPathSelectElement("//*[local-name()='VehicleGroup']")?.Value.ToInt());
 
@@ -155,9 +157,9 @@ namespace TUGraz.VectoCore.Tests.Integration
             // no need to run the simulation, we only check whether the meta-data is correct, no results are considered
             jobContainer.Execute();
             jobContainer.WaitFinished();
-			(xmlReport as XMLDeclarationReport09).DoWriteReport();
+			(xmlReport as XMLDeclarationReport).DoWriteReport();
 
-			var customerReport = (xmlReport as XMLDeclarationReport09).CustomerReport;
+			var customerReport = (xmlReport as XMLDeclarationReport).CustomerReport;
 
             //check if the customerReport contains the summary XML-Element
 			Assert.AreNotEqual(null,customerReport.XPathSelectElement("//*[local-name()='Summary']"));
@@ -190,10 +192,10 @@ namespace TUGraz.VectoCore.Tests.Integration
 			jobContainer.Execute();
 			jobContainer.WaitFinished();
 
-			var mrfValidator = GetValidator((xmlReport as XMLDeclarationReport09).FullReport);
+			var mrfValidator = GetValidator((xmlReport as XMLDeclarationReport).FullReport);
 			mrfValidator.ValidateXML(XmlDocumentType.DeclarationComponentData | XmlDocumentType.DeclarationJobData | XmlDocumentType.CustomerReport | XmlDocumentType.ManufacturerReport);
 
-			var cifValidator = GetValidator((xmlReport as XMLDeclarationReport09).CustomerReport);
+			var cifValidator = GetValidator((xmlReport as XMLDeclarationReport).CustomerReport);
 			cifValidator.ValidateXML(XmlDocumentType.DeclarationComponentData | XmlDocumentType.DeclarationJobData | XmlDocumentType.CustomerReport | XmlDocumentType.ManufacturerReport);
 
 			//var monitoringValidator = GetValidator(xmlReport.MonitoringReport);
@@ -279,9 +281,9 @@ namespace TUGraz.VectoCore.Tests.Integration
 					//};
 					jobContainer.AddRuns(runsFactory);
 
-					(xmlReport as XMLDeclarationReport09).DoWriteReport();
+					(xmlReport as XMLDeclarationReport).DoWriteReport();
 
-					var manufacturerReport = (xmlReport as XMLDeclarationReport09).FullReport;
+					var manufacturerReport = (xmlReport as XMLDeclarationReport).FullReport;
 
 					Assert.AreEqual(
 						ptoGearWheel != "none",
@@ -319,23 +321,23 @@ namespace TUGraz.VectoCore.Tests.Integration
 			// no need to run the simulation, we only check whether the meta-data is correct, no results are considered
 			//jobContainer.Execute();
 			//jobContainer.WaitFinished();
-			(xmlReport as XMLDeclarationReport09).DoWriteReport();
+			(xmlReport as XMLDeclarationReport).DoWriteReport();
 
 			
 			var inputHash = VectoHash.Load(jobfile);
 
-			var mrfDigestData = new DigestData((xmlReport as XMLDeclarationReport09).FullReport.Document.XPathSelectElement("//*[local-name()='InputDataSignature']"));
+			var mrfDigestData = new DigestData((xmlReport as XMLDeclarationReport).FullReport.Document.XPathSelectElement("//*[local-name()='InputDataSignature']"));
 			var mrfInputDigest = inputHash.ComputeHash(mrfDigestData.CanonicalizationMethods, mrfDigestData.DigestMethod);
 
 			Assert.AreEqual(mrfInputDigest, mrfDigestData.DigestValue);
 
-			var cifDigestData = new DigestData((xmlReport as XMLDeclarationReport09).CustomerReport.Document.XPathSelectElement("//*[local-name()='InputDataSignature']"));
+			var cifDigestData = new DigestData((xmlReport as XMLDeclarationReport).CustomerReport.Document.XPathSelectElement("//*[local-name()='InputDataSignature']"));
 			var cifInputDigest = inputHash.ComputeHash(cifDigestData.CanonicalizationMethods, cifDigestData.DigestMethod);
 
 			Assert.AreEqual(cifInputDigest, cifDigestData.DigestValue);
 
 			var mrfHash = VectoHash.Load(writer.XMLFullReportName);
-			var mrfCifDigestData = new DigestData((xmlReport as XMLDeclarationReport09).CustomerReport.Document.XPathSelectElement("//*[local-name()='ManufacturerRecordSignature']"));
+			var mrfCifDigestData = new DigestData((xmlReport as XMLDeclarationReport).CustomerReport.Document.XPathSelectElement("//*[local-name()='ManufacturerRecordSignature']"));
 			var mrfCifDigest = mrfHash.ComputeHash(mrfCifDigestData.CanonicalizationMethods, mrfCifDigestData.DigestMethod);
 
 			Assert.AreEqual(mrfCifDigest, mrfCifDigestData.DigestValue);
@@ -368,7 +370,7 @@ namespace TUGraz.VectoCore.Tests.Integration
 			// no need to run the simulation, we only check whether the meta-data is correct, no results are considered
 			//jobContainer.Execute();
 			//jobContainer.WaitFinished();
-			(xmlReport as XMLDeclarationReport09).DoWriteReport();
+			(xmlReport as XMLDeclarationReport).DoWriteReport();
 		}
 	}
 }
diff --git a/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationAdapterCreateVocationalVehicleTest.cs b/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationAdapterCreateVocationalVehicleTest.cs
index 65a174c01fb33e6fd621299405062ca63e3a02d7..169f6f2b96419dfb4a013bd52e5884dfefcb81bf 100644
--- a/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationAdapterCreateVocationalVehicleTest.cs
+++ b/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationAdapterCreateVocationalVehicleTest.cs
@@ -11,6 +11,8 @@ using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory;
 using TUGraz.VectoCore.OutputData;
 using TUGraz.VectoCore.OutputData.FileIO;
 using TUGraz.VectoCore.OutputData.XML;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile.CustomerInformationFile_0_9;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter;
 using TUGraz.VectoCore.Utils;
 
 namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter
@@ -60,7 +62,6 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter
 			var xmlReport = _kernel.Get<IXMLDeclarationReportFactory>().CreateReport(dataProvider, writer);
 			var sumData = new SummaryDataContainer(null);
 			var jobContainer = new JobContainer(sumData);
-
 			var runsFactory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, dataProvider, null, xmlReport);
 			runsFactory.WriteModalResults = false;
 			runsFactory.Validate = false;
@@ -69,9 +70,9 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter
 			// no need to run the simulation, we only check whether the meta-data is correct, no results are considered
 			//jobContainer.Execute();
 			//jobContainer.WaitFinished();
-			(xmlReport as XMLDeclarationReport09).DoWriteReport();
+			(xmlReport as XMLDeclarationReport).DoWriteReport();
 
-			var manufacturerReport = (xmlReport as XMLDeclarationReport09).FullReport;
+			var manufacturerReport = (xmlReport as XMLDeclarationReport).FullReport;
 
 			Assert.IsFalse(XmlConvert.ToBoolean(manufacturerReport.XPathSelectElement(XMLHelper.QueryLocalName(XMLNames.Vehicle_VocationalVehicle))?.Value ?? ""));
 		}
diff --git a/VectoCore/VectoCoreTest/Reports/SumWriterTest.cs b/VectoCore/VectoCoreTest/Reports/SumWriterTest.cs
index cc8e6960533646afb340980b39e2e56573ea5e27..6c850242d0ecd1881f49be96a86743d8555ef64f 100644
--- a/VectoCore/VectoCoreTest/Reports/SumWriterTest.cs
+++ b/VectoCore/VectoCoreTest/Reports/SumWriterTest.cs
@@ -53,6 +53,8 @@ using TUGraz.VectoCore.InputData.Reader.ComponentData;
 using TUGraz.VectoCore.Models.Declaration;
 using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory;
 using TUGraz.VectoCore.Models.SimulationComponent.Data;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile.CustomerInformationFile_0_9;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter;
 
 namespace TUGraz.VectoCore.Tests.Reports
 {
diff --git a/VectoMockup/VectoMockup/Reports/MockupReportFactory.cs b/VectoMockup/VectoMockup/Reports/MockupReportFactory.cs
index 7d35d9451f2a52e0e790076380920d5526e2f7fd..e841f6e9fc8155059206e663083117772cd31ba2 100644
--- a/VectoMockup/VectoMockup/Reports/MockupReportFactory.cs
+++ b/VectoMockup/VectoMockup/Reports/MockupReportFactory.cs
@@ -41,7 +41,7 @@ namespace TUGraz.VectoMockup.Reports
                 case IMultistepBusInputDataProvider multistageBusInputDataProvider:
                     break;
                 case ISingleBusInputDataProvider singleBusInputDataProvider:
-                    return new XMLDeclarationReport(outputWriter);
+                    return new XMLDeclarationReport(outputWriter, _mrfFactory, _cifFactory);
                 case IDeclarationInputDataProvider declarationInputDataProvider:
                     return CreateDeclarationReport(declarationInputDataProvider, outputWriter);
                 case IMultiStageTypeInputData multiStageTypeInputData:
@@ -106,7 +106,8 @@ namespace TUGraz.VectoMockup.Reports
                 {
                     case VehicleCategory.HeavyBusCompletedVehicle:
                         throw new NotImplementedException();
-                        return new XMLDeclarationReportCompletedVehicle(outputDataWriter)
+						return new XMLDeclarationReportCompletedVehicle(outputDataWriter, _mrfFactory, _cifFactory,
+							_vifFactory)
                         {
                             PrimaryVehicleReportInputData = declarationInputDataProvider.PrimaryVehicleData,
                         };
diff --git a/VectoMockup/VectoMockup/Reports/XMLDeclarationMockupPrimaryReport.cs b/VectoMockup/VectoMockup/Reports/XMLDeclarationMockupPrimaryReport.cs
index be9a19230fac2c216501ae1ee1f2f120676780e5..774218a674bf7fd6e349d2a0e193ccb7afe56642 100644
--- a/VectoMockup/VectoMockup/Reports/XMLDeclarationMockupPrimaryReport.cs
+++ b/VectoMockup/VectoMockup/Reports/XMLDeclarationMockupPrimaryReport.cs
@@ -15,7 +15,7 @@ namespace TUGraz.VectoMockup.Reports
 	/// <summary>
 	/// Create MRF and VIF for primary bus
 	/// </summary>
-	public class XMLDeclarationMockupPrimaryReport : XMLDeclarationReportPrimaryVehicle_09
+	public class XMLDeclarationMockupPrimaryReport : XMLDeclarationReportPrimaryVehicle
 	{
 		private readonly bool _exempted;
 
@@ -25,13 +25,12 @@ namespace TUGraz.VectoMockup.Reports
 			IVIFReportFactory vifFactory,
 			bool exempted) : base(writer,
 			mrfFactory,
-			cifFactory,
 			vifFactory)
 		{
 			_exempted = exempted;
 		}
 
-		#region Overrides of XMLDeclarationReportPrimaryVehicle_09
+		#region Overrides of XMLDeclarationReportPrimaryVehicle
 
 		protected override void DoStoreResult(ResultEntry entry, VectoRunData runData, IModalDataContainer modData)
 		{
diff --git a/VectoMockup/VectoMockup/Reports/XMLDeclarationMockupReport.cs b/VectoMockup/VectoMockup/Reports/XMLDeclarationMockupReport.cs
index 8625f3474be64a73d13de775ecfbf07e5022e97b..6b73c358e49cbe6bdb626493d4330be13ce80e7d 100644
--- a/VectoMockup/VectoMockup/Reports/XMLDeclarationMockupReport.cs
+++ b/VectoMockup/VectoMockup/Reports/XMLDeclarationMockupReport.cs
@@ -15,7 +15,7 @@ namespace TUGraz.VectoMockup.Reports
 	/// <summary>
 	/// Create MRF and CIF for lorries
 	/// </summary>
-	internal class XMLDeclarationMockupReport : XMLDeclarationReport09
+	internal class XMLDeclarationMockupReport : XMLDeclarationReport
     {
 		private readonly bool _exempted;
 
diff --git a/VectoMockup/VectoMockup/Reports/XMLDeclarationMockupReportCompletedVehicle.cs b/VectoMockup/VectoMockup/Reports/XMLDeclarationMockupReportCompletedVehicle.cs
index 0703c33dc2efbb98ef8838cfe86cd4e704be58dc..bd25165ae8cf62bf044bde24ba00a7b94d85f9fa 100644
--- a/VectoMockup/VectoMockup/Reports/XMLDeclarationMockupReportCompletedVehicle.cs
+++ b/VectoMockup/VectoMockup/Reports/XMLDeclarationMockupReportCompletedVehicle.cs
@@ -20,7 +20,7 @@ namespace TUGraz.VectoMockup.Reports
 	/// <summary>
 	/// Create VIF of an interim (or the complete(d) step
 	/// </summary>
-	public class XMLDeclarationMockupReportInterimVehicle : XMLDeclarationReportInterimVehicle_09
+	public class XMLDeclarationMockupReportInterimVehicle : XMLDeclarationReportInterimVehicle
 	{
 		private readonly bool _exempted;
 
@@ -37,7 +37,7 @@ namespace TUGraz.VectoMockup.Reports
 	/// <summary>
 		/// Create MRF and CIF of the complete(d) step
 		/// </summary>
-	public class XMLDeclarationMockupReportCompletedVehicle : XMLDeclarationReportCompletedVehicle_09
+	public class XMLDeclarationMockupReportCompletedVehicle : XMLDeclarationReportCompletedVehicle
 	{
 		//private readonly IManufacturerReportFactory _mrfFactory;
 		//private readonly ICustomerInformationFileFactory _cifFactory;