diff --git a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs
index ab9e25f8842046f383141bb874d65360a087e812..e80389dbc765aae20a82356cad65bae4e5731e04 100644
--- a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs
+++ b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs
@@ -66,22 +66,39 @@ namespace TUGraz.VectoCore.OutputData
 	public class SummaryDataContainer : LoggingObject, ISumData, IDisposable
 	{
 		public static readonly string[] FcColumns = {
-			SumDataFields.FCMAP_H, SumDataFields.FCMAP_KM,
-			SumDataFields.FCNCVC_H, SumDataFields.FCNCVC_KM,
-			SumDataFields.FCWHTCC_H, SumDataFields.FCWHTCC_KM,
-			SumDataFields.FCESS_H, SumDataFields.FCESS_KM,
-			SumDataFields.FCESS_H_CORR, SumDataFields.FCESS_KM_CORR,
-			SumDataFields.FC_BusAux_PS_CORR_H, SumDataFields.FC_BusAux_PS_CORR_KM,
-			SumDataFields.FC_BusAux_ES_CORR_H, SumDataFields.FC_BusAux_ES_CORR_KM,
-			SumDataFields.FCWHR_H_CORR, SumDataFields.FCWHR_KM_CORR,
-			SumDataFields.FC_HEV_SOC_H, SumDataFields.FC_HEV_SOC_KM,
-			SumDataFields.FC_HEV_SOC_CORR_H, SumDataFields.FC_HEV_SOC_CORR_KM,
-			SumDataFields.FC_AUXHTR_H, SumDataFields.FC_AUXHTR_KM,
-			SumDataFields.FC_AUXHTR_H_CORR, SumDataFields.FC_AUXHTR_KM_CORR,
-			SumDataFields.FCFINAL_H, SumDataFields.FCFINAL_KM, SumDataFields.FCFINAL_LITERPER100KM,
+			SumDataFields.FCMAP_H, 
+			SumDataFields.FCMAP_KM,
+			SumDataFields.FCNCVC_H, 
+			SumDataFields.FCNCVC_KM,
+			SumDataFields.FCWHTCC_H, 
+			SumDataFields.FCWHTCC_KM,
+			SumDataFields.FCESS_H, 
+			SumDataFields.FCESS_KM,
+			SumDataFields.FCESS_H_CORR, 
+			SumDataFields.FCESS_KM_CORR,
+			SumDataFields.FC_BusAux_PS_CORR_H, 
+			SumDataFields.FC_BusAux_PS_CORR_KM,
+			SumDataFields.FC_BusAux_ES_CORR_H, 
+			SumDataFields.FC_BusAux_ES_CORR_KM,
+			SumDataFields.FCWHR_H_CORR, 
+			SumDataFields.FCWHR_KM_CORR,
+			SumDataFields.FC_HEV_SOC_H, 
+			SumDataFields.FC_HEV_SOC_KM,
+			SumDataFields.FC_HEV_SOC_CORR_H, 
+			SumDataFields.FC_HEV_SOC_CORR_KM,
+			SumDataFields.FC_AUXHTR_H, 
+			SumDataFields.FC_AUXHTR_KM,
+			SumDataFields.FC_AUXHTR_H_CORR, 
+			SumDataFields.FC_AUXHTR_KM_CORR,
+			SumDataFields.FCFINAL_H, 
+			SumDataFields.FCFINAL_KM, 
+			SumDataFields.FCFINAL_LITERPER100KM,
 			SumDataFields.FCFINAL_LITERPER100TKM,
-			SumDataFields.FCFINAL_LiterPer100M3KM, SumDataFields.FCFINAL_LiterPer100PassengerKM,
-			SumDataFields.SPECIFIC_FC, SumDataFields.K_VEHLINE, SumDataFields.K_ENGLINE
+			SumDataFields.FCFINAL_LiterPer100M3KM,
+			SumDataFields.FCFINAL_LiterPer100PassengerKM,
+			SumDataFields.SPECIFIC_FC,
+			SumDataFields.K_VEHLINE,
+			SumDataFields.K_ENGLINE
 		};
 
 
@@ -368,9 +385,9 @@ namespace TUGraz.VectoCore.OutputData
 		internal readonly DataTable Table;
 		private readonly ISummaryWriter _sumWriter;
 		
-		protected HashSet<string> FcCols = new HashSet<string>();
-		protected HashSet<string> GearColumns = new HashSet<string>();
-		protected HashSet<string> AuxColumns = new HashSet<string>();
+		protected IList<string> FcCols = new List<string>();
+		protected IList<string> GearColumns = new List<string>();
+		protected IList<string> AuxColumns = new List<string>();
 
 
 		/// <summary>
@@ -383,7 +400,7 @@ namespace TUGraz.VectoCore.OutputData
 			Table = new DataTable();
 			//InitTableColumns();
 			CreateColumns(CommonColumns);
-			CreateColumns(CO2Columns);
+			
 			CreateColumns(ElectricEnergyConsumption);
 		}
 
@@ -393,6 +410,7 @@ namespace TUGraz.VectoCore.OutputData
 				case ICombustionEngine _:
 					CreateColumns(CombustionEngineColumns);
 					UpdateTableColumns(runData.EngineData);
+					CreateColumns(CO2Columns);
 					break;
 				case BusAuxiliariesAdapter _:
 					CreateColumns(BusAuxiliariesSignals);
@@ -500,10 +518,12 @@ namespace TUGraz.VectoCore.OutputData
 
 		private void CreateGearTimeShareColumns(GearList gears)
 		{
+			
 			lock (Table) {
-				var gearColNames = gears
-					.Select(x => string.Format(SumDataFields.TIME_SHARE_PER_GEAR_FORMAT, x.Gear))
-					.Concat(new[] { string.Format(SumDataFields.TIME_SHARE_PER_GEAR_FORMAT, 0) }).Distinct()
+				var gearNumbers = new uint[] { 0 }.Concat(gears.Select(x => x.Gear)).Distinct().OrderBy(x => x);
+				
+				var gearColNames = gearNumbers
+					.Select(x => string.Format(SumDataFields.TIME_SHARE_PER_GEAR_FORMAT, x))
 					.Where(x => !Table.Columns.Contains(x)).Select(x => new DataColumn(x, typeof(ConvertedSI)))
 					.ToArray();
 				Table.Columns.AddRange(gearColNames);
@@ -611,7 +631,7 @@ namespace TUGraz.VectoCore.OutputData
 				SumDataFields.ALTITUDE_DELTA,
 			});
 
-			cols.AddRange(FcCols);
+			cols.AddRange(FcCols.Reverse());
 
 			cols.AddRange(new[] {
 				SumDataFields.CO2_KM,
@@ -708,7 +728,7 @@ namespace TUGraz.VectoCore.OutputData
 				SumDataFields.AIRDRAG_CERTIFICATION_NUMBER,
 				SumDataFields.AIRDRAG_CERTIFICATION_METHOD, 
 			});
-			cols.AddRange(GearColumns.OrderBy(x => x));
+			cols.AddRange(GearColumns);
 
 			cols.AddRange(new[] {
 				SumDataFields.REESS_StartSoC,
@@ -885,10 +905,12 @@ namespace TUGraz.VectoCore.OutputData
 							Table.Columns.Add(col);
 							col.SetOrdinal(Table.Columns.IndexOf(SumDataFields.ALTITUDE_DELTA) + 1);
 							FcCols.Add(colName);
+							
 						}
 					}
 				}
 			}
+			
 		}
 
 		/// <summary>
diff --git a/VectoCore/VectoCoreTest/Integration/Declaration/HeavyLorry/LorrySimulation.cs b/VectoCore/VectoCoreTest/Integration/Declaration/HeavyLorry/LorrySimulation.cs
index abbe8aa26e500fbf5ce19694df553e25a79e650e..4e65ebb52a0c3dde1151e0a4283f71978962d800 100644
--- a/VectoCore/VectoCoreTest/Integration/Declaration/HeavyLorry/LorrySimulation.cs
+++ b/VectoCore/VectoCoreTest/Integration/Declaration/HeavyLorry/LorrySimulation.cs
@@ -6,6 +6,7 @@ using System;
 using System.Collections.Generic;
 using System.Collections.Immutable;
 using System.Data;
+using System.Diagnostics;
 using System.IO;
 using System.Linq;
 using System.Reflection;
@@ -67,6 +68,7 @@ public class LorrySimulation
 
 	private const string Group5_PEV_E3 = @"HeavyLorry\PEV\Group5_ PEV_E3_ES_Standard.xml";
 	private const string Group2_HEV_IEPC_S_StdVal = @"HeavyLorry\S-HEV\Group2_HEV_IEPC_S_standard_values.xml";
+	private const string ConventionalHeavyLorry = @"HeavyLorry\Conventional\Group5_Conv_ES_Standard.xml";
 
 
 	private StandardKernel _kernel;
@@ -81,7 +83,7 @@ public class LorrySimulation
 	}
 
 	//Conventional
-	[TestCase(@"HeavyLorry\Conventional\Group5_Conv_ES_Standard.xml", TestName = "Stefan_Conv")]
+	[TestCase(ConventionalHeavyLorry, TestName = "Stefan_Conv")]
 	//S-HEV
 	[TestCase(Group5_HEV_S2_OVC)]
 	[TestCase(@"HeavyLorry\S-HEV\Group2_HEV_S3_stefan.xml", TestName = "Stefan_S2")]
@@ -149,6 +151,8 @@ public class LorrySimulation
 		var mrfSchema = XMLValidator.GetXMLSchema(XmlDocumentType.ManufacturerReport);
 		XDocument.Load(mrfPath).Validate(mrfSchema, (sender, args) => Assert.Fail(args.Message));
 		XDocument.Load(cifPath).Validate(cifSchema, (sender, args) => Assert.Fail(args.Message));
+
+		VSUM_order_test(fileWriter.SumFileName, jobContainer.Runs.First().Run.GetContainer().RunData);
 	}
 
     private ISimulatorFactory GetSimulatorFactory(string filePath, out IDeclarationInputDataProvider dataProvider,
@@ -177,22 +181,7 @@ public class LorrySimulation
 
 		//	.ToHashSet();
 
-		var filePath = Path.Combine(BASE_DIR, jobFile);
-		SummaryDataContainer sumDataContainer;
-		var jobContainer = GetJobContainer(jobFile, null, out var fileWriter, out var runs, out sumDataContainer, false);
-	
-		var run = runs.First();
-		jobContainer.AddRun(run);
-
-        run.GetContainer().ModalData[ModalResultField.time] = 1.SI<Second>(); //fake duration for run
-        run.GetContainer().ModalData[ModalResultField.Gear] = 2;
-        run.GetContainer().ModalData.CommitSimulationStep();
-		run.GetContainer().FinishSingleSimulationRun(null);
-		var modFileName = fileWriter.GetModDataFileName(run.RunName, run.CycleName, run.RunSuffix); 
-
-		var sumFileName = fileWriter.SumFileName;
-		Assert.IsTrue(File.Exists(modFileName));
-		var mod = VectoCSVFile.Read(modFileName, false, true);
+		GetEmptySumAndModData(jobFile, out var sumDataContainer, out var run, out var modData, out var sumData);
 
 		var columnsWithoutUnitHashSet = new HashSet<string>();
         foreach (var col in columnsWithoutUnit) {
@@ -204,7 +193,7 @@ public class LorrySimulation
 
 
         List<string> columnHeaders = new List<string>();
-		foreach (DataColumn modColumn in mod.Columns) {
+		foreach (DataColumn modColumn in modData.Columns) {
 			columnHeaders.Add(modColumn.Caption);
 		}
 
@@ -233,38 +222,161 @@ public class LorrySimulation
 		}
 	}
 
-	//[Test]
-	//public void HEVS4()
-	//{
-	//	var jobContainer = GetJobContainer(HeavylorryGroup2HevS4XML, 6, out var fileWriter, out var runs, out var sumDataContainer);
-	//	//var simFactory = GetSimulatorFactory(Path.Combine(BASE_DIR, HeavylorryGroup2HevS4XML), out var dataProvider,
-	//	//	out var fileWriter, out var mockSumWriter);
+	private void GetEmptySumAndModData(string jobFile, out SummaryDataContainer sumDataContainer, out IVectoRun run,
+		out TableData modData, out TableData sumData)
+	{
+		var filePath = Path.Combine(BASE_DIR, jobFile);
+		sumDataContainer = null;
+		var jobContainer = GetJobContainer(jobFile, null, out var fileWriter, out var runs, out sumDataContainer, false);
+		//sumDataContainer.Finish();
+		run = runs.First();
+		jobContainer.AddRun(run);
+
+		run.GetContainer().ModalData[ModalResultField.time] = 1.SI<Second>(); //fake duration for run
+		run.GetContainer().ModalData[ModalResultField.Gear] = 2;
+		run.GetContainer().ModalData.CommitSimulationStep();
+		run.GetContainer().FinishSingleSimulationRun(null);
+		var modFileName = fileWriter.GetModDataFileName(run.RunName, run.CycleName, run.RunSuffix);
+
+		var sumFileName = fileWriter.SumFileName;
+		Assert.IsTrue(File.Exists(modFileName));
+		Assert.IsTrue(File.Exists(sumFileName));
+		modData = VectoCSVFile.Read(modFileName, false, true);
+		sumData = VectoCSVFile.Read(sumFileName, false, true);
+	}
+
+
+
+	public void VSUM_order_test(string fileName, VectoRunData runData)
+	{
+		#region local helper
+		void AssertColumnNotPresent(TableData tableData, List<string> notPresent)
+		{
+			foreach (var name in notPresent) {
+				Assert.IsFalse(tableData.Columns.Contains(name), name);
+			}
+		}
+
+		void AssertOrder(TableData tableData, List<string> ordered)
+		{
+			
+		}
+
+		void SearchForPattern(TableData tableData, List<string> pattern)
+		{
+			var comparePattern = false;
+			using (var enumerator = pattern.GetEnumerator()) {
+				enumerator.MoveNext();
+				foreach (DataColumn column in tableData.Columns)
+				{
+					if (!comparePattern && column.ColumnName == enumerator.Current)
+					{
+						comparePattern = true;
+					}
+
+					if (comparePattern) {
+						TestContext.Write(column.ColumnName + "|" + enumerator.Current);
+						if (column.ColumnName != enumerator.Current) {
+							TestContext.WriteLine("X");
+							Assert.Fail($"expected {enumerator.Current} got {column.ColumnName}");
+						}
+						TestContext.WriteLine("OK");
+						if (!enumerator.MoveNext()) {
+							return;
+						}
+					}
+				}
+				Assert.Fail($"Reached end of table searching for {enumerator.Current}");
+			}
+			
+		}
+#endregion
+
+		var sumData = VectoCSVFile.Read(fileName, false, true);
+		var fcFields = new List<string>() {
+			//FUEL
+			SumDataFields.FCMAP_H,
+			SumDataFields.FCMAP_KM,
+			SumDataFields.FCNCVC_H,
+			SumDataFields.FCNCVC_KM,
+			SumDataFields.FCWHTCC_H,
+			SumDataFields.FCWHTCC_KM,
+			SumDataFields.FCESS_H,
+			SumDataFields.FCESS_KM,
+			SumDataFields.FCESS_H_CORR,
+			SumDataFields.FCESS_KM_CORR,
+			SumDataFields.FC_BusAux_PS_CORR_H,
+			SumDataFields.FC_BusAux_PS_CORR_KM,
+			SumDataFields.FC_BusAux_ES_CORR_H,
+			SumDataFields.FC_BusAux_ES_CORR_KM,
+			SumDataFields.FCWHR_H_CORR,
+			SumDataFields.FCWHR_KM_CORR,
+			SumDataFields.FC_HEV_SOC_H,
+			SumDataFields.FC_HEV_SOC_KM,
+			SumDataFields.FC_HEV_SOC_CORR_H,
+			SumDataFields.FC_HEV_SOC_CORR_KM,
+			SumDataFields.FC_AUXHTR_H,
+			SumDataFields.FC_AUXHTR_KM,
+			SumDataFields.FC_AUXHTR_H_CORR,
+			SumDataFields.FC_AUXHTR_KM_CORR,
+			SumDataFields.FCFINAL_H,
+			SumDataFields.FCFINAL_KM,
+			SumDataFields.FCFINAL_LITERPER100KM,
+			SumDataFields.FCFINAL_LITERPER100TKM,
+			SumDataFields.FCFINAL_LiterPer100M3KM,
+			SumDataFields.FCFINAL_LiterPer100PassengerKM,
+			SumDataFields.SPECIFIC_FC,
+			SumDataFields.K_VEHLINE,
+			SumDataFields.K_ENGLINE,
+
+			
+		};
+
+		var CO2fields = new List<string> {
+			SumDataFields.CO2_KM,
+			SumDataFields.CO2_TKM,
+			SumDataFields.CO2_M3KM,
+		};
+
+		var EC_el = new List<string> {
 
-	//	foreach (var vectoRun in runs) {
-	//		var rd = vectoRun.GetContainer().RunData;
-	//	}
-	//	var container = runs.First().GetContainer();
-	//	var runData = container.RunData;
+		};
+		if (runData.JobType == VectoSimulationJobType.ConventionalVehicle) {
+			
+
+			var gbxTimeShareFields = new List<string> {
+				
+			};
+			for (var i = 0; i <= runData.GearboxData.Gears.Count; i++) {
+				gbxTimeShareFields.Add(string.Format(SumDataFields.TIME_SHARE_PER_GEAR_FORMAT, i));
+			}
 
-	//	runs = runs.Where(run => {
-	//		var rd = run.GetContainer().RunData;
-	//		return rd.Mission.MissionType == MissionType.UrbanDelivery && rd.Loading == LoadingType.ReferenceLoad;
-	//	}).ToList();
+			if (runData.EngineData.Fuels.Count > 1) {
+				foreach (var fuel in runData.EngineData.Fuels.Select(f => f.FuelData.FuelType.GetLabel()))
+				{
+					SearchForPattern(sumData, new List<string>(fcFields.Select(fc => string.Format(fc, fuel)).Concat(CO2fields)));
+				}
+			} else {
+				SearchForPattern(sumData, new List<string>(fcFields.Select(fc => string.Format(fc, "")).Concat(CO2fields)));
+			}
+			SearchForPattern(sumData, gbxTimeShareFields);
+		}
 
-	//	jobContainer.AddRun(runs.Single());
+		if (runData.JobType is VectoSimulationJobType.BatteryElectricVehicle or VectoSimulationJobType.IEPC_E) {
 
-	//	Assert.AreEqual(1, jobContainer.Runs.Count);
+			//PEV CHECKS
+			AssertColumnNotPresent(sumData, CO2fields);
+			AssertColumnNotPresent(sumData, fcFields);
 
-	//	var modData = ((ModalDataContainer)((VehicleContainer)runs.Single().GetContainer()).ModData).Data;
-	//	jobContainer.Execute(false);
-	//	WaitAndAssertSuccess(jobContainer, fileWriter);
 
 
-	//	//Pneumatic system data test
-	//	var ps = runData.Aux.Where(x => x.ID == Constants.Auxiliaries.IDs.PneumaticSystem).Single();
-	//	Assume.That(ps.IsFullyElectric);
-	//	Assert.That(ps.ConnectToREESS);
-	//}
+		}
+
+
+
+
+		
+	}
 
 
 	[TestCase(@"HeavyLorry\S-HEV\Group2_HEV_S4_invalid_pto.xml")]
@@ -893,7 +1005,7 @@ public class LorrySimulation
 		//runsFactory.ActualModalData = true;
 		runsFactory.SerializeVectoRunData = true;
 		runsFactory.WriteModalResults = true;
-		var sumWriter = new MockSumWriter();
+		var sumWriter = new SummaryDataContainer(fileWriter);
 		
 		var jobContainer = new JobContainer(sumWriter);
 		runsFactory.SumData = sumWriter;