diff --git a/VectoMockup/VectoMockup/Factories/VectoMockupRunDataFactory.cs b/VectoMockup/VectoMockup/Factories/VectoMockupRunDataFactory.cs
deleted file mode 100644
index 2dadca83067062169dc042ce27a118876fcfd6c7..0000000000000000000000000000000000000000
--- a/VectoMockup/VectoMockup/Factories/VectoMockupRunDataFactory.cs
+++ /dev/null
@@ -1,91 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using TUGraz.VectoCommon.Exceptions;
-using TUGraz.VectoCommon.InputData;
-using TUGraz.VectoCommon.Models;
-using TUGraz.VectoCore.InputData;
-using TUGraz.VectoCore.InputData.Reader.Impl;
-using TUGraz.VectoCore.OutputData;
-using TUGraz.VectoMockup.RunData;
-
-namespace TUGraz.VectoMockup.Factories
-{
-	public class VectoMockUpRunDataFactoryFactory : IVectoRunDataFactoryFactory
-	{
-			#region Implementation of IVectoRunDataFactoryFactory
-
-
-
-		public IVectoRunDataFactory CreateDeclarationRunDataFactory(IInputDataProvider inputDataProvider, IDeclarationReport report,
-			IVTPReport vtpReport)
-		{
-			if (inputDataProvider == null)
-				throw new ArgumentNullException(nameof(inputDataProvider));
-
-			switch (inputDataProvider)
-			{
-				case IVTPDeclarationInputDataProvider vtpProvider:
-					return CreateRunDataReader(vtpProvider, vtpReport);
-				case ISingleBusInputDataProvider singleBusProvider:
-					return CreateRunDataReader(singleBusProvider, report);
-				case IDeclarationInputDataProvider declDataProvider:
-					return CreateRunDataReader(declDataProvider, report);
-				case IMultistageVIFInputData multistageVifInputData:
-					return CreateRunDataReader(multistageVifInputData, report);
-				default:
-					break;
-			}
-			throw new VectoException("Unknown InputData for Declaration Mode!");
-		}
-
-		private IVectoRunDataFactory CreateRunDataReader(IMultistageVIFInputData multistageVifInputData, IDeclarationReport report)
-		{
-			throw new NotImplementedException();
-		}
-
-		private IVectoRunDataFactory CreateRunDataReader(IDeclarationInputDataProvider declDataProvider, IDeclarationReport report)
-		{
-			var vehicleCategory = declDataProvider.JobInputData.Vehicle.VehicleCategory;
-			if (vehicleCategory.IsLorry())
-			{
-				return new DeclarationModeMockupTruckVectoRunDataFactory(declDataProvider, report);
-			}
-
-			if (vehicleCategory.IsBus())
-
-				switch (declDataProvider.JobInputData.Vehicle.VehicleCategory)
-				{
-					case VehicleCategory.HeavyBusCompletedVehicle:
-						throw new NotImplementedException();
-						return new DeclarationModeCompletedBusVectoRunDataFactory(declDataProvider, report);
-					case VehicleCategory.HeavyBusPrimaryVehicle:
-						return new DeclarationModeMockupPrimaryBusVectoRunDataFactory(declDataProvider, report);
-					default:
-						break;
-				}
-
-			throw new Exception(
-				$"Could not create RunDataFactory for Vehicle Category{vehicleCategory}");
-		}
-
-		private IVectoRunDataFactory CreateRunDataReader(ISingleBusInputDataProvider singleBusProvider, IDeclarationReport report)
-		{
-			throw new NotImplementedException();
-		}
-
-		private IVectoRunDataFactory CreateRunDataReader(IVTPDeclarationInputDataProvider vtpProvider, IVTPReport vtpReport)
-		{
-			throw new NotImplementedException();
-		}
-
-		public IVectoRunDataFactory CreateEngineeringRunDataFactory(IEngineeringInputDataProvider inputDataProvider)
-		{
-			throw new NotImplementedException();
-		}
-
-		#endregion
-	}
-}
diff --git a/VectoMockup/VectoMockup/Factories/XMLDeclarationMockupReportFactory.cs b/VectoMockup/VectoMockup/Factories/XMLDeclarationMockupReportFactory.cs
deleted file mode 100644
index 6992db09a597edb3a634c25424ff3362daacb520..0000000000000000000000000000000000000000
--- a/VectoMockup/VectoMockup/Factories/XMLDeclarationMockupReportFactory.cs
+++ /dev/null
@@ -1,122 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using TUGraz.VectoCommon.Exceptions;
-using TUGraz.VectoCommon.InputData;
-using TUGraz.VectoCommon.Models;
-using TUGraz.VectoCore.OutputData;
-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.VectoMockup.Reports;
-
-namespace TUGraz.VectoMockup.Factories
-{
-	class XMLDeclarationMockupReportFactory : IXMLDeclarationReportFactory
-	{
-		private readonly IManufacturerReportFactory _mrfFactory;
-		private readonly ICustomerInformationFileFactory _cifFactory;
-
-		#region Implementation of IXMLDeclarationReportFactory
-
-
-		public XMLDeclarationMockupReportFactory(IManufacturerReportFactory mrfFactory, ICustomerInformationFileFactory cifFactory)
-		{
-			_mrfFactory = mrfFactory;
-			_cifFactory = cifFactory;
-		}
-		public IDeclarationReport CreateReport(IInputDataProvider input, IOutputDataWriter outputWriter)
-		{
-			switch (input)
-			{
-				case IMultistageBusInputDataProvider multistageBusInputDataProvider:
-					break;
-				case ISingleBusInputDataProvider singleBusInputDataProvider:
-					return new XMLDeclarationReport(outputWriter);
-				case IDeclarationInputDataProvider declarationInputDataProvider:
-					return CreateDeclarationReport(declarationInputDataProvider, outputWriter);
-				case IMultiStageTypeInputData multiStageTypeInputData:
-					break;
-				case IMultistageVIFInputData multistageVifInputData:
-					return CreateDeclarationReport(multistageVifInputData, outputWriter);
-				case IPrimaryVehicleInformationInputDataProvider primaryVehicleInformationInputDataProvider:
-					break;
-				case IVTPDeclarationInputDataProvider vtpProvider:
-					{
-						return null;
-					}
-				case IMultistagePrimaryAndStageInputDataProvider multistagePrimaryAndStageInputData:
-					{
-						return null; //No Report for this type (handled in two simulation steps)
-					}
-				default:
-					break;
-
-			}
-			throw new VectoException($"Could not create Declaration Report for {input.GetType()}");
-		}
-
-		public IVTPReport CreateVTPReport(IInputDataProvider input, IOutputDataWriter outputWriter)
-		{
-			return input is IVTPDeclarationInputDataProvider
-				? new XMLVTPReport(outputWriter)
-				: null;
-		}
-
-		private IDeclarationReport CreateDeclarationReport(IMultistageVIFInputData multistageVifInputData, IOutputDataWriter outputDataWriter)
-		{
-			if (multistageVifInputData.VehicleInputData == null)
-			{
-				var reportCompleted = new XMLDeclarationReportCompletedVehicle(outputDataWriter, true)
-				{
-					PrimaryVehicleReportInputData = multistageVifInputData.MultistageJobInputData.JobInputData.PrimaryVehicle,
-				};
-				return reportCompleted;
-			}
-			else
-			{
-				var report = new XMLDeclarationReportMultistageBusVehicle(outputDataWriter);
-				return report;
-			}
-		}
-
-		private IDeclarationReport CreateDeclarationReport(IDeclarationInputDataProvider declarationInputDataProvider,
-			IOutputDataWriter outputDataWriter)
-		{
-			var vehicleCategory = declarationInputDataProvider.JobInputData.Vehicle.VehicleCategory;
-			if (vehicleCategory.IsLorry())
-			{
-				return new XMLDeclarationMockupReport(outputDataWriter, _mrfFactory, _cifFactory);
-			}
-
-			if (vehicleCategory.IsBus())
-				switch (declarationInputDataProvider.JobInputData.Vehicle.VehicleCategory)
-				{
-					case VehicleCategory.HeavyBusCompletedVehicle:
-						return new XMLDeclarationReportCompletedVehicle(outputDataWriter,
-												declarationInputDataProvider.JobInputData.Vehicle.VehicleCategory == VehicleCategory.HeavyBusPrimaryVehicle)
-						{
-							PrimaryVehicleReportInputData = declarationInputDataProvider.PrimaryVehicleData,
-						};
-					case VehicleCategory.HeavyBusPrimaryVehicle:
-						return new XMLDeclarationReportPrimaryVehicle(outputDataWriter,
-												declarationInputDataProvider.JobInputData.Vehicle.VehicleCategory == VehicleCategory.HeavyBusPrimaryVehicle);
-
-					default:
-						break;
-				}
-
-			throw new Exception(
-				$"Could not create DeclarationReport for Vehicle Category{vehicleCategory}");
-		}
-
-		public IVTPReport CreateVTPReport(IVTPDeclarationInputDataProvider input, IOutputDataWriter outputWriter)
-		{
-			throw new NotImplementedException();
-		}
-
-		#endregion
-	}
-}
diff --git a/VectoMockup/VectoMockup/MockupResultReader.cs b/VectoMockup/VectoMockup/MockupResultReader.cs
index d341ff436273f8e62c2f1fe0f0f7918edf91b9fb..016935af53a179317ec856a55df7f9a4a54af6d4 100644
--- a/VectoMockup/VectoMockup/MockupResultReader.cs
+++ b/VectoMockup/VectoMockup/MockupResultReader.cs
@@ -38,6 +38,10 @@ namespace TUGraz.VectoMockup
 
 				//CIF
 				XMLNames.CIF_OutputDataType_ConventionalLorryOutputType,
+				
+
+				//VIF //TODO: seperate namespaces
+				"urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1",
 			};
 
 			private static HashSet<string> hev = new HashSet<string>() {
diff --git a/VectoMockup/VectoMockup/Ninject/CIFMockupModule.cs b/VectoMockup/VectoMockup/Ninject/CIFMockupModule.cs
index 725ecc4e0749b4ed81aea7b2939d7dd23266e735..174fbc94af7e5dc2e0edcdfb2df2a32674ec51bc 100644
--- a/VectoMockup/VectoMockup/Ninject/CIFMockupModule.cs
+++ b/VectoMockup/VectoMockup/Ninject/CIFMockupModule.cs
@@ -1,107 +1,32 @@
-using System.Collections.Generic;
-using System.Linq;
-using System.Xml.Linq;
-using System.Xml.XPath;
-using Ninject;
+using Ninject;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
-using TUGraz.VectoCommon.Resources;
 using TUGraz.VectoCore;
-using TUGraz.VectoCore.Models.Declaration;
-using TUGraz.VectoCore.Models.Simulation.Data;
-using TUGraz.VectoCore.OutputData.XML;
 using TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile;
 using TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile.CustomerInformationFile_0_9;
-using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9;
 using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportGroupWriter;
 using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter;
 using TUGraz.VectoCore.Utils;
-using TUGraz.VectoMockup.Factories;
 using TUGraz.VectoMockup.Reports;
 
 namespace TUGraz.VectoMockup.Ninject
 {
-	// ReSharper disable once InconsistentNaming
-	public class CIFMockupModule : AbstractNinjectModule
+    // ReSharper disable once InconsistentNaming
+    public class CIFMockupModule : AbstractNinjectModule
     {
         #region Overrides of NinjectModule
 
         public override void Load()
         {
 			Kernel.Bind<ICustomerInformationFileFactory>().To<MockupCustomerInformationFileFactory>()
-                .WhenInjectedExactlyInto<XMLDeclarationMockupReportFactory>().InSingletonScope();
+                .WhenInjectedExactlyInto<MockupReportFactory>().InSingletonScope();
 
         }
 
         #endregion
     }
 
-    public class MockupCustomerReport : IXMLCustomerReport, IXMLMockupReport
-    {
-        private readonly AbstractCustomerReport _originalCustomerReport;
-		private XNamespace Cif = AbstractCustomerReport.Cif;
-        public MockupCustomerReport(IXMLCustomerReport originalReport)
-        {
-            _originalCustomerReport = originalReport as AbstractCustomerReport;
-			_outputData = _originalCustomerReport.OutputDataType;
-            Results	= new XElement(Cif + XMLNames.Report_Results);
-        }
-
-		private XElement Results;
-		private readonly string _outputData;
-		private VectoRunData _modelData;
-
-		#region Implementation of IXMLCustomerReport
-
-        public void Initialize(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes)
-		{
-			_modelData = modelData;
-            _originalCustomerReport.Initialize(modelData, fuelModes);
-        }
-
-        public XDocument Report
-		{
-			get
-			{
-				var report = _originalCustomerReport.Report;
-				report.XPathSelectElements($"//*[name()='{XMLNames.Report_Results}']").Single().ReplaceWith(Results);
-
-				return report;
-
-
-            }
-		}
-
-		public void WriteResult(XMLDeclarationReport.ResultEntry resultValue)
-        {
-            _originalCustomerReport.WriteResult(resultValue);
-        }
-
-        public void GenerateReport(XElement resultSignature)
-        {
-            _originalCustomerReport.GenerateReport(resultSignature);
-        }
-
-        #endregion
-
-		#region Implementation of IXMLMockupReport
-
-		public void WriteMockupResult(XMLDeclarationReport.ResultEntry resultValue)
-		{
-			Results.Add(MockupResultReader.GetCIFMockupResult(_outputData, resultValue, Cif + "Result", _modelData));
-		}
-
-		public void WriteMockupSummary(XMLDeclarationReport.ResultEntry resultValue)
-		{
-			Results.AddFirst(new XElement(Cif + "Status", "success"));
-			Results.AddFirst(new XComment("Always prints success at the moment"));
-			Results.Add(MockupResultReader.GetCIFMockupResult(_outputData, resultValue, Cif + "Summary", _modelData));
-		}
-
-		#endregion
-    }
-
-    public class MockupCustomerInformationFileFactory : ICustomerInformationFileFactory
+	public class MockupCustomerInformationFileFactory : ICustomerInformationFileFactory
     {
         private readonly ICustomerInformationFileFactory _cifFactory;
 
diff --git a/VectoMockup/VectoMockup/Ninject/MRFMockupModule.cs b/VectoMockup/VectoMockup/Ninject/MRFMockupModule.cs
index d601c387d0a3a4692c71d4fe0e361019722858bf..02d6f3a64f00568c1b71d325bfb5f734461dc29f 100644
--- a/VectoMockup/VectoMockup/Ninject/MRFMockupModule.cs
+++ b/VectoMockup/VectoMockup/Ninject/MRFMockupModule.cs
@@ -1,116 +1,32 @@
-using System.Collections.Generic;
-using System.Linq;
-using System.Xml.Linq;
-using System.Xml.XPath;
-using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
-using TUGraz.VectoCommon.Resources;
 using TUGraz.VectoCore;
-using TUGraz.VectoCore.Models.Declaration;
-using TUGraz.VectoCore.Models.Simulation.Data;
-using TUGraz.VectoCore.OutputData.XML;
 using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport;
-using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9;
 using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportGroupWriter;
 using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportGroupWriter.CompletedBus;
 using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter;
 using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter.Components;
 using TUGraz.VectoCore.Utils;
-using TUGraz.VectoMockup.Factories;
 using TUGraz.VectoMockup.Reports;
 
 namespace TUGraz.VectoMockup.Ninject
 {
-	// ReSharper disable once InconsistentNaming
-	public class MRFMockupModule : AbstractNinjectModule
+    // ReSharper disable once InconsistentNaming
+    public class MRFMockupModule : AbstractNinjectModule
     {
         #region Overrides of NinjectModule
 
         public override void Load()
         {
             Kernel.Bind<IManufacturerReportFactory>().To<MockupManufacturerReportFactory>()
-                .WhenInjectedExactlyInto<XMLDeclarationMockupReportFactory>().InSingletonScope();
+                .WhenInjectedExactlyInto<MockupReportFactory>().InSingletonScope();
         }
 
         #endregion
     }
 
-    public class MockupManufacturerReport : IXMLManufacturerReport, IXMLMockupReport
-    {
-        private AbstractManufacturerReport _ixmlManufacturerReportImplementation;
-        private VectoRunData _modelData;
-
-		private XNamespace Mrf = AbstractManufacturerReport.Mrf;
-		private readonly string _outputData;
-		private XElement Results { get; set; }
-        public MockupManufacturerReport(IXMLManufacturerReport originalManufacturerReport)
-        {
-            _ixmlManufacturerReportImplementation = originalManufacturerReport as AbstractManufacturerReport;
-			_outputData = _ixmlManufacturerReportImplementation.OutputDataType;
-
-            Results = new XElement(Mrf + XMLNames.Report_Results);
-		}
-
-        public void WriteMockupResult(XMLDeclarationReport.ResultEntry resultValue)
-        {
-
-            Results.Add(MockupResultReader.GetMRFMockupResult(_outputData, resultValue, Mrf + "Result", _modelData));
-
-
-
-        }
-
-        public void WriteMockupSummary(XMLDeclarationReport.ResultEntry resultValue)
-        {
-            Results.AddFirst(new XElement(Mrf + "Status", "success"));
-            Results.AddFirst(new XComment("Always prints success at the moment"));
-            //Results.Add(MockupResultReader.GetMRFMockupResult(OutputDataType, resultValue, Mrf + "Summary", _ovc));
-        }
-
-
-        #region Implementation of IXMLManufacturerReport
-
-
-        public void InitializeVehicleData(IDeclarationInputDataProvider inputData)
-        {
-            _ixmlManufacturerReportImplementation.InitializeVehicleData(inputData);
-        }
-
-        public void Initialize(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes)
-        {
-            _modelData = modelData;
-            _ixmlManufacturerReportImplementation.Initialize(modelData, fuelModes);
-        }
-
-        public XDocument Report
-        {
-			get
-			{
-				var report = _ixmlManufacturerReportImplementation.Report;
-                report.XPathSelectElements($"//*[name()='{XMLNames.Report_Results}']").Single().ReplaceWith(Results);
-
-				return report;
-			}
-        }
-
-        public void WriteResult(XMLDeclarationReport.ResultEntry resultValue)
-        {
-            _ixmlManufacturerReportImplementation.WriteResult(resultValue);
-        }
-
-        public void GenerateReport()
-        {
-            _ixmlManufacturerReportImplementation.GenerateReport();
-        }
-
-        #endregion
-
-
-
-    }
-
 
-    public class MockupManufacturerReportFactory : IManufacturerReportFactory
+	public class MockupManufacturerReportFactory : IManufacturerReportFactory
     {
         private IManufacturerReportFactory _manufacturerReportFactoryImplementation;
 
diff --git a/VectoMockup/VectoMockup/Ninject/MockupModule.cs b/VectoMockup/VectoMockup/Ninject/MockupModule.cs
index 8e35d1b5a28df2aeb9fe39e6113556ccb40e242f..ab1cdbc789d70c091dfb54fe07c404db004cdb99 100644
--- a/VectoMockup/VectoMockup/Ninject/MockupModule.cs
+++ b/VectoMockup/VectoMockup/Ninject/MockupModule.cs
@@ -4,10 +4,11 @@ using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using Ninject.Modules;
-using TUGraz.VectoMockup.Factories;
 using TUGraz.VectoCore;
 using TUGraz.VectoCore.InputData;
 using TUGraz.VectoCore.OutputData.XML;
+using TUGraz.VectoMockup.Reports;
+using TUGraz.VectoMockup.Simulation.RundataFactories;
 
 namespace TUGraz.VectoMockup.Ninject
 {
@@ -18,7 +19,7 @@ namespace TUGraz.VectoMockup.Ninject
 		public override void Load()
 		{
 			Rebind<IVectoRunDataFactoryFactory>().To<VectoMockUpRunDataFactoryFactory>();
-			Rebind<IXMLDeclarationReportFactory>().To<XMLDeclarationMockupReportFactory>();
+			Rebind<IXMLDeclarationReportFactory>().To<MockupReportFactory>();
 		}
 
 		#endregion
diff --git a/VectoMockup/VectoMockup/Reports/IXMLMockupReport.cs b/VectoMockup/VectoMockup/Reports/IXMLMockupReport.cs
new file mode 100644
index 0000000000000000000000000000000000000000..847d4573c35c3015056cafcf90ddec1bb32bb341
--- /dev/null
+++ b/VectoMockup/VectoMockup/Reports/IXMLMockupReport.cs
@@ -0,0 +1,10 @@
+using TUGraz.VectoCore.OutputData.XML;
+
+namespace TUGraz.VectoMockup.Reports
+{
+	internal interface IXMLMockupReport
+	{
+		void WriteMockupResult(XMLDeclarationReport.ResultEntry resultValue);
+		void WriteMockupSummary(XMLDeclarationReport.ResultEntry resultValue);
+	}
+}
\ No newline at end of file
diff --git a/VectoMockup/VectoMockup/Reports/MockupCustomerReport.cs b/VectoMockup/VectoMockup/Reports/MockupCustomerReport.cs
new file mode 100644
index 0000000000000000000000000000000000000000..e365d2265fe245a3957885e95f0ac2850daf9c6a
--- /dev/null
+++ b/VectoMockup/VectoMockup/Reports/MockupCustomerReport.cs
@@ -0,0 +1,79 @@
+using System.Collections.Generic;
+using System.Linq;
+using System.Xml.Linq;
+using System.Xml.XPath;
+using TUGraz.VectoCommon.Resources;
+using TUGraz.VectoCore.Models.Declaration;
+using TUGraz.VectoCore.Models.Simulation.Data;
+using TUGraz.VectoCore.OutputData.XML;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile.CustomerInformationFile_0_9;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9;
+
+namespace TUGraz.VectoMockup.Reports
+{
+    public class MockupCustomerReport : IXMLCustomerReport, IXMLMockupReport
+    {
+        private readonly AbstractCustomerReport _originalCustomerReport;
+        private XNamespace Cif = AbstractCustomerReport.Cif;
+        public MockupCustomerReport(IXMLCustomerReport originalReport)
+        {
+            _originalCustomerReport = originalReport as AbstractCustomerReport;
+            _outputDataType = _originalCustomerReport.OutputDataType;
+            Results = new XElement(Cif + XMLNames.Report_Results);
+        }
+
+        private XElement Results;
+        private readonly string _outputDataType;
+        private VectoRunData _modelData;
+        
+        #region Implementation of IXMLCustomerReport
+
+        public void Initialize(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes)
+        {
+            _modelData = modelData;
+            _originalCustomerReport.Initialize(modelData, fuelModes);
+        }
+
+        public XDocument Report
+        {
+            get
+            {
+                var report = _originalCustomerReport.Report;
+                report.XPathSelectElements($"//*[local-name()='{XMLNames.Report_Results}']").Single().ReplaceWith(Results);
+
+                return report;
+
+
+            }
+        }
+
+        public void WriteResult(XMLDeclarationReport.ResultEntry resultValue)
+        {
+            _originalCustomerReport.WriteResult(resultValue);
+        }
+
+        public void GenerateReport(XElement resultSignature)
+        {
+            _originalCustomerReport.GenerateReport(resultSignature);
+        }
+
+        #endregion
+
+        #region Implementation of IXMLMockupReport
+
+        public void WriteMockupResult(XMLDeclarationReport.ResultEntry resultValue)
+        {
+            Results.Add(MockupResultReader.GetCIFMockupResult(_outputDataType, resultValue, Cif + "Result", _modelData));
+        }
+
+        public void WriteMockupSummary(XMLDeclarationReport.ResultEntry resultValue)
+        {
+            Results.AddFirst(new XElement(Cif + "Status", "success"));
+            Results.AddFirst(new XComment("Always prints success at the moment"));
+            Results.Add(MockupResultReader.GetCIFMockupResult(_outputDataType, resultValue, Cif + "Summary", _modelData));
+        }
+
+        #endregion
+    }
+}
\ No newline at end of file
diff --git a/VectoMockup/VectoMockup/Reports/MockupManufacturerReport.cs b/VectoMockup/VectoMockup/Reports/MockupManufacturerReport.cs
new file mode 100644
index 0000000000000000000000000000000000000000..f75d7e22e1b3f45ce64db8ce8c9fcc931b760690
--- /dev/null
+++ b/VectoMockup/VectoMockup/Reports/MockupManufacturerReport.cs
@@ -0,0 +1,88 @@
+using System.Collections.Generic;
+using System.Linq;
+using System.Xml.Linq;
+using System.Xml.XPath;
+using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCommon.Resources;
+using TUGraz.VectoCore.Models.Declaration;
+using TUGraz.VectoCore.Models.Simulation.Data;
+using TUGraz.VectoCore.OutputData.XML;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9;
+
+namespace TUGraz.VectoMockup.Reports
+{
+	public class MockupManufacturerReport : IXMLManufacturerReport, IXMLMockupReport
+	{
+		private AbstractManufacturerReport _ixmlManufacturerReportImplementation;
+		private VectoRunData _modelData;
+
+		private XNamespace Mrf = AbstractManufacturerReport.Mrf;
+		private readonly string _outputData;
+		private XElement Results { get; set; }
+		public MockupManufacturerReport(IXMLManufacturerReport originalManufacturerReport)
+		{
+			_ixmlManufacturerReportImplementation = originalManufacturerReport as AbstractManufacturerReport;
+			_outputData = _ixmlManufacturerReportImplementation.OutputDataType;
+
+			Results = new XElement(Mrf + XMLNames.Report_Results);
+		}
+
+		public void WriteMockupResult(XMLDeclarationReport.ResultEntry resultValue)
+		{
+
+			Results.Add(MockupResultReader.GetMRFMockupResult(_outputData, resultValue, Mrf + "Result", _modelData));
+
+
+
+		}
+
+		public void WriteMockupSummary(XMLDeclarationReport.ResultEntry resultValue)
+		{
+			Results.AddFirst(new XElement(Mrf + "Status", "success"));
+			Results.AddFirst(new XComment("Always prints success at the moment"));
+			//Results.Add(MockupResultReader.GetMRFMockupResult(OutputDataType, resultValue, Mrf + "Summary", _ovc));
+		}
+
+
+		#region Implementation of IXMLManufacturerReport
+
+
+		public void InitializeVehicleData(IDeclarationInputDataProvider inputData)
+		{
+			_ixmlManufacturerReportImplementation.InitializeVehicleData(inputData);
+		}
+
+		public void Initialize(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes)
+		{
+			_modelData = modelData;
+			_ixmlManufacturerReportImplementation.Initialize(modelData, fuelModes);
+		}
+
+		public XDocument Report
+		{
+			get
+			{
+				var report = _ixmlManufacturerReportImplementation.Report;
+				report.XPathSelectElements($"//*[local-name()='{XMLNames.Report_Results}']").Single().ReplaceWith(Results);
+
+				return report;
+			}
+		}
+
+		public void WriteResult(XMLDeclarationReport.ResultEntry resultValue)
+		{
+			_ixmlManufacturerReportImplementation.WriteResult(resultValue);
+		}
+
+		public void GenerateReport()
+		{
+			_ixmlManufacturerReportImplementation.GenerateReport();
+		}
+
+		#endregion
+
+
+
+	}
+}
\ No newline at end of file
diff --git a/VectoMockup/VectoMockup/Reports/MockupPrimaryReport.cs b/VectoMockup/VectoMockup/Reports/MockupPrimaryReport.cs
new file mode 100644
index 0000000000000000000000000000000000000000..151ab64048416e67f635d1ce605232bbfe2354a2
--- /dev/null
+++ b/VectoMockup/VectoMockup/Reports/MockupPrimaryReport.cs
@@ -0,0 +1,81 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+using System.Xml.XPath;
+using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCommon.Resources;
+using TUGraz.VectoCore.Models.Declaration;
+using TUGraz.VectoCore.Models.Simulation.Data;
+using TUGraz.VectoCore.OutputData.XML;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile;
+
+namespace TUGraz.VectoMockup.Reports
+{
+    internal class MockupPrimaryReport : IXMLPrimaryVehicleReport, IXMLMockupReport
+    {
+		
+		private readonly IXMLPrimaryVehicleReport _primaryVehicleReportImplementation;
+		private VectoRunData _modelData;
+
+		private XElement Results;
+		public MockupPrimaryReport(IXMLPrimaryVehicleReport primaryVehicleReportImplementation)
+		{
+			_primaryVehicleReportImplementation = primaryVehicleReportImplementation;
+			Results = new XElement(_primaryVehicleReportImplementation.Tns + XMLNames.Report_Results);
+		}
+
+
+		#region Implementation of IXMLPrimaryVehicleReport
+
+		public void Initialize(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes)
+		{
+			_primaryVehicleReportImplementation.Initialize(modelData, fuelModes);
+			_modelData = modelData;
+		}
+
+		public void WriteResult(XMLDeclarationReport.ResultEntry result)
+		{
+			_primaryVehicleReportImplementation.WriteResult(result);
+		}
+
+		public XNamespace Tns => _primaryVehicleReportImplementation.Tns;
+
+		#endregion
+
+		#region Implementation of IXMLMockupReport
+
+		public void WriteMockupResult(XMLDeclarationReport.ResultEntry resultValue)
+		{
+			var xElement = MockupResultReader.GetCIFMockupResult(Tns.NamespaceName, resultValue, Tns + "Result", _modelData);
+			Results.Add(xElement);
+		}
+
+		public void WriteMockupSummary(XMLDeclarationReport.ResultEntry resultValue)
+		{
+			Results.AddFirst(new XElement(Tns + "Status", "success"));
+			Results.AddFirst(new XComment("Always prints success at the moment"));
+		}
+
+		public void GenerateReport(XElement fullReportHash)
+		{
+			_primaryVehicleReportImplementation.GenerateReport(fullReportHash);
+		}
+
+		public XDocument Report
+		{
+			get
+			{
+				var report = _primaryVehicleReportImplementation.Report;
+				var resultsElement = report.XPathSelectElements($"//*[local-name()='{XMLNames.Report_Results}']");
+				resultsElement.First().ReplaceWith(Results);
+				return report;
+			}
+		}
+
+		#endregion
+	}
+}
diff --git a/VectoMockup/VectoMockup/Reports/MockupReportFactory.cs b/VectoMockup/VectoMockup/Reports/MockupReportFactory.cs
new file mode 100644
index 0000000000000000000000000000000000000000..6efe0cf234625bff3916552bf8781c8a31b14508
--- /dev/null
+++ b/VectoMockup/VectoMockup/Reports/MockupReportFactory.cs
@@ -0,0 +1,127 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using TUGraz.VectoCommon.Exceptions;
+using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCore.OutputData;
+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;
+
+namespace TUGraz.VectoMockup.Reports
+{
+    class MockupReportFactory : IXMLDeclarationReportFactory
+    {
+        private readonly IManufacturerReportFactory _mrfFactory;
+        private readonly ICustomerInformationFileFactory _cifFactory;
+
+
+        #region Implementation of IXMLDeclarationReportFactory
+
+
+        public MockupReportFactory(IManufacturerReportFactory mrfFactory, ICustomerInformationFileFactory cifFactory)
+        {
+            _mrfFactory = mrfFactory;
+            _cifFactory = cifFactory;
+        }
+        public IDeclarationReport CreateReport(IInputDataProvider input, IOutputDataWriter outputWriter)
+        {
+            switch (input)
+            {
+                case IMultistageBusInputDataProvider multistageBusInputDataProvider:
+                    break;
+                case ISingleBusInputDataProvider singleBusInputDataProvider:
+                    return new XMLDeclarationReport(outputWriter);
+                case IDeclarationInputDataProvider declarationInputDataProvider:
+                    return CreateDeclarationReport(declarationInputDataProvider, outputWriter);
+                case IMultiStageTypeInputData multiStageTypeInputData:
+                    break;
+                case IMultistageVIFInputData multistageVifInputData:
+                    return CreateDeclarationReport(multistageVifInputData, outputWriter);
+                case IPrimaryVehicleInformationInputDataProvider primaryVehicleInformationInputDataProvider:
+                    break;
+                case IVTPDeclarationInputDataProvider vtpProvider:
+                    {
+                        return null;
+                    }
+                case IMultistagePrimaryAndStageInputDataProvider multistagePrimaryAndStageInputData:
+                    {
+                        return null; //No Report for this type (handled in two simulation steps)
+                    }
+                default:
+                    break;
+
+            }
+            throw new VectoException($"Could not create Declaration Report for {input.GetType()}");
+        }
+
+        public IVTPReport CreateVTPReport(IInputDataProvider input, IOutputDataWriter outputWriter)
+        {
+            return input is IVTPDeclarationInputDataProvider
+                ? new XMLVTPReport(outputWriter)
+                : null;
+        }
+
+        private IDeclarationReport CreateDeclarationReport(IMultistageVIFInputData multistageVifInputData, IOutputDataWriter outputDataWriter)
+        {
+			if (multistageVifInputData.VehicleInputData == null)
+            {
+                var reportCompleted = new XMLDeclarationMockupReportCompletedVehicle(outputDataWriter, _mrfFactory, _cifFactory, true)
+                {
+                    PrimaryVehicleReportInputData = multistageVifInputData.MultistageJobInputData.JobInputData.PrimaryVehicle,
+                };
+                return reportCompleted;
+            }
+            else {
+				throw new NotImplementedException();
+                var report = new XMLDeclarationReportMultistageBusVehicle(outputDataWriter);
+                return report;
+            }
+        }
+
+        private IDeclarationReport CreateDeclarationReport(IDeclarationInputDataProvider declarationInputDataProvider,
+            IOutputDataWriter outputDataWriter)
+        {
+            var vehicleCategory = declarationInputDataProvider.JobInputData.Vehicle.VehicleCategory;
+            if (vehicleCategory.IsLorry())
+            {
+                return new XMLDeclarationMockupReport(outputDataWriter, _mrfFactory, _cifFactory);
+            }
+
+            if (vehicleCategory.IsBus())
+            {
+                switch (declarationInputDataProvider.JobInputData.Vehicle.VehicleCategory)
+                {
+                    case VehicleCategory.HeavyBusCompletedVehicle:
+                        throw new NotImplementedException();
+                        return new XMLDeclarationReportCompletedVehicle(outputDataWriter,
+                            declarationInputDataProvider.JobInputData.Vehicle.VehicleCategory ==
+                            VehicleCategory.HeavyBusPrimaryVehicle)
+                        {
+                            PrimaryVehicleReportInputData = declarationInputDataProvider.PrimaryVehicleData,
+                        };
+                    case VehicleCategory.HeavyBusPrimaryVehicle:
+                        return new XMLDeclarationMockupPrimaryReport(outputDataWriter, _mrfFactory, _cifFactory,
+                            declarationInputDataProvider.JobInputData.Vehicle.VehicleCategory ==
+                            VehicleCategory.HeavyBusPrimaryVehicle);
+
+                    default:
+                        break;
+                }
+            }
+
+            throw new Exception(
+                $"Could not create DeclarationReport for Vehicle Category{vehicleCategory}");
+        }
+
+        public IVTPReport CreateVTPReport(IVTPDeclarationInputDataProvider input, IOutputDataWriter outputWriter)
+        {
+            throw new NotImplementedException();
+        }
+
+        #endregion
+    }
+}
diff --git a/VectoMockup/VectoMockup/Reports/XMLDeclarationMockupPrimaryReport.cs b/VectoMockup/VectoMockup/Reports/XMLDeclarationMockupPrimaryReport.cs
new file mode 100644
index 0000000000000000000000000000000000000000..bf6fec9c28f71aa100c4ff205c94c2e85b2b7d06
--- /dev/null
+++ b/VectoMockup/VectoMockup/Reports/XMLDeclarationMockupPrimaryReport.cs
@@ -0,0 +1,68 @@
+using System.Linq;
+using TUGraz.VectoCore.Models.Simulation.Data;
+using TUGraz.VectoCore.OutputData;
+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;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter;
+
+namespace TUGraz.VectoMockup.Reports
+{
+	public class XMLDeclarationMockupPrimaryReport : XMLDeclarationReportPrimaryVehicle_09
+	{
+		public XMLDeclarationMockupPrimaryReport(IReportWriter writer,
+			IManufacturerReportFactory mrfFactory,
+			ICustomerInformationFileFactory cifFactory,
+			bool writePIF = false) : base(writer,
+			mrfFactory,
+			cifFactory,
+			writePIF)
+		{
+
+
+
+
+
+
+
+
+		}
+
+		protected override void InstantiateReports(VectoRunData modelData)
+		{
+			base.InstantiateReports(modelData);
+			PrimaryReport = new MockupPrimaryReport(PrimaryReport);
+		}
+
+		#region Overrides of XMLDeclarationReportPrimaryVehicle_09
+
+		protected override void DoStoreResult(ResultEntry entry, VectoRunData runData, IModalDataContainer modData)
+		{
+			//Do nothing
+		}
+
+		protected override void WriteResult(ResultEntry result)
+		{
+			(ManufacturerRpt as IXMLMockupReport).WriteMockupResult(result);
+			(PrimaryReport as IXMLMockupReport).WriteMockupResult(result);
+		}
+
+		#endregion
+
+		#region Overrides of XMLDeclarationReportPrimaryVehicle
+
+		protected override void GenerateReports()
+		{
+			(ManufacturerRpt as IXMLMockupReport).WriteMockupSummary(Results.First());
+			(PrimaryReport as IXMLMockupReport).WriteMockupSummary(Results.First());
+			ManufacturerRpt.GenerateReport();
+			var fullReportHash = GetSignature(ManufacturerRpt.Report);
+			//CustomerRpt.GenerateReport(fullReportHash);
+			PrimaryReport.GenerateReport(fullReportHash);
+		}
+
+
+
+		#endregion
+	}
+}
\ No newline at end of file
diff --git a/VectoMockup/VectoMockup/Reports/XMLDeclarationMockupReportCompletedVehicle.cs b/VectoMockup/VectoMockup/Reports/XMLDeclarationMockupReportCompletedVehicle.cs
new file mode 100644
index 0000000000000000000000000000000000000000..bb4d5773519219e469bc41171916f76faa63ba39
--- /dev/null
+++ b/VectoMockup/VectoMockup/Reports/XMLDeclarationMockupReportCompletedVehicle.cs
@@ -0,0 +1,84 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+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;
+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;
+
+namespace TUGraz.VectoMockup.Reports
+{
+    internal class XMLDeclarationMockupReportCompletedVehicle : XMLDeclarationReportCompletedVehicle
+	{
+		private readonly IManufacturerReportFactory _mrfFactory;
+		private readonly ICustomerInformationFileFactory _cifFactory;
+
+		public XMLDeclarationMockupReportCompletedVehicle(IReportWriter writer, IManufacturerReportFactory mrfFactory, ICustomerInformationFileFactory cifFactory, bool writePIF = false) : base(writer,
+			writePIF)
+		{
+			_mrfFactory = mrfFactory;
+			_cifFactory = cifFactory;
+		}
+
+		#region Overrides of XMLDeclarationReportCompletedVehicle
+
+		protected override void InstantiateReports(VectoRunData modelData)
+		{
+			var inputData = modelData.InputData as IXMLMultistageInputDataProvider;
+
+			var arch = inputData.JobInputData.PrimaryVehicle.Vehicle.ArchitectureID;
+
+			inputData.JobInputData.PrimaryVehicle.Vehicle.VehicleCategory.GetVehicleType();// HEV/PEV - Sx/Px
+
+
+			var ihpc = (inputData.JobInputData.PrimaryVehicle.Vehicle.Components.ElectricMachines?.Entries)?.Count(electric => electric.ElectricMachine.IHPCType != "None") > 0;
+			var iepc = (inputData.JobInputData.PrimaryVehicle.Vehicle.Components.IEPC != null);
+			ManufacturerRpt = _mrfFactory.GetManufacturerReport(
+				inputData.JobInputData.ConsolidateManufacturingStage.Vehicle.VehicleCategory,
+				inputData.JobInputData.JobType,
+				inputData.JobInputData.PrimaryVehicle.Vehicle.ArchitectureID,
+				inputData.JobInputData.PrimaryVehicle.Vehicle.ExemptedVehicle,
+				iepc,
+				ihpc);
+
+			//base.InstantiateReports(modelData);
+		}
+
+		public override void InitializeReport(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes)
+		{
+			base.InitializeReport(modelData, fuelModes);
+		}
+
+		protected internal override void DoWriteReport()
+		{
+			base.DoWriteReport();
+		}
+
+		#endregion
+
+		#region Overrides of XMLDeclarationReport
+
+		protected override void DoStoreResult(ResultEntry entry, VectoRunData runData, IModalDataContainer modData)
+		{
+			base.DoStoreResult(entry, runData, modData);
+		}
+
+		protected override void WriteResult(ResultEntry result)
+		{
+			base.WriteResult(result);
+		}
+
+		protected override void GenerateReports()
+		{
+			base.GenerateReports();
+		}
+
+		#endregion
+	}
+}
diff --git a/VectoMockup/VectoMockup/Simulation/MockupRun.cs b/VectoMockup/VectoMockup/Simulation/MockupRun.cs
new file mode 100644
index 0000000000000000000000000000000000000000..2fd82a4c1f43e9e566afe2ade2ff5e9910a61320
--- /dev/null
+++ b/VectoMockup/VectoMockup/Simulation/MockupRun.cs
@@ -0,0 +1,50 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCore.Models.Connector.Ports.Impl;
+using TUGraz.VectoCore.OutputData;
+
+namespace TUGraz.VectoCore.Models.Simulation.Impl.Mockup
+{
+    public class MockupRun : VectoRun
+	{
+		private IVehicleContainer _vehicleContainer;
+		public MockupRun(IVehicleContainer container) : base(container)
+		{
+			_vehicleContainer = container;
+			
+			
+		}
+
+
+		#region Overrides of VectoRun
+		public override double Progress => 1;
+
+		protected override IResponse DoSimulationStep()
+		{
+			FinishedWithoutErrors = true;
+
+			return new ResponseCycleFinished(this);
+		}
+
+		public override bool CalculateAggregateValues()
+		{
+			return false;
+		}
+
+		protected override bool CheckCyclePortProgress()
+		{
+			return false;
+		}
+
+		protected override IResponse Initialize()
+		{
+			return new ResponseSuccess(this);
+		}
+
+		#endregion
+	}
+}
diff --git a/VectoMockup/VectoMockup/Simulation/MockupRunData.cs b/VectoMockup/VectoMockup/Simulation/MockupRunData.cs
new file mode 100644
index 0000000000000000000000000000000000000000..fc05f6cc4f4e9dfe150390c0b8f9c8b92aa2bbac
--- /dev/null
+++ b/VectoMockup/VectoMockup/Simulation/MockupRunData.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace TUGraz.VectoMockup.RunData
+{
+    internal class MockupRunData
+    {
+    }
+}
diff --git a/VectoMockup/VectoMockup/RunData/DeclarationModeMockupTruckVectoRunDataFactory.cs b/VectoMockup/VectoMockup/Simulation/RundataFactories/MockupLorryVectoRunDataFactory.cs
similarity index 88%
rename from VectoMockup/VectoMockup/RunData/DeclarationModeMockupTruckVectoRunDataFactory.cs
rename to VectoMockup/VectoMockup/Simulation/RundataFactories/MockupLorryVectoRunDataFactory.cs
index 1c7e6f2f6b53b101159b82ca298212d335568483..e67ae4c20e8777675ac2ba1617dc08de963669f6 100644
--- a/VectoMockup/VectoMockup/RunData/DeclarationModeMockupTruckVectoRunDataFactory.cs
+++ b/VectoMockup/VectoMockup/Simulation/RundataFactories/MockupLorryVectoRunDataFactory.cs
@@ -1,41 +1,28 @@
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using TUGraz.VectoCommon.BusAuxiliaries;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.InputData.Reader.ComponentData;
 using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter;
 using TUGraz.VectoCore.InputData.Reader.Impl;
+using TUGraz.VectoCore.Models.BusAuxiliaries;
 using TUGraz.VectoCore.Models.Declaration;
 using TUGraz.VectoCore.Models.Simulation.Data;
 using TUGraz.VectoCore.Models.SimulationComponent.Data;
 using TUGraz.VectoCore.OutputData;
 using TUGraz.VectoCore.OutputData.XML;
 
-namespace TUGraz.VectoMockup.RunData
+namespace TUGraz.VectoMockup.Simulation.RundataFactories
 {
-    public class DeclarationModeMockupPrimaryBusVectoRunDataFactory : DeclarationModePrimaryBusVectoRunDataFactory
+    public class MockupLorryVectoRunDataFactory : DeclarationModeTruckVectoRunDataFactory
     {
-        public DeclarationModeMockupPrimaryBusVectoRunDataFactory(IDeclarationInputDataProvider dataProvider,
-            IDeclarationReport report) :
-            base(dataProvider, report)
-        {
-            if (report is IMockupReport mockupReport)
-            {
-                mockupReport.Mockup = true;
-            }
-        }
-    }
-    public class DeclarationModeMockupTruckVectoRunDataFactory : DeclarationModeTruckVectoRunDataFactory
-    {
-        public DeclarationModeMockupTruckVectoRunDataFactory(IDeclarationInputDataProvider dataProvider,
+        public MockupLorryVectoRunDataFactory(IDeclarationInputDataProvider dataProvider,
             IDeclarationReport report) : base(dataProvider, report, false)
         {
-            if (report is IMockupReport mockupReport)
-            {
-                mockupReport.Mockup = true;
-            }
+
         }
 
         #region Overrides of AbstractDeclarationVectoRunDataFactory
@@ -73,7 +60,6 @@ namespace TUGraz.VectoMockup.RunData
                 fuels = null;
             }
             Report.InitializeReport(powertrainConfig, fuels);
-
         }
 
         protected override VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle, int modeIdx, Mission mission,
@@ -111,6 +97,7 @@ namespace TUGraz.VectoMockup.RunData
                     EngineData = CreateMockupEngineData(vehicle, modeIdx),
                     GearboxData = CreateMockupGearboxData(vehicle),
                     AxleGearData = CreateMockupAxleGearData(vehicle),
+
                     JobType = InputDataProvider.JobInputData.JobType,
 
                 };
diff --git a/VectoMockup/VectoMockup/Simulation/RundataFactories/MockupMultistageCompletedBusRunDataFactory.cs b/VectoMockup/VectoMockup/Simulation/RundataFactories/MockupMultistageCompletedBusRunDataFactory.cs
new file mode 100644
index 0000000000000000000000000000000000000000..ff2f15657d0ab70b0bd18d29e93917fcc50c9b03
--- /dev/null
+++ b/VectoMockup/VectoMockup/Simulation/RundataFactories/MockupMultistageCompletedBusRunDataFactory.cs
@@ -0,0 +1,51 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCommon.Utils;
+using TUGraz.VectoCore.InputData.Reader.Impl;
+using TUGraz.VectoCore.Models.Declaration;
+using TUGraz.VectoCore.Models.Simulation.Data;
+using TUGraz.VectoCore.OutputData;
+
+namespace TUGraz.VectoMockup.Simulation.RundataFactories
+{
+    internal class MockupMultistageCompletedBusRunDataFactory : DeclarationModeCompletedMultistageBusVectoRunDataFactory
+    {
+		public MockupMultistageCompletedBusRunDataFactory(IMultistageBusInputDataProvider dataProvider,
+			IDeclarationReport report) : base(dataProvider, report)
+		{
+
+		}
+
+		#region Overrides of DeclarationModeCompletedMultistageBusVectoRunDataFactory
+
+		protected override void Initialize()
+		{
+
+			_segmentCompletedBus = GetCompletedSegment(CompletedVehicle, PrimaryVehicle.AxleConfiguration);
+			
+			//base.Initialize();
+		}
+
+		protected override IEnumerable<VectoRunData> VectoRunDataHeavyBusCompleted()
+		{
+
+			return base.VectoRunDataHeavyBusCompleted();
+		}
+
+		protected override VectoRunData CreateVectoRunDataSpecific(Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, int modeIdx)
+		{
+			return base.CreateVectoRunDataSpecific(mission, loading, modeIdx);
+		}
+
+		protected override VectoRunData CreateVectoRunDataGeneric(Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, Segment primarySegment, int modeIdx)
+		{
+			return base.CreateVectoRunDataGeneric(mission, loading, primarySegment, modeIdx);
+		}
+
+		#endregion
+	}
+}
diff --git a/VectoMockup/VectoMockup/Simulation/RundataFactories/PrimaryBusMockupRunDataFactory.cs b/VectoMockup/VectoMockup/Simulation/RundataFactories/PrimaryBusMockupRunDataFactory.cs
new file mode 100644
index 0000000000000000000000000000000000000000..ee5ccfca4db4e591da9efcdb2218bf54a1f7852d
--- /dev/null
+++ b/VectoMockup/VectoMockup/Simulation/RundataFactories/PrimaryBusMockupRunDataFactory.cs
@@ -0,0 +1,292 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using TUGraz.VectoCommon.BusAuxiliaries;
+using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Utils;
+using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider;
+using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces;
+using TUGraz.VectoCore.InputData.Reader.ComponentData;
+using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter;
+using TUGraz.VectoCore.InputData.Reader.Impl;
+using TUGraz.VectoCore.Models.BusAuxiliaries;
+using TUGraz.VectoCore.Models.Declaration;
+using TUGraz.VectoCore.Models.Simulation.Data;
+using TUGraz.VectoCore.Models.SimulationComponent.Data;
+using TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox;
+using TUGraz.VectoCore.OutputData;
+
+namespace TUGraz.VectoMockup.Simulation.RundataFactories
+{
+    public class PrimaryBusMockupRunDataFactory : DeclarationModePrimaryBusVectoRunDataFactory
+    {
+        public PrimaryBusMockupRunDataFactory(IDeclarationInputDataProvider dataProvider,
+            IDeclarationReport report) :
+            base(dataProvider, report)
+        { }
+
+        #region Overrides of AbstractDeclarationVectoRunDataFactory
+
+        protected override void Initialize()
+        {
+            _segment = GetSegment(InputDataProvider.JobInputData.Vehicle);
+        }
+
+        protected override void InitializeReport()
+        {
+            if (InputDataProvider.JobInputData.JobType == VectoSimulationJobType.ConventionalVehicle)
+            {
+                base.InitializeReport();
+                return;
+            }
+
+            VectoRunData powertrainConfig;
+            List<List<FuelData.Entry>> fuels;
+            var vehicle = InputDataProvider.JobInputData.Vehicle;
+            if (vehicle.ExemptedVehicle)
+            {
+                powertrainConfig = CreateVectoRunData(vehicle, 0, null,
+                    new KeyValuePair<LoadingType, Tuple<Kilogram, double?>>());
+                fuels = new List<List<FuelData.Entry>>();
+            }
+            else
+            {
+                powertrainConfig = _segment.Missions.Select(
+                        mission => CreateVectoRunData(
+                            vehicle, 0, mission, mission.Loadings.First()))
+                    .FirstOrDefault(x => x != null);
+                fuels = null;
+            }
+
+            Report.InitializeReport(powertrainConfig, fuels);
+        }
+
+        #region Overrides of DeclarationModePrimaryBusVectoRunDataFactory
+
+        protected override VectoRunData CreateVectoRunData(IVehicleDeclarationInputData vehicle, int modeIdx,
+            Mission mission,
+            KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading)
+        {
+
+            VectoRunData runData;
+            if (InputDataProvider.JobInputData.Vehicle.ExemptedVehicle)
+            {
+                throw new NotImplementedException();
+            }
+            else
+            {
+                var cycle = DeclarationData.CyclesCache.GetOrAdd(mission.MissionType,
+                    _ =>
+                    {
+                        return DrivingCycleDataReader.ReadFromStream(mission.CycleFile, CycleType.DistanceBased, "",
+                            false);
+                    });
+
+
+                runData = new VectoRunData()
+                {
+                    Loading = loading.Key,
+                    Cycle = new DrivingCycleProxy(cycle, mission.MissionType.ToString()),
+                    ExecutionMode = ExecutionMode.Declaration,
+                    Report = Report,
+                    Mission = mission,
+                    SimulationType = SimulationType.DistanceCycle,
+                    VehicleData = CreateMockupVehicleData(vehicle),
+                    Retarder = CreateMockupRetarder(vehicle),
+                    AxleGearData = CreateMockupAxleGearData(vehicle),
+                    GearboxData = CreateMockupGearboxData(vehicle),
+                    AngledriveData = CreateMockupAngleDriveData(vehicle),
+					EngineData = CreateMockupEngineData(vehicle, modeIdx),
+                    BusAuxiliaries = CreateMockupBusAux(vehicle),
+
+                };
+            }
+
+            runData.InputData = InputDataProvider;
+
+            return runData;
+        }
+
+
+
+        #endregion
+
+        #endregion
+        private IAuxiliaryConfig CreateMockupBusAux(IVehicleDeclarationInputData vehicle)
+        {
+            return new AuxiliaryConfig()
+            {
+                InputData = vehicle.Components.BusAuxiliaries,
+
+            };
+        }
+        private RetarderData CreateMockupRetarder(IVehicleDeclarationInputData vehicle)
+        {
+            var xmlVehicle = vehicle as IXMLDeclarationVehicleData;
+            return new RetarderData()
+            {
+                Type = xmlVehicle.RetarderType,
+
+                Ratio = xmlVehicle.RetarderType.IsDedicatedComponent() ? xmlVehicle.RetarderRatio : 0,
+            };
+        }
+
+        private AngledriveData CreateMockupAngleDriveData(IVehicleDeclarationInputData vehicle)
+        {
+            if (vehicle.Components.AngledriveInputData == null)
+            {
+                return null;
+            }
+
+			var componentData = vehicle.Components.AngledriveInputData;
+            return new AngledriveData()
+            {
+                InputData = vehicle.Components.AngledriveInputData,
+
+
+			
+
+                Angledrive = new TransmissionData() {
+                    Ratio = componentData.Ratio,
+				},
+
+				Manufacturer = componentData.Manufacturer,
+				ModelName = componentData.Model,
+				CertificationNumber = componentData.CertificationNumber,
+				Date = componentData.Date,
+            };
+        }
+
+        private AxleGearData CreateMockupAxleGearData(IVehicleDeclarationInputData vehicle)
+        {
+            if (vehicle.Components.AxleGearInputData == null)
+            {
+                return null;
+            }
+
+			var componentData = vehicle.Components.AxleGearInputData;
+            return new AxleGearData()
+            {
+                InputData = vehicle.Components.AxleGearInputData,
+
+				Manufacturer = componentData.Manufacturer,
+				ModelName = componentData.Model,
+				CertificationNumber = componentData.CertificationNumber,
+				Date = componentData.Date,
+                AxleGear = new TransmissionData()
+                {
+                    Ratio = vehicle.Components.AxleGearInputData.Ratio,
+
+				}
+            };
+        }
+
+        private GearboxData CreateMockupGearboxData(IVehicleDeclarationInputData vehicle)
+        {
+            if (vehicle.Components.GearboxInputData == null)
+            {
+                return null;
+            }
+
+			var componentData = vehicle.Components.GearboxInputData;
+			var gears = new Dictionary<uint, GearData>();
+            foreach (var gearInputData in componentData.Gears) {
+				gears.Add((uint)gearInputData.Gear, new GearData() {
+                    Ratio = gearInputData.Ratio,
+                    MaxTorque = gearInputData.MaxTorque,
+                    MaxSpeed = gearInputData.MaxInputSpeed,
+				});
+			}
+				
+
+			return new GearboxData()
+            {
+                InputData = vehicle.Components.GearboxInputData,
+
+				Manufacturer = componentData.Manufacturer,
+				ModelName = componentData.Model,
+				CertificationNumber = componentData.CertificationNumber,
+				Date = componentData.Date,
+                Gears = gears,
+
+			};
+        }
+
+
+        private CombustionEngineData CreateMockupEngineData(IVehicleDeclarationInputData vehicleData, int modeIdx)
+        {
+
+            var engine = InputDataProvider.JobInputData.Vehicle.Components.EngineInputData;
+            if (engine == null)
+            {
+                return null;
+            }
+
+            var engineModes = engine.EngineModes;
+            var engineMode = engineModes[modeIdx];
+            var fuels = new List<CombustionEngineFuelData>();
+            foreach (var fuel in engineMode.Fuels)
+            {
+                fuels.Add(new CombustionEngineFuelData()
+                {
+                    FuelData = DeclarationData.FuelData.Lookup(fuel.FuelType, vehicleData.TankSystem)
+                });
+            }
+
+			var componentData = vehicleData.Components.EngineInputData;
+            return new CombustionEngineData()
+            {
+                Fuels = fuels,
+                RatedPowerDeclared = vehicleData.Components.EngineInputData.RatedPowerDeclared,
+                IdleSpeed = vehicleData.EngineIdleSpeed,
+                InputData = vehicleData.Components.EngineInputData,
+                WHRType = vehicleData.Components.EngineInputData.WHRType,
+                RatedSpeedDeclared = engine.RatedSpeedDeclared,
+                Displacement = engine.Displacement,
+
+                Manufacturer = componentData.Manufacturer,
+                ModelName = componentData.Model,
+                CertificationNumber = componentData.CertificationNumber,
+                Date = componentData.Date,
+
+
+            };
+        }
+
+        private VehicleData CreateMockupVehicleData(IVehicleDeclarationInputData vehicleData)
+        {
+            return new VehicleData()
+            {
+
+                InputData = vehicleData,
+                SleeperCab = vehicleData.SleeperCab,
+                VehicleClass = _segment.VehicleClass,
+                Ocv = vehicleData.OvcHev,
+                VehicleCategory = vehicleData.VehicleCategory,
+                ZeroEmissionVehicle = vehicleData.ZeroEmissionVehicle,
+                ADAS = CreateMockupAdasData(vehicleData),
+
+                Manufacturer = vehicleData.Manufacturer,
+                ManufacturerAddress = vehicleData.ManufacturerAddress,
+                ModelName = vehicleData.Model,
+                VIN = vehicleData.VIN,
+                LegislativeClass = vehicleData.LegislativeClass,
+                AxleConfiguration = vehicleData.AxleConfiguration,
+                Date = vehicleData.Date,
+			};
+        }
+
+        private VehicleData.ADASData CreateMockupAdasData(IVehicleDeclarationInputData vehicleData)
+        {
+            var adas = vehicleData.ADAS;
+            return new VehicleData.ADASData()
+            {
+                EcoRoll = adas.EcoRoll,
+                EngineStopStart = adas.EngineStopStart,
+                InputData = adas,
+                PredictiveCruiseControl = adas.PredictiveCruiseControl,
+            };
+        }
+    }
+}
diff --git a/VectoMockup/VectoMockup/Simulation/RundataFactories/VectoMockupRunDataFactoryFactory.cs b/VectoMockup/VectoMockup/Simulation/RundataFactories/VectoMockupRunDataFactoryFactory.cs
new file mode 100644
index 0000000000000000000000000000000000000000..8f2a3a06f1df065538f8e6765a6d4ff7aad4e1ca
--- /dev/null
+++ b/VectoMockup/VectoMockup/Simulation/RundataFactories/VectoMockupRunDataFactoryFactory.cs
@@ -0,0 +1,100 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using TUGraz.VectoCommon.Exceptions;
+using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCore.InputData;
+using TUGraz.VectoCore.InputData.Reader.Impl;
+using TUGraz.VectoCore.OutputData;
+using TUGraz.VectoMockup.RunData;
+
+namespace TUGraz.VectoMockup.Simulation.RundataFactories
+{
+    public class VectoMockUpRunDataFactoryFactory : IVectoRunDataFactoryFactory
+    {
+        #region Implementation of IVectoRunDataFactoryFactory
+
+
+
+        public IVectoRunDataFactory CreateDeclarationRunDataFactory(IInputDataProvider inputDataProvider, IDeclarationReport report,
+            IVTPReport vtpReport)
+        {
+            if (inputDataProvider == null)
+                throw new ArgumentNullException(nameof(inputDataProvider));
+
+            switch (inputDataProvider)
+            {
+                case IVTPDeclarationInputDataProvider vtpProvider:
+                    return CreateRunDataReader(vtpProvider, vtpReport);
+                case ISingleBusInputDataProvider singleBusProvider:
+                    return CreateRunDataReader(singleBusProvider, report);
+                case IDeclarationInputDataProvider declDataProvider:
+                    return CreateRunDataReader(declDataProvider, report);
+                case IMultistageVIFInputData multistageVifInputData:
+                    return CreateRunDataReader(multistageVifInputData, report);
+                default:
+                    break;
+            }
+            throw new VectoException("Unknown InputData for Declaration Mode!");
+        }
+
+        private IVectoRunDataFactory CreateRunDataReader(IMultistageVIFInputData multistageVifInputData, IDeclarationReport report)
+        {
+			if (multistageVifInputData.VehicleInputData == null)
+			{
+				return new MockupMultistageCompletedBusRunDataFactory(
+					multistageVifInputData.MultistageJobInputData,
+					report);
+			}
+			else {
+				throw new NotImplementedException();
+				return new DeclarationModeMultistageBusVectoRunDataFactory(multistageVifInputData, report);
+			}
+		}
+
+        private IVectoRunDataFactory CreateRunDataReader(IDeclarationInputDataProvider declDataProvider, IDeclarationReport report)
+        {
+            var vehicleCategory = declDataProvider.JobInputData.Vehicle.VehicleCategory;
+            if (vehicleCategory.IsLorry())
+            {
+                return new MockupLorryVectoRunDataFactory(declDataProvider, report);
+            }
+
+            if (vehicleCategory.IsBus())
+
+                switch (declDataProvider.JobInputData.Vehicle.VehicleCategory)
+                {
+                    case VehicleCategory.HeavyBusCompletedVehicle:
+                        throw new NotImplementedException();
+                        return new DeclarationModeCompletedBusVectoRunDataFactory(declDataProvider, report);
+                    case VehicleCategory.HeavyBusPrimaryVehicle:
+                        return new PrimaryBusMockupRunDataFactory(declDataProvider, report);
+                    default:
+                        break;
+                }
+
+            throw new Exception(
+                $"Could not create RunDataFactory for Vehicle Category{vehicleCategory}");
+        }
+
+        private IVectoRunDataFactory CreateRunDataReader(ISingleBusInputDataProvider singleBusProvider, IDeclarationReport report)
+        {
+            throw new NotImplementedException();
+        }
+
+        private IVectoRunDataFactory CreateRunDataReader(IVTPDeclarationInputDataProvider vtpProvider, IVTPReport vtpReport)
+        {
+            throw new NotImplementedException();
+        }
+
+        public IVectoRunDataFactory CreateEngineeringRunDataFactory(IEngineeringInputDataProvider inputDataProvider)
+        {
+            throw new NotImplementedException();
+        }
+
+        #endregion
+    }
+}