From a9dab0eebe8a44565d1e70b34a9691c54a9043c3 Mon Sep 17 00:00:00 2001
From: Harald Martini <harald.martini@student.tugraz.at>
Date: Thu, 23 Jun 2022 10:57:34 +0200
Subject: [PATCH] added tests for exempted vehicles, fixed missing OutputType
 in several classes

---
 .../Resources/XMLNames.Designer.cs            | 18 +++++++
 .../VectoCommon/Resources/XMLNames.resx       |  6 +++
 ...LDeclarationExemptedVehicleDataProvider.cs | 12 ++++-
 .../CIFNinjectModule.cs                       | 24 +++++++++
 .../CIFWriter/VehicleWriter.cs                | 45 ++++++++++++++++
 .../CustomerInformationFile.cs                | 37 +++++++++++--
 .../ICustomerInformationFileFactory.cs        |  6 ++-
 .../AbstractManufacturerReport.cs             |  4 +-
 .../IManufacturerReportFactory.cs             |  6 +++
 .../MRFNinjectModule.cs                       | 40 ++++++++++++++
 .../CompletedBusManufacturerReport.cs         | 24 +++++++--
 .../LorryManufacturerReports.cs               | 16 ++++++
 .../PrimaryBusManufacturerReports.cs          | 46 ++++++++--------
 .../Lorry/LorryGeneralVehicleOutputGroup.cs   |  2 +-
 .../MRFVehicleWriter.cs                       | 53 ++++++++++++++++++-
 .../VectoMockup/Ninject/CIFMockupModule.cs    | 14 ++++-
 .../VectoMockup/Ninject/MRFMockupModule.cs    | 21 ++++++--
 .../VectoMockupTest/MockUpVectoTest.cs        |  2 +-
 18 files changed, 332 insertions(+), 44 deletions(-)

diff --git a/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs b/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs
index a926f9db76..180b235fdd 100644
--- a/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs
+++ b/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs
@@ -1482,6 +1482,24 @@ namespace TUGraz.VectoCommon.Resources {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to Exempted_CompletedBusOutputType.
+        /// </summary>
+        public static string CIF_OutputDataType_Exempted_CompletedBusOutputType {
+            get {
+                return ResourceManager.GetString("CIF_OutputDataType_Exempted_CompletedBusOutputType", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Exempted_LorryOutputType.
+        /// </summary>
+        public static string CIF_OutputDataType_Exempted_LorryOutputType {
+            get {
+                return ResourceManager.GetString("CIF_OutputDataType_Exempted_LorryOutputType", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to HEV_IEPC_S_LorryOutputType.
         /// </summary>
diff --git a/VectoCommon/VectoCommon/Resources/XMLNames.resx b/VectoCommon/VectoCommon/Resources/XMLNames.resx
index df5ee1b277..47a8c6793d 100644
--- a/VectoCommon/VectoCommon/Resources/XMLNames.resx
+++ b/VectoCommon/VectoCommon/Resources/XMLNames.resx
@@ -1974,4 +1974,10 @@
 <data name="CIF_OutputDataType_PEV_IEPC_LorryOutputType" xml:space="preserve">
 	<value>PEV_IEPC_LorryOutputType</value>
 </data>
+<data name="CIF_OutputDataType_Exempted_LorryOutputType" xml:space="preserve">
+	<value>Exempted_LorryOutputType</value>
+</data>
+<data name="CIF_OutputDataType_Exempted_CompletedBusOutputType" xml:space="preserve">
+	<value>Exempted_CompletedBusOutputType</value>
+</data>
 </root>
\ No newline at end of file
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/v24/XMLDeclarationExemptedVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/v24/XMLDeclarationExemptedVehicleDataProvider.cs
index a4458e285e..968725b0a7 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/v24/XMLDeclarationExemptedVehicleDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/v24/XMLDeclarationExemptedVehicleDataProvider.cs
@@ -30,7 +30,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider.v24
 
 		#endregion
 
-		public override VehicleCategory VehicleCategory => VehicleCategory.HeavyBusPrimaryVehicle;
+		public override VehicleCategory VehicleCategory => VehicleCategoryHelper.Parse(GetString(XMLNames.ChassisConfiguration));
 
 		public override bool ExemptedVehicle => true;
 
@@ -90,7 +90,15 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider.v24
 		public new static readonly string QUALIFIED_XSD_TYPE =
 			XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE);
 
-		public XMLDeclarationExemptedHeavyLorryDataProviderV24(IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) : base(jobData, xmlNode, sourceFile) { }
+		public XMLDeclarationExemptedHeavyLorryDataProviderV24(IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile)
+			: base(jobData, xmlNode, sourceFile) { }
+
+
+		#region Overrides of XMLDeclarationVehicleDataProviderV10
+
+		public override Kilogram CurbMassChassis => GetDouble(XMLNames.CorrectedActualMass).SI<Kilogram>();
+
+		#endregion
 	}
 
 	// ---------------------------------------------------------------------------------------
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 4facfda0f4..cfdfe3d11d 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
@@ -29,6 +29,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation
 				nameCombinationMethod, 6, 6, typeof(ICustomerInformationFileFactory).GetMethod(nameof(ICustomerInformationFileFactory
 					.GetCustomerReport)))).InSingletonScope();
 
+			#region Lorry CIF
 			Bind<IXMLCustomerReport>().To<ConventionalLorry_CIF>().Named(nameCombinationMethod(
 				ToParams(VehicleCategoryHelper.Lorry, VectoSimulationJobType.ConventionalVehicle,
 					ArchitectureID.UNKNOWN, false, false, false)));
@@ -89,6 +90,16 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation
 					true,
 					false)));
 
+			Bind<IXMLCustomerReport>().To<Exempted_Lorry_CIF>().Named(nameCombinationMethod.Invoke(
+				ToParams(VehicleCategoryHelper.Lorry,
+					VectoSimulationJobType.ConventionalVehicle,
+					ArchitectureID.UNKNOWN,
+					true,
+					false,
+					false)));
+			#endregion
+			#region CompletedBUsCIF
+
 			Bind<IXMLCustomerReport>().To<Conventional_CompletedBusCIF>().Named(nameCombinationMethod.Invoke(
 				ToParams(VehicleCategoryHelper.CompletedBus,
 					VectoSimulationJobType.ConventionalVehicle,
@@ -121,6 +132,14 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation
 					false,
 					false)));
 
+			Bind<IXMLCustomerReport>().To<Exempted_CompletedBusCIF>().Named(nameCombinationMethod.Invoke(
+				ToParams(VehicleCategoryHelper.CompletedBus,
+					VectoSimulationJobType.ConventionalVehicle,
+					ArchitectureID.UNKNOWN,
+					true,
+					false,
+					false)));
+			#endregion
 
 			#region VehicleTypes
 			Bind<IXmlTypeWriter>().To<CIFConventionalLorryVehicleWriter>().When(AccessedViaCIFFactory)
@@ -153,9 +172,14 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation
 			Bind<IXmlTypeWriter>().To<CIF_PEV_IEPC_LorryVehicleWriter>().When(AccessedViaCIFFactory)
 				.NamedLikeFactoryMethod((ICustomerInformationFileFactory f) => f.GetPEV_IEPC_LorryVehicleType());
 
+			Bind<IXmlTypeWriter>().To<CIF_Exempted_LorryVehicleWriter>().When(AccessedViaCIFFactory)
+				.NamedLikeFactoryMethod((ICustomerInformationFileFactory f) => f.GetExempted_LorryVehicleType());
+
 			Bind<IXmlTypeWriter>().To<CIF_ConventionalCompletedBusVehicleWriter>().When(AccessedViaCIFFactory)
 				.NamedLikeFactoryMethod((ICustomerInformationFileFactory f) => f.GetConventional_CompletedBusVehicleType());
 
+			Bind<IXmlTypeWriter>().To<CIF_ExemptedCompletedBusVehicleWriter>().When(AccessedViaCIFFactory)
+				.NamedLikeFactoryMethod((ICustomerInformationFileFactory f) => f.GetExemptedCompletedBusVehicleType());
 			#endregion
 			#region VehicleGroups
 			Bind<IReportVehicleOutputGroup>().To<GeneralVehicleOutputSequenceGroupCif>().When(AccessedViaCIFFactory)
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/CIFWriter/VehicleWriter.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/CIFWriter/VehicleWriter.cs
index f4f9cf5e31..59c4c5d765 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/CIFWriter/VehicleWriter.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/CIFWriter/VehicleWriter.cs
@@ -306,6 +306,32 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation
 		#endregion
 	}
 
+	public class CIF_Exempted_LorryVehicleWriter : VehicleWriter
+	{
+		public CIF_Exempted_LorryVehicleWriter(ICustomerInformationFileFactory cifFactory, IManufacturerReportFactory mrfFactory) : base(cifFactory, mrfFactory) { }
+
+		#region Overrides of VehicleWriter
+
+		public override XElement GetElement(IDeclarationInputDataProvider inputData)
+		{
+			var vehicleData = inputData.JobInputData.Vehicle;
+			return new XElement(_cif + XMLNames.Component_Vehicle,
+				_cifFactory.GetGeneralVehicleSequenceGroupWriter().GetElements(vehicleData),
+				new XElement(_cif + "VehicleGroupCO2", "todo"),
+				new XElement(_cif + XMLNames.Component_Manufacturer, vehicleData.Manufacturer),
+				new XElement(_cif + XMLNames.Component_ManufacturerAddress, vehicleData.ManufacturerAddress),
+				new XElement(_cif + XMLNames.Component_Model, vehicleData.Model),
+				
+				new XElement(_cif + XMLNames.CorrectedActualMass, vehicleData.CurbMassChassis),
+				new XElement(_cif + XMLNames.Vehicle_SleeperCab, vehicleData.SleeperCab),
+				new XElement(_cif + XMLNames.Vehicle_ZeroEmissionVehicle, vehicleData.ZeroEmissionVehicle),
+				new XElement(_cif + XMLNames.Vehicle_HybridElectricHDV, vehicleData.HybridElectricHDV)
+			);
+		}
+
+		#endregion
+	}
+
 	public class CIF_ConventionalCompletedBusVehicleWriter : VehicleWriter
 	{
 		public CIF_ConventionalCompletedBusVehicleWriter(ICustomerInformationFileFactory cifFactory, IManufacturerReportFactory mrfFactory) : base(cifFactory, mrfFactory) { }
@@ -325,4 +351,23 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation
 
 		#endregion
 	}
+
+
+
+
+
+
+	public class CIF_ExemptedCompletedBusVehicleWriter : VehicleWriter
+	{
+		public CIF_ExemptedCompletedBusVehicleWriter(ICustomerInformationFileFactory cifFactory, IManufacturerReportFactory mrfFactory) : base(cifFactory, mrfFactory) { }
+
+		#region Overrides of VehicleWriter
+
+		public override XElement GetElement(IDeclarationInputDataProvider inputData)
+		{
+			throw new NotImplementedException();
+		}
+
+		#endregion
+	}
 }
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 d732379fb5..27077ebcb9 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
@@ -167,6 +167,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation
 		#endregion
 	}
 
+
+
 	public class PEV_IEPC_Lorry_CIF : CustomerInformationFile
 	{
 		public override string OutputDataType => XMLNames.CIF_OutputDataType_PEV_IEPC_LorryOutputType;
@@ -182,18 +184,28 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation
 		#endregion
 	}
 
-    #endregion
-
 
+	public class Exempted_Lorry_CIF : CustomerInformationFile
+	{
+		public Exempted_Lorry_CIF(ICustomerInformationFileFactory cifFactory) : base(cifFactory) { }
 
+		#region Overrides of AbstractCustomerReport
 
+		public override string OutputDataType => XMLNames.CIF_OutputDataType_Exempted_LorryOutputType;
 
+		public override void InitializeVehicleData(IDeclarationInputDataProvider inputData)
+		{
+			Vehicle = _cifFactory.GetExempted_LorryVehicleType().GetElement(inputData);
+		}
 
+		#endregion
+	}
 
+	#endregion
 
 
-    #region CompletedBus
-    public class Conventional_CompletedBusCIF : CustomerInformationFile
+	#region CompletedBus
+	public class Conventional_CompletedBusCIF : CustomerInformationFile
 	{
 		public override string OutputDataType => "Conventional_CompletedBusOutputType";
 
@@ -234,5 +246,22 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation
 		}
 	}
 
+
+	public class Exempted_CompletedBusCIF : CustomerInformationFile
+	{
+		public Exempted_CompletedBusCIF(ICustomerInformationFileFactory cifFactory) : base(cifFactory) { }
+
+		#region Overrides of AbstractCustomerReport
+
+		public override string OutputDataType => XMLNames.CIF_OutputDataType_Exempted_CompletedBusOutputType;
+
+		public override void InitializeVehicleData(IDeclarationInputDataProvider inputData)
+		{
+			Vehicle = _cifFactory.GetExemptedCompletedBusVehicleType().GetElement(inputData);
+		}
+
+		#endregion
+	}
+
 	#endregion
 }
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/ICustomerInformationFileFactory.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/ICustomerInformationFileFactory.cs
index 835445c05e..8adb4ed243 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/ICustomerInformationFileFactory.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/CustomerInformationFile_0_9/ICustomerInformationFileFactory.cs
@@ -28,11 +28,14 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation
 		IXmlTypeWriter GetPEV_E4_LorryVehicleType();
 		IXmlTypeWriter GetPEV_IEPC_LorryVehicleType();
 
+		IXmlTypeWriter GetExempted_LorryVehicleType();
 
 		IXmlTypeWriter GetConventional_CompletedBusVehicleType();
 		IXmlTypeWriter GetHEV_CompletedBusVehicleType();
 		IXmlTypeWriter GetPEV_CompletedBusVehicleType();
 
+		IXmlTypeWriter GetExemptedCompletedBusVehicleType();
+
 
 		IReportVehicleOutputGroup GetGeneralVehicleSequenceGroupWriter();
 		IReportOutputGroup GetLorryGeneralVehicleSequenceGroupWriter();
@@ -50,6 +53,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation
 		IReportOutputGroup GetPEV_VehicleSequenceGroupWriter();
 		IReportOutputGroup GetCompletedBusVehicleTypeGroup();
 		IReportCompletedBusOutputGroup GetGeneralVehicleSequenceGroupWriterCompletedBus();
-	
+
+
 	}
 }
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 b8187271f2..38f3e6df54 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
@@ -15,9 +15,7 @@ using TUGraz.VectoCore.Utils;
 
 namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9
 {
-
-
-	internal abstract class AbstractManufacturerReport : IXMLManufacturerReport
+	public abstract class AbstractManufacturerReport : IXMLManufacturerReport
     {
         protected XNamespace xsi = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance");
 		public static XNamespace Mrf => XNamespace.Get("urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.9");
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/IManufacturerReportFactory.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/IManufacturerReportFactory.cs
index 4bc193b495..4b0afcf564 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/IManufacturerReportFactory.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/IManufacturerReportFactory.cs
@@ -24,6 +24,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.
 		IXmlTypeWriter GetPEV_E4_LorryVehicleType();
 		IXmlTypeWriter GetPEV_IEPC_LorryVehicleType();
 
+		IXmlTypeWriter GetExempted_LorryVehicleType();
 
 
 
@@ -40,10 +41,14 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.
 		IXmlTypeWriter GetPEV_E4_PrimaryBusVehicleType();
 		IXmlTypeWriter GetPEV_IEPC_PrimaryBusVehicleType();
 
+		IXmlTypeWriter GetExempted_PrimaryBusVehicleType();
+
 		IXmlTypeWriter GetConventional_CompletedBusVehicleType();
 		IXmlTypeWriter GetHEV_CompletedBusVehicleType();
 		IXmlTypeWriter GetPEV_CompletedBusVehicleType();
 
+		IXmlTypeWriter GetExempted_CompletedBusVehicleType();
+
 
 		IXmlTypeWriter GetConventionalLorryComponentsType();
 		IXmlTypeWriter GetHEV_Px_IHCP_LorryComponentsType();
@@ -137,6 +142,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.
 		IReportVehicleOutputGroup GetCompletedBusDimensionSequenceGroup();
 		IMrfBusAuxGroup GetCompletedBus_HVACSystemGroup();
 		IMrfVehicleType GetBoostingLimitationsType();
+
 	}
 
 
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/MRFNinjectModule.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/MRFNinjectModule.cs
index f1af3df91d..d232b241ca 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/MRFNinjectModule.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/MRFNinjectModule.cs
@@ -86,6 +86,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.
 				6, 6, typeof(IManufacturerReportFactory).GetMethod(nameof(IManufacturerReportFactory.GetManufacturerReport)))).InSingletonScope();
 			Bind<IXMLManufacturerReport>().To<ConventionalLorryManufacturerReport>()
 				.NamedLikeFactoryMethod((IManufacturerReportFactory f) => f.GetConventionalLorryManufacturerReport());
+
+			#region LorryMRF
 			Bind<IXMLManufacturerReport>().To<ConventionalLorryManufacturerReport>().Named(
 				nameCombinationMethod.Invoke(ToParams(
 					VehicleCategoryHelper.Lorry,
@@ -175,6 +177,16 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.
 					true,
 					false)));
 
+			Bind<IXMLManufacturerReport>().To<Exempted_LorryManufacturerReport>().Named(nameCombinationMethod.Invoke(
+				ToParams(VehicleCategoryHelper.Lorry,
+					VectoSimulationJobType.ConventionalVehicle,
+					ArchitectureID.UNKNOWN,
+					true,
+					false,
+					false)));
+
+			#endregion
+			#region PrimaryBUSMRF
 			Bind<IXMLManufacturerReport>().To<Conventional_PrimaryBus_ManufacturerReport>().Named(nameCombinationMethod.Invoke(
 				ToParams(VehicleCategoryHelper.PrimaryBus,
 					VectoSimulationJobType.ConventionalVehicle,
@@ -252,6 +264,17 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.
 					false,
 					true,
 					false)));
+			Bind<IXMLManufacturerReport>().To<Exempted_PrimaryBus_ManufacturerReport>().Named(nameCombinationMethod.Invoke(
+				ToParams(VehicleCategoryHelper.PrimaryBus,
+					VectoSimulationJobType.BatteryElectricVehicle,
+					ArchitectureID.UNKNOWN,
+					true,
+					false,
+					false)));
+
+
+			#endregion
+			#region CompletedBus MRF
 
 			Bind<IXMLManufacturerReport>().To<Conventional_CompletedBusManufacturerReport>().Named(nameCombinationMethod.Invoke(
 				ToParams(VehicleCategoryHelper.CompletedBus,
@@ -261,6 +284,17 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.
 					false,
 					false)));
 
+			Bind<IXMLManufacturerReport>().To<Exempted_CompletedBusManufacturerReport>().Named(nameCombinationMethod.Invoke(
+				ToParams(VehicleCategoryHelper.CompletedBus,
+					VectoSimulationJobType.ConventionalVehicle,
+					ArchitectureID.UNKNOWN,
+					true,
+					false,
+					false)));
+
+
+
+			#endregion
 
 			#region Vehicle
 
@@ -284,6 +318,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.
 				.NamedLikeFactoryMethod((IManufacturerReportFactory f) => f.GetPEV_E4_LorryVehicleType());
 			Bind<IXmlTypeWriter>().To<PevIEPCLorryVehicleTypeWriter>().When(AccessedViaMRFFactory)
 				.NamedLikeFactoryMethod((IManufacturerReportFactory f) => f.GetPEV_IEPC_LorryVehicleType());
+			Bind<IXmlTypeWriter>().To<ExemptedLorryVehicleTypeWriter>().When(AccessedViaMRFFactory)
+				.NamedLikeFactoryMethod((IManufacturerReportFactory f) => f.GetExempted_LorryVehicleType());
 
 			Bind<IXmlTypeWriter>().To<ConventionalPrimaryBusVehicleTypeWriter>().When(AccessedViaMRFFactory)
 				.NamedLikeFactoryMethod((IManufacturerReportFactory f) => f.GetConventional_PrimaryBusVehicleType());
@@ -305,6 +341,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.
 				.NamedLikeFactoryMethod((IManufacturerReportFactory f) => f.GetPEV_E4_PrimaryBusVehicleType());
 			Bind<IXmlTypeWriter>().To<PevIepcPrimaryBusVehicleTypeWriter>().When(AccessedViaMRFFactory)
 				.NamedLikeFactoryMethod((IManufacturerReportFactory f) => f.GetPEV_IEPC_PrimaryBusVehicleType());
+			Bind<IXmlTypeWriter>().To<ExemptedPrimaryBusVehicleTypeWriter>().When(AccessedViaMRFFactory)
+				.NamedLikeFactoryMethod((IManufacturerReportFactory f) => f.GetExempted_PrimaryBusVehicleType());
 
 			Bind<IXmlTypeWriter>().To<ConventionalCompletedBusVehicleTypeWriter>().When(AccessedViaMRFFactory)
 				.NamedLikeFactoryMethod((IManufacturerReportFactory f) => f.GetConventional_CompletedBusVehicleType());
@@ -312,6 +350,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.
 				.NamedLikeFactoryMethod((IManufacturerReportFactory f) => f.GetHEV_CompletedBusVehicleType());
 			Bind<IXmlTypeWriter>().To<PevCompletedBusVehicleTypeWriter>().When(AccessedViaMRFFactory)
 				.NamedLikeFactoryMethod((IManufacturerReportFactory f) => f.GetPEV_CompletedBusVehicleType());
+			Bind<IXmlTypeWriter>().To<ExemptedCompletedBusVehicleTypeWriter>().When(AccessedViaMRFFactory)
+				.NamedLikeFactoryMethod((IManufacturerReportFactory f) => f.GetExempted_CompletedBusVehicleType());
 			#endregion
 			#region Components
 			Bind<IXmlTypeWriter>().To<ConventionalLorryComponentsTypeWriter>()
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReport/CompletedBusManufacturerReport.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReport/CompletedBusManufacturerReport.cs
index 034bfe8a5f..82c6e93c08 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReport/CompletedBusManufacturerReport.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReport/CompletedBusManufacturerReport.cs
@@ -31,12 +31,12 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.
 
 		#region Overrides of AbstractManufacturerReport
 
-		public override string OutputDataType { get; }
+		public override string OutputDataType => "ConventionalCompletedBusManufacturerOutputDataType";
 
 		public override void InitializeVehicleData(IDeclarationInputDataProvider inputData)
 		{
 			Vehicle = _mRFReportFactory.GetConventional_CompletedBusVehicleType().GetElement(inputData);
-			GenerateReport("ConventionalCompletedBusManufacturerOutputDataType");
+			GenerateReport(OutputDataType);
 
 		}
 
@@ -66,12 +66,28 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.
 
 		#region Overrides of AbstractManufacturerReport
 
-		public override string OutputDataType { get; }
+		public override string OutputDataType => "PEV_CompletedBusManufacturerOutputDataType";
 
 		public override void InitializeVehicleData(IDeclarationInputDataProvider inputData)
 		{
 			Vehicle = _mRFReportFactory.GetConventional_CompletedBusVehicleType().GetElement(inputData);
-			GenerateReport("PEVCompletedBusManufacturerOutputDataType");
+			GenerateReport(OutputDataType);
+		}
+
+		#endregion
+	}
+
+	internal class Exempted_CompletedBusManufacturerReport : CompletedBusManufacturerReportBase
+	{
+		public Exempted_CompletedBusManufacturerReport(IManufacturerReportFactory MRFReportFactory) : base(MRFReportFactory) { }
+
+		#region Overrides of AbstractManufacturerReport
+
+		public override string OutputDataType => "ExemptedCompletedBusManufacturerOutputDataType";
+
+		public override void InitializeVehicleData(IDeclarationInputDataProvider inputData)
+		{
+			throw new NotImplementedException();
 		}
 
 		#endregion
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReport/LorryManufacturerReports.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReport/LorryManufacturerReports.cs
index 0efe3fa90a..54b00b10bc 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReport/LorryManufacturerReports.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReport/LorryManufacturerReports.cs
@@ -202,4 +202,20 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.
 
 		#endregion
 	}
+
+	internal class Exempted_LorryManufacturerReport : LorryManufacturerReportBase
+	{
+		public Exempted_LorryManufacturerReport(IManufacturerReportFactory MRFReportFactory) : base(MRFReportFactory) { }
+
+		#region Overrides of AbstractManufacturerReport
+
+		public override string OutputDataType => "ExemptedLorryManufacturerOutputDataType";
+
+		public override void InitializeVehicleData(IDeclarationInputDataProvider inputData)
+		{
+			Vehicle = _mRFReportFactory.GetExempted_LorryVehicleType().GetElement(inputData);
+		}
+
+		#endregion
+	}
 }
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReport/PrimaryBusManufacturerReports.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReport/PrimaryBusManufacturerReports.cs
index ca988f79c0..1d75abef3a 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReport/PrimaryBusManufacturerReports.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReport/PrimaryBusManufacturerReports.cs
@@ -3,6 +3,7 @@ using System.Xml.Linq;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Resources;
 using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter;
+using TUGraz.VectoCore.Utils;
 
 namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReport
 {
@@ -45,14 +46,11 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.
 
 		#region Overrides of AbstractManufacturerReport
 
-		public override string OutputDataType { get; }
+		public override string OutputDataType => "HEV-Px_IHPCPrimaryBusManufacturerOutputDataType";
 
 		public override void InitializeVehicleData(IDeclarationInputDataProvider inputData)
 		{
 			Vehicle = _mRFReportFactory.GetHEV_Px_IHPC_PrimaryBusVehicleType().GetElement(inputData);
-
-
-			GenerateReport("HEV-Px_IHPCPrimaryBusManufacturerOutputDataType");
 		}
 
 		#endregion
@@ -65,13 +63,11 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.
 
 		#region Overrides of AbstractManufacturerReport
 
-		public override string OutputDataType { get; }
+		public override string OutputDataType => "HEV-S2_PrimaryBusManufacturerOutputDataType";
 
 		public override void InitializeVehicleData(IDeclarationInputDataProvider inputData)
 		{
 			Vehicle = _mRFReportFactory.GetHEV_S2_PrimaryBusVehicleType().GetElement(inputData);
-
-			GenerateReport("HEV-S2_PrimaryBusManufacturerOutputDataType");
 		}
 
 		#endregion
@@ -83,12 +79,11 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.
 
 		#region Overrides of AbstractManufacturerReport
 
-		public override string OutputDataType { get; }
+		public override string OutputDataType => "HEV-S3_PrimaryBusManufacturerOutputDataType";
 
 		public override void InitializeVehicleData(IDeclarationInputDataProvider inputData)
 		{
 			Vehicle = _mRFReportFactory.GetHEV_S3_PrimaryBusVehicleType().GetElement(inputData);
-			GenerateReport("HEV-S3_PrimaryBusManufacturerOutputDataType");
 		}
 
 		#endregion
@@ -100,12 +95,12 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.
 
 		#region Overrides of AbstractManufacturerReport
 
-		public override string OutputDataType { get; }
+		public override string OutputDataType => "HEV-S4_PrimaryBusManufacturerOutputDataType";
 
 		public override void InitializeVehicleData(IDeclarationInputDataProvider inputData)
 		{
 			Vehicle = _mRFReportFactory.GetHEV_S4_PrimaryBusVehicleType().GetElement(inputData);
-			GenerateReport("HEV-S4_PrimaryBusManufacturerOutputDataType");
+
 		}
 
 		#endregion
@@ -118,12 +113,11 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.
 
 		#region Overrides of AbstractManufacturerReport
 
-		public override string OutputDataType { get; }
+		public override string OutputDataType => "HEV-IEPC-S_PrimaryBusManufacturerOutputDataType";
 
 		public override void InitializeVehicleData(IDeclarationInputDataProvider inputData)
 		{
 			Vehicle = _mRFReportFactory.GetHEV_IEPC_S_PrimaryBusVehicleType().GetElement(inputData);
-			GenerateReport("HEV-IEPC-S_PrimaryBusManufacturerOutputDataType");
 		}
 
 		#endregion
@@ -135,12 +129,11 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.
 
 		#region Overrides of AbstractManufacturerReport
 
-		public override string OutputDataType { get; }
+		public override string OutputDataType => "PEV-E2_PrimaryBusManufacturerOutputDataType";
 
 		public override void InitializeVehicleData(IDeclarationInputDataProvider inputData)
 		{
 			Vehicle = _mRFReportFactory.GetPEV_E2_PrimaryBusVehicleType().GetElement(inputData);
-			GenerateReport("PEV-E2_PrimaryBusManufacturerOutputDataType");
 		}
 
 		#endregion
@@ -153,12 +146,11 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.
 
 		#region Overrides of AbstractManufacturerReport
 
-		public override string OutputDataType { get; }
+		public override string OutputDataType => "PEV-E3_PrimaryBusManufacturerOutputDataType";
 
 		public override void InitializeVehicleData(IDeclarationInputDataProvider inputData)
 		{
 			Vehicle = _mRFReportFactory.GetPEV_E3_PrimaryBusVehicleType().GetElement(inputData);
-			GenerateReport("PEV-E3_PrimaryBusManufacturerOutputDataType");
 		}
 
 		#endregion
@@ -175,12 +167,10 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.
 
 		#region Overrides of AbstractManufacturerReport
 
-		public override string OutputDataType { get; }
-
+		public override string OutputDataType => "PEV-E4_PrimaryBusManufacturerOutputDataType";
 		public override void InitializeVehicleData(IDeclarationInputDataProvider inputData)
 		{
 			Vehicle = _mRFReportFactory.GetPEV_E4_PrimaryBusVehicleType().GetElement(inputData);
-			GenerateReport("PEV-E4_PrimaryBusManufacturerOutputDataType");
 		}
 
 		#endregion
@@ -193,17 +183,29 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.
 
 		#region Overrides of AbstractManufacturerReport
 
-		public override string OutputDataType { get; }
+		public override string OutputDataType => "PEV-IEPC_PrimaryBusManufacturerOutputDataType";
 
 		public override void InitializeVehicleData(IDeclarationInputDataProvider inputData)
 		{
 			Vehicle = _mRFReportFactory.GetPEV_IEPC_PrimaryBusVehicleType().GetElement(inputData);
-			GenerateReport("PEV-IEPC_PrimaryBusManufacturerOutputDataType");
 		}
 
 		#endregion
 	}
 
+	internal class Exempted_PrimaryBus_ManufacturerReport : PrimaryBus_ManufacturerReportBase
+	{
+		public Exempted_PrimaryBus_ManufacturerReport(IManufacturerReportFactory mrfFactory) : base(mrfFactory) { }
+
+		#region Overrides of AbstractManufacturerReport
 
+		public override string OutputDataType => "ExemptedPrimaryBusManufacturerOutputDataType";
 
+		public override void InitializeVehicleData(IDeclarationInputDataProvider inputData)
+		{
+			Vehicle = _mRFReportFactory.GetExempted_PrimaryBusVehicleType().GetElement(inputData);
+		}
+
+		#endregion
+	}
 }
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReportGroupWriter/Lorry/LorryGeneralVehicleOutputGroup.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReportGroupWriter/Lorry/LorryGeneralVehicleOutputGroup.cs
index 82606a7d45..814e7af4d8 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReportGroupWriter/Lorry/LorryGeneralVehicleOutputGroup.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReportGroupWriter/Lorry/LorryGeneralVehicleOutputGroup.cs
@@ -13,7 +13,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.
 {
     public class LorryGeneralVehicleOutputXmlGroup : AbstractReportOutputGroup
     {
-		#region Implementation of IMRFGroupWriter
+		#region Implementation of IMRFGroupWriterb
 
 		public override IList<XElement> GetElements(IDeclarationInputDataProvider inputData)
 		{
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReportXMLTypeWriter/MRFVehicleWriter.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReportXMLTypeWriter/MRFVehicleWriter.cs
index bcda900580..a46c1b4d47 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReportXMLTypeWriter/MRFVehicleWriter.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/ManufacturerReport_0_9/ManufacturerReportXMLTypeWriter/MRFVehicleWriter.cs
@@ -3,6 +3,7 @@ using System.Linq;
 using System.Xml.Linq;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Resources;
+using TUGraz.VectoCore.Utils;
 
 namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter
 {
@@ -198,7 +199,23 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.
 		#endregion
 	}
 
+	public class ExemptedLorryVehicleTypeWriter : VehicleTypeWriter
+	{
+		public ExemptedLorryVehicleTypeWriter(IManufacturerReportFactory mrfFactory) : base(mrfFactory) { }
+
+		#region Overrides of VehicleTypeWriter
 
+		public override XElement GetElement(IDeclarationInputDataProvider inputData)
+		{
+			return new XElement(_mrf + XMLNames.Component_Vehicle,
+				_mrfFactory.GetGeneralLorryVehicleOutputGroup().GetElements(inputData),
+				new XElement(_mrf + "VehicleTechnologyExempted", inputData.JobInputData.Vehicle.ExemptedTechnology),
+				new XElement(_mrf + XMLNames.Exempted_SumNetPower, inputData.JobInputData.Vehicle.MaxNetPower1.ValueAsUnit(XMLNames.Unit_W))
+			);
+		}
+
+		#endregion
+	}
 
 
 	public class ConventionalPrimaryBusVehicleTypeWriter : VehicleTypeWriter
@@ -365,6 +382,24 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.
 		#endregion
 	}
 
+	public class ExemptedPrimaryBusVehicleTypeWriter : VehicleTypeWriter
+	{
+		public ExemptedPrimaryBusVehicleTypeWriter(IManufacturerReportFactory mrfFactory) : base(mrfFactory) { }
+
+		#region Overrides of VehicleTypeWriter
+
+		public override XElement GetElement(IDeclarationInputDataProvider inputData)
+		{
+			return new XElement(_mrf + XMLNames.Component_Vehicle,
+				_mrfFactory.GetPrimaryBusGeneralVehicleOutputGroup().GetElements(inputData),
+				new XElement(_mrf + "VehicleTechnologyExempted", inputData.JobInputData.Vehicle.ExemptedTechnology),
+				new XElement(_mrf + XMLNames.Exempted_SumNetPower, inputData.JobInputData.Vehicle.MaxNetPower1.ValueAsUnit(XMLNames.Unit_W))
+			);
+		}
+
+		#endregion
+	}
+
 	public class ConventionalCompletedBusVehicleTypeWriter : VehicleTypeWriter
 	{
 		public ConventionalCompletedBusVehicleTypeWriter(IManufacturerReportFactory mrfFactory) : base(mrfFactory) { }
@@ -416,8 +451,24 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.
 		#endregion
 	}
 
+	public class ExemptedCompletedBusVehicleTypeWriter : VehicleTypeWriter
+	{
+		public ExemptedCompletedBusVehicleTypeWriter(IManufacturerReportFactory mrfFactory) : base(mrfFactory) { }
 
+		#region Overrides of VehicleTypeWriter
 
+		public override XElement GetElement(IDeclarationInputDataProvider inputData)
+		{
+			var multistageInputdata = inputData as IMultistageBusInputDataProvider;
+			if (multistageInputdata == null)
+			{
+				throw new ArgumentException($"inputdata must implement {nameof(IMultistageBusInputDataProvider)}");
+			}
+			return new XElement(_mrf + XMLNames.Component_Vehicle,
+				_mrfFactory.GetCompletedBusGeneralVehicleOutputGroup().GetElements(inputData)
+			);
+		}
 
-
+		#endregion
+	}
 }
diff --git a/VectoMockup/VectoMockup/Ninject/CIFMockupModule.cs b/VectoMockup/VectoMockup/Ninject/CIFMockupModule.cs
index 174fbc94af..d42cc8c3d8 100644
--- a/VectoMockup/VectoMockup/Ninject/CIFMockupModule.cs
+++ b/VectoMockup/VectoMockup/Ninject/CIFMockupModule.cs
@@ -93,7 +93,12 @@ namespace TUGraz.VectoMockup.Ninject
             return _cifFactory.GetPEV_IEPC_LorryVehicleType();
         }
 
-        public IXmlTypeWriter GetConventional_CompletedBusVehicleType()
+		public IXmlTypeWriter GetExempted_LorryVehicleType()
+		{
+			return _cifFactory.GetExempted_LorryVehicleType();
+		}
+
+		public IXmlTypeWriter GetConventional_CompletedBusVehicleType()
         {
             return _cifFactory.GetConventional_CompletedBusVehicleType();
         }
@@ -108,7 +113,12 @@ namespace TUGraz.VectoMockup.Ninject
             return _cifFactory.GetPEV_CompletedBusVehicleType();
         }
 
-        public IReportVehicleOutputGroup GetGeneralVehicleSequenceGroupWriter()
+		public IXmlTypeWriter GetExemptedCompletedBusVehicleType()
+		{
+			return _cifFactory.GetExemptedCompletedBusVehicleType();
+		}
+
+		public IReportVehicleOutputGroup GetGeneralVehicleSequenceGroupWriter()
         {
             return _cifFactory.GetGeneralVehicleSequenceGroupWriter();
         }
diff --git a/VectoMockup/VectoMockup/Ninject/MRFMockupModule.cs b/VectoMockup/VectoMockup/Ninject/MRFMockupModule.cs
index 02d6f3a64f..04732f6a61 100644
--- a/VectoMockup/VectoMockup/Ninject/MRFMockupModule.cs
+++ b/VectoMockup/VectoMockup/Ninject/MRFMockupModule.cs
@@ -97,7 +97,12 @@ namespace TUGraz.VectoMockup.Ninject
             return _manufacturerReportFactoryImplementation.GetPEV_IEPC_LorryVehicleType();
         }
 
-        public IXmlTypeWriter GetConventional_PrimaryBusVehicleType()
+		public IXmlTypeWriter GetExempted_LorryVehicleType()
+		{
+			return _manufacturerReportFactoryImplementation.GetExempted_LorryVehicleType();
+		}
+
+		public IXmlTypeWriter GetConventional_PrimaryBusVehicleType()
         {
             return _manufacturerReportFactoryImplementation.GetConventional_PrimaryBusVehicleType();
         }
@@ -147,7 +152,12 @@ namespace TUGraz.VectoMockup.Ninject
             return _manufacturerReportFactoryImplementation.GetPEV_IEPC_PrimaryBusVehicleType();
         }
 
-        public IXmlTypeWriter GetConventional_CompletedBusVehicleType()
+		public IXmlTypeWriter GetExempted_PrimaryBusVehicleType()
+		{
+			return _manufacturerReportFactoryImplementation.GetExempted_PrimaryBusVehicleType();
+		}
+
+		public IXmlTypeWriter GetConventional_CompletedBusVehicleType()
         {
             return _manufacturerReportFactoryImplementation.GetConventional_CompletedBusVehicleType();
         }
@@ -162,7 +172,12 @@ namespace TUGraz.VectoMockup.Ninject
             return _manufacturerReportFactoryImplementation.GetPEV_CompletedBusVehicleType();
         }
 
-        public IXmlTypeWriter GetConventionalLorryComponentsType()
+		public IXmlTypeWriter GetExempted_CompletedBusVehicleType()
+		{
+			return _manufacturerReportFactoryImplementation.GetExempted_CompletedBusVehicleType();
+		}
+
+		public IXmlTypeWriter GetConventionalLorryComponentsType()
         {
             return _manufacturerReportFactoryImplementation.GetConventionalLorryComponentsType();
         }
diff --git a/VectoMockup/VectoMockupTest/MockUpVectoTest.cs b/VectoMockup/VectoMockupTest/MockUpVectoTest.cs
index ef70395951..633cd61dd6 100644
--- a/VectoMockup/VectoMockupTest/MockUpVectoTest.cs
+++ b/VectoMockup/VectoMockupTest/MockUpVectoTest.cs
@@ -445,7 +445,7 @@ namespace VectoMockupTest
 
 
         [TestCase("TestData/Generic Vehicles/Declaration Mode/40t Long Haul Truck/40t_Long_Haul_Truck.vecto", TestName="JSON_40TLonghaul")]
-		[TestCase("TestData/Generic Vehicles/Declaration Mode/Class9_RigidTruck_6x2/Class9_RigidTruck_DECL.vecto", TestName="JSON_RigitTruckClass9")]
+		[TestCase("TestData/Generic Vehicles/Declaration Mode/Class9_RigidTruck_6x2/Class9_RigidTruck_DECL.vecto", TestName="JSON_RigidTruckClass9")]
 		public void JSONTest(string fileName, bool mockup = true)
 		{
 
-- 
GitLab