diff --git a/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs b/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs
index e77666415872ab32c46c7b7aeedc013904e1eb2a..4c1a2dc36e92f5a00b95c20d5731aa8bec06b850 100644
--- a/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs
+++ b/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs
@@ -2256,6 +2256,15 @@ namespace TUGraz.VectoCommon.Resources {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to EnergyConsumption.
+        /// </summary>
+        public static string Report_Result_EnergyConsumption {
+            get {
+                return ResourceManager.GetString("Report_Result_EnergyConsumption", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to FuelMode.
         /// </summary>
@@ -2463,6 +2472,15 @@ namespace TUGraz.VectoCommon.Resources {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to PassengerCount.
+        /// </summary>
+        public static string Report_ResultEntry_PassengerCount {
+            get {
+                return ResourceManager.GetString("Report_ResultEntry_PassengerCount", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to Payload.
         /// </summary>
diff --git a/VectoCommon/VectoCommon/Resources/XMLNames.resx b/VectoCommon/VectoCommon/Resources/XMLNames.resx
index 9f03a15cde555d8470e49e62754add96f2e5451d..eb3dce1849cf7a251342ccab6c1183220fe34e78 100644
--- a/VectoCommon/VectoCommon/Resources/XMLNames.resx
+++ b/VectoCommon/VectoCommon/Resources/XMLNames.resx
@@ -1362,4 +1362,10 @@
   <data name="Vehicle_Articulated" xml:space="preserve">
     <value>Articulated</value>
   </data>
+  <data name="Report_ResultEntry_PassengerCount" xml:space="preserve">
+    <value>PassengerCount</value>
+  </data>
+  <data name="Report_Result_EnergyConsumption" xml:space="preserve">
+    <value>EnergyConsumption</value>
+  </data>
 </root>
\ No newline at end of file
diff --git a/VectoCore/VectoCore/OutputData/DeclarationReport.cs b/VectoCore/VectoCore/OutputData/DeclarationReport.cs
index d300f28745a2b4fa7f5514916006b77ba825ea50..c3f6109b4a90934f196a66238f01fe4040e673d4 100644
--- a/VectoCore/VectoCore/OutputData/DeclarationReport.cs
+++ b/VectoCore/VectoCore/OutputData/DeclarationReport.cs
@@ -68,10 +68,19 @@ namespace TUGraz.VectoCore.OutputData
 
 	public interface IResultEntry
 	{
+		MissionType Mission { get; set; }
+
+		LoadingType LoadingType { get; set; }
+
+		int FuelMode { get; set; }
 		IList<IFuelProperties> FuelData { get; set; }
 		Kilogram Payload { get; set; }
 		Kilogram TotalVehicleWeight { get; set; }
 		CubicMeter CargoVolume { get; set; }
+
+		double PassengerCount { get; set; }
+		VehicleClass VehicleClass { get; set; }
+
 		void SetResultData(VectoRunData runData, IModalDataContainer data, double weightingFactor);
 	}
 
@@ -93,13 +102,15 @@ namespace TUGraz.VectoCore.OutputData
 		/// </summary>
 		//protected readonly Dictionary<MissionType, ResultContainer<T>> Missions =
 		//	new Dictionary<MissionType, ResultContainer<T>>();
-		protected readonly Dictionary<int, Dictionary<MissionType, ResultContainer<T>>> Missions =
-			new Dictionary<int, Dictionary<MissionType, ResultContainer<T>>>();
+		//protected readonly Dictionary<int, Dictionary<MissionType, ResultContainer<T>>> Missions =
+		//new Dictionary<int, Dictionary<MissionType, ResultContainer<T>>>();
+
+		protected readonly List<T> Results = new List<T>();
 
 		/// <summary>
 		/// The full load curve.
 		/// </summary>
-		internal Dictionary<uint, EngineFullLoadCurve> Flc { get; set; }
+		//internal Dictionary<uint, EngineFullLoadCurve> Flc { get; set; }
 
 		///// <summary>
 		///// The declaration segment from the segment table
@@ -123,27 +134,29 @@ namespace TUGraz.VectoCore.OutputData
 		[MethodImpl(MethodImplOptions.Synchronized)]
 		public void PrepareResult(LoadingType loading, Mission mission, int fuelMode, VectoRunData runData)
 		{
-			if (!Missions.ContainsKey(fuelMode)) {
-				Missions[fuelMode] = new Dictionary<MissionType, ResultContainer<T>>();
-			}
-			var missions = Missions[fuelMode];
-
-			var missionType = mission.MissionType;
-			if (!missions.ContainsKey(missionType)) {
-				missions[missionType] = new ResultContainer<T>() {
-					Mission = missionType,
-					ResultEntry = new Dictionary<LoadingType, T>(),
-				};
-			}
-			if (missionType != MissionType.ExemptedMission) {
-				var entry = new T();
-				entry.FuelData = runData.EngineData.Fuels.Select(x => x.FuelData).ToList();
-				entry.Payload = runData.VehicleData.Loading;
-				entry.TotalVehicleWeight = runData.VehicleData.TotalVehicleMass;
-				entry.CargoVolume = runData.VehicleData.CargoVolume;
-
-				missions[mission.MissionType].ResultEntry[loading] = entry;
-			}
+			//if (!Missions.ContainsKey(fuelMode)) {
+			//	Missions[fuelMode] = new Dictionary<MissionType, ResultContainer<T>>();
+			//}
+			//var missions = Missions[fuelMode];
+
+			//var missionType = mission.MissionType;
+			//if (!missions.ContainsKey(missionType)) {
+			//	missions[missionType] = new ResultContainer<T>() {
+			//		Mission = missionType,
+			//		ResultEntry = new Dictionary<LoadingType, T>(),
+			//	};
+			//}
+			//if (missionType != MissionType.ExemptedMission) {
+			//	var entry = new T();
+			//	entry.FuelData = runData.EngineData.Fuels.Select(x => x.FuelData).ToList();
+			//	entry.Payload = runData.VehicleData.Loading;
+			//	entry.TotalVehicleWeight = runData.VehicleData.TotalVehicleMass;
+			//	entry.CargoVolume = runData.VehicleData.CargoVolume;
+			//	// subtract driver!
+			//	entry.PassengerCount = runData.BusAuxiliaries?.SSMInputs.NumberOfPassengers ?? 0 - 1;
+
+			//	missions[mission.MissionType].ResultEntry[loading] = entry;
+			//}
 			_resultCount++;
 		}
 
@@ -154,39 +167,63 @@ namespace TUGraz.VectoCore.OutputData
 			_resultCount--;
 			if (_resultCount == 0) {
 				DoWriteReport();
-				Flc = null;
+				//Flc = null;
 			}
 		}
 
 		public void AddResult(LoadingType loadingType, Mission mission, int fuelMode, VectoRunData runData,
 			IModalDataContainer modData)
 		{
-			if (!Missions.ContainsKey(fuelMode)) {
-				throw new VectoException("Unknown fuel mode {0} for generating declaration report", fuelMode);
-			}
-			if (!Missions[fuelMode].ContainsKey(mission.MissionType)) {
-				throw new VectoException("Unknown mission type {0} for generating declaration report", mission.MissionType);
-			}
-			if (mission.MissionType != MissionType.ExemptedMission && !Missions[fuelMode][mission.MissionType].ResultEntry.ContainsKey(loadingType)) {
-				throw new VectoException("Unknown loading type {0} for mission {1}", loadingType, mission.MissionType);
-			}
-			
+			//if (!Missions.ContainsKey(fuelMode)) {
+			//	throw new VectoException("Unknown fuel mode {0} for generating declaration report", fuelMode);
+			//}
+			//if (!Missions[fuelMode].ContainsKey(mission.MissionType)) {
+			//	throw new VectoException("Unknown mission type {0} for generating declaration report", mission.MissionType);
+			//}
+			//if (mission.MissionType != MissionType.ExemptedMission && !Missions[fuelMode][mission.MissionType].ResultEntry.ContainsKey(loadingType)) {
+			//	throw new VectoException("Unknown loading type {0} for mission {1}", loadingType, mission.MissionType);
+			//}
+
+
+			//if (mission.MissionType != MissionType.ExemptedMission) {
+			//	DoAddResult(Missions[fuelMode][mission.MissionType].ResultEntry[loadingType], runData, modData);
+			//}
 
 			if (mission.MissionType != MissionType.ExemptedMission) {
-				DoAddResult(Missions[fuelMode][mission.MissionType].ResultEntry[loadingType], runData, modData);
+				var entry = new T();
+				entry.Mission = mission.MissionType;
+				entry.LoadingType = loadingType;
+				entry.FuelMode = fuelMode;
+				entry.FuelData = runData.EngineData.Fuels.Select(x => x.FuelData).ToList();
+				entry.Payload = runData.VehicleData.Loading;
+				entry.TotalVehicleWeight = runData.VehicleData.TotalVehicleMass;
+				entry.CargoVolume = runData.VehicleData.CargoVolume;
+				entry.VehicleClass = runData.VehicleData.VehicleClass;
+				// subtract driver!
+				entry.PassengerCount = (runData.BusAuxiliaries?.SSMInputs.NumberOfPassengers ?? 0) - 1;
+				Results.Add(entry);
+				DoStoreResult(entry, runData, modData);
 			}
 
 			WriteResults();
 		}
 
+		protected IEnumerable<T> OrderedResults
+		{
+			get {
+				return Results.OrderBy(x => x.VehicleClass).ThenBy(x => x.FuelMode).ThenBy(x => x.Mission)
+							.ThenBy(x => x.LoadingType);
+			}
+		}
+
 		/// <summary>
-		/// Adds the result of one run for the specific mission and loading. If all runs finished (given by the resultCount) the report will be written.
+		/// Adds the result of one run for the specific mission and loading. 
 		/// </summary>
 		/// <param name="entry"></param>
 		/// <param name="runData"></param>
 		/// <param name="modData">The mod data.</param>
-		[MethodImpl(MethodImplOptions.Synchronized)]
-		protected abstract void DoAddResult(T entry, VectoRunData runData, IModalDataContainer modData);
+		//[MethodImpl(MethodImplOptions.Synchronized)]
+		protected abstract void DoStoreResult(T entry, VectoRunData runData, IModalDataContainer modData);
 
 
 		protected internal abstract void DoWriteReport();
diff --git a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs
index 6285f098aa1af3262da918968a9ad5efa74f431d..ee350ca28cbf380e062adaaac822878f7e1abd1e 100644
--- a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs
+++ b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs
@@ -384,8 +384,6 @@ namespace TUGraz.VectoCore.OutputData
 			var kilogramCO2PerMeter = 0.SI<KilogramPerMeter>();
 
 
-			// TODO: Correct for fuel-fired heater
-
 			var engineWasteheatSum = modData.FuelData.Aggregate(
 				0.SI<Joule>(),
 				(current, fuel) => current + modData.TotalFuelConsumption(ModalResultField.FCFinal, fuel) *
diff --git a/VectoCore/VectoCore/OutputData/XML/AbstractXMLManufacturerReport.cs b/VectoCore/VectoCore/OutputData/XML/AbstractXMLManufacturerReport.cs
index e610e3c1489fdbdae15e4224684da90f0b205c0b..c3e1fce689ba8daed9f43f079dcaa430f05d6e2e 100644
--- a/VectoCore/VectoCore/OutputData/XML/AbstractXMLManufacturerReport.cs
+++ b/VectoCore/VectoCore/OutputData/XML/AbstractXMLManufacturerReport.cs
@@ -24,7 +24,7 @@ namespace TUGraz.VectoCore.OutputData.XML
 	{
 		void Initialize(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes);
 		XDocument Report { get; }
-		void WriteResult(DeclarationReport<XMLDeclarationReport.ResultEntry>.ResultContainer<XMLDeclarationReport.ResultEntry> resultValue);
+		void WriteResult(XMLDeclarationReport.ResultEntry resultValue);
 		void GenerateReport();
 	}
 
@@ -107,41 +107,39 @@ namespace TUGraz.VectoCore.OutputData.XML
 		}
 
 
-		public virtual void WriteResult(
-			DeclarationReport<XMLDeclarationReport.ResultEntry>.ResultContainer<XMLDeclarationReport.ResultEntry> entry)
+		public virtual void WriteResult(XMLDeclarationReport.ResultEntry resultEntry)
 		{
-			foreach (var resultEntry in entry.ResultEntry) {
-				_allSuccess &= resultEntry.Value.Status == VectoRun.Status.Success;
+			_allSuccess &= resultEntry.Status == VectoRun.Status.Success;
 				Results.Add(
 					new XElement(
 						tns + XMLNames.Report_Result_Result,
 						new XAttribute(
 							XMLNames.Report_Result_Status_Attr,
-							resultEntry.Value.Status == VectoRun.Status.Success ? "success" : "error"),
-						new XElement(tns + XMLNames.Report_Result_Mission, entry.Mission.ToXMLFormat()),
+							resultEntry.Status == VectoRun.Status.Success ? "success" : "error"),
+						new XElement(tns + XMLNames.Report_Result_Mission, resultEntry.Mission.ToXMLFormat()),
 						GetResults(resultEntry)));
-			}
+			
 		}
 
-		protected virtual object[] GetResults(KeyValuePair<LoadingType, XMLDeclarationReport.ResultEntry> resultEntry)
+		protected virtual object[] GetResults( XMLDeclarationReport.ResultEntry resultEntry)
 		{
-			switch (resultEntry.Value.Status) {
+			switch (resultEntry.Status) {
 				case VectoRun.Status.Pending:
 				case VectoRun.Status.Running:
 					return new object[] {
-						GetSimulationParameters(resultEntry.Value),
+						GetSimulationParameters(resultEntry),
 						new XElement(
 							tns + XMLNames.Report_Results_Error,
-							string.Format("Simulation not finished! Status: {0}", resultEntry.Value.Status)),
+							string.Format("Simulation not finished! Status: {0}", resultEntry.Status)),
 						new XElement(tns + XMLNames.Report_Results_ErrorDetails, ""),
 					}; // should not happen!
-				case VectoRun.Status.Success: return GetSuccessResultEntry(resultEntry.Value);
+				case VectoRun.Status.Success: return GetSuccessResultEntry(resultEntry);
 				case VectoRun.Status.Canceled:
 				case VectoRun.Status.Aborted:
 					return new object[] {
-						GetSimulationParameters(resultEntry.Value),
-						new XElement(tns + XMLNames.Report_Results_Error, resultEntry.Value.Error),
-						new XElement(tns + XMLNames.Report_Results_ErrorDetails, resultEntry.Value.StackTrace),
+						GetSimulationParameters(resultEntry),
+						new XElement(tns + XMLNames.Report_Results_Error, resultEntry.Error),
+						new XElement(tns + XMLNames.Report_Results_ErrorDetails, resultEntry.StackTrace),
 					};
 				default: throw new ArgumentOutOfRangeException();
 			}
@@ -209,6 +207,7 @@ namespace TUGraz.VectoCore.OutputData.XML
 					tns + XMLNames.Report_ResultEntry_TotalVehicleMass,
 					XMLHelper.ValueAsUnit(result.TotalVehicleWeight, XMLNames.Unit_kg)),
 				new XElement(tns + XMLNames.Report_ResultEntry_Payload, XMLHelper.ValueAsUnit(result.Payload, XMLNames.Unit_kg)),
+				result.PassengerCount > 0 ? new XElement(tns + "PassengerCount", result.PassengerCount.ToMinSignificantDigits(3,1)) : null,
 				new XElement(
 					tns + XMLNames.Report_Result_FuelMode,
 					result.FuelData.Count > 1 ? XMLNames.Report_Result_FuelMode_Val_Dual : XMLNames.Report_Result_FuelMode_Val_Single)
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLCustomerReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLCustomerReport.cs
index 8b0c306e89310b9dc9bd106d7498ebf09bd69ea5..4973b3f4e9664241521fefbd0069f21672864bf6 100644
--- a/VectoCore/VectoCore/OutputData/XML/XMLCustomerReport.cs
+++ b/VectoCore/VectoCore/OutputData/XML/XMLCustomerReport.cs
@@ -162,35 +162,34 @@ namespace TUGraz.VectoCore.OutputData.XML
 				);
 		}
 
-		public void WriteResult(
-			DeclarationReport<XMLDeclarationReport.ResultEntry>.ResultContainer<XMLDeclarationReport.ResultEntry> entry)
+		public void WriteResult(XMLDeclarationReport.ResultEntry resultEntry)
 		{
-			foreach (var resultEntry in entry.ResultEntry) {
-				_allSuccess &= resultEntry.Value.Status == VectoRun.Status.Success;
-				if (resultEntry.Value.Status == VectoRun.Status.Success) {
-					_weightedPayload += resultEntry.Value.Payload * resultEntry.Value.WeightingFactor;
-					_weightedCo2 += resultEntry.Value.CO2Total / resultEntry.Value.Distance * resultEntry.Value.WeightingFactor;
+			//foreach (var resultEntry in entry.ResultEntry) {
+				_allSuccess &= resultEntry.Status == VectoRun.Status.Success;
+				if (resultEntry.Status == VectoRun.Status.Success) {
+					_weightedPayload += resultEntry.Payload * resultEntry.WeightingFactor;
+					_weightedCo2 += resultEntry.CO2Total / resultEntry.Distance * resultEntry.WeightingFactor;
 				}
 				Results.Add(new XElement(tns + XMLNames.Report_Result_Result,
 					new XAttribute(XMLNames.Report_Result_Status_Attr,
-						resultEntry.Value.Status == VectoRun.Status.Success ? "success" : "error"),
-					new XElement(tns + XMLNames.Report_Result_Mission, entry.Mission.ToXMLFormat()),
+						resultEntry.Status == VectoRun.Status.Success ? "success" : "error"),
+					new XElement(tns + XMLNames.Report_Result_Mission, resultEntry.Mission.ToXMLFormat()),
 					GetResults(resultEntry)));
-			}
+			//}
 		}
 
-		private object[] GetResults(KeyValuePair<LoadingType, XMLDeclarationReport.ResultEntry> resultEntry)
+		private object[] GetResults(XMLDeclarationReport.ResultEntry resultEntry)
 		{
-			switch (resultEntry.Value.Status) {
+			switch (resultEntry.Status) {
 				case VectoRun.Status.Pending:
 				case VectoRun.Status.Running:
 					return null; // should not happen!
 				case VectoRun.Status.Success:
-					return GetSuccessResultEntry(resultEntry.Value);
+					return GetSuccessResultEntry(resultEntry);
 				case VectoRun.Status.Canceled:
 				case VectoRun.Status.Aborted:
 					return new object[] {
-						new XElement(tns + "Error", resultEntry.Value.Error)
+						new XElement(tns + "Error", resultEntry.Error)
 					};
 				default:
 					throw new ArgumentOutOfRangeException();
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs
index 4850ec9a210ef3ccec8e1a4e7bfeeb770e04e72d..43ccbc3dbe6994407a2c5320ba87f62957213949 100644
--- a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs
+++ b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs
@@ -75,6 +75,9 @@ namespace TUGraz.VectoCore.OutputData.XML
 				Distance = double.MaxValue.SI<Meter>();
 			}
 
+			public MissionType Mission { get; set; }
+			public LoadingType LoadingType { get; set; }
+			public int FuelMode { get; set; }
 			public IList<IFuelProperties> FuelData { get; set; }
 
 
@@ -84,6 +87,9 @@ namespace TUGraz.VectoCore.OutputData.XML
 
 			public CubicMeter CargoVolume { get; set; }
 
+			public double PassengerCount { get; set; }
+			public VehicleClass VehicleClass { get; set; }
+
 			public MeterPerSecond AverageSpeed { get; private set; }
 
 			public MeterPerSecond AverageDrivingSpeed { get; private set; }
@@ -154,26 +160,40 @@ namespace TUGraz.VectoCore.OutputData.XML
 				Distance = data.Distance;
 
 				var workESS = data.WorkAuxiliariesDuringEngineStop() + data.WorkEngineStart();
-				var workWHRel = data.TimeIntegral<WattSecond>(ModalResultField.P_WHR_el_corr);
-				var workWHRelMech = -workWHRel / DeclarationData.AlternaterEfficiency;
-
-				var workWHRmech = -data.TimeIntegral<WattSecond>(ModalResultField.P_WHR_mech_corr);
+				var workWHR = WorkWHRCorrection(data);
 
-				var workWHR = workWHRelMech + workWHRmech;
+				var workBusAuxCorr = 0.SI<WattSecond>();
+				if (runData.BusAuxiliaries != null) {
+					workBusAuxCorr = WorkBusAuxCorrection(runData, data);
+				}
+				
 
 				FuelConsumptionFinal = new Dictionary<FuelType, Kilogram>();
 				CO2Total = 0.SI<Kilogram>();
 				EnergyConsumptionTotal = 0.SI<Joule>();
 
+				var engineWasteheatSum = data.FuelData.Aggregate(
+					0.SI<Joule>(),
+					(current, fuel) => current + data.TotalFuelConsumption(ModalResultField.FCFinal, fuel) *
+										fuel.LowerHeatingValueVecto);
+
+				var auxHeaterDemand = data.AuxHeaterDemandCalc(data.Duration, engineWasteheatSum);
+
+				var firstFuel = true;
 				foreach (var entry in data.FuelData) {
 					var col = data.GetColumnName(entry, ModalResultField.FCFinal);
 					var fcSum = data.TimeIntegral<Kilogram>(col);
 
 					var correction = 0.SI<KilogramPerWattSecond>();
-					if (!(workWHR + workESS).IsEqual(0)) {
+					if (!(workWHR + workESS + workBusAuxCorr).IsEqual(0)) {
 						correction = data.VehicleLineCorrectionFactor(entry);
 					}
-					var fcTotalcorr = fcSum + correction * (workESS + workWHR);
+					var fcAuxHtr = 0.SI<Kilogram>();
+					if (firstFuel) {
+						firstFuel = false;
+						fcAuxHtr = auxHeaterDemand / entry.LowerHeatingValueVecto;
+					}
+					var fcTotalcorr = fcSum + correction * (workESS + workWHR + workBusAuxCorr) + fcAuxHtr;
 					FuelConsumptionFinal[entry.FuelType] = fcTotalcorr;
 					CO2Total += fcTotalcorr * entry.CO2PerFuelWeight;
 					EnergyConsumptionTotal += fcTotalcorr * entry.LowerHeatingValueVecto;
@@ -192,6 +212,37 @@ namespace TUGraz.VectoCore.OutputData.XML
 
 				WeightingFactor = weightingFactor;
 			}
+
+			private static WattSecond WorkWHRCorrection(IModalDataContainer data)
+			{
+				var workWHRel = data.TimeIntegral<WattSecond>(ModalResultField.P_WHR_el_corr);
+				var workWHRelMech = -workWHRel / DeclarationData.AlternaterEfficiency;
+
+				var workWHRmech = -data.TimeIntegral<WattSecond>(ModalResultField.P_WHR_mech_corr);
+
+				var workWHR = workWHRelMech + workWHRmech;
+				return workWHR;
+			}
+
+			private static WattSecond WorkBusAuxCorrection(VectoRunData runData, IModalDataContainer data)
+			{
+				var workBusAuxPSCompOff = data.EnergyPneumaticCompressorPowerOff();
+				var workBusAuxPSCompOn = data.EnergyPneumaticCompressorOn();
+				var airBusAuxPSON = data.AirGenerated();
+				var deltaAir = data.AirConsumed() - data.AirGenerated();
+
+				var kAir = (workBusAuxPSCompOn - workBusAuxPSCompOff) / (airBusAuxPSON - 0.SI<NormLiter>());
+				var workBusAuxPSCorr = (kAir * deltaAir).Cast<WattSecond>();
+
+				var workBusAuxES = data.EnergyBusAuxESConsumed() - data.EnergyBusAuxESGenerated();
+				var workBatterySOC = data.DeltaSOCBusAuxBattery() *
+									runData.BusAuxiliaries.ElectricalUserInputsConfig.ElectricStorageCapacity;
+
+				var workBusAuxESMech = (workBusAuxES + workBatterySOC) /
+										runData.BusAuxiliaries.ElectricalUserInputsConfig.AlternatorMap.GetEfficiency(0.RPMtoRad(), 0.SI<Ampere>()) /
+										runData.BusAuxiliaries.ElectricalUserInputsConfig.AlternatorGearEfficiency;
+				return workBusAuxPSCorr + workBusAuxESMech;
+			}
 		}
 
 		
@@ -217,7 +268,7 @@ namespace TUGraz.VectoCore.OutputData.XML
 		}
 
 
-		protected override void DoAddResult(ResultEntry entry, VectoRunData runData, IModalDataContainer modData)
+		protected override void DoStoreResult(ResultEntry entry, VectoRunData runData, IModalDataContainer modData)
 		{
 			var factor = _weightingFactors[Tuple.Create(runData.Mission.MissionType, runData.Loading)];
 			entry.SetResultData(runData, modData, factor);
@@ -225,13 +276,21 @@ namespace TUGraz.VectoCore.OutputData.XML
 
 		protected internal override void DoWriteReport()
 		{
-			foreach (var fuelMode in Missions.OrderBy(f => f.Key)) {
-				foreach (var result in fuelMode.Value.OrderBy(m => m.Key)) {
-					_manufacturerReport.WriteResult(result.Value);
-					_customerReport.WriteResult(result.Value);
-				}
+			foreach (var result in OrderedResults) {
+				_manufacturerReport.WriteResult(result);
+				_customerReport.WriteResult(result);
+				if (_primaryReport != null) {
+					_primaryReport.WriteResult(result);
+				} 
 			}
 
+			//foreach (var fuelMode in Missions.OrderBy(f => f.Key)) {
+			//	foreach (var result in fuelMode.Value.OrderBy(m => m.Key)) {
+			//		_manufacturerReport.WriteResult(result.Value);
+			//		_customerReport.WriteResult(result.Value);
+			//	}
+			//}
+
 			_manufacturerReport.GenerateReport();
 			var fullReportHash = GetSignature(_manufacturerReport.Report);
 			_customerReport.GenerateReport(fullReportHash);
@@ -240,7 +299,7 @@ namespace TUGraz.VectoCore.OutputData.XML
 			if (Writer != null) {
 				Writer.WriteReport(ReportType.DeclarationReportCustomerXML, _customerReport.Report);
 				Writer.WriteReport(ReportType.DeclarationReportManufacturerXML, _manufacturerReport.Report);
-				Writer.WriteReport(ReportType.DeclarationReportMonitoringXML, _monitoringReport.Report);
+				//Writer.WriteReport(ReportType.DeclarationReportMonitoringXML, _monitoringReport.Report);
 				if (_primaryReport != null) {
 					Writer.WriteReport(ReportType.DeclarationReportPrimaryVehicleXML, _primaryReport.Report);
 				}
@@ -347,8 +406,14 @@ namespace TUGraz.VectoCore.OutputData.XML
 							new XAttribute(XMLNames.Report_Results_Unit_Attr, "g/m³-km"),
 							(result.FuelConsumptionFinal[fuel.FuelType].ConvertToGramm() / result.Distance.ConvertToKiloMeter() /
 							result.CargoVolume)
-							.Value
-							().ToMinSignificantDigits(3, 1))
+							.Value().ToMinSignificantDigits(3, 1))
+						: null,
+					result.PassengerCount > 0
+						? new XElement(
+							tns + XMLNames.Report_Results_FuelConsumption,
+							new XAttribute(XMLNames.Report_Results_Unit_Attr, "g/p-km"),
+							(result.FuelConsumptionFinal[fuel.FuelType].ConvertToGramm() / result.Distance.ConvertToKiloMeter() /
+							result.PassengerCount).ToMinSignificantDigits(3, 1))
 						: null
 				);
 
@@ -376,6 +441,15 @@ namespace TUGraz.VectoCore.OutputData.XML
 								(result.FuelConsumptionFinal[fuel.FuelType] * fuel.LowerHeatingValueVecto /
 								result.Distance.ConvertToKiloMeter() / result.CargoVolume / 1e6).Value().ToMinSignificantDigits(3, 1)));
 					}
+					if (result.PassengerCount > 0) {
+						fcResult.Add(
+							new XElement(
+								tns + XMLNames.Report_Results_FuelConsumption,
+								new XAttribute(XMLNames.Report_Results_Unit_Attr, "MJ/p-km"),
+								(result.FuelConsumptionFinal[fuel.FuelType] * fuel.LowerHeatingValueVecto /
+								result.Distance.ConvertToKiloMeter() / result.PassengerCount / 1e6).Value().ToMinSignificantDigits(3, 1))
+						);
+					}
 				}
 				if (fuel.FuelDensity != null) {
 					fcResult.Add(
@@ -400,6 +474,15 @@ namespace TUGraz.VectoCore.OutputData.XML
 								result.Distance.ConvertToKiloMeter() /
 								result.CargoVolume).Value().ToMinSignificantDigits(3, 1)));
 					}
+					if (result.PassengerCount > 0) {
+						fcResult.Add(
+							new XElement(
+								tns + XMLNames.Report_Results_FuelConsumption,
+								new XAttribute(XMLNames.Report_Results_Unit_Attr, "l/p-km"),
+								(result.FuelConsumptionFinal[fuel.FuelType].ConvertToGramm() / fuel.FuelDensity /
+								result.Distance.ConvertToKiloMeter() / result.PassengerCount).Value().ToMinSignificantDigits(3, 1))
+						);
+					}
 				}
 				retVal.Add(fcResult);
 			}
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLManufacturerReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLManufacturerReport.cs
index b1e4a42607e22d3d7f5aa91bfdef27f166db1431..cf93db46a51d80c07112de72f4ceaf1bf0d03c52 100644
--- a/VectoCore/VectoCore/OutputData/XML/XMLManufacturerReport.cs
+++ b/VectoCore/VectoCore/OutputData/XML/XMLManufacturerReport.cs
@@ -29,25 +29,14 @@
 *   Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology
 */
 
-using System;
 using System.Collections.Generic;
-using System.IO;
 using System.Linq;
-using System.Xml;
 using System.Xml.Linq;
-using TUGraz.IVT.VectoXML.Writer;
-using TUGraz.VectoCommon.BusAuxiliaries;
-using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Resources;
-using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Models.Declaration;
 using TUGraz.VectoCore.Models.Simulation.Data;
-using TUGraz.VectoCore.Models.Simulation.Impl;
-using TUGraz.VectoCore.Models.SimulationComponent.Data;
-using TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox;
 using TUGraz.VectoCore.Utils;
-using TUGraz.VectoHashing;
 
 namespace TUGraz.VectoCore.OutputData.XML
 {
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLPrimaryVehicleReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLPrimaryVehicleReport.cs
index 795753f237cec86300f32b8e48472777060ce413..0c36194bf370d4b7c261925d76db5a21514a208e 100644
--- a/VectoCore/VectoCore/OutputData/XML/XMLPrimaryVehicleReport.cs
+++ b/VectoCore/VectoCore/OutputData/XML/XMLPrimaryVehicleReport.cs
@@ -13,6 +13,7 @@ using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.InputData.Reader.ComponentData;
 using TUGraz.VectoCore.Models.Declaration;
 using TUGraz.VectoCore.Models.Simulation.Data;
+using TUGraz.VectoCore.Models.Simulation.Impl;
 using TUGraz.VectoCore.Models.SimulationComponent.Data;
 using TUGraz.VectoCore.Utils;
 using TUGraz.VectoHashing;
@@ -33,6 +34,9 @@ namespace TUGraz.VectoCore.OutputData.XML
 
 		protected XElement Results;
 
+		private bool _allSuccess = true;
+
+
 		public XMLPrimaryVehicleReport()
 		{
 			VehiclePart = new XElement(tns + XMLNames.Component_Vehicle);
@@ -47,6 +51,7 @@ namespace TUGraz.VectoCore.OutputData.XML
 			var xsi = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance");
 			var retVal = new XDocument();
 			var results = new XElement(Results);
+			results.AddFirst(new XElement(tns + XMLNames.Report_Result_Status, _allSuccess ? "success" : "error"));
 
 			//retVal.Add(new XProcessingInstruction("xml-stylesheet", "href=\"https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/CSS/VectoReports.css\""));
 			retVal.Add(
@@ -56,12 +61,13 @@ namespace TUGraz.VectoCore.OutputData.XML
 					//new XAttribute("schemaVersion", CURRENT_SCHEMA_VERSION),
 					new XAttribute(XNamespace.Xmlns + "xsi", xsi.NamespaceName),
 					new XAttribute("xmlns", tns),
+
 					//new XAttribute(XNamespace.Xmlns + "pbus", tns),
 					new XAttribute(XNamespace.Xmlns + "pif", RootNS),
 					new XAttribute(XNamespace.Xmlns + "di", di),
 					new XAttribute(
 						xsi + "schemaLocation",
-						string.Format("{0} {1}VectoOutputPrimaryVehicleInformation.xsd", tns, AbstractXMLWriter.SchemaLocationBaseUrl)),
+						string.Format("{0} {1}/DEV/VectoOutputPrimaryVehicleInformation.xsd", RootNS, AbstractXMLWriter.SchemaLocationBaseUrl)),
 					new XElement(
 						RootNS + XMLNames.Report_DataWrap,
 						new XAttribute(xsi + "type", "PrimaryVehicleHeavyBusDataType"),
@@ -173,11 +179,13 @@ namespace TUGraz.VectoCore.OutputData.XML
 		protected virtual XElement GetAxleWheelsDescription(VectoRunData modeldData)
 		{
 			var axles = modeldData.VehicleData.InputData.Components.AxleWheels.XMLSource;
-			
+
 			var ns = XNamespace.Get(axles.SchemaInfo.SchemaType.QualifiedName.Namespace);
+
 			//const string adasPrefix = "axl";
 			return new XElement(
 				tns + XMLNames.Component_AxleWheels,
+
 				//new XAttribute(XNamespace.Xmlns + adasPrefix, ns.NamespaceName),
 				new XAttribute(XNamespace.Xmlns + "pbus", tns),
 				new XAttribute("xmlns", ns.NamespaceName),
@@ -187,7 +195,7 @@ namespace TUGraz.VectoCore.OutputData.XML
 			);
 		}
 
-		
+
 
 		private XElement GetAuxiliariesDescription(VectoRunData modelData)
 		{
@@ -195,17 +203,21 @@ namespace TUGraz.VectoCore.OutputData.XML
 			var busAuxXML = busAuxiliaries.InputData.XMLSource;
 			var ns = XNamespace.Get(busAuxXML.FirstChild.SchemaInfo.SchemaType.QualifiedName.Namespace);
 			const string auxPrefix = "aux";
-			return new XElement(tns + XMLNames.Component_Auxiliaries,
-				new XElement(tns + XMLNames.ComponentDataWrapper, 
-				new XAttribute(XNamespace.Xmlns + auxPrefix, ns.NamespaceName),
-				new XAttribute(xsi + "type", string.Format("{0}:{1}", auxPrefix, busAuxXML.FirstChild.SchemaInfo.SchemaType.QualifiedName.Name)),
-				XElement.Parse(busAuxXML.InnerXml).Elements()
-			));
+			return new XElement(
+				tns + XMLNames.Component_Auxiliaries,
+				new XElement(
+					tns + XMLNames.ComponentDataWrapper,
+					new XAttribute(XNamespace.Xmlns + auxPrefix, ns.NamespaceName),
+					new XAttribute(
+						xsi + "type", string.Format("{0}:{1}", auxPrefix, busAuxXML.FirstChild.SchemaInfo.SchemaType.QualifiedName.Name)),
+					XElement.Parse(busAuxXML.InnerXml).Elements()
+				));
 		}
 
 		private XElement GetAxlegearDescription(AxleGearData axleGearData)
 		{
-			return WrapComponent(XMLNames.Component_Axlegear, "AxlegearDataPIFType",
+			return WrapComponent(
+				XMLNames.Component_Axlegear, "AxlegearDataPIFType",
 				GetCommonDescription(axleGearData),
 				new XElement(tns + XMLNames.Component_AppVersion, axleGearData.InputData.AppVersion),
 				new XElement(tns + XMLNames.Axlegear_LineType, axleGearData.LineType.ToXMLFormat()),
@@ -231,14 +243,21 @@ namespace TUGraz.VectoCore.OutputData.XML
 				"Transmission", "TransmissionDataPIFType",
 				GetCommonDescription(gearboxData),
 				new XElement(tns + XMLNames.Gearbox_TransmissionType, gearboxData.Type.ToXMLFormat()),
-				new XElement(tns + XMLNames.Gearbox_Gears,
+				new XElement(
+					tns + XMLNames.Gearbox_Gears,
 					new XAttribute(xsi + "type", "TransmissionGearsPIFType"),
-					gearboxData.Gears.Select(x => 
-					new XElement(tns + XMLNames.Gearbox_Gears_Gear,
-						new XAttribute(XMLNames.Gearbox_Gear_GearNumber_Attr, x.Key),
-						new XElement(tns + XMLNames.Gearbox_Gear_Ratio, x.Value.Ratio.ToXMLFormat(3)),
-						x.Value.MaxTorque != null ? new XElement(tns + XMLNames.Gearbox_Gears_MaxTorque, x.Value.MaxTorque.ToXMLFormat(0)) : null,
-						x.Value.MaxSpeed != null ? new XElement(tns + XMLNames.Gearbox_Gear_MaxSpeed, x.Value.MaxSpeed.ToXMLFormat(0)) : null)))
+					gearboxData.Gears.Select(
+						x =>
+							new XElement(
+								tns + XMLNames.Gearbox_Gears_Gear,
+								new XAttribute(XMLNames.Gearbox_Gear_GearNumber_Attr, x.Key),
+								new XElement(tns + XMLNames.Gearbox_Gear_Ratio, x.Value.Ratio.ToXMLFormat(3)),
+								x.Value.MaxTorque != null
+									? new XElement(tns + XMLNames.Gearbox_Gears_MaxTorque, x.Value.MaxTorque.ToXMLFormat(0))
+									: null,
+								x.Value.MaxSpeed != null
+									? new XElement(tns + XMLNames.Gearbox_Gear_MaxSpeed, x.Value.MaxSpeed.ToXMLFormat(0))
+									: null)))
 			);
 			return retVal;
 
@@ -341,5 +360,82 @@ namespace TUGraz.VectoCore.OutputData.XML
 				new XElement(tns + XMLNames.Component_Date, XmlConvert.ToString(data.Date, XmlDateTimeSerializationMode.Utc)),
 			};
 		}
+
+		public void WriteResult(XMLDeclarationReport.ResultEntry resultEntry)
+		{
+			_allSuccess &= resultEntry.Status == VectoRun.Status.Success;
+
+			//if (resultEntry.Status == VectoRun.Status.Success) {
+			//	_weightedPayload += resultEntry.Payload * resultEntry.WeightingFactor;
+			//	_weightedCo2 += resultEntry.CO2Total / resultEntry.Distance * resultEntry.WeightingFactor;
+			//}
+			Results.Add(
+				new XElement(
+					tns + XMLNames.Report_Result_Result,
+					new XAttribute(
+						XMLNames.Report_Result_Status_Attr,
+						resultEntry.Status == VectoRun.Status.Success ? "success" : "error"),
+					new XElement(tns + XMLNames.Report_Vehicle_VehicleGroup, resultEntry.VehicleClass.GetClassNumber()),
+					new XElement(tns + XMLNames.Report_Result_Mission, resultEntry.Mission.ToXMLFormat()),
+					new XElement(
+						tns + XMLNames.Report_ResultEntry_SimulationParameters,
+						new XElement(
+							tns + XMLNames.Report_ResultEntry_TotalVehicleMass,
+							XMLHelper.ValueAsUnit(resultEntry.Payload, XMLNames.Unit_kg, 0)),
+						new XElement(
+							tns + XMLNames.Report_Result_Payload, XMLHelper.ValueAsUnit(resultEntry.Payload, XMLNames.Unit_kg, 0)),
+						new XElement(
+							tns + XMLNames.Report_ResultEntry_PassengerCount,
+							resultEntry.PassengerCount),
+						new XElement(
+							tns + XMLNames.Report_Result_FuelMode,
+							resultEntry.FuelData.Count > 1
+								? XMLNames.Report_Result_FuelMode_Val_Dual
+								: XMLNames.Report_Result_FuelMode_Val_Single)
+					),
+					GetResults(resultEntry)));
+		}
+
+		private object[] GetResults(XMLDeclarationReport.ResultEntry resultEntry)
+		{
+			switch (resultEntry.Status) {
+				case VectoRun.Status.Pending:
+				case VectoRun.Status.Running: return null; // should not happen!
+				case VectoRun.Status.Success: return GetSuccessResultEntry(resultEntry);
+				case VectoRun.Status.Canceled:
+				case VectoRun.Status.Aborted:
+					return new object[] {
+						new XElement(tns + "Error", resultEntry.Error)
+					};
+				default: throw new ArgumentOutOfRangeException();
+			}
+		}
+
+		private object[] GetSuccessResultEntry(XMLDeclarationReport.ResultEntry result)
+		{
+			var retVal = new List<XElement>();
+
+			foreach (var fuel in result.FuelData) {
+				var fcResult = new XElement(
+					tns + XMLNames.Report_Results_Fuel,
+					new XAttribute(XMLNames.Report_Results_Fuel_Type_Attr, fuel.FuelType.ToXMLFormat()));
+				fcResult.Add(
+					new XElement(
+						tns + XMLNames.Report_Result_EnergyConsumption,
+						new XAttribute(XMLNames.Report_Results_Unit_Attr, "MJ/km"),
+						(result.FuelConsumptionFinal[fuel.FuelType] * fuel.LowerHeatingValueVecto /
+						result.Distance.ConvertToKiloMeter() / 1e6)
+						.Value().ToMinSignificantDigits(3, 1)));
+				retVal.Add(fcResult);
+			}
+
+			retVal.Add(
+				new XElement(
+					tns + XMLNames.Report_Results_CO2, new XAttribute(XMLNames.Report_Results_Unit_Attr, "g/km"),
+					(result.CO2Total.ConvertToGramm() / result.Distance.ConvertToKiloMeter()).ToMinSignificantDigits(3, 1)));
+
+			return retVal.Cast<object>().ToArray();
+		}
 	}
+
 }
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLVTPReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLVTPReport.cs
index 0614e777ac2c6a5e8cfc8280e480ccf292010af2..ae314d2d8fcc8070117c823d1637f8fed2a1816c 100644
--- a/VectoCore/VectoCore/OutputData/XML/XMLVTPReport.cs
+++ b/VectoCore/VectoCore/OutputData/XML/XMLVTPReport.cs
@@ -51,6 +51,7 @@ using TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox;
 using TUGraz.VectoCore.Utils;
 using TUGraz.VectoHashing;
 using NLog;
+using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCore.Models.SimulationComponent.Impl;
 using LogManager = NLog.LogManager;
 
@@ -67,7 +68,7 @@ namespace TUGraz.VectoCore.OutputData.XML
 		protected XElement DataIntegrityPart;
 		protected XElement TestConditionsPart;
 
-		protected XElement Results;
+		protected XElement ResultsPart;
 
 		protected XNamespace tns;
 
@@ -122,7 +123,7 @@ namespace TUGraz.VectoCore.OutputData.XML
 			GeneralPart = new XElement(tns + "General");
 			DataIntegrityPart = new XElement(tns + "DataIntegrityCheck");
 			TestConditionsPart = new XElement(tns + "TestConditions");
-			Results = new XElement(tns + "Results");
+			ResultsPart = new XElement(tns + "Results");
 
 			AddLogging();
 		}
@@ -155,7 +156,7 @@ namespace TUGraz.VectoCore.OutputData.XML
 
 		#region Overrides of DeclarationReport<ResultEntry>
 
-		protected override void DoAddResult(
+		protected override void DoStoreResult(
 			ResultEntry entry, VectoRunData runData, IModalDataContainer modData)
 		{
 			entry.SetResultData(runData, modData, 0.0);
@@ -178,13 +179,21 @@ namespace TUGraz.VectoCore.OutputData.XML
 
 		private void GenerateResults()
 		{
-			var vtpResult = Missions.First().Value.FirstOrDefault(x => x.Key == MissionType.VerificationTest).Value.ResultEntry
-									.FirstOrDefault().Value;
+			//var vtpResult = Missions.First().Value.FirstOrDefault(x => x.Key == MissionType.VerificationTest).Value.ResultEntry
+			//						.FirstOrDefault().Value;
+			var vtpResult = Results.OrderBy(x => x.FuelMode).FirstOrDefault(x => x.Mission == MissionType.VerificationTest);
 
 			const MissionType selectedMission = DeclarationData.VTPMode.SelectedMission;
 			const LoadingType selectedLoading = DeclarationData.VTPMode.SelectedLoading;
-			var result = Missions.First().Value.FirstOrDefault(x => x.Key == selectedMission).Value.ResultEntry
-								.FirstOrDefault(x => x.Key == selectedLoading).Value;
+			var result = Results.OrderBy(x => x.FuelMode).FirstOrDefault(x => x.Mission == selectedMission && x.LoadingType == selectedLoading);
+
+			if (vtpResult == null) {
+				throw new VectoException("no vtp result found for generating vtp report");
+			}
+			if (result == null) {
+				throw new VectoException("no corresponding simulation result found for generating vtp report");
+			}
+
 			var vtpFcMeasured = vtpResult.VTPFcMeasured / vtpResult.VTPWorkPWheelPos;
 			var vtpFcMeasuredCorr = vtpResult.VTPFcMeasured / vtpResult.VTPWorkPWheelPos * vtpResult.VTPFcCorrectionFactor;
 			var vtpFcSimulated = vtpResult.VTPFcFinalSimulated / vtpResult.VTPWorPWheelSimPos;
@@ -193,7 +202,7 @@ namespace TUGraz.VectoCore.OutputData.XML
 			var declaredCO2 = result.FuelConsumptionFinal.Sum(x => x.Value) / result.Distance / result.Payload;
 			var verifiedCO2 = declaredCO2 * cVtp;
 
-			Results.Add(
+			ResultsPart.Add(
 				new XElement(tns + "Status", cVtp < 1.075 ? "Passed" : "Failed"),
 				new XElement(
 					tns + "AverageFanPower",
@@ -237,7 +246,7 @@ namespace TUGraz.VectoCore.OutputData.XML
 				),
 				new XElement(tns + "VTRatio", cVtp.ToXMLFormat(4)));
 			if (LogList.Any()) {
-				Results.Add(new XElement(tns + "Warnings", LogList.Select(x => new XElement(tns + "Warning", x))));
+				ResultsPart.Add(new XElement(tns + "Warnings", LogList.Select(x => new XElement(tns + "Warning", x))));
 			}
 		}
 
@@ -265,7 +274,7 @@ namespace TUGraz.VectoCore.OutputData.XML
 						new XElement(VehiclePart),
 						new XElement(DataIntegrityPart),
 						new XElement(TestConditionsPart),
-						new XElement(Results),
+						new XElement(ResultsPart),
 						GetApplicationInfo()
 					)
 				)
diff --git a/VectoCore/VectoCore/Resources/XSD/VectoOutputManufacturer.0.8.xsd b/VectoCore/VectoCore/Resources/XSD/VectoOutputManufacturer.0.8.xsd
index 056ff58cdabce849134fb40ebecf2d8573d40966..39c995c1f11802ad1d54f5d9f4b3a03a04e0afa0 100644
--- a/VectoCore/VectoCore/Resources/XSD/VectoOutputManufacturer.0.8.xsd
+++ b/VectoCore/VectoCore/Resources/XSD/VectoOutputManufacturer.0.8.xsd
@@ -434,6 +434,7 @@
 					</xs:simpleContent>
 				</xs:complexType>
 			</xs:element>
+			<xs:element name="PassengerCount" type="xs:double"/>
 			<xs:element name="FuelMode">
 				<xs:simpleType>
 					<xs:restriction base="xs:string">
@@ -998,6 +999,7 @@
 			<xs:enumeration value="MJ/km"/>
 			<xs:enumeration value="MJ/t-km"/>
 			<xs:enumeration value="MJ/m³-km"/>
+			<xs:enumeration value="MJ/p-km"/>
 		</xs:restriction>
 	</xs:simpleType>
 	<xs:simpleType name="MassUnitType">
diff --git a/VectoCore/VectoCore/Resources/XSD/VectoOutputPrimaryBus.xsd b/VectoCore/VectoCore/Resources/XSD/VectoOutputPrimaryBus.xsd
index 311ca5a816dc1112c5c3f7c3c25d1b24c714846a..34e6f5b79272d5c7c4001422de4abd6e31321e24 100644
--- a/VectoCore/VectoCore/Resources/XSD/VectoOutputPrimaryBus.xsd
+++ b/VectoCore/VectoCore/Resources/XSD/VectoOutputPrimaryBus.xsd
@@ -244,7 +244,7 @@
 	<xs:complexType name="FuelConsumptionType">
 		<xs:simpleContent>
 			<xs:extension base="xs:double">
-				<xs:attribute name="unit" type="FuelConsumptionUnitType" use="required"/>
+				<xs:attribute name="unit" type="EnergyConsumptionUnitType" use="required"/>
 			</xs:extension>
 		</xs:simpleContent>
 	</xs:complexType>
@@ -281,7 +281,7 @@
 					<xs:element name="Fuel" maxOccurs="unbounded">
 						<xs:complexType>
 							<xs:sequence>
-								<xs:element name="FuelConsumption" type="FuelConsumptionType" maxOccurs="unbounded">
+								<xs:element name="EnergyConsumption" type="FuelConsumptionType" maxOccurs="unbounded">
 									<xs:annotation>
 										<xs:documentation>I.2.3.1 - I.2.3.12 / #69</xs:documentation>
 									</xs:annotation>
@@ -338,7 +338,7 @@
 			</xs:element>
 			<xs:element name="PassengerCount">
 				<xs:simpleType>
-					<xs:restriction base="xs:int">
+					<xs:restriction base="xs:double">
 						<xs:minExclusive value="0"/>
 					</xs:restriction>
 				</xs:simpleType>
@@ -601,19 +601,9 @@
 			<xs:enumeration value="km"/>
 		</xs:restriction>
 	</xs:simpleType>
-	<xs:simpleType name="FuelConsumptionUnitType">
+	<xs:simpleType name="EnergyConsumptionUnitType">
 		<xs:restriction base="xs:string">
-			<xs:enumeration value="g/km"/>
-			<xs:enumeration value="g/t-km"/>
-			<xs:enumeration value="g/p-km"/>
-			<xs:enumeration value="g/m³-km"/>
-			<xs:enumeration value="l/100km"/>
-			<xs:enumeration value="l/t-km"/>
-			<xs:enumeration value="l/p-km"/>
-			<xs:enumeration value="l/m³-km"/>
 			<xs:enumeration value="MJ/km"/>
-			<xs:enumeration value="MJ/t-km"/>
-			<xs:enumeration value="MJ/m³-km"/>
 		</xs:restriction>
 	</xs:simpleType>
 	<xs:simpleType name="MassUnitType">
@@ -631,6 +621,11 @@
 			<xs:enumeration value="Urban Delivery"/>
 			<xs:enumeration value="Municipal Utility"/>
 			<xs:enumeration value="Construction"/>
+			<xs:enumeration value="Heavy Urban"/>
+			<xs:enumeration value="Urban"/>
+			<xs:enumeration value="Suburban"/>
+			<xs:enumeration value="Interurban"/>
+			<xs:enumeration value="Coach"/>
 		</xs:restriction>
 	</xs:simpleType>
 	<xs:simpleType name="PercentType">
diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.6_Buses/example_heavyBus_PIF.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.6_Buses/example_heavyBus_PIF.xml
index ae29a1f7fba696c5237cd44e323536b32f3072bb..b86d492991c63a18c9bc34d892212cb7ef7d01d1 100644
--- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.6_Buses/example_heavyBus_PIF.xml
+++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.6_Buses/example_heavyBus_PIF.xml
@@ -267,19 +267,9 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:PrimaryVehicleInformation E:\QUAM\Wo
 					<FuelMode>single fuel mode</FuelMode>
 				</SimulationParameters>
 				<Fuel type="Diesel CI">
-					<FuelConsumption unit="g/km">210.5</FuelConsumption>
-					<FuelConsumption unit="g/t-km">228.8</FuelConsumption>
-					<FuelConsumption unit="g/m³-km">4.41</FuelConsumption>
-					<FuelConsumption unit="MJ/km">8.99</FuelConsumption>
-					<FuelConsumption unit="MJ/t-km">9.77</FuelConsumption>
-					<FuelConsumption unit="MJ/m³-km">0.188</FuelConsumption>
-					<FuelConsumption unit="l/100km">25.2</FuelConsumption>
-					<FuelConsumption unit="l/t-km">0.274</FuelConsumption>
-					<FuelConsumption unit="l/m³-km">0.00528</FuelConsumption>
+					<EnergyConsumption unit="MJ/km">8.99</EnergyConsumption>
 				</Fuel>
 				<CO2 unit="g/km">658.9</CO2>
-				<CO2 unit="g/t-km">716.2</CO2>
-				<CO2 unit="g/m³-km">13.8</CO2>
 			</Result>
 			<Result status="success">
 				<VehicleGroup>P31SD</VehicleGroup>
@@ -291,19 +281,9 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:PrimaryVehicleInformation E:\QUAM\Wo
 					<FuelMode>single fuel mode</FuelMode>
 				</SimulationParameters>
 				<Fuel type="Diesel CI">
-					<FuelConsumption unit="g/km">231.4</FuelConsumption>
-					<FuelConsumption unit="g/t-km">50.3</FuelConsumption>
-					<FuelConsumption unit="g/m³-km">4.85</FuelConsumption>
-					<FuelConsumption unit="MJ/km">9.88</FuelConsumption>
-					<FuelConsumption unit="MJ/t-km">2.15</FuelConsumption>
-					<FuelConsumption unit="MJ/m³-km">0.207</FuelConsumption>
-					<FuelConsumption unit="l/100km">27.7</FuelConsumption>
-					<FuelConsumption unit="l/t-km">0.0602</FuelConsumption>
-					<FuelConsumption unit="l/m³-km">0.00580</FuelConsumption>
+					<EnergyConsumption unit="MJ/km">9.88</EnergyConsumption>
 				</Fuel>
 				<CO2 unit="g/km">724.4</CO2>
-				<CO2 unit="g/t-km">157.5</CO2>
-				<CO2 unit="g/m³-km">15.2</CO2>
 			</Result>
 			<Result status="success">
 				<VehicleGroup>P31DD</VehicleGroup>
@@ -315,19 +295,9 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:PrimaryVehicleInformation E:\QUAM\Wo
 					<FuelMode>single fuel mode</FuelMode>
 				</SimulationParameters>
 				<Fuel type="Diesel CI">
-					<FuelConsumption unit="g/km">244.1</FuelConsumption>
-					<FuelConsumption unit="g/t-km">265.3</FuelConsumption>
-					<FuelConsumption unit="g/m³-km">5.12</FuelConsumption>
-					<FuelConsumption unit="MJ/km">10.4</FuelConsumption>
-					<FuelConsumption unit="MJ/t-km">11.3</FuelConsumption>
-					<FuelConsumption unit="MJ/m³-km">0.218</FuelConsumption>
-					<FuelConsumption unit="l/100km">29.2</FuelConsumption>
-					<FuelConsumption unit="l/t-km">0.317</FuelConsumption>
-					<FuelConsumption unit="l/m³-km">0.00612</FuelConsumption>
+					<EnergyConsumption unit="MJ/km">10.4</EnergyConsumption>
 				</Fuel>
 				<CO2 unit="g/km">763.9</CO2>
-				<CO2 unit="g/t-km">830.3</CO2>
-				<CO2 unit="g/m³-km">16.0</CO2>
 			</Result>
 			<Result status="success">
 				<VehicleGroup>P31DD</VehicleGroup>
@@ -339,19 +309,9 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:PrimaryVehicleInformation E:\QUAM\Wo
 					<FuelMode>single fuel mode</FuelMode>
 				</SimulationParameters>
 				<Fuel type="Diesel CI">
-					<FuelConsumption unit="g/km">296.4</FuelConsumption>
-					<FuelConsumption unit="g/t-km">64.4</FuelConsumption>
-					<FuelConsumption unit="g/m³-km">6.21</FuelConsumption>
-					<FuelConsumption unit="MJ/km">12.7</FuelConsumption>
-					<FuelConsumption unit="MJ/t-km">2.75</FuelConsumption>
-					<FuelConsumption unit="MJ/m³-km">0.265</FuelConsumption>
-					<FuelConsumption unit="l/100km">35.5</FuelConsumption>
-					<FuelConsumption unit="l/t-km">0.0771</FuelConsumption>
-					<FuelConsumption unit="l/m³-km">0.00743</FuelConsumption>
+					<EnergyConsumption unit="MJ/km">12.7</EnergyConsumption>
 				</Fuel>
 				<CO2 unit="g/km">927.7</CO2>
-				<CO2 unit="g/t-km">201.7</CO2>
-				<CO2 unit="g/m³-km">19.4</CO2>
 			</Result>
 		</Results>
 		<ApplicationInformation>