diff --git a/.gitignore b/.gitignore
index 0f6e6ab57cf9b8b246b9e2d1b043dc98c6921f85..27fd0863a2fd6eb2ae4a79d091bdf46586f7da96 100644
--- a/.gitignore
+++ b/.gitignore
@@ -219,3 +219,4 @@ Documentation/VehiclesReleaseComparisonDeclarationMode/tmp/
 /VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/tests.xml
 /VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/finalGroup41.VIF_Report_4.xml
 /VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/output
+/Vecto3GUI2020Test/TestData/output
diff --git a/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/Bus.vacc b/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/Bus.vacc
new file mode 100644
index 0000000000000000000000000000000000000000..8ae1ce269631975dc3cda4923cdbe8b7a5377490
--- /dev/null
+++ b/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/Bus.vacc	
@@ -0,0 +1,15 @@
+v [km/h] , acc [m/s²] , dec [m/s²]
+0        , 0.88       , -0.94
+10       , 1.00       , -0.94
+13       , 1.00       , -0.94
+20       , 1.00       , -0.88
+30       , 0.97       , -0.81
+40       , 0.80       , -0.73
+50       , 0.63       , -0.66
+58       , 0.50       , -0.52
+60       , 0.46       , -0.50
+70       , 0.39       , -0.50
+80       , 0.39       , -0.50
+90       , 0.39       , -0.50
+100      , 0.39       , -0.50
+120      , 0.39       , -0.50
\ No newline at end of file
diff --git a/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/CityBus_AT-P.vecto b/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/CityBus_AT-P.vecto
new file mode 100644
index 0000000000000000000000000000000000000000..68e4ddc91bee029a32f5c5706a560c955ec7dc68
--- /dev/null
+++ b/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/CityBus_AT-P.vecto	
@@ -0,0 +1,63 @@
+{
+  "Header": {
+    "CreatedBy": "",
+    "Date": "2021-01-18T16:23:23.1599991Z",
+    "AppVersion": "3",
+    "FileVersion": 8
+  },
+  "Body": {
+    "SavedInDeclMode": false,
+    "EngineOnlyMode": false,
+    "VehicleFile": "CityBus_AT-P.vveh",
+    "EngineFile": "GenericICE_220kW_7.7l.veng",
+    "GearboxFile": "GearboxAT-P.vgbx",
+    "TCU": "ShiftPArameters.vtcu",
+    "ShiftStrategy": "TUGraz.VectoCore.Models.SimulationComponent.Impl.ATShiftStrategyOptimized",
+    "HybridStrategyParams": "HybridStrategyParams.vhctl",
+    "AuxiliaryAssembly": "Classic",
+    "AuxiliaryVersion": "CLASSIC",
+    "AdvancedAuxiliaryFilePath": "",
+    "Aux": [],
+    "Padd": 5000.0,
+    "Padd_electric": 0.0,
+    "VACC": "Bus.vacc",
+    "EngineStopStartAtVehicleStopThreshold": 2.0,
+    "EngineStopStartMaxOffTimespan": 30.0,
+    "EngineStopStartUtilityFactor": 1.0,
+    "EcoRollMinSpeed": 0.0,
+    "EcoRollActivationDelay": 0.0,
+    "EcoRollUnderspeedThreshold": 0.0,
+    "EcoRollMaxAcceleration": 0.0,
+    "PCCEnableSpeed": 0.0,
+    "PCCMinSpeed": 0.0,
+    "PCCUnderspeed": 0.0,
+    "PCCOverSpeed": 5.0,
+    "PCCPreviewDistanceUC1": 0.0,
+    "PCCPreviewDistanceUC2": 0.0,
+    "LAC": {
+      "Enabled": true,
+      "PreviewDistanceFactor": 10.0,
+      "DF_offset": 2.5,
+      "DF_scaling": 1.5,
+      "DF_targetSpeedLookup": "",
+      "Df_velocityDropLookup": "",
+      "MinSpeed": 50.0
+    },
+    "OverSpeedEcoRoll": {
+      "Mode": "Off",
+      "MinSpeed": 50.0,
+      "OverSpeed": 2.5
+    },
+    "Cycles": [
+      "LongHaul",
+      "Coach",
+      "Construction",
+      "HeavyUrban",
+      "Interurban",
+      "RegionalDelivery",
+      "Suburban",
+      "Urban",
+      "UrbanDelivery"
+    ]
+  }
+}
\ No newline at end of file
diff --git a/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/CityBus_AT-P.vveh b/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/CityBus_AT-P.vveh
new file mode 100644
index 0000000000000000000000000000000000000000..434bc9f53ac4e7bab87504a75f9550bd42c2bbb3
--- /dev/null
+++ b/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/CityBus_AT-P.vveh	
@@ -0,0 +1,82 @@
+{
+  "Header": {
+    "CreatedBy": "",
+    "Date": "2021-02-01T12:49:19.2221328Z",
+    "AppVersion": "3",
+    "FileVersion": 10
+  },
+  "Body": {
+    "SavedInDeclMode": false,
+    "VehCat": "CityBus",
+    "LegislativeClass": "Unknown",
+    "CurbWeight": 12000.0,
+    "CurbWeightExtra": 0.0,
+    "MassMax": 18.0,
+    "Loading": 1000.0,
+    "rdyn": 421.0,
+    "CdCorrMode": "CdofVdecl",
+    "CdCorrFile": "",
+    "AxleConfig": {
+      "Type": "4x2",
+      "Axles": [
+        {
+          "Inertia": 6.5,
+          "Wheels": "265/70 R19.5",
+          "AxleWeightShare": 0.4,
+          "TwinTyres": false,
+          "RRCISO": 0.0065,
+          "FzISO": 20850.0,
+          "Type": "VehicleNonDriven"
+        },
+        {
+          "Inertia": 6.5,
+          "Wheels": "265/70 R19.5",
+          "AxleWeightShare": 0.6,
+          "TwinTyres": true,
+          "RRCISO": 0.0075,
+          "FzISO": 20850.0,
+          "Type": "VehicleDriven"
+        }
+      ]
+    },
+    "EngineStopStart": true,
+    "EcoRoll": "None",
+    "PredictiveCruiseControl": "None",
+    "ATEcoRollReleaseLockupClutch": false,
+    "CdA": 4.25,
+    "VehicleHeight": 3.3,
+    "IdlingSpeed": 600.0,
+    "Retarder": {
+      "Type": "None",
+      "Ratio": 0.0,
+      "File": ""
+    },
+    "Angledrive": {
+      "Type": "None",
+      "Ratio": 0.0,
+      "LossMap": ""
+    },
+    "PTO": {
+      "Type": "None",
+      "LossMap": "",
+      "Cycle": ""
+    },
+    "TorqueLimits": {},
+    "MaxDrivetrainPower": 10000.0,
+    "InitialSoC": 90.0,
+    "PowertrainConfiguration": "ParallelHybrid",
+    "ElectricMotors": [
+      {
+        "Count": 1,
+        "Ratio": 2.0,
+        "MechanicalEfficiency": 0.98,
+        "Position": "P1",
+        "MotorFile": "GenericEM_15KW_220Nm.vem"
+      }
+    ],
+    "Battery": {
+      "NumPacks": 1,
+      "BatteryFile": "Generic Supercap 48V.vreess"
+    }
+  }
+}
\ No newline at end of file
diff --git a/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/Engine map_7.7l.vmap b/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/Engine map_7.7l.vmap
new file mode 100644
index 0000000000000000000000000000000000000000..0dcbccd5228fc1a5a663a157d584ed14c43533a8
--- /dev/null
+++ b/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/Engine map_7.7l.vmap	
@@ -0,0 +1,183 @@
+engine speed [rpm],torque [Nm],fuel consumption [g/h]
+600,-156.5714286,0
+600,-56.57142857,0
+600,0,638
+600,216.9,3553.94
+600,433.8,6644.06
+600,650.7,11050.13
+600,867.6,15456.14
+600,1084.5,19862.14
+600,1301.4,24268.15
+600,1518.3,28674.15
+600,1735.2,33080.15
+600,1952.1,37486.16
+600,2169,41892.16
+748.9,-166.0198746,0
+748.9,-66.01987455,0
+748.9,0,843.67
+748.9,216.9,4100.1
+748.9,433.8,7706.21
+748.9,650.7,12298.69
+748.9,867.6,16731.15
+748.9,1084.5,21128.17
+748.9,1301.4,25525.18
+748.9,1518.3,29922.2
+748.9,1735.2,34319.22
+748.9,1952.1,38716.24
+748.9,2169,43113.26
+897.8,-174.5509889,0
+897.8,-74.55098889,0
+897.8,0,1049.35
+897.8,216.9,4646.25
+897.8,433.8,8768.36
+897.8,650.7,13541.46
+897.8,867.6,18156.42
+897.8,1084.5,22760.37
+897.8,1301.4,27362.81
+897.8,1518.3,31965.25
+897.8,1735.2,36567.69
+897.8,1952.1,41170.14
+897.8,2169,45772.58
+1046.7,-183.6305194,0
+1046.7,-83.63051942,0
+1046.7,0,1255.02
+1046.7,216.9,5192.4
+1046.7,433.8,9830.52
+1046.7,650.7,14781.21
+1046.7,867.6,19659.22
+1046.7,1084.5,24580.08
+1046.7,1301.4,29611.62
+1046.7,1518.3,34620.74
+1046.7,1735.2,39629.86
+1046.7,1952.1,44638.98
+1046.7,2169,49648.11
+1195.57,-193.9794114,0
+1195.57,-93.97941143,0
+1195.57,0,1460.65
+1195.57,216.9,5738.45
+1195.57,433.8,10892.45
+1195.57,650.7,16020.7
+1195.57,867.6,21159.59
+1195.57,1084.5,26391.05
+1195.57,1301.4,32095.87
+1195.57,1518.3,37706.84
+1195.57,1735.2,43317.81
+1195.57,1952.1,48928.77
+1195.57,2169,54539.74
+1359.19,-205.6210761,0
+1359.19,-105.6210761,0
+1359.19,0,1846.01
+1359.19,216.9,6560.14
+1359.19,433.8,12332.07
+1359.19,650.7,18097.95
+1359.19,867.6,23937.72
+1359.19,1084.5,29597.59
+1359.19,1301.4,35520.27
+1359.19,1518.3,41402.13
+1359.19,1735.2,47284
+1359.19,1952.1,53165.86
+1359.19,2169,59047.73
+1484,-215.5394502,0
+1484,-115.5394502,0
+1484,0,2131.16
+1484,216.9,7194.66
+1484,433.8,13496.22
+1484,650.7,19795.45
+1484,867.6,26122.03
+1484,1084.5,32222.77
+1484,1301.4,38588.45
+1484,1518.3,44936.74
+1484,1735.2,51285.03
+1484,1952.1,57633.32
+1484,2169,63981.62
+1608.9,-223.6490478,0
+1608.9,-123.6490478,0
+1608.9,0,2412.92
+1608.9,216.9,7832.39
+1608.9,433.8,14689.88
+1608.9,650.7,21533.67
+1608.9,867.6,28332.13
+1608.9,1084.5,34956.02
+1608.9,1301.4,41921.53
+1608.9,1518.3,48882.7
+1608.9,1735.2,55843.86
+1608.9,1952.1,62805.03
+1608.9,2169,69766.19
+1733.8,-228.2687944,0
+1733.8,-128.2687944,0
+1733.8,0,2725.03
+1733.8,216.9,8486.62
+1733.8,433.8,15875.76
+1733.8,650.7,23166.99
+1733.8,867.6,30597.07
+1733.8,1084.5,38101
+1733.8,1301.4,45882.06
+1733.8,1518.3,53661.69
+1733.8,1735.2,61441.31
+1733.8,1952.1,69220.94
+1733.8,2169,77000.57
+1858.61,-233.2770119,0
+1858.61,-133.2770119,0
+1858.61,0,3067.94
+1858.61,216.9,9180.54
+1858.61,433.8,17097.03
+1858.61,650.7,24909.82
+1858.61,867.6,32982.42
+1858.61,1084.5,41176.53
+1858.61,1301.4,49526.09
+1858.61,1518.3,57875.73
+1858.61,1735.2,66225.36
+1858.61,1952.1,74575
+1858.61,2169,82924.64
+1983.51,-239.7011553,0
+1983.51,-139.7011553,0
+1983.51,0,3446.165969
+1983.51,216.9,9920.378324
+1983.51,433.8,18360.13899
+1983.51,650.7,26779.01758
+1983.51,867.6,35507.453
+1983.51,1084.5,44178.34965
+1983.51,1301.4,52818.23622
+1983.51,1518.3,61458.13164
+1983.51,1735.2,70098.02705
+1983.51,1952.1,78737.92246
+1983.51,2169,87377.81788
+2108.41,-250.3624289,0
+2108.41,-150.3624289,0
+2108.41,0,3903.220883
+2108.41,216.9,10693.19834
+2108.41,433.8,19641.08191
+2108.41,650.7,28745.17923
+2108.41,867.6,38180.93551
+2108.41,1084.5,47433.46318
+2108.41,1301.4,56664.44413
+2108.41,1518.3,65895.42508
+2108.41,1735.2,75126.40604
+2108.41,1952.1,84357.38699
+2108.41,2169,93588.36794
+2233.31,-260.6179336,0
+2233.31,-160.6179336,0
+2233.31,0,4363.413897
+2233.31,216.9,11487.86565
+2233.31,433.8,20985.72948
+2233.31,650.7,30841.62288
+2233.31,867.6,41079.19748
+2233.31,1084.5,51089.00489
+2233.31,1301.4,61104.85222
+2233.31,1518.3,71120.69954
+2233.31,1735.2,81136.54686
+2233.31,1952.1,91152.39418
+2233.31,2169,101168.2415
+2358.21,-268.3446286,0
+2358.21,-168.3446286,0
+2358.21,0,4799.266043
+2358.21,216.9,12328.80853
+2358.21,433.8,22498.08244
+2358.21,650.7,33255.73916
+2358.21,867.6,44533.43058
+2358.21,1084.5,55739.63684
+2358.21,1301.4,66947.35734
+2358.21,1518.3,78155.07784
+2358.21,1735.2,89362.79834
+2358.21,1952.1,100570.5188
+2358.21,2169,111778.2393
diff --git a/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/Full-load curve 220kW.vfld b/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/Full-load curve 220kW.vfld
new file mode 100644
index 0000000000000000000000000000000000000000..c886b973fd4999cf55bbd97d57565d78e161fa07
--- /dev/null
+++ b/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/Full-load curve 220kW.vfld	
@@ -0,0 +1,14 @@
+engine speed [1/min],full load torque [Nm],motoring torque [Nm]
+500,628.5714286,-50.28571429
+600,779.4285714,-56.57142857
+800,942.8571429,-69.14285714
+1000,1131.428571,-80.45714286
+1100,1294.857143,-87.37142857
+1200,1294.857143,-94.28571429
+1300,1294.857143,-101.2
+1600,1294.857143,-123.2
+1800,1150.285714,-130.7428571
+2000,1043.428571,-140.8
+2200,955.4285714,-158.4
+2300,867.4285714,-164.6857143
+2400,779.4285714,-170.9714286
diff --git a/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/GearboxAT-P.vgbx b/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/GearboxAT-P.vgbx
new file mode 100644
index 0000000000000000000000000000000000000000..7f3a3f92be54c5d11b0e7f14921ab7959c884f2e
--- /dev/null
+++ b/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/GearboxAT-P.vgbx	
@@ -0,0 +1,61 @@
+{
+  "Header": {
+    "CreatedBy": "",
+    "Date": "2021-01-18T16:15:44.9706996Z",
+    "AppVersion": "3",
+    "FileVersion": 6
+  },
+  "Body": {
+    "SavedInDeclMode": false,
+    "ModelName": "AT PowerSplit",
+    "Inertia": 0.0,
+    "TracInt": 0.0,
+    "Gears": [
+      {
+        "Ratio": 5.8,
+        "Efficiency": 0.97
+      },
+      {
+        "Ratio": 1.43,
+        "Efficiency": 0.93,
+        "ShiftPolygon": "",
+        "MaxTorque": "",
+        "MaxSpeed": ""
+      },
+      {
+        "Ratio": 1.0,
+        "Efficiency": 0.93,
+        "ShiftPolygon": "",
+        "MaxTorque": "",
+        "MaxSpeed": ""
+      },
+      {
+        "Ratio": 0.7,
+        "Efficiency": 0.93,
+        "ShiftPolygon": "",
+        "MaxTorque": "",
+        "MaxSpeed": ""
+      }
+    ],
+    "TqReserve": 0.0,
+    "ShiftTime": 0.5,
+    "StartTqReserve": 0.0,
+    "StartSpeed": 2.0,
+    "StartAcc": 0.6,
+    "GearboxType": "ATPowerSplit",
+    "TorqueConverter": {
+      "Enabled": true,
+      "File": "TC Parallel.vtcc",
+      "RefRPM": 999.99999999999989,
+      "Inertia": 0.0,
+      "MaxTCSpeed": 5000.0,
+      "ShiftPolygon": "",
+      "CLUpshiftMinAcceleration": 0.0,
+      "CCUpshiftMinAcceleration": 0.0
+    },
+    "DownshiftAfterUpshiftDelay": 6.0,
+    "UpshiftAfterDownshiftDelay": 0.0,
+    "UpshiftMinAcceleration": 0.0,
+    "PowershiftShiftTime": 0.8
+  }
+}
\ No newline at end of file
diff --git a/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/Generic Supercap 48V.vreess b/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/Generic Supercap 48V.vreess
new file mode 100644
index 0000000000000000000000000000000000000000..5cf5a9b538063f4c171bd6dbbb9007a00c01cacf
--- /dev/null
+++ b/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/Generic Supercap 48V.vreess	
@@ -0,0 +1,19 @@
+{
+  "Header": {
+    "CreatedBy": "",
+    "Date": "2021-01-18T15:17:57.4852109Z",
+    "AppVersion": "3",
+    "FileVersion": 1
+  },
+  "Body": {
+    "SavedInDeclMode": false,
+    "REESSType": "SuperCap",
+    "Model": "Generic Supercap 48V",
+    "Capacity": 166.0,
+    "InternalResistance": 0.005,
+    "U_min": 5.0,
+    "U_max": 48.6,
+    "I_maxCharge": 2200.0,
+    "I_maxDischarge": 2200.0
+  }
+}
\ No newline at end of file
diff --git a/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/GenericEM.vemd b/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/GenericEM.vemd
new file mode 100644
index 0000000000000000000000000000000000000000..41157c01c87a2201fb1af0f5aacd5983d7e8e786
--- /dev/null
+++ b/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/GenericEM.vemd	
@@ -0,0 +1,3 @@
+n [rpm] , T_drag [Nm]
+0       , -5.6
+5000   , -28.1
\ No newline at end of file
diff --git a/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/GenericEM_15KW_220Nm.vem b/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/GenericEM_15KW_220Nm.vem
new file mode 100644
index 0000000000000000000000000000000000000000..a960e797c1258cc5ef401dad878f891c26a526c6
--- /dev/null
+++ b/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/GenericEM_15KW_220Nm.vem	
@@ -0,0 +1,20 @@
+{
+  "Header": {
+    "CreatedBy": "",
+    "Date": "2021-01-18T16:23:20.3712200Z",
+    "AppVersion": "3",
+    "FileVersion": 1
+  },
+  "Body": {
+    "SavedInDeclMode": false,
+    "Model": "Generic 15kW_220Nm",
+    "FullLoadCurve": "GenericEM_15kW_220Nm.vemp",
+    "DragCurve": "GenericEM.vemd",
+    "EfficiencyMap": "GenericEM_32kW_450Nm.vemo",
+    "Inertia": 0.198,
+    "ContinuousPower": 15000.0,
+    "ContinuousPowerSpeed": 651.0,
+    "OverloadTime": 15.0,
+    "ThermalOverloadRecoveryFactor": 0.9
+  }
+}
\ No newline at end of file
diff --git a/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/GenericEM_15kW_220Nm.vemp b/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/GenericEM_15kW_220Nm.vemp
new file mode 100644
index 0000000000000000000000000000000000000000..249f3bb3b67d87cdb259a4d730d3d116946d8a03
--- /dev/null
+++ b/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/GenericEM_15kW_220Nm.vemp	
@@ -0,0 +1,75 @@
+n [rpm], T_drive [Nm], T_recuperation [Nm]
+0,220,-440
+651.0884036,220,-440
+648.7012987,220,-440
+652.5974026,219.494,-438.988
+656.4935065,218.1905,-436.381
+660.3896104,216.9035,-433.807
+662.3376623,216.2655,-432.531
+681.8181818,210.0835,-420.167
+701.2987013,204.248,-408.496
+720.7792208,198.726,-397.452
+740.2597403,193.501,-387.002
+759.7402597,188.54,-377.08
+779.2207792,183.8265,-367.653
+798.7012987,179.3385,-358.677
+818.1818182,175.0705,-350.141
+837.6623377,171.0005,-342.001
+857.1428571,167.112,-334.224
+876.6233766,163.3995,-326.799
+896.1038961,159.8465,-319.693
+915.5844156,156.4475,-312.895
+935.0649351,153.186,-306.372
+954.5454545,150.062,-300.124
+974.025974,147.059,-294.118
+993.5064935,144.177,-288.354
+1012.987013,141.405,-282.81
+1032.467532,138.7375,-277.475
+1051.948052,136.1635,-272.327
+1071.428571,133.6885,-267.377
+1090.909091,131.3015,-262.603
+1110.38961,128.997,-257.994
+1129.87013,126.775,-253.55
+1149.350649,124.6245,-249.249
+1168.831169,122.551,-245.102
+1188.311688,120.538,-241.076
+1207.792208,118.5965,-237.193
+1227.272727,116.7155,-233.431
+1246.753247,114.8895,-229.779
+1266.233766,113.124,-226.248
+1285.714286,111.408,-222.816
+1305.194805,109.747,-219.494
+1324.675325,108.13,-216.26
+1344.155844,106.5625,-213.125
+1363.636364,105.0445,-210.089
+1383.116883,103.565,-207.13
+1402.597403,102.124,-204.248
+1422.077922,100.727,-201.454
+1441.558442,99.363,-198.726
+1461.038961,98.0375,-196.075
+1480.519481,96.7505,-193.501
+1500,95.491,-190.982
+1519.480519,94.27,-188.54
+1538.961039,93.0765,-186.153
+1558.441558,91.9105,-183.821
+1577.922078,90.7775,-181.555
+1597.402597,89.672,-179.344
+1616.883117,88.5885,-177.177
+1636.363636,87.5325,-175.065
+1655.844156,86.504,-173.008
+1675.324675,85.4975,-170.995
+1694.805195,84.5185,-169.037
+1714.285714,83.556,-167.112
+1733.766234,82.6155,-165.231
+1753.246753,81.697,-163.394
+1772.727273,80.8005,-161.601
+1792.207792,79.926,-159.852
+1811.688312,79.0625,-158.125
+1831.168831,78.221,-156.442
+1850.649351,77.4015,-154.803
+1870.12987,76.593,-153.186
+1889.61039,75.801,-151.602
+1909.090909,75.031,-150.062
+1928.571429,74.272,-148.544
+1948.051948,73.5295,-147.059
+4864.577923,29.44539927,-58.89079854
diff --git a/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/GenericEM_32kW_450Nm.vemo b/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/GenericEM_32kW_450Nm.vemo
new file mode 100644
index 0000000000000000000000000000000000000000..d83549939cce849ba212493c65671b81017e72f8
--- /dev/null
+++ b/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/GenericEM_32kW_450Nm.vemo	
@@ -0,0 +1,2016 @@
+n [rpm] , T [Nm] , P_el [kW]
+0,-450,5.625657143
+0,-435.9375,5.298228573
+0,-421.875,4.980628573
+0,-407.8125,4.672742858
+0,-393.75,4.374742858
+0,-379.6875,4.086514285
+0,-365.625,3.808057143
+0,-351.5625,3.539428573
+0,-337.5,3.280571428
+0,-323.4375,3.031542858
+0,-309.375,2.792342858
+0,-295.3125,2.562914285
+0,-281.25,2.343257143
+0,-267.1875,2.133428573
+0,-253.125,1.933371428
+0,-239.0625,1.743142858
+0,-225,1.562742858
+0,-210.9375,1.392114285
+0,-196.875,1.231257143
+0,-182.8125,1.080228573
+0,-168.75,0.939028573
+0,-154.6875,0.8076
+0,-140.625,0.685942858
+0,-126.5625,0.574114285
+0,-112.5,0.472097143
+0,-98.4375,0.379874285
+0,-84.375,0.297445715
+0,-70.3125,0.224822858
+0,-56.25,0.161994285
+0,-42.1875,0.108971428
+0,-28.125,0.065748573
+0,-14.0625,0.032323428
+0,0,0.020628573
+0,14.0625,0.049702285
+0,28.125,0.088577143
+0,42.1875,0.137251428
+0,56.25,0.195725715
+0,70.3125,0.264
+0,84.375,0.34208
+0,98.4375,0.429954285
+0,112.5,0.527628573
+0,126.5625,0.635085715
+0,140.625,0.7524
+0,154.6875,0.879485715
+0,168.75,1.016342858
+0,182.8125,1.163028573
+0,196.875,1.319485715
+0,210.9375,1.485771428
+0,225,1.661885715
+0,239.0625,1.847771428
+0,253.125,2.043428573
+0,267.1875,2.248914285
+0,281.25,2.464171428
+0,295.3125,2.689257143
+0,309.375,2.924171428
+0,323.4375,3.168857143
+0,337.5,3.423314285
+0,351.5625,3.6876
+0,365.625,3.961714285
+0,379.6875,4.2456
+0,393.75,4.539257143
+0,407.8125,4.842742858
+0,421.875,5.156057143
+0,435.9375,5.479142858
+0,450,5.812
+46.50584415,-450,3.335257143
+46.50584415,-435.9375,3.080057143
+46.50584415,-421.875,2.834628573
+46.50584415,-407.8125,2.598971428
+46.50584415,-393.75,2.373142858
+46.50584415,-379.6875,2.157142858
+46.50584415,-365.625,1.950914285
+46.50584415,-351.5625,1.754514285
+46.50584415,-337.5,1.567885715
+46.50584415,-323.4375,1.391085715
+46.50584415,-309.375,1.224057143
+46.50584415,-295.3125,1.0668
+46.50584415,-281.25,0.919428573
+46.50584415,-267.1875,0.781771428
+46.50584415,-253.125,0.654
+46.50584415,-239.0625,0.53596
+46.50584415,-225,0.427742858
+46.50584415,-210.9375,0.32988
+46.50584415,-196.875,0.242057143
+46.50584415,-182.8125,0.164377143
+46.50584415,-168.75,0.096302858
+46.50584415,-154.6875,0.037838285
+46.50584415,-140.625,-0.011020573
+46.50584415,-126.5625,-0.050273715
+46.50584415,-112.5,-0.07992
+46.50584415,-98.4375,-0.09996
+46.50584415,-84.375,-0.110394285
+46.50584415,-70.3125,-0.111222858
+46.50584415,-56.25,-0.10244
+46.50584415,-42.1875,-0.084057143
+46.50584415,-28.125,-0.056062858
+46.50584415,-14.0625,-0.018464573
+46.50584415,0,0.0414
+46.50584415,14.0625,0.142691428
+46.50584415,28.125,0.253777143
+46.50584415,42.1875,0.374668573
+46.50584415,56.25,0.505354285
+46.50584415,70.3125,0.645828573
+46.50584415,84.375,0.796114285
+46.50584415,98.4375,0.956228573
+46.50584415,112.5,1.126114285
+46.50584415,126.5625,1.305828573
+46.50584415,140.625,1.495314285
+46.50584415,154.6875,1.694571428
+46.50584415,168.75,1.903714285
+46.50584415,182.8125,2.122571428
+46.50584415,196.875,2.351257143
+46.50584415,210.9375,2.589771428
+46.50584415,225,2.838057143
+46.50584415,239.0625,3.096171428
+46.50584415,253.125,3.364057143
+46.50584415,267.1875,3.641771428
+46.50584415,281.25,3.929257143
+46.50584415,295.3125,4.226571428
+46.50584415,309.375,4.533657143
+46.50584415,323.4375,4.850571428
+46.50584415,337.5,5.177257143
+46.50584415,351.5625,5.513771428
+46.50584415,365.625,5.86
+46.50584415,379.6875,6.216
+46.50584415,393.75,6.582285715
+46.50584415,407.8125,6.957714285
+46.50584415,421.875,7.343428573
+46.50584415,435.9375,7.738285715
+46.50584415,450,8.143428573
+93.01266235,-450,1.045885715
+93.01266235,-435.9375,0.862914285
+93.01266235,-421.875,0.69
+93.01266235,-407.8125,0.528325715
+93.01266235,-393.75,0.377337143
+93.01266235,-379.6875,0.235954285
+93.01266235,-365.625,0.104177143
+93.01266235,-351.5625,-0.017996
+93.01266235,-337.5,-0.13056
+93.01266235,-323.4375,-0.23352
+93.01266235,-309.375,-0.326868573
+93.01266235,-295.3125,-0.410617143
+93.01266235,-281.25,-0.484754285
+93.01266235,-267.1875,-0.549285715
+93.01266235,-253.125,-0.604228573
+93.01266235,-239.0625,-0.649542858
+93.01266235,-225,-0.685257143
+93.01266235,-210.9375,-0.711371428
+93.01266235,-196.875,-0.727828573
+93.01266235,-182.8125,-0.734742858
+93.01266235,-168.75,-0.732057143
+93.01266235,-154.6875,-0.719714285
+93.01266235,-140.625,-0.697771428
+93.01266235,-126.5625,-0.666228573
+93.01266235,-112.5,-0.625085715
+93.01266235,-98.4375,-0.574342858
+93.01266235,-84.375,-0.514017143
+93.01266235,-70.3125,-0.444057143
+93.01266235,-56.25,-0.364497143
+93.01266235,-42.1875,-0.275325715
+93.01266235,-28.125,-0.176548573
+93.01266235,-14.0625,-0.068165715
+93.01266235,0,0.063228573
+93.01266235,14.0625,0.236731428
+93.01266235,28.125,0.42004
+93.01266235,42.1875,0.613142858
+93.01266235,56.25,0.816057143
+93.01266235,70.3125,1.028742858
+93.01266235,84.375,1.251257143
+93.01266235,98.4375,1.483542858
+93.01266235,112.5,1.725657143
+93.01266235,126.5625,1.9776
+93.01266235,140.625,2.239314285
+93.01266235,154.6875,2.5108
+93.01266235,168.75,2.792114285
+93.01266235,182.8125,3.0832
+93.01266235,196.875,3.384114285
+93.01266235,210.9375,3.694857143
+93.01266235,225,4.015371428
+93.01266235,239.0625,4.345657143
+93.01266235,253.125,4.685771428
+93.01266235,267.1875,5.035657143
+93.01266235,281.25,5.395371428
+93.01266235,295.3125,5.765142858
+93.01266235,309.375,6.144
+93.01266235,323.4375,6.533142858
+93.01266235,337.5,6.932
+93.01266235,351.5625,7.341142858
+93.01266235,365.625,7.759428573
+93.01266235,379.6875,8.188
+93.01266235,393.75,8.625714285
+93.01266235,407.8125,9.073714285
+93.01266235,421.875,9.531428573
+93.01266235,435.9375,9.998857143
+93.01266235,450,10.47657143
+139.5194805,-450,-1.204057143
+139.5194805,-435.9375,-1.313085715
+139.5194805,-421.875,-1.412514285
+139.5194805,-407.8125,-1.502285715
+139.5194805,-393.75,-1.582514285
+139.5194805,-379.6875,-1.653085715
+139.5194805,-365.625,-1.714114285
+139.5194805,-351.5625,-1.765485715
+139.5194805,-337.5,-1.807257143
+139.5194805,-323.4375,-1.839428573
+139.5194805,-309.375,-1.862
+139.5194805,-295.3125,-1.874971428
+139.5194805,-281.25,-1.878342858
+139.5194805,-267.1875,-1.872057143
+139.5194805,-253.125,-1.856228573
+139.5194805,-239.0625,-1.830742858
+139.5194805,-225,-1.795657143
+139.5194805,-210.9375,-1.750971428
+139.5194805,-196.875,-1.696685715
+139.5194805,-182.8125,-1.6328
+139.5194805,-168.75,-1.559314285
+139.5194805,-154.6875,-1.476228573
+139.5194805,-140.625,-1.383485715
+139.5194805,-126.5625,-1.2812
+139.5194805,-112.5,-1.169257143
+139.5194805,-98.4375,-1.047714285
+139.5194805,-84.375,-0.916571428
+139.5194805,-70.3125,-0.775828573
+139.5194805,-56.25,-0.625485715
+139.5194805,-42.1875,-0.465548573
+139.5194805,-28.125,-0.295988573
+139.5194805,-14.0625,-0.116822858
+139.5194805,0,0.086125715
+139.5194805,14.0625,0.33184
+139.5194805,28.125,0.587371428
+139.5194805,42.1875,0.852685715
+139.5194805,56.25,1.127828573
+139.5194805,70.3125,1.412742858
+139.5194805,84.375,1.707428573
+139.5194805,98.4375,2.011942858
+139.5194805,112.5,2.326285715
+139.5194805,126.5625,2.6504
+139.5194805,140.625,2.984342858
+139.5194805,154.6875,3.328057143
+139.5194805,168.75,3.6816
+139.5194805,182.8125,4.044914285
+139.5194805,196.875,4.418
+139.5194805,210.9375,4.800971428
+139.5194805,225,5.193657143
+139.5194805,239.0625,5.596228573
+139.5194805,253.125,6.008571428
+139.5194805,267.1875,6.430857143
+139.5194805,281.25,6.862857143
+139.5194805,295.3125,7.304571428
+139.5194805,309.375,7.756
+139.5194805,323.4375,8.217142858
+139.5194805,337.5,8.688571428
+139.5194805,351.5625,9.169142858
+139.5194805,365.625,9.66
+139.5194805,379.6875,10.16057143
+139.5194805,393.75,10.67085714
+139.5194805,407.8125,11.19085714
+139.5194805,421.875,11.72114286
+139.5194805,435.9375,12.26057143
+139.5194805,450,12.81028572
+186.0292208,-450,-3.446
+186.0292208,-435.9375,-3.484228573
+186.0292208,-421.875,-3.512857143
+186.0292208,-407.8125,-3.531885715
+186.0292208,-393.75,-3.541314285
+186.0292208,-379.6875,-3.541142858
+186.0292208,-365.625,-3.531371428
+186.0292208,-351.5625,-3.511942858
+186.0292208,-337.5,-3.482914285
+186.0292208,-323.4375,-3.444342858
+186.0292208,-309.375,-3.396114285
+186.0292208,-295.3125,-3.338285715
+186.0292208,-281.25,-3.270857143
+186.0292208,-267.1875,-3.193828573
+186.0292208,-253.125,-3.1072
+186.0292208,-239.0625,-3.010914285
+186.0292208,-225,-2.905085715
+186.0292208,-210.9375,-2.7896
+186.0292208,-196.875,-2.664514285
+186.0292208,-182.8125,-2.529828573
+186.0292208,-168.75,-2.3856
+186.0292208,-154.6875,-2.231657143
+186.0292208,-140.625,-2.068171428
+186.0292208,-126.5625,-1.895085715
+186.0292208,-112.5,-1.7124
+186.0292208,-98.4375,-1.520057143
+186.0292208,-84.375,-1.318114285
+186.0292208,-70.3125,-1.106628573
+186.0292208,-56.25,-0.885485715
+186.0292208,-42.1875,-0.654742858
+186.0292208,-28.125,-0.414394285
+186.0292208,-14.0625,-0.16444
+186.0292208,0,0.11008
+186.0292208,14.0625,0.428011428
+186.0292208,28.125,0.755771428
+186.0292208,42.1875,1.093257143
+186.0292208,56.25,1.440628573
+186.0292208,70.3125,1.797771428
+186.0292208,84.375,2.164685715
+186.0292208,98.4375,2.541428573
+186.0292208,112.5,2.927942858
+186.0292208,126.5625,3.324285715
+186.0292208,140.625,3.730457143
+186.0292208,154.6875,4.146342858
+186.0292208,168.75,4.572114285
+186.0292208,182.8125,5.007657143
+186.0292208,196.875,5.452971428
+186.0292208,210.9375,5.908
+186.0292208,225,6.373142858
+186.0292208,239.0625,6.848
+186.0292208,253.125,7.332571428
+186.0292208,267.1875,7.826857143
+186.0292208,281.25,8.330857143
+186.0292208,295.3125,8.844571428
+186.0292208,309.375,9.368571428
+186.0292208,323.4375,9.902285715
+186.0292208,337.5,10.44514286
+186.0292208,351.5625,10.99828572
+186.0292208,365.625,11.56171429
+186.0292208,379.6875,12.13428572
+186.0292208,393.75,12.71657143
+186.0292208,407.8125,13.30914286
+186.0292208,421.875,13.91142857
+186.0292208,435.9375,14.52342857
+186.0292208,450,15.14514286
+232.5292208,-450,-5.686914285
+232.5292208,-435.9375,-5.654342858
+232.5292208,-421.875,-5.612228573
+232.5292208,-407.8125,-5.560457143
+232.5292208,-393.75,-5.499085715
+232.5292208,-379.6875,-5.428114285
+232.5292208,-365.625,-5.347542858
+232.5292208,-351.5625,-5.257371428
+232.5292208,-337.5,-5.1576
+232.5292208,-323.4375,-5.048171428
+232.5292208,-309.375,-4.929142858
+232.5292208,-295.3125,-4.800571428
+232.5292208,-281.25,-4.662342858
+232.5292208,-267.1875,-4.514514285
+232.5292208,-253.125,-4.357085715
+232.5292208,-239.0625,-4.190057143
+232.5292208,-225,-4.013428573
+232.5292208,-210.9375,-3.827142858
+232.5292208,-196.875,-3.631314285
+232.5292208,-182.8125,-3.425828573
+232.5292208,-168.75,-3.2108
+232.5292208,-154.6875,-2.986114285
+232.5292208,-140.625,-2.751828573
+232.5292208,-126.5625,-2.507942858
+232.5292208,-112.5,-2.254457143
+232.5292208,-98.4375,-1.991371428
+232.5292208,-84.375,-1.718628573
+232.5292208,-70.3125,-1.436342858
+232.5292208,-56.25,-1.1444
+232.5292208,-42.1875,-0.842857143
+232.5292208,-28.125,-0.531754285
+232.5292208,-14.0625,-0.211017143
+232.5292208,0,0.135091428
+232.5292208,14.0625,0.52524
+232.5292208,28.125,0.9252
+232.5292208,42.1875,1.334914285
+232.5292208,56.25,1.754514285
+232.5292208,70.3125,2.183828573
+232.5292208,84.375,2.622971428
+232.5292208,98.4375,3.071942858
+232.5292208,112.5,3.530685715
+232.5292208,126.5625,3.999257143
+232.5292208,140.625,4.4776
+232.5292208,154.6875,4.965771428
+232.5292208,168.75,5.463714285
+232.5292208,182.8125,5.971428573
+232.5292208,196.875,6.489142858
+232.5292208,210.9375,7.016571428
+232.5292208,225,7.553714285
+232.5292208,239.0625,8.100571428
+232.5292208,253.125,8.657142858
+232.5292208,267.1875,9.224
+232.5292208,281.25,9.8
+232.5292208,295.3125,10.38628572
+232.5292208,309.375,10.98228572
+232.5292208,323.4375,11.588
+232.5292208,337.5,12.20342857
+232.5292208,351.5625,12.82914286
+232.5292208,365.625,13.464
+232.5292208,379.6875,14.10914286
+232.5292208,393.75,14.764
+232.5292208,407.8125,15.42857143
+232.5292208,421.875,16.10285714
+232.5292208,435.9375,16.78685714
+232.5292208,450,17.48114286
+279.038961,-450,-7.926857143
+279.038961,-435.9375,-7.823428573
+279.038961,-421.875,-7.710285715
+279.038961,-407.8125,-7.588
+279.038961,-393.75,-7.456
+279.038961,-379.6875,-7.314285715
+279.038961,-365.625,-7.162857143
+279.038961,-351.5625,-7.001714285
+279.038961,-337.5,-6.831428573
+279.038961,-323.4375,-6.650857143
+279.038961,-309.375,-6.461142858
+279.038961,-295.3125,-6.261714285
+279.038961,-281.25,-6.052571428
+279.038961,-267.1875,-5.834285715
+279.038961,-253.125,-5.606
+279.038961,-239.0625,-5.368171428
+279.038961,-225,-5.120742858
+279.038961,-210.9375,-4.863714285
+279.038961,-196.875,-4.597028573
+279.038961,-182.8125,-4.3208
+279.038961,-168.75,-4.034971428
+279.038961,-154.6875,-3.739485715
+279.038961,-140.625,-3.434457143
+279.038961,-126.5625,-3.119771428
+279.038961,-112.5,-2.795485715
+279.038961,-98.4375,-2.4616
+279.038961,-84.375,-2.118114285
+279.038961,-70.3125,-1.765028573
+279.038961,-56.25,-1.402285715
+279.038961,-42.1875,-1.03
+279.038961,-28.125,-0.648057143
+279.038961,-14.0625,-0.256548573
+279.038961,0,0.161171428
+279.038961,14.0625,0.623542858
+279.038961,28.125,1.095714285
+279.038961,42.1875,1.577657143
+279.038961,56.25,2.069428573
+279.038961,70.3125,2.570971428
+279.038961,84.375,3.082342858
+279.038961,98.4375,3.603542858
+279.038961,112.5,4.134514285
+279.038961,126.5625,4.675257143
+279.038961,140.625,5.225828573
+279.038961,154.6875,5.786285715
+279.038961,168.75,6.356571428
+279.038961,182.8125,6.936571428
+279.038961,196.875,7.526285715
+279.038961,210.9375,8.125714285
+279.038961,225,8.734857143
+279.038961,239.0625,9.354285715
+279.038961,253.125,9.983428573
+279.038961,267.1875,10.62171429
+279.038961,281.25,11.27028572
+279.038961,295.3125,11.92914286
+279.038961,309.375,12.59714286
+279.038961,323.4375,13.27485714
+279.038961,337.5,13.96285714
+279.038961,351.5625,14.66057143
+279.038961,365.625,15.368
+279.038961,379.6875,16.08514286
+279.038961,393.75,16.812
+279.038961,407.8125,17.54857143
+279.038961,421.875,18.29542857
+279.038961,435.9375,19.05142857
+279.038961,450,19.81771429
+325.5487013,-450,-10.16571429
+325.5487013,-435.9375,-9.991428573
+325.5487013,-421.875,-9.808
+325.5487013,-407.8125,-9.614285715
+325.5487013,-393.75,-9.411428573
+325.5487013,-379.6875,-9.198857143
+325.5487013,-365.625,-8.976571428
+325.5487013,-351.5625,-8.745142858
+325.5487013,-337.5,-8.503428573
+325.5487013,-323.4375,-8.252571428
+325.5487013,-309.375,-7.992
+325.5487013,-295.3125,-7.721714285
+325.5487013,-281.25,-7.442285715
+325.5487013,-267.1875,-7.152571428
+325.5487013,-253.125,-6.853714285
+325.5487013,-239.0625,-6.545142858
+325.5487013,-225,-6.226857143
+325.5487013,-210.9375,-5.899428573
+325.5487013,-196.875,-5.561771428
+325.5487013,-182.8125,-5.214742858
+325.5487013,-168.75,-4.858057143
+325.5487013,-154.6875,-4.491828573
+325.5487013,-140.625,-4.116
+325.5487013,-126.5625,-3.730514285
+325.5487013,-112.5,-3.335485715
+325.5487013,-98.4375,-2.9308
+325.5487013,-84.375,-2.516514285
+325.5487013,-70.3125,-2.092628573
+325.5487013,-56.25,-1.659142858
+325.5487013,-42.1875,-1.216057143
+325.5487013,-28.125,-0.763371428
+325.5487013,-14.0625,-0.301045715
+325.5487013,0,0.188308573
+325.5487013,14.0625,0.722914285
+325.5487013,28.125,1.267257143
+325.5487013,42.1875,1.821428573
+325.5487013,56.25,2.385428573
+325.5487013,70.3125,2.9592
+325.5487013,84.375,3.5428
+325.5487013,98.4375,4.136171428
+325.5487013,112.5,4.739371428
+325.5487013,126.5625,5.352342858
+325.5487013,140.625,5.974857143
+325.5487013,154.6875,6.607428573
+325.5487013,168.75,7.250285715
+325.5487013,182.8125,7.902285715
+325.5487013,196.875,8.564
+325.5487013,210.9375,9.236
+325.5487013,225,9.917714285
+325.5487013,239.0625,10.60914286
+325.5487013,253.125,11.31028572
+325.5487013,267.1875,12.02114286
+325.5487013,281.25,12.74171429
+325.5487013,295.3125,13.47257143
+325.5487013,309.375,14.21314286
+325.5487013,323.4375,14.96285714
+325.5487013,337.5,15.72285714
+325.5487013,351.5625,16.49314286
+325.5487013,365.625,17.27257143
+325.5487013,379.6875,18.06171429
+325.5487013,393.75,18.86114286
+325.5487013,407.8125,19.67028572
+325.5487013,421.875,20.48914286
+325.5487013,435.9375,21.31771429
+325.5487013,450,22.156
+372.0487013,-450,-12.40342857
+372.0487013,-435.9375,-12.15828572
+372.0487013,-421.875,-11.904
+372.0487013,-407.8125,-11.64
+372.0487013,-393.75,-11.36628572
+372.0487013,-379.6875,-11.08285714
+372.0487013,-365.625,-10.78971429
+372.0487013,-351.5625,-10.48742857
+372.0487013,-337.5,-10.17542857
+372.0487013,-323.4375,-9.853714285
+372.0487013,-309.375,-9.522285715
+372.0487013,-295.3125,-9.181142858
+372.0487013,-281.25,-8.830857143
+372.0487013,-267.1875,-8.470285715
+372.0487013,-253.125,-8.100571428
+372.0487013,-239.0625,-7.721142858
+372.0487013,-225,-7.332
+372.0487013,-210.9375,-6.933714285
+372.0487013,-196.875,-6.525142858
+372.0487013,-182.8125,-6.107428573
+372.0487013,-168.75,-5.680171428
+372.0487013,-154.6875,-5.243142858
+372.0487013,-140.625,-4.796514285
+372.0487013,-126.5625,-4.340285715
+372.0487013,-112.5,-3.8744
+372.0487013,-98.4375,-3.398971428
+372.0487013,-84.375,-2.913885715
+372.0487013,-70.3125,-2.419257143
+372.0487013,-56.25,-1.914971428
+372.0487013,-42.1875,-1.401085715
+372.0487013,-28.125,-0.8776
+372.0487013,-14.0625,-0.344502858
+372.0487013,0,0.216508573
+372.0487013,14.0625,0.823314285
+372.0487013,28.125,1.439885715
+372.0487013,42.1875,2.066285715
+372.0487013,56.25,2.702457143
+372.0487013,70.3125,3.348457143
+372.0487013,84.375,4.004285715
+372.0487013,98.4375,4.669885715
+372.0487013,112.5,5.345257143
+372.0487013,126.5625,6.030285715
+372.0487013,140.625,6.725714285
+372.0487013,154.6875,7.430285715
+372.0487013,168.75,8.145142858
+372.0487013,182.8125,8.869142858
+372.0487013,196.875,9.603428573
+372.0487013,210.9375,10.34742857
+372.0487013,225,11.10114286
+372.0487013,239.0625,11.86514286
+372.0487013,253.125,12.63828572
+372.0487013,267.1875,13.42171429
+372.0487013,281.25,14.21428572
+372.0487013,295.3125,15.01714286
+372.0487013,309.375,15.82971429
+372.0487013,323.4375,16.652
+372.0487013,337.5,17.48457143
+372.0487013,351.5625,18.32628572
+372.0487013,365.625,19.17828572
+372.0487013,379.6875,20.04
+372.0487013,393.75,20.91142857
+372.0487013,407.8125,21.79257143
+372.0487013,421.875,22.68342857
+372.0487013,435.9375,23.58457143
+372.0487013,450,24.49485714
+418.5584415,-450,-14.64
+418.5584415,-435.9375,-14.32457143
+418.5584415,-421.875,-13.99942857
+418.5584415,-407.8125,-13.664
+418.5584415,-393.75,-13.32
+418.5584415,-379.6875,-12.96571429
+418.5584415,-365.625,-12.60171429
+418.5584415,-351.5625,-12.22857143
+418.5584415,-337.5,-11.84571429
+418.5584415,-323.4375,-11.45314286
+418.5584415,-309.375,-11.05085714
+418.5584415,-295.3125,-10.63942857
+418.5584415,-281.25,-10.21771429
+418.5584415,-267.1875,-9.786857143
+418.5584415,-253.125,-9.346285715
+418.5584415,-239.0625,-8.896
+418.5584415,-225,-8.436571428
+418.5584415,-210.9375,-7.966857143
+418.5584415,-196.875,-7.488
+418.5584415,-182.8125,-6.999428573
+418.5584415,-168.75,-6.501142858
+418.5584415,-154.6875,-5.993142858
+418.5584415,-140.625,-5.476
+418.5584415,-126.5625,-4.948971428
+418.5584415,-112.5,-4.412342858
+418.5584415,-98.4375,-3.866114285
+418.5584415,-84.375,-3.310228573
+418.5584415,-70.3125,-2.7448
+418.5584415,-56.25,-2.169714285
+418.5584415,-42.1875,-1.585085715
+418.5584415,-28.125,-0.9908
+418.5584415,-14.0625,-0.38692
+418.5584415,0,0.245771428
+418.5584415,14.0625,0.9248
+418.5584415,28.125,1.6136
+418.5584415,42.1875,2.312171428
+418.5584415,56.25,3.020628573
+418.5584415,70.3125,3.7388
+418.5584415,84.375,4.4668
+418.5584415,98.4375,5.204628573
+418.5584415,112.5,5.952
+418.5584415,126.5625,6.709714285
+418.5584415,140.625,7.477142858
+418.5584415,154.6875,8.253714285
+418.5584415,168.75,9.040571428
+418.5584415,182.8125,9.837142858
+418.5584415,196.875,10.644
+418.5584415,210.9375,11.46
+418.5584415,225,12.28571429
+418.5584415,239.0625,13.12171429
+418.5584415,253.125,13.96742857
+418.5584415,267.1875,14.82285714
+418.5584415,281.25,15.688
+418.5584415,295.3125,16.56285714
+418.5584415,309.375,17.448
+418.5584415,323.4375,18.34228572
+418.5584415,337.5,19.24685714
+418.5584415,351.5625,20.16114286
+418.5584415,365.625,21.08514286
+418.5584415,379.6875,22.01885714
+418.5584415,393.75,22.96285714
+418.5584415,407.8125,23.916
+418.5584415,421.875,24.87942857
+418.5584415,435.9375,25.852
+418.5584415,450,26.83485715
+465.0584415,-450,-16.876
+465.0584415,-435.9375,-16.48914286
+465.0584415,-421.875,-16.09314286
+465.0584415,-407.8125,-15.68742857
+465.0584415,-393.75,-15.27257143
+465.0584415,-379.6875,-14.84742857
+465.0584415,-365.625,-14.41314286
+465.0584415,-351.5625,-13.96857143
+465.0584415,-337.5,-13.51485714
+465.0584415,-323.4375,-13.052
+465.0584415,-309.375,-12.57885714
+465.0584415,-295.3125,-12.09657143
+465.0584415,-281.25,-11.604
+465.0584415,-267.1875,-11.10228572
+465.0584415,-253.125,-10.59085714
+465.0584415,-239.0625,-10.07028572
+465.0584415,-225,-9.539428573
+465.0584415,-210.9375,-8.999428573
+465.0584415,-196.875,-8.449714285
+465.0584415,-182.8125,-7.890285715
+465.0584415,-168.75,-7.321142858
+465.0584415,-154.6875,-6.742857143
+465.0584415,-140.625,-6.154285715
+465.0584415,-126.5625,-5.556628573
+465.0584415,-112.5,-4.9492
+465.0584415,-98.4375,-4.332171428
+465.0584415,-84.375,-3.705542858
+465.0584415,-70.3125,-3.069314285
+465.0584415,-56.25,-2.423485715
+465.0584415,-42.1875,-1.768
+465.0584415,-28.125,-1.102971428
+465.0584415,-14.0625,-0.428291428
+465.0584415,0,0.276097143
+465.0584415,14.0625,1.027314285
+465.0584415,28.125,1.788342858
+465.0584415,42.1875,2.559142858
+465.0584415,56.25,3.339771428
+465.0584415,70.3125,4.130228573
+465.0584415,84.375,4.930457143
+465.0584415,98.4375,5.740571428
+465.0584415,112.5,6.560571428
+465.0584415,126.5625,7.389714285
+465.0584415,140.625,8.229142858
+465.0584415,154.6875,9.078857143
+465.0584415,168.75,9.937714285
+465.0584415,182.8125,10.80628572
+465.0584415,196.875,11.68514286
+465.0584415,210.9375,12.57371429
+465.0584415,225,13.472
+465.0584415,239.0625,14.38
+465.0584415,253.125,15.29771429
+465.0584415,267.1875,16.22514286
+465.0584415,281.25,17.16285714
+465.0584415,295.3125,18.10971429
+465.0584415,309.375,19.06685714
+465.0584415,323.4375,20.03371429
+465.0584415,337.5,21.01028572
+465.0584415,351.5625,21.99657143
+465.0584415,365.625,22.99314286
+465.0584415,379.6875,23.99885714
+465.0584415,393.75,25.01485715
+465.0584415,407.8125,26.04057143
+465.0584415,421.875,27.076
+465.0584415,435.9375,28.12114285
+465.0584415,450,29.176
+511.5681818,-450,-19.11028572
+511.5681818,-435.9375,-18.65314286
+511.5681818,-421.875,-18.18628572
+511.5681818,-407.8125,-17.70971429
+511.5681818,-393.75,-17.224
+511.5681818,-379.6875,-16.728
+511.5681818,-365.625,-16.22285714
+511.5681818,-351.5625,-15.708
+511.5681818,-337.5,-15.18342857
+511.5681818,-323.4375,-14.64914286
+511.5681818,-309.375,-14.10571429
+511.5681818,-295.3125,-13.55257143
+511.5681818,-281.25,-12.98971429
+511.5681818,-267.1875,-12.41714286
+511.5681818,-253.125,-11.83485714
+511.5681818,-239.0625,-11.24285714
+511.5681818,-225,-10.64171429
+511.5681818,-210.9375,-10.03085714
+511.5681818,-196.875,-9.410285715
+511.5681818,-182.8125,-8.78
+511.5681818,-168.75,-8.14
+511.5681818,-154.6875,-7.490857143
+511.5681818,-140.625,-6.832
+511.5681818,-126.5625,-6.163428573
+511.5681818,-112.5,-5.485028573
+511.5681818,-98.4375,-4.7972
+511.5681818,-84.375,-4.099828573
+511.5681818,-70.3125,-3.3928
+511.5681818,-56.25,-2.676171428
+511.5681818,-42.1875,-1.949942858
+511.5681818,-28.125,-1.214057143
+511.5681818,-14.0625,-0.468622858
+511.5681818,0,0.30748
+511.5681818,14.0625,1.130914285
+511.5681818,28.125,1.964171428
+511.5681818,42.1875,2.8072
+511.5681818,56.25,3.660057143
+511.5681818,70.3125,4.522685715
+511.5681818,84.375,5.395085715
+511.5681818,98.4375,6.277142858
+511.5681818,112.5,7.169142858
+511.5681818,126.5625,8.071428573
+511.5681818,140.625,8.982857143
+511.5681818,154.6875,9.904571428
+511.5681818,168.75,10.83542857
+511.5681818,182.8125,11.77657143
+511.5681818,196.875,12.72742857
+511.5681818,210.9375,13.688
+511.5681818,225,14.65828572
+511.5681818,239.0625,15.63885714
+511.5681818,253.125,16.62857143
+511.5681818,267.1875,17.62857143
+511.5681818,281.25,18.63828572
+511.5681818,295.3125,19.65771429
+511.5681818,309.375,20.68685714
+511.5681818,323.4375,21.72628572
+511.5681818,337.5,22.77485714
+511.5681818,351.5625,23.83371429
+511.5681818,365.625,24.90228572
+511.5681818,379.6875,25.98
+511.5681818,393.75,27.06857143
+511.5681818,407.8125,28.16628573
+511.5681818,421.875,29.27371428
+511.5681818,435.9375,30.39142858
+511.5681818,450,31.51828573
+558.077922,-450,-21.344
+558.077922,-435.9375,-20.816
+558.077922,-421.875,-20.27828572
+558.077922,-407.8125,-19.73142857
+558.077922,-393.75,-19.17428572
+558.077922,-379.6875,-18.608
+558.077922,-365.625,-18.032
+558.077922,-351.5625,-17.44628572
+558.077922,-337.5,-16.85085714
+558.077922,-323.4375,-16.24571429
+558.077922,-309.375,-15.63142857
+558.077922,-295.3125,-15.00742857
+558.077922,-281.25,-14.37371429
+558.077922,-267.1875,-13.73028572
+558.077922,-253.125,-13.07714286
+558.077922,-239.0625,-12.41485714
+558.077922,-225,-11.74285714
+558.077922,-210.9375,-11.06114286
+558.077922,-196.875,-10.36971429
+558.077922,-182.8125,-9.668571428
+558.077922,-168.75,-8.958285715
+558.077922,-154.6875,-8.237714285
+558.077922,-140.625,-7.508
+558.077922,-126.5625,-6.768571428
+558.077922,-112.5,-6.02
+558.077922,-98.4375,-5.2612
+558.077922,-84.375,-4.493028573
+558.077922,-70.3125,-3.7152
+558.077922,-56.25,-2.927771428
+558.077922,-42.1875,-2.1308
+558.077922,-28.125,-1.324171428
+558.077922,-14.0625,-0.50792
+558.077922,0,0.339925715
+558.077922,14.0625,1.2356
+558.077922,28.125,2.141028573
+558.077922,42.1875,3.056285715
+558.077922,56.25,3.981314285
+558.077922,70.3125,4.916171428
+558.077922,84.375,5.860571428
+558.077922,98.4375,6.815428573
+558.077922,112.5,7.779428573
+558.077922,126.5625,8.753714285
+558.077922,140.625,9.737714285
+558.077922,154.6875,10.73085714
+558.077922,168.75,11.73485714
+558.077922,182.8125,12.748
+558.077922,196.875,13.77085714
+558.077922,210.9375,14.804
+558.077922,225,15.84628572
+558.077922,239.0625,16.89885714
+558.077922,253.125,17.96114286
+558.077922,267.1875,19.03314286
+558.077922,281.25,20.11485714
+558.077922,295.3125,21.20685714
+558.077922,309.375,22.308
+558.077922,323.4375,23.41942857
+558.077922,337.5,24.54057143
+558.077922,351.5625,25.67142858
+558.077922,365.625,26.812
+558.077922,379.6875,27.96228573
+558.077922,393.75,29.12285715
+558.077922,407.8125,30.29257143
+558.077922,421.875,31.47257143
+558.077922,435.9375,32.66228573
+558.077922,450,33.86171428
+930.1266235,-450,-39.17542858
+930.1266235,-435.9375,-38.08114285
+930.1266235,-421.875,-36.97771428
+930.1266235,-407.8125,-35.864
+930.1266235,-393.75,-34.74057143
+930.1266235,-379.6875,-33.608
+930.1266235,-365.625,-32.46571428
+930.1266235,-351.5625,-31.31371428
+930.1266235,-337.5,-30.152
+930.1266235,-323.4375,-28.98114285
+930.1266235,-309.375,-27.8
+930.1266235,-295.3125,-26.60971428
+930.1266235,-281.25,-25.40971428
+930.1266235,-267.1875,-24.2
+930.1266235,-253.125,-22.98114286
+930.1266235,-239.0625,-21.752
+930.1266235,-225,-20.51371429
+930.1266235,-210.9375,-19.26571429
+930.1266235,-196.875,-18.008
+930.1266235,-182.8125,-16.74114286
+930.1266235,-168.75,-15.464
+930.1266235,-154.6875,-14.17771429
+930.1266235,-140.625,-12.88171429
+930.1266235,-126.5625,-11.576
+930.1266235,-112.5,-10.26057143
+930.1266235,-98.4375,-8.936
+930.1266235,-84.375,-7.601142858
+930.1266235,-70.3125,-6.257142858
+930.1266235,-56.25,-4.903542858
+930.1266235,-42.1875,-3.540228573
+930.1266235,-28.125,-2.167314285
+930.1266235,-14.0625,-0.7848
+930.1266235,0,0.637714285
+930.1266235,14.0625,2.111085715
+930.1266235,28.125,3.594285715
+930.1266235,42.1875,5.087257143
+930.1266235,56.25,6.590285715
+930.1266235,70.3125,8.102857143
+930.1266235,84.375,9.625142858
+930.1266235,98.4375,11.15714286
+930.1266235,112.5,12.69885714
+930.1266235,126.5625,14.25085714
+930.1266235,140.625,15.81257143
+930.1266235,154.6875,17.384
+930.1266235,168.75,18.96514286
+930.1266235,182.8125,20.556
+930.1266235,196.875,22.15657143
+930.1266235,210.9375,23.76742857
+930.1266235,225,25.388
+930.1266235,239.0625,27.01771428
+930.1266235,253.125,28.65771428
+930.1266235,267.1875,30.30742858
+930.1266235,281.25,31.96742858
+930.1266235,295.3125,33.63657143
+930.1266235,309.375,35.316
+930.1266235,323.4375,37.00457143
+930.1266235,337.5,38.70342858
+930.1266235,351.5625,40.412
+930.1266235,365.625,42.13028573
+930.1266235,379.6875,43.85885715
+930.1266235,393.75,45.59657143
+930.1266235,407.8125,47.34457143
+930.1266235,421.875,49.10228573
+930.1266235,435.9375,50.86971428
+930.1266235,450,52.64685715
+1162.694805,-450,-50.28685715
+1162.694805,-435.9375,-48.83828573
+1162.694805,-421.875,-47.38057143
+1162.694805,-407.8125,-45.91314285
+1162.694805,-393.75,-44.436
+1162.694805,-379.6875,-42.94914285
+1162.694805,-365.625,-41.45314285
+1162.694805,-351.5625,-39.94742858
+1162.694805,-337.5,-38.43142858
+1162.694805,-323.4375,-36.90628573
+1162.694805,-309.375,-35.372
+1162.694805,-295.3125,-33.82742858
+1162.694805,-281.25,-32.27371428
+1162.694805,-267.1875,-30.71028573
+1162.694805,-253.125,-29.13714285
+1162.694805,-239.0625,-27.55428573
+1162.694805,-225,-25.96171428
+1162.694805,-210.9375,-24.36
+1162.694805,-196.875,-22.74857143
+1162.694805,-182.8125,-21.12742857
+1162.694805,-168.75,-19.49657143
+1162.694805,-154.6875,-17.856
+1162.694805,-140.625,-16.20628572
+1162.694805,-126.5625,-14.54628572
+1162.694805,-112.5,-12.87714286
+1162.694805,-98.4375,-11.19828572
+1162.694805,-84.375,-9.510285715
+1162.694805,-70.3125,-7.812
+1162.694805,-56.25,-6.104571428
+1162.694805,-42.1875,-4.387314285
+1162.694805,-28.125,-2.660457143
+1162.694805,-14.0625,-0.924057143
+1162.694805,0,0.858342858
+1162.694805,14.0625,2.6928
+1162.694805,28.125,4.537028573
+1162.694805,42.1875,6.390857143
+1162.694805,56.25,8.254857143
+1162.694805,70.3125,10.12857143
+1162.694805,84.375,12.012
+1162.694805,98.4375,13.90514286
+1162.694805,112.5,15.80857143
+1162.694805,126.5625,17.72114286
+1162.694805,140.625,19.644
+1162.694805,154.6875,21.576
+1162.694805,168.75,23.51828572
+1162.694805,182.8125,25.47085715
+1162.694805,196.875,27.43257143
+1162.694805,210.9375,29.404
+1162.694805,225,31.38571428
+1162.694805,239.0625,33.37657143
+1162.694805,253.125,35.37771428
+1162.694805,267.1875,37.38857143
+1162.694805,281.25,39.40914285
+1162.694805,295.3125,41.44
+1162.694805,309.375,43.48
+1162.694805,323.4375,45.53028573
+1162.694805,337.5,47.58971428
+1162.694805,351.5625,49.65942858
+1162.694805,365.625,51.73885715
+1162.694805,379.6875,53.82857143
+1162.694805,393.75,55.92742858
+1162.694805,407.8125,58.03428573
+1162.694805,421.875,60.15428573
+1162.694805,435.9375,62.28571428
+1162.694805,450,64.42285715
+1395.194805,-450,-61.37142858
+1395.194805,-435.9375,-59.57142858
+1395.194805,-421.875,-57.76
+1395.194805,-407.8125,-55.936
+1395.194805,-393.75,-54.10514285
+1395.194805,-379.6875,-52.26457143
+1395.194805,-365.625,-50.41428573
+1395.194805,-351.5625,-48.55428573
+1395.194805,-337.5,-46.68514285
+1395.194805,-323.4375,-44.80628573
+1395.194805,-309.375,-42.91771428
+1395.194805,-295.3125,-41.01942858
+1395.194805,-281.25,-39.11142858
+1395.194805,-267.1875,-37.19371428
+1395.194805,-253.125,-35.26685715
+1395.194805,-239.0625,-33.33028573
+1395.194805,-225,-31.384
+1395.194805,-210.9375,-29.428
+1395.194805,-196.875,-27.46285715
+1395.194805,-182.8125,-25.48742858
+1395.194805,-168.75,-23.50285714
+1395.194805,-154.6875,-21.50857143
+1395.194805,-140.625,-19.50457143
+1395.194805,-126.5625,-17.49142857
+1395.194805,-112.5,-15.468
+1395.194805,-98.4375,-13.43542857
+1395.194805,-84.375,-11.39314286
+1395.194805,-70.3125,-9.341142858
+1395.194805,-56.25,-7.279428573
+1395.194805,-42.1875,-5.2084
+1395.194805,-28.125,-3.127657143
+1395.194805,-14.0625,-1.037257143
+1395.194805,0,1.105485715
+1395.194805,14.0625,3.301028573
+1395.194805,28.125,5.506342858
+1395.194805,42.1875,7.721714285
+1395.194805,56.25,9.946285715
+1395.194805,70.3125,12.18114286
+1395.194805,84.375,14.42571429
+1395.194805,98.4375,16.68
+1395.194805,112.5,18.944
+1395.194805,126.5625,21.21771429
+1395.194805,140.625,23.50171429
+1395.194805,154.6875,25.79542858
+1395.194805,168.75,28.09885715
+1395.194805,182.8125,30.41142858
+1395.194805,196.875,32.73485715
+1395.194805,210.9375,35.06742858
+1395.194805,225,37.40971428
+1395.194805,239.0625,39.76228573
+1395.194805,253.125,42.12457143
+1395.194805,267.1875,44.496
+1395.194805,281.25,46.87828573
+1395.194805,295.3125,49.26971428
+1395.194805,309.375,51.67085715
+1395.194805,323.4375,54.08228573
+1395.194805,337.5,56.50285715
+1395.194805,351.5625,58.93142858
+1395.194805,365.625,61.37142858
+1395.194805,379.6875,63.82285715
+1395.194805,393.75,66.28571428
+1395.194805,407.8125,68.75428573
+1395.194805,421.875,71.23428573
+1395.194805,435.9375,73.72571428
+1395.194805,450,76.22285715
+1627.694805,-450,-72.42857143
+1627.694805,-435.9375,-70.27428573
+1627.694805,-421.875,-68.10857143
+1627.694805,-407.8125,-65.93142858
+1627.694805,-393.75,-63.74857143
+1627.694805,-379.6875,-61.55428573
+1627.694805,-365.625,-59.34857143
+1627.694805,-351.5625,-57.136
+1627.694805,-337.5,-54.91257143
+1627.694805,-323.4375,-52.67942858
+1627.694805,-309.375,-50.43714285
+1627.694805,-295.3125,-48.18514285
+1627.694805,-281.25,-45.92342858
+1627.694805,-267.1875,-43.652
+1627.694805,-253.125,-41.37085715
+1627.694805,-239.0625,-39.08057143
+1627.694805,-225,-36.78
+1627.694805,-210.9375,-34.47028573
+1627.694805,-196.875,-32.15085715
+1627.694805,-182.8125,-29.82171428
+1627.694805,-168.75,-27.48342858
+1627.694805,-154.6875,-25.13485715
+1627.694805,-140.625,-22.77714286
+1627.694805,-126.5625,-20.40971429
+1627.694805,-112.5,-18.03257143
+1627.694805,-98.4375,-15.64628572
+1627.694805,-84.375,-13.24971429
+1627.694805,-70.3125,-10.844
+1627.694805,-56.25,-8.428571428
+1627.694805,-42.1875,-6.003428573
+1627.694805,-28.125,-3.568742858
+1627.694805,-14.0625,-1.124457143
+1627.694805,0,1.3792
+1627.694805,14.0625,3.935771428
+1627.694805,28.125,6.502285715
+1627.694805,42.1875,9.078285715
+1627.694805,56.25,11.66457143
+1627.694805,70.3125,14.26
+1627.694805,84.375,16.86571429
+1627.694805,98.4375,19.48114286
+1627.694805,112.5,22.10628572
+1627.694805,126.5625,24.74114286
+1627.694805,140.625,27.38628573
+1627.694805,154.6875,30.04057143
+1627.694805,168.75,32.70514285
+1627.694805,182.8125,35.37942858
+1627.694805,196.875,38.06342858
+1627.694805,210.9375,40.75714285
+1627.694805,225,43.46057143
+1627.694805,239.0625,46.17428573
+1627.694805,253.125,48.89714285
+1627.694805,267.1875,51.63028573
+1627.694805,281.25,54.37314285
+1627.694805,295.3125,57.12571428
+1627.694805,309.375,59.88571428
+1627.694805,323.4375,62.66285715
+1627.694805,337.5,65.44
+1627.694805,351.5625,68.23428573
+1627.694805,365.625,71.03428573
+1627.694805,379.6875,73.84571428
+1627.694805,393.75,76.66857143
+1627.694805,407.8125,79.49714285
+1627.694805,421.875,82.34285715
+1627.694805,435.9375,85.18857143
+1627.694805,450,88.05142858
+1860.292208,-450,-83.46285715
+1860.292208,-435.9375,-80.95428573
+1860.292208,-421.875,-78.43428573
+1860.292208,-407.8125,-75.90285715
+1860.292208,-393.75,-73.36571428
+1860.292208,-379.6875,-70.81714285
+1860.292208,-365.625,-68.25714285
+1860.292208,-351.5625,-65.69142858
+1860.292208,-337.5,-63.11428573
+1860.292208,-323.4375,-60.52571428
+1860.292208,-309.375,-57.93142858
+1860.292208,-295.3125,-55.32457143
+1860.292208,-281.25,-52.70914285
+1860.292208,-267.1875,-50.08342858
+1860.292208,-253.125,-47.44857143
+1860.292208,-239.0625,-44.804
+1860.292208,-225,-42.15028573
+1860.292208,-210.9375,-39.48628573
+1860.292208,-196.875,-36.81314285
+1860.292208,-182.8125,-34.13028573
+1860.292208,-168.75,-31.43771428
+1860.292208,-154.6875,-28.73542858
+1860.292208,-140.625,-26.024
+1860.292208,-126.5625,-23.30228572
+1860.292208,-112.5,-20.57142857
+1860.292208,-98.4375,-17.83085714
+1860.292208,-84.375,-15.08057143
+1860.292208,-70.3125,-12.32114286
+1860.292208,-56.25,-9.551428573
+1860.292208,-42.1875,-6.772571428
+1860.292208,-28.125,-3.983885715
+1860.292208,-14.0625,-1.185657143
+1860.292208,0,1.679428573
+1860.292208,14.0625,4.597085715
+1860.292208,28.125,7.524571428
+1860.292208,42.1875,10.46171429
+1860.292208,56.25,13.40914286
+1860.292208,70.3125,16.36571429
+1860.292208,84.375,19.33257143
+1860.292208,98.4375,22.30914286
+1860.292208,112.5,25.29542858
+1860.292208,126.5625,28.29142858
+1860.292208,140.625,31.29714285
+1860.292208,154.6875,34.31257143
+1860.292208,168.75,37.33828573
+1860.292208,182.8125,40.37371428
+1860.292208,196.875,43.41885715
+1860.292208,210.9375,46.47371428
+1860.292208,225,49.53828573
+1860.292208,239.0625,52.61257143
+1860.292208,253.125,55.69714285
+1860.292208,267.1875,58.78857143
+1860.292208,281.25,61.89714285
+1860.292208,295.3125,65.01142858
+1860.292208,309.375,68.13142858
+1860.292208,323.4375,71.26285715
+1860.292208,337.5,74.40571428
+1860.292208,351.5625,77.56
+1860.292208,365.625,80.72571428
+1860.292208,379.6875,83.89714285
+1860.292208,393.75,87.08
+1860.292208,407.8125,90.26857143
+1860.292208,421.875,93.47428573
+1860.292208,435.9375,96.68571428
+1860.292208,450,99.90857143
+2092.792208,-450,-94.46857143
+2092.792208,-435.9375,-91.60571428
+2092.792208,-421.875,-88.73142858
+2092.792208,-407.8125,-85.85142858
+2092.792208,-393.75,-82.95428573
+2092.792208,-379.6875,-80.05714285
+2092.792208,-365.625,-77.14285715
+2092.792208,-351.5625,-74.22285715
+2092.792208,-337.5,-71.29142858
+2092.792208,-323.4375,-68.34857143
+2092.792208,-309.375,-65.4
+2092.792208,-295.3125,-62.44
+2092.792208,-281.25,-59.46857143
+2092.792208,-267.1875,-56.48971428
+2092.792208,-253.125,-53.50057143
+2092.792208,-239.0625,-50.50228573
+2092.792208,-225,-47.49428573
+2092.792208,-210.9375,-44.47657143
+2092.792208,-196.875,-41.44914285
+2092.792208,-182.8125,-38.41257143
+2092.792208,-168.75,-35.36628573
+2092.792208,-154.6875,-32.30971428
+2092.792208,-140.625,-29.244
+2092.792208,-126.5625,-26.16914285
+2092.792208,-112.5,-23.084
+2092.792208,-98.4375,-19.98971429
+2092.792208,-84.375,-16.88571429
+2092.792208,-70.3125,-13.772
+2092.792208,-56.25,-10.64857143
+2092.792208,-42.1875,-7.515428573
+2092.792208,-28.125,-4.373028573
+2092.792208,-14.0625,-1.220857143
+2092.792208,0,2.006171428
+2092.792208,14.0625,5.284914285
+2092.792208,28.125,8.573714285
+2092.792208,42.1875,11.872
+2092.792208,56.25,15.18
+2092.792208,70.3125,18.49771429
+2092.792208,84.375,21.82571429
+2092.792208,98.4375,25.16342858
+2092.792208,112.5,28.51028573
+2092.792208,126.5625,31.86742858
+2092.792208,140.625,35.23485715
+2092.792208,154.6875,38.61142858
+2092.792208,168.75,41.99771428
+2092.792208,182.8125,45.39428573
+2092.792208,196.875,48.80057143
+2092.792208,210.9375,52.21657143
+2092.792208,225,55.64228573
+2092.792208,239.0625,59.08
+2092.792208,253.125,62.52571428
+2092.792208,267.1875,65.97714285
+2092.792208,281.25,69.44571428
+2092.792208,295.3125,72.92
+2092.792208,309.375,76.4
+2092.792208,323.4375,79.89714285
+2092.792208,337.5,83.4
+2092.792208,351.5625,86.91428573
+2092.792208,365.625,90.44
+2092.792208,379.6875,93.97142858
+2092.792208,393.75,97.51428573
+2092.792208,407.8125,101.0685714
+2092.792208,421.875,104.6342857
+2092.792208,435.9375,108.2057143
+2092.792208,450,111.7885714
+2325.292208,-450,-105.4514286
+2325.292208,-435.9375,-102.2342857
+2325.292208,-421.875,-99.00571428
+2325.292208,-407.8125,-95.76571428
+2325.292208,-393.75,-92.52
+2325.292208,-379.6875,-89.26285715
+2325.292208,-365.625,-86
+2325.292208,-351.5625,-82.72571428
+2325.292208,-337.5,-79.44
+2325.292208,-323.4375,-76.14285715
+2325.292208,-309.375,-72.84
+2325.292208,-295.3125,-69.52571428
+2325.292208,-281.25,-66.2
+2325.292208,-267.1875,-62.86857143
+2325.292208,-253.125,-59.52571428
+2325.292208,-239.0625,-56.17428573
+2325.292208,-225,-52.812
+2325.292208,-210.9375,-49.44057143
+2325.292208,-196.875,-46.05942858
+2325.292208,-182.8125,-42.66857143
+2325.292208,-168.75,-39.26857143
+2325.292208,-154.6875,-35.85828573
+2325.292208,-140.625,-32.43885715
+2325.292208,-126.5625,-29.00971428
+2325.292208,-112.5,-25.57085715
+2325.292208,-98.4375,-22.12228572
+2325.292208,-84.375,-18.664
+2325.292208,-70.3125,-15.19657143
+2325.292208,-56.25,-11.71942857
+2325.292208,-42.1875,-8.232571428
+2325.292208,-28.125,-4.736114285
+2325.292208,-14.0625,-1.230057143
+2325.292208,0,2.359485715
+2325.292208,14.0625,5.999428573
+2325.292208,28.125,9.649142858
+2325.292208,42.1875,13.30857143
+2325.292208,56.25,16.97771429
+2325.292208,70.3125,20.65657143
+2325.292208,84.375,24.34514286
+2325.292208,98.4375,28.044
+2325.292208,112.5,31.75257143
+2325.292208,126.5625,35.47085715
+2325.292208,140.625,39.19885715
+2325.292208,154.6875,42.93657143
+2325.292208,168.75,46.684
+2325.292208,182.8125,50.44171428
+2325.292208,196.875,54.20857143
+2325.292208,210.9375,57.98857143
+2325.292208,225,61.77142858
+2325.292208,239.0625,65.57142858
+2325.292208,253.125,69.37714285
+2325.292208,267.1875,73.19428573
+2325.292208,281.25,77.01714285
+2325.292208,295.3125,80.85142858
+2325.292208,309.375,84.69714285
+2325.292208,323.4375,88.55428573
+2325.292208,337.5,92.42285715
+2325.292208,351.5625,96.29714285
+2325.292208,365.625,100.1771429
+2325.292208,379.6875,104.0742857
+2325.292208,393.75,107.9771429
+2325.292208,407.8125,111.8914286
+2325.292208,421.875,115.8171429
+2325.292208,435.9375,119.7485714
+2325.292208,450,123.6971429
+2557.88961,-450,-116.4057143
+2557.88961,-435.9375,-112.8342857
+2557.88961,-421.875,-109.2514286
+2557.88961,-407.8125,-105.6628572
+2557.88961,-393.75,-102.0628572
+2557.88961,-379.6875,-98.45142858
+2557.88961,-365.625,-94.82857143
+2557.88961,-351.5625,-91.2
+2557.88961,-337.5,-87.56
+2557.88961,-323.4375,-83.91428573
+2557.88961,-309.375,-80.25714285
+2557.88961,-295.3125,-76.58857143
+2557.88961,-281.25,-72.90857143
+2557.88961,-267.1875,-69.22285715
+2557.88961,-253.125,-65.52571428
+2557.88961,-239.0625,-61.82285715
+2557.88961,-225,-58.10285715
+2557.88961,-210.9375,-54.37885715
+2557.88961,-196.875,-50.64342858
+2557.88961,-182.8125,-46.89885715
+2557.88961,-168.75,-43.14457143
+2557.88961,-154.6875,-39.38057143
+2557.88961,-140.625,-35.60742858
+2557.88961,-126.5625,-31.824
+2557.88961,-112.5,-28.03142858
+2557.88961,-98.4375,-24.22914286
+2557.88961,-84.375,-20.41714286
+2557.88961,-70.3125,-16.59542857
+2557.88961,-56.25,-12.76457143
+2557.88961,-42.1875,-8.923428573
+2557.88961,-28.125,-5.0732
+2557.88961,-14.0625,-1.2132
+2557.88961,0,2.739314285
+2557.88961,14.0625,6.74
+2557.88961,28.125,10.75085714
+2557.88961,42.1875,14.77142857
+2557.88961,56.25,18.80171429
+2557.88961,70.3125,22.84171429
+2557.88961,84.375,26.89142858
+2557.88961,98.4375,30.95142858
+2557.88961,112.5,35.02114285
+2557.88961,126.5625,39.1
+2557.88961,140.625,43.18914285
+2557.88961,154.6875,47.288
+2557.88961,168.75,51.39714285
+2557.88961,182.8125,55.51542858
+2557.88961,196.875,59.64571428
+2557.88961,210.9375,63.78285715
+2557.88961,225,67.93142858
+2557.88961,239.0625,72.08571428
+2557.88961,253.125,76.25714285
+2557.88961,267.1875,80.43428573
+2557.88961,281.25,84.61714285
+2557.88961,295.3125,88.81714285
+2557.88961,309.375,93.02285715
+2557.88961,323.4375,97.24
+2557.88961,337.5,101.4685714
+2557.88961,351.5625,105.7028572
+2557.88961,365.625,109.9485714
+2557.88961,379.6875,114.2057143
+2557.88961,393.75,118.4685714
+2557.88961,407.8125,122.7428572
+2557.88961,421.875,127.0285714
+2557.88961,435.9375,131.3257143
+2557.88961,450,135.6285714
+2790.38961,-450,-127.3371429
+2790.38961,-435.9375,-123.4114286
+2790.38961,-421.875,-119.4742857
+2790.38961,-407.8125,-115.5314286
+2790.38961,-393.75,-111.5714286
+2790.38961,-379.6875,-107.6114286
+2790.38961,-365.625,-103.6342857
+2790.38961,-351.5625,-99.65142858
+2790.38961,-337.5,-95.65714285
+2790.38961,-323.4375,-91.65714285
+2790.38961,-309.375,-87.64571428
+2790.38961,-295.3125,-83.62285715
+2790.38961,-281.25,-79.59428573
+2790.38961,-267.1875,-75.54857143
+2790.38961,-253.125,-71.50285715
+2790.38961,-239.0625,-67.44
+2790.38961,-225,-63.37142858
+2790.38961,-210.9375,-59.29142858
+2790.38961,-196.875,-55.20171428
+2790.38961,-182.8125,-51.10342858
+2790.38961,-168.75,-46.99485715
+2790.38961,-154.6875,-42.87714285
+2790.38961,-140.625,-38.74971428
+2790.38961,-126.5625,-34.61257143
+2790.38961,-112.5,-30.46571428
+2790.38961,-98.4375,-26.30971428
+2790.38961,-84.375,-22.144
+2790.38961,-70.3125,-17.96857143
+2790.38961,-56.25,-13.78342857
+2790.38961,-42.1875,-9.588571428
+2790.38961,-28.125,-5.384285715
+2790.38961,-14.0625,-1.170342858
+2790.38961,0,3.145714285
+2790.38961,14.0625,7.507428573
+2790.38961,28.125,11.87942857
+2790.38961,42.1875,16.26114286
+2790.38961,56.25,20.65257143
+2790.38961,70.3125,25.05371428
+2790.38961,84.375,29.46457143
+2790.38961,98.4375,33.88514285
+2790.38961,112.5,38.316
+2790.38961,126.5625,42.756
+2790.38961,140.625,47.20628573
+2790.38961,154.6875,51.66628573
+2790.38961,168.75,56.136
+2790.38961,182.8125,60.61714285
+2790.38961,196.875,65.10285715
+2790.38961,210.9375,69.60571428
+2790.38961,225,74.11428573
+2790.38961,239.0625,78.63428573
+2790.38961,253.125,83.16
+2790.38961,267.1875,87.69714285
+2790.38961,281.25,92.24571428
+2790.38961,295.3125,96.80571428
+2790.38961,309.375,101.3714286
+2790.38961,323.4375,105.9485714
+2790.38961,337.5,110.5371429
+2790.38961,351.5625,115.1371429
+2790.38961,365.625,119.7428572
+2790.38961,379.6875,124.36
+2790.38961,393.75,128.9828572
+2790.38961,407.8125,133.6228572
+2790.38961,421.875,138.2685714
+2790.38961,435.9375,142.9257143
+2790.38961,450,147.5885714
+3022.88961,-450,-138.24
+3022.88961,-435.9375,-133.96
+3022.88961,-421.875,-129.6685714
+3022.88961,-407.8125,-125.3714286
+3022.88961,-393.75,-121.0628572
+3022.88961,-379.6875,-116.7428572
+3022.88961,-365.625,-112.4171429
+3022.88961,-351.5625,-108.08
+3022.88961,-337.5,-103.7314286
+3022.88961,-323.4375,-99.37714285
+3022.88961,-309.375,-95.01142858
+3022.88961,-295.3125,-90.63428573
+3022.88961,-281.25,-86.24571428
+3022.88961,-267.1875,-81.85142858
+3022.88961,-253.125,-77.44571428
+3022.88961,-239.0625,-73.03428573
+3022.88961,-225,-68.61142858
+3022.88961,-210.9375,-64.17714285
+3022.88961,-196.875,-59.73142858
+3022.88961,-182.8125,-55.28171428
+3022.88961,-168.75,-50.81942858
+3022.88961,-154.6875,-46.34742858
+3022.88961,-140.625,-41.86628573
+3022.88961,-126.5625,-37.37542858
+3022.88961,-112.5,-32.87485715
+3022.88961,-98.4375,-28.36457143
+3022.88961,-84.375,-23.84457143
+3022.88961,-70.3125,-19.31542857
+3022.88961,-56.25,-14.776
+3022.88961,-42.1875,-10.22742857
+3022.88961,-28.125,-5.669314285
+3022.88961,-14.0625,-1.101485715
+3022.88961,0,3.578628573
+3022.88961,14.0625,8.301714285
+3022.88961,28.125,13.03428572
+3022.88961,42.1875,17.77714286
+3022.88961,56.25,22.52971429
+3022.88961,70.3125,27.292
+3022.88961,84.375,32.064
+3022.88961,98.4375,36.84571428
+3022.88961,112.5,41.63714285
+3022.88961,126.5625,46.43885715
+3022.88961,140.625,51.25028573
+3022.88961,154.6875,56.07142858
+3022.88961,168.75,60.90285715
+3022.88961,182.8125,65.74285715
+3022.88961,196.875,70.59428573
+3022.88961,210.9375,75.45142858
+3022.88961,225,80.32571428
+3022.88961,239.0625,85.20571428
+3022.88961,253.125,90.09142858
+3022.88961,267.1875,94.99428573
+3022.88961,281.25,99.90285715
+3022.88961,295.3125,104.8228572
+3022.88961,309.375,109.7485714
+3022.88961,323.4375,114.6857143
+3022.88961,337.5,119.6342857
+3022.88961,351.5625,124.5942857
+3022.88961,365.625,129.5657143
+3022.88961,379.6875,134.5428572
+3022.88961,393.75,139.5257143
+3022.88961,407.8125,144.5257143
+3022.88961,421.875,149.5314286
+3022.88961,435.9375,154.5485714
+3022.88961,450,159.5771429
+3255.487013,-450,-149.1142857
+3255.487013,-435.9375,-144.48
+3255.487013,-421.875,-139.84
+3255.487013,-407.8125,-135.1828572
+3255.487013,-393.75,-130.52
+3255.487013,-379.6875,-125.8514286
+3255.487013,-365.625,-121.1714286
+3255.487013,-351.5625,-116.48
+3255.487013,-337.5,-111.7771429
+3255.487013,-323.4375,-107.0685714
+3255.487013,-309.375,-102.3485714
+3255.487013,-295.3125,-97.61714285
+3255.487013,-281.25,-92.88
+3255.487013,-267.1875,-88.12571428
+3255.487013,-253.125,-83.37142858
+3255.487013,-239.0625,-78.6
+3255.487013,-225,-73.82285715
+3255.487013,-210.9375,-69.03428573
+3255.487013,-196.875,-64.24
+3255.487013,-182.8125,-59.43428573
+3255.487013,-168.75,-54.61771428
+3255.487013,-154.6875,-49.792
+3255.487013,-140.625,-44.95657143
+3255.487013,-126.5625,-40.11142858
+3255.487013,-112.5,-35.25714285
+3255.487013,-98.4375,-30.39314285
+3255.487013,-84.375,-25.51942858
+3255.487013,-70.3125,-20.636
+3255.487013,-56.25,-15.74285714
+3255.487013,-42.1875,-10.84057143
+3255.487013,-28.125,-5.928571428
+3255.487013,-14.0625,-1.006628573
+3255.487013,0,4.038114285
+3255.487013,14.0625,9.122285715
+3255.487013,28.125,14.216
+3255.487013,42.1875,19.32
+3255.487013,56.25,24.43314286
+3255.487013,70.3125,29.55657143
+3255.487013,84.375,34.68971428
+3255.487013,98.4375,39.83257143
+3255.487013,112.5,44.98571428
+3255.487013,126.5625,50.148
+3255.487013,140.625,55.32057143
+3255.487013,154.6875,60.50285715
+3255.487013,168.75,65.69714285
+3255.487013,182.8125,70.89714285
+3255.487013,196.875,76.10857143
+3255.487013,210.9375,81.33142858
+3255.487013,225,86.56
+3255.487013,239.0625,91.8
+3255.487013,253.125,97.05142858
+3255.487013,267.1875,102.3142857
+3255.487013,281.25,107.5828572
+3255.487013,295.3125,112.8628572
+3255.487013,309.375,118.1542857
+3255.487013,323.4375,123.4514286
+3255.487013,337.5,128.76
+3255.487013,351.5625,134.08
+3255.487013,365.625,139.4114286
+3255.487013,379.6875,144.7485714
+3255.487013,393.75,150.0971429
+3255.487013,407.8125,155.4571429
+3255.487013,421.875,160.8228572
+3255.487013,435.9375,166.2057143
+3255.487013,450,171.5885714
+3487.987013,-450,-159.9657143
+3487.987013,-435.9375,-154.9771429
+3487.987013,-421.875,-149.9828572
+3487.987013,-407.8125,-144.9714286
+3487.987013,-393.75,-139.96
+3487.987013,-379.6875,-134.9314286
+3487.987013,-365.625,-129.8971429
+3487.987013,-351.5625,-124.8514286
+3487.987013,-337.5,-119.7942857
+3487.987013,-323.4375,-114.7314286
+3487.987013,-309.375,-109.6571429
+3487.987013,-295.3125,-104.5714286
+3487.987013,-281.25,-99.48
+3487.987013,-267.1875,-94.37714285
+3487.987013,-253.125,-89.26857143
+3487.987013,-239.0625,-84.14285715
+3487.987013,-225,-79.01142858
+3487.987013,-210.9375,-73.86857143
+3487.987013,-196.875,-68.72
+3487.987013,-182.8125,-63.56
+3487.987013,-168.75,-58.38857143
+3487.987013,-154.6875,-53.21028573
+3487.987013,-140.625,-48.02114285
+3487.987013,-126.5625,-42.82228573
+3487.987013,-112.5,-37.61371428
+3487.987013,-98.4375,-32.396
+3487.987013,-84.375,-27.168
+3487.987013,-70.3125,-21.93085714
+3487.987013,-56.25,-16.684
+3487.987013,-42.1875,-11.42742857
+3487.987013,-28.125,-6.161142858
+3487.987013,-14.0625,-0.885714285
+3487.987013,0,4.524114285
+3487.987013,14.0625,9.969142858
+3487.987013,28.125,15.42457143
+3487.987013,42.1875,20.88914286
+3487.987013,56.25,26.36342858
+3487.987013,70.3125,31.848
+3487.987013,84.375,37.34228573
+3487.987013,98.4375,42.84628573
+3487.987013,112.5,48.36
+3487.987013,126.5625,53.88342858
+3487.987013,140.625,59.41714285
+3487.987013,154.6875,64.96
+3487.987013,168.75,70.51428573
+3487.987013,182.8125,76.07428573
+3487.987013,196.875,81.65142858
+3487.987013,210.9375,87.22857143
+3487.987013,225,92.82285715
+3487.987013,239.0625,98.42285715
+3487.987013,253.125,104.0342857
+3487.987013,267.1875,109.6571429
+3487.987013,281.25,115.2914286
+3487.987013,295.3125,120.9314286
+3487.987013,309.375,126.5828572
+3487.987013,323.4375,132.2457143
+3487.987013,337.5,137.9142857
+3487.987013,351.5625,143.5942857
+3487.987013,365.625,149.2857143
+3487.987013,379.6875,154.9828572
+3487.987013,393.75,160.6914286
+3487.987013,407.8125,166.4114286
+3487.987013,421.875,172.1428572
+3487.987013,435.9375,177.88
+3487.987013,450,183.6285714
+3720.487013,-450,-170.7885714
+3720.487013,-435.9375,-165.4457143
+3720.487013,-421.875,-160.0971429
+3720.487013,-407.8125,-154.7371429
+3720.487013,-393.75,-149.3657143
+3720.487013,-379.6875,-143.9885714
+3720.487013,-365.625,-138.5942857
+3720.487013,-351.5625,-133.2
+3720.487013,-337.5,-127.7885714
+3720.487013,-323.4375,-122.3714286
+3720.487013,-309.375,-116.9428572
+3720.487013,-295.3125,-111.5085714
+3720.487013,-281.25,-106.0571429
+3720.487013,-267.1875,-100.6
+3720.487013,-253.125,-95.13714285
+3720.487013,-239.0625,-89.65714285
+3720.487013,-225,-84.17142858
+3720.487013,-210.9375,-78.68
+3720.487013,-196.875,-73.17714285
+3720.487013,-182.8125,-67.66285715
+3720.487013,-168.75,-62.13714285
+3720.487013,-154.6875,-56.60285715
+3720.487013,-140.625,-51.05942858
+3720.487013,-126.5625,-45.50685715
+3720.487013,-112.5,-39.94457143
+3720.487013,-98.4375,-34.37257143
+3720.487013,-84.375,-28.79085715
+3720.487013,-70.3125,-23.19942857
+3720.487013,-56.25,-17.59885714
+3720.487013,-42.1875,-11.98857143
+3720.487013,-28.125,-6.368571428
+3720.487013,-14.0625,-0.7388
+3720.487013,0,5.036628573
+3720.487013,14.0625,10.84285714
+3720.487013,28.125,16.65885714
+3720.487013,42.1875,22.48457143
+3720.487013,56.25,28.32057143
+3720.487013,70.3125,34.16571428
+3720.487013,84.375,40.02114285
+3720.487013,98.4375,45.88628573
+3720.487013,112.5,51.76114285
+3720.487013,126.5625,57.64571428
+3720.487013,140.625,63.54285715
+3720.487013,154.6875,69.44571428
+3720.487013,168.75,75.36
+3720.487013,182.8125,81.28
+3720.487013,196.875,87.21714285
+3720.487013,210.9375,93.16
+3720.487013,225,99.11428573
+3720.487013,239.0625,105.0742857
+3720.487013,253.125,111.0514286
+3720.487013,267.1875,117.0342857
+3720.487013,281.25,123.0228572
+3720.487013,295.3125,129.0285714
+3720.487013,309.375,135.04
+3720.487013,323.4375,141.0628572
+3720.487013,337.5,147.0914286
+3720.487013,351.5625,153.1314286
+3720.487013,365.625,159.1828572
+3720.487013,379.6875,165.2457143
+3720.487013,393.75,171.3142857
+3720.487013,407.8125,177.4
+3720.487013,421.875,183.4857143
+3720.487013,435.9375,189.5885714
+3720.487013,450,195.6971429
+3953.084415,-450,-181.5885714
+3953.084415,-435.9375,-175.8914286
+3953.084415,-421.875,-170.1885714
+3953.084415,-407.8125,-164.4742857
+3953.084415,-393.75,-158.7485714
+3953.084415,-379.6875,-153.0171429
+3953.084415,-365.625,-147.2742857
+3953.084415,-351.5625,-141.52
+3953.084415,-337.5,-135.7542857
+3953.084415,-323.4375,-129.9828572
+3953.084415,-309.375,-124.2
+3953.084415,-295.3125,-118.4114286
+3953.084415,-281.25,-112.6114286
+3953.084415,-267.1875,-106.8
+3953.084415,-253.125,-100.9771429
+3953.084415,-239.0625,-95.14857143
+3953.084415,-225,-89.30857143
+3953.084415,-210.9375,-83.46285715
+3953.084415,-196.875,-77.6
+3953.084415,-182.8125,-71.73142858
+3953.084415,-168.75,-65.85714285
+3953.084415,-154.6875,-59.97142858
+3953.084415,-140.625,-54.072
+3953.084415,-126.5625,-48.16514285
+3953.084415,-112.5,-42.24914285
+3953.084415,-98.4375,-36.32285715
+3953.084415,-84.375,-30.38742858
+3953.084415,-70.3125,-24.44228572
+3953.084415,-56.25,-18.48742857
+3953.084415,-42.1875,-12.52342857
+3953.084415,-28.125,-6.549714285
+3953.084415,-14.0625,-0.565897143
+3953.084415,0,5.575714285
+3953.084415,14.0625,11.74285714
+3953.084415,28.125,17.92
+3953.084415,42.1875,24.10742857
+3953.084415,56.25,30.304
+3953.084415,70.3125,36.51028573
+3953.084415,84.375,42.72685715
+3953.084415,98.4375,48.95314285
+3953.084415,112.5,55.18914285
+3953.084415,126.5625,61.43428573
+3953.084415,140.625,67.69142858
+3953.084415,154.6875,73.95428573
+3953.084415,168.75,80.22857143
+3953.084415,182.8125,86.51428573
+3953.084415,196.875,92.81142858
+3953.084415,210.9375,99.11428573
+3953.084415,225,105.4285714
+3953.084415,239.0625,111.7542857
+3953.084415,253.125,118.0857143
+3953.084415,267.1875,124.4285714
+3953.084415,281.25,130.7828572
+3953.084415,295.3125,137.1485714
+3953.084415,309.375,143.52
+3953.084415,323.4375,149.9028572
+3953.084415,337.5,156.2971429
+3953.084415,351.5625,162.6971429
+3953.084415,365.625,169.1142857
+3953.084415,379.6875,175.5314286
+3953.084415,393.75,181.9657143
+3953.084415,407.8125,188.4057143
+3953.084415,421.875,194.8571429
+3953.084415,435.9375,201.32
+3953.084415,450,207.7942857
+4185.584415,-450,-192.36
+4185.584415,-435.9375,-186.3142857
+4185.584415,-421.875,-180.2514286
+4185.584415,-407.8125,-174.1828572
+4185.584415,-393.75,-168.1085714
+4185.584415,-379.6875,-162.0171429
+4185.584415,-365.625,-155.92
+4185.584415,-351.5625,-149.8171429
+4185.584415,-337.5,-143.6971429
+4185.584415,-323.4375,-137.5714286
+4185.584415,-309.375,-131.4342857
+4185.584415,-295.3125,-125.2914286
+4185.584415,-281.25,-119.1371429
+4185.584415,-267.1875,-112.9714286
+4185.584415,-253.125,-106.8
+4185.584415,-239.0625,-100.6114286
+4185.584415,-225,-94.42285715
+4185.584415,-210.9375,-88.21714285
+4185.584415,-196.875,-82.00571428
+4185.584415,-182.8125,-75.78285715
+4185.584415,-168.75,-69.54857143
+4185.584415,-154.6875,-63.30857143
+4185.584415,-140.625,-57.05828573
+4185.584415,-126.5625,-50.79771428
+4185.584415,-112.5,-44.52742858
+4185.584415,-98.4375,-38.24742858
+4185.584415,-84.375,-31.95828573
+4185.584415,-70.3125,-25.65942858
+4185.584415,-56.25,-19.35028572
+4185.584415,-42.1875,-13.032
+4185.584415,-28.125,-6.704571428
+4185.584415,-14.0625,-0.366965715
+4185.584415,0,6.141142858
+4185.584415,14.0625,12.66971429
+4185.584415,28.125,19.208
+4185.584415,42.1875,25.756
+4185.584415,56.25,32.31371428
+4185.584415,70.3125,38.88171428
+4185.584415,84.375,45.45885715
+4185.584415,98.4375,52.04628573
+4185.584415,112.5,58.64571428
+4185.584415,126.5625,65.25142858
+4185.584415,140.625,71.86857143
+4185.584415,154.6875,78.49142858
+4185.584415,168.75,85.13142858
+4185.584415,182.8125,91.77714285
+4185.584415,196.875,98.42857143
+4185.584415,210.9375,105.0971429
+4185.584415,225,111.7714286
+4185.584415,239.0625,118.4571429
+4185.584415,253.125,125.1542857
+4185.584415,267.1875,131.8571429
+4185.584415,281.25,138.5714286
+4185.584415,295.3125,145.2971429
+4185.584415,309.375,152.0285714
+4185.584415,323.4375,158.7771429
+4185.584415,337.5,165.5257143
+4185.584415,351.5625,172.2914286
+4185.584415,365.625,179.0628572
+4185.584415,379.6875,185.8457143
+4185.584415,393.75,192.64
+4185.584415,407.8125,199.4457143
+4185.584415,421.875,206.2571429
+4185.584415,435.9375,213.08
+4185.584415,450,219.9142857
+4418.084415,-450,-203.1085714
+4418.084415,-435.9375,-196.7028572
+4418.084415,-421.875,-190.2914286
+4418.084415,-407.8125,-183.8685714
+4418.084415,-393.75,-177.44
+4418.084415,-379.6875,-170.9942857
+4418.084415,-365.625,-164.5428572
+4418.084415,-351.5625,-158.0857143
+4418.084415,-337.5,-151.6114286
+4418.084415,-323.4375,-145.1314286
+4418.084415,-309.375,-138.6457143
+4418.084415,-295.3125,-132.1428572
+4418.084415,-281.25,-125.6342857
+4418.084415,-267.1875,-119.1142857
+4418.084415,-253.125,-112.5885714
+4418.084415,-239.0625,-106.0514286
+4418.084415,-225,-99.50285715
+4418.084415,-210.9375,-92.94857143
+4418.084415,-196.875,-86.38285715
+4418.084415,-182.8125,-79.80571428
+4418.084415,-168.75,-73.21714285
+4418.084415,-154.6875,-66.62285715
+4418.084415,-140.625,-60.01714285
+4418.084415,-126.5625,-53.404
+4418.084415,-112.5,-46.78
+4418.084415,-98.4375,-40.14628573
+4418.084415,-84.375,-33.50285715
+4418.084415,-70.3125,-26.84971428
+4418.084415,-56.25,-20.18742857
+4418.084415,-42.1875,-13.51542857
+4418.084415,-28.125,-6.833142858
+4418.084415,-14.0625,-0.142028573
+4418.084415,0,6.733714285
+4418.084415,14.0625,13.62285714
+4418.084415,28.125,20.52228572
+4418.084415,42.1875,27.43142858
+4418.084415,56.25,34.35028573
+4418.084415,70.3125,41.27885715
+4418.084415,84.375,48.21771428
+4418.084415,98.4375,55.16571428
+4418.084415,112.5,62.12571428
+4418.084415,126.5625,69.09142858
+4418.084415,140.625,76.06857143
+4418.084415,154.6875,83.05714285
+4418.084415,168.75,90.05142858
+4418.084415,182.8125,97.06285715
+4418.084415,196.875,104.08
+4418.084415,210.9375,111.1028572
+4418.084415,225,118.1428572
+4418.084415,239.0625,125.1885714
+4418.084415,253.125,132.2457143
+4418.084415,267.1875,139.3085714
+4418.084415,281.25,146.3828572
+4418.084415,295.3125,153.4685714
+4418.084415,309.375,160.5657143
+4418.084415,323.4375,167.6685714
+4418.084415,337.5,174.7885714
+4418.084415,351.5625,181.9085714
+4418.084415,365.625,189.0457143
+4418.084415,379.6875,196.1885714
+4418.084415,393.75,203.3428572
+4418.084415,407.8125,210.5085714
+4418.084415,421.875,217.68
+4418.084415,435.9375,224.8628572
+4418.084415,450,232.0571429
+4650.584415,-450,-213.8285714
+4650.584415,-435.9375,-207.0742857
+4650.584415,-421.875,-200.3028572
+4650.584415,-407.8125,-193.5257143
+4650.584415,-393.75,-186.7428572
+4650.584415,-379.6875,-179.9485714
+4650.584415,-365.625,-173.1428572
+4650.584415,-351.5625,-166.3257143
+4650.584415,-337.5,-159.5028572
+4650.584415,-323.4375,-152.6685714
+4650.584415,-309.375,-145.8228572
+4650.584415,-295.3125,-138.9714286
+4650.584415,-281.25,-132.1085714
+4650.584415,-267.1875,-125.2342857
+4650.584415,-253.125,-118.3542857
+4650.584415,-239.0625,-111.4628572
+4650.584415,-225,-104.56
+4650.584415,-210.9375,-97.65142858
+4650.584415,-196.875,-90.73142858
+4650.584415,-182.8125,-83.8
+4650.584415,-168.75,-76.86285715
+4650.584415,-154.6875,-69.91428573
+4650.584415,-140.625,-62.95428573
+4650.584415,-126.5625,-55.98457143
+4650.584415,-112.5,-49.00628573
+4650.584415,-98.4375,-42.01885715
+4650.584415,-84.375,-35.02171428
+4650.584415,-70.3125,-28.01485715
+4650.584415,-56.25,-20.99828572
+4650.584415,-42.1875,-13.972
+4650.584415,-28.125,-6.936571428
+4650.584415,-14.0625,0.111422858
+4650.584415,0,7.352
+4650.584415,14.0625,14.60285714
+4650.584415,28.125,21.86285714
+4650.584415,42.1875,29.13314285
+4650.584415,56.25,36.41314285
+4650.584415,70.3125,43.70285715
+4650.584415,84.375,51.00285715
+4650.584415,98.4375,58.31428573
+4650.584415,112.5,65.62857143
+4650.584415,126.5625,72.96
+4650.584415,140.625,80.29714285
+4650.584415,154.6875,87.64571428
+4650.584415,168.75,95.00571428
+4650.584415,182.8125,102.3714286
+4650.584415,196.875,109.7542857
+4650.584415,210.9375,117.1371429
+4650.584415,225,124.5371429
+4650.584415,239.0625,131.9428572
+4650.584415,253.125,139.36
+4650.584415,267.1875,146.7885714
+4650.584415,281.25,154.2228572
+4650.584415,295.3125,161.6742857
+4650.584415,309.375,169.1257143
+4650.584415,323.4375,176.5942857
+4650.584415,337.5,184.0685714
+4650.584415,351.5625,191.5542857
+4650.584415,365.625,199.0514286
+4650.584415,379.6875,206.56
+4650.584415,393.75,214.0742857
+4650.584415,407.8125,221.6
+4650.584415,421.875,229.1314286
+4650.584415,435.9375,236.6742857
+4650.584415,450,244.2285714
+4864.577923,-450,-223.6685714
+4864.577923,-435.9375,-216.5885714
+4864.577923,-421.875,-209.4914286
+4864.577923,-407.8125,-202.3942857
+4864.577923,-393.75,-195.28
+4864.577923,-379.6875,-188.16
+4864.577923,-365.625,-181.0285714
+4864.577923,-351.5625,-173.8857143
+4864.577923,-337.5,-166.7371429
+4864.577923,-323.4375,-159.5771429
+4864.577923,-309.375,-152.4114286
+4864.577923,-295.3125,-145.2285714
+4864.577923,-281.25,-138.04
+4864.577923,-267.1875,-130.8457143
+4864.577923,-253.125,-123.6342857
+4864.577923,-239.0625,-116.4171429
+4864.577923,-225,-109.1942857
+4864.577923,-210.9375,-101.9542857
+4864.577923,-196.875,-94.70857143
+4864.577923,-182.8125,-87.45142858
+4864.577923,-168.75,-80.18857143
+4864.577923,-154.6875,-72.91428573
+4864.577923,-140.625,-65.62857143
+4864.577923,-126.5625,-58.33714285
+4864.577923,-112.5,-51.032
+4864.577923,-98.4375,-43.71885715
+4864.577923,-84.375,-36.396
+4864.577923,-70.3125,-29.06342858
+4864.577923,-56.25,-21.72114286
+4864.577923,-42.1875,-14.36971429
+4864.577923,-28.125,-7.008
+4864.577923,-14.0625,0.371868573
+4864.577923,0,7.944571428
+4864.577923,14.0625,15.52742857
+4864.577923,28.125,23.12
+4864.577923,42.1875,30.72228573
+4864.577923,56.25,38.33485715
+4864.577923,70.3125,45.95657143
+4864.577923,84.375,53.58857143
+4864.577923,98.4375,61.22857143
+4864.577923,112.5,68.88
+4864.577923,126.5625,76.54285715
+4864.577923,140.625,84.21142858
+4864.577923,154.6875,91.89142858
+4864.577923,168.75,99.58285715
+4864.577923,182.8125,107.2857143
+4864.577923,196.875,114.9942857
+4864.577923,210.9375,122.7142857
+4864.577923,225,130.4457143
+4864.577923,239.0625,138.1828572
+4864.577923,253.125,145.9314286
+4864.577923,267.1875,153.6914286
+4864.577923,281.25,161.4628572
+4864.577923,295.3125,169.24
+4864.577923,309.375,177.0285714
+4864.577923,323.4375,184.8285714
+4864.577923,337.5,192.6342857
+4864.577923,351.5625,200.4514286
+4864.577923,365.625,208.28
+4864.577923,379.6875,216.12
+4864.577923,393.75,223.9657143
+4864.577923,407.8125,231.8228572
+4864.577923,421.875,239.6914286
+4864.577923,435.9375,247.5657143
+4864.577923,450,255.4514285
diff --git a/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/GenericICE_220kW_7.7l.veng b/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/GenericICE_220kW_7.7l.veng
new file mode 100644
index 0000000000000000000000000000000000000000..cca85ad4876bc8468233a5ea42647d710327f230
--- /dev/null
+++ b/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/GenericICE_220kW_7.7l.veng	
@@ -0,0 +1,35 @@
+{
+  "Header": {
+    "CreatedBy": "",
+    "Date": "2021-01-18T16:15:30.8161241Z",
+    "AppVersion": "3",
+    "FileVersion": 5
+  },
+  "Body": {
+    "SavedInDeclMode": false,
+    "ModelName": "Generic 220kW 7.7l",
+    "Displacement": "7700",
+    "IdlingSpeed": 600.0,
+    "Inertia": 3.789,
+    "Fuels": [
+      {
+        "WHTC-Urban": 0.0,
+        "WHTC-Rural": 0.0,
+        "WHTC-Motorway": 0.0,
+        "WHTC-Engineering": 1.02,
+        "ColdHotBalancingFactor": 0.0,
+        "CFRegPer": 0.0,
+        "FuelMap": "Engine map_7.7l.vmap",
+        "FuelType": "DieselCI"
+      }
+    ],
+    "RatedPower": 220000.0,
+    "RatedSpeed": 2200.0,
+    "MaxTorque": 1295.0,
+    "FullLoadCurve": "Full-load curve 220kW.vfld",
+    "WHRType": [
+      "None"
+    ],
+    "WHRCorrectionFactors": {}
+  }
+}
\ No newline at end of file
diff --git a/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/HybridStrategyParams.vhctl b/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/HybridStrategyParams.vhctl
new file mode 100644
index 0000000000000000000000000000000000000000..7a28da155f1ad000e68fff3b98cc3c652d01a6c6
--- /dev/null
+++ b/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/HybridStrategyParams.vhctl	
@@ -0,0 +1,18 @@
+{
+  "Header": {
+    "CreatedBy": "",
+    "Date": "2020-08-04T07:11:24.0318977Z",
+    "AppVersion": "3",
+    "FileVersion": 1
+  },
+  "Body": {
+    "EquivalenceFactorDischarge": 2.5,
+    "EquivalenceFactorCharge": 1.5,
+    "MinSoC": 10.0,
+    "MaxSoC": 90.0,
+    "TargetSoC": 50.0,
+    "MinICEOnTime": 3,
+    "AuxBufferTime": 5,
+    "AuxBufferChgTime": 3
+  }
+}
\ No newline at end of file
diff --git a/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/MaxCurrent.vimax b/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/MaxCurrent.vimax
new file mode 100644
index 0000000000000000000000000000000000000000..d802d5d760daf410bca1fa2b9aa42c231188f3ad
--- /dev/null
+++ b/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/MaxCurrent.vimax	
@@ -0,0 +1,4 @@
+SOC, I_charge, I_discharge
+0, 375, 375
+50, 375, 375
+100, 375, 375
\ No newline at end of file
diff --git a/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/ShiftParameters.vtcu b/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/ShiftParameters.vtcu
new file mode 100644
index 0000000000000000000000000000000000000000..623d9125b82cd7ca4c1760b3938de57a76ae8ea1
--- /dev/null
+++ b/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/ShiftParameters.vtcu	
@@ -0,0 +1,13 @@
+ο»Ώ{
+  "Header": {
+    "CreatedBy": " ()",
+    "Date": "2016-10-13T15:52:04.0766564Z",
+    "AppVersion": "3",
+    "FileVersion": 1
+  },
+  "Body": {
+   
+    "GearRangeUp": 1,
+    "GearRangeDown":  1 
+  }
+}
\ No newline at end of file
diff --git a/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/TC Parallel.vtcc b/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/TC Parallel.vtcc
new file mode 100644
index 0000000000000000000000000000000000000000..4860d3fa3c67c70269e124cd0116d1bdb6973d49
--- /dev/null
+++ b/Generic Vehicles/Engineering Mode/Citybus_P1-APT-P-220kW-7.7l/TC Parallel.vtcc	
@@ -0,0 +1,13 @@
+Speed Ratio, Torque Ratio,MP1000
+0,5.434,436.7877021
+0.06993007,3.984933333,400.388727
+0.13986014,3.384710267,363.9897518
+0.20979021,2.92414291,327.5907766
+0.27972028,2.535866667,291.1918014
+0.34965035,2.193788429,254.7928262
+0.41958042,1.884526063,218.3938511
+0.48951049,1.600129967,167.4352858
+0.559440559,1.335420534,116.4767206
+0.629370629,1.0868,65.51815532
+0.699300699,0.9295,0
+3.496503497,1.287,-1747.150809
diff --git a/Generic Vehicles/Engineering Mode/GenericVehicle_Group2_P2_EM/SuperCap.vreess b/Generic Vehicles/Engineering Mode/GenericVehicle_Group2_P2_EM/SuperCap.vreess
new file mode 100644
index 0000000000000000000000000000000000000000..fc743eb9cec56a3225dc8741fd63725646cffd52
--- /dev/null
+++ b/Generic Vehicles/Engineering Mode/GenericVehicle_Group2_P2_EM/SuperCap.vreess	
@@ -0,0 +1,19 @@
+{
+  "Header": {
+    "CreatedBy": "",
+    "Date": "2020-12-02T13:46:10.3043598Z",
+    "AppVersion": "3",
+    "FileVersion": 1
+  },
+  "Body": {
+    "SavedInDeclMode": false,
+    "REESSType": "SuperCap",
+    "Model": "SuperCap",
+    "Capacity": 161.9,
+    "InternalResistance": 0.00754,
+    "U_min": 39.87,
+    "U_max": 57.0,
+    "I_maxCharge": 100.0,
+    "I_maxDischarge": 100.0
+  }
+}
\ No newline at end of file
diff --git a/VECTO.sln.DotSettings b/VECTO.sln.DotSettings
index 360277a6863d27e2a7137b3eda5936fa2a5d9f28..2443e9b1d0456a0103167234864b09daabfcdb3e 100644
--- a/VECTO.sln.DotSettings
+++ b/VECTO.sln.DotSettings
@@ -2,6 +2,7 @@
 	<s:Boolean x:Key="/Default/CodeEditing/GenerateMemberBody/WrapIntoRegions/@EntryValue">True</s:Boolean>
 	<s:Boolean x:Key="/Default/CodeInspection/CodeAnnotations/NamespacesWithAnnotations/=HashingTool_002EAnnotations/@EntryIndexedValue">True</s:Boolean>
 	<s:Boolean x:Key="/Default/CodeInspection/CodeAnnotations/NamespacesWithAnnotations/=VECTO3GUI2020_002EAnnotations/@EntryIndexedValue">True</s:Boolean>
+	<s:Boolean x:Key="/Default/CodeInspection/ExcludedFiles/FileMasksToSkip/=_002A_002Evdri/@EntryIndexedValue">True</s:Boolean>
 	<s:String x:Key="/Default/CodeStyle/CodeCleanup/SilentCleanupProfile/@EntryValue">Default: Reformat Code</s:String>
 	<s:String x:Key="/Default/CodeStyle/CodeFormatting/CommonFormatter/ALIGNMENT_TAB_FILL_STYLE/@EntryValue">USE_TABS_ONLY</s:String>
 	<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/ALIGNMENT_TAB_FILL_STYLE/@EntryValue">USE_TABS_ONLY</s:String>
@@ -124,6 +125,11 @@
 	<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002EJavaScript_002ECodeStyle_002ESettingsUpgrade_002EJsWrapperSettingsUpgrader/@EntryIndexedValue">True</s:Boolean>
 	<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002EVB_002ECodeStyle_002ESettingsUpgrade_002EVBSpaceAfterUnaryMigration/@EntryIndexedValue">True</s:Boolean>
 	<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002EXml_002ECodeStyle_002EFormatSettingsUpgrade_002EXmlMoveToCommonFormatterSettingsUpgrade/@EntryIndexedValue">True</s:Boolean>
+<<<<<<< HEAD
+	<s:Boolean x:Key="/Default/Housekeeping/ExcludedProjects/ProjectMasksToIgnore/=_002A_002A_002Evdri/@EntryIndexedValue">False</s:Boolean>
+	<s:Boolean x:Key="/Default/Housekeeping/ExcludedProjects/ProjectMasksToIgnore/=_002A_002Evdri/@EntryIndexedValue">False</s:Boolean>
+	<s:Boolean x:Key="/Default/UserDictionary/Words/=RESS/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
+=======
 	<s:Boolean x:Key="/Default/UserDictionary/Words/=Graz/@EntryIndexedValue">True</s:Boolean>
 	<s:Boolean x:Key="/Default/UserDictionary/Words/=Overspeed/@EntryIndexedValue">True</s:Boolean>
 	<s:Boolean x:Key="/Default/UserDictionary/Words/=Padd/@EntryIndexedValue">True</s:Boolean>
@@ -135,3 +141,4 @@
 	<s:Boolean x:Key="/Default/UserDictionary/Words/=vair/@EntryIndexedValue">True</s:Boolean>
 	<s:Boolean x:Key="/Default/UserDictionary/Words/=vdri/@EntryIndexedValue">True</s:Boolean>
 	<s:Boolean x:Key="/Default/UserDictionary/Words/=Vecto/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
+>>>>>>> develop
diff --git a/VECTO/Input Files/Engine.vb b/VECTO/Input Files/Engine.vb
index c3cb756085aae22d74f6710eceeb62f3f472ab0b..3b45ac7055d93b53ac3a3ffb3e44c06fee1d82f5 100644
--- a/VECTO/Input Files/Engine.vb	
+++ b/VECTO/Input Files/Engine.vb	
@@ -619,7 +619,6 @@ Public Class DummyVehicle
 	Public Property Identifier As String Implements IVehicleDeclarationInputData.Identifier
 	Public Property ExemptedVehicle As Boolean Implements IVehicleDeclarationInputData.ExemptedVehicle
 	Public Property VIN As String Implements IVehicleDeclarationInputData.VIN
-	Public ReadOnly Property LegislativeCategory As String Implements IVehicleDeclarationInputData.LegislativeCategory
 	Public Property LegislativeClass As LegislativeClass? Implements IVehicleDeclarationInputData.LegislativeClass
 	Public Property VehicleCategory As VehicleCategory Implements IVehicleDeclarationInputData.VehicleCategory
 	Public Property AxleConfiguration As AxleConfiguration Implements IVehicleDeclarationInputData.AxleConfiguration
@@ -652,7 +651,8 @@ Public Class DummyVehicle
 	Public Property DualFuelVehicle As Boolean Implements IVehicleDeclarationInputData.DualFuelVehicle
 	Public Property MaxNetPower1 As Watt Implements IVehicleDeclarationInputData.MaxNetPower1
 	Public Property MaxNetPower2 As Watt Implements IVehicleDeclarationInputData.MaxNetPower2
-	Public ReadOnly Property RegisteredClass As RegistrationClass? Implements IVehicleDeclarationInputData.RegisteredClass
+    Public ReadOnly Property ExemptedTechnology As String Implements IVehicleDeclarationInputData.ExemptedTechnology
+    Public ReadOnly Property RegisteredClass As RegistrationClass? Implements IVehicleDeclarationInputData.RegisteredClass
 	Public ReadOnly Property NumberPassengerSeatsUpperDeck As Integer? Implements IVehicleDeclarationInputData.NumberPassengerSeatsUpperDeck
 	Public ReadOnly Property NumberPassengerSeatsLowerDeck As Integer? Implements IVehicleDeclarationInputData.NumberPassengerSeatsLowerDeck
 	Public ReadOnly Property NumberPassengersStandingLowerDeck As Integer? Implements IVehicleDeclarationInputData.NumberPassengersStandingLowerDeck
diff --git a/VECTO/Input Files/Gearbox.vb b/VECTO/Input Files/Gearbox.vb
index 2e31b8c68cee2267ec02da162e2ff1300fa50385..55b9a11a1040645ff2d484f931365e93972b4292 100644
--- a/VECTO/Input Files/Gearbox.vb	
+++ b/VECTO/Input Files/Gearbox.vb	
@@ -819,7 +819,6 @@ Public Class MockEngineeringVehicle
     Public Property Identifier As String Implements IVehicleDeclarationInputData.Identifier
     Public Property ExemptedVehicle As Boolean Implements IVehicleDeclarationInputData.ExemptedVehicle
     Public Property VIN As String Implements IVehicleDeclarationInputData.VIN
-    Public ReadOnly Property LegislativeCategory As String Implements IVehicleDeclarationInputData.LegislativeCategory
     Public Property LegislativeClass As LegislativeClass? Implements IVehicleDeclarationInputData.LegislativeClass
     Public Property VehicleCategory As VehicleCategory Implements IVehicleDeclarationInputData.VehicleCategory
     Public Property AxleConfiguration As AxleConfiguration Implements IVehicleDeclarationInputData.AxleConfiguration
@@ -856,6 +855,7 @@ Public Class MockEngineeringVehicle
     Public Property DualFuelVehicle As Boolean Implements IVehicleDeclarationInputData.DualFuelVehicle
     Public Property MaxNetPower1 As Watt Implements IVehicleDeclarationInputData.MaxNetPower1
     Public Property MaxNetPower2 As Watt Implements IVehicleDeclarationInputData.MaxNetPower2
+    Public ReadOnly Property ExemptedTechnology As String Implements IVehicleDeclarationInputData.ExemptedTechnology
     Public ReadOnly Property RegisteredClass As RegistrationClass? Implements IVehicleDeclarationInputData.RegisteredClass
     Public ReadOnly Property NumberPassengerSeatsUpperDeck As Integer? Implements IVehicleDeclarationInputData.NumberPassengerSeatsUpperDeck
     Public ReadOnly Property NumberPassengerSeatsLowerDeck As Integer? Implements IVehicleDeclarationInputData.NumberPassengerSeatsLowerDeck
diff --git a/VECTO/Input Files/MockVehicleInputData.vb b/VECTO/Input Files/MockVehicleInputData.vb
index 0ff5fff18194700bcd5118c54631dc26b275fbf9..3b484d4c0486e8f5305b31385f504c001eba1d8c 100644
--- a/VECTO/Input Files/MockVehicleInputData.vb	
+++ b/VECTO/Input Files/MockVehicleInputData.vb	
@@ -19,7 +19,6 @@ Public Class MockVehicleInputData
     Public Property Identifier As String Implements IVehicleDeclarationInputData.Identifier
     Public Property ExemptedVehicle As Boolean Implements IVehicleDeclarationInputData.ExemptedVehicle
     Public Property VIN As String Implements IVehicleDeclarationInputData.VIN
-    Public ReadOnly Property LegislativeCategory As String Implements IVehicleDeclarationInputData.LegislativeCategory
     Public Property LegislativeClass As LegislativeClass? Implements IVehicleDeclarationInputData.LegislativeClass
     Public Property VehicleCategory As VehicleCategory Implements IVehicleDeclarationInputData.VehicleCategory
     Public Property AxleConfiguration As AxleConfiguration Implements IVehicleDeclarationInputData.AxleConfiguration
@@ -41,6 +40,7 @@ Public Class MockVehicleInputData
     Public Property DualFuelVehicle As Boolean Implements IVehicleDeclarationInputData.DualFuelVehicle
     Public Property MaxNetPower1 As Watt Implements IVehicleDeclarationInputData.MaxNetPower1
     Public Property MaxNetPower2 As Watt Implements IVehicleDeclarationInputData.MaxNetPower2
+    Public ReadOnly Property ExemptedTechnology As String Implements IVehicleDeclarationInputData.ExemptedTechnology
     Public ReadOnly Property RegisteredClass As RegistrationClass? Implements IVehicleDeclarationInputData.RegisteredClass
     Public ReadOnly Property NumberPassengerSeatsUpperDeck As Integer? Implements IVehicleDeclarationInputData.NumberPassengerSeatsUpperDeck
     Public ReadOnly Property NumberPassengerSeatsLowerDeck As Integer? Implements IVehicleDeclarationInputData.NumberPassengerSeatsLowerDeck
diff --git a/VECTO/Input Files/Vehicle.vb b/VECTO/Input Files/Vehicle.vb
index 4bbc2859e6f8104e27f21ada8ab2bb6fe404addd..c261e84768e1a1f185c41fbc19fe5d02cc46822e 100644
--- a/VECTO/Input Files/Vehicle.vb	
+++ b/VECTO/Input Files/Vehicle.vb	
@@ -380,8 +380,6 @@ Public Class Vehicle
 		End Get
 	End Property
 
-	Public ReadOnly Property LegislativeCategory As String Implements IVehicleDeclarationInputData.LegislativeCategory
-
 	Public ReadOnly Property LegislativeClass As LegislativeClass? Implements IVehicleEngineeringInputData.LegislativeClass
 		Get
 			Return legClass
@@ -856,7 +854,9 @@ end Property
 		End Get
 	End Property
 
-	Public ReadOnly Property RegisteredClass As RegistrationClass? Implements IVehicleDeclarationInputData.RegisteredClass
+    Public ReadOnly Property ExemptedTechnology As String Implements IVehicleDeclarationInputData.ExemptedTechnology
+
+    Public ReadOnly Property RegisteredClass As RegistrationClass? Implements IVehicleDeclarationInputData.RegisteredClass
 	Public ReadOnly Property NumberPassengerSeatsUpperDeck As Integer? Implements IVehicleDeclarationInputData.NumberPassengerSeatsUpperDeck
 	Public ReadOnly Property NumberPassengerSeatsLowerDeck As Integer? Implements IVehicleDeclarationInputData.NumberPassengerSeatsLowerDeck
 	Public ReadOnly Property NumberPassengersStandingLowerDeck As Integer? Implements IVehicleDeclarationInputData.NumberPassengersStandingLowerDeck
diff --git a/VECTO3GUI/Helper/ViewModelBase.cs b/VECTO3GUI/Helper/ViewModelBase.cs
index 2ed110649bd797cc4eeef4837324b36113faceb7..295f42fdd1937b47252f44b4728a6bbadd21d988 100644
--- a/VECTO3GUI/Helper/ViewModelBase.cs
+++ b/VECTO3GUI/Helper/ViewModelBase.cs
@@ -59,5 +59,7 @@ namespace VECTO3GUI.Helper
 			{
 				ErrorsChanged?.Invoke(this, new DataErrorsChangedEventArgs(propertyName));
 			}
+
+
 		}
 }
diff --git a/VECTO3GUI/ViewModel/Impl/JoblistViewModel.cs b/VECTO3GUI/ViewModel/Impl/JoblistViewModel.cs
index 72a6c617ffcffb21622c35e24a5f65be9f591558..c585f453b3cedc8375a678434285db1865248911 100644
--- a/VECTO3GUI/ViewModel/Impl/JoblistViewModel.cs
+++ b/VECTO3GUI/ViewModel/Impl/JoblistViewModel.cs
@@ -268,8 +268,6 @@ namespace VECTO3GUI.ViewModel.Impl
 		#region Commands
 
 
-		
-
 		public ICommand RunSimulation
 		{
 			get { return _runSimulationCommand ?? (_runSimulationCommand = new RelayCommand(DoRunSimulation, CanRunSimulationCmd)); }
diff --git a/VECTO3GUI2020/App.xaml b/VECTO3GUI2020/App.xaml
index 817f5f0b1b06102dfd0be81a55b244696f9a79d1..2655e63c000b91d4ef3b7958157faf8437f2ea41 100644
--- a/VECTO3GUI2020/App.xaml
+++ b/VECTO3GUI2020/App.xaml
@@ -2,7 +2,8 @@
              xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              xmlns:local="clr-namespace:VECTO3GUI2020"
-             ShutdownMode="OnMainWindowClose">
+             ShutdownMode="OnMainWindowClose"
+             >
     <Application.Resources>
         <ResourceDictionary>
             <ResourceDictionary.MergedDictionaries>
@@ -14,12 +15,13 @@
                 <ResourceDictionary Source="Resources/Styles/GlobalStyles.xaml"/>
                 <ResourceDictionary Source="Resources/Styles/Colors.xaml"/>
                 <ResourceDictionary Source="Resources/Styles/ButtonStyles.xaml"/>
-                <ResourceDictionary Source="DataGridStyles.xaml"/>
+                <ResourceDictionary Source="Resources/Styles/DataGridStyles.xaml"/>
                 <ResourceDictionary Source="Resources/Templates/ErrorTemplates.xaml"/>
                 <ResourceDictionary Source="Resources/ObjectProvider.xaml"/>
-                <ResourceDictionary Source="Resources/Icons/drawables.xaml"></ResourceDictionary>
+                <ResourceDictionary Source="Resources/Icons/drawables.xaml"/>
+                <ResourceDictionary Source="Resources/DataTemplateSelectors.xaml"/>
+                <ResourceDictionary Source="Resources/Sizes.xaml"/>
             </ResourceDictionary.MergedDictionaries>
         </ResourceDictionary>
     </Application.Resources>
-
 </Application>
diff --git a/VECTO3GUI2020/App.xaml.cs b/VECTO3GUI2020/App.xaml.cs
index 93284aafd7b2b9bd4f35035ddabcbd647880dcc9..36c054f95d713baa242579b3a285baab243b7cfc 100644
--- a/VECTO3GUI2020/App.xaml.cs
+++ b/VECTO3GUI2020/App.xaml.cs
@@ -44,20 +44,12 @@ namespace VECTO3GUI2020
 				new DocumentModule(),
 				new XMLWriterFactoryModule(),
                 new FactoryModule(),
-                new MultistageModule()
+                new MultistageModule(),
+                new Vecto3GUI2020Module()
 			);
 
 
 
-			container.Bind<IJobListViewModel>().To<JobListViewModel>();
-            container.Bind<IMainWindowViewModel>().To<MainWindowViewModel>();
-            container.Bind<IMainViewModel>().To<JobListViewModel>();
-            container.Bind<ISettingsViewModel>().To<SettingsViewModel>();
-			container.Bind<IOutputViewModel>().To<OutputViewModel>().InSingletonScope();
-            container.Bind<ISettingsModel>().To<SettingsModel>();
-
-			container.Bind<IDialogHelper>().To<DialogHelper>().InSingletonScope();
-			container.Bind<IWindowHelper>().To<WindowHelper>();
 
 
 
diff --git a/VECTO3GUI2020/Behaviours/AutoScrollDataGridBehaviour.cs b/VECTO3GUI2020/Behaviours/AutoScrollDataGridBehaviour.cs
new file mode 100644
index 0000000000000000000000000000000000000000..8f7f7d0d14467fc7df94f4a9da4260efdea6fce4
--- /dev/null
+++ b/VECTO3GUI2020/Behaviours/AutoScrollDataGridBehaviour.cs
@@ -0,0 +1,79 @@
+ο»Ώusing System;
+using System.Collections.Generic;
+using System.Collections.Specialized;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Controls;
+using System.Windows.Threading;
+using Microsoft.Xaml.Behaviors;
+
+namespace VECTO3GUI2020.Behaviours
+{
+    public class AutoScrollDataGridBehaviour : Behavior<DataGrid>
+    {
+		#region Overrides of Behavior
+
+		private INotifyCollectionChanged sourceCollection;
+		private DependencyPropertyDescriptor _dpd;
+
+		protected override void OnAttached()
+		{
+			base.OnAttached();
+
+			//subsrice to Itemssource
+			_dpd = DependencyPropertyDescriptor.FromProperty(ItemsControl.ItemsSourceProperty, typeof(DataGrid));
+			if (_dpd != null)
+			{
+				_dpd.AddValueChanged(this.AssociatedObject, OnItemsSourceChanged);
+			}
+
+
+		}
+
+		private void OnItemsSourceChanged(object sender, EventArgs e)
+		{
+			UnSubscribeFromSourceCollectionChanged();
+
+			sourceCollection = AssociatedObject.ItemsSource as INotifyCollectionChanged;
+			if (sourceCollection != null) {
+				sourceCollection.CollectionChanged += SourceCollectionChanged;
+			}
+		}
+
+		private void SourceCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
+		{
+			var newIndex = e.NewStartingIndex;
+			if (newIndex < 0) {
+				return;
+			}
+			Dispatcher.CurrentDispatcher.BeginInvoke(
+				DispatcherPriority.ApplicationIdle,
+				new Action(() => this.AssociatedObject.ScrollIntoView(this.AssociatedObject.Items[newIndex]))
+				);
+			
+		}
+
+
+		protected override void OnDetaching()
+		{
+			base.OnDetaching();
+			UnSubscribeFromSourceCollectionChanged();
+			if (_dpd != null)
+			{
+				_dpd.RemoveValueChanged(this.AssociatedObject, OnItemsSourceChanged);
+			}
+		}
+
+		private void UnSubscribeFromSourceCollectionChanged()
+		{
+			if (sourceCollection != null) {
+				sourceCollection.CollectionChanged -= SourceCollectionChanged;
+			}
+
+		}
+
+		#endregion
+	}
+}
diff --git a/VECTO3GUI2020/Behaviours/PopUpHorizontalAlignmentBehavior.cs b/VECTO3GUI2020/Behaviours/PopUpHorizontalAlignmentBehavior.cs
new file mode 100644
index 0000000000000000000000000000000000000000..16d62fcbc82100bcb8ca463a8ae9b9fd10fcadd0
--- /dev/null
+++ b/VECTO3GUI2020/Behaviours/PopUpHorizontalAlignmentBehavior.cs
@@ -0,0 +1,57 @@
+ο»Ώusing System.Windows;
+using System.Windows.Controls.Primitives;
+using Microsoft.Xaml.Behaviors;
+
+namespace VECTO3GUI2020.Behaviours
+{
+	public class PopUpHorizontalAlignmentBehavior : Behavior<Popup>
+	{
+
+		private FrameworkElement _placementTarget;
+		private double _initialHorizontalOffset;
+		private double _popUpWidth;
+
+
+
+		private void SetHorizontalAlignment(double placeMentTargetActualWidth, double popUpActualWidth)
+		{
+			if (popUpActualWidth > placeMentTargetActualWidth) {
+				this.AssociatedObject.HorizontalOffset = placeMentTargetActualWidth - popUpActualWidth;
+			}
+		}
+		private void AssociatedObject_Opened(object sender, System.EventArgs e)
+		{
+
+			var popUpWidth = this.AssociatedObject.ActualWidth;
+			if (this.AssociatedObject.ActualWidth == 0 && this.AssociatedObject.IsMeasureValid) {
+				popUpWidth = this.AssociatedObject.DesiredSize.Width;
+			}
+
+			//SetHorizontalAlignment(_placementTarget.ActualWidth, this.AssociatedObject.ActualWidth != 0 ? : this.AssociatedObject.ActualWidth);
+		}
+
+
+		#region Overrides of Behavior
+
+
+		protected override void OnAttached()
+		{
+			_placementTarget = this.AssociatedObject.PlacementTarget as FrameworkElement;
+			_popUpWidth = this.AssociatedObject.MinWidth;
+            this.AssociatedObject.Opened += AssociatedObject_Opened;
+			base.OnAttached();
+		}
+
+
+
+		protected override void OnDetaching()
+		{
+			this.AssociatedObject.HorizontalOffset = _initialHorizontalOffset;
+			base.OnDetaching();
+		}
+
+
+
+		#endregion
+	}
+}
\ No newline at end of file
diff --git a/VECTO3GUI2020/Helper/Converter/BoolToVisibilityConverter.cs b/VECTO3GUI2020/Helper/Converter/BoolToVisibilityConverter.cs
index 0eb30e7c549784ad287c57a8645066fcf89ebae7..f91f4022fba7c4c270658653384bc106e0a138ed 100644
--- a/VECTO3GUI2020/Helper/Converter/BoolToVisibilityConverter.cs
+++ b/VECTO3GUI2020/Helper/Converter/BoolToVisibilityConverter.cs
@@ -17,7 +17,16 @@ namespace VECTO3GUI2020.Helper.Converter
 		/// <returns></returns>
 		public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
 		{
+			
+			
+
 			if (value is bool b) {
+				if (parameter != null) {
+					if (string.Equals((string)parameter, "invert", StringComparison.InvariantCultureIgnoreCase)) {
+						b = !b;
+					}
+				}
+
 				var visibility = b ? Visibility.Collapsed : Visibility.Visible;
 				return visibility;
 			}
diff --git a/VECTO3GUI2020/Helper/Converter/MultipleBoolConverter.cs b/VECTO3GUI2020/Helper/Converter/MultipleBoolConverter.cs
new file mode 100644
index 0000000000000000000000000000000000000000..2217f002db725c114b5b54c7c3cc4e235f79bbe1
--- /dev/null
+++ b/VECTO3GUI2020/Helper/Converter/MultipleBoolConverter.cs
@@ -0,0 +1,33 @@
+ο»Ώusing System;
+using System.Globalization;
+using System.Linq;
+using System.Windows.Data;
+
+namespace VECTO3GUI2020.Helper.Converter
+{
+	public class MultipleBoolConverter : IMultiValueConverter
+	{
+		#region Implementation of IMultiValueConverter
+
+		public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
+		{
+			var boolVals = values.Cast<bool>();
+			bool returnValue = (bool)values[0];
+			foreach (var val in boolVals) {
+				returnValue = returnValue && val;
+				if (!returnValue) {
+					break;
+				}
+			}
+
+			return returnValue;
+		}
+
+		public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
+		{
+			throw new NotImplementedException();
+		}
+
+		#endregion
+	}
+}
\ No newline at end of file
diff --git a/VECTO3GUI2020/Helper/Converter/PropertyNameToLabelTextConverter.cs b/VECTO3GUI2020/Helper/Converter/PropertyNameToLabelTextConverter.cs
new file mode 100644
index 0000000000000000000000000000000000000000..e164d620aef8169cc0ccdb3338e81a89efaac07d
--- /dev/null
+++ b/VECTO3GUI2020/Helper/Converter/PropertyNameToLabelTextConverter.cs
@@ -0,0 +1,52 @@
+ο»Ώusing System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Linq;
+using System.Resources;
+using System.Windows.Data;
+using VECTO3GUI2020.Properties;
+
+namespace VECTO3GUI2020.Helper.Converter
+{
+	public class PropertyNameToLabelTextConverter : IValueConverter
+	{
+		#region Implementation of IValueConverter
+		/// <summary>
+		/// Maps the value to a string found in the given ResourceFiles (first match).
+		/// 
+		/// </summary>
+		/// <param name="value"></param>
+		/// <param name="targetType"></param>
+		/// <param name="parameter"></param>
+		/// <param name="culture"></param>
+		/// <example>
+		/// 
+		/// <Binding Path="." Converter="{StaticResource PropertyNameToLabelConverter}">
+		///		<Binding.ConverterParameter>
+		///			<x:Array Type="resources:ResourceManager">
+		///				<x:Static MemberType="properties:Strings" Member="ResourceManager"/>
+		///			</x:Array>
+		///		</Binding.ConverterParameter>
+		///	</Binding>
+		///
+		/// </example>
+		/// <returns></returns>
+		public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+		{
+			if (parameter is IEnumerable<ResourceManager> resourceManagers) {
+				return NameResolver.ResolveName(value as string, resourceManagers.ToArray());
+			} else {
+				return NameResolver.ResolveName(value as string, BusStrings.ResourceManager, Strings.ResourceManager) ?? Binding.DoNothing;
+			}
+
+			
+		}
+
+		public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+		{
+			throw new NotImplementedException();
+		}
+
+		#endregion
+	}
+}
\ No newline at end of file
diff --git a/VECTO3GUI2020/Helper/DialogHelper.cs b/VECTO3GUI2020/Helper/DialogHelper.cs
index 9609208a1d3ef0c2dfbe981952a0478ece06a7d2..848827af70a567dc18b3054ca4a025fcd09f4cab 100644
--- a/VECTO3GUI2020/Helper/DialogHelper.cs
+++ b/VECTO3GUI2020/Helper/DialogHelper.cs
@@ -19,14 +19,16 @@ namespace VECTO3GUI2020.Helper
 
 		#region File and Folder Dialogs
 		private string _xmlFilter = "XML Files (*.xml)|*.xml";
+		private string _jsonFilter = "JSON Files (*.json)|*.json";
 
-		private Dictionary<string, string> lastUsedDirectories = new Dictionary<string, string>();
+		private Dictionary<string, string> lastUsedLoadDirectories = new Dictionary<string, string>();
+		private Dictionary<string, string> lastUsedSaveDirectories = new Dictionary<string, string>();
 
 		private string lastUsedDirectoryFolderPicker = null;
 		private string[] OpenFilesDialog(string filter, string initialDirectory, bool multiselect)
 		{
 			if (initialDirectory == null) {
-				initialDirectory = LookUpLastDir(filter);
+				initialDirectory = LookUpLastDir(lastUsedLoadDirectories, filter);
 			}
 
 
@@ -39,7 +41,7 @@ namespace VECTO3GUI2020.Helper
 			}) {
 				var result = fd.ShowDialog();
 				if (result == DialogResult.OK) {
-					lastUsedDirectories[filter] = Path.GetDirectoryName(fd.FileName);
+					lastUsedLoadDirectories[filter] = Path.GetDirectoryName(fd.FileName);
 					return fd.FileNames;
 				}
 			}
@@ -47,11 +49,33 @@ namespace VECTO3GUI2020.Helper
 
 			return null;
 		}
+		public string SaveToDialog(string initialDirectory, string filter)
+		{
+			if (initialDirectory == null) {
+				initialDirectory = LookUpLastDir(lastUsedSaveDirectories, filter);
+			}
+			using (var saveFileDialog = new SaveFileDialog
+			{
+				Filter = filter,
+				InitialDirectory = initialDirectory ?? _defaultInitialDirectory,
+				AddExtension = true
+			}) {
+				var result = saveFileDialog.ShowDialog();
+				{
+					if (result == DialogResult.OK) {
+						lastUsedSaveDirectories[filter] = Path.GetDirectoryName(saveFileDialog.FileName);
+						return saveFileDialog.FileName;
+					}
+				}
 
-		private string LookUpLastDir(string filter)
+				return null;
+			}
+		}
+
+		private static string LookUpLastDir(Dictionary<string, string> dict, string filter)
 		{
 			string lastUsedDirectory = null;
-			if (lastUsedDirectories.TryGetValue(filter, out lastUsedDirectory)) {
+			if (dict.TryGetValue(filter, out lastUsedDirectory)) {
 				return lastUsedDirectory;
 			} else {
 				return Settings.Default.DefaultFilePath;
@@ -85,6 +109,11 @@ namespace VECTO3GUI2020.Helper
 			return OpenFilesDialog(_xmlFilter, initialDirectory, false)?[0];
 		}
 
+		public string OpenJsonFileDialog(string initialDirectory)
+		{
+			return OpenFilesDialog(_jsonFilter, initialDirectory, false)?[0];
+		}
+
 
 		public string OpenFolderDialog(string initialDirectory = null)
 		{
@@ -125,16 +154,7 @@ namespace VECTO3GUI2020.Helper
 			return MessageBox.Show(messageBoxText, caption);
 		}
 
-		public string SaveToDialog(string initialDirectory, string filter)
-		{
-			using (var saveFileDialog = new SaveFileDialog {
-				Filter = filter
-			}) {
-				saveFileDialog.InitialDirectory = initialDirectory ?? _defaultInitialDirectory;
 
-				return saveFileDialog.ShowDialog() == DialogResult.OK ? saveFileDialog.FileName : null;
-			}
-		}
 
 
 		public string SaveToXMLDialog(string initialDirectory)
@@ -142,6 +162,20 @@ namespace VECTO3GUI2020.Helper
 			return SaveToDialog(initialDirectory, _xmlFilter);
 		}
 
+		public string SaveToJsonDialog(string initialDirectory)
+		{
+			return SaveToDialog(initialDirectory, _jsonFilter);
+		}
+
+		public MessageBoxResult ShowErrorMessage(string errorMessage, string caption)
+		{
+			return ShowMessageBox(errorMessage, caption, MessageBoxButton.OK, MessageBoxImage.Error);
+		}
+
+		public MessageBoxResult ShowErrorMessage(string errorMessage)
+		{
+			return ShowErrorMessage(errorMessage, "Error");
+		}
 
 
 		#endregion
@@ -188,6 +222,11 @@ namespace VECTO3GUI2020.Helper
 		/// <param name="initialDirectory"></param>
 		/// <returns></returns>
 		string OpenFolderDialog(string initialDirectory = null);
+		string OpenJsonFileDialog(string initialDirectory = null);
+		string SaveToDialog(string initialDirectory = null, string filter = "All files (*.*|*.*");
+		string SaveToXMLDialog(string initialDirectory = null);
+		string SaveToJsonDialog(string initialDirectory = null);
+
 
 		/// <summary>
 		/// Displays a messagebox
@@ -210,9 +249,7 @@ namespace VECTO3GUI2020.Helper
 		/// <returns></returns>
 		MessageBoxResult ShowMessageBox(string messageBoxText, string caption);
 
-
-		string SaveToDialog(string initialDirectory = null, string filter = "All files (*.*|*.*");
-
-		string SaveToXMLDialog(string initialDirectory = null);
+		MessageBoxResult ShowErrorMessage(string errorMessage, string caption);
+		MessageBoxResult ShowErrorMessage(string errorMessage);
 	}
 }
diff --git a/VECTO3GUI2020/Helper/ExceptionExtension.cs b/VECTO3GUI2020/Helper/ExceptionExtension.cs
new file mode 100644
index 0000000000000000000000000000000000000000..cf656d36044e294754d7dc7bfbb5ec6a2e5f30e9
--- /dev/null
+++ b/VECTO3GUI2020/Helper/ExceptionExtension.cs
@@ -0,0 +1,29 @@
+ο»Ώusing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Windows.Documents;
+
+namespace VECTO3GUI2020.Helper
+{
+	public static class ExceptionExtension
+	{
+		public static string GetInnerExceptionMessages(this Exception ex, string separator = "\n")
+		{
+			IList<string> errorStrings = new List<string>();
+
+
+			do {
+				errorStrings.Add(ex.Message);
+				ex = ex.InnerException;
+			} while (ex != null);
+
+			var errorString = String.Join(separator, errorStrings);
+
+
+			return errorString;
+		}
+
+
+
+	}
+}
\ No newline at end of file
diff --git a/VECTO3GUI2020/Helper/FileHelper.cs b/VECTO3GUI2020/Helper/FileHelper.cs
new file mode 100644
index 0000000000000000000000000000000000000000..3cad81f50936a6ddab2eb8bfbb269f8016628293
--- /dev/null
+++ b/VECTO3GUI2020/Helper/FileHelper.cs
@@ -0,0 +1,16 @@
+ο»Ώusing System.IO;
+using Castle.Core.Internal;
+
+namespace VECTO3GUI2020.Helper
+{
+	public static class FileHelper
+	{
+		public static void CreateDirectory(string fileName)
+		{
+			var dirName = Path.GetDirectoryName(fileName);
+			if (!dirName.IsNullOrEmpty()) {
+				Directory.CreateDirectory(dirName);
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/VECTO3GUI2020/Helper/IndexedStorage.cs b/VECTO3GUI2020/Helper/IndexedStorage.cs
deleted file mode 100644
index fee593ec2cf4c5b5f33aabc8463d2ae868f18540..0000000000000000000000000000000000000000
--- a/VECTO3GUI2020/Helper/IndexedStorage.cs
+++ /dev/null
@@ -1,53 +0,0 @@
-ο»Ώusing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace VECTO3GUI2020.Helper
-{
-	//Helper class that can be used to store values of the same type that are identified by a string
-	public class IndexedStorage<T> where T : IEquatable<T>
-	{
-		private Dictionary<string, T> indexedStorageDictionary = new Dictionary<string, T>();
-		private readonly Action<string> _valueChangedCallback;
-
-
-
-		public IndexedStorage(Action<string> valueChangedCallback = null)
-		{
-			_valueChangedCallback = valueChangedCallback;
-		}
-
-
-		public T this[string identifier]
-		{
-			get
-			{
-				if (!indexedStorageDictionary.ContainsKey(identifier))
-				{
-					indexedStorageDictionary.Add(identifier, default(T));
-				}
-				return indexedStorageDictionary[identifier];
-			}
-			set
-			{
-				var oldValue = default(T);
-				if (indexedStorageDictionary.ContainsKey(identifier))
-				{
-					oldValue = indexedStorageDictionary[identifier];
-				}
-				else
-				{
-					indexedStorageDictionary.Add(identifier, default(T));
-				}
-				indexedStorageDictionary[identifier] = value;
-				if (!value.Equals(oldValue))
-				{
-					_valueChangedCallback?.Invoke(identifier);
-				}
-			}
-		}
-	}
-
-}
diff --git a/VECTO3GUI2020/Helper/NameOfMarkUpExtension.cs b/VECTO3GUI2020/Helper/NameOfMarkUpExtension.cs
deleted file mode 100644
index 0e5218d4007204b9647b23db8c84464a098d8743..0000000000000000000000000000000000000000
--- a/VECTO3GUI2020/Helper/NameOfMarkUpExtension.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-ο»Ώusing System;
-using System.Windows.Markup;
-
-namespace VECTO3GUI2020.Helper
-{
-	public class NameOfMarkUpExtension : MarkupExtension
-	{
-		#region Overrides of MarkupExtension
-
-		public override object ProvideValue(IServiceProvider serviceProvider)
-		{
-			throw new NotImplementedException();
-			return null;
-		}
-
-		#endregion
-	}
-}
\ No newline at end of file
diff --git a/VECTO3GUI2020/Helper/NameResolver.cs b/VECTO3GUI2020/Helper/NameResolver.cs
index 022c954acad0c2257c9241babb061c9c2d3a4247..6d9fe13a50352ba1e68978b397888c721c82c0e4 100644
--- a/VECTO3GUI2020/Helper/NameResolver.cs
+++ b/VECTO3GUI2020/Helper/NameResolver.cs
@@ -3,7 +3,7 @@ using Castle.Core.Internal;
 
 namespace VECTO3GUI2020.Helper
 {
-	public class NameResolver
+	public static class NameResolver
 	{
 		public static string ResolveName(string propertyName, params ResourceManager[] resourceManagers)
 		{
diff --git a/VECTO3GUI2020/Helper/ObservableDictionary.cs b/VECTO3GUI2020/Helper/ObservableDictionary.cs
new file mode 100644
index 0000000000000000000000000000000000000000..a61739b9783cb1859e644bbddb24fbc8857597a0
--- /dev/null
+++ b/VECTO3GUI2020/Helper/ObservableDictionary.cs
@@ -0,0 +1,123 @@
+ο»Ώusing System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Collections.Specialized;
+using System.Diagnostics;
+using System.Windows;
+
+namespace VECTO3GUI2020.Helper
+{
+	interface IObservableDictionary<TKey, TValue> : IDictionary<TKey, TValue>, INotifyCollectionChanged
+	{
+
+	}
+	public class ObservableDictionary<TKey,TValue> : IObservableDictionary<TemplateKey, TValue>
+	{
+		#region Implementation of INotifyCollectionChanged
+
+		public event NotifyCollectionChangedEventHandler CollectionChanged;
+
+		#endregion
+
+		private IDictionary<TemplateKey, TValue> _dict = new Dictionary<TemplateKey, TValue>();
+
+		public ObservableDictionary()
+		{
+			throw new NotImplementedException();
+		}
+
+		#region Implementation of IEnumerable
+
+		IEnumerator<KeyValuePair<TemplateKey, TValue>> IEnumerable<KeyValuePair<TemplateKey, TValue>>.GetEnumerator()
+		{
+			return _dict.GetEnumerator();
+		}
+
+		public IEnumerator GetEnumerator()
+		{
+			return ((IEnumerable)_dict).GetEnumerator();
+		}
+
+		#endregion
+
+		#region Implementation of ICollection<KeyValuePair<TemplateKey,TValue>>
+
+		public void Add(KeyValuePair<TemplateKey, TValue> item)
+		{
+			_dict.Add(item);
+		}
+
+		public void Clear()
+		{
+			CollectionChanged.Invoke(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));
+			_dict.Clear();
+		}
+
+		public bool Contains(KeyValuePair<TemplateKey, TValue> item)
+		{
+			return _dict.Contains(item);
+		}
+
+		public void CopyTo(KeyValuePair<TemplateKey, TValue>[] array, int arrayIndex)
+		{
+			_dict.CopyTo(array, arrayIndex);
+		}
+
+		public bool Remove(KeyValuePair<TemplateKey, TValue> item)
+		{
+			return _dict.Remove(item);
+		}
+
+		public int Count => _dict.Count;
+
+		public bool IsReadOnly => _dict.IsReadOnly;
+
+		#endregion
+
+		#region Implementation of IDictionary<TemplateKey,TValue>
+
+		public bool ContainsKey(TemplateKey key)
+		{
+			return _dict.ContainsKey(key);
+		}
+
+		public void Add(TemplateKey key, TValue value)
+		{
+
+			_dict.Add(key, value);
+		}
+
+		public bool Remove(TemplateKey key)
+		{
+			TValue value;
+			var itemFound = _dict.TryGetValue(key, out value);
+			var result = itemFound && _dict.Remove(key);
+			if (result) {
+				CollectionChanged?.Invoke(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove,
+					new List<TValue>(){
+						value
+					}));
+			}
+			return result;
+		}
+
+		public bool TryGetValue(TemplateKey key, out TValue value)
+		{
+			return _dict.TryGetValue(key, out value);
+		}
+
+		public TValue this[TemplateKey key]
+		{
+			get => _dict[key];
+			set => _dict[key] = value;
+		}
+
+		public ICollection<TemplateKey> Keys => _dict.Keys;
+
+		public ICollection<TValue> Values => _dict.Values;
+
+		#endregion
+
+
+	}
+}
\ No newline at end of file
diff --git a/VECTO3GUI2020/Helper/ProcessHelper.cs b/VECTO3GUI2020/Helper/ProcessHelper.cs
new file mode 100644
index 0000000000000000000000000000000000000000..a5383aa430a705134b34b18323ca71ed3cb8c141
--- /dev/null
+++ b/VECTO3GUI2020/Helper/ProcessHelper.cs
@@ -0,0 +1,75 @@
+ο»Ώusing System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace VECTO3GUI2020.Helper
+{
+    public static class ProcessHelper
+    {
+
+		public static void OpenFolder(string path)
+		{
+			if (path == null)
+			{
+				return;
+			}
+
+			path = Path.GetFullPath(path);
+
+			var explorerCommandStrBuilder = new StringBuilder();
+			explorerCommandStrBuilder.Append("explorer.exe");
+			explorerCommandStrBuilder.Append(" /select ");
+			explorerCommandStrBuilder.Append(path);
+
+			StartProcess("explorer.exe", ("/select," + path));
+		}
+
+
+
+		public static void OpenFile(string path)
+		{
+			if (path == null)
+			{
+				return;
+			}
+
+			StartProcess(path);
+
+
+		}
+
+		private static void StartProcess(string command, params string[] arguments)
+		{
+			string argumentsString = "";
+			if (arguments != null)
+			{
+				var argumentsStrBuilder = new StringBuilder();
+				foreach (var argument in arguments)
+				{
+					argumentsStrBuilder.Append(argument);
+					if (argument != arguments.Last())
+					{
+						argumentsStrBuilder.Append(" ");
+					}
+				}
+
+				argumentsString = argumentsStrBuilder.ToString();
+				Debug.WriteLine(argumentsString);
+			}
+
+			try
+			{
+				Process.Start(command, argumentsString);
+			}
+			catch (Exception e)
+			{
+				Debug.WriteLine(e.Message);
+			}
+		}
+
+	}
+}
diff --git a/VECTO3GUI2020/Helper/MultistageParameterDataTemplateSelector.cs b/VECTO3GUI2020/Helper/TemplateSelector/MultistageParameterDataTemplateSelector.cs
similarity index 92%
rename from VECTO3GUI2020/Helper/MultistageParameterDataTemplateSelector.cs
rename to VECTO3GUI2020/Helper/TemplateSelector/MultistageParameterDataTemplateSelector.cs
index 74a73b23bee97dada9d9e9a539a7fd19e34e380b..57da972b0d0744b0e7bf761165b3e810f3f50b75 100644
--- a/VECTO3GUI2020/Helper/MultistageParameterDataTemplateSelector.cs
+++ b/VECTO3GUI2020/Helper/TemplateSelector/MultistageParameterDataTemplateSelector.cs
@@ -2,9 +2,10 @@
 using System.Windows;
 using System.Windows.Controls;
 using TUGraz.VectoCommon.Exceptions;
+using VECTO3GUI2020.ViewModel.MultiStage.Implementation;
 using VECTO3GUI2020.Views.Multistage.CustomControls;
 
-namespace VECTO3GUI2020.Helper
+namespace VECTO3GUI2020.Helper.TemplateSelector
 {
 	public class MultistageParameterDataTemplateSelector : DataTemplateSelector
 	{
diff --git a/VECTO3GUI2020/Helper/TemplateSelector/MultistageVehicleDataTemplateSelector.cs b/VECTO3GUI2020/Helper/TemplateSelector/MultistageVehicleDataTemplateSelector.cs
new file mode 100644
index 0000000000000000000000000000000000000000..5c230dfe950700dc01724da4c9dbe16c46be2a22
--- /dev/null
+++ b/VECTO3GUI2020/Helper/TemplateSelector/MultistageVehicleDataTemplateSelector.cs
@@ -0,0 +1,53 @@
+ο»Ώusing System;
+using System.Windows;
+using System.Windows.Controls;
+using TUGraz.VectoCommon.Exceptions;
+using VECTO3GUI2020.ViewModel.Interfaces.JobEdit.Vehicle;
+using VECTO3GUI2020.ViewModel.MultiStage.Implementation;
+using VECTO3GUI2020.Views.Multistage;
+using VECTO3GUI2020.Views.Multistage.CustomControls;
+
+namespace VECTO3GUI2020.Helper.TemplateSelector
+{
+	public class MultistageVehicleDataTemplateSelector : DataTemplateSelector
+	{
+
+		/// <summary>
+		/// Selects a vehicle viewmodel based on the ExemptedVehicleProperty
+		/// </summary>
+		/// <param name="item"></param>
+		/// <param name="container"></param>
+		/// <returns></returns>
+		public override DataTemplate SelectTemplate(object item, DependencyObject container)
+		{
+			FrameworkElement element = container as FrameworkElement;
+			IVehicleViewModel vm = item as IVehicleViewModel;
+
+			if (element != null && item != null && vm != null)
+			{
+				FrameworkElementFactory factory = null;
+				Type type = null;
+
+				switch (vm) {
+					case InterimStageBusVehicleViewModel_v2_8 declvm:
+						if (declvm.ExemptedVehicle) {
+							type = typeof(VehicleView_v2_8_exempted);
+						} else {
+							type = typeof(VehicleView_v2_8);
+						}
+
+						break;
+					default:
+						throw new NotImplementedException($"no template defined for {vm.GetType()}");
+				}
+
+				factory = new FrameworkElementFactory(type);
+				DataTemplate dt = new DataTemplate();
+				dt.VisualTree = factory;
+				return dt;
+			}
+
+			return base.SelectTemplate(item, container);
+		}
+	}
+}
\ No newline at end of file
diff --git a/VECTO3GUI2020/Helper/VisualTreeHelperExtensions.cs b/VECTO3GUI2020/Helper/VisualTreeHelperExtensions.cs
new file mode 100644
index 0000000000000000000000000000000000000000..d9d8b66e8c34d9e243eaf1045eebf39c2aab0e4d
--- /dev/null
+++ b/VECTO3GUI2020/Helper/VisualTreeHelperExtensions.cs
@@ -0,0 +1,28 @@
+ο»Ώusing System;
+using System.Windows;
+using System.Windows.Media;
+using TUGraz.VectoCommon.Models;
+
+namespace VECTO3GUI2020.Helper
+{
+	public static class VisualTreeHelperExtensions
+	{
+
+		public static T GetChild<T>(FrameworkElement rootElement) where T : FrameworkElement
+		{
+			T child = null;
+			for(var i = 0; i < VisualTreeHelper.GetChildrenCount(rootElement); i++) {
+				var childElement = VisualTreeHelper.GetChild(rootElement, i);
+				if (childElement.GetType() == typeof(T)) {
+					child = childElement as T;
+					return child;
+				} else {
+					return GetChild<T>(childElement as FrameworkElement);
+				}
+			}
+
+
+			return child;
+		}
+	}
+}
\ No newline at end of file
diff --git a/VECTO3GUI2020/Helper/WindowHelper.cs b/VECTO3GUI2020/Helper/WindowHelper.cs
index 1e56f7c2a28c96993ea963584e8b4a016b3eaf9b..5e74748502d2a28ff66d15ee3c4cc8a22fb7d464 100644
--- a/VECTO3GUI2020/Helper/WindowHelper.cs
+++ b/VECTO3GUI2020/Helper/WindowHelper.cs
@@ -1,6 +1,10 @@
-ο»Ώusing System.Windows;
-using VECTO3GUI2020.ViewModel.Implementation.Common;
+ο»Ώusing System;
+using System.Windows;
+using System.Windows.Data;
+using System.Windows.Forms;
+using VECTO3GUI2020.Properties;
 using VECTO3GUI2020.ViewModel.Interfaces.Common;
+using Binding = System.Windows.Data.Binding;
 
 namespace VECTO3GUI2020.Helper
 {
@@ -10,20 +14,55 @@ namespace VECTO3GUI2020.Helper
 
 		public void ShowWindow(object viewModel)
 		{
+			IViewModelBase viewModelBase = (IViewModelBase)viewModel;
+			var height = viewModelBase?.Height ?? Double.NaN;
+			var width = viewModelBase?.Height ?? Double.NaN;
+			var sizeToContent = viewModelBase?.SizeToContent ?? SizeToContent.Manual;
+			var title = viewModelBase?.Title ?? GUILabels.DefaultTitle;
+			var minHeight = viewModelBase?.MinHeight ?? 0;
+			var minWidth = viewModelBase?.MinWidth ?? 0;
+
+
 			var window = new Window {
 				Content = viewModel,
-				Width = 800,
-				Height = 600,
-				WindowStartupLocation = WindowStartupLocation.CenterScreen
+				Height = height,
+				Width = width,
+				MinHeight = minHeight,
+				MinWidth = minWidth,
+				SizeToContent = sizeToContent,
+				WindowStartupLocation = WindowStartupLocation.CenterScreen,
+				Title = title
 			};
+			if (viewModelBase != null) {
+				SetBinding(viewModelBase, window, new PropertyPath(nameof(viewModelBase.Height)), FrameworkElement.HeightProperty );
+				SetBinding(viewModelBase, window, new PropertyPath(nameof(viewModelBase.Width)), FrameworkElement.WidthProperty);
+				SetBinding(viewModelBase, window, new PropertyPath(nameof(viewModelBase.SizeToContent)), Window.SizeToContentProperty);
+				SetBinding(viewModelBase, window, new PropertyPath(nameof(viewModelBase.Title)), Window.TitleProperty);
+				SetBinding(viewModelBase, window, new PropertyPath(nameof(viewModelBase.SizeToContent)), Window.SizeToContentProperty);
+				SetBinding(viewModelBase, window, new PropertyPath(nameof(viewModelBase.Title)), Window.TitleProperty);
+
 
-			if (viewModel is IViewModelBase vmBase) {
-				window.Title = vmBase.Title;
 			}
+			
 
 			window.Show();
 		}
 
-
+		private static void SetBinding(IViewModelBase viewModelBase,
+				Window window,
+				PropertyPath path,
+				DependencyProperty dependencyProperty,
+				UpdateSourceTrigger updateSourceTrigger = UpdateSourceTrigger.PropertyChanged,
+				BindingMode mode = BindingMode.TwoWay
+			)
+		{
+			Binding binding = new Binding() {
+				Source = viewModelBase,
+				Path = path,
+				UpdateSourceTrigger = updateSourceTrigger,
+				Mode = mode
+			};
+			BindingOperations.SetBinding(window, dependencyProperty, binding);
+		}
 	}
 }
diff --git a/VECTO3GUI2020/MainWindow.xaml b/VECTO3GUI2020/MainWindow.xaml
index 73a0a4efb0ecca551477ec3772aa586d54540eff..1b900af38931c5ac09b42d6a6cce2e2f13883376 100644
--- a/VECTO3GUI2020/MainWindow.xaml
+++ b/VECTO3GUI2020/MainWindow.xaml
@@ -4,9 +4,15 @@
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
         xmlns:local="clr-namespace:VECTO3GUI2020"
-        xmlns:Implementation="clr-namespace:VECTO3GUI2020.ViewModel.Implementation" d:DataContext="{d:DesignInstance Type=Implementation:MainWindowViewModel}" x:Class="VECTO3GUI2020.MainWindow"
+        xmlns:resx="clr-namespace:VECTO3GUI2020.Properties"
+        xmlns:Implementation="clr-namespace:VECTO3GUI2020.ViewModel.Implementation"
+        xmlns:system="clr-namespace:System;assembly=mscorlib"
+        d:DataContext="{d:DesignInstance Type=Implementation:MainWindowViewModel}" x:Class="VECTO3GUI2020.MainWindow"
         mc:Ignorable="d"
         Title="Vecto" Height="450" Width="820"
+        MinWidth="800"
+        MinHeight="420"
+
         WindowStartupLocation="CenterScreen"
         AutomationProperties.Name="="
         x:Name="MainView">
@@ -14,30 +20,107 @@
 
 
     <Grid x:Name="Grid" >
-        <Grid.ColumnDefinitions>
-            <ColumnDefinition Width="1*"/>
-        </Grid.ColumnDefinitions>
-        <Grid.RowDefinitions>
-            <RowDefinition Height="40"/>
-            <RowDefinition Height="1.5*"/>
-            <RowDefinition Height="5"></RowDefinition>
-            <RowDefinition Height="1*"/>
-        </Grid.RowDefinitions>
+        <DockPanel Margin="0 0 0 0">
+            <StackPanel DockPanel.Dock="Top" Grid.Row="0" Orientation="Vertical">
+                <Menu IsMainMenu="True">
+                    <MenuItem Header="File" VerticalAlignment="Stretch">
+                        <MenuItem Header="New File">
+                            <MenuItem Header="{x:Static resx:GUILabels.NewInterimOrCompletedJob}" Command="{Binding JobListVm.NewManufacturingStageFileCommand}"/>
+                            <MenuItem Header="{x:Static resx:GUILabels.NewPrimaryAndInterimJob}" 
+                                      Command="{Binding JobListVm.NewVifCommand}" >
+                                <MenuItem.CommandParameter>
+                                    <system:Boolean>False</system:Boolean>
+                                </MenuItem.CommandParameter>
+                            </MenuItem>
 
-            <StackPanel Grid.Row="0" Orientation="Vertical">
-                <Menu x:Name="menu" AutomationProperties.Name="-" AutomationProperties.AutomationId="Test" IsMainMenu="True">
-                <MenuItem Header="File" x:Name="MenuItemFile"  AutomationProperties.Name="=" VerticalAlignment="Stretch">
+                            <MenuItem Header="{x:Static resx:GUILabels.NewCompleteJob}"
+                                      Command="{Binding JobListVm.NewVifCommand}">
+                                <MenuItem.CommandParameter>
+                                    <system:Boolean>True</system:Boolean>
+                                </MenuItem.CommandParameter>
+                            </MenuItem>
+                                <Separator></Separator>
+                            <MenuItem Header="Create interim/completeted input" Command="{Binding JobListVm.NewCompletedInputCommand}"/>
+                            <MenuItem Header="Create extemted interim/completed input" Command="{Binding JobListVm.NewExemptedCompletedInputCommand}"/>
+                        </MenuItem>
+                        <MenuItem  Header="Load File" Command="{Binding JobListVm.AddJobAsyncCommand}"/>
                         <MenuItem Header="Settings" Command="{Binding OpenSettings}"/>
-                        <MenuItem Header="New File" Command="{Binding NewInterimFile}"/>
-                        <MenuItem Header="Open File" Command="{Binding AddJob}"/>
+                    </MenuItem>
+                    <MenuItem Header="Edit" VerticalAlignment="Stretch">
+                        <MenuItem Header="Edit Job" ToolTip="Edit selected Job" Command="{Binding JobListVm.EditDocument}"/>
+                        <MenuItem Header="Source File">
+                            <MenuItem Header="Show in Explorer" Command="{Binding JobListVm.ShowSourceFileCommand}"/>
+                            <MenuItem Header="Open in Editor" Command="{Binding JobListVm.OpenSourceFileCommand}"/>
+                        </MenuItem>
+                        <!--<MenuItem Header="Simulate Job" ToolTip="Simulates the selected Job"/>-->
                     </MenuItem>
                 </Menu>
             </StackPanel>
+                <UniformGrid Margin="0 10 0 0 " Rows="1" DockPanel.Dock="Top" Width="400" HorizontalAlignment="Left">
+                    <Border x:Name="JobsButtonBorder" BorderThickness ="0 0 0 3">
+                        <Border.Style>
+                            <Style TargetType="Border">
+                                <Style.Triggers>
+                                    <DataTrigger Binding="{Binding JobsSelected}" Value="true">
+                                        <Setter Property="BorderBrush" Value="{StaticResource AccentColorButton}"></Setter>
+                                    </DataTrigger>
+                                </Style.Triggers>
+                            </Style>
+                        </Border.Style>
+                        
+                 
+                        <Button x:Name="Jobs" Margin="0 0 0 0" 
+                                VerticalAlignment="Stretch"
+                                DockPanel.Dock="Top" 
+                                Content="Jobs"
+                                Command="{Binding SwitchTopView}"
+                                CommandParameter="Jobs"
+                                Style="{DynamicResource MultiStageButtonStyle1}">
+                        </Button>
+                    </Border>
 
-
-        <ContentControl Grid.Row="1" Margin="0, 4, 0 0" Content="{Binding CurrentViewModelTop}"/>
-        <GridSplitter Grid.Row="2" HorizontalAlignment="Stretch" Height="5"/>
-        <ContentControl Grid.Row="3" Margin="0,0,0,0" Name="ContentControlBottom" Content="{Binding CurrentViewModelBottom}"/>
-    
+                <Border BorderThickness="{Binding ElementName=JobsButtonBorder, Path=BorderThickness}">
+                    <Border.Style>
+                        <Style TargetType="Border">
+                            <Style.Triggers>
+                                <DataTrigger Binding="{Binding SettingsSelected}" Value="true">
+                                    <Setter Property="BorderBrush" Value="{StaticResource AccentColorButton}"></Setter>
+                                </DataTrigger>
+                            </Style.Triggers>
+                        </Style>
+                    </Border.Style>
+                    <Button Margin="0 0 0 0" 
+                            VerticalAlignment="Stretch"
+                            DockPanel.Dock="Top" 
+                            Content="Settings"
+                            Command="{Binding SwitchTopView}"
+                            CommandParameter="Settings"
+                            Style="{DynamicResource MultiStageButtonStyle1}">
+                    </Button>
+                    </Border>
+                <Border BorderThickness="{Binding ElementName=JobsButtonBorder, Path=BorderThickness}">
+                    <Border.Style>
+                        <Style TargetType="Border">
+                            <Style.Triggers>
+                                <DataTrigger Binding="{Binding AboutSelected}" Value="true">
+                                    <Setter Property="BorderBrush" Value="{StaticResource AccentColorButton}"/>
+                                </DataTrigger>
+                            </Style.Triggers>
+                        </Style>
+                    </Border.Style>
+                    <Button Margin="0 0 0 0" 
+                            VerticalAlignment="Stretch"
+                            DockPanel.Dock="Top" 
+                            Content="About"
+                            Command="{Binding SwitchTopView}"
+                            CommandParameter="About"
+                            Style="{DynamicResource MultiStageButtonStyle1}">
+                    </Button>
+                </Border>
+            </UniformGrid>
+            <Border DockPanel.Dock="Top" BorderBrush="{DynamicResource AccentColorButton}" BorderThickness="3" VerticalAlignment="Stretch">
+                <ContentControl Content="{Binding CurrentViewModel}"></ContentControl>
+            </Border>
+        </DockPanel>
     </Grid>
 </Window>
diff --git a/VECTO3GUI2020/Model/Multistage/JSONJob.cs b/VECTO3GUI2020/Model/Multistage/JSONJob.cs
new file mode 100644
index 0000000000000000000000000000000000000000..733d512b0379bedb18f71bf5028bfc84144ba989
--- /dev/null
+++ b/VECTO3GUI2020/Model/Multistage/JSONJob.cs
@@ -0,0 +1,95 @@
+ο»Ώusing System;
+using System.Diagnostics;
+using Newtonsoft.Json;
+using TUGraz.VectoCore;
+using VECTO3GUI2020.ViewModel.Implementation.Common;
+
+namespace VECTO3GUI2020.Model.Multistage
+{
+	public class JSONJob : ObservableObject
+	{
+		private JSONJobHeader _header;
+
+		public JSONJobHeader Header
+		{
+			get => _header;
+			set => SetProperty(ref _header, value);
+		}
+
+		private JSONJobBody _jobBody;
+
+		public JSONJobBody Body
+		{
+			get => _jobBody;
+			set => SetProperty(ref _jobBody, value);
+		}
+	}
+
+
+
+	public class JSONJobHeader : ObservableObject
+	{
+		public static int PrimaryAndInterimVersion = 10;
+			//public const int CompletedBusFileVersion = 7;
+
+		private string _createdBy;
+		private DateTime _dateTime;
+		private string _appVersion;
+		private int _fileVersion;
+
+
+		public string CreatedBy
+		{
+			get { return _createdBy; }
+			set { SetProperty(ref _createdBy, value); }
+		}
+
+		public DateTime Date
+		{
+			get { return _dateTime; }
+			set { SetProperty(ref _dateTime, value); }
+		}
+
+		public string AppVersion
+		{
+			get { return _appVersion; }
+			set { SetProperty(ref _appVersion, value); }
+		}
+
+		public int FileVersion
+		{
+			get { return _fileVersion; }
+			set
+			{
+				SetProperty(ref _fileVersion, value);
+				//JobType = JobTypeHelper.GetJobTypeByFileVersion(_fileVersion);
+			}
+		}
+	}
+
+
+	public class JSONJobBody : ObservableObject
+	{
+		private string _interimStage;
+		private string _primaryVehicle;
+		private bool _completed;
+
+		public string PrimaryVehicle
+		{
+			get { return _primaryVehicle; }
+			set { SetProperty(ref _primaryVehicle, value); }
+		}
+
+		public string InterimStage
+		{
+			get { return _interimStage; }
+			set { SetProperty(ref _interimStage, value); }
+		}
+
+		public bool Completed
+		{
+			get => _completed;
+			set => SetProperty(ref _completed, value);
+		}
+	}
+}
\ No newline at end of file
diff --git a/VECTO3GUI2020/Ninject/DocumentModule.cs b/VECTO3GUI2020/Ninject/DocumentModule.cs
index 8e2f284c2f865e218d820bbef3cef9a0cfdbedcd..03fb21c1d5944b2d0ea46d61355f2305d27ec938 100644
--- a/VECTO3GUI2020/Ninject/DocumentModule.cs
+++ b/VECTO3GUI2020/Ninject/DocumentModule.cs
@@ -1,5 +1,6 @@
 ο»Ώusing Ninject.Extensions.Factory;
 using Ninject.Modules;
+using TUGraz.VectoCore.InputData.FileIO.JSON;
 using TUGraz.VectoCore.Utils;
 using VECTO3GUI2020.Model.Interfaces;
 using VECTO3GUI2020.Ninject.Util;
@@ -18,6 +19,10 @@ namespace VECTO3GUI2020.Ninject
             Bind<IDocumentViewModel>().To<DeclarationJobViewModel>().Named(XmlDocumentType.DeclarationJobData.ToString());
 			Bind<IDocumentViewModel>().To<MultiStageJobViewModel_v0_1>()
 				.Named(XmlDocumentType.MultistageOutputData.ToString());
+
+			Bind<IDocumentViewModel>().To<CreateVifViewModel>()
+				.Named(typeof(JSONInputDataV10_PrimaryAndStageInputBus).ToString());
+
 			//Bind<IDocumentViewModel>().To<MultistageJobViewModel>().Named(XmlDocumentType.MultistageOutputData.ToString());
 			//Bind<IDocumentViewModel>().To<DeclarationTrailerJobDocumentViewModel>().Named(XmlDocumentType.DeclarationTrailerJobData.ToString());
 
diff --git a/VECTO3GUI2020/Ninject/FactoryModule.cs b/VECTO3GUI2020/Ninject/FactoryModule.cs
index 8dffd4b7be9e5c7ca138b2a6952be477c2b709b8..fa07b41e5527c1f8a45b85fbcd9d79c311ce3a7d 100644
--- a/VECTO3GUI2020/Ninject/FactoryModule.cs
+++ b/VECTO3GUI2020/Ninject/FactoryModule.cs
@@ -20,11 +20,22 @@ namespace VECTO3GUI2020.Ninject
 		{
 			Bind<IXMLWriterFactory>().ToFactory(() => new UseFirstArgumentTypeAsNameInstanceProvider(fallback:true));
 			//Bind<IMultiStageViewModelFactory>().ToFactory(() => new UseFirstArgumentAsNameInstanceProvider(skipFirstArgument: true, fallback: true));
-			Bind<IMultiStageViewModelFactory>().ToFactory();
+			
 			Bind<IJobEditViewModelFactory>().ToFactory(() => new UseFirstArgumentTypeAsNameInstanceProvider());
 			Bind<IDocumentViewModelFactory>().ToFactory(() => new UseFirstArgumentAsNameInstanceProvider(false));
 			Bind<IComponentViewModelFactory>().ToFactory(
 				() => new UseFirstArgumentTypeAsNameInstanceProvider(true));
+
+
+			Bind<IMultiStageViewModelFactory>().To<MultiStageViewModelFactory>().
+				InSingletonScope();
+			Bind<IMultiStageViewModelFactoryDefaultInstanceProvider>().
+				ToFactory();
+			Bind<IMultiStageViewModelFactoryTypeAsNameInstanceProvider>().
+				ToFactory(() => new UseFirstArgumentTypeAsNameInstanceProvider());
+			Bind<IMultistageViewModelFactoryFirstParameterAsNameInstanceProvider>().ToFactory(() =>
+				new UseFirstArgumentAsNameInstanceProvider(skipFirstArgument: false));
+
 		}
 	}
 }
diff --git a/VECTO3GUI2020/Ninject/MultiStageViewModelFactory.cs b/VECTO3GUI2020/Ninject/MultiStageViewModelFactory.cs
new file mode 100644
index 0000000000000000000000000000000000000000..e62c06a5ebf839b3b8b31c2cbd98f09f9e2c1887
--- /dev/null
+++ b/VECTO3GUI2020/Ninject/MultiStageViewModelFactory.cs
@@ -0,0 +1,123 @@
+ο»Ώusing TUGraz.VectoCommon.InputData;
+using VECTO3GUI2020.ViewModel.Implementation;
+using VECTO3GUI2020.ViewModel.Interfaces.Common;
+using VECTO3GUI2020.ViewModel.Interfaces.Document;
+using VECTO3GUI2020.ViewModel.Interfaces.JobEdit.Vehicle;
+using VECTO3GUI2020.ViewModel.MultiStage.Implementation;
+using VECTO3GUI2020.ViewModel.MultiStage.Interfaces;
+
+namespace VECTO3GUI2020.Ninject
+{
+	public class MultiStageViewModelFactory : IMultiStageViewModelFactory	
+	{
+		private IMultiStageViewModelFactoryDefaultInstanceProvider _multiStageVmFactoryDefaultInstanceProvider;
+		private IMultiStageViewModelFactoryTypeAsNameInstanceProvider _multiStageViewModelFactoryTypeAsNameInstanceProvider;
+
+		private IMultistageViewModelFactoryFirstParameterAsNameInstanceProvider
+			_multistageViewModelFactoryFirstParameterAsNameInstanceProvider;
+
+
+		public MultiStageViewModelFactory(IMultiStageViewModelFactoryDefaultInstanceProvider multiStageVmFactoryDefaultInstanceProvider, 
+			IMultiStageViewModelFactoryTypeAsNameInstanceProvider multiStageViewModelFactoryTypeAsNameInstanceProvider, IMultistageViewModelFactoryFirstParameterAsNameInstanceProvider multistageViewModelFactoryFirstParameterAsNameInstanceProvider)
+		{
+			_multiStageVmFactoryDefaultInstanceProvider = multiStageVmFactoryDefaultInstanceProvider;
+			_multiStageViewModelFactoryTypeAsNameInstanceProvider = multiStageViewModelFactoryTypeAsNameInstanceProvider;
+			_multistageViewModelFactoryFirstParameterAsNameInstanceProvider = multistageViewModelFactoryFirstParameterAsNameInstanceProvider;
+		}
+
+		#region Implementation of IMultiStageViewModelFactoryDefaultInstanceProvider
+
+		public IDocumentViewModel GetStageInputViewModel(bool exemptedVehicle)
+		{
+			return _multiStageVmFactoryDefaultInstanceProvider.GetStageInputViewModel(exemptedVehicle);
+		}
+
+		public IViewModelBase GetNewMultistageJobViewModel()
+		{
+			return _multiStageVmFactoryDefaultInstanceProvider.GetNewMultistageJobViewModel();
+		}
+
+		public IMultiStageJobViewModel GetMultiStageJobViewModel(IMultistageBusInputDataProvider inputData)
+		{
+			return _multiStageVmFactoryDefaultInstanceProvider.GetMultiStageJobViewModel(inputData);
+		}
+
+		public IVehicleViewModel GetInterimStageVehicleViewModel()
+		{
+			return _multiStageVmFactoryDefaultInstanceProvider.GetInterimStageVehicleViewModel();
+		}
+
+		public IVehicleViewModel GetInterimStageVehicleViewModel(IVehicleDeclarationInputData consolidatedVehicleData, bool exempted)
+		{
+			return _multiStageVmFactoryDefaultInstanceProvider.GetInterimStageVehicleViewModel(consolidatedVehicleData, exempted);
+		}
+
+		public IManufacturingStageViewModel GetManufacturingStageViewModel(
+			IManufacturingStageInputData consolidatedManufacturingStageInputData, bool exempted)
+		{
+			return _multiStageVmFactoryDefaultInstanceProvider.GetManufacturingStageViewModel(consolidatedManufacturingStageInputData, exempted);
+		}
+
+		public IMultistageAirdragViewModel GetMultistageAirdragViewModel()
+		{
+			return _multiStageVmFactoryDefaultInstanceProvider.GetMultistageAirdragViewModel();
+		}
+
+		public IMultistageAirdragViewModel GetMultistageAirdragViewModel(IAirdragDeclarationInputData consolidatedAirdragInputData)
+		{
+			return _multiStageVmFactoryDefaultInstanceProvider.GetMultistageAirdragViewModel(consolidatedAirdragInputData);
+		}
+
+		public IMultistageAuxiliariesViewModel GetAuxiliariesViewModel()
+		{
+			return _multiStageVmFactoryDefaultInstanceProvider.GetAuxiliariesViewModel();
+		}
+
+		public IMultistageAuxiliariesViewModel
+			GetAuxiliariesViewModel(IBusAuxiliariesDeclarationData consolidatedAuxiliariesInputData)
+		{
+			return _multiStageVmFactoryDefaultInstanceProvider.GetAuxiliariesViewModel(consolidatedAuxiliariesInputData);
+		}
+
+		public ICreateVifViewModel GetCreateNewVifViewModel(bool completed)
+		{
+			return _multiStageVmFactoryDefaultInstanceProvider.GetCreateNewVifViewModel(completed);
+		}
+
+		public ICreateVifViewModel GetCreateNewVifViewModel()
+		{
+			return _multiStageVmFactoryDefaultInstanceProvider.GetCreateNewVifViewModel();
+		}
+
+		#endregion
+
+		#region Implementation of IMultiStageViewModelFactoryTypeAsNameInstanceProvider
+
+		public IDocumentViewModel CreateDocumentViewModel(IDeclarationInputDataProvider inputData)
+		{
+			return _multiStageViewModelFactoryTypeAsNameInstanceProvider.CreateDocumentViewModel(inputData);
+		}
+
+		public IDocumentViewModel CreateDocumentViewModel(IInputDataProvider inputData)
+		{
+			return _multiStageViewModelFactoryTypeAsNameInstanceProvider.CreateDocumentViewModel(inputData);
+		}
+
+		public IVehicleViewModel CreateStageInputVehicleViewModel(IVehicleDeclarationInputData inputData)
+		{
+			return _multiStageViewModelFactoryTypeAsNameInstanceProvider.CreateStageInputVehicleViewModel(inputData);
+		}
+
+		#endregion
+
+
+		#region Implementation of IMultistageViewModelFactoryFirstParameterAsNameInstanceProvider
+
+		public IVehicleViewModel CreateStageInputVehicleViewModel(string inputProviderType)
+		{
+			return _multistageViewModelFactoryFirstParameterAsNameInstanceProvider.CreateStageInputVehicleViewModel(inputProviderType);
+		}
+
+		#endregion
+	}
+}
\ No newline at end of file
diff --git a/VECTO3GUI2020/Ninject/MultistageLazyDependencies.cs b/VECTO3GUI2020/Ninject/MultistageLazyDependencies.cs
index b268e93677b245278571010fde2f3383fdf23595..4272646006b9a3ed0b98932bef69d93d44e908ff 100644
--- a/VECTO3GUI2020/Ninject/MultistageLazyDependencies.cs
+++ b/VECTO3GUI2020/Ninject/MultistageLazyDependencies.cs
@@ -11,26 +11,18 @@ namespace VECTO3GUI2020.Ninject
 {
 	public class MultistageLazyDependencies : IMultistageDependencies
 	{
-
+		private readonly Lazy<IXMLWriterFactory> _xmlWriterFactory;
+		private readonly Lazy<IDeclarationInjectFactory> _injectFactory;
+		private readonly Lazy<IComponentViewModelFactory> _componentViewModelFactory;
+		private readonly Lazy<IMultiStageViewModelFactory> _multistageViewModelFactory;
 		private readonly Lazy<IDialogHelper> _dialogHelper;
+		public Lazy<IMultiStageViewModelFactory> MultistageViewModelFactory => _multistageViewModelFactory;
 		public Lazy<IDialogHelper> DialogHelperLazy => _dialogHelper;
 		public IDialogHelper DialogHelper => _dialogHelper.Value;
-
-
-		//private readonly Lazy<XMLValidator> _xmlValidator = new Lazy<XMLValidator>(() => {return });
-		//public Lazy<XMLValidator> XMLValidatorLazy => _xmlValidator;
-		//public XMLValidator XMLValidator => _xmlValidator.Value;
-
-
 		public IDeclarationInjectFactory InjectFactory => _injectFactory.Value;
 		public IComponentViewModelFactory ComponentViewModelFactory => _componentViewModelFactory.Value;
 		public IXMLWriterFactory XMLWriterFactory => _xmlWriterFactory.Value;
 
-		private Lazy<IXMLWriterFactory> _xmlWriterFactory;
-
-
-		private readonly Lazy<IDeclarationInjectFactory> _injectFactory;
-		private readonly Lazy<IComponentViewModelFactory> _componentViewModelFactory;
 		public MultistageLazyDependencies(
 			Lazy<IDialogHelper> dialogHelper,
 			Lazy<IDeclarationInjectFactory> injectFactory, 
@@ -42,7 +34,7 @@ namespace VECTO3GUI2020.Ninject
 			_componentViewModelFactory = componentViewModelFactory;
 			_injectFactory = injectFactory;
 			_xmlWriterFactory = xmlWriterFactory;
-
+			_multistageViewModelFactory = viewModelFactory;
 		}
 	}
 }
\ No newline at end of file
diff --git a/VECTO3GUI2020/Ninject/MultistageModule.cs b/VECTO3GUI2020/Ninject/MultistageModule.cs
index c36e13772ffe0bc172f7b9eb92b7bbd1cc8c750b..3e9c110f8a36a1abee882d736707c01f8cc92c72 100644
--- a/VECTO3GUI2020/Ninject/MultistageModule.cs
+++ b/VECTO3GUI2020/Ninject/MultistageModule.cs
@@ -6,9 +6,15 @@ using System.Threading.Tasks;
 using System.Windows.Automation.Peers;
 using Ninject.Extensions.Factory;
 using Ninject.Modules;
+using TUGraz.VectoCore.InputData.FileIO.XML.Declaration;
+using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider;
 using TUGraz.VectoCore.Models.SimulationComponent;
+using VECTO3GUI2020.Model.Multistage;
 using VECTO3GUI2020.Ninject.Util;
+using VECTO3GUI2020.ViewModel.Implementation;
+using VECTO3GUI2020.ViewModel.Implementation.Common;
 using VECTO3GUI2020.ViewModel.Interfaces.Common;
+using VECTO3GUI2020.ViewModel.Interfaces.Document;
 using VECTO3GUI2020.ViewModel.Interfaces.JobEdit.Vehicle;
 using VECTO3GUI2020.ViewModel.MultiStage.Implementation;
 using VECTO3GUI2020.ViewModel.MultiStage.Interfaces;
@@ -26,11 +32,11 @@ namespace VECTO3GUI2020.Ninject
 			Bind<IMultiStageJobViewModel>().To<MultiStageJobViewModel_v0_1>().
 				NamedLikeFactoryMethod((IMultiStageViewModelFactory f) => f.GetMultiStageJobViewModel(null));
 
-			Bind<IVehicleViewModel>().To<DeclarationInterimStageBusVehicleViewModel_v2_8>().
+			Bind<IVehicleViewModel>().To<InterimStageBusVehicleViewModel_v2_8>().
 				NamedLikeFactoryMethod((IMultiStageViewModelFactory f)=>f.GetInterimStageVehicleViewModel());
 
 			Bind<IManufacturingStageViewModel>().To<ManufacturingStageViewModel_v0_1>().
-				NamedLikeFactoryMethod((IMultiStageViewModelFactory f) => f.GetManufacturingStageViewModel(null));
+				NamedLikeFactoryMethod((IMultiStageViewModelFactory f) => f.GetManufacturingStageViewModel(null, false));
 
 			Bind<IMultistageAirdragViewModel>().To<MultistageAirdragViewModel>().
 				NamedLikeFactoryMethod((IMultiStageViewModelFactory f) => f.GetMultistageAirdragViewModel());
@@ -39,6 +45,26 @@ namespace VECTO3GUI2020.Ninject
 				NamedLikeFactoryMethod((IMultiStageViewModelFactory f) => f.GetAuxiliariesViewModel(null));
 
 			Bind<IMultistageDependencies>().To<MultistageLazyDependencies>();
+
+			Bind<ICreateVifViewModel>().To<CreateVifViewModel>().
+				NamedLikeFactoryMethod((IMultiStageViewModelFactory f) => f.GetCreateNewVifViewModel());
+
+			Bind<IDocumentViewModel>().To<StageInputViewModel>()
+				.Named(typeof(XMLDeclarationInputDataProviderV20).ToString());
+
+			Bind<IDocumentViewModel>().To<StageInputViewModel>()
+				.NamedLikeFactoryMethod((IMultiStageViewModelFactory f) => f.GetStageInputViewModel(default(bool)));
+
+			Bind<IAdditionalJobInfoViewModel>().To<AdditionalJobInfoViewModelMultiStage>()
+				.WhenInjectedInto(typeof(IMultiStageJobViewModel));
+
+			Bind<IAdditionalJobInfoViewModel>().To<AdditionalJobInfoViewModelNewVif>()
+				.WhenInjectedInto(typeof(ICreateVifViewModel));
+
+			Bind<IAdditionalJobInfoViewModel>().To<AdditionalJobInfoViewModelStageInput>()
+				.WhenInjectedInto(typeof(IStageViewModelBase));
+
+			Bind<JSONJob>().ToSelf();
 		}
 	}
 }
diff --git a/VECTO3GUI2020/Ninject/Vecto3GUI2020Module.cs b/VECTO3GUI2020/Ninject/Vecto3GUI2020Module.cs
new file mode 100644
index 0000000000000000000000000000000000000000..cfbe3a2fc2872d464985a0648cca0122af454cfc
--- /dev/null
+++ b/VECTO3GUI2020/Ninject/Vecto3GUI2020Module.cs
@@ -0,0 +1,33 @@
+ο»Ώusing System.Windows;
+using Ninject.Modules;
+using VECTO3GUI2020.Helper;
+using VECTO3GUI2020.Model.Implementation;
+using VECTO3GUI2020.Model.Interfaces;
+using VECTO3GUI2020.ViewModel;
+using VECTO3GUI2020.ViewModel.Implementation;
+using VECTO3GUI2020.ViewModel.Interfaces;
+
+namespace VECTO3GUI2020.Ninject
+{
+	public class Vecto3GUI2020Module : NinjectModule
+	{
+		#region Overrides of NinjectModule
+
+		public override void Load()
+		{
+
+			Bind<IJobListViewModel>().To<JobListViewModel>().InSingletonScope();
+			Bind<IMainWindowViewModel>().To<MainWindowViewModel>();
+			Bind<IMainViewModel>().To<JobListViewModel>();
+			Bind<ISettingsViewModel>().To<SettingsViewModel>();
+			Bind<IOutputViewModel>().To<OutputViewModel>().InSingletonScope();
+			Bind<ISettingsModel>().To<SettingsModel>().InSingletonScope();
+			Bind<IDialogHelper>().To<DialogHelper>().InSingletonScope();
+			Bind<IWindowHelper>().To<WindowHelper>();
+			Bind<AboutViewModel>().ToSelf().InSingletonScope();
+			
+		}
+
+		#endregion
+	}
+}
\ No newline at end of file
diff --git a/VECTO3GUI2020/Ninject/Vehicle/ComponentModule.cs b/VECTO3GUI2020/Ninject/Vehicle/ComponentModule.cs
index edbbce58125ff6731a7d06984f093e08a7a5814c..7754d1da5fbd91b6b48568ab739c58f7d23c2788 100644
--- a/VECTO3GUI2020/Ninject/Vehicle/ComponentModule.cs
+++ b/VECTO3GUI2020/Ninject/Vehicle/ComponentModule.cs
@@ -26,8 +26,10 @@ namespace VECTO3GUI2020.Ninject.Vehicle
 			Bind<IVehicleViewModel>().To<VehicleViewModel_v1_0>().Named(VehicleViewModel_v1_0.VERSION);
 			Bind<IVehicleViewModel>().To<VehicleViewModel_v2_0>().Named(VehicleViewModel_v2_0.VERSION);
 
-			//Bind<IVehicleViewModel>().To<DeclarationInterimStageBusVehicleViewModel_v2_8>()
-			//	.Named(DeclarationInterimStageBusVehicleViewModel_v2_8.INPUTPROVIDERTYPE).BindingConfiguration.;
+
+	        
+			Bind<IVehicleViewModel>().To<InterimStageBusVehicleViewModel_v2_8>().Named(InterimStageBusVehicleViewModel_v2_8.VERSION);
+			Bind<IVehicleViewModel>().To<InterimStageBusVehicleViewModel_v2_8>().Named(InterimStageBusVehicleViewModel_v2_8.VERSION_EXEMPTED);
 
 
             Bind<IComponentViewModel>().To<EngineViewModel_v1_0>().Named(EngineViewModel_v1_0.VERSION);
diff --git a/VECTO3GUI2020/Properties/GUILabels.Designer.cs b/VECTO3GUI2020/Properties/GUILabels.Designer.cs
new file mode 100644
index 0000000000000000000000000000000000000000..a0bbf92d1f74e34b3175c24345bb34a7e3e897d2
--- /dev/null
+++ b/VECTO3GUI2020/Properties/GUILabels.Designer.cs
@@ -0,0 +1,108 @@
+ο»Ώ//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.42000
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace VECTO3GUI2020.Properties {
+    using System;
+    
+    
+    /// <summary>
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    /// </summary>
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    public class GUILabels {
+        
+        private static global::System.Resources.ResourceManager resourceMan;
+        
+        private static global::System.Globalization.CultureInfo resourceCulture;
+        
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal GUILabels() {
+        }
+        
+        /// <summary>
+        ///   Returns the cached ResourceManager instance used by this class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        public static global::System.Resources.ResourceManager ResourceManager {
+            get {
+                if (object.ReferenceEquals(resourceMan, null)) {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("VECTO3GUI2020.Properties.GUILabels", typeof(GUILabels).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        public static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to VECTO.
+        /// </summary>
+        public static string DefaultTitle {
+            get {
+                return ResourceManager.GetString("DefaultTitle", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to New Complete Job.
+        /// </summary>
+        public static string NewCompleteJob {
+            get {
+                return ResourceManager.GetString("NewCompleteJob", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to New Interim/Completed Job.
+        /// </summary>
+        public static string NewInterimOrCompletedJob {
+            get {
+                return ResourceManager.GetString("NewInterimOrCompletedJob", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to New Primary Job with Interim Input.
+        /// </summary>
+        public static string NewPrimaryAndInterimJob {
+            get {
+                return ResourceManager.GetString("NewPrimaryAndInterimJob", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to No Manufacturing Steps.
+        /// </summary>
+        public static string no_manufacturing_stages {
+            get {
+                return ResourceManager.GetString("no manufacturing stages", resourceCulture);
+            }
+        }
+    }
+}
diff --git a/VECTO3GUI2020/Properties/GUILabels.resx b/VECTO3GUI2020/Properties/GUILabels.resx
new file mode 100644
index 0000000000000000000000000000000000000000..c045f7d379c534175080ba21803c4b8e922fd152
--- /dev/null
+++ b/VECTO3GUI2020/Properties/GUILabels.resx
@@ -0,0 +1,135 @@
+ο»Ώ<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="DefaultTitle" xml:space="preserve">
+    <value>VECTO</value>
+  </data>
+  <data name="NewPrimaryAndInterimJob" xml:space="preserve">
+    <value>New Primary Job with Interim Input</value>
+  </data>
+  <data name="NewInterimOrCompletedJob" xml:space="preserve">
+    <value>New Interim/Completed Job</value>
+  </data>
+  <data name="NewCompleteJob" xml:space="preserve">
+    <value>New Complete Job</value>
+  </data>
+  <data name="no manufacturing stages" xml:space="preserve">
+    <value>No Manufacturing Steps</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/VECTO3GUI2020/Resources/Converter.xaml b/VECTO3GUI2020/Resources/Converter.xaml
index ee924cdf0baa31fbe9a8b27f15c5c77b939709f5..d8d3ef9da09a635a6121bd97b438347162a13a2f 100644
--- a/VECTO3GUI2020/Resources/Converter.xaml
+++ b/VECTO3GUI2020/Resources/Converter.xaml
@@ -1,7 +1,7 @@
 ο»Ώ<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-                    xmlns:converter="clr-namespace:VECTO3GUI2020.Helper.Converter"
-                    xmlns:helper="clr-namespace:VECTO3GUI2020.Helper">
+                    xmlns:converter="clr-namespace:VECTO3GUI2020.Helper.Converter">
+
     <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
 
     <converter:SIToUnitString x:Shared="False" x:Key="SIToUnitStringConverter"/>
@@ -17,7 +17,9 @@
     <converter:EnumConverter x:Key="EnumConverter"></converter:EnumConverter>
     <converter:NullToUnsetValueConverter x:Key="NullToUnsetValue"></converter:NullToUnsetValueConverter>
     <converter:BoolToIntConverter x:Key="BoolToIntConverter"></converter:BoolToIntConverter>
+    <converter:PropertyNameToLabelTextConverter x:Key="PropertyNameToLabelConverter"/>
 
+    
 
 
 </ResourceDictionary>
diff --git a/VECTO3GUI2020/Resources/DataTemplateSelectors.xaml b/VECTO3GUI2020/Resources/DataTemplateSelectors.xaml
new file mode 100644
index 0000000000000000000000000000000000000000..acb9d8062dca35fd8f288c268e975d575814889e
--- /dev/null
+++ b/VECTO3GUI2020/Resources/DataTemplateSelectors.xaml
@@ -0,0 +1,7 @@
+ο»Ώ<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+                    xmlns:templateSelector="clr-namespace:VECTO3GUI2020.Helper.TemplateSelector">
+    <templateSelector:MultistageParameterDataTemplateSelector x:Key="MultistageParameterTemplateSelector"/>
+    <templateSelector:MultistageVehicleDataTemplateSelector x:Key="MultistageVehicleDataTemplateSelector"/>
+
+</ResourceDictionary>
\ No newline at end of file
diff --git a/VECTO3GUI2020/Resources/Icons/FolderClosed_16x.xaml b/VECTO3GUI2020/Resources/Icons/FolderClosed_16x.xaml
new file mode 100644
index 0000000000000000000000000000000000000000..3d162d6e29001f1317a402e6c40d19258bb411f6
--- /dev/null
+++ b/VECTO3GUI2020/Resources/Icons/FolderClosed_16x.xaml
@@ -0,0 +1,20 @@
+ο»Ώ<!-- This file was generated by the AiToXaml tool.-->
+<!-- Tool Version: 14.0.22307.0 -->
+<Viewbox Width="16" Height="16" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
+  <Rectangle Width="16" Height="16">
+    <Rectangle.Fill>
+      <DrawingBrush>
+        <DrawingBrush.Drawing>
+          <DrawingGroup>
+            <DrawingGroup.Children>
+              <GeometryDrawing Brush="#00FFFFFF" Geometry="F1M0,0L16,0 16,16 0,16z" />
+              <GeometryDrawing Brush="#FFF6F6F6" Geometry="F1M1.5,1L9.61,1 10.61,3 13.496,3C14.323,3,14.996,3.673,14.996,4.5L14.996,12.5C14.996,13.327,14.323,14,13.496,14L1.5,14C0.673,14,0,13.327,0,12.5L0,2.5C0,1.673,0.673,1,1.5,1" />
+              <GeometryDrawing Brush="#FFEFEFF0" Geometry="F1M1.9998,3.0004L1.9998,4.0004 8.8738,4.0004 8.3738,3.0004z" />
+              <GeometryDrawing Brush="#FFDBB679" Geometry="F1M2,3L8.374,3 8.874,4 2,4z M13.496,4L10,4 9.992,4 8.992,2 1.5,2C1.225,2,1,2.224,1,2.5L1,12.5C1,12.776,1.225,13,1.5,13L13.496,13C13.773,13,13.996,12.776,13.996,12.5L13.996,4.5C13.996,4.224,13.773,4,13.496,4" />
+            </DrawingGroup.Children>
+          </DrawingGroup>
+        </DrawingBrush.Drawing>
+      </DrawingBrush>
+    </Rectangle.Fill>
+  </Rectangle>
+</Viewbox>
\ No newline at end of file
diff --git a/VECTO3GUI2020/Resources/Icons/StatusInformationOutline_nohalo_16x.xaml b/VECTO3GUI2020/Resources/Icons/StatusInformationOutline_nohalo_16x.xaml
new file mode 100644
index 0000000000000000000000000000000000000000..9a31d5f1e2aeade975c276b7675c3aea461f161a
--- /dev/null
+++ b/VECTO3GUI2020/Resources/Icons/StatusInformationOutline_nohalo_16x.xaml
@@ -0,0 +1,18 @@
+ο»Ώ<!-- This file was generated by the AiToXaml tool.-->
+<!-- Tool Version: 14.0.22307.0 -->
+<Viewbox Width="16" Height="16" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
+  <Rectangle Width="16" Height="16">
+    <Rectangle.Fill>
+      <DrawingBrush>
+        <DrawingBrush.Drawing>
+          <DrawingGroup>
+            <DrawingGroup.Children>
+              <GeometryDrawing Brush="#00FFFFFF" Geometry="F1M16,16L0,16 0,0 16,0z" />
+              <GeometryDrawing Brush="#FF1AA1E2" Geometry="F1M7,5L8,5 8,4 7,4z M14,7.5C14,6.906 13.922,6.332 13.766,5.777 13.609,5.223 13.391,4.705 13.109,4.223 12.828,3.741 12.489,3.302 12.094,2.906 11.698,2.51 11.259,2.172 10.777,1.891 10.296,1.609 9.777,1.391 9.223,1.234 8.668,1.078 8.094,1 7.5,1 6.901,1 6.326,1.078 5.773,1.234 5.221,1.391 4.705,1.609 4.223,1.891 3.741,2.172 3.302,2.51 2.906,2.906 2.51,3.302 2.172,3.741 1.891,4.223 1.609,4.705 1.391,5.223 1.234,5.777 1.078,6.332 1,6.906 1,7.5 1,8.094 1.078,8.668 1.234,9.223 1.391,9.777 1.609,10.296 1.891,10.777 2.172,11.259 2.51,11.698 2.906,12.094 3.302,12.489 3.741,12.828 4.223,13.109 4.705,13.391 5.221,13.609 5.773,13.766 6.326,13.922 6.901,14 7.5,14 8.094,14 8.668,13.922 9.223,13.766 9.777,13.609 10.296,13.391 10.777,13.109 11.259,12.828 11.698,12.489 12.094,12.094 12.489,11.698 12.828,11.259 13.109,10.777 13.391,10.296 13.609,9.779 13.766,9.227 13.922,8.674 14,8.099 14,7.5 M15,7.5C15,8.193 14.911,8.858 14.734,9.496 14.558,10.134 14.306,10.731 13.98,11.289 13.655,11.847 13.265,12.353 12.809,12.809 12.353,13.265 11.847,13.655 11.289,13.98 10.731,14.306 10.134,14.558 9.496,14.734 8.858,14.911 8.193,15 7.5,15 6.807,15 6.142,14.911 5.504,14.734 4.866,14.558 4.268,14.306 3.711,13.98 3.154,13.655 2.647,13.265 2.191,12.809 1.736,12.353 1.345,11.847 1.02,11.289 0.694,10.731 0.443,10.134 0.266,9.496 0.088,8.858 0,8.193 0,7.5 0,6.807 0.088,6.142 0.266,5.504 0.443,4.866 0.694,4.268 1.02,3.711 1.345,3.154 1.736,2.647 2.191,2.191 2.647,1.736 3.154,1.345 3.711,1.02 4.268,0.694000000000001 4.866,0.443 5.504,0.266 6.142,0.0879999999999992 6.807,0 7.5,0 8.193,0 8.858,0.0879999999999992 9.496,0.266 10.134,0.443 10.731,0.694000000000001 11.289,1.02 11.847,1.345 12.353,1.736 12.809,2.191 13.265,2.647 13.655,3.154 13.98,3.711 14.306,4.268 14.558,4.866 14.734,5.504 14.911,6.142 15,6.807 15,7.5 M7,6L8,6 8,11 7,11z" />
+            </DrawingGroup.Children>
+          </DrawingGroup>
+        </DrawingBrush.Drawing>
+      </DrawingBrush>
+    </Rectangle.Fill>
+  </Rectangle>
+</Viewbox>
\ No newline at end of file
diff --git a/VECTO3GUI2020/Resources/Icons/drawables.xaml b/VECTO3GUI2020/Resources/Icons/drawables.xaml
index 2d2c760217db5d9d2b2519a774f34d0e9c52e469..cae566a8905183a54e27cc4438048d3594a6a396 100644
--- a/VECTO3GUI2020/Resources/Icons/drawables.xaml
+++ b/VECTO3GUI2020/Resources/Icons/drawables.xaml
@@ -66,4 +66,45 @@
             </Rectangle>
         </Viewbox>
     </DataTemplate>
+    <DataTemplate x:Key="FolderIcon">
+        <Viewbox Width="16" Height="16" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
+            <Rectangle Width="16" Height="16">
+                <Rectangle.Fill>
+                    <DrawingBrush>
+                        <DrawingBrush.Drawing>
+                            <DrawingGroup>
+                                <DrawingGroup.Children>
+                                    <GeometryDrawing Brush="#00FFFFFF" Geometry="F1M0,0L16,0 16,16 0,16z" />
+                                    <GeometryDrawing Brush="#FFF6F6F6" Geometry="F1M1.5,1L9.61,1 10.61,3 13.496,3C14.323,3,14.996,3.673,14.996,4.5L14.996,12.5C14.996,13.327,14.323,14,13.496,14L1.5,14C0.673,14,0,13.327,0,12.5L0,2.5C0,1.673,0.673,1,1.5,1" />
+                                    <GeometryDrawing Brush="#FFEFEFF0" Geometry="F1M1.9998,3.0004L1.9998,4.0004 8.8738,4.0004 8.3738,3.0004z" />
+                                    <GeometryDrawing Brush="#FFDBB679" Geometry="F1M2,3L8.374,3 8.874,4 2,4z M13.496,4L10,4 9.992,4 8.992,2 1.5,2C1.225,2,1,2.224,1,2.5L1,12.5C1,12.776,1.225,13,1.5,13L13.496,13C13.773,13,13.996,12.776,13.996,12.5L13.996,4.5C13.996,4.224,13.773,4,13.496,4" />
+                                </DrawingGroup.Children>
+                            </DrawingGroup>
+                        </DrawingBrush.Drawing>
+                    </DrawingBrush>
+                </Rectangle.Fill>
+            </Rectangle>
+        </Viewbox>
+    </DataTemplate>
+
+    <DataTemplate x:Key="InformationIcon">
+        <Viewbox Width="16" Height="16" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
+            <Rectangle Width="16" Height="16">
+                <Rectangle.Fill>
+                    <DrawingBrush>
+                        <DrawingBrush.Drawing>
+                            <DrawingGroup>
+                                <DrawingGroup.Children>
+                                    <GeometryDrawing Brush="#00FFFFFF" Geometry="F1M16,16L0,16 0,0 16,0z" />
+                                    <GeometryDrawing Brush="{StaticResource AccentColorButton}" Geometry="F1M7,5L8,5 8,4 7,4z M14,7.5C14,6.906 13.922,6.332 13.766,5.777 13.609,5.223 13.391,4.705 13.109,4.223 12.828,3.741 12.489,3.302 12.094,2.906 11.698,2.51 11.259,2.172 10.777,1.891 10.296,1.609 9.777,1.391 9.223,1.234 8.668,1.078 8.094,1 7.5,1 6.901,1 6.326,1.078 5.773,1.234 5.221,1.391 4.705,1.609 4.223,1.891 3.741,2.172 3.302,2.51 2.906,2.906 2.51,3.302 2.172,3.741 1.891,4.223 1.609,4.705 1.391,5.223 1.234,5.777 1.078,6.332 1,6.906 1,7.5 1,8.094 1.078,8.668 1.234,9.223 1.391,9.777 1.609,10.296 1.891,10.777 2.172,11.259 2.51,11.698 2.906,12.094 3.302,12.489 3.741,12.828 4.223,13.109 4.705,13.391 5.221,13.609 5.773,13.766 6.326,13.922 6.901,14 7.5,14 8.094,14 8.668,13.922 9.223,13.766 9.777,13.609 10.296,13.391 10.777,13.109 11.259,12.828 11.698,12.489 12.094,12.094 12.489,11.698 12.828,11.259 13.109,10.777 13.391,10.296 13.609,9.779 13.766,9.227 13.922,8.674 14,8.099 14,7.5 M15,7.5C15,8.193 14.911,8.858 14.734,9.496 14.558,10.134 14.306,10.731 13.98,11.289 13.655,11.847 13.265,12.353 12.809,12.809 12.353,13.265 11.847,13.655 11.289,13.98 10.731,14.306 10.134,14.558 9.496,14.734 8.858,14.911 8.193,15 7.5,15 6.807,15 6.142,14.911 5.504,14.734 4.866,14.558 4.268,14.306 3.711,13.98 3.154,13.655 2.647,13.265 2.191,12.809 1.736,12.353 1.345,11.847 1.02,11.289 0.694,10.731 0.443,10.134 0.266,9.496 0.088,8.858 0,8.193 0,7.5 0,6.807 0.088,6.142 0.266,5.504 0.443,4.866 0.694,4.268 1.02,3.711 1.345,3.154 1.736,2.647 2.191,2.191 2.647,1.736 3.154,1.345 3.711,1.02 4.268,0.694000000000001 4.866,0.443 5.504,0.266 6.142,0.0879999999999992 6.807,0 7.5,0 8.193,0 8.858,0.0879999999999992 9.496,0.266 10.134,0.443 10.731,0.694000000000001 11.289,1.02 11.847,1.345 12.353,1.736 12.809,2.191 13.265,2.647 13.655,3.154 13.98,3.711 14.306,4.268 14.558,4.866 14.734,5.504 14.911,6.142 15,6.807 15,7.5 M7,6L8,6 8,11 7,11z" />
+
+                                    <!--<GeometryDrawing Brush="#FF1AA1E2" Geometry="F1M7,5L8,5 8,4 7,4z M14,7.5C14,6.906 13.922,6.332 13.766,5.777 13.609,5.223 13.391,4.705 13.109,4.223 12.828,3.741 12.489,3.302 12.094,2.906 11.698,2.51 11.259,2.172 10.777,1.891 10.296,1.609 9.777,1.391 9.223,1.234 8.668,1.078 8.094,1 7.5,1 6.901,1 6.326,1.078 5.773,1.234 5.221,1.391 4.705,1.609 4.223,1.891 3.741,2.172 3.302,2.51 2.906,2.906 2.51,3.302 2.172,3.741 1.891,4.223 1.609,4.705 1.391,5.223 1.234,5.777 1.078,6.332 1,6.906 1,7.5 1,8.094 1.078,8.668 1.234,9.223 1.391,9.777 1.609,10.296 1.891,10.777 2.172,11.259 2.51,11.698 2.906,12.094 3.302,12.489 3.741,12.828 4.223,13.109 4.705,13.391 5.221,13.609 5.773,13.766 6.326,13.922 6.901,14 7.5,14 8.094,14 8.668,13.922 9.223,13.766 9.777,13.609 10.296,13.391 10.777,13.109 11.259,12.828 11.698,12.489 12.094,12.094 12.489,11.698 12.828,11.259 13.109,10.777 13.391,10.296 13.609,9.779 13.766,9.227 13.922,8.674 14,8.099 14,7.5 M15,7.5C15,8.193 14.911,8.858 14.734,9.496 14.558,10.134 14.306,10.731 13.98,11.289 13.655,11.847 13.265,12.353 12.809,12.809 12.353,13.265 11.847,13.655 11.289,13.98 10.731,14.306 10.134,14.558 9.496,14.734 8.858,14.911 8.193,15 7.5,15 6.807,15 6.142,14.911 5.504,14.734 4.866,14.558 4.268,14.306 3.711,13.98 3.154,13.655 2.647,13.265 2.191,12.809 1.736,12.353 1.345,11.847 1.02,11.289 0.694,10.731 0.443,10.134 0.266,9.496 0.088,8.858 0,8.193 0,7.5 0,6.807 0.088,6.142 0.266,5.504 0.443,4.866 0.694,4.268 1.02,3.711 1.345,3.154 1.736,2.647 2.191,2.191 2.647,1.736 3.154,1.345 3.711,1.02 4.268,0.694000000000001 4.866,0.443 5.504,0.266 6.142,0.0879999999999992 6.807,0 7.5,0 8.193,0 8.858,0.0879999999999992 9.496,0.266 10.134,0.443 10.731,0.694000000000001 11.289,1.02 11.847,1.345 12.353,1.736 12.809,2.191 13.265,2.647 13.655,3.154 13.98,3.711 14.306,4.268 14.558,4.866 14.734,5.504 14.911,6.142 15,6.807 15,7.5 M7,6L8,6 8,11 7,11z" />-->
+                                </DrawingGroup.Children>
+                            </DrawingGroup>
+                        </DrawingBrush.Drawing>
+                    </DrawingBrush>
+                </Rectangle.Fill>
+            </Rectangle>
+        </Viewbox>
+    </DataTemplate>
 </ResourceDictionary>
\ No newline at end of file
diff --git a/VECTO3GUI2020/Resources/Images/JRC-About.png b/VECTO3GUI2020/Resources/Images/JRC-About.png
new file mode 100644
index 0000000000000000000000000000000000000000..7ccda103840925863e14e959ef1371dedc797ba6
Binary files /dev/null and b/VECTO3GUI2020/Resources/Images/JRC-About.png differ
diff --git a/VECTO3GUI2020/Resources/Images/VECTO-About.png b/VECTO3GUI2020/Resources/Images/VECTO-About.png
new file mode 100644
index 0000000000000000000000000000000000000000..4755b511626afcd157f27b0cf70e1c21b6ee067e
Binary files /dev/null and b/VECTO3GUI2020/Resources/Images/VECTO-About.png differ
diff --git a/VECTO3GUI2020/Resources/MultistageParameterDataTemplates.xaml b/VECTO3GUI2020/Resources/MultistageParameterDataTemplates.xaml
index f3499fc795fdb1f56bf70c50d1759cc676333396..8cfc734c7145572251067ec2c1cc7edb1054dff6 100644
--- a/VECTO3GUI2020/Resources/MultistageParameterDataTemplates.xaml
+++ b/VECTO3GUI2020/Resources/MultistageParameterDataTemplates.xaml
@@ -1,9 +1,9 @@
 ο»Ώ<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                     xmlns:customControls="clr-namespace:VECTO3GUI2020.Views.Multistage.CustomControls"
-                    xmlns:helper="clr-namespace:VECTO3GUI2020.Helper">
+                    xmlns:helper="clr-namespace:VECTO3GUI2020.Helper"
+                    xmlns:templateSelector="clr-namespace:VECTO3GUI2020.Helper.TemplateSelector">
 
-    <helper:MultistageParameterDataTemplateSelector x:Key="MultistageParameterTemplateSelector"/>
     <customControls:MultistageParameterTextView x:Key="MultistageTextBoxView"/>
     <customControls:MultistageParameterComboBoxView x:Key="MultistageComboBoxView"/>
 
diff --git a/VECTO3GUI2020/Resources/ObjectProvider.xaml b/VECTO3GUI2020/Resources/ObjectProvider.xaml
index 1c858f64f60896d10c1172ad92ddc26a8d65996b..91185b8f684c5c35100f50cd3d82a698c1439418 100644
--- a/VECTO3GUI2020/Resources/ObjectProvider.xaml
+++ b/VECTO3GUI2020/Resources/ObjectProvider.xaml
@@ -7,5 +7,4 @@
                         ObjectType="{x:Type helper:ConvertedSIDummyCreator}"
                         MethodName="CreateMillimeterDummy"/>
 
-    <ObjectDataProvider x:Key="BusStringResourceManager" ObjectType="{x:Type resources:ResourceManager}" ObjectInstance="{x:Static properties:BusStrings.ResourceManager}"/>
 </ResourceDictionary>
\ No newline at end of file
diff --git a/VECTO3GUI2020/Resources/Sizes.xaml b/VECTO3GUI2020/Resources/Sizes.xaml
new file mode 100644
index 0000000000000000000000000000000000000000..2b00aceb9559ab6d404d9d5c361691f6305424c0
--- /dev/null
+++ b/VECTO3GUI2020/Resources/Sizes.xaml
@@ -0,0 +1,8 @@
+ο»Ώ<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+                    xmlns:system="clr-namespace:System;assembly=mscorlib">
+    <!--<system:Double x:Key="EditJobUserControlWidth">
+        800.0
+    </system:Double>
+    <system:Double x:Key="EditJobUserControlHeight">600</system:Double>-->
+</ResourceDictionary>
\ No newline at end of file
diff --git a/VECTO3GUI2020/Resources/Styles/Colors.xaml b/VECTO3GUI2020/Resources/Styles/Colors.xaml
index 24f9fd5328a3a725b7cb3a642ff474827b645142..2cf976355e8909033f32cfa95b0b02fe82506a7f 100644
--- a/VECTO3GUI2020/Resources/Styles/Colors.xaml
+++ b/VECTO3GUI2020/Resources/Styles/Colors.xaml
@@ -15,4 +15,6 @@
                      Color="{Binding Color, Source={StaticResource AccentColorButton}, Mode=OneWay}"  />
 
 
+    <SolidColorBrush x:Key="SemiTransparentWhite" Opacity="0.5" Color="White"></SolidColorBrush>
+    <SolidColorBrush x:Key="SemiTransparentYellow" Opacity="0.5" Color="Gold"></SolidColorBrush>
 </ResourceDictionary>
\ No newline at end of file
diff --git a/VECTO3GUI2020/DataGridStyles.xaml b/VECTO3GUI2020/Resources/Styles/DataGridStyles.xaml
similarity index 88%
rename from VECTO3GUI2020/DataGridStyles.xaml
rename to VECTO3GUI2020/Resources/Styles/DataGridStyles.xaml
index 71273451d233039b3dca9760cbe966e2d8dbd21e..3d2178c42d7c415640fca69ad5c9ad947041d2c4 100644
--- a/VECTO3GUI2020/DataGridStyles.xaml
+++ b/VECTO3GUI2020/Resources/Styles/DataGridStyles.xaml
@@ -37,12 +37,15 @@
     <Style x:Key="DataGridCellStyle1" TargetType="{x:Type DataGridCell}">
         <Setter Property="Background" Value="Transparent"/>
         <Setter Property="BorderBrush" Value="Transparent"/>
-        <Setter Property="BorderThickness" Value="1"/>
+        <Setter Property="BorderThickness" Value="0"/>
+        <Setter Property="VerticalContentAlignment" Value="Center"/>
         <Setter Property="Template">
             <Setter.Value>
                 <ControlTemplate TargetType="{x:Type DataGridCell}">
                     <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
-                        <ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
+                        <ContentPresenter VerticalAlignment="Center" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}">
+                           
+                        </ContentPresenter>
                     </Border>
                 </ControlTemplate>
             </Setter.Value>
@@ -53,7 +56,7 @@
                 <!-- <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"/>
                 <Setter Property="BorderBrush" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/> -->
                 <Setter Property="Foreground" Value="Black"/>
-                <Setter Property="BorderBrush" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
+                <!--<Setter Property="BorderBrush" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>-->
             </Trigger>
             <Trigger Property="IsKeyboardFocusWithin" Value="True">
                 <Setter Property="BorderBrush" Value="{DynamicResource {x:Static DataGrid.FocusBorderBrushKey}}"/>
@@ -64,7 +67,7 @@
                     <Condition Property="Selector.IsSelectionActive" Value="false"/>
                 </MultiTrigger.Conditions>
                 <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.InactiveSelectionHighlightBrushKey}}"/>
-                <Setter Property="BorderBrush" Value="{DynamicResource {x:Static SystemColors.InactiveSelectionHighlightBrushKey}}"/>
+                <!--<Setter Property="BorderBrush" Value="{DynamicResource {x:Static SystemColors.InactiveSelectionHighlightBrushKey}}"/>-->
                 <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.InactiveSelectionHighlightTextBrushKey}}"/>
             </MultiTrigger>
             <Trigger Property="IsEnabled" Value="false">
diff --git a/VECTO3GUI2020/Resources/Templates/ButtonTemplates.xaml b/VECTO3GUI2020/Resources/Templates/ButtonTemplates.xaml
new file mode 100644
index 0000000000000000000000000000000000000000..72b220dc8dc1e8b36c766f283b5e269aa7d320b6
--- /dev/null
+++ b/VECTO3GUI2020/Resources/Templates/ButtonTemplates.xaml
@@ -0,0 +1,11 @@
+ο»Ώ<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+   
+    <ControlTemplate x:Key="multistageParameterControlErrorTemplate">
+        <Grid>
+            <AdornedElementPlaceholder x:Name="placeHolder"></AdornedElementPlaceholder>
+            <TextBlock Text="!" Height="Auto" FontWeight="ExtraBold" Foreground="OrangeRed" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0 0 -10 0"></TextBlock>
+        </Grid>
+
+    </ControlTemplate>
+</ResourceDictionary>
\ No newline at end of file
diff --git a/VECTO3GUI2020/Resources/ViewModelBindings.xaml b/VECTO3GUI2020/Resources/ViewModelBindings.xaml
index 8ab51b42b3298ef42586280491f1b96d77eb0b38..8c644cee027e7fa3d676bed2e31c27b9a82d5e73 100644
--- a/VECTO3GUI2020/Resources/ViewModelBindings.xaml
+++ b/VECTO3GUI2020/Resources/ViewModelBindings.xaml
@@ -9,10 +9,12 @@
                     xmlns:vehicleimpl="clr-namespace:VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle"
                     xmlns:vehicleviews="clr-namespace:VECTO3GUI2020.Views.JobEditViews.Vehicle"
                     xmlns:multistageviews="clr-namespace:VECTO3GUI2020.Views.Multistage"
+                    xmlns:additionaljobInfoViews="clr-namespace:VECTO3GUI2020.Views.Multistage.AdditionalJobInfoViews"
                     xmlns:componentimpl="clr-namespace:VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components"
                     xmlns:componentviews="clr-namespace:VECTO3GUI2020.Views.JobEditViews.Vehicle.Components"
                     xmlns:multistageimpl="clr-namespace:VECTO3GUI2020.ViewModel.MultiStage.Implementation"
-                    xmlns:viewModel="clr-namespace:VECTO3GUI2020.ViewModel">
+                    xmlns:viewModel="clr-namespace:VECTO3GUI2020.ViewModel"
+                    xmlns:common="clr-namespace:VECTO3GUI2020.ViewModel.Implementation.Common">
     <DataTemplate x:Shared="False" DataType="{x:Type impl:JobListViewModel}">
         <views:JobListView />
     </DataTemplate>
@@ -28,7 +30,9 @@
         <views:SettingsView/>
     </DataTemplate>
 
-    
+    <DataTemplate x:Shared="False" DataType="{x:Type impl:AboutViewModel}">
+        <views:AboutView></views:AboutView>
+    </DataTemplate>
 
 
 
@@ -210,7 +214,7 @@
         <multistageviews:ManufacturingStageView></multistageviews:ManufacturingStageView>
     </DataTemplate>
 
-    <DataTemplate x:Shared="False" DataType="{x:Type multistageimpl:DeclarationInterimStageBusVehicleViewModel_v2_8}">
+    <DataTemplate x:Shared="False" DataType="{x:Type multistageimpl:InterimStageBusVehicleViewModel_v2_8}">
         <multistageviews:VehicleView_v2_8/>
     </DataTemplate>
 
@@ -225,10 +229,31 @@
     <DataTemplate x:Shared="False" DataType="{x:Type multistageimpl:MultistageAuxiliariesViewModel}">
         <multistageviews:ManufacturingStageAuxiliariesView/>
     </DataTemplate>
+
+    <DataTemplate DataType="{x:Type multistageimpl:StageInputViewModel}">
+        <multistageviews:ManufacturingStageView></multistageviews:ManufacturingStageView>
+    </DataTemplate>
+
+    <DataTemplate DataType="{x:Type multistageimpl:CreateVifViewModel}">
+        <multistageviews:CreateVifView/>
+    </DataTemplate>
     <!--#endregion-->
 
     <DataTemplate DataType="{x:Type local:TestViewModel}">
         <local:Test></local:Test>
     </DataTemplate>
 
+    <DataTemplate DataType="{x:Type common:AdditionalJobInfoViewModelMultiStage}">
+        <additionaljobInfoViews:AdditionalJobInfoViewMultiStage/>
+    </DataTemplate>
+
+    <DataTemplate DataType="{x:Type common:AdditionalJobInfoViewModelNewVif}">
+        <additionaljobInfoViews:AdditionalJobInfoViewNewVIF/>
+    </DataTemplate>
+
+    <DataTemplate DataType="{x:Type common:AdditionalJobInfoViewModelStageInput}">
+        <additionaljobInfoViews:AdditionalJobInfoStageInput/>
+    </DataTemplate>
+
+
 </ResourceDictionary>
\ No newline at end of file
diff --git a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLVehicleWriter.cs b/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLVehicleWriter.cs
index 9be3eb5d59e8b0f9ef47495a083cd02b083c5300..2b18d352282c7a928c9ee52f1d50a64d1dad6534 100644
--- a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLVehicleWriter.cs
+++ b/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLVehicleWriter.cs
@@ -1,24 +1,21 @@
 ο»Ώusing System;
-using System.Collections.Generic;
 using System.Diagnostics;
 using System.Linq;
 using System.Xml.Linq;
 using Castle.Core.Internal;
-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.InputData.FileIO.XML.Declaration.DataProvider;
-using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces;
 using VECTO3GUI2020.Helper;
 using VECTO3GUI2020.Util.XML.Interfaces;
 using VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle;
 using VECTO3GUI2020.ViewModel.Interfaces.JobEdit.Vehicle;
 using VECTO3GUI2020.ViewModel.MultiStage.Implementation;
 
-namespace VECTO3GUI2020.Util.XML.Implementation
+namespace VECTO3GUI2020.Util.XML.Implementation.ComponentWriter
 {
     public abstract class XMLVehicleWriter : IXMLVehicleWriter
     {
@@ -51,7 +48,6 @@ namespace VECTO3GUI2020.Util.XML.Implementation
         {
 			if (_Xelement == null) {
 				Initialize();
-				
 				CreateElements();
 			}
 			return _Xelement;
@@ -190,14 +186,16 @@ namespace VECTO3GUI2020.Util.XML.Implementation
 	
     public class XMLVehicleWriter_ExcemptedVehicle_v2_2 { }
 
+
 	public class XMLVehicleWriter_v2_8 : XMLVehicleWriter
 	{
+		private readonly bool _exempted;
 		public static readonly string[] SUPPORTEDVERSIONS = {
-			typeof(DeclarationInterimStageBusVehicleViewModel_v2_8).ToString()
+			typeof(InterimStageBusVehicleViewModel_v2_8).ToString()
 		};
 		public XMLVehicleWriter_v2_8(IVehicleDeclarationInputData inputData, IXMLWriterFactory xmlWriterFactory) : base(inputData, xmlWriterFactory)
 		{
-			
+			_exempted = inputData.ExemptedVehicle;
 
 		}
 
@@ -209,14 +207,21 @@ namespace VECTO3GUI2020.Util.XML.Implementation
 
 			_Xelement = new XElement(XMLNamespaces.V20 + XMLNames.Component_Vehicle);
 			
-			_Xelement.Add(new XAttribute(XMLNames.Component_ID_Attr, "TODO_ADDIDENTIFIER"));
-			_Xelement.Add(new XAttribute(XMLNamespaces.Xsi + XMLNames.Attr_Type, "InterimStageInputType"));
+			_Xelement.Add(new XAttribute(XMLNames.Component_ID_Attr, _inputData.Identifier ?? ("VEH-" + Guid.NewGuid().ToString("n").Substring(0, 20))));
+			if (_exempted) {
+				_Xelement.Add(new XAttribute(XMLNamespaces.Xsi + XMLNames.Attr_Type, "ExemptedInterimStageInputType"));
+			} else {
+				_Xelement.Add(new XAttribute(XMLNamespaces.Xsi + XMLNames.Attr_Type, "InterimStageInputType"));
+			}
+			
 		}
 
 		protected override void CreateElements()
 		{
-
-
+			if (_exempted) {
+				CreateExemptedElements();
+				return;
+			}
 			_Xelement.Add(new XElement(_defaultNamespace + XMLNames.Component_Manufacturer, _inputData.Manufacturer));
 			_Xelement.Add(new XElement(_defaultNamespace + XMLNames.Component_ManufacturerAddress,
 				_inputData.ManufacturerAddress));
@@ -226,14 +231,10 @@ namespace VECTO3GUI2020.Util.XML.Implementation
 			_Xelement.Add(new XElement(_defaultNamespace + XMLNames.Component_Model, _inputData.Model));
 			_Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_LegislativeCategory, _inputData.LegislativeClass.ToXMLFormat()));
 
-			
-
-
 			_Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_CorrectedActualMass, _inputData.CurbMassChassis?.ToXMLFormat(0)));
 			_Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_TPMLM,
 				_inputData.GrossVehicleMassRating?.ToXMLFormat(0)));
 
-
 			_Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_AirdragModifiedMultistage, _inputData.AirdragModifiedMultistage));
 			_Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_NgTankSystem, _inputData.TankSystem));
 			_Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_RegisteredClass, _inputData.RegisteredClass.ToXMLFormat()));
@@ -246,7 +247,6 @@ namespace VECTO3GUI2020.Util.XML.Implementation
 
 			_Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_LowEntry, _inputData.LowEntry));
 
-
 			_Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_HeighIntegratedBody, _inputData.Height?.ConvertToMilliMeter()));
 			_Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_VehicleLength, _inputData.Length?.ConvertToMilliMeter()));
 
@@ -309,6 +309,38 @@ namespace VECTO3GUI2020.Util.XML.Implementation
 			
 		}
 
+		private void CreateExemptedElements()
+		{
+			_Xelement.Add(new XElement(_defaultNamespace + XMLNames.Component_Manufacturer, _inputData.Manufacturer));
+			_Xelement.Add(new XElement(_defaultNamespace + XMLNames.Component_ManufacturerAddress,
+				_inputData.ManufacturerAddress));
+
+			_Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_VIN, _inputData.VIN));
+			_Xelement.Add(new XElement(_defaultNamespace + XMLNames.Component_Date, DateTime.Today.ToXmlFormat()));
+			_Xelement.Add(new XElement(_defaultNamespace + XMLNames.Component_Model, _inputData.Model));
+			_Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_LegislativeCategory, _inputData.LegislativeClass.ToXMLFormat()));
+
+			_Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_CorrectedActualMass, _inputData.CurbMassChassis?.ToXMLFormat(0)));
+			_Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_TPMLM,
+				_inputData.GrossVehicleMassRating?.ToXMLFormat(0)));
+
+
+			_Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_RegisteredClass, _inputData.RegisteredClass.ToXMLFormat()));
+
+			_Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_NumberPassengerSeatsLowerDeck, _inputData.NumberPassengerSeatsLowerDeck));
+			_Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_NumberPassengersStandingLowerDeck, _inputData.NumberPassengersStandingUpperDeck));
+
+			_Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_NumberPassengerSeatsUpperDeck, _inputData.NumberPassengerSeatsUpperDeck));
+			_Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_NumberPassengersStandingUpperDeck, _inputData.NumberPassengersStandingUpperDeck));
+			_Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_BodyworkCode, _inputData.VehicleCode.ToXMLFormat()));
+
+			_Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_LowEntry, _inputData.LowEntry));
+
+			_Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_HeighIntegratedBody, _inputData.Height?.ConvertToMilliMeter()));
+
+			_Xelement.DescendantsAndSelf().Where(e => e.Value.IsNullOrEmpty()).Remove();
+		}
+
 		#endregion
 	}
 
diff --git a/VECTO3GUI2020/VECTO3GUI2020.csproj b/VECTO3GUI2020/VECTO3GUI2020.csproj
index 979084874e8c8c1db94549333023f156c8af2f4b..10a1a9cc7a7e9fe089c01438b481f9208079e8b6 100644
--- a/VECTO3GUI2020/VECTO3GUI2020.csproj
+++ b/VECTO3GUI2020/VECTO3GUI2020.csproj
@@ -31,7 +31,7 @@
     <BootstrapperEnabled>true</BootstrapperEnabled>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <PlatformTarget>AnyCPU</PlatformTarget>
+    <PlatformTarget>x64</PlatformTarget>
     <DebugSymbols>true</DebugSymbols>
     <DebugType>full</DebugType>
     <Optimize>false</Optimize>
@@ -41,7 +41,7 @@
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <PlatformTarget>AnyCPU</PlatformTarget>
+    <PlatformTarget>x64</PlatformTarget>
     <DebugType>pdbonly</DebugType>
     <Optimize>true</Optimize>
     <OutputPath>bin\Release\</OutputPath>
@@ -77,6 +77,12 @@
     <Reference Include="Microsoft.WindowsAPICodePack.Shell, Version=1.1.0.0, Culture=neutral, processorArchitecture=MSIL">
       <HintPath>..\packages\WindowsAPICodePack-Shell.1.1.1\lib\Microsoft.WindowsAPICodePack.Shell.dll</HintPath>
     </Reference>
+    <Reference Include="Microsoft.Xaml.Behaviors, Version=1.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+      <HintPath>..\packages\Microsoft.Xaml.Behaviors.Wpf.1.1.31\lib\net45\Microsoft.Xaml.Behaviors.dll</HintPath>
+    </Reference>
+    <Reference Include="Newtonsoft.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
+      <HintPath>..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
+    </Reference>
     <Reference Include="Ninject, Version=3.3.4.0, Culture=neutral, PublicKeyToken=c7192dc5380945e7, processorArchitecture=MSIL">
       <HintPath>..\packages\Ninject.3.3.4\lib\net45\Ninject.dll</HintPath>
     </Reference>
@@ -86,6 +92,9 @@
     <Reference Include="Ninject.Extensions.Factory, Version=3.3.3.0, Culture=neutral, PublicKeyToken=c7192dc5380945e7, processorArchitecture=MSIL">
       <HintPath>..\packages\Ninject.Extensions.Factory.3.3.3\lib\net45\Ninject.Extensions.Factory.dll</HintPath>
     </Reference>
+    <Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
+      <HintPath>..\packages\NLog.4.5.11\lib\net45\NLog.dll</HintPath>
+    </Reference>
     <Reference Include="PresentationFramework.Aero2" />
     <Reference Include="System" />
     <Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
@@ -95,8 +104,10 @@
       <HintPath>..\packages\System.ComponentModel.Annotations.5.0.0\lib\net461\System.ComponentModel.Annotations.dll</HintPath>
     </Reference>
     <Reference Include="System.ComponentModel.DataAnnotations" />
+    <Reference Include="System.Configuration" />
     <Reference Include="System.Data" />
     <Reference Include="System.Drawing" />
+    <Reference Include="System.IO.Compression" />
     <Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
       <HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
     </Reference>
@@ -116,9 +127,12 @@
     <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
       <HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.5.0.0\lib\net45\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
     </Reference>
+    <Reference Include="System.Runtime.Serialization" />
+    <Reference Include="System.ServiceModel" />
     <Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
       <HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
     </Reference>
+    <Reference Include="System.Transactions" />
     <Reference Include="System.Windows" />
     <Reference Include="System.Windows.Controls.DataVisualization.Toolkit, Version=4.0.0.0, Culture=neutral, processorArchitecture=MSIL">
       <HintPath>..\packages\System.Windows.Controls.DataVisualization.Toolkit.4.0.0.0\lib\net40-Client\System.Windows.Controls.DataVisualization.Toolkit.dll</HintPath>
@@ -140,6 +154,8 @@
       <Generator>MSBuild:Compile</Generator>
       <SubType>Designer</SubType>
     </ApplicationDefinition>
+    <Compile Include="Behaviours\AutoScrollDataGridBehaviour.cs" />
+    <Compile Include="Behaviours\PopUpHorizontalAlignmentBehavior.cs" />
     <Compile Include="Helper\ConvertedSIDummyCreator.cs" />
     <Compile Include="Helper\Converter\AlwaysVisibleConverter.cs" />
     <Compile Include="Helper\Converter\BoolToVisibilityConverter.cs" />
@@ -147,32 +163,49 @@
     <Compile Include="Helper\Converter\InvertBoolConverter.cs" />
     <Compile Include="Helper\Converter\JobTypeStringConverter.cs" />
     <Compile Include="Helper\Converter\LabledTextBoxLabelConverter.cs" />
+    <Compile Include="Helper\Converter\MultipleBoolConverter.cs" />
     <Compile Include="Helper\Converter\MultistageParameterModeToVisibilityConverter.cs" />
     <Compile Include="Helper\Converter\BoolToIntConverter.cs" />
     <Compile Include="Helper\Converter\NullToUnsetValueConverter.cs" />
     <Compile Include="Helper\Converter\NullToVisibilityConverter.cs" />
     <Compile Include="Helper\Converter\LabledTextBoxConverter.cs" />
+    <Compile Include="Helper\Converter\PropertyNameToLabelTextConverter.cs" />
     <Compile Include="Helper\Converter\SIToUnitString.cs" />
     <Compile Include="Helper\Converter\SIValueToStringConverter.cs" />
     <Compile Include="Helper\Converter\VehicleCategoryToStringConverter.cs" />
     <Compile Include="Helper\Converter\XToBoolConverter.cs" />
     <Compile Include="Helper\DoubleValidation.cs" />
+    <Compile Include="Helper\ExceptionExtension.cs" />
     <Compile Include="Helper\Exceptions.cs" />
     <Compile Include="Helper\EnumHelper.cs" />
-    <Compile Include="Helper\IndexedStorage.cs" />
+    <Compile Include="Helper\FileHelper.cs" />
     <Compile Include="Helper\IWindowHelper.cs" />
     <Compile Include="Helper\DialogHelper.cs" />
-    <Compile Include="Helper\MultistageParameterDataTemplateSelector.cs" />
-    <Compile Include="Helper\MultistageParameterViewModel.cs" />
-    <Compile Include="Helper\NameOfMarkUpExtension.cs" />
+    <Compile Include="Helper\ObservableDictionary.cs" />
+    <Compile Include="Helper\ProcessHelper.cs" />
+    <Compile Include="Helper\VisualTreeHelperExtensions.cs" />
+    <Compile Include="Helper\TemplateSelector\MultistageParameterDataTemplateSelector.cs" />
+    <Compile Include="Model\Multistage\JSONJob.cs" />
+    <Compile Include="Properties\GUILabels.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>GUILabels.resx</DependentUpon>
+    </Compile>
+    <Compile Include="ViewModel\Implementation\Common\AdditionalJobInfoViewModel.cs" />
+    <Compile Include="ViewModel\Implementation\Common\BackingStorage.cs" />
+    <Compile Include="ViewModel\Implementation\Common\ObservableObject.cs" />
+    <Compile Include="ViewModel\MultiStage\Implementation\MultistageParameterViewModel.cs" />
     <Compile Include="Helper\NameResolver.cs" />
+    <Compile Include="Helper\TemplateSelector\MultistageVehicleDataTemplateSelector.cs" />
     <Compile Include="Helper\WindowHelper.cs" />
     <Compile Include="Helper\XMLExtension.cs" />
     <Compile Include="Helper\XmlHelper.cs" />
     <Compile Include="Ninject\FactoryModule.cs" />
     <Compile Include="Ninject\IMultistageDependencies.cs" />
+    <Compile Include="Ninject\MultiStageViewModelFactory.cs" />
     <Compile Include="Ninject\MultistageLazyDependencies.cs" />
     <Compile Include="Ninject\MultistageModule.cs" />
+    <Compile Include="Ninject\Vecto3GUI2020Module.cs" />
     <Compile Include="Properties\Annotations.cs" />
     <Compile Include="Properties\BusStrings.Designer.cs">
       <AutoGen>True</AutoGen>
@@ -190,6 +223,8 @@
     <Compile Include="TestViewModel.cs" />
     <Compile Include="Util\XML\Implementation\ComponentWriter\XMLBusAuxiliariesWriter.cs" />
     <Compile Include="Util\XML\Implementation\ComponentWriter\XMLPTOWriter.cs" />
+    <Compile Include="ViewModel\Implementation\AboutViewModel.cs" />
+    <Compile Include="ViewModel\MultiStage\Implementation\CreateVifViewModel.cs" />
     <Compile Include="ViewModel\Implementation\Document\DeclarationJobViewModel.cs" />
     <Compile Include="ViewModel\Implementation\Document\DeclarationTrailerJobDocumentViewModel.cs" />
     <Compile Include="Model\Interfaces\IAuxiliaryModelFactory.cs" />
@@ -302,9 +337,14 @@
     <Compile Include="ViewModel\MultiStage\Implementation\MultistageAuxiliariesViewModel.cs" />
     <Compile Include="ViewModel\MultiStage\Implementation\NewMultiStageJobViewModel.cs" />
     <Compile Include="ViewModel\MultiStage\Implementation\MultistageJobViewModel_v0_1.cs" />
+    <Compile Include="ViewModel\MultiStage\Implementation\StageInputViewModel.cs" />
+    <Compile Include="ViewModel\MultiStage\Implementation\StageViewModelBase.cs" />
     <Compile Include="ViewModel\MultiStage\Interfaces\IMultistageAirdragViewModel.cs" />
     <Compile Include="ViewModel\MultiStage\Interfaces\IMultiStageViewModelFactory.cs" />
     <Compile Include="ViewModel\Implementation\OutputViewModel.cs" />
+    <Compile Include="Views\AboutView.xaml.cs">
+      <DependentUpon>AboutView.xaml</DependentUpon>
+    </Compile>
     <Compile Include="Views\CustomControls\ComboParameter.xaml.cs">
       <DependentUpon>ComboParameter.xaml</DependentUpon>
     </Compile>
@@ -396,12 +436,27 @@
     <Compile Include="Views\MessageView.xaml.cs">
       <DependentUpon>MessageView.xaml</DependentUpon>
     </Compile>
+    <Compile Include="Views\Multistage\AdditionalJobInfoViews\AdditionalJobInfoStageInput.xaml.cs">
+      <DependentUpon>AdditionalJobInfoStageInput.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="Views\Multistage\AdditionalJobInfoViews\AdditionalJobInfoViewMultiStage.xaml.cs">
+      <DependentUpon>AdditionalJobInfoViewMultiStage.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="Views\Multistage\AdditionalJobInfoViews\AdditionalJobInfoViewNewVIF.xaml.cs">
+      <DependentUpon>AdditionalJobInfoViewNewVIF.xaml</DependentUpon>
+    </Compile>
     <Compile Include="Views\Multistage\AirDragView_v2_8.xaml.cs">
       <DependentUpon>AirDragView_v2_8.xaml</DependentUpon>
     </Compile>
+    <Compile Include="Views\Multistage\CreateVifView.xaml.cs">
+      <DependentUpon>CreateVifView.xaml</DependentUpon>
+    </Compile>
     <Compile Include="Views\Multistage\CustomControls\FilePicker.xaml.cs">
       <DependentUpon>FilePicker.xaml</DependentUpon>
     </Compile>
+    <Compile Include="Views\Multistage\CustomControls\InputStageView.xaml.cs">
+      <DependentUpon>InputStageView.xaml</DependentUpon>
+    </Compile>
     <Compile Include="Views\Multistage\CustomControls\LabledTextBoxMultistage.xaml.cs">
       <DependentUpon>LabledTextBoxMultistage.xaml</DependentUpon>
     </Compile>
@@ -435,6 +490,9 @@
     <Compile Include="Views\Multistage\VehicleView_v2_8.xaml.cs">
       <DependentUpon>VehicleView_v2_8.xaml</DependentUpon>
     </Compile>
+    <Compile Include="Views\Multistage\VehicleView_v2_8_exempted.xaml.cs">
+      <DependentUpon>VehicleView_v2_8_exempted.xaml</DependentUpon>
+    </Compile>
     <Compile Include="Views\OutputView.xaml.cs">
       <DependentUpon>OutputView.xaml</DependentUpon>
     </Compile>
@@ -444,7 +502,19 @@
     <Compile Include="Views\XMLViewer.xaml.cs">
       <DependentUpon>XMLViewer.xaml</DependentUpon>
     </Compile>
-    <Page Include="DataGridStyles.xaml">
+    <Page Include="Resources\Icons\StatusInformationOutline_nohalo_16x.xaml">
+      <Generator>MSBuild:Compile</Generator>
+      <SubType>Designer</SubType>
+    </Page>
+    <Page Include="Resources\Sizes.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
+    <Page Include="Resources\Styles\DataGridStyles.xaml">
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
+    <Page Include="Resources\DataTemplateSelectors.xaml">
+      <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
     </Page>
     <Page Include="Resources\Icons\AddDocument_16x.xaml">
@@ -459,6 +529,10 @@
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
     </Page>
+    <Page Include="Resources\Icons\FolderClosed_16x.xaml">
+      <Generator>MSBuild:Compile</Generator>
+      <SubType>Designer</SubType>
+    </Page>
     <Page Include="Resources\Icons\Trash_16x.xaml">
       <Generator>MSBuild:Compile</Generator>
       <SubType>Designer</SubType>
@@ -498,6 +572,10 @@
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
     </Page>
+    <Page Include="Resources\Templates\ButtonTemplates.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
     <Page Include="Resources\Templates\ErrorTemplates.xaml">
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
@@ -510,6 +588,10 @@
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
     </Page>
+    <Page Include="Views\AboutView.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
     <Page Include="Views\CustomControls\ComboParameter.xaml">
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
@@ -630,14 +712,34 @@
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
     </Page>
+    <Page Include="Views\Multistage\AdditionalJobInfoViews\AdditionalJobInfoStageInput.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
+    <Page Include="Views\Multistage\AdditionalJobInfoViews\AdditionalJobInfoViewMultiStage.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
+    <Page Include="Views\Multistage\AdditionalJobInfoViews\AdditionalJobInfoViewNewVIF.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
     <Page Include="Views\Multistage\AirDragView_v2_8.xaml">
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
     </Page>
+    <Page Include="Views\Multistage\CreateVifView.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
     <Page Include="Views\Multistage\CustomControls\FilePicker.xaml">
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
     </Page>
+    <Page Include="Views\Multistage\CustomControls\InputStageView.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
     <Page Include="Views\Multistage\CustomControls\LabledTextBoxMultistage.xaml">
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
@@ -682,6 +784,10 @@
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
     </Page>
+    <Page Include="Views\Multistage\VehicleView_v2_8_exempted.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
     <Page Include="Views\OutputView.xaml">
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
@@ -713,6 +819,11 @@
       <Generator>PublicResXFileCodeGenerator</Generator>
       <LastGenOutput>BusStrings.Designer.cs</LastGenOutput>
     </EmbeddedResource>
+    <EmbeddedResource Include="Properties\GUILabels.resx">
+      <Generator>PublicResXFileCodeGenerator</Generator>
+      <LastGenOutput>GUILabels.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
     <EmbeddedResource Include="Properties\Strings.resx">
       <Generator>PublicResXFileCodeGenerator</Generator>
       <LastGenOutput>Strings.Designer.cs</LastGenOutput>
@@ -777,9 +888,7 @@
   <ItemGroup>
     <Resource Include="Resources\Icons\folderpicker.ico" />
   </ItemGroup>
-  <ItemGroup>
-    <Folder Include="Model\Multistage\" />
-  </ItemGroup>
+  <ItemGroup />
   <ItemGroup>
     <Resource Include="Resources\Icons\Trash_16x.ico" />
   </ItemGroup>
@@ -789,6 +898,12 @@
       <LastGenOutput>Version.cs</LastGenOutput>
     </None>
   </ItemGroup>
+  <ItemGroup>
+    <Resource Include="Resources\Images\JRC-About.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <Resource Include="Resources\Images\VECTO-About.png" />
+  </ItemGroup>
   <!-- ItemGroup>
     <Analyzer Include="..\packages\Microsoft.DependencyValidation.Analyzers.0.11.0\analyzers\dotnet\cs\Microsoft.DependencyValidation.Analyzers.resources.dll" />
   </-ItemGroup -->
diff --git a/VECTO3GUI2020/ViewModel/Implementation/AboutViewModel.cs b/VECTO3GUI2020/ViewModel/Implementation/AboutViewModel.cs
new file mode 100644
index 0000000000000000000000000000000000000000..de8eef21be44febe9c57829fd86e26d56a107d10
--- /dev/null
+++ b/VECTO3GUI2020/ViewModel/Implementation/AboutViewModel.cs
@@ -0,0 +1,72 @@
+ο»Ώusing System.Diagnostics;
+using System.Windows.Input;
+using Microsoft.Toolkit.Mvvm.Input;
+using VECTO3GUI2020.ViewModel.Implementation.Common;
+using VECTO3GUI2020.ViewModel.Interfaces;
+
+namespace VECTO3GUI2020.ViewModel.Implementation
+{
+	public class AboutViewModel : ViewModelBase, IMainViewModel
+	{
+		#region Members
+
+		private ICommand _euplLinkClickedCommand;
+		private ICommand _mailClickedCommand;
+		private ICommand _jrcPicClickedCommand;
+
+		#endregion
+
+		#region Properties
+
+		public string EUPLLink { get; set; }
+		public string JRCMail { get; set; }
+		public string JRCPic { get; set; }
+
+		#endregion
+
+		public AboutViewModel()
+		{
+			EUPLLink = "https://joinup.ec.europa.eu/community/eupl/og_page/eupl";
+			JRCMail = "mailto:jrc-vecto@ec.europa.eu";
+			JRCPic = "http://ec.europa.eu/dgs/jrc/index.cfm";
+		}
+		
+		#region Commands
+
+		public ICommand EUPLLinkClickedCommand
+		{
+			get
+			{
+				return _euplLinkClickedCommand ?? (_euplLinkClickedCommand = new RelayCommand(DoLinkClickedCommand));
+			}
+		}
+
+		private void DoLinkClickedCommand()
+		{
+			Process.Start(EUPLLink);
+		}
+
+		public ICommand MailClickedCommand
+		{
+			get { return _mailClickedCommand ?? (_mailClickedCommand = new RelayCommand(DoMailClickedCommand)); }
+		}
+
+		private void DoMailClickedCommand()
+		{
+			Process.Start(JRCMail);
+		}
+
+		public ICommand JrcPicClickedCommand
+		{
+			get { return _jrcPicClickedCommand ?? (_jrcPicClickedCommand = new RelayCommand(DoJrcPicClickedCommand)); }
+		}
+
+		private void DoJrcPicClickedCommand()
+		{
+			Process.Start(JRCPic);
+		}
+		#endregion
+
+
+	}
+}
diff --git a/VECTO3GUI2020/ViewModel/Implementation/Common/AdditionalJobInfoViewModel.cs b/VECTO3GUI2020/ViewModel/Implementation/Common/AdditionalJobInfoViewModel.cs
new file mode 100644
index 0000000000000000000000000000000000000000..cea5bd15ba5e33849543f5a64d88d87ebca105e2
--- /dev/null
+++ b/VECTO3GUI2020/ViewModel/Implementation/Common/AdditionalJobInfoViewModel.cs
@@ -0,0 +1,130 @@
+ο»Ώusing System;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.Diagnostics;
+using System.Linq;
+using System.Windows;
+using System.Windows.Media.TextFormatting;
+using TUGraz.VectoCommon.InputData;
+using VECTO3GUI2020.ViewModel.Interfaces.Common;
+using VECTO3GUI2020.ViewModel.MultiStage.Implementation;
+
+namespace VECTO3GUI2020.ViewModel.Implementation.Common
+{
+	public interface IAdditionalJobInfoViewModel
+	{
+		void SetParent(IViewModelBase parent);
+	}
+	public abstract class AdditionalJobInfoViewModelBase : ViewModelBase, IAdditionalJobInfoViewModel
+	{
+
+		#region Implementation of IAdditionalJobInfoViewModel
+
+		public string Information { get; } = "Nothing to show here";
+
+		public abstract void SetParent(IViewModelBase parent);
+
+
+		public AdditionalJobInfoViewModelBase()
+		{
+			SizeToContent = SizeToContent.WidthAndHeight;
+			MinHeight = 200;
+			MinWidth = 300;
+		}
+		#endregion
+	}
+
+	public class AdditionalJobInfoViewModelMultiStage : AdditionalJobInfoViewModelBase
+	{
+
+		private IMultiStageJobViewModel _parent;
+		private string _errorInfo;
+
+		public AdditionalJobInfoViewModelMultiStage()
+		{
+			Title = "Multistage Job Info";
+		}
+
+		#region Overrides of AdditionalJobInfoViewModelBase
+
+		public override void SetParent(IViewModelBase parent)
+		{
+			_parent = parent as IMultiStageJobViewModel;
+			if (parent == null) {
+				throw new ArgumentException(
+					"this class should only be used to extend the functionality of a class that implements the IMultistageJobViewModel interface");
+			}
+
+			//Title += $"- {_parent.DataSource.}"
+			if (_parent.CanBeSimulated) {
+				return;
+			}
+			
+			if(_parent.JobInputData?.ConsolidateManufacturingStage?.Vehicle?.VehicleDeclarationType !=
+				VehicleDeclarationType.final && !_parent.Exempted)
+			{
+				ErrorInfo = "Job is not declared as \"final\"";
+			}
+
+			
+			if (_parent.InvalidEntries != null && _parent.InvalidEntries.Count != 0) {
+				ErrorInfo = "This Job cannot be Simulated! The following inputs are missing or invalid";
+				foreach (var parentInvalidEntry in _parent.InvalidEntries)
+				{
+					InvalidEntries.Add(parentInvalidEntry);
+				}
+			}
+		}
+
+		public ObservableCollection<string> InvalidEntries { get; set; } = new ObservableCollection<string>();
+
+		public string ErrorInfo
+		{
+			get => _errorInfo;
+			set => SetProperty(ref _errorInfo, value);
+		}
+
+		#endregion
+	}
+
+	public class AdditionalJobInfoViewModelNewVif : AdditionalJobInfoViewModelBase
+	{
+		private CreateVifViewModel _parent;
+		public ObservableCollection<string> InvalidEntries { get; set; } = new ObservableCollection<string>();
+
+		#region Overrides of AdditionalJobInfoViewModelBase
+
+		public override void SetParent(IViewModelBase parent)
+		{
+			_parent = parent as CreateVifViewModel;
+            (_parent as INotifyPropertyChanged).PropertyChanged += AdditionalJobInfoViewModelNewVif_PropertyChanged;
+			Debug.Assert(_parent != null);
+		}
+
+        private void AdditionalJobInfoViewModelNewVif_PropertyChanged(object sender, PropertyChangedEventArgs e)
+        {
+			if (e.PropertyName == nameof(_parent.CanBeSimulated)) {
+
+
+
+			}
+		}
+
+
+
+        #endregion
+    }
+
+	public class AdditionalJobInfoViewModelStageInput : AdditionalJobInfoViewModelBase
+	{
+		private IStageViewModelBase stageViewModel;
+		#region Overrides of AdditionalJobInfoViewModelBase
+
+		public override void SetParent(IViewModelBase parent)
+		{
+			stageViewModel = parent as IStageViewModelBase;
+			Debug.Assert(stageViewModel != null);
+		}
+		#endregion
+	}
+}
\ No newline at end of file
diff --git a/VECTO3GUI2020/ViewModel/Implementation/Common/BackingStorage.cs b/VECTO3GUI2020/ViewModel/Implementation/Common/BackingStorage.cs
new file mode 100644
index 0000000000000000000000000000000000000000..45de76bb68f1528775f17a5666611bbe9382ee4b
--- /dev/null
+++ b/VECTO3GUI2020/ViewModel/Implementation/Common/BackingStorage.cs
@@ -0,0 +1,131 @@
+ο»Ώusing System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.Linq;
+using System.Reflection;
+using TUGraz.VectoCommon.Utils;
+
+namespace VECTO3GUI2020.ViewModel.Implementation.Common
+{
+	public class BackingStorage<T> : ObservableObject 
+		where T : INotifyPropertyChanged
+	{
+
+		delegate object GetterDelegate();
+		private IReadOnlyCollection<string> _observedProperties;
+		private T _observedObject;
+
+		private Dictionary<string, GetterDelegate> _getterDelegatesMap = new Dictionary<string, GetterDelegate>();
+		private Dictionary<string, Type> _propertyTypesMap = new Dictionary<string, Type>();
+		private IDictionary<string, IEqualityComparer> _equalityComparers = new Dictionary<string, IEqualityComparer>();
+
+		private IDictionary<string, object> _savedValues = null;
+		private IDictionary<string, object> _unsavedChanges = new Dictionary<string, object>();
+		private IDictionary<string, object> _currentValues = new Dictionary<string, object>();
+
+
+		public BackingStorage(T observedObject, params string[] observedProperties)
+		{
+			_observedProperties = new HashSet<string>(observedProperties);
+			_observedObject = observedObject;
+			observedObject.PropertyChanged += OnObservedPropertyChanged;
+		}
+
+		public bool UnsavedChanges
+		{
+			get => (_savedValues == null) || (_unsavedChanges.Count != 0);
+		}
+
+		private void ResetUnsavedChanges()
+		{
+			_unsavedChanges.Clear();
+			OnPropertyChanged(nameof(UnsavedChanges));
+		}
+
+		public void SaveChanges()
+		{
+			_savedValues = new ReadOnlyDictionary<string, object>(new Dictionary<string, object>(_currentValues));
+			ResetUnsavedChanges();
+		}
+
+		private void OnObservedPropertyChanged(object sender, PropertyChangedEventArgs e)
+		{
+			var propertyName = e.PropertyName;
+			if (!_observedProperties.Contains(propertyName)) {
+				return;
+			}
+
+			if (!_getterDelegatesMap.ContainsKey(propertyName)) {
+				StorePropertyInfo(propertyName);
+			}
+
+			UpdateValue(propertyName);
+		}
+
+		private void UpdateValue(string propertyName)
+		{
+			
+			var newValue = _getterDelegatesMap[propertyName]();
+			_currentValues[propertyName] = newValue;
+			if (ValueHasChanged(newValue, propertyName)) {
+				_unsavedChanges[propertyName] = newValue;
+			} else {
+				_unsavedChanges.Remove(propertyName);
+			}
+			OnPropertyChanged(nameof(UnsavedChanges));
+		}
+
+		private bool ValueHasChanged(object newValue, string propertyName)
+		{
+			if (_savedValues == null
+				|| !_savedValues.ContainsKey(propertyName)) {
+				return true;
+			}
+
+			var savedValue = _savedValues[propertyName];
+
+			if (_equalityComparers.ContainsKey(propertyName)) {
+				var equalityComparer = _equalityComparers[propertyName];
+				return !equalityComparer.Equals(newValue, savedValue);
+			} else {
+				return newValue == savedValue;
+			}
+		}
+
+		private void StorePropertyInfo(string propertyName)
+		{
+			var propInfo = _observedObject.GetType().GetProperty(propertyName);
+
+
+			var propertyType = propInfo.PropertyType;
+			_propertyTypesMap[propertyName] = propInfo.PropertyType;
+
+			try {
+				_equalityComparers[propertyName] = CreateEqualityComparer(propertyType);
+			} catch (Exception ex) {
+				// TODO;
+			}
+			
+
+
+			var getMethod = propInfo.GetGetMethod();
+			var getterDelegate = (GetterDelegate)getMethod.CreateDelegate(typeof(GetterDelegate), _observedObject);
+			_getterDelegatesMap[propertyName] = getterDelegate;
+
+
+		}
+
+		private static IEqualityComparer CreateEqualityComparer(Type type)
+		{
+
+			Type myGeneric = typeof(EqualityComparer<>);
+			Type constructedClass = myGeneric.MakeGenericType(type);
+			return (IEqualityComparer)constructedClass
+				.GetProperty(nameof(EqualityComparer<T>.Default), BindingFlags.Static | BindingFlags.Public)
+				.GetValue(null);
+
+		}
+	}
+}
\ No newline at end of file
diff --git a/VECTO3GUI2020/ViewModel/Implementation/Common/ObservableObject.cs b/VECTO3GUI2020/ViewModel/Implementation/Common/ObservableObject.cs
new file mode 100644
index 0000000000000000000000000000000000000000..94747b95114529c6de79de306c78f585f8de0fea
--- /dev/null
+++ b/VECTO3GUI2020/ViewModel/Implementation/Common/ObservableObject.cs
@@ -0,0 +1,34 @@
+ο»Ώusing System.Collections.Generic;
+using System.ComponentModel;
+using System.Runtime.CompilerServices;
+
+namespace VECTO3GUI2020.ViewModel.Implementation.Common
+{
+	public class ObservableObject : INotifyPropertyChanged
+	{
+		public event PropertyChangedEventHandler PropertyChanged;
+
+		/// <summary>
+		/// Needs to be called when a Property is changed
+		/// </summary>
+		///
+		/// <param name="name">Is automatically set to CallerMemberName</param>
+		protected void OnPropertyChanged([CallerMemberName] string name = "")
+		{
+			PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
+		}
+
+		protected virtual bool SetProperty<T>(ref T field, T value, [CallerMemberName] string propertyName = null)
+		{
+			bool propertyChanged = false;
+
+			if (!EqualityComparer<T>.Default.Equals(field, value))
+			{
+				field = value;
+				OnPropertyChanged(propertyName);
+				propertyChanged = true;
+			}
+			return propertyChanged;
+		}
+	}
+}
\ No newline at end of file
diff --git a/VECTO3GUI2020/ViewModel/Implementation/Common/ViewModelBase.cs b/VECTO3GUI2020/ViewModel/Implementation/Common/ViewModelBase.cs
index 876ef38084047d02775fd175a3c4f5df826c610d..3f65bb37e9544f510e25011f601b895a4b292ca5 100644
--- a/VECTO3GUI2020/ViewModel/Implementation/Common/ViewModelBase.cs
+++ b/VECTO3GUI2020/ViewModel/Implementation/Common/ViewModelBase.cs
@@ -1,47 +1,86 @@
-ο»Ώusing System.Collections.Generic;
-using System.ComponentModel;
-using System.Runtime.CompilerServices;
-using System.Windows;
+ο»Ώusing System.Windows;
+using System.Windows.Input;
+using Microsoft.Toolkit.Mvvm.Input;
+using Ninject;
 using VECTO3GUI2020.Helper;
+using VECTO3GUI2020.Properties;
 using VECTO3GUI2020.ViewModel.Interfaces.Common;
 
 namespace VECTO3GUI2020.ViewModel.Implementation.Common
 {
-    /// <summary>
+	/// <summary>
     /// Base Implementation of INotifyPropertyChanged
     /// https://docs.microsoft.com/en-us/dotnet/framework/wpf/data/how-to-implement-property-change-notification
     /// </summary>
     /// 
-    public class ViewModelBase : INotifyPropertyChanged, IViewModelBase
+    public class ViewModelBase : ObservableObject, IViewModelBase
 	{
 		private string _error;
-		public event PropertyChangedEventHandler PropertyChanged;
-        /// <summary>
-        /// Needs to be called when a Property is changed
-        /// </summary>
-        ///
-        /// <param name="name">Is automatically set to CallerMemberName</param>
-        protected void OnPropertyChanged([CallerMemberName] string name = "")
-        {
-            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
-		}
-
-
-        //borrowed from Franz Kober
-        protected virtual bool SetProperty<T>(ref T field, T value, [CallerMemberName] string propertyName = null)
-        {
-            bool propertyChanged = false;
-
-            if (!EqualityComparer<T>.Default.Equals(field, value))
-            {
-                field = value;
-                OnPropertyChanged(propertyName);
-                propertyChanged = true;
-            }
-            return propertyChanged;
-        }
-
-		public virtual string Title { get; set; } = "No Title Set";
+
+		#region Size And Window position
+		private double? _width = 800;
+		private double? _height = 600;
+		public double? Width
+		{
+			get => _width;
+			set => SetProperty(ref _width, value);
+		}
+		public double? Height
+		{
+			get => _height;
+			set => SetProperty(ref _height, value);
+		}
+
+		private double? _minHeight = null;
+
+		public double? MinHeight
+		{
+			get => _minHeight;
+			set => SetProperty(ref _minHeight, value);
+		}
+
+		private double? _minWidth = null;
+
+		public double? MinWidth
+		{
+			get => _minWidth;
+			set => SetProperty(ref _minWidth, value);
+		}
+
+		public SizeToContent _sizeToContent = SizeToContent.Manual;
+		public SizeToContent SizeToContent
+		{
+			get => _sizeToContent;
+			set => _sizeToContent = value;
+		}
+		#endregion
+
+
+		//borrowed from Franz Kober
+
+		private string _title = GUILabels.DefaultTitle;
+		public virtual string Title
+		{
+			get => _title;
+			set => SetProperty(ref _title, value);
+		}
+
+		[Inject]
+        public IDialogHelper DialogHelper { get; set; }
+
+
+#region Commands
+		protected bool AskForConfirmationOnClose { get; set; } = false;
+		private ICommand _closeWindowCommand;
+		public ICommand CloseWindowCommand
+		{
+			get
+			{
+				return _closeWindowCommand ?? new RelayCommand<Window>(window => CloseWindow(window, DialogHelper, AskForConfirmationOnClose), window => true);
+			}
+		}
+
+
 
 		protected void CloseWindow(Window window, IDialogHelper dialogHelper, bool showDialog = true)
 		{
@@ -58,5 +97,6 @@ namespace VECTO3GUI2020.ViewModel.Implementation.Common
 				window?.Close();
 			}
 		}
+		#endregion
 	}
 }
diff --git a/VECTO3GUI2020/ViewModel/Implementation/Document/DeclarationJobViewModel.cs b/VECTO3GUI2020/ViewModel/Implementation/Document/DeclarationJobViewModel.cs
index 7f3cc8db43acad0a5b3e2b4ecbe8edd1a12cfbbb..cd26f24a0a66345c6aa9842e12e3991dd8783a5c 100644
--- a/VECTO3GUI2020/ViewModel/Implementation/Document/DeclarationJobViewModel.cs
+++ b/VECTO3GUI2020/ViewModel/Implementation/Document/DeclarationJobViewModel.cs
@@ -28,16 +28,22 @@ namespace VECTO3GUI2020.ViewModel.Implementation.Document
 
 		public bool Selected
 		{
-			get => _selected;
+			get => _selected && CanBeSimulated;
 			set => SetProperty(ref _selected, value);
 		}
 
-		public bool CanBeEdited
+		public bool CanBeSimulated
 		{
 			get => false;
 			set => throw new System.NotImplementedException();
 		}
 
+		public IAdditionalJobInfoViewModel AdditionalJobInfoVm
+		{
+			get => throw new System.NotImplementedException();
+			set => throw new System.NotImplementedException();
+		}
+
 		#endregion
         #region Members
 
diff --git a/VECTO3GUI2020/ViewModel/Implementation/Document/DeclarationTrailerJobDocumentViewModel.cs b/VECTO3GUI2020/ViewModel/Implementation/Document/DeclarationTrailerJobDocumentViewModel.cs
index 9362ab868a256c06784589a8304023be9c092de4..d684390880cf1599306637018dde7daa779fdf75 100644
--- a/VECTO3GUI2020/ViewModel/Implementation/Document/DeclarationTrailerJobDocumentViewModel.cs
+++ b/VECTO3GUI2020/ViewModel/Implementation/Document/DeclarationTrailerJobDocumentViewModel.cs
@@ -1,6 +1,7 @@
 ο»Ώusing TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCore.InputData.FileIO.XML;
 using TUGraz.VectoCore.Utils;
+using VECTO3GUI2020.ViewModel.Implementation.Common;
 using VECTO3GUI2020.ViewModel.Interfaces;
 using VECTO3GUI2020.ViewModel.Interfaces.Document;
 using VECTO3GUI2020.ViewModel.Interfaces.JobEdit;
@@ -26,9 +27,15 @@ namespace VECTO3GUI2020.ViewModel.Implementation.Document
 			set => throw new System.NotImplementedException();
 		}
 
-		public bool CanBeEdited
+		public bool CanBeSimulated
 		{
-			get => false;
+			get => throw new System.NotImplementedException();
+			set => throw new System.NotImplementedException();
+		}
+
+		public IAdditionalJobInfoViewModel AdditionalJobInfoVm
+		{
+			get => throw new System.NotImplementedException();
 			set => throw new System.NotImplementedException();
 		}
 
diff --git a/VECTO3GUI2020/ViewModel/Implementation/Document/SimulationOnlyDeclarationJob.cs b/VECTO3GUI2020/ViewModel/Implementation/Document/SimulationOnlyDeclarationJob.cs
index 9c6a69dc8fb23d839e59699d46d28fac7a7b74a5..650a6755df28bc928c63e2fd9f03969da500dce9 100644
--- a/VECTO3GUI2020/ViewModel/Implementation/Document/SimulationOnlyDeclarationJob.cs
+++ b/VECTO3GUI2020/ViewModel/Implementation/Document/SimulationOnlyDeclarationJob.cs
@@ -1,4 +1,5 @@
-ο»Ώusing System.Configuration;
+ο»Ώusing System;
+using System.Configuration;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCore.Utils;
 using VECTO3GUI2020.ViewModel.Implementation.Common;
@@ -38,14 +39,20 @@ namespace VECTO3GUI2020.ViewModel.Implementation.Document
 
 		public bool Selected
 		{
-			get => _selected;
+			get => _selected && CanBeSimulated;
 			set => SetProperty(ref _selected, value);
 		}
 
-		public bool CanBeEdited
+		public bool CanBeSimulated
 		{
-			get => false;
-			set => throw new System.NotImplementedException();
+			get => true;
+			set => throw new NotImplementedException();
+		}
+
+		public IAdditionalJobInfoViewModel AdditionalJobInfoVm
+		{
+			get => throw new NotImplementedException();
+			set => throw new NotImplementedException();
 		}
 
 		#endregion
diff --git a/VECTO3GUI2020/ViewModel/Implementation/JobEdit/Vehicle/VehicleViewModel.cs b/VECTO3GUI2020/ViewModel/Implementation/JobEdit/Vehicle/VehicleViewModel.cs
index 86dbd231f7e3dd335f799c6bd9ede924e857af08..9ffa326e265b11f4f4582c5fde25b96b7ff33559 100644
--- a/VECTO3GUI2020/ViewModel/Implementation/JobEdit/Vehicle/VehicleViewModel.cs
+++ b/VECTO3GUI2020/ViewModel/Implementation/JobEdit/Vehicle/VehicleViewModel.cs
@@ -179,8 +179,6 @@ namespace VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle
 			set => throw new NotImplementedException();
 		}
 
-		public virtual string LegislativeCategory => throw new NotImplementedException();
-
 		LegislativeClass? IVehicleDeclarationInputData.LegislativeClass { get; }
 
 		public virtual LegislativeClass LegislativeClass
@@ -282,6 +280,8 @@ namespace VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle
 			set => throw new NotImplementedException();
 		}
 
+		public string ExemptedTechnology { get; }
+
 		RegistrationClass? IVehicleDeclarationInputData.RegisteredClass { get; }
 		int? IVehicleDeclarationInputData.NumberPassengerSeatsUpperDeck { get; }
 		int? IVehicleDeclarationInputData.NumberPassengerSeatsLowerDeck { get; }
diff --git a/VECTO3GUI2020/ViewModel/Implementation/JobListViewModel.cs b/VECTO3GUI2020/ViewModel/Implementation/JobListViewModel.cs
index f910a87d065547a9324f4620388b2695ddc2b74a..db0f9f8f17a3b7ab74cf1f70a2091f9bf7e41306 100644
--- a/VECTO3GUI2020/ViewModel/Implementation/JobListViewModel.cs
+++ b/VECTO3GUI2020/ViewModel/Implementation/JobListViewModel.cs
@@ -1,6 +1,4 @@
-ο»Ώusing Microsoft.Win32;
-using Ninject;
-using System;
+ο»Ώusing System;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
 using System.ComponentModel;
@@ -11,32 +9,28 @@ using System.Threading;
 using System.Threading.Tasks;
 using System.Windows;
 using System.Windows.Data;
-using System.Windows.Forms;
 using System.Windows.Input;
 using System.Xml;
 using System.Xml.Linq;
 using Microsoft.Toolkit.Mvvm.Input;
-using Microsoft.WindowsAPICodePack.Shell.Interop;
-using Microsoft.WindowsAPICodePack.Shell.PropertySystem;
+using Newtonsoft.Json;
+using NLog;
+using NLog.Targets;
 using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Resources;
-using TUGraz.VectoCommon.Utils;
-using TUGraz.VectoCore;
 using TUGraz.VectoCore.Configuration;
 using TUGraz.VectoCore.InputData.FileIO.JSON;
 using TUGraz.VectoCore.InputData.FileIO.XML;
 using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider;
 using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces;
-using TUGraz.VectoCore.InputData.Impl;
 using TUGraz.VectoCore.Models.Simulation.Impl;
 using TUGraz.VectoCore.OutputData;
 using TUGraz.VectoCore.OutputData.FileIO;
 using TUGraz.VectoCore.Utils;
 using VECTO3GUI2020.Annotations;
 using VECTO3GUI2020.Helper;
-using VECTO3GUI2020.Model.Interfaces;
 using VECTO3GUI2020.Properties;
 using VECTO3GUI2020.ViewModel.Implementation.Common;
 using VECTO3GUI2020.ViewModel.Implementation.Document;
@@ -44,9 +38,7 @@ using VECTO3GUI2020.ViewModel.Interfaces;
 using VECTO3GUI2020.ViewModel.Interfaces.Document;
 using VECTO3GUI2020.ViewModel.MultiStage.Implementation;
 using VECTO3GUI2020.ViewModel.MultiStage.Interfaces;
-using VECTO3GUI2020.Views;
 using IDocumentViewModel = VECTO3GUI2020.ViewModel.Interfaces.Document.IDocumentViewModel;
-using RelayCommand = VECTO3GUI2020.Util.RelayCommand;
 using XmlDocumentType = TUGraz.VectoCore.Utils.XmlDocumentType;
 
 namespace VECTO3GUI2020.ViewModel.Implementation
@@ -55,61 +47,63 @@ namespace VECTO3GUI2020.ViewModel.Implementation
     {
         #region Members and Properties
         private readonly Settings _settings = Settings.Default;
+		private bool _simulationLoggingEnabled = true; //Enabled and Disable NLOG Messages
 
 
-        private ICommand _addJobCommand;
-        private ICommand _editJobCommand;
-        private ICommand _removeJobCommand;
-        private ICommand _moveJobUpCommand;
-        private ICommand _moveJobDownCommand;
-        private ICommand _viewXMLCommand;
 
-        private bool _isLoading = false;
-        public bool IsLoading
-        {
-            get => _isLoading;
-            set => SetProperty(ref _isLoading, value);
-        }
-
-        private BackgroundWorker fileReadingBackgroundWorker;
+		private BackgroundWorker fileReadingBackgroundWorker;
 
 		private object _jobsLock = new Object();
         private ObservableCollection<IDocumentViewModel> _jobs = new ObservableCollection<IDocumentViewModel>();
         public ObservableCollection<IDocumentViewModel> Jobs{ get => _jobs; set => SetProperty(ref _jobs, value);}
 
-        private IDialogHelper _dialogHelper;
+		public IDocumentViewModel SelectedJob
+		{
+			get => _selectedJob;
+			set
+			{
+				if(SetProperty(ref _selectedJob, value)) {
+					RemoveJob.NotifyCanExecuteChanged();
+					_openSourceFileCommand?.NotifyCanExecuteChanged();
+					_showSourceFileInExplorerCommand?.NotifyCanExecuteChanged();
+				};
+			}
+		}
+
+
+
+		private IDialogHelper _dialogHelper;
         private IWindowHelper _windowHelper;
         private IDocumentViewModelFactory _documentViewModelFactory;
-		private ICommand _newMultiStageFileCommand;
+
 		private IMultiStageViewModelFactory _multiStageViewModelFactory;
-		private IAsyncRelayCommand _addJobAsync;
 		private readonly IXMLInputDataReader _inputDataReader;
-		private IAsyncRelayCommand _simulationCommand;
-		private readonly IOutputViewModel _outputViewModel;
+		private IOutputViewModel _outputViewModel;
+
 
-		
 
+		private readonly string StoredJobsFileName = "storedJobs.json";
 
+		
         
 		#endregion
 
 
+
         
 
-        public JobListViewModel()
+        private JobListViewModel()
         {
 			BindingOperations.EnableCollectionSynchronization(Jobs, _jobsLock);
-            InitFileBackGroundWorker();
-            
-            
-        }
+		}
 
 
         public JobListViewModel(IDocumentViewModelFactory documentViewModelFactory,
             IXMLInputDataReader inputDataReader,
             IDialogHelper dialogHelper,
             IWindowHelper windowHelper,
-			IMultiStageViewModelFactory multiStageViewModelFactory, IOutputViewModel outputViewModel) : this()
+			IMultiStageViewModelFactory multiStageViewModelFactory,
+			IOutputViewModel outputViewModel) : this()
         {
             _documentViewModelFactory = documentViewModelFactory;
             _dialogHelper = dialogHelper;
@@ -117,27 +111,221 @@ namespace VECTO3GUI2020.ViewModel.Implementation
 			_inputDataReader = inputDataReader;
 			_multiStageViewModelFactory = multiStageViewModelFactory;
 			_outputViewModel = outputViewModel;
+
+			_outputMessage = new Progress<MessageEntry>((message) => {
+				_outputViewModel.AddMessage(message);
+			});
+			_progress = new Progress<int>((i) => {
+				_outputViewModel.Progress = i;
+			});
+			_status = new Progress<string>((msg) => {
+				_outputViewModel.StatusMessage = msg;
+			});
+
+
+			//configure Nlog
+			var target = new MethodCallTarget("VectoGuiTarget", (evtInfo, obj) => LogMethod(evtInfo, obj));
+			NLog.Config.SimpleConfigurator.ConfigureForTargetLogging(target);
+
+
+			if(System.Windows.Application.Current != null){
+				System.Windows.Application.Current.Exit += new ExitEventHandler(this.OnApplicationExit);
+				LoadFiles();
+			}
 		}
 
 
+		private void LogMethod(LogEventInfo evtInfo, object[] objects)
+		{
+			if (!SimulationRunning || !_simulationLoggingEnabled)
+			{
+				return;
+			}
+			if (evtInfo.Level == LogLevel.Error || evtInfo.Level == LogLevel.Warn || evtInfo.Level == LogLevel.Fatal)
+				_outputMessage.Report(new MessageEntry()
+				{
+					Type = evtInfo.Level == LogLevel.Warn ? MessageType.WarningMessage : MessageType.ErrorMessage,
+					Message = evtInfo.FormattedMessage,
+					Source = evtInfo.CallerMemberName,
+				});
+		}
+
 
-        private void InitFileBackGroundWorker()
-        {
-            fileReadingBackgroundWorker = new BackgroundWorker
-            {
-                WorkerReportsProgress = true
-            };
-            fileReadingBackgroundWorker.DoWork += fileworker_DoWork;
-            fileReadingBackgroundWorker.ProgressChanged += fileworker_ProgressChanged;
-            fileReadingBackgroundWorker.RunWorkerCompleted += fileworker_RunWorkerCompleted;
-        }
 
-		private void fileworker_ProgressChanged(object sender, ProgressChangedEventArgs e)
+		#region JobList
+		#region Store and Restore JobList
+		private void LoadFiles()
 		{
-			Debug.WriteLine(e.ProgressPercentage);
+			var filesToRead = ReadFileNamesFromFile();
+			if (filesToRead != null)
+			{
+				foreach (var fileName in filesToRead)
+				{
+					Task.Run(() => AddJobAsync(fileName));
+				}
+			}
 		}
 
-		private CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
+
+		private void OnApplicationExit(object sender, EventArgs e)
+		{
+			SaveFileNamesToFile();
+		}
+
+
+		private string[] ReadFileNamesFromFile()
+		{
+			try {
+				var filesJson = File.ReadAllText(StoredJobsFileName);
+				IList<string> filesToRead = JsonConvert.DeserializeObject<List<string>>(filesJson);
+				return filesToRead.ToArray();
+			} catch (Exception e) {
+				Debug.WriteLine(e.Message);
+			}
+
+			return null;
+		}
+
+		private void SaveFileNamesToFile()
+		{
+			var filesToStore = Jobs.Where(job => job.DataSource?.SourceFile != null).Select(job => job.DataSource.SourceFile).ToList();
+			string jsonString = JsonConvert.SerializeObject(filesToStore);
+			Debug.WriteLine(jsonString);
+			File.WriteAllText(StoredJobsFileName, jsonString);
+		}
+		#endregion
+
+		public void AddJob(IDocumentViewModel jobToAdd)
+		{
+			lock (_jobsLock) {
+				_jobs.Add(jobToAdd);
+			}
+		}
+
+
+		public async Task<IDocumentViewModel> AddJobExecuteAsync()
+		{
+			var fileName = _dialogHelper.OpenXMLFileDialog();
+			if (fileName != null)
+			{
+				return await AddJobAsync(fileName);
+			}
+
+			return null;
+
+		}
+
+		public async Task<IDocumentViewModel> AddJobAsync(string fileName, bool runSimulationAfterAdding = false)
+		{
+			if (fileName != null)
+			{
+				try
+				{
+					var result = await LoadFileAsync(fileName);
+					lock (_jobsLock)
+					{
+						Jobs.Add(result);
+					}
+					if (runSimulationAfterAdding) {
+						if (result.CanBeSimulated) {
+							await RunSimulationExecute(result);
+						}
+					}
+
+					return result;
+				}
+				catch (Exception e)
+				{
+					var errorString = "";
+					errorString = $"{fileName}\n";
+					errorString += e.Message;
+					_dialogHelper.ShowMessageBox(errorString, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
+				}
+			}
+
+
+			return null;
+		}
+
+		private Task<IDocumentViewModel> LoadFileAsync([NotNull] string fileName)
+		{
+			var extension = Path.GetExtension(fileName);
+			switch (extension) {
+				case ".xml":
+					return LoadXMLFile(fileName);
+				case ".json":
+					return LoadJsonFile(fileName);
+				default: 
+					throw new VectoException($"{extension} not supported!");
+			}
+			
+		}
+
+		private Task<IDocumentViewModel> LoadJsonFile([NotNull] string fileName)
+		{
+			IDocumentViewModel result = null;
+			try {
+				var inputData = JSONInputDataFactory.ReadJsonJob(fileName, true);
+				return Task.FromResult(_multiStageViewModelFactory.CreateDocumentViewModel(inputData));
+			} catch (Exception ex) {
+				return Task.FromException<IDocumentViewModel>(ex);
+				//_dialogHelper.ShowErrorMessage(ex.Message));
+			}
+		}
+
+		private Task<IDocumentViewModel> LoadXMLFile([NotNull] string fileName)
+		{
+			var xElement = new System.Xml.XmlDocument();
+			xElement.Load(fileName);
+
+			var documentType = XMLHelper.GetDocumentType(xElement?.DocumentElement?.LocalName);
+			if (documentType == XmlDocumentType.MultistageOutputData)
+			{
+				var inputDataProvider = _inputDataReader.Create(fileName) as IMultistageBusInputDataProvider;
+				return Task.FromResult(_multiStageViewModelFactory.GetMultiStageJobViewModel(inputDataProvider) as IDocumentViewModel);
+			}
+			else if (documentType == XmlDocumentType.DeclarationJobData)
+			{
+				//Remove
+				var inputDataProvider = _inputDataReader.CreateDeclaration(fileName);
+				IDocumentViewModel result;
+				try
+				{
+					result = _multiStageViewModelFactory.CreateDocumentViewModel(inputDataProvider);
+				}
+				catch (Exception ex)
+				{
+					Debug.WriteLine(ex.GetInnerExceptionMessages());
+					result = new SimulationOnlyDeclarationJob(inputDataProvider.DataSource, inputDataProvider.JobInputData.JobName, XmlDocumentType.DeclarationJobData) as IDocumentViewModel;
+				}
+				return Task.FromResult(result);
+			}
+			else {
+				return Task.FromException<IDocumentViewModel>(
+					new VectoXMLException($"{documentType.ToString()} not supported"));
+				//throw new VectoXMLException($"{documentType.ToString()} not supported");
+			}
+
+			return null;
+
+
+
+		}
+
+		#endregion
+
+		private bool _newFilePopUpIsOpen = false;
+		public bool NewFilePopUpIsOpen
+		{
+			get => _newFilePopUpIsOpen;
+			set => SetProperty(ref _newFilePopUpIsOpen, value);
+		}
+		
+
+
+
+		#region Simulation
+		private CancellationTokenSource _cancellationTokenSource = new CancellationTokenSource();
 		private bool _simulationRunning = false;
 
 		public bool SimulationRunning
@@ -146,47 +334,77 @@ namespace VECTO3GUI2020.ViewModel.Implementation
 			set
 			{
 				SetProperty(ref _simulationRunning, value);
-                OnPropertyChanged(nameof(SimulationCommand));
-                OnPropertyChanged(nameof(CancelSimulation));
+				SimulationCommand?.NotifyCanExecuteChanged();
+				
+				(_cancelSimulationCommand as RelayCommand)?.NotifyCanExecuteChanged();
 			}
 		}
 
 		private ICommand _cancelSimulationCommand;
 
+		private IProgress<MessageEntry> _outputMessage;
+		private IProgress<int> _progress;
+		private IProgress<string> _status;
+
 
-		private async Task RunSimulationExecute()
+		public async Task RunSimulationExecute(IDocumentViewModel jobToSimulate = null)
 		{
-			cancellationTokenSource = new CancellationTokenSource();
+			if (SimulationRunning) {
+				return;
+			}
 			SimulationRunning = true;
-			await Task.Run(() => RunSimulationAsync(cancellationTokenSource.Token,
-				new Progress<MessageEntry>((message) => { _outputViewModel.AddMessage(message); }),
-				new Progress<int>((i) => _outputViewModel.Progress = i),
-				new Progress<string>((msg) => _outputViewModel.StatusMessage = msg)));
-			SimulationRunning = false;
-			_outputViewModel.Progress = 0;
-			cancellationTokenSource.Dispose();
-        }
+			try {
+				await Task.Run(() => RunSimulationAsync(_cancellationTokenSource.Token,
+					outputMessages: _outputMessage,
+					progress: _progress,
+					status: _status,
+					jobToSimulate: jobToSimulate));
+			} catch (Exception ex) {
+				_outputViewModel.AddMessage(new MessageEntry() {
+					Type = MessageType.ErrorMessage,
+					Message = ex.Message
+				});
+			} finally {
+				_cancellationTokenSource = new CancellationTokenSource();
+				_simulationLoggingEnabled = true;
+				SimulationRunning = false;
+				_outputViewModel.Progress = 0;
+			}
+		}
 
-		private async Task RunSimulationAsync(CancellationToken ct, IProgress<MessageEntry> outputMessages,
-			IProgress<int> progress, IProgress<string> status)
+		private async Task RunSimulationAsync(CancellationToken ct, 
+			IProgress<MessageEntry> outputMessages,
+			IProgress<int> progress, 
+			IProgress<string> status, 
+			IDocumentViewModel jobToSimulate = null)
 		{
             progress.Report(0);
 			status.Report("starting...");
 			
 			IDocumentViewModel[] jobs;
-			lock (_jobsLock) {
-				jobs = Jobs.Where(x => x.Selected).ToArray();
-				if (jobs.Length == 0) {
-                    outputMessages.Report(new MessageEntry() {
-                        Message = "No Jobs Selected",
-                        Time = DateTime.Now,
-                        Type = MessageType.InfoMessage,
-					});
-					status.Report("No jobs selected");
-					return;
+			if (jobToSimulate == null) {
+				lock (_jobsLock)
+				{
+					jobs = Jobs.Where(x => x.Selected).ToArray();
+					if (jobs.Length == 0)
+					{
+						outputMessages.Report(new MessageEntry()
+						{
+							Message = "No Jobs Selected",
+							Time = DateTime.Now,
+							Type = MessageType.InfoMessage,
+						});
+						status.Report("No jobs selected");
+						return;
+					}
 				}
+			} else {
+				jobs = new IDocumentViewModel[] {
+					jobToSimulate
+				};
 			}
 
+
 			var sumFileWriter = new FileOutputWriter(GetOutputDirectory(Jobs.First(x => x.Selected).DataSource.SourceFile));
 			var sumContainer = new SummaryDataContainer(sumFileWriter);
 			var jobContainer = new JobContainer(sumContainer);
@@ -292,7 +510,7 @@ namespace VECTO3GUI2020.ViewModel.Implementation
 							outputMessages.Report(new MessageEntry()
 							{
 								Message = "Simulation canceled",
-								Type = MessageType.StatusMessage,
+								Type = MessageType.InfoMessage,
 							});
 							return;
 						}
@@ -356,11 +574,18 @@ namespace VECTO3GUI2020.ViewModel.Implementation
 			{
 				if (ct.IsCancellationRequested)
 				{
-					jobContainer.Cancel();
-					outputMessages.Report(new MessageEntry() {
+					try {
+						await Task.Run(() => jobContainer.Cancel());
+					} catch (Exception e) {
+						Debug.WriteLine(e.Message);
+					}
+
+					outputMessages.Report(new MessageEntry()
+					{
 						Message = "Simulation canceled",
-						Type = MessageType.StatusMessage,
+						Type = MessageType.InfoMessage,
 					});
+
 					return;
 				}
 
@@ -377,15 +602,15 @@ namespace VECTO3GUI2020.ViewModel.Implementation
 					string.Join(", ", jobProgress.Select(x => string.Format("{0,4:P}", x.Value.Progress)))));
                 var justFinished = jobProgress.Where(x => x.Value.Done & !finishedRuns.Contains(x.Key))
 					.ToDictionary(x => x.Key, x => x.Value);
-				//PrintRuns(justFinished, fileWriters);
+				PrintRuns(justFinished, fileWriters, outputMessages);
 				finishedRuns.AddRange(justFinished.Select(x => x.Key));
-				await Task.Delay(100, ct);
+				await Task.Delay(100);
 			}
 			start.Stop();
 
 			var remainingRuns = jobContainer.GetProgress().Where(x => x.Value.Done && !finishedRuns.Contains(x.Key))
 				.ToDictionary(x => x.Key, x => x.Value);
-			//PrintRuns(remainingRuns, fileWriters);
+			PrintRuns(remainingRuns, fileWriters, outputMessages);
 
 			finishedRuns.Clear();
 			fileWriters.Clear();
@@ -425,7 +650,7 @@ namespace VECTO3GUI2020.ViewModel.Implementation
 								Type = MessageType.StatusMessage,
 								Message = string.Format(
 									"{2} for '{0}' written to {1}", Path.GetFileName(jobEntry.DataSource.SourceFile), entry.Key, entry.Value),
-								//Link = "<XML>" + entry.Key
+								Link = entry.Key
 							});
 					}
 				}
@@ -437,7 +662,7 @@ namespace VECTO3GUI2020.ViewModel.Implementation
 				{
 					Type = MessageType.StatusMessage,
 					Message = string.Format("Sum file written to {0}", sumFileWriter.SumFileName),
-					//Link = "<CSV>" + sumFileWriter.SumFileName
+					Link = sumFileWriter.SumFileName,
 				});
 			}
 
@@ -457,34 +682,36 @@ namespace VECTO3GUI2020.ViewModel.Implementation
 					.GetModDataFileName(p.Value.RunName, p.Value.CycleName, p.Value.RunSuffix);
 				var runName = string.Format("{0} {1} {2}", p.Value.RunName, p.Value.CycleName, p.Value.RunSuffix);
 
-			//	if (p.Value.Error != null)
-			//	{
-			//		SimulationWorker.ReportProgress(0, new VectoSimulationProgress()
-			//		{
-			//			Type = VectoSimulationProgress.MsgType.StatusMessage,
-			//			Message = string.Format("Finished Run {0} with ERROR: {1}", runName,
-			//				p.Value.Error.Message),
-			//			Link = "<CSV>" + modFilename
-			//		});
-			//	}
-			//	else
-			//	{
-			//		SimulationWorker.ReportProgress(0, new VectoSimulationProgress()
-			//		{
-			//			Type = VectoSimulationProgress.MsgType.StatusMessage,
-			//			Message = string.Format("Finished run {0} successfully.", runName)
-			//		});
-			//	}
-			//	if (File.Exists(modFilename))
-			//	{
-			//		SimulationWorker.ReportProgress(0, new VectoSimulationProgress()
-			//		{
-			//			Type = VectoSimulationProgress.MsgType.StatusMessage,
-			//			Message = string.Format("Run {0}: Modal results written to {1}", runName, modFilename),
-			//			Link = "<CSV>" + modFilename
-			//		});
-			//	}
-			}
+                if (p.Value.Error != null)
+                {
+                    outputMessages.Report(new MessageEntry()
+                    {
+                        Type = MessageType.StatusMessage,
+                        Message = string.Format("Finished Run {0} with ERROR: {1}", runName,
+                            p.Value.Error.Message),
+                        Link = modFilename
+						//Link = "<CSV>" + modFilename
+					});
+                }
+                else
+                {
+					outputMessages.Report(new MessageEntry()
+					{
+                        Type = MessageType.StatusMessage,
+                        Message = string.Format("Finished run {0} successfully.", runName)
+                    });
+                }
+                if (File.Exists(modFilename))
+                {
+                    outputMessages.Report(new MessageEntry()
+                    {
+                        Type = MessageType.StatusMessage,
+                        Message = string.Format("Run {0}: Modal results written to {1}", runName, modFilename),
+                        Link = modFilename,
+						//Link = "<CSV>" + modFilename
+					});
+                }
+            }
 		}
 
 
@@ -507,157 +734,164 @@ namespace VECTO3GUI2020.ViewModel.Implementation
 			return outFile;
 		}
 
-
+		#endregion
 		#region Commands
+		private ICommand _editJobCommand;
+		private IAsyncRelayCommand _removeJobCommand;
+		private ICommand _moveJobUpCommand;
+		private ICommand _moveJobDownCommand;
+		private ICommand _viewXMLCommand;
+		private IDocumentViewModel _selectedJob;
+		private IAsyncRelayCommand _addJobAsync;
+		private IAsyncRelayCommand<IDocumentViewModel> _simulationCommand;
+		private IRelayCommand<bool> _newVifCommand;
+		private ICommand _newMultiStageFileCommand;
+		private ICommand _openNewFilePopUpCommand;
+		private ICommand _newCompletedInputCommand;
+		private ICommand _newExemptedCompletedInputCommand;
+		private ICommand _openAdditionalJobInformationCommand;
+		private IRelayCommand _openSourceFileCommand;
+		private IRelayCommand _showSourceFileInExplorerCommand;
+
+
+		public ICommand OpenSourceFileCommand
+		{
+			get
+			{
+				return _openSourceFileCommand ?? (_openSourceFileCommand =
+					new RelayCommand(() => { ProcessHelper.OpenFile(_selectedJob?.DataSource?.SourceFile); },
+						() => _selectedJob != null));
+			}
+		}
+
+		public ICommand ShowSourceFileCommand
+		{
+			get
+			{
+				return _showSourceFileInExplorerCommand ?? (_showSourceFileInExplorerCommand = 
+					new RelayCommand(() => { ProcessHelper.OpenFolder(_selectedJob?.DataSource?.SourceFile); },
+					() => _selectedJob != null));
+			}
+		}
+
+
+		public ICommand OpenPopUpCommand
+		{
+			get => _openNewFilePopUpCommand ??
+					(_openNewFilePopUpCommand = new RelayCommand(() => {
+						if (NewFilePopUpIsOpen == false) {
+							NewFilePopUpIsOpen = true;
+						}
+						
+					}));
+		}
+
+
 
 		public ICommand CancelSimulation
 		{
 			get
 			{
-				return _cancelSimulationCommand ?? new RelayCommand(() => {
+				return _cancelSimulationCommand ?? (_cancelSimulationCommand = new RelayCommand(() => {
 						_outputViewModel.AddMessage(new MessageEntry() {
 							Message="Canceling Simulation",
-							Type=MessageType.StatusMessage,
+							Type=MessageType.InfoMessage,
 						});
-						cancellationTokenSource.Cancel();
+						_simulationLoggingEnabled = false;
+						_cancellationTokenSource.Cancel();
+						
+						
 					},
-					() => SimulationRunning);
+					() => SimulationRunning));
 			}            
 		}
 
-
-		public IAsyncRelayCommand SimulationCommand
+		public ICommand NewCompletedInputCommand
 		{
 			get
 			{
-				return _simulationCommand ?? new AsyncRelayCommand(RunSimulationExecute, () => !SimulationRunning);
+				return _newCompletedInputCommand ?? (_newCompletedInputCommand = new RelayCommand(() => {
+					NewCompletedInputCommandExecute(false);
+				}));
 			}
 		}
 
+		private void NewCompletedInputCommandExecute(bool exempted)
+		{
+			var stageInputVm = _multiStageViewModelFactory.GetStageInputViewModel(exempted);
+
+			AddJob(stageInputVm);
 
+			_windowHelper.ShowWindow(stageInputVm);
+		}
 
-		public ICommand NewManufacturingStageFile
+		public ICommand NewExemptedCompletedInputCommand
 		{
 			get
 			{
-				return _newMultiStageFileCommand ?? new RelayCommand(NewManufacturingStageFileExecute, () => { return true; });
+				return _newExemptedCompletedInputCommand ?? (_newExemptedCompletedInputCommand = new RelayCommand(() => {
+					NewCompletedInputCommandExecute(true);
+				}));
 			}
 		}
 
-		private void NewManufacturingStageFileExecute()
+		public IRelayCommand<bool> NewVifCommand
 		{
-            _windowHelper.ShowWindow(_multiStageViewModelFactory.GetNewMultistageJobViewModel());
+			get
+			{
+				return _newVifCommand ?? (_newVifCommand = new Microsoft.Toolkit.Mvvm.Input.RelayCommand<bool>((b) => {
+					var newVifViewModel = _multiStageViewModelFactory.GetCreateNewVifViewModel(b);
+					lock (_jobsLock) {
+						_jobs.Add(newVifViewModel);
+					}
+					_windowHelper.ShowWindow(newVifViewModel);
+				}, b => true));
+			}
 		}
 
-		public IAsyncRelayCommand AddJobAsyncCommand
+		public IAsyncRelayCommand<IDocumentViewModel> SimulationCommand
 		{
 			get
 			{
-				return _addJobAsync ?? new AsyncRelayCommand(AddJobExecuteAsync
-					, () => true);
+				return _simulationCommand ?? (_simulationCommand = 
+						new AsyncRelayCommand<IDocumentViewModel>(RunSimulationExecute, (d) => !SimulationRunning));
 			}
 		}
 
-		private async Task<IDocumentViewModel> AddJobExecuteAsync()
+		public ICommand NewManufacturingStageFileCommand
 		{
-			var fileName = _dialogHelper.OpenXMLFileDialog();
-			if (fileName != null) {
-				return await AddJobAsync(fileName);
-            }
-
-			return null;
-
+			get
+			{
+				return _newMultiStageFileCommand ?? new RelayCommand(NewManufacturingStageFileExecute, () => { return true; });
+			}
 		}
 
-		public async Task<IDocumentViewModel> AddJobAsync(string fileName)
+		private void NewManufacturingStageFileExecute()
 		{
-			if (fileName != null) {
-				try {
-					var result = await LoadFileAsync(fileName);
-					Jobs.Add(result);
-					return result;
-				} catch (Exception e) {
-					var errorString = "";
-					errorString = $"{fileName}\n";
-					errorString += e.Message;
-					_dialogHelper.ShowMessageBox(errorString, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
-				}
-			}
-
-
-			return null;
+            _windowHelper.ShowWindow(_multiStageViewModelFactory.GetNewMultistageJobViewModel());
 		}
 
-		private Task<IDocumentViewModel> LoadFileAsync([NotNull] string fileName)
+		public IAsyncRelayCommand AddJobAsyncCommand
 		{
-			var xElement = new System.Xml.XmlDocument();
-			xElement.Load(fileName);
-
-			var documentType = XMLHelper.GetDocumentType(xElement?.DocumentElement?.LocalName);
-			if (documentType == XmlDocumentType.MultistageOutputData) {
-				var inputDataProvider = _inputDataReader.Create(fileName) as IMultistageBusInputDataProvider;
-				return Task.FromResult(_multiStageViewModelFactory.GetMultiStageJobViewModel(inputDataProvider) as IDocumentViewModel);
-			} else if (documentType == XmlDocumentType.DeclarationJobData) {
-				//Remove
-				var inputDataProvider = _inputDataReader.CreateDeclaration(fileName);
-				var result = new SimulationOnlyDeclarationJob(inputDataProvider.DataSource,
-					inputDataProvider.JobInputData.JobName, XmlDocumentType.DeclarationJobData) as IDocumentViewModel;
-				return Task.FromResult(result);
-
-
-			}else {
-				throw new VectoXMLException($"{documentType.ToString()} not supported");
+			get
+			{
+				return _addJobAsync ?? new AsyncRelayCommand(AddJobExecuteAsync
+					, () => true);
 			}
-
-			return null;
 		}
 
+		
 
-
-		public ICommand AddJob
+		public ICommand EditDocument
         {
             get
-            {
-                return _addJobCommand ?? new RelayCommand(AddJobExecute, () => { return true; });
-            }
-            private set
-            {
-                _addJobCommand = value;
-                OnPropertyChanged();
-            }
-        }
-
-
-        private void AddJobExecute()
-        {
-			IsLoading = true;
-			var filename = _dialogHelper.OpenXMLFileDialog();
-			if (filename != null)
-            {
-               LoadJob(filename);
+			{
+				return _editJobCommand ?? (_editJobCommand = new Util.RelayCommand<IDocumentViewModel>(EditDocumentExecute,
+					(IDocumentViewModel jobentry) => {
+						var canExecute = jobentry != null && jobentry.EditViewModel != null;
+						return canExecute;
+					}));
 			}
-            else
-            {
-                IsLoading = false;
-            }
-        }
-
-		public void LoadJob([NotNull] string fileName)
-		{
-			fileReadingBackgroundWorker.RunWorkerAsync(fileName);
-        }
-
-
-        public ICommand EditJob
-        {
-            get
-            {
-                return _editJobCommand ?? new Util.RelayCommand<IJobViewModel>(EditJobExecute,
-                    (IJobViewModel jobentry) => {
-						var canExecute = jobentry != null && jobentry.CanBeEdited;
-                        return canExecute;
-                    });
-            }
             set
             {
                 _editJobCommand = value;
@@ -665,7 +899,7 @@ namespace VECTO3GUI2020.ViewModel.Implementation
             }
         }
 
-        private void EditJobExecute(IDocumentViewModel selectedJob)
+        private void EditDocumentExecute(IDocumentViewModel selectedJob)
         {
 			if (selectedJob == null) {
 				return;
@@ -702,14 +936,14 @@ namespace VECTO3GUI2020.ViewModel.Implementation
         }
 
 
-        public ICommand RemoveJob
+        public IAsyncRelayCommand RemoveJob
         {
             get
             {
-                return _removeJobCommand ?? new Util.RelayCommand<IDocumentViewModel>(RemoveJobExecute, (IDocumentViewModel jobentry) =>
-                {
-                    return (jobentry != null);
-                });
+                return _removeJobCommand ?? (_removeJobCommand = new AsyncRelayCommand<IDocumentViewModel>(RemoveJobExecute, 
+					(IDocumentViewModel jobEntry) => {
+						return (SelectedJob != null);
+					}));
             }
             set
             {
@@ -718,14 +952,28 @@ namespace VECTO3GUI2020.ViewModel.Implementation
             }
         }
 
-        private void RemoveJobExecute(IDocumentViewModel selectedDocument)
-        {
-            if (selectedDocument == null) return;
+		public void OnJobSelectionChanged()
+		{
+			RemoveJob.NotifyCanExecuteChanged();
+		}
+
 
+        private async Task RemoveJobExecute(IDocumentViewModel selectedDocument)
+        {
+			if (selectedDocument == null) {
+				return;
+			}
 
-            Jobs.Remove(selectedDocument);
+			await Task.Run(() => {
+				lock (_jobsLock) {
+					Jobs.Remove(selectedDocument);
+				}
+			});
+			
+          
             OnPropertyChanged();
-        }
+
+		}
 
         public ICommand moveJobUp
         {
@@ -770,7 +1018,24 @@ namespace VECTO3GUI2020.ViewModel.Implementation
 
         }
 
-        private void MoveJobDownExecute(IDocumentViewModel selectedJob)
+		public IOutputViewModel OutputViewModel
+		{
+			get => _outputViewModel;
+			set => SetProperty(ref _outputViewModel, value);
+		}
+
+		public ICommand OpenAdditionalJobInformationCommand
+		{
+			get
+			{
+				return _openAdditionalJobInformationCommand ?? (_openAdditionalJobInformationCommand = new RelayCommand<IDocumentViewModel>(
+					(docVm) => {
+						_windowHelper.ShowWindow(docVm.AdditionalJobInfoVm);
+					}));
+			}
+		}
+
+		private void MoveJobDownExecute(IDocumentViewModel selectedJob)
         {
             Debug.WriteLine("move down command");
 
@@ -782,69 +1047,5 @@ namespace VECTO3GUI2020.ViewModel.Implementation
         }
 
         #endregion Commands
-
-        #region BackgroundworkerXMLreading
-
-        void fileworker_DoWork(object sender, DoWorkEventArgs e)
-        {
-            string filename = e.Argument as string;
-            Debug.Assert(filename != null);
-
-            try
-            {
-                var xElement = new System.Xml.XmlDocument();
-                xElement.Load(filename);
-
-                var documentType = XMLHelper.GetDocumentType(xElement?.DocumentElement?.LocalName);
-                if (documentType == null)
-                {
-					Debug.WriteLine("Unknown Document Type");
-                    e.Cancel = true;
-                    return;
-                }
-
-				
-
-
-				var result = _documentViewModelFactory.CreateDocumentViewModel((XmlDocumentType)documentType, filename);
-                e.Result = result;
-            }
-            catch (Exception)
-            {
-				e.Cancel = true;
-                throw;
-            }
-        }
-
-
-        void fileworker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
-        {
-            Debug.Assert(e.Result is IDocumentViewModel);
-            Jobs.Add(e.Result as IDocumentViewModel);
-            IsLoading = false;
-        }
-
-        #endregion
-    }
-
-
-	public class VectoSimulationProgress
-	{
-		public enum MsgType
-		{
-			StatusMessage,
-			InfoMessage,
-			Progress,
-			LogError,
-			LogWarning,
-
-		}
-
-		public string Message { get; set; }
-
-		public MsgType Type { get; set; }
-
-		public string Link { get; set; }
 	}
-
 }
diff --git a/VECTO3GUI2020/ViewModel/Implementation/MainWindowViewModel.cs b/VECTO3GUI2020/ViewModel/Implementation/MainWindowViewModel.cs
index ddb2e680e424c12a871fd59f19b6ea9167b75478..4d7a411dbd0b014efe4dea171c22882c9fb09281 100644
--- a/VECTO3GUI2020/ViewModel/Implementation/MainWindowViewModel.cs
+++ b/VECTO3GUI2020/ViewModel/Implementation/MainWindowViewModel.cs
@@ -1,4 +1,5 @@
 ο»Ώusing System;
+using System.Collections.Generic;
 using VECTO3GUI2020.ViewModel.Interfaces;
 using Ninject;
 using System.Diagnostics;
@@ -13,35 +14,75 @@ namespace VECTO3GUI2020.ViewModel.Implementation
 {
     public class MainWindowViewModel : ViewModelBase, IMainWindowViewModel
     {
-        #region Member
+        #region Members
         private IJobListViewModel _jobListVm;
         private IMainViewModel _bottomView;
-		#endregion
-        
-        #region Commands
-        private ICommand _openSettings;
+
+		private Dictionary<string, IMainViewModel> _viewModels = new Dictionary<string, IMainViewModel>(StringComparer.InvariantCultureIgnoreCase);
+		private readonly AboutViewModel _aboutViewModel;
 		private IWindowHelper _windowHelper;
 		private ISettingsViewModel _settingsViewModel;
-
-
+		private IMainViewModel _currentViewModelTop;
 		#endregion
 
-
-        public MainWindowViewModel(IWindowHelper windowHelper, ISettingsViewModel settingsViewModel, IJobListViewModel jobListViewModel, IOutputViewModel outputViewModel)
+		public MainWindowViewModel(IWindowHelper windowHelper, ISettingsViewModel settingsViewModel, IJobListViewModel jobListViewModel, IOutputViewModel outputViewModel, AboutViewModel aboutVm)
 		{
 			_windowHelper = windowHelper;
 			_settingsViewModel = settingsViewModel;
 			_jobListVm = jobListViewModel;
+			_aboutViewModel = aboutVm;
+			_currentViewModelTop = _jobListVm;
 			_bottomView = outputViewModel;
+			
 			//_bottomView = new TestViewModel();
+            _viewModels.Add("Jobs", _jobListVm);
+            _viewModels.Add("Settings", _settingsViewModel);
+			_viewModels.Add("About", _aboutViewModel);
 		}
 
-		public IMainViewModel CurrentViewModelTop
-        {
-            get { return _jobListVm;
 
-            }
-			set { throw new NotImplementedException(); }
+		#region Properties
+		public void SwitchTopViewModel(string key)
+		{
+			CurrentViewModel = _viewModels[key];
+		}
+
+		public bool JobsSelected
+		{
+			get
+			{
+				return CurrentViewModel == _jobListVm;
+			}
+		}
+
+		public bool SettingsSelected
+		{
+			get
+			{ 
+				return CurrentViewModel == _settingsViewModel;
+			}
+		}
+
+		public bool AboutSelected
+		{
+			get
+			{
+				return CurrentViewModel == _aboutViewModel;
+			}
+		}
+
+		public IMainViewModel CurrentViewModel
+        {
+            get { 
+				return _currentViewModelTop;
+			}
+			set {
+				if (SetProperty(ref _currentViewModelTop, value)) {
+					OnPropertyChanged(nameof(JobsSelected));
+					OnPropertyChanged(nameof(SettingsSelected));
+					OnPropertyChanged(nameof(AboutSelected));
+				}
+			}
 		}
 
         public IMainViewModel CurrentViewModelBottom
@@ -50,10 +91,18 @@ namespace VECTO3GUI2020.ViewModel.Implementation
             set { _bottomView = value; }
         }
 
+		public IJobListViewModel JobListVm
+		{
+			get => _jobListVm;
+			set => SetProperty(ref _jobListVm, value);
+		}
+		#endregion
+
+		#region Commands
 
-		#region CommandImplementations
-        #region CommandOpenSettings
-        public ICommand OpenSettings
+		private ICommand _openSettings;
+		private ICommand _switchTopView;
+		public ICommand OpenSettings
         {
             get{
                 return _openSettings ?? (ICommand)new RelayCommand(OpenSettingsExecute);
@@ -69,35 +118,17 @@ namespace VECTO3GUI2020.ViewModel.Implementation
             _windowHelper.ShowWindow(_settingsViewModel);
 		}
 
-
-        #region newMultiStage
-
-		public ICommand NewInterimFile => _jobListVm.NewManufacturingStageFile;
-
-
+		public ICommand SwitchTopView
+		{
+			get
+			{
+				return _switchTopView ?? (_switchTopView = new RelayCommand<string>(SwitchTopViewModel, (s) => true));
+			}
+		}
 
 
 
 		#endregion
 
-        #endregion
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-        #endregion
-
-    }
+	}
 }
diff --git a/VECTO3GUI2020/ViewModel/Implementation/MessageEntry.cs b/VECTO3GUI2020/ViewModel/Implementation/MessageEntry.cs
index d1bff4229030242c6a959b12fad118562ffb7422..f5602802670104739d6436c62ae955ee880fbaa3 100644
--- a/VECTO3GUI2020/ViewModel/Implementation/MessageEntry.cs
+++ b/VECTO3GUI2020/ViewModel/Implementation/MessageEntry.cs
@@ -31,7 +31,7 @@ namespace VECTO3GUI2020.ViewModel.Implementation
 		public string Link
 		{
 			get { return _link; }
-			set {}
+			set { SetProperty(ref _link, value); }
 		}
 
 		public MessageType Type
diff --git a/VECTO3GUI2020/ViewModel/Implementation/OutputViewModel.cs b/VECTO3GUI2020/ViewModel/Implementation/OutputViewModel.cs
index 3e41e51fdd89f701162b0f9b997869f22b7ad463..3c0b356ea3fc699a732a35d41f195e3fd470b6da 100644
--- a/VECTO3GUI2020/ViewModel/Implementation/OutputViewModel.cs
+++ b/VECTO3GUI2020/ViewModel/Implementation/OutputViewModel.cs
@@ -1,8 +1,15 @@
 ο»Ώusing System;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
+using System.Diagnostics;
+using System.IO;
+using System.Linq;
+using System.Text;
 using System.Windows.Data;
+using System.Windows.Input;
+using Microsoft.Toolkit.Mvvm.Input;
 using Microsoft.WindowsAPICodePack.Shell.Interop;
+using VECTO3GUI2020.Helper;
 using VECTO3GUI2020.ViewModel.Implementation;
 using VECTO3GUI2020.ViewModel.Implementation.Common;
 using VECTO3GUI2020.ViewModel.Interfaces;
@@ -13,22 +20,20 @@ namespace VECTO3GUI2020.ViewModel
 
 	public class OutputViewModel : ViewModelBase, IOutputViewModel
 	{
+		#region MembersAndProperties
 		private object _messageLock = new Object();
 		private ObservableCollection<MessageEntry> _messages = new ObservableCollection<MessageEntry>();
 		private int _progress;
 		private string _statusMessage;
+		private ICommand _openFolderCommand;
+		private ICommand _openFileCommand;
 
 		public ObservableCollection<MessageEntry> Messages
 		{
 			get { return _messages; }
 		}
 
-		public void AddMessage(MessageEntry messageEntry)
-		{
-			lock (_messageLock) {
-				Messages.Add(messageEntry);
-			}
-		}
+
 
 		public int Progress
 		{
@@ -43,12 +48,54 @@ namespace VECTO3GUI2020.ViewModel
 		}
 
 
+
+		#endregion
+
+		public void AddMessage(MessageEntry messageEntry)
+		{
+			lock (_messageLock)
+			{
+				Messages.Add(messageEntry);
+			}
+		}
+
+
 		public OutputViewModel()
 		{
 			BindingOperations.EnableCollectionSynchronization(Messages, _messageLock);
 		}
+
+
+		#region Commands
+
+		// ReSharper disable once UnusedMember.Global
+		public ICommand OpenFolderCommand =>
+			_openFolderCommand ?? (_openFolderCommand = new RelayCommand<string>(
+				OpenFolderExecute));
+
+		// ReSharper disable once UnusedMember.Global
+		public ICommand OpenFileCommand =>
+			_openFileCommand ?? (_openFileCommand = new RelayCommand<string>(
+				OpenFileExecute));
+
+		private void OpenFolderExecute(string path)
+		{
+			ProcessHelper.OpenFolder(path);
+		}
+
+		private void OpenFileExecute(string path){
+			if (path == null) {
+				return;
+			}
+
+			ProcessHelper.OpenFile(path);
+		}
+		#endregion
 	}
 
+
+
+
 	public interface IOutputViewModel : IMainViewModel
 	{
 		//ObservableCollection<MessageEntry> Messages { get; }
diff --git a/VECTO3GUI2020/ViewModel/Interfaces/Common/IViewModelBase.cs b/VECTO3GUI2020/ViewModel/Interfaces/Common/IViewModelBase.cs
index 39808350ec312e252e4fee1d1df3624f39f19ff1..407034e20c9334ae4d18c12e581382ccdf1cd28e 100644
--- a/VECTO3GUI2020/ViewModel/Interfaces/Common/IViewModelBase.cs
+++ b/VECTO3GUI2020/ViewModel/Interfaces/Common/IViewModelBase.cs
@@ -1,9 +1,16 @@
 ο»Ώusing System.ComponentModel;
+using System.Windows;
 
 namespace VECTO3GUI2020.ViewModel.Interfaces.Common
 {
 	public interface IViewModelBase : INotifyPropertyChanged
 	{
 		string Title { get; set; }
+		double? Width { get; set; }
+		double? Height { get; set; }
+
+		double? MinHeight { get; set; }
+		double? MinWidth { get; set; }
+		SizeToContent SizeToContent { get; set; }
 	}
 }
\ No newline at end of file
diff --git a/VECTO3GUI2020/ViewModel/Interfaces/Document/IDocumentViewModel.cs b/VECTO3GUI2020/ViewModel/Interfaces/Document/IDocumentViewModel.cs
index 60b6f9edecc3c4896fe5312feb8b61675b6a5afb..cd12c7d033a295b2026e419f2a3283765df7905d 100644
--- a/VECTO3GUI2020/ViewModel/Interfaces/Document/IDocumentViewModel.cs
+++ b/VECTO3GUI2020/ViewModel/Interfaces/Document/IDocumentViewModel.cs
@@ -1,5 +1,6 @@
 ο»Ώusing TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCore.Utils;
+using VECTO3GUI2020.ViewModel.Implementation.Common;
 using VECTO3GUI2020.ViewModel.Interfaces.JobEdit;
 
 namespace VECTO3GUI2020.ViewModel.Interfaces.Document
@@ -9,10 +10,10 @@ namespace VECTO3GUI2020.ViewModel.Interfaces.Document
         string DocumentName { get; }
         XmlDocumentType DocumentType { get; }
 		DataSource DataSource { get; }
-
-        IEditViewModel EditViewModel { get; }
+		IEditViewModel EditViewModel { get; }
 		bool Selected { get; set; }
 
-        bool CanBeEdited { get; set; }
+        bool CanBeSimulated { get; set; }
+		IAdditionalJobInfoViewModel AdditionalJobInfoVm { get; set; }
 	}
 }
diff --git a/VECTO3GUI2020/ViewModel/Interfaces/IJobListViewModel.cs b/VECTO3GUI2020/ViewModel/Interfaces/IJobListViewModel.cs
index 6b09b8717c8fab496c4bae1091a04c2640d9cbce..9f429c60afebbdceff089cf1e22bb37e666f4c67 100644
--- a/VECTO3GUI2020/ViewModel/Interfaces/IJobListViewModel.cs
+++ b/VECTO3GUI2020/ViewModel/Interfaces/IJobListViewModel.cs
@@ -1,6 +1,8 @@
 ο»Ώusing System.Collections.ObjectModel;
 using System.Threading.Tasks;
 using System.Windows.Input;
+using Microsoft.Toolkit.Mvvm.Input;
+using NLog;
 using VECTO3GUI2020.Model.Interfaces;
 using VECTO3GUI2020.ViewModel.Interfaces.Document;
 
@@ -8,10 +10,18 @@ namespace VECTO3GUI2020.ViewModel.Interfaces
 {
     public interface IJobListViewModel : IMainViewModel
     {
-        ICommand AddJob { get; }
-        ICommand EditJob { get; }
-        ObservableCollection<IDocumentViewModel> Jobs { get; }
-		ICommand NewManufacturingStageFile { get; }
-		Task<IDocumentViewModel> AddJobAsync(string fileName);
+		ObservableCollection<IDocumentViewModel> Jobs { get; }
+		ICommand NewManufacturingStageFileCommand { get; }
+		ICommand NewCompletedInputCommand { get; }
+		ICommand NewExemptedCompletedInputCommand { get; }
+		IRelayCommand<bool> NewVifCommand { get; }
+		ICommand EditDocument { get; set; }
+		ICommand ViewXMLFile { get; set; }
+		IAsyncRelayCommand RemoveJob { get; set; }
+		ICommand OpenSourceFileCommand { get; }
+		ICommand ShowSourceFileCommand { get; }
+		IAsyncRelayCommand AddJobAsyncCommand { get; }
+		Task<IDocumentViewModel> AddJobAsync(string fileName, bool runSimulationAfterAdding = false);
+		void AddJob(IDocumentViewModel jobToAdd);
 	}
 }
diff --git a/VECTO3GUI2020/ViewModel/Interfaces/IMainWindowViewModel.cs b/VECTO3GUI2020/ViewModel/Interfaces/IMainWindowViewModel.cs
index 688159a82fbef1ba6c38118537057a0f637aaa85..28ce249b57f78279f67b8abb0eb9889714e59281 100644
--- a/VECTO3GUI2020/ViewModel/Interfaces/IMainWindowViewModel.cs
+++ b/VECTO3GUI2020/ViewModel/Interfaces/IMainWindowViewModel.cs
@@ -4,10 +4,9 @@ namespace VECTO3GUI2020.ViewModel.Interfaces
 {
     public interface IMainWindowViewModel
     {
-        IMainViewModel CurrentViewModelTop { get; set; }
-        IMainViewModel CurrentViewModelBottom { get; set; }
+        IMainViewModel CurrentViewModel { get; set; }
 
-        #region Commands
+		#region Commands
         ICommand OpenSettings { get;}
         #endregion
     }
diff --git a/VECTO3GUI2020/ViewModel/Interfaces/ISettingsViewModel.cs b/VECTO3GUI2020/ViewModel/Interfaces/ISettingsViewModel.cs
index 889bdc9b65870abd36d314e3f62200bc9b8801bd..326fdcef515188cebfc385168672ed1a520692c6 100644
--- a/VECTO3GUI2020/ViewModel/Interfaces/ISettingsViewModel.cs
+++ b/VECTO3GUI2020/ViewModel/Interfaces/ISettingsViewModel.cs
@@ -1,9 +1,13 @@
 ο»Ώnamespace VECTO3GUI2020.ViewModel.Interfaces
 {
-    public interface ISettingsViewModel
+    public interface ISettingsViewModel : IMainViewModel
     {
-
-
-
-    }
+		string DefaultFilePath { get; set; }
+		string DefaultOutputPath { get; set; }
+		bool SerializeVectoRunData { get; set; }
+		bool ActualModalData { get; set; }
+		bool Validate { get; set; }
+		bool ModalResults1Hz { get; set; }
+		bool WriteModalResults { get; set; }
+	}
 }
diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/CreateVifViewModel.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/CreateVifViewModel.cs
new file mode 100644
index 0000000000000000000000000000000000000000..35f6902108c8ea1bf70cc2668e799098cf94fd18
--- /dev/null
+++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/CreateVifViewModel.cs
@@ -0,0 +1,500 @@
+ο»Ώusing System;
+using System.ComponentModel;
+using System.Diagnostics;
+using System.IO;
+using System.ServiceModel.Channels;
+using System.Text;
+using System.Windows;
+using System.Windows.Input;
+using Castle.Core.Internal;
+using InteractiveDataDisplay.WPF;
+using Microsoft.Toolkit.Mvvm.Input;
+using Microsoft.WindowsAPICodePack.Shell.Interop;
+using Newtonsoft.Json;
+using TUGraz.VectoCommon.Exceptions;
+using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCore.InputData.FileIO.JSON;
+using TUGraz.VectoCore.InputData.FileIO.XML;
+using TUGraz.VectoCore.InputData.FileIO.XML.Declaration;
+using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider;
+using TUGraz.VectoCore.Utils;
+using VECTO3GUI2020.Helper;
+using VECTO3GUI2020.Model.Multistage;
+using VECTO3GUI2020.ViewModel.Implementation.Common;
+using VECTO3GUI2020.ViewModel.Interfaces;
+using VECTO3GUI2020.ViewModel.Interfaces.Document;
+using Delegate = System.Delegate;
+
+namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
+{
+	public interface ICreateVifViewModel: IDocumentViewModel, IEditViewModel
+	{
+		bool LoadStageInput(string fileName);
+		bool LoadPrimaryInput(string fileName);
+		bool? IsPrimaryExempted { get; set; }
+		bool? IsStageInputExempted { get; set; }
+		string PrimaryInputPath { get; set; }
+		string StageInputPath { get; set; }
+		IRelayCommand RemoveStageInputCommand { get; }
+		IRelayCommand RemovePrimaryCommand { get; }
+		string SaveJob(string path);
+	}
+    public class CreateVifViewModel : ViewModelBase, ICreateVifViewModel
+	{
+		private string _primaryInputPath;
+		private string _stageInputPath;
+		private readonly IDialogHelper _dialogHelper;
+		private readonly IXMLInputDataReader _inputDataReader;
+		private static uint _newVifCounter = 0;
+		private readonly uint _newVifCount;
+
+		private bool? _isPrimaryExempted;
+
+		public bool? IsPrimaryExempted
+		{
+			get => _isPrimaryExempted;
+			set => SetProperty(ref _isPrimaryExempted, value);
+		}
+
+		private bool? _isStageInputExempted;
+
+		public bool? IsStageInputExempted
+		{
+			get => _isStageInputExempted;
+			set => SetProperty(ref _isStageInputExempted, value);
+		}
+
+		private bool _completed;
+		public bool Completed
+		{
+			get => _completed;
+			set => SetProperty(ref _completed, value);
+		}
+
+		#region Labeling
+
+		private  string _vifType;
+
+		private string VifType
+		{
+			get
+			{
+				return Completed ? "Completed Job" : "Primary Job with Interim Input";
+			}
+			set => SetProperty(ref _vifType, value);
+		}
+
+		#endregion
+
+		public bool UnsavedChanges => _backingStorage.UnsavedChanges;
+
+
+		public CreateVifViewModel(IDialogHelper dialogHelper, 
+			IXMLInputDataReader inputDataReader, 
+			IAdditionalJobInfoViewModel additionalJobInfo)
+		{
+			SizeToContent = SizeToContent.WidthAndHeight;
+
+			_newVifCount = ++_newVifCounter;
+			_dialogHelper = dialogHelper;
+			_inputDataReader = inputDataReader;
+			_additionalJobInfo = additionalJobInfo;
+			additionalJobInfo.SetParent(this);
+			
+
+			SetupBackingStorage();
+
+			
+
+			UpdateTitleAndDocumentName();
+			(this as INotifyPropertyChanged).PropertyChanged += CreateVifViewModel_PropertyChanged;
+		}
+
+		private void SetupBackingStorage()
+		{
+			_backingStorage = new BackingStorage<CreateVifViewModel>(this,
+				nameof(this.PrimaryInputPath),
+				nameof(this.StageInputPath));
+			_backingStorage.PropertyChanged += (object s, PropertyChangedEventArgs e) => {
+				OnPropertyChanged(nameof(UnsavedChanges));
+			};
+		}
+
+		private void CreateVifViewModel_PropertyChanged(object sender, PropertyChangedEventArgs e)
+        {
+			if (e.PropertyName != nameof(CanBeSimulated)) {
+				OnPropertyChanged(nameof(CanBeSimulated));
+			}
+			switch (e.PropertyName) {
+				case nameof(DataSource):
+				case nameof(Completed):
+				case nameof(UnsavedChanges):
+					UpdateTitleAndDocumentName();
+					break;
+				default:
+					break;
+			}
+        }
+
+        public CreateVifViewModel(IInputDataProvider inputData, 
+			IDialogHelper dialogHelper, 
+			IXMLInputDataReader inputDataReader, 
+			IAdditionalJobInfoViewModel additionalJobInfo) : this(dialogHelper, inputDataReader, additionalJobInfo)
+		{
+			SetInputData(inputData);
+			_backingStorage.SaveChanges();
+		}
+
+		public CreateVifViewModel(bool completed, IDialogHelper dialogHelper, IXMLInputDataReader inputDataReader,
+			IAdditionalJobInfoViewModel additionalJobInfo) : this(dialogHelper, inputDataReader, additionalJobInfo)
+		{
+			_completed = completed;
+		}
+
+
+		private void SetInputData(IInputDataProvider inputData)
+		{
+			var inputDataProvider = inputData as JSONInputDataV10_PrimaryAndStageInputBus;
+			Debug.Assert(inputDataProvider != null);
+			
+
+			if (inputDataProvider.StageInputData != null && (inputDataProvider.StageInputData.ExemptedVehicle !=
+															inputDataProvider.PrimaryVehicle.ExemptedVehicle)) {
+				throw new VectoException("Can't combine exempted and non-exempted input data");
+			}
+
+			Completed = inputDataProvider.Completed ?? false;
+			StageInputPath = inputDataProvider.StageInputData?.DataSource?.SourceFile;
+			PrimaryInputPath = inputDataProvider.PrimaryVehicle?.DataSource?.SourceFile;
+			DataSource = inputData.DataSource;
+			UpdateTitleAndDocumentName();
+		}
+
+		private void UpdateTitleAndDocumentName()
+		{
+			var titleStringBuilder = new StringBuilder();
+			titleStringBuilder.Append("Create ").Append(VifType);
+			if (DataSource != null) {
+				titleStringBuilder.Append(" - ").Append(Path.GetFileName(DataSource.SourceFile));
+			}
+
+			titleStringBuilder.Append(UnsavedChanges ? "*" : "");
+			Title = titleStringBuilder.ToString();
+			DocumentName = Path.GetFileNameWithoutExtension(_dataSource?.SourceFile) ?? $"New {VifType} {_newVifCount}";
+		}
+
+
+		public string PrimaryInputPath
+		{
+			get => _primaryInputPath;
+			set
+			{
+				if (SetProperty(ref _primaryInputPath, value)) {
+					OnPropertyChanged(nameof(CanBeSimulated));
+					_removePrimaryCommand?.NotifyCanExecuteChanged();
+				}
+			}
+		}
+
+		public string StageInputPath
+		{
+			get => _stageInputPath;
+			set
+			{
+				if (SetProperty(ref _stageInputPath, value))
+				{
+					OnPropertyChanged(nameof(CanBeSimulated));
+					_removeStageInputCommand?.NotifyCanExecuteChanged();
+				}
+			}
+		}
+
+		#region Commands
+
+		private ICommand _selectPrimaryInputFileCommand;
+		private ICommand _selectCompletedInputFileCommand;
+		public ICommand SelectCompletedInputFileCommand
+		{
+			get => _selectCompletedInputFileCommand ?? (_selectCompletedInputFileCommand = new RelayCommand(() => {
+				var selectedFile = _dialogHelper.OpenXMLFileDialog();
+				LoadStageInput(selectedFile);
+
+
+			}));
+		}
+
+		public ICommand SelectPrimaryInputFileCommand
+		{
+			get => _selectPrimaryInputFileCommand ?? (_selectPrimaryInputFileCommand = new RelayCommand(() => {
+				var selectedFilePath = _dialogHelper.OpenXMLFileDialog();
+				LoadPrimaryInput(selectedFilePath);
+
+			}));
+		}
+
+		private IRelayCommand _saveJobCommand;
+
+		public ICommand SaveJobCommand
+		{
+			get => _saveJobCommand ?? (_saveJobCommand = new RelayCommand(() => {
+				if (_dataSource.SourceFile != null) {
+					if (CanBeSaved()) {
+						SaveJob(_dataSource.SourceFile);
+					}
+				}
+			}, () => DataSource != null));
+		}
+		public IRelayCommand _removeStageInputCommand;
+
+		public IRelayCommand RemoveStageInputCommand =>
+			_removeStageInputCommand ?? (_removeStageInputCommand = new RelayCommand(() => {
+				StageInputPath = null;
+				IsStageInputExempted = null;
+
+			}, () => StageInputPath != null));
+
+
+
+
+		public IRelayCommand _removePrimaryCommand;
+
+		public IRelayCommand RemovePrimaryCommand => 
+			_removePrimaryCommand ?? (_removePrimaryCommand = new RelayCommand(() => {
+				PrimaryInputPath = null;
+				IsPrimaryExempted = null;
+
+			}, () => PrimaryInputPath != null));
+
+
+		private bool CanBeSaved()
+		{
+			if (_primaryInputPath == null) {
+				_dialogHelper.ShowMessageBox("At least Primary Vehicle has to be provided", "Info", MessageBoxButton.OK,
+					MessageBoxImage.Information);
+				return false;
+			}
+
+			return true;
+		}
+
+		public string SaveJob(string path)
+		{
+			if (path == null) {
+				return null;
+			}
+
+			var jsonJob = new JSONJob() {
+				Header = new JSONJobHeader() {
+					AppVersion = "Vecto3GUI2020",
+					CreatedBy = Environment.UserName,
+					Date = DateTime.Today,
+					FileVersion = JSONJobHeader.PrimaryAndInterimVersion
+				},
+				Body = new JSONJobBody() {
+					PrimaryVehicle = PrimaryInputPath,
+					InterimStage = StageInputPath
+				}
+			};
+
+			string jsonString = JsonConvert.SerializeObject(jsonJob, Formatting.Indented);
+
+			
+			Debug.WriteLine(jsonString);
+			File.WriteAllText(path, jsonString);
+			SetInputData(JSONInputDataFactory.ReadJsonJob(path));
+			_backingStorage.SaveChanges();
+			return path;
+		}
+
+		private IRelayCommand _saveJobAsCommand;
+
+		public IRelayCommand SaveJobAsCommand
+		{
+			get => _saveJobAsCommand ?? (_saveJobAsCommand = new RelayCommand(() => {
+				if (CanBeSaved()) {
+					var path = _dialogHelper.SaveToJsonDialog();
+					SaveJob(path);
+				}
+			}));
+		}
+
+		public bool LoadStageInput(string fileName)
+		{
+			if (fileName == null)
+			{
+				return false;
+			}
+
+			var valid = true;
+			IVehicleDeclarationInputData vehicleInputData = null;
+			try
+			{
+				var inputData = _inputDataReader.Create(fileName) as IDeclarationInputDataProvider;
+				vehicleInputData = inputData.JobInputData.Vehicle;
+				var type = vehicleInputData.GetType();
+				valid = (inputData != null) && (vehicleInputData is XMLDeclarationInterimStageBusDataProviderV28) || (vehicleInputData is XMLDeclarationExemptedInterimStageBusDataProviderV28);
+			}
+			catch (Exception e)
+			{
+				valid = false;
+			}
+
+			valid = valid && SetStageInputExempted(vehicleInputData.ExemptedVehicle);
+
+			if (valid)
+			{
+				StageInputPath = fileName;
+			}
+			else
+			{
+				_dialogHelper.ShowMessageBox("Invalid File", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
+			}
+
+
+
+
+			return valid;
+		}
+
+
+		public bool LoadPrimaryInput(string fileName)
+		{
+			if (fileName == null)
+			{
+				return false;
+			}
+
+			var valid = true;
+			IDeclarationInputDataProvider inputData = null;
+			try
+			{
+				inputData = _inputDataReader.Create(fileName) as IDeclarationInputDataProvider;
+				valid = inputData != null && inputData.JobInputData.Vehicle.VehicleCategory.IsBus();
+			}
+			catch (Exception ex)
+			{
+				valid = false;
+			}
+
+			valid = valid && SetPrimaryInputExempted(inputData.JobInputData.Vehicle.ExemptedVehicle);
+
+
+
+			if (valid)
+			{
+				PrimaryInputPath = fileName;
+			}
+			else
+			{
+				_dialogHelper.ShowMessageBox("Invalid File", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
+			}
+
+
+			return valid;
+		}
+
+		private bool SetPrimaryInputExempted(bool primaryExempted)
+		{
+			var valid = IsStageInputExempted == null || IsStageInputExempted == primaryExempted;
+
+			if (valid)
+			{
+				IsPrimaryExempted = primaryExempted;
+			}
+			else
+			{
+				_dialogHelper.ShowMessageBox(
+					caption: "Error",
+					button: MessageBoxButton.OK,
+					icon: MessageBoxImage.Error,
+					messageBoxText: (primaryExempted
+						? "Exempted primary vehicle not allowed for non-exempted interim/completed input"
+						: "Only exempted input allowed for exempted interim/completed input"));
+			}
+			return valid;
+		}
+
+		private bool SetStageInputExempted(bool stageInputExempted)
+		{
+			var valid = IsPrimaryExempted == null || IsPrimaryExempted == stageInputExempted;
+
+			if (valid)
+			{
+				IsStageInputExempted = stageInputExempted;
+			}
+			else
+			{
+				_dialogHelper.ShowMessageBox(
+					caption: "Error",
+					button: MessageBoxButton.OK,
+					icon: MessageBoxImage.Error,
+					messageBoxText: (stageInputExempted
+						? "Exempted interim/complete input is invalid for non-exempted primary vehicle"
+						: "Only exempted input allowed for selected primary vehicle"));
+			}
+			return valid;
+		}
+
+
+		#endregion
+
+		#region Implementation of IDocumentViewModel
+		private bool _selected;
+		private string _documentName;
+		private DataSource _dataSource;
+		private IAdditionalJobInfoViewModel _additionalJobInfo;
+		private BackingStorage<CreateVifViewModel> _backingStorage;
+
+
+		public string DocumentName
+		{
+			get => _documentName;
+			set => SetProperty(ref _documentName, value);
+		}
+
+
+		public XmlDocumentType DocumentType => throw new NotImplementedException();
+
+		public DataSource DataSource
+		{
+			get => _dataSource;
+			set
+			{
+				if (SetProperty(ref _dataSource, value)) {
+					_saveJobCommand?.NotifyCanExecuteChanged();
+				}
+			}
+		}
+
+		public IEditViewModel EditViewModel => this;
+
+		public bool Selected
+		{
+			get => _selected && CanBeSimulated;
+			set => SetProperty(ref _selected, value);
+		}
+
+		public bool CanBeSimulated
+		{
+			get => PrimaryInputPath != null && StageInputPath != null && !UnsavedChanges;
+			set => throw new NotImplementedException();
+		}
+
+		public IAdditionalJobInfoViewModel AdditionalJobInfoVm
+		{
+			get => _additionalJobInfo;
+			set => SetProperty(ref _additionalJobInfo, value);
+		}
+
+		#endregion
+
+		#region Implementation of IEditViewModel
+
+		public string Name => DocumentName;
+
+
+
+		#endregion
+	}
+}
diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel_v2_8.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel_v2_8.cs
index 7cf379e0a0e613e99dfe177628aa15defb0c31ba..6dab867e83d75e3ba0888201f8a46a2b2c447444 100644
--- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel_v2_8.cs
+++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel_v2_8.cs
@@ -14,6 +14,7 @@ using System.Xml;
 using Castle.Core.Internal;
 using Microsoft.Build.Framework;
 using TUGraz.VectoCommon.BusAuxiliaries;
+using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
@@ -69,7 +70,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 		}
 	}
 
-	public interface IMultistageVehicleViewModel : IVehicleViewModel
+	public interface IMultistageVehicleViewModel : IVehicleViewModel, INotifyPropertyChanged
 	{
 		bool HasErrors { get; }
 		Dictionary<string, string> Errors { get; }
@@ -80,9 +81,14 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 	}
 
 
-	public class DeclarationInterimStageBusVehicleViewModel_v2_8 : ViewModelBase, IMultistageVehicleViewModel,
+	public class InterimStageBusVehicleViewModel_v2_8 : ViewModelBase, IMultistageVehicleViewModel,
 		IVehicleComponentsDeclaration, IAdvancedDriverAssistantSystemDeclarationInputData, IDataErrorInfo
 	{
+		public static readonly Type INPUTPROVIDERTYPE = typeof(XMLDeclarationInterimStageBusDataProviderV28);
+		public static readonly Type INPUTPROVIDERTYPEEXEMPTED = typeof(XMLDeclarationExemptedInterimStageBusDataProviderV28);
+		public static string VERSION = INPUTPROVIDERTYPE.ToString();
+		public static string VERSION_EXEMPTED = INPUTPROVIDERTYPEEXEMPTED.ToString();
+
 
 		private readonly IMultiStageViewModelFactory _multiStageViewModelFactory;
 
@@ -121,8 +127,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 
 		#endregion
 
-		public static readonly string INPUTPROVIDERTYPE =
-			typeof(XMLDeclarationInterimStageBusDataProviderV28).ToString();
+
 
 		public string Name => "Vehicle";
 
@@ -138,29 +143,79 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 			set { throw new NotImplementedException(); }
 		}
 
+		private bool _showConsolidatedData;
+
+		public bool ShowConsolidatedData
+		{
+			get => _showConsolidatedData;
+			set
+			{
+				SetProperty(ref _showConsolidatedData, value);
+				if (MultistageAuxiliariesViewModel != null) {
+					MultistageAuxiliariesViewModel.ShowConsolidatedData = value;
+				}
+
+				if (MultistageAirdragViewModel != null) {
+					MultistageAirdragViewModel.ShowConsolidatedData = value;
+				}
+				foreach (var multistageParameterViewModel in _parameterViewModels) {
+					multistageParameterViewModel.Value.ShowConsolidatedData = value;
+				}
+			}
+		}
+
+		public InterimStageBusVehicleViewModel_v2_8(string inputProviderType, IMultiStageViewModelFactory multiStageViewModelFactory)
+		{
+			if (inputProviderType == VERSION_EXEMPTED)
+			{
+				_exemptedVehicle = true;
+			}
+
+			_multiStageViewModelFactory = multiStageViewModelFactory;
+
+			if (!_exemptedVehicle)
+			{
+				MultistageAirdragViewModel = _multiStageViewModelFactory.GetMultistageAirdragViewModel();
+				MultistageAuxiliariesViewModel = _multiStageViewModelFactory.GetAuxiliariesViewModel();
+			}
 
-		public DeclarationInterimStageBusVehicleViewModel_v2_8(IVehicleDeclarationInputData consolidatedVehicleData,
-			IMultiStageViewModelFactory multistageViewModelFactory)
+			CreateParameterViewModels();
+			ShowConsolidatedData = false;
+		}
+		public InterimStageBusVehicleViewModel_v2_8(IVehicleDeclarationInputData inputData, IMultiStageViewModelFactory multiStageViewModelFactory) : 
+			this(inputData.GetType().ToString(), multiStageViewModelFactory)
+		{
+			SetVehicleInputData(inputData);
+		}
+
+		public InterimStageBusVehicleViewModel_v2_8(IVehicleDeclarationInputData consolidatedVehicleData,
+			IMultiStageViewModelFactory multistageViewModelFactory, bool exempted)
 		{
 			ConsolidatedVehicleData = consolidatedVehicleData;
-			
+			_exemptedVehicle = exempted;
 			_multiStageViewModelFactory = multistageViewModelFactory;
 
-			MultistageAirdragViewModel = _multiStageViewModelFactory.GetMultistageAirdragViewModel(consolidatedVehicleData?.Components?.AirdragInputData);
-			
-			MultistageAirdragViewModel.AirdragViewModelChanged += ((sender, args) => {
-				if (sender is IMultistageAirdragViewModel vm) {
-					if (AirdragModifiedMultistageMandatory) {
-						if (vm.AirDragViewModel != null) {
-							AirdragModifiedMultistage = true;
+
+			if (!exempted) {
+				MultistageAirdragViewModel = _multiStageViewModelFactory.GetMultistageAirdragViewModel(consolidatedVehicleData?.Components?.AirdragInputData);
+
+				MultistageAirdragViewModel.AirdragViewModelChanged += ((sender, args) => {
+					if (sender is IMultistageAirdragViewModel vm)
+					{
+						if (AirdragModifiedMultistageMandatory)
+						{
+							if (vm.AirDragViewModel != null)
+							{
+								AirdragModifiedMultistage = true;
+							}
 						}
 					}
-				}
-			});
+				});
 
-			MultistageAuxiliariesViewModel =
-				_multiStageViewModelFactory.GetAuxiliariesViewModel(consolidatedVehicleData?.Components?
-					.BusAuxiliaries);
+				MultistageAuxiliariesViewModel =
+					_multiStageViewModelFactory.GetAuxiliariesViewModel(consolidatedVehicleData?.Components?
+						.BusAuxiliaries);
+			}
 
 
 			CreateParameterViewModels();
@@ -287,8 +342,8 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 					.NOT_APPLICABLE));
 
 			_parameterViewModels[nameof(LegislativeClass)].AllowedItems =
-				EnumHelper.GetValuesAsObservableCollectionExcluding<Enum, LegislativeClass>((TUGraz.VectoCommon.Models
-					.LegislativeClass.Unknown));
+				EnumHelper.GetValuesAsObservableCollectionIncluding<Enum, LegislativeClass>((TUGraz.VectoCommon.Models
+					.LegislativeClass.M3));
 
 			_parameterViewModels[nameof(RegisteredClass)].AllowedItems =
 				EnumHelper.GetValuesAsObservableCollectionExcluding<Enum, RegistrationClass>(RegistrationClass.unknown);
@@ -334,6 +389,16 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 
 		public void SetVehicleInputData(IVehicleDeclarationInputData vehicleInputData)
 		{
+			if (vehicleInputData.ExemptedVehicle != ExemptedVehicle) {
+				throw new VectoException(ExemptedVehicle ? "Only exempted stage inputs are allowed" : "Exempted Vehicle not allowed");
+			}
+
+			if (ExemptedVehicle) {
+				SetExemptedVehicleInputData(vehicleInputData);
+				return;
+			}
+
+
 			Manufacturer = vehicleInputData.Manufacturer;
 			Identifier = vehicleInputData.Identifier;
 			ManufacturerAddress = vehicleInputData.ManufacturerAddress;
@@ -372,9 +437,28 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 			{
 				multistageParameterViewModel.UpdateEditingEnabled();
 			}
+			MultistageAirdragViewModel.SetAirdragInputData(vehicleInputData?.Components?.AirdragInputData);
+			MultistageAuxiliariesViewModel.SetAuxiliariesInputData(vehicleInputData?.Components?.BusAuxiliaries);
 			OnPropertyChanged(string.Empty);
 		}
 
+		private void SetExemptedVehicleInputData(IVehicleDeclarationInputData vehicleInputData)
+		{
+			Debug.Assert(vehicleInputData.ExemptedVehicle);
+			Manufacturer = vehicleInputData.Manufacturer;
+			Identifier = vehicleInputData.Identifier;
+			ManufacturerAddress = vehicleInputData.ManufacturerAddress;
+			VIN = vehicleInputData.VIN;
+			Model = vehicleInputData.Model;
+			LegislativeClass = vehicleInputData.LegislativeClass;
+			CurbMassChassis = vehicleInputData.CurbMassChassis;
+			GrossVehicleMassRating = vehicleInputData.GrossVehicleMassRating;
+			RegisteredClass = vehicleInputData.RegisteredClass;
+			NumberPassengerSeatsUpperDeck = vehicleInputData.NumberPassengerSeatsUpperDeck;
+			NumberPassengerSeatsLowerDeck = vehicleInputData.NumberPassengerSeatsLowerDeck;
+			VehicleCode = vehicleInputData.VehicleCode;
+			Height = vehicleInputData.Height;
+		}
 
 
 
@@ -687,6 +771,8 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 
 		#endregion;
 
+		public string ExemptedTechnology { get; }
+
 		public RegistrationClass? RegisteredClass
 		{
 			get => _registeredClass;
@@ -729,20 +815,16 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 
 		public IAirdragDeclarationInputData AirdragInputData
 		{
-			get => MultistageAirdragViewModel.AirDragViewModel;
+			get => MultistageAirdragViewModel?.AirDragViewModel;
 		}
 
 		public IBusAuxiliariesDeclarationData BusAuxiliaries
 		{
-			get => MultistageAuxiliariesViewModel.HasValues ? MultistageAuxiliariesViewModel : null;
+			get => MultistageAuxiliariesViewModel != null &&  MultistageAuxiliariesViewModel.HasValues ? MultistageAuxiliariesViewModel : null;
 		}
 
 		#region not implemented
 
-		public string LegislativeCategory
-		{
-			get => throw new NotImplementedException();
-		}
 		public IGearboxDeclarationInputData GearboxInputData => throw new NotImplementedException();
 
 		public ITorqueConverterDeclarationInputData TorqueConverterInputData => throw new NotImplementedException();
@@ -924,11 +1006,11 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 
 		public bool ExemptedVehicle
 		{
-			get { throw new NotImplementedException(); }
+			get => _exemptedVehicle;
+			//set => SetProperty(ref _exemptedVehicle, value);
 		}
 
 
-
 		public VehicleCategory VehicleCategory
 		{
 			get { throw new NotImplementedException(); }
@@ -1132,7 +1214,8 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 		{
 			get
 			{
-				return !Error.IsNullOrEmpty() || MultistageAuxiliariesViewModel.HasErrors;
+				return !Error.IsNullOrEmpty() || 
+						(MultistageAuxiliariesViewModel != null && MultistageAuxiliariesViewModel.HasErrors);
 			}
 		}
 		#endregion
@@ -1140,7 +1223,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 		private bool _airdragModifiedMultistageMandatory;
 		private int? _numberPassengersStandingLowerDeck;
 		private int? _numberPassengersStandingUpperDeck;
-
+		private bool _exemptedVehicle;
 
 	}
 }
\ No newline at end of file
diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/ManufacturingStageViewModel_v0_1.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/ManufacturingStageViewModel_v0_1.cs
index a0f8a942108ebf574af9b5dcc2d7640a11bf3dc9..573b344afab3f9dc5da11024a6c8745a7d75a416 100644
--- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/ManufacturingStageViewModel_v0_1.cs
+++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/ManufacturingStageViewModel_v0_1.cs
@@ -1,18 +1,14 @@
 ο»Ώusing System;
 using System.Collections;
-using System.Collections.Generic;
 using System.Linq;
 using System.Net.Mime;
 using System.Security.RightsManagement;
 using System.Text;
 using System.Threading.Tasks;
-using System.Windows.Input;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider;
 using TUGraz.VectoCore.InputData.Impl;
 using TUGraz.VectoCore.Models.GenericModelData;
-using VECTO3GUI2020.Util;
-using VECTO3GUI2020.ViewModel.Implementation.Common;
 using VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle;
 using VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components;
 using VECTO3GUI2020.ViewModel.Interfaces.Common;
@@ -22,12 +18,8 @@ using VECTO3GUI2020.ViewModel.MultiStage.Interfaces;
 
 namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 {
-	public class ManufacturingStageViewModel_v0_1 : ViewModelBase, IManufacturingStageViewModel
+	public class ManufacturingStageViewModel_v0_1 : StageViewModelBase, IManufacturingStageViewModel
 	{
-		public static readonly string INPUTPROVIDERTYPE = typeof(XMLDeclarationMultistageTypeInputDataV01).ToString();
-		public static readonly string QualifiedXSD = XMLDeclarationMultistageTypeInputDataV01.QUALIFIED_XSD_TYPE;
-		private Dictionary<string, IViewModelBase> Components = new Dictionary<string, IViewModelBase>(StringComparer.CurrentCultureIgnoreCase);
-
 		public DigestData HashPreviousStage
 		{
 			get => _hashPreviousStage;
@@ -42,24 +34,9 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 
 		public IVehicleDeclarationInputData Vehicle => _vehicleViewModel;
 
-		public IViewModelBase CurrentView
-		{
-			get => _currentview;
-			set => SetProperty(ref _currentview, value);
-		}
-
 		private IApplicationInformation _applicationInformation = new ApplicationInformation {
 			Date = DateTime.Today,
 		};
-		private IMultistageVehicleViewModel _vehicleViewModel;
-		private IMultiStageViewModelFactory _viewModelFactory;
-		private IViewModelBase _currentview;
-
-		public IMultistageVehicleViewModel VehicleViewModel
-		{
-			get => _vehicleViewModel;
-			set => SetProperty(ref _vehicleViewModel, value);
-		}
 
 		public IApplicationInformation ApplicationInformation
 		{
@@ -71,33 +48,29 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 		public void SetInputData(IVehicleDeclarationInputData vehicleInputData)
 		{
 			VehicleViewModel.SetVehicleInputData(vehicleInputData);
-			VehicleViewModel.MultistageAirdragViewModel.SetAirdragInputData(vehicleInputData?.Components?.AirdragInputData);
-			VehicleViewModel.MultistageAuxiliariesViewModel.SetAuxiliariesInputData(vehicleInputData?.Components?.BusAuxiliaries);
+
 			OnPropertyChanged(nameof(CurrentView));
 
 		}
 
 
-		public ManufacturingStageViewModel_v0_1(IManufacturingStageInputData consolidatedManufacturingStageInputData, IMultiStageViewModelFactory viewModelFactory)
+		public ManufacturingStageViewModel_v0_1(IManufacturingStageInputData consolidatedManufacturingStageInputData, bool exempted,
+			IMultiStageViewModelFactory viewModelFactory) : base(viewModelFactory)
 		{
 			Title = "Edit Manufacturing Stage";
-			_viewModelFactory = viewModelFactory;
+			
 			
 			_stageCount = consolidatedManufacturingStageInputData?.StageCount + 1 ?? 2;
 
 			_consolidatedManufacturingStageInputData = consolidatedManufacturingStageInputData;
 
 
-			VehicleViewModel = (IMultistageVehicleViewModel)_viewModelFactory.GetInterimStageVehicleViewModel(consolidatedManufacturingStageInputData?.Vehicle);
+			VehicleViewModel = (IMultistageVehicleViewModel)_viewModelFactory.GetInterimStageVehicleViewModel(consolidatedManufacturingStageInputData?.Vehicle, exempted);
 			CurrentView = VehicleViewModel as IViewModelBase;
 
 
 			Components.Add(VehicleViewModel.Name, VehicleViewModel as IViewModelBase);
-
-
-			
 			Components.Add("Airdrag", VehicleViewModel.MultistageAirdragViewModel as IViewModelBase);
-
 			Components.Add("Auxiliaries", VehicleViewModel.MultistageAuxiliariesViewModel as IViewModelBase);
 		}
 
@@ -107,28 +80,6 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 		private DigestData _hashPreviousStage;
 		private IManufacturingStageInputData _consolidatedManufacturingStageInputData;
 
-		#region Commands
-
-		private ICommand _switchComponentViewCommand;
-
-
-		public ICommand SwitchComponentViewCommand
-		{
-			get {
-				return _switchComponentViewCommand ?? new RelayCommand<string>(SwitchViewExecute, (string s) => true);
-			}
-		}
-
-		private void SwitchViewExecute(string viewToShow)
-		{
-			IViewModelBase newView;
-			var success= Components.TryGetValue(viewToShow, out newView);
-			if (success) {
-				CurrentView = newView;
-			}
-		}
-
-		#endregion
 
 		private class ApplicationInformationMultistage : IApplicationInformation
 		{
@@ -138,9 +89,8 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 		}
 	}
 
-	public interface IManufacturingStageViewModel : IManufacturingStageInputData
-	{
+
+	public interface IManufacturingStageViewModel : IManufacturingStageInputData, IStageViewModelBase{
 		void SetInputData(IVehicleDeclarationInputData vehicleInputData);
-		IMultistageVehicleViewModel VehicleViewModel { get; }
 	}
 }
diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAirdragViewModel.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAirdragViewModel.cs
index 03e0394b8961589b7d5c4c7af9ae954b3d84636b..4811f904c9caae3c645ddd41de77239b8ac7e455 100644
--- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAirdragViewModel.cs
+++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAirdragViewModel.cs
@@ -62,6 +62,12 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 			}
 		}
 
+		public bool ShowConsolidatedData
+		{
+			get => _showConsolidatedData;
+			set => SetProperty(ref _showConsolidatedData, value);
+		}
+
 		private void StoreAirdragViewModel()
 		{
 			if (AirDragViewModel != null && StoredAirdragViewModel != AirDragViewModel) {
@@ -115,6 +121,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 		private IAirdragDeclarationInputData _consolidatedAirdragInputData;
 		private string _airdragFilePath;
 		private readonly IMultistageDependencies _dependencies;
+		private bool _showConsolidatedData = true;
 
 		public ICommand LoadAirdragFileCommand
 		{
diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAuxiliariesViewModel.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAuxiliariesViewModel.cs
index 3b762b2fa2417a2ba5c7924235905c64392b2b0d..a1a749c1215e0d97958825f8dfd3728b1653647c 100644
--- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAuxiliariesViewModel.cs
+++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAuxiliariesViewModel.cs
@@ -38,12 +38,18 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 		object PrimaryVehicleHybridElectric { get; set; }
 		bool HasErrors { get; }
 		Dictionary<string, string> Errors { get; }
+		bool ShowConsolidatedData { get; set; }
 	}
 
 
 	public class MultistageAuxiliariesViewModel : ViewModelBase, IMultistageAuxiliariesViewModel, IDataErrorInfo
 	{
 
+		public MultistageAuxiliariesViewModel()
+		{
+			CreateParameterViewModels();
+		}
+
 		public MultistageAuxiliariesViewModel(IBusAuxiliariesDeclarationData consolidatedAuxiliariesInputData)
 		{
 			ConsolidatedInputData = consolidatedAuxiliariesInputData;
@@ -224,11 +230,23 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 			OnPropertyChanged(String.Empty);
 		}
 
+		private bool _showConsolidatedData;
 
+		public bool ShowConsolidatedData
+		{
+			get => _showConsolidatedData;
+			set
+			{
+				SetProperty(ref _showConsolidatedData, value);
+				foreach (var multistageParameterViewModel in ParameterViewModels) {
+					multistageParameterViewModel.Value.ShowConsolidatedData = value;
+				}
+			}
+		}
 
-		private IBusAuxiliariesDeclarationData _consolidatedInputData;
 
 
+		private IBusAuxiliariesDeclarationData _consolidatedInputData;
 		public IBusAuxiliariesDeclarationData ConsolidatedInputData
 		{
 			get => _consolidatedInputData;
@@ -274,15 +292,6 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 			set => SetProperty(ref _primaryVehicleHybridElectric, value);
 		}
 
-		private IndexedStorage<bool> _editingEnabledDictionary;
-		public IndexedStorage<bool> EditingEnabledDictionary
-		{
-			get
-			{
-				return _editingEnabledDictionary;
-			}
-		}
-
 
 
 		#region HVAC
@@ -364,23 +373,37 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 
 		public ICommand AddPassengerHeatpumpCommand
 		{
-			get => _addPassengerHeatpumpCommand ??
+			get
+			{
+				return _addPassengerHeatpumpCommand ?? (_addPassengerHeatpumpCommand =
 					new RelayCommand(() => {
 							HeatPumpGroupEditingEnabled = true;
 							if (HeatPumpConfigurationsPassenger == null) {
 								HeatPumpConfigurationsPassenger = new ObservableCollection<HeatPumpConfiguration>();
 							}
+
 							HeatPumpConfigurationsPassenger.Add(new HeatPumpConfiguration());
+							RemovePassengerHeatpumpCommand.NotifyCanExecuteChanged();
+
 						},
-						() => true);
+						() => true));
+			}
 		}
 
-		public ICommand _removePasssengerHeatpumpCommand;
+		private IRelayCommand _removePassengerHeatpumpCommand;
 
-		public ICommand RemovePassengerHeatpumpCommand
+		public IRelayCommand RemovePassengerHeatpumpCommand
 		{
-			get => _removePasssengerHeatpumpCommand ??
-					new RelayCommand<HeatPumpConfiguration>(hp => HeatPumpConfigurationsPassenger?.Remove(hp), (hp) => true);
+			get
+			{
+				return _removePassengerHeatpumpCommand ?? (_removePassengerHeatpumpCommand =
+					new RelayCommand<HeatPumpConfiguration>(hp => {
+						if (HeatPumpGroupEditingEnabled && HeatPumpConfigurationsPassenger.Count > 1) {
+							HeatPumpConfigurationsPassenger?.Remove(hp);
+							RemovePassengerHeatpumpCommand.NotifyCanExecuteChanged();
+						}
+					}, hp => HeatPumpConfigurationsPassenger.Count > 1));
+			}
 		}
 
 		public IList<Tuple<HeatPumpType, HeatPumpMode>> HeatPumpPassengerCompartments{
@@ -559,6 +582,10 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 					_parameterViewModels[nameof(SystemConfiguration)].EditingEnabled = value;
 					if (value == false) {
 						HeatPumpConfigurationsPassenger = null;
+					} else {
+						if (HeatPumpConfigurationsPassenger == null || HeatPumpConfigurationsPassenger.Count == 0) {
+							AddPassengerHeatpumpCommand.Execute(null);
+						}
 					}
 				}
 			}
@@ -648,9 +675,6 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 			set
 			{
 				SetProperty(ref _interiorLightsLed, value);
-				if (value != null) {
-					OnPropertyChanged(nameof(EditingEnabledDictionary));
-				}
 			}
 		}
 
diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs
index b9d1a2a335bd9f5b8b88a4a3674c5583d1cccd21..9afa71ae8a6e55f181f1dd5f606c360fad09a14e 100644
--- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs
+++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs
@@ -7,6 +7,7 @@ using System.IO;
 using System.Linq;
 using System.Runtime.CompilerServices;
 using System.Windows;
+using System.Windows.Forms;
 using System.Windows.Input;
 using System.Windows.Navigation;
 using System.Xml;
@@ -33,6 +34,7 @@ using VECTO3GUI2020.ViewModel.Interfaces.Common;
 using VECTO3GUI2020.ViewModel.Interfaces.Document;
 using VECTO3GUI2020.ViewModel.Interfaces.JobEdit.Vehicle;
 using VECTO3GUI2020.ViewModel.MultiStage.Interfaces;
+using INotifyPropertyChanged = System.ComponentModel.INotifyPropertyChanged;
 using XmlDocumentType = TUGraz.VectoCore.Utils.XmlDocumentType;
 
 namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
@@ -41,6 +43,14 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 	public interface IMultiStageJobViewModel : IDeclarationMultistageJobInputData, IMultistageVIFInputData, IMultistageBusInputDataProvider, IJobViewModel, IEditViewModel
 	{
 		IManufacturingStageViewModel ManufacturingStageViewModel { get; }
+		bool Exempted { get; }
+
+		/// <summary>
+		/// Creates a new VIF file
+		/// </summary>
+		/// <param name="outputFile"></param>
+		/// <returns>Name of the created File</returns>
+		string SaveVif(string outputFile);
 	}
 
 
@@ -55,6 +65,9 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 		private VectoSimulationJobType _jobType;
 		private bool _inputComplete;
 		private readonly IMultiStageViewModelFactory _vmFactory;
+		private IAdditionalJobInfoViewModel _additionalJobInfoVm;
+
+
 
 		public IManufacturingStageViewModel ManufacturingStageViewModel
 		{
@@ -62,11 +75,18 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 			set => SetProperty(ref _manufacturingStageViewModel, value);
 		}
 
-		public MultiStageJobViewModel_v0_1(IMultistageBusInputDataProvider inputData, IMultiStageViewModelFactory vmFactory, IMultistageDependencies multistageDependencies, IXMLInputDataReader inputDataReader)
+		public MultiStageJobViewModel_v0_1(IMultistageBusInputDataProvider inputData, 
+			IMultiStageViewModelFactory vmFactory, 
+			IMultistageDependencies multistageDependencies,
+			IXMLInputDataReader inputDataReader, 
+			IJobListViewModel jobListViewModel,
+			IAdditionalJobInfoViewModel additionalJobInfo)
 		{
-			Title = "Edit Multistage Job";
+			
 			_dataSource = inputData.DataSource;
+			Title = $"Edit Multistage Job - {Path.GetFileName(_dataSource.SourceFile)}";
 			_jobInputData = inputData.JobInputData;
+			_jobListViewModel = jobListViewModel;
 			_inputData = inputData;
 			_vmFactory = vmFactory;
 			_consolidateManufacturingStage = _jobInputData.ConsolidateManufacturingStage;
@@ -74,28 +94,50 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 			_primaryVehicle = _jobInputData.PrimaryVehicle;
 			_dialogHelper = multistageDependencies.DialogHelperLazy;
 			_inputDataReader = inputDataReader;
+			_inputComplete = inputData.JobInputData.InputComplete;
+			_invalidEntries = inputData.JobInputData?.InvalidEntries?.Distinct().ToList();
+			_additionalJobInfoVm = additionalJobInfo;
+			_additionalJobInfoVm.SetParent(this);
+			
+
+			_exempted = PrimaryVehicle.Vehicle.ExemptedVehicle;
+
 			_manufacturingStageViewModel =
-				vmFactory.GetManufacturingStageViewModel(_consolidateManufacturingStage);
+				vmFactory.GetManufacturingStageViewModel(_consolidateManufacturingStage, _exempted);
 
 			// QUESTION: HEV/PEV ?
 			//var hybridElectric = inputData.PrimaryVehicleData.Vehicle.HybridElectricHDV;
 			//_manufacturingStageViewModel.VehicleViewModel.PrimaryVehicleHybridElectric = hybridElectric;
 			_multistageDependencies = multistageDependencies;
-		}
 
 
-		#region Commands
+            (_manufacturingStageViewModel as INotifyPropertyChanged).PropertyChanged += MultiStageJobViewModel_v0_1_PropertyChanged;
+		}
 
+		public IAdditionalJobInfoViewModel AdditionalJobInfoVm
+		{
+			get => _additionalJobInfoVm;
+			set => SetProperty(ref _additionalJobInfoVm, value);
+		}
 
 
-		private ICommand _closeWindowCommand;
-		public ICommand CloseWindowCommand
-		{
-			get
-			{
-				return _closeWindowCommand ?? new RelayCommand<Window>(window => CloseWindow(window, _dialogHelper.Value), window => true);
+		private void MultiStageJobViewModel_v0_1_PropertyChanged(object sender, PropertyChangedEventArgs e)
+        {
+			
+			if (e.PropertyName == nameof(VehicleInputDataFilePath)) {
+				OnPropertyChanged(nameof(VehicleInputDataFilePath));
 			}
-		}
+        }
+
+
+
+
+
+        #region Commands
+
+
+
+      
 
 
 		private ICommand _saveVifCommand;
@@ -114,16 +156,11 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 
 							var auxiliariesErrorInfo =
 								vehicleViewModel.MultistageAuxiliariesViewModel as IDataErrorInfo;
-							if (!auxiliariesErrorInfo.Error.IsNullOrEmpty()) {
+							if (auxiliariesErrorInfo != null && !auxiliariesErrorInfo.Error.IsNullOrEmpty()) {
 								errorMessage += "Auxiliaries\n";
 								errorMessage += auxiliariesErrorInfo.Error.Replace(",", "\n");
 							}
 
-
-							//_dialogHelper.Value.ShowMessageBox("Vehicle\n" + string.Join("\n", vehicleViewModel.Errors.Values) 
-							//												+ (vehicleViewModel.MultistageAuxiliariesViewModel.HasErrors ? ("\nAuxiliaries\n" + string.Join("\n", vehicleViewModel.MultistageAuxiliariesViewModel.Errors.Values)) : ""),
-								//"Error");
-
 							_dialogHelper.Value.ShowMessageBox(errorMessage, "Error", MessageBoxButton.OK,
 									MessageBoxImage.Error);
 							return;
@@ -141,23 +178,35 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 				}, () => true);
 			}
 		}
-
-		public void SaveVif(string outputFile)
+		/// <summary>
+		/// Creates a new VIF file
+		/// </summary>
+		/// <param name="outputFile"></param>
+		/// <returns>Name of the created File</returns>
+		public string SaveVif(string outputFile)
 		{
-			SaveVif(vifData:this, outputFile:outputFile, dialogHelper:_dialogHelper.Value);
+			return SaveVif(vifData:this, outputFile:outputFile, dialogHelper:_dialogHelper.Value);
 		}
 
-		public static void SaveVif(IMultistageVIFInputData vifData, FileOutputVIFWriter writer, IDialogHelper dialogHelper = null)
+		public void SaveVif(IMultistageVIFInputData vifData, FileOutputVIFWriter writer, IDialogHelper dialogHelper = null)
 		{
 			SaveVif(vifData, null, writer, dialogHelper);
 		}
 
-		public static void SaveVif(IMultistageVIFInputData vifData, string outputFile,
+
+		/// <summary>
+		/// Creates a new VIF file
+		/// </summary>
+		/// <param name="vifData"></param>
+		/// <param name="outputFile"></param>
+		/// <param name="writer"></param>
+		/// <param name="dialogHelper"></param>
+		/// <returns>Name of the created file</returns>
+		private string SaveVif(IMultistageVIFInputData vifData, string outputFile,
 			FileOutputVIFWriter writer = null, IDialogHelper dialogHelper = null)
 		{
 			try {
-
-
+				FileHelper.CreateDirectory(outputFile);
 				if (writer == null) {
 					var numberOfManufacturingStages =
 						vifData.MultistageJobInputData.JobInputData.ManufacturingStages?.Count ?? 0;
@@ -169,7 +218,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 
 				var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer);
 
-				var jobContainer = new JobContainer(new NullSumWriter()); //TODO: Replace with real sumwriter
+				var jobContainer = new JobContainer(new NullSumWriter());
 
 				var runs = factory.SimulationRuns().ToList();
 				foreach (var run in runs) {
@@ -183,114 +232,36 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 					var validator = new XMLValidator(reader);
 					var valid = validator.ValidateXML(XmlDocumentType.MultistageOutputData);
 					if (!valid) {
-						dialogHelper?.ShowMessageBox($"Error writing file {validator.ValidationError}", "Error",
+						dialogHelper?.ShowMessageBox($"Error writing VIF {validator.ValidationError}", "Error",
 							MessageBoxButton.OK, MessageBoxImage.Error);
 						Debug.WriteLine("Invalid Outputfile");
-						return;
+						return null;
 					} else {
 						dialogHelper?.ShowMessageBox($"Written to {writer.XMLMultistageReportFileName}", "Info",
 							MessageBoxButton.OK, MessageBoxImage.Information);
+
+						var runSimulation = vifData.VehicleInputData.VehicleDeclarationType == VehicleDeclarationType.final && 
+											(_dialogHelper.Value.ShowMessageBox("Do you want to start the simulation?",
+												"Run Simulation",
+												MessageBoxButton.YesNo,
+												MessageBoxImage.Question) == MessageBoxResult.Yes);
+						_jobListViewModel.AddJobAsync(writer.XMLMultistageReportFileName, runSimulation);
+
 						Debug.WriteLine($"Written to {writer.XMLMultistageReportFileName}");
+						return writer.XMLMultistageReportFileName;
 					}
 				}
 
 			}catch (Exception e) {
-				dialogHelper?.ShowMessageBox($"{e.Message}", "Error writing VIF", MessageBoxButton.OK,
+				dialogHelper?.ShowMessageBox($"{e.GetInnerExceptionMessages()}", "Error writing VIF", MessageBoxButton.OK,
 					MessageBoxImage.Error);
-
+				return null;
 			}
-			
 		}
 
-		private ICommand _saveInputDataCommand;
-		private ICommand _saveInputDataAsCommand;
-
-		public ICommand SaveInputDataCommand =>
-			_saveInputDataCommand ?? new RelayCommand(() => {
-				SaveInputDataExecute(filename:_vehicleInputDataFilePath);
-			}, () => _vehicleInputDataFilePath != null);
-
-		public ICommand SaveInputDataAsCommand =>
-			_saveInputDataAsCommand ?? new RelayCommand(() => {
-				SaveInputDataExecute(filename:null);
-			}, () => true);
-
-		private void SaveInputDataExecute(string filename)
-		{
-			if(_manufacturingStageViewModel.Vehicle is IMultistageVehicleViewModel vehicleViewModel)
-			{
-				if (vehicleViewModel.HasErrors) {
-					var errorMessage = "Vehicle\n";
-					var vehicleErrorInfo = vehicleViewModel as IDataErrorInfo;
-					errorMessage += vehicleErrorInfo.Error.Replace(",", "\n");
-
-					var auxiliariesErrorInfo =
-						vehicleViewModel.MultistageAuxiliariesViewModel as IDataErrorInfo;
-					if (!auxiliariesErrorInfo.Error.IsNullOrEmpty())
-					{
-						errorMessage += "\n Auxiliaries \n";
-						errorMessage += auxiliariesErrorInfo.Error.Replace(",", "\n");
-					}
-
-					_dialogHelper.Value.ShowMessageBox(errorMessage, "Error", MessageBoxButton.OK,
-						MessageBoxImage.Error);
-					return;
-
-					//_dialogHelper.Value.ShowMessageBox("Vehicle\n" + string.Join("\n", vehicleViewModel.Errors.Values)
-					//												+ (vehicleViewModel.MultistageAuxiliariesViewModel.HasErrors ? ("\nAuxiliaries\n" + string.Join("\n", vehicleViewModel.MultistageAuxiliariesViewModel.Errors.Values)) : ""),
-					//	"Error");
-					return;
-				}
-			}
-			
-
-			if (filename == null) {
-				filename = _dialogHelper.Value.SaveToXMLDialog(Settings.Default.DefaultFilePath);
-				if (filename == null) {
-					return;
-				}
-			}
-
-			var vehicleWriter =
-				_multistageDependencies.XMLWriterFactory.CreateVehicleWriter(_manufacturingStageViewModel.Vehicle);
-
-
-
-			var xElement = vehicleWriter.GetElement();
-			var xDoc = xElement.CreateWrapperDocument(XMLNamespaces.V28);
-			Debug.WriteLine(xElement.CreateWrapperDocument(XMLNamespaces.V28).ToString());
-
-			
-			var valid = false;
-			var validationError = "";
-			try {
-				var validator = new XMLValidator(xDoc.ToXmlDocument());
-				valid = validator.ValidateXML(XmlDocumentType.DeclarationJobData);
-				validationError = validator.ValidationError;
-			} catch (Exception e) {
-				_dialogHelper.Value.ShowMessageBox(messageBoxText:(e.Message + "\n" + e.InnerException), caption:"Error saving File");
-			}
-			if (!valid) {
-				_dialogHelper.Value.ShowMessageBox($"Invalid Document: {validationError}", "Error");
-				var tempFile = Path.GetTempFileName();
-				try {
-					xDoc.Save(tempFile, SaveOptions.OmitDuplicateNamespaces);
-					LoadVehicleData(tempFile);
-					File.Delete(tempFile);
-				} catch (Exception e) {
-					_dialogHelper.Value.ShowMessageBox(e.Message, "Error");
-					throw;
-				}
-		
-
-			} else {
-				xDoc.Save(filename, SaveOptions.OmitDuplicateNamespaces);
-				LoadVehicleData(filename);
-			}
-		}
 
 
-		private ICommand _loadVehicleDataCommand;
+	
 		private readonly Lazy<IDialogHelper> _dialogHelper;
 		private readonly IXMLInputDataReader _inputDataReader;
 		private string _vehicleInputDataFilePath = null;
@@ -298,53 +269,23 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 		private readonly DataSource _dataSource;
 		private readonly IMultistageBusInputDataProvider _inputData;
 		private bool _selected;
+		private readonly bool _exempted;
+		private readonly IJobListViewModel _jobListViewModel;
+		private readonly IList<string> _invalidEntries;
 
-		public ICommand LoadVehicleDataCommand
-		{
-			get
-			{
-				return _loadVehicleDataCommand ?? new RelayCommand(LoadVehicleDataExecute, () => true);
-			}
-		}
-
-		private void LoadVehicleDataExecute()
-		{
-			var fileName = _dialogHelper.Value.OpenXMLFileDialog();
-			if (fileName == null) {
-				return;
-			}
-
-			LoadVehicleData(fileName);
-			return;
-		}
 
-		private bool LoadVehicleData(string fileName)
+		public string VehicleInputDataFilePath
 		{
-			try {
-				var inputData = (IDeclarationInputDataProvider)_inputDataReader.Create(fileName);
-				var vehicleInputData = inputData.JobInputData.Vehicle;
-				_manufacturingStageViewModel.SetInputData(vehicleInputData);
-
-				VehicleInputDataFilePath = fileName;
-			} catch (Exception e) {
-				_dialogHelper.Value.ShowMessageBox(e.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
-				return false;
+			get => ManufacturingStageViewModel.InputDataFilePath;
+			set
+			{
+				ManufacturingStageViewModel.InputDataFilePath = value;
+				OnPropertyChanged();
 			}
-
-			return true;
 		}
 
-		public string VehicleInputDataFilePath
-		{
-			get => _vehicleInputDataFilePath;
-			set => SetProperty(ref _vehicleInputDataFilePath, value);
-		}
 		#endregion
 
-
-
-
-
 		#region Implementation of IInputDataProvider
 
 		public string DocumentName => Path.GetFileNameWithoutExtension(_inputData.DataSource.SourceFile);
@@ -357,13 +298,17 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 
 		public bool Selected
 		{
-			get => _selected;
+			get => _selected && CanBeSimulated;
 			set => SetProperty(ref _selected, value);
 		}
 
-		public bool CanBeEdited
+		public bool CanBeSimulated
 		{
-			get => true;
+			get
+			{
+				return (InputComplete && _inputData.JobInputData.ConsolidateManufacturingStage.Vehicle.VehicleDeclarationType ==
+					VehicleDeclarationType.final) || (InputComplete && Exempted);
+			}
 			set => throw new NotImplementedException();
 		}
 
@@ -423,6 +368,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 			set => _inputComplete = value;
 		}
 
+		public IList<string> InvalidEntries => _invalidEntries;
 
 		#endregion
 
@@ -430,6 +376,10 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 
 		public string Name => "Multistage";
 
+		public bool Exempted => _exempted;
+
+
+
 		#endregion
 	}
 
diff --git a/VECTO3GUI2020/Helper/MultistageParameterViewModel.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageParameterViewModel.cs
similarity index 94%
rename from VECTO3GUI2020/Helper/MultistageParameterViewModel.cs
rename to VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageParameterViewModel.cs
index 7c3413d7539e46b06491da6c9b66f20a25ece57c..17248322fe92fd3e603b09c24df0331e3cecb515 100644
--- a/VECTO3GUI2020/Helper/MultistageParameterViewModel.cs
+++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageParameterViewModel.cs
@@ -1,26 +1,16 @@
 ο»Ώusing System;
-using System.Collections.Generic;
 using System.Collections.ObjectModel;
 using System.ComponentModel;
 using System.Diagnostics;
 using System.Linq;
-using System.Net.Mime;
 using System.Reflection;
 using System.Resources;
-using System.Runtime.InteropServices;
-using System.Windows;
-using System.Windows.Controls;
-using Castle.Core.Internal;
-using Castle.Core.Resource;
-using Castle.DynamicProxy.Internal;
-using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.Utils;
-using VECTO3GUI2020.Annotations;
+using VECTO3GUI2020.Helper;
 using VECTO3GUI2020.ViewModel.Implementation.Common;
 using VECTO3GUI2020.ViewModel.Interfaces.Common;
-using VECTO3GUI2020.Views.Multistage.CustomControls;
 
-namespace VECTO3GUI2020.Helper
+namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 {
 	public enum ViewMode
 	{
@@ -66,6 +56,7 @@ namespace VECTO3GUI2020.Helper
 		private readonly string _propertyName;
 		private bool _isReadOnly;
 		private bool _valueFieldIsEditable;
+		private bool _showConsolidatedData = true;
 
 		public MultistageParameterViewModel (
 			string propertyName,
@@ -82,7 +73,6 @@ namespace VECTO3GUI2020.Helper
 			PreviousContent = previousContent;
 			_propertyChangedCallback = propertyChangedCallback;
 			_parentViewModel = parentViewModel;
-			//_parentViewModel.PropertyChanged += ParentViewModelPropertyChanged;
 			_propertyInfo = parentViewModel.GetType().GetProperty(propertyName);
 			
 			_viewMode = viewMode;
@@ -196,10 +186,6 @@ namespace VECTO3GUI2020.Helper
 				if (type == typeof(string)) {
 					return "";
 				}
-				
-
-
-
 			}
 			catch (Exception ex)
 			{
@@ -378,6 +364,12 @@ namespace VECTO3GUI2020.Helper
 			get => !_mandatory;
 		}
 
+		public bool ShowConsolidatedData
+		{
+			get => _showConsolidatedData && !Mandatory;
+			set => SetProperty(ref _showConsolidatedData, value);
+		}
+
 		#region Implementation of IDataErrorInfo
 
 		public string this[string columnName]
@@ -418,4 +410,6 @@ namespace VECTO3GUI2020.Helper
 
 		#endregion
 	}
+
+
 }
\ No newline at end of file
diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/NewMultiStageJobViewModel.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/NewMultiStageJobViewModel.cs
index 0468834e7dd0d4b08022fa0fe555d6139a270432..5d4332410de37846f6c7465fa81b1ab649a705dc 100644
--- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/NewMultiStageJobViewModel.cs
+++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/NewMultiStageJobViewModel.cs
@@ -14,6 +14,7 @@ using VECTO3GUI2020.Helper;
 using VECTO3GUI2020.Properties;
 using VECTO3GUI2020.Util;
 using VECTO3GUI2020.ViewModel.Implementation.Common;
+using VECTO3GUI2020.ViewModel.Interfaces;
 using VECTO3GUI2020.ViewModel.Interfaces.JobEdit.Vehicle;
 using VECTO3GUI2020.ViewModel.Interfaces.JobEdit.Vehicle.Components;
 using VECTO3GUI2020.ViewModel.MultiStage.Interfaces;
@@ -46,11 +47,13 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 
 		public NewMultiStageJobViewModel(IDialogHelper dialogHelper, 
 			IXMLInputDataReader inputDataReader, 
-			IMultiStageViewModelFactory vmFactory)
+			IMultiStageViewModelFactory vmFactory,
+			IJobListViewModel jobListViewModel)
 		{
 			_inputDataReader = inputDataReader;
 			_dialogHelper = dialogHelper;
 			_vmFactory = vmFactory;
+			_jobListViewModel = jobListViewModel;
 			Title = "New Multistage File";
 			VifPath = "Select VIF File";
 		}
@@ -59,7 +62,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 
 		#region AddVifCommand
 
-		public ICommand AddVifFile
+		public ICommand AddVifFileCommand
 		{
 			get => _addVifCommand ?? new RelayCommand(AddVifFileExecute, () => true);
 		}
@@ -68,19 +71,27 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 		{
 			
 			var fileName = _dialogHelper.OpenXMLFileDialog();
-			if (fileName == null) {
+			AddVifFile(fileName);
+		}
+
+		internal void AddVifFile(string fileName)
+		{
+			if (fileName == null)
+			{
 				return;
 			}
 			IMultistageBusInputDataProvider inputDataProvider = null;
-			try {
+			try
+			{
 				inputDataProvider = _inputDataReader.Create(fileName) as IMultistageBusInputDataProvider;
 			}
-            catch(Exception e) {
+			catch (Exception e)
+			{
 				_dialogHelper.ShowMessageBox(e.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
 			}
 
-			if (inputDataProvider == null) {
-
+			if (inputDataProvider == null)
+			{
 				_dialogHelper.ShowMessageBox("invalid input file", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
 				return;
 			}
@@ -88,11 +99,13 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 			MultiStageJobViewModel = null;
 			MultiStageJobViewModel =
 				_vmFactory.GetMultiStageJobViewModel(inputDataProvider);
+			_jobListViewModel.AddJob(MultiStageJobViewModel);
 			VifPath = fileName;
 		}
 
 
 		private ICommand _closeWindow;
+		private readonly IJobListViewModel _jobListViewModel;
 
 		public ICommand CloseWindow
 		{
diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/StageInputViewModel.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/StageInputViewModel.cs
new file mode 100644
index 0000000000000000000000000000000000000000..2b08c6e6e471c1e5e57d190a55f23cfcf758ff79
--- /dev/null
+++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/StageInputViewModel.cs
@@ -0,0 +1,144 @@
+ο»Ώusing System;
+using System.ComponentModel;
+using System.Diagnostics;
+using System.IO;
+using Castle.Core.Smtp;
+using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCore.Models.Declaration;
+using TUGraz.VectoCore.Utils;
+using VECTO3GUI2020.ViewModel.Implementation.Common;
+using VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle;
+using VECTO3GUI2020.ViewModel.Interfaces;
+using VECTO3GUI2020.ViewModel.Interfaces.Common;
+using VECTO3GUI2020.ViewModel.Interfaces.Document;
+using VECTO3GUI2020.ViewModel.Interfaces.JobEdit;
+using VECTO3GUI2020.ViewModel.Interfaces.JobEdit.Vehicle;
+using VECTO3GUI2020.ViewModel.MultiStage.Interfaces;
+
+namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
+{
+	public class StageInputViewModel : StageViewModelBase, IDocumentViewModel, IJobEditViewModel
+	{
+		private bool _canBeEdited;
+		private DataSource _dataSource;
+		private readonly XmlDocumentType _documentType;
+		private string _documentName;
+		private bool _selected;
+		private static uint _newDocumentCounter = 0;
+
+		private StageInputViewModel(IMultiStageViewModelFactory multistageViewModelFactory,
+			IAdditionalJobInfoViewModel additionalJobInfoViewModel) : base(multistageViewModelFactory)
+		{
+			_documentType = XmlDocumentType.DeclarationJobData;
+			_additionalJobInfoViewModel = additionalJobInfoViewModel;
+			_additionalJobInfoViewModel.SetParent(this);
+		}
+
+
+		public StageInputViewModel(bool exemptedVehicle, IMultiStageViewModelFactory multiStageViewModelFactory, IAdditionalJobInfoViewModel additionalJobInfoViewModel) : this(multiStageViewModelFactory, additionalJobInfoViewModel)
+		{
+			_vehicleViewModel = _viewModelFactory.CreateStageInputVehicleViewModel(
+				exemptedVehicle
+				? InterimStageBusVehicleViewModel_v2_8.VERSION_EXEMPTED
+				: InterimStageBusVehicleViewModel_v2_8.VERSION) as IMultistageVehicleViewModel;
+
+			Title = "Edit Stage Input - New File";
+
+			_documentName = $"New {(exemptedVehicle ? "Exempted " : "")}Stage Input {++_newDocumentCounter}";
+			Init();
+		}
+
+		public StageInputViewModel(IDeclarationInputDataProvider inputData, IMultiStageViewModelFactory multiStageViewModelFactory, IAdditionalJobInfoViewModel additionalJobInfoViewModel) : this(multiStageViewModelFactory,additionalJobInfoViewModel)
+		{
+			_documentName = inputData.JobInputData.JobName;
+			_vehicleViewModel =
+				_viewModelFactory.CreateStageInputVehicleViewModel(inputData.JobInputData.Vehicle) as IMultistageVehicleViewModel;
+			(_vehicleViewModel as InterimStageBusVehicleViewModel_v2_8).ShowConsolidatedData = false;
+
+			_dataSource = inputData.DataSource;
+
+			Title = $"Edit Stage Input - {Path.GetFileName(_dataSource.SourceFile)}";
+			Init();
+		}
+
+		#region Overrides of StageViewModelBase
+		/// <summary>
+		/// Called in base class after input data is loaded.
+		/// </summary>
+		/// <param name="loadedInputData"></param>
+		protected override void LoadStageInputDataFollowUp(IDeclarationInputDataProvider loadedInputData)
+		{
+			DataSource = loadedInputData.DataSource;
+			UpdateTitle();			
+			DocumentName = loadedInputData.JobInputData.JobName;
+		}
+
+		#endregion
+
+		private void UpdateTitle()
+		{
+			Title = "Edit Stage Input - " + ((_dataSource?.SourceFile != null)
+				? Path.GetFileName(_dataSource.SourceFile)
+				: "New File");
+		}
+
+		private void Init()
+		{
+			UpdateTitle();
+			Components.Add("vehicle", VehicleViewModel as IViewModelBase);
+			Components.Add("auxiliaries", VehicleViewModel.MultistageAuxiliariesViewModel as IViewModelBase);
+			Components.Add("airdrag", VehicleViewModel.MultistageAirdragViewModel as IViewModelBase);
+			CurrentView = VehicleViewModel as IViewModelBase;
+
+			ShowSaveAndCloseButtons = true;
+		}
+
+		#region Implementation of IDocumentViewModel
+
+		public string DocumentName
+		{
+			get => _documentName;
+			set => SetProperty(ref _documentName, value);
+		}
+
+		public XmlDocumentType DocumentType => _documentType;
+
+		public DataSource DataSource
+		{
+			get => _dataSource;
+			set
+			{
+				SetProperty(ref _dataSource, value);
+				UpdateTitle();
+			}
+		}
+
+		public IEditViewModel EditViewModel => this;
+
+		public bool Selected
+		{
+			get => _selected && CanBeSimulated;
+			set => SetProperty(ref _selected, value);
+		}
+
+		public bool CanBeSimulated
+		{
+			get => false;
+			set => throw new System.NotImplementedException();
+		}
+		private IAdditionalJobInfoViewModel _additionalJobInfoViewModel;
+		public IAdditionalJobInfoViewModel AdditionalJobInfoVm
+		{
+			get => _additionalJobInfoViewModel;
+			set => SetProperty(ref _additionalJobInfoViewModel, value);
+		}
+
+		#endregion
+
+		#region Implementation of IEditViewModel
+
+		public string Name => "Edit Stage Input";
+
+		#endregion
+	}
+}
\ No newline at end of file
diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/StageViewModelBase.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/StageViewModelBase.cs
new file mode 100644
index 0000000000000000000000000000000000000000..b89f5f0265c4ff4f4a637fd03f979bf9c8b1fdf5
--- /dev/null
+++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/StageViewModelBase.cs
@@ -0,0 +1,265 @@
+ο»Ώusing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Diagnostics;
+using System.IO;
+using System.Windows;
+using System.Windows.Input;
+using System.Xml.Linq;
+using Castle.Core.Internal;
+using Ninject;
+using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCore.InputData.FileIO.XML;
+using TUGraz.VectoCore.Utils;
+using VECTO3GUI2020.Helper;
+using VECTO3GUI2020.Ninject;
+using VECTO3GUI2020.Properties;
+using VECTO3GUI2020.Util;
+using VECTO3GUI2020.Util.XML;
+using VECTO3GUI2020.ViewModel.Implementation.Common;
+using VECTO3GUI2020.ViewModel.Interfaces.Common;
+using VECTO3GUI2020.ViewModel.MultiStage.Interfaces;
+
+namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
+{
+	public interface IStageViewModelBase
+	{
+		string InputDataFilePath { get; set; }
+		IMultistageVehicleViewModel VehicleViewModel { get; set; }
+		ICommand SwitchComponentViewCommand { get; }
+		ICommand SaveInputDataCommand { get; }
+		ICommand SaveInputDataAsCommand { get; }
+		ICommand LoadVehicleDataCommand { get; }
+		bool ShowSaveAndCloseButtons { get; set; }
+		void SaveInputDataExecute(string filename);
+		bool LoadStageInputData(string fileName);
+	}
+
+	public class StageViewModelBase : ViewModelBase, IStageViewModelBase
+	{
+		protected Dictionary<string, IViewModelBase> Components =
+			new Dictionary<string, IViewModelBase>(StringComparer.CurrentCultureIgnoreCase);
+
+		protected IMultistageVehicleViewModel _vehicleViewModel;
+		protected IMultiStageViewModelFactory _viewModelFactory;
+		private IViewModelBase _currentview;
+		private ICommand _switchComponentViewCommand;
+
+		[Inject]
+		public IMultistageDependencies MultistageDependencies
+		{
+			get => _multistageDependencies;
+			set => _multistageDependencies = value;
+		}
+
+		[Inject]
+		public IXMLInputDataReader InputDataReader
+		{
+			get => _inputDataReader;
+			set => _inputDataReader = value;
+		}
+
+		public StageViewModelBase(IMultiStageViewModelFactory viewModelFactory)
+		{
+			_viewModelFactory = viewModelFactory;
+		}
+
+		public IViewModelBase CurrentView
+		{
+			get => _currentview;
+			set => SetProperty(ref _currentview, value);
+		}
+
+		public IMultistageVehicleViewModel VehicleViewModel
+		{
+			get => _vehicleViewModel;
+			set => SetProperty(ref _vehicleViewModel, value);
+		}
+
+		private bool _showSaveAndCloseButtons = false;
+
+		public bool ShowSaveAndCloseButtons
+		{
+			get => _showSaveAndCloseButtons;
+			set => SetProperty(ref _showSaveAndCloseButtons, value);
+		}
+
+		#region Commands
+
+		public ICommand SwitchComponentViewCommand
+		{
+			get
+			{
+				return _switchComponentViewCommand ??
+						new RelayCommand<string>(SwitchViewExecute, (string s) => SwitchViewCanExecute(s));
+			}
+		}
+
+		private void SwitchViewExecute(string viewToShow)
+		{
+			IViewModelBase newView;
+			var success = Components.TryGetValue(viewToShow, out newView);
+			if (success) {
+				CurrentView = newView;
+			}
+		}
+
+		private bool SwitchViewCanExecute(string viewToShow)
+		{
+			return Components[viewToShow] != null;
+		}
+
+		private ICommand _saveInputDataCommand;
+		private ICommand _saveInputDataAsCommand;
+		private IMultistageDependencies _multistageDependencies;
+		private IXMLInputDataReader _inputDataReader;
+
+		public ICommand SaveInputDataCommand =>
+			_saveInputDataCommand ??
+			new RelayCommand(() => { SaveInputDataExecute(filename: _vehicleInputDataFilePath); },
+				() => _vehicleInputDataFilePath != null);
+
+		public ICommand SaveInputDataAsCommand =>
+			_saveInputDataAsCommand ?? new RelayCommand(() => { SaveInputDataExecute(filename: null); }, () => true);
+
+
+		private ICommand _loadVehicleDataCommand;
+		private string _vehicleInputDataFilePath;
+
+
+		public ICommand LoadVehicleDataCommand
+		{
+			get { return _loadVehicleDataCommand ?? new RelayCommand(LoadVehicleDataExecute, () => true); }
+		}
+
+		#endregion Commands
+
+		#region File I/O
+
+		private void LoadVehicleDataExecute()
+		{
+			var fileName = _multistageDependencies.DialogHelper.OpenXMLFileDialog();
+			if (fileName == null) {
+				return;
+			}
+
+			LoadStageInputData(fileName);
+			return;
+		}
+
+
+
+		public void SaveInputDataExecute(string filename)
+		{
+			var dialogHelper = _multistageDependencies.DialogHelper;
+			if (VehicleViewModel.HasErrors) {
+				var errorMessage = "Vehicle\n";
+				var vehicleErrorInfo = VehicleViewModel as IDataErrorInfo;
+				errorMessage += vehicleErrorInfo.Error.Replace(",", "\n");
+
+
+				var auxiliariesErrorInfo =
+					VehicleViewModel.MultistageAuxiliariesViewModel as IDataErrorInfo;
+				if (auxiliariesErrorInfo != null &&
+					!auxiliariesErrorInfo.Error.IsNullOrEmpty()) {
+					errorMessage += "\n Auxiliaries \n";
+					errorMessage += auxiliariesErrorInfo.Error.Replace(",", "\n");
+				}
+
+				dialogHelper.ShowMessageBox(errorMessage, "Error", MessageBoxButton.OK,
+					MessageBoxImage.Error);
+				return;
+			}
+
+
+			if (filename == null) {
+				filename = dialogHelper.SaveToXMLDialog(Settings.Default.DefaultFilePath);
+				if (filename == null) {
+					return;
+				}
+			}
+
+			var vehicleWriter =
+				_multistageDependencies.XMLWriterFactory.CreateVehicleWriter(VehicleViewModel);
+
+
+
+			var xElement = vehicleWriter.GetElement();
+			var xDoc = xElement.CreateWrapperDocument(XMLNamespaces.V28);
+			Debug.WriteLine(xElement.CreateWrapperDocument(XMLNamespaces.V28).ToString());
+
+
+			var valid = false;
+			var validationError = "";
+			try {
+				var validator = new XMLValidator(xDoc.ToXmlDocument());
+				valid = validator.ValidateXML(XmlDocumentType.DeclarationJobData);
+				validationError = validator.ValidationError;
+			} catch (Exception e) {
+				dialogHelper.ShowMessageBox(messageBoxText: (e.Message + "\n" + e.InnerException),
+					caption: "Error saving File");
+			}
+
+			if (!valid) {
+				dialogHelper.ShowMessageBox($"Invalid Document: {validationError}", "Error");
+				var tempFile = Path.GetTempFileName();
+				try {
+					xDoc.Save(tempFile, SaveOptions.OmitDuplicateNamespaces);
+					LoadStageInputData(tempFile);
+
+				} catch (Exception e) {
+					dialogHelper.ShowMessageBox(e.Message, "Error");
+					throw;
+				} finally {
+					if (File.Exists(tempFile)) {
+						File.Delete(tempFile);
+					}
+
+					;
+				}
+
+
+			} else {
+				xDoc.Save(filename, SaveOptions.OmitDuplicateNamespaces);
+				LoadStageInputData(filename);
+			}
+		}
+
+		public bool LoadStageInputData(string fileName)
+		{
+			try
+			{
+				var inputData = (IDeclarationInputDataProvider)_inputDataReader.Create(fileName);
+				var vehicleInputData = inputData.JobInputData.Vehicle;
+				VehicleViewModel.SetVehicleInputData(vehicleInputData);
+				InputDataFilePath = inputData.DataSource.SourceFile;
+				LoadStageInputDataFollowUp(inputData);
+
+
+				return true;
+			}
+			catch (Exception e)
+			{
+				_multistageDependencies.DialogHelper.ShowMessageBox(e.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
+				return false;
+			}
+			return true;
+		}
+
+		protected virtual void LoadStageInputDataFollowUp(IDeclarationInputDataProvider loadedInputData)
+		{
+
+		}
+
+		public string InputDataFilePath
+		{
+			get => _vehicleInputDataFilePath;
+			set => SetProperty(ref _vehicleInputDataFilePath, value);
+		}
+
+		#endregion
+
+	}
+
+
+}
\ No newline at end of file
diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Interfaces/IMultiStageViewModelFactory.cs b/VECTO3GUI2020/ViewModel/MultiStage/Interfaces/IMultiStageViewModelFactory.cs
index 90e54e472247409ce253f842c908ea3e585edc53..33cad2ad89c2b53d96dc056a0e7dad2cd348717b 100644
--- a/VECTO3GUI2020/ViewModel/MultiStage/Interfaces/IMultiStageViewModelFactory.cs
+++ b/VECTO3GUI2020/ViewModel/MultiStage/Interfaces/IMultiStageViewModelFactory.cs
@@ -5,31 +5,63 @@ using System.Text;
 using System.Threading.Tasks;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCore.Utils;
+using VECTO3GUI2020.ViewModel.Implementation;
 using VECTO3GUI2020.ViewModel.Interfaces.Common;
+using VECTO3GUI2020.ViewModel.Interfaces.Document;
 using VECTO3GUI2020.ViewModel.Interfaces.JobEdit.Vehicle;
 using VECTO3GUI2020.ViewModel.Interfaces.JobEdit.Vehicle.Components;
 using VECTO3GUI2020.ViewModel.MultiStage.Implementation;
 
 namespace VECTO3GUI2020.ViewModel.MultiStage.Interfaces
 {
-    public interface IMultiStageViewModelFactory
+
+	public interface IMultiStageViewModelFactory : 
+		IMultiStageViewModelFactoryDefaultInstanceProvider, 
+		IMultiStageViewModelFactoryTypeAsNameInstanceProvider, 
+		IMultistageViewModelFactoryFirstParameterAsNameInstanceProvider
+	{
+		
+	}
+
+
+	public interface IMultiStageViewModelFactoryTypeAsNameInstanceProvider
+	{
+		IDocumentViewModel CreateDocumentViewModel(IDeclarationInputDataProvider inputData);
+		IDocumentViewModel CreateDocumentViewModel(IInputDataProvider inputData);
+		IVehicleViewModel CreateStageInputVehicleViewModel(IVehicleDeclarationInputData inputData);
+	}
+
+	public interface IMultistageViewModelFactoryFirstParameterAsNameInstanceProvider
 	{
+		IVehicleViewModel CreateStageInputVehicleViewModel(string inputProviderType);
+	}
+
+
+
+    public interface IMultiStageViewModelFactoryDefaultInstanceProvider
+	{
+		IDocumentViewModel GetStageInputViewModel(bool exemptedVehicle);
 		IViewModelBase GetNewMultistageJobViewModel();
 
 		IMultiStageJobViewModel GetMultiStageJobViewModel(IMultistageBusInputDataProvider inputData);
 
 		IVehicleViewModel GetInterimStageVehicleViewModel();
 
-		IVehicleViewModel GetInterimStageVehicleViewModel(IVehicleDeclarationInputData consolidatedVehicleData);
+		IVehicleViewModel GetInterimStageVehicleViewModel(IVehicleDeclarationInputData consolidatedVehicleData, bool exempted);
 
-		IManufacturingStageViewModel GetManufacturingStageViewModel(IManufacturingStageInputData consolidatedManufacturingStageInputData);
+		IManufacturingStageViewModel GetManufacturingStageViewModel(IManufacturingStageInputData consolidatedManufacturingStageInputData, bool exempted);
 		IMultistageAirdragViewModel GetMultistageAirdragViewModel();
 
 		IMultistageAirdragViewModel GetMultistageAirdragViewModel(
 			IAirdragDeclarationInputData consolidatedAirdragInputData);
 
+		IMultistageAuxiliariesViewModel GetAuxiliariesViewModel();
 		IMultistageAuxiliariesViewModel GetAuxiliariesViewModel(
 			IBusAuxiliariesDeclarationData consolidatedAuxiliariesInputData);
+
+		ICreateVifViewModel GetCreateNewVifViewModel(bool completed);
+		ICreateVifViewModel GetCreateNewVifViewModel();
+
 		//IViewModelBase CreateNewMultiStageJobViewModel();
 
 		//IMultiStageJobViewModel CreateMultiStageJobViewModel(string inputProviderType, IMultistageBusInputDataProvider inputData);
diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Interfaces/IMultistageAirdragViewModel.cs b/VECTO3GUI2020/ViewModel/MultiStage/Interfaces/IMultistageAirdragViewModel.cs
index 865e3d14f189454ac9ff688b01ac2a99a07d5909..212b1af55307351c1bbe81092264be5e225196cc 100644
--- a/VECTO3GUI2020/ViewModel/MultiStage/Interfaces/IMultistageAirdragViewModel.cs
+++ b/VECTO3GUI2020/ViewModel/MultiStage/Interfaces/IMultistageAirdragViewModel.cs
@@ -9,10 +9,13 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Interfaces
 		EventHandler AirdragViewModelChanged { get; set; }
 		IAirDragViewModel AirDragViewModel { get; set; }
 
+		bool ShowConsolidatedData { get; set; }
+
 		void SetAirdragInputData(IAirdragDeclarationInputData airdragInputData);
 		bool LoadAirdragFile(string fileName);
 		void RestoreAirdragViewModel();
 
+
 		void RemoveAirdragComponent();
 	}
 }
\ No newline at end of file
diff --git a/VECTO3GUI2020/Views/AboutView.xaml b/VECTO3GUI2020/Views/AboutView.xaml
new file mode 100644
index 0000000000000000000000000000000000000000..fcd4e879bfb1a3419f7a2b9b508bd7fc6f2d175b
--- /dev/null
+++ b/VECTO3GUI2020/Views/AboutView.xaml
@@ -0,0 +1,90 @@
+ο»Ώ<UserControl x:Class="VECTO3GUI2020.Views.AboutView"
+             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
+             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
+             xmlns:local="clr-namespace:VECTO3GUI2020.Views"
+             mc:Ignorable="d" 
+             d:DesignHeight="450" d:DesignWidth="800" MaxHeight="400">
+
+
+    <Grid>
+
+        <Grid.ColumnDefinitions>
+            <ColumnDefinition Width="5"/>
+            <ColumnDefinition/>
+            <ColumnDefinition Width="5"/>
+        </Grid.ColumnDefinitions>
+
+        <Grid Grid.Column ="1">
+            <Grid.RowDefinitions>
+                <RowDefinition Height="10"/>
+                <RowDefinition/>
+                <RowDefinition Height="38"/>
+                <RowDefinition Height="115"/>
+                <RowDefinition Height="30"/>
+            </Grid.RowDefinitions>
+
+            <Grid Grid.Row="1">
+                <Image HorizontalAlignment="Center" VerticalAlignment="Center">
+                    <Image.Source>
+                        <BitmapImage  UriSource="../Resources/Images/VECTO-About.png"/>
+                    </Image.Source>
+                </Image>
+            </Grid>
+
+            <Grid Grid.Row="2" Margin="0,5,0,0">
+                <StackPanel Orientation="Vertical" HorizontalAlignment="Left" Margin="5,0,0,0">
+                    <TextBlock>
+                        <Hyperlink NavigateUri="{Binding EUPLLink}" Command="{Binding EUPLLinkClickedCommand}">
+                            <TextBlock Text="VECTO is licensed under EUPL 1.1+"/>
+                        </Hyperlink> 
+                    </TextBlock>
+                    <TextBlock Text="Copyright Β© 2012-2019 European Union"/>
+                </StackPanel>
+            </Grid>
+
+            <Grid Grid.Row="3">
+
+                <Grid.ColumnDefinitions>
+                    <ColumnDefinition/>
+                    <ColumnDefinition/>
+                </Grid.ColumnDefinitions>
+
+                <Grid Grid.Column="0" Margin="10,30,0,0" >
+                    <StackPanel Orientation="Vertical" HorizontalAlignment="Left">
+                        <TextBlock Text="Developed on behalf of the"/>
+                        <TextBlock Text="European Commission DG CLIMA" Margin="20,0,0,0"/>
+                    </StackPanel>
+                </Grid>
+
+                <Grid Grid.Column="1">
+                    <Button Command="{Binding JrcPicClickedCommand}">
+                        <Button.Template>
+                            <ControlTemplate>
+                                <Image HorizontalAlignment="Center" VerticalAlignment="Center">
+                                    <Image.Source>
+                                        <BitmapImage  UriSource="../Resources/Images/JRC-About.png"/>
+                                    </Image.Source>
+                                </Image>
+                            </ControlTemplate>
+                        </Button.Template>
+                    </Button>
+                </Grid>
+            </Grid>
+
+            <Grid Grid.Row="4">
+                <StackPanel Orientation="Horizontal" Margin="10,0,0,0">
+                    <TextBlock Text="Support Contact:"/>
+                    <TextBlock Margin="5,0,0,0">
+                        <Hyperlink NavigateUri="{Binding JRCMail}" Command="{Binding MailClickedCommand}" >
+                            <TextBlock Text="jrc-vecto@ec.europa.eu"/>
+                        </Hyperlink> 
+                    </TextBlock>
+                </StackPanel>
+            </Grid>
+
+        </Grid>
+
+    </Grid>
+</UserControl>
diff --git a/VECTO3GUI2020/Views/AboutView.xaml.cs b/VECTO3GUI2020/Views/AboutView.xaml.cs
new file mode 100644
index 0000000000000000000000000000000000000000..6522582166d4bff97b380456d97dca9a5c5033eb
--- /dev/null
+++ b/VECTO3GUI2020/Views/AboutView.xaml.cs
@@ -0,0 +1,28 @@
+ο»Ώusing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace VECTO3GUI2020.Views
+{
+    /// <summary>
+    /// Interaction logic for AboutView.xaml
+    /// </summary>
+    public partial class AboutView : UserControl
+    {
+        public AboutView()
+        {
+            InitializeComponent();
+        }
+    }
+}
diff --git a/VECTO3GUI2020/Views/JoblistView.xaml b/VECTO3GUI2020/Views/JoblistView.xaml
index d0f691c0a4e7068dd7a99da7317d765d81417634..d9c73bb7f46246d5fe7349a0abdae73987c541e2 100644
--- a/VECTO3GUI2020/Views/JoblistView.xaml
+++ b/VECTO3GUI2020/Views/JoblistView.xaml
@@ -4,45 +4,60 @@
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
              xmlns:local="clr-namespace:VECTO3GUI2020.Views"
-             xmlns:converter="clr-namespace:VECTO3GUI2020.Helper.Converter" xmlns:implementation="clr-namespace:VECTO3GUI2020.ViewModel.Implementation" d:DataContext="{d:DesignInstance Type=implementation:JobListViewModel}"
+             xmlns:converter="clr-namespace:VECTO3GUI2020.Helper.Converter" xmlns:implementation="clr-namespace:VECTO3GUI2020.ViewModel.Implementation"
+             xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
+             xmlns:behavior="clr-namespace:VECTO3GUI2020.Behaviours"
+             xmlns:document="clr-namespace:VECTO3GUI2020.ViewModel.Interfaces.Document"
+             d:DataContext="{d:DesignInstance Type=implementation:JobListViewModel}"
              mc:Ignorable="d" 
              AutomationProperties.Name="JobListView"
              d:DesignHeight="450" d:DesignWidth="1000">
 
+
     <Grid>
         <Grid.ColumnDefinitions>
-            <ColumnDefinition MinWidth="140" Width="1*"/>
-            <ColumnDefinition Name="MiddleColumn" Width="6*"/>
-            <ColumnDefinition MinWidth="140" Width="1*"/>
+            <ColumnDefinition Width="1*"/>
         </Grid.ColumnDefinitions>
+        <Grid.RowDefinitions>
+            <RowDefinition Height="1*"/>
+            <RowDefinition Height="5"></RowDefinition>
+            <RowDefinition Height="1*" MinHeight="65"/>
+        </Grid.RowDefinitions>
+
+        <Grid>
+            <Grid.ColumnDefinitions>
+                <ColumnDefinition MinWidth="140" Width="1*"/>
+                <ColumnDefinition Width="6*"/>
+                <ColumnDefinition MinWidth="140" Width="1*"/>
+            </Grid.ColumnDefinitions>
 
-        <Border  BorderBrush="Transparent" BorderThickness="1">
-            <Grid>
-                <StackPanel HorizontalAlignment="Stretch">
-                    <Button x:Name="button" Margin="4" HorizontalAlignment="Stretch" 
+            <Border  BorderBrush="Transparent" BorderThickness="1">
+                <Grid>
+                    <StackPanel HorizontalAlignment="Stretch">
+                        <Button x:Name="button" Margin="4" HorizontalAlignment="Stretch" 
                         Style="{StaticResource MultiStageButtonStyle1}"
                         Command="{Binding SimulationCommand}">Simulation</Button>
-                    <Button Margin="4" HorizontalAlignment="Stretch" 
+                        <Button Margin="4" HorizontalAlignment="Stretch" 
                             Style="{StaticResource MultiStageButtonStyle1}"
                             Command="{Binding CancelSimulation}">Stop</Button>
-                    <Button x:Name="button1" Margin="4"  HorizontalAlignment="Stretch" 
+                        <Button x:Name="button1" Margin="4"  HorizontalAlignment="Stretch" 
                         Style="{StaticResource MultiStageButtonStyle1}" 
                         Command="{Binding moveJobUp}"
                         CommandParameter="{Binding ElementName=JobDataGrid, Path=SelectedItem}">Up</Button>
-                    <Button x:Name="button2" Margin="4" HorizontalAlignment="Stretch" 
+                        <Button x:Name="button2" Margin="4" HorizontalAlignment="Stretch" 
                         Style="{StaticResource MultiStageButtonStyle1}" 
                         Command="{Binding moveJobDown}"
                         CommandParameter="{Binding ElementName=JobDataGrid, Path=SelectedItem}">Down</Button>
-                </StackPanel>
-            </Grid>
-        </Border>
-        <Grid Grid.Column="1">
-            <Border BorderBrush="{StaticResource AccentColorButton}" BorderThickness="0" >
-                <DataGrid ItemsSource="{Binding Jobs}"
-                          BorderBrush ="{StaticResource AccentColorButton}" BorderThickness="1"
+                    </StackPanel>
+                </Grid>
+            </Border>
+            <Grid Grid.Column="1">
+                <Border BorderBrush="{StaticResource AccentColorButton}" BorderThickness="0" >
+                    <DataGrid ItemsSource="{Binding Jobs}"
+                          BorderBrush ="{StaticResource AccentColorButton}" 
+                          BorderThickness="1 0 1 1"
                           Name="JobDataGrid"
                           HorizontalAlignment="Stretch"
-                         
                           CanUserReorderColumns="False" 
                           AutoGenerateColumns="False"
                           SelectionMode="Single"
@@ -55,54 +70,133 @@
                           AllowDrop="True"  Drop="JobDataGrid_OnDrop"
                           PreviewDrop = "JobDataGrid_OnPreviewDrop"
                           ColumnHeaderStyle="{StaticResource JobListDataGridHeaderStyle}"
-                              
                           RowHeight="30"
                           AlternatingRowBackground="LightGray" CellStyle="{DynamicResource DataGridCellStyle1}"
+                          SelectedItem = "{Binding SelectedJob}"
                 >
-                        <DataGrid.Columns>
-                            <DataGridCheckBoxColumn IsReadOnly="False" Header="Simulate" Binding="{Binding Selected}" Width="1*"></DataGridCheckBoxColumn>
-                            <DataGridTextColumn IsReadOnly="True" Header="Name" Binding="{Binding DocumentName}" Width="4*"></DataGridTextColumn>
-                            <DataGridTextColumn IsReadOnly ="True" Header="Type" Binding="{Binding DocumentType}" Width="4*"></DataGridTextColumn>
-                     
+                        <i:Interaction.Behaviors>
+                            <behavior:AutoScrollDataGridBehaviour>
+                            </behavior:AutoScrollDataGridBehaviour>
+                        </i:Interaction.Behaviors>
+
+                            <!--CONTEXT MENU-->
+
+                            <!--<DataGrid.Resources>
+                                <ContextMenu x:Key="RowMenu">
+                                    <MenuItem Header="Edit WIP" Command="{Binding RowCopyCommand}" />
+                                    <MenuItem Header="Show Source File">
+                                        <MenuItem Header="Show in Explorer"></MenuItem>
+                                    </MenuItem>
+                                </ContextMenu>
+                            </DataGrid.Resources>
+                            <DataGrid.RowStyle>
+                                <Style TargetType="DataGridRow" >
+                                    <Setter Property="ContextMenu" Value="{StaticResource RowMenu}" />
+                                </Style>
+                            </DataGrid.RowStyle>-->
+                            <DataGrid.Columns>
+                            <DataGridTemplateColumn Header="Simulate" Width="1*" MinWidth="50" IsReadOnly="False">
+                                <DataGridTemplateColumn.CellTemplate>
+                                    <DataTemplate DataType="document:IDocumentViewModel">
+                                        <Grid>
+                                            <Grid.ColumnDefinitions>
+                                                <ColumnDefinition Width="1*"/>
+                                            </Grid.ColumnDefinitions>
+                                            <CheckBox 
+                                                HorizontalAlignment="Center" 
+                                                      IsEnabled="{Binding CanBeSimulated}"
+                                                Visibility="{Binding CanBeSimulated, 
+                                                Converter={StaticResource BooleanToVisibilityConverter}}"
+                                                      IsChecked="{Binding Selected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
+                                            <Button Margin="0" 
+                                                    Padding="5" 
+                                                    Background="Transparent" 
+                                                    HorizontalAlignment="Center" 
+                                                    BorderThickness="0"
+                                                    Grid.Column="0" 
+                                                    Command="{Binding RelativeSource={RelativeSource AncestorType=DataGrid}, 
+                                                            Path=DataContext.OpenAdditionalJobInformationCommand}"
+                                                    CommandParameter="{Binding }"
+                                                    ContentTemplate="{DynamicResource InformationIcon}"
+                                                    Visibility="{Binding CanBeSimulated, Converter={StaticResource InvertedBoolToVisibilityConverter}}">
+                                            </Button>
+                                        </Grid>
+                                        
+                                    </DataTemplate>
+                                </DataGridTemplateColumn.CellTemplate>
+                            </DataGridTemplateColumn>
+                            <DataGridTextColumn IsReadOnly="True" 
+                                                Header="Name"
+                                                Binding="{Binding DocumentName}"
+                                                MinWidth="250"
+                                                Width="4*"></DataGridTextColumn>
+                            <DataGridTextColumn IsReadOnly ="True" 
+                                                Header="Type" 
+                                                MinWidth="100"
+                                                Binding="{Binding DocumentType}" 
+                                                Width="4*"></DataGridTextColumn>
                         </DataGrid.Columns>
-                    <DataGrid.RowDetailsTemplate>
+
+                        <DataGrid.RowDetailsTemplate>
                             <DataTemplate>
-                                <StackPanel Orientation="Vertical">
-                                    <Label x:Name="label" Content="Filename"/>
+                                <StackPanel Orientation="Vertical" Visibility="{Binding DataSource, Converter={StaticResource NullToVisibilityConverter}}">
+                                    <!--<Label x:Name="label" Content="Filename"/>-->
                                     <TextBlock x:Name="textBlock" Text="{Binding DataSource.SourceFile}" TextWrapping="Wrap" Margin="10" />
                                 </StackPanel>
                             </DataTemplate>
                         </DataGrid.RowDetailsTemplate>
-                    <DataGrid.InputBindings>
+                        <DataGrid.InputBindings>
                             <MouseBinding
                         MouseAction="LeftDoubleClick"
-                        Command="{Binding EditJob}"
+                        Command="{Binding EditDocument}"
                         CommandParameter="{Binding ElementName=JobDataGrid, Path=SelectedItem}"></MouseBinding>
                         </DataGrid.InputBindings>
                     </DataGrid>
                     <!--<Label x:Name="label" Content="Loading . . ." Visibility="{Binding IsLoading, Converter={StaticResource BooleanToVisibilityConverter}}"/>-->
-            </Border>
-        </Grid>
-        <Grid Grid.Column="2">
-            <Border  BorderBrush="Transparent" BorderThickness="1">
-                <StackPanel >
-                    <Button x:Name="button3" Margin="4" HorizontalAlignment="Stretch" 
-                        Style="{StaticResource MultiStageButtonStyle1}"
-                        Command="{Binding AddJobAsyncCommand}" Background="#FFDDDDDD">
-                        Add Job</Button>
-                    <Button x:Name="button4" Margin ="4" HorizontalAlignment="Stretch" 
-                        Style="{StaticResource MultiStageButtonStyle1}"
-                        Command="{Binding EditJob}"
-                        CommandParameter="{Binding ElementName=JobDataGrid, Path=SelectedItem}">Edit Job</Button>
-                    <Button x:Name="button5" Margin="4" HorizontalAlignment="Stretch"
-                        Style="{StaticResource MultiStageButtonStyle1}"
-                        Command="{Binding NewManufacturingStageFile}" AutomationProperties.AutomationId="JobListViewNewManufacturingStageFileButton">New Multistage Job</Button>
-                    <Button x:Name="button6" Margin="4" HorizontalAlignment="Stretch" 
-                        Style="{StaticResource MultiStageButtonStyle1}"
-                        Command="{Binding RemoveJob}"
-                        CommandParameter="{Binding ElementName=JobDataGrid, Path=SelectedItem}">Remove Job</Button>
-                </StackPanel>
-            </Border>
+                </Border>
+            </Grid>
+            <Grid Grid.Column="2">
+                <Border  BorderBrush="Transparent" BorderThickness="1">
+                    <StackPanel >
+                        <Button x:Name="button3" Margin="4" HorizontalAlignment="Stretch" 
+                                Style="{StaticResource MultiStageButtonStyle1}"
+                                Command="{Binding AddJobAsyncCommand, IsAsync=True}" Background="#FFDDDDDD">
+                                Load File</Button>
+                        <Button x:Name="button4" Margin ="4" HorizontalAlignment="Stretch" 
+                                Style="{StaticResource MultiStageButtonStyle1}"
+                                Command="{Binding EditDocument}"
+                                CommandParameter="{Binding ElementName=JobDataGrid, Path=SelectedItem}">Edit Job</Button>
+                        <!--<Button x:Name="newFileButton" Margin="4" HorizontalAlignment="Stretch" 
+                                Style="{StaticResource MultiStageButtonStyle1}"
+                                Command="{Binding OpenPopUpCommand}">New File</Button>
+                        <Popup HorizontalAlignment="Center" 
+                               x:Name="newFilePopup"
+                               PlacementTarget="{Binding ElementName=newFileButton, Path=.}" 
+                               Margin="{Binding ElementName=newFileButton, Path=Margin}" 
+                               MinWidth="{Binding ElementName=newFileButton, Path=ActualWidth}" 
+                               IsOpen="{Binding NewFilePopUpIsOpen, Mode=TwoWay}" 
+                               StaysOpen="False" PreviewMouseLeftButtonUp="NewFilePopup_OnPreviewMouseLeftButtonDown">
+                            <Border BorderThickness="1px" BorderBrush="{StaticResource AccentColorButton}">
+                                <StackPanel Background="White">
+                                    <Button Style="{StaticResource MultiStageButtonStyle1}" Command="{Binding NewManufacturingStageFileCommand}">New Manufacturing Stage</Button>
+                                    <Button Style="{StaticResource MultiStageButtonStyle1}" Command="{Binding NewVifCommand}">New VIF</Button>
+                                    <Button Style="{StaticResource MultiStageButtonStyle1}" Command="{Binding NewCompletedInputCommand}">New Completed Input</Button>
+                                    <Button Style="{StaticResource MultiStageButtonStyle1}" Command="{Binding NewExemptedCompletedInputCommand}">New Exempted Completed Input</Button>
+                                </StackPanel>
+                            </Border>
+                        </Popup>-->
+                        <Button x:Name="button6" Margin="4" HorizontalAlignment="Stretch" 
+                                Style="{StaticResource MultiStageButtonStyle1}"
+                                Command="{Binding RemoveJob, IsAsync=True}"
+                                CommandParameter="{Binding ElementName=JobDataGrid, Path=SelectedItem}">Remove Job</Button>
+
+
+                    </StackPanel>
+                </Border>
+            </Grid>
         </Grid>
+        <GridSplitter Grid.Row="1" HorizontalAlignment="Stretch" Height="5"/>
+        <ContentControl Grid.Row="2" Margin="0,0,0,0" Name="ContentControlBottom" Content="{Binding OutputViewModel }"/>
     </Grid>
+   
 </UserControl>
diff --git a/VECTO3GUI2020/Views/JoblistView.xaml.cs b/VECTO3GUI2020/Views/JoblistView.xaml.cs
index b64cacf114f17b87aeb375903b41251c696ad156..41d88075f3984bdac0119c4f1eb6061a775d71aa 100644
--- a/VECTO3GUI2020/Views/JoblistView.xaml.cs
+++ b/VECTO3GUI2020/Views/JoblistView.xaml.cs
@@ -1,7 +1,9 @@
-ο»Ώusing System.Windows;
+ο»Ώusing System.Threading.Tasks;
+using System.Windows;
 using System.Windows.Controls;
+using System.Windows.Input;
 using VECTO3GUI2020.ViewModel.Implementation;
-using VECTO3GUI2020.ViewModel.Interfaces;
+
 
 namespace VECTO3GUI2020.Views
 {
@@ -18,7 +20,7 @@ namespace VECTO3GUI2020.Views
 		}
 
 
-		private void JobDataGrid_OnDrop(object sender, DragEventArgs e)
+		private async void JobDataGrid_OnDrop(object sender, DragEventArgs e)
 		{
 			var success = true;
 			if (e.Data.GetDataPresent(DataFormats.FileDrop)) {
@@ -27,7 +29,7 @@ namespace VECTO3GUI2020.Views
 				var fileNames = e.Data.GetData(DataFormats.FileDrop, true) as string[];
 				if (fileNames != null) {
 					foreach (var fileName in fileNames) {
-						((JobListViewModel)this.DataContext).AddJobAsync(fileName);
+						await ((JobListViewModel)this.DataContext).AddJobAsync(fileName);
 					}
 				}
 
diff --git a/VECTO3GUI2020/Views/Multistage/AdditionalJobInfoViews/AdditionalJobInfoStageInput.xaml b/VECTO3GUI2020/Views/Multistage/AdditionalJobInfoViews/AdditionalJobInfoStageInput.xaml
new file mode 100644
index 0000000000000000000000000000000000000000..5f16f70b3d55465a6ff25f717dfad5527db98ac6
--- /dev/null
+++ b/VECTO3GUI2020/Views/Multistage/AdditionalJobInfoViews/AdditionalJobInfoStageInput.xaml
@@ -0,0 +1,12 @@
+ο»Ώ<UserControl x:Class="VECTO3GUI2020.Views.Multistage.AdditionalJobInfoViews.AdditionalJobInfoStageInput"
+             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
+             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
+             xmlns:local="clr-namespace:VECTO3GUI2020.Views.Multistage.AdditionalJobInfoViews"
+             mc:Ignorable="d" 
+             d:DesignHeight="450" d:DesignWidth="800">
+    <Grid>
+        <Label>This File cannot be simulated on its own.</Label>
+    </Grid>
+</UserControl>
diff --git a/VECTO3GUI2020/Views/Multistage/AdditionalJobInfoViews/AdditionalJobInfoStageInput.xaml.cs b/VECTO3GUI2020/Views/Multistage/AdditionalJobInfoViews/AdditionalJobInfoStageInput.xaml.cs
new file mode 100644
index 0000000000000000000000000000000000000000..61e43a35eacffeb6ceb270b1c7045e947146acac
--- /dev/null
+++ b/VECTO3GUI2020/Views/Multistage/AdditionalJobInfoViews/AdditionalJobInfoStageInput.xaml.cs
@@ -0,0 +1,28 @@
+ο»Ώusing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace VECTO3GUI2020.Views.Multistage.AdditionalJobInfoViews
+{
+    /// <summary>
+    /// Interaction logic for AdditionalJobInfoStageInput.xaml
+    /// </summary>
+    public partial class AdditionalJobInfoStageInput : UserControl
+    {
+        public AdditionalJobInfoStageInput()
+        {
+            InitializeComponent();
+        }
+    }
+}
diff --git a/VECTO3GUI2020/Views/Multistage/AdditionalJobInfoViews/AdditionalJobInfoViewMultiStage.xaml b/VECTO3GUI2020/Views/Multistage/AdditionalJobInfoViews/AdditionalJobInfoViewMultiStage.xaml
new file mode 100644
index 0000000000000000000000000000000000000000..8c2b7dab7ae5c40b2acc36b96d589112e4ca8b4c
--- /dev/null
+++ b/VECTO3GUI2020/Views/Multistage/AdditionalJobInfoViews/AdditionalJobInfoViewMultiStage.xaml
@@ -0,0 +1,41 @@
+ο»Ώ<UserControl x:Class="VECTO3GUI2020.Views.Multistage.AdditionalJobInfoViews.AdditionalJobInfoViewMultiStage"
+             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
+             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
+             xmlns:local="clr-namespace:VECTO3GUI2020.Views.Multistage.AdditionalJobInfoViews"
+             xmlns:common="clr-namespace:VECTO3GUI2020.ViewModel.Implementation.Common"
+             xmlns:resources="clr-namespace:System.Resources;assembly=mscorlib"
+             xmlns:properties="clr-namespace:VECTO3GUI2020.Properties"
+             mc:Ignorable="d" 
+             d:DesignHeight="450" d:DesignWidth="800" d:DataContext="{d:DesignInstance common:AdditionalJobInfoViewModelMultiStage }">
+    <Grid>
+        <StackPanel Margin="10">
+            <Label>This Job cannot be Simulated because the following Parameters are invalid:</Label>
+            <ItemsControl ItemsSource="{Binding InvalidEntries }">
+                <ItemsControl.ItemTemplate>
+                    <DataTemplate>
+                        <BulletDecorator>
+                            <BulletDecorator.Bullet>
+                                <Ellipse HorizontalAlignment="Center" VerticalAlignment="Center" Height="5" Width="5" Fill="{DynamicResource AccentColorButton}"/>
+                            </BulletDecorator.Bullet>
+                            <TextBlock Margin="5 0">
+                                <TextBlock.Text>
+                                    <Binding Path="." Converter="{StaticResource PropertyNameToLabelConverter}">
+                                        <Binding.ConverterParameter>
+                                            <x:Array Type="resources:ResourceManager">
+                                                <x:Static MemberType="properties:GUILabels" Member="ResourceManager"/>
+                                                <x:Static MemberType="properties:BusStrings" Member="ResourceManager"/>
+                                                <x:Static MemberType="properties:Strings" Member="ResourceManager"/>
+                                            </x:Array>
+                                        </Binding.ConverterParameter>
+                                    </Binding>
+                                </TextBlock.Text>
+                            </TextBlock>
+                        </BulletDecorator>
+                    </DataTemplate>
+                </ItemsControl.ItemTemplate>
+            </ItemsControl>
+        </StackPanel> 
+    </Grid>
+</UserControl>
diff --git a/VECTO3GUI2020/Views/Multistage/AdditionalJobInfoViews/AdditionalJobInfoViewMultiStage.xaml.cs b/VECTO3GUI2020/Views/Multistage/AdditionalJobInfoViews/AdditionalJobInfoViewMultiStage.xaml.cs
new file mode 100644
index 0000000000000000000000000000000000000000..e284ba17aae6ecab1e2791d504a838f0c81af2c4
--- /dev/null
+++ b/VECTO3GUI2020/Views/Multistage/AdditionalJobInfoViews/AdditionalJobInfoViewMultiStage.xaml.cs
@@ -0,0 +1,28 @@
+ο»Ώusing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace VECTO3GUI2020.Views.Multistage.AdditionalJobInfoViews
+{
+    /// <summary>
+    /// Interaction logic for AdditionalJobInfoViewMultiStage.xaml
+    /// </summary>
+    public partial class AdditionalJobInfoViewMultiStage : UserControl
+    {
+        public AdditionalJobInfoViewMultiStage()
+        {
+            InitializeComponent();
+        }
+    }
+}
diff --git a/VECTO3GUI2020/Views/Multistage/AdditionalJobInfoViews/AdditionalJobInfoViewNewVIF.xaml b/VECTO3GUI2020/Views/Multistage/AdditionalJobInfoViews/AdditionalJobInfoViewNewVIF.xaml
new file mode 100644
index 0000000000000000000000000000000000000000..c29c356e5347b11a23e59e5a6f67c0c75d97fca8
--- /dev/null
+++ b/VECTO3GUI2020/Views/Multistage/AdditionalJobInfoViews/AdditionalJobInfoViewNewVIF.xaml
@@ -0,0 +1,41 @@
+ο»Ώ<UserControl x:Class="VECTO3GUI2020.Views.Multistage.AdditionalJobInfoViews.AdditionalJobInfoViewNewVIF"
+             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
+             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
+             xmlns:local="clr-namespace:VECTO3GUI2020.Views.Multistage.AdditionalJobInfoViews"
+             xmlns:properties="clr-namespace:VECTO3GUI2020.Properties"
+             xmlns:resources="clr-namespace:System.Resources;assembly=mscorlib"
+             mc:Ignorable="d" 
+             d:DesignHeight="450" d:DesignWidth="800">
+    <Grid>
+        <StackPanel Margin="10">
+            <Label>This Job cannot be Simulated</Label>
+            <ItemsControl ItemsSource="{Binding InvalidEntries }">
+                <ItemsControl.ItemTemplate>
+                    <DataTemplate>
+                        <BulletDecorator>
+                            <BulletDecorator.Bullet>
+                                <Ellipse HorizontalAlignment="Center" VerticalAlignment="Center" Height="5" Width="5" Fill="{DynamicResource AccentColorButton}"></Ellipse>
+                            </BulletDecorator.Bullet>
+                            <TextBlock Margin="5 0">
+                                <TextBlock.Text>
+                                    <Binding Path="." Converter="{StaticResource PropertyNameToLabelConverter}">
+                                        <Binding.ConverterParameter>
+                                            <x:Array Type="resources:ResourceManager">
+                                                <x:Static MemberType="properties:GUILabels" Member="ResourceManager"/>
+                                                <x:Static MemberType="properties:BusStrings" Member="ResourceManager"/>
+                                                <x:Static MemberType="properties:Strings" Member="ResourceManager"/>
+                                            </x:Array>
+                                        </Binding.ConverterParameter>
+                                    </Binding>
+                                </TextBlock.Text>
+                            </TextBlock>
+
+                        </BulletDecorator>
+                    </DataTemplate>
+                </ItemsControl.ItemTemplate>
+            </ItemsControl>
+        </StackPanel>
+    </Grid>
+</UserControl>
diff --git a/VECTO3GUI2020/Views/Multistage/AdditionalJobInfoViews/AdditionalJobInfoViewNewVIF.xaml.cs b/VECTO3GUI2020/Views/Multistage/AdditionalJobInfoViews/AdditionalJobInfoViewNewVIF.xaml.cs
new file mode 100644
index 0000000000000000000000000000000000000000..d1935b00b3ebabc94dd92c1fe37d4ef0a129bb8f
--- /dev/null
+++ b/VECTO3GUI2020/Views/Multistage/AdditionalJobInfoViews/AdditionalJobInfoViewNewVIF.xaml.cs
@@ -0,0 +1,28 @@
+ο»Ώusing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace VECTO3GUI2020.Views.Multistage.AdditionalJobInfoViews
+{
+    /// <summary>
+    /// Interaction logic for AdditionalJobInfoViewNewVIF.xaml
+    /// </summary>
+    public partial class AdditionalJobInfoViewNewVIF : UserControl
+    {
+        public AdditionalJobInfoViewNewVIF()
+        {
+            InitializeComponent();
+        }
+    }
+}
diff --git a/VECTO3GUI2020/Views/Multistage/CreateVifView.xaml b/VECTO3GUI2020/Views/Multistage/CreateVifView.xaml
new file mode 100644
index 0000000000000000000000000000000000000000..017e59827400afc8400c6f4232d93c000fe89738
--- /dev/null
+++ b/VECTO3GUI2020/Views/Multistage/CreateVifView.xaml
@@ -0,0 +1,83 @@
+ο»Ώ<UserControl x:Class="VECTO3GUI2020.Views.Multistage.CreateVifView"
+             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
+             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
+             xmlns:local="clr-namespace:VECTO3GUI2020.Views.Multistage"
+             xmlns:customControls="clr-namespace:VECTO3GUI2020.Views.Multistage.CustomControls"
+             xmlns:implementation="clr-namespace:VECTO3GUI2020.ViewModel.Implementation"
+             xmlns:implementation1="clr-namespace:VECTO3GUI2020.ViewModel.MultiStage.Implementation"
+             mc:Ignorable="d"
+             MinWidth="500"
+             MinHeight="200"
+             d:DesignHeight="450" d:DesignWidth="800" d:DataContext="{d:DesignInstance implementation1:CreateVifViewModel}">
+    <Grid>
+        <DockPanel LastChildFill="False" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
+            <!--<Label HorizontalAlignment="Center" DockPanel.Dock="Top"
+                   Visibility="{Binding UnsavedChanges,
+                Converter={StaticResource BooleanToVisibilityConverter}}">
+                There are unsaved changes
+            </Label>-->
+            <Grid DockPanel.Dock="Top" VerticalAlignment="Top">
+                <Grid.RowDefinitions>
+                    <RowDefinition></RowDefinition>
+                    <RowDefinition></RowDefinition>
+                    <RowDefinition></RowDefinition>
+                    <RowDefinition></RowDefinition>
+                </Grid.RowDefinitions>
+                <Label Style="{DynamicResource LabelStyle1}">Select Primary Input</Label>
+
+                <DockPanel Grid.Row="1" HorizontalAlignment="Stretch" DockPanel.Dock="Top">
+                    <Button DockPanel.Dock="Right"
+                            Command="{Binding RemovePrimaryCommand}"
+                            ContentTemplate="{StaticResource TrashIcon}"
+                            Width="30" 
+                            Padding="4" 
+                            Margin="2 4">
+
+                    </Button>
+                    <customControls:FilePicker DockPanel.Dock="Left"  HorizontalAlignment="Stretch"
+                                               Text="{Binding PrimaryInputPath}"
+                                               Command="{Binding SelectPrimaryInputFileCommand}"/>
+
+                </DockPanel>
+                <Label Grid.Row="2" Style="{DynamicResource LabelStyle1}"
+                       Visibility="{Binding Completed, 
+                    Converter={StaticResource InvertedBoolToVisibilityConverter}}">Select Interim Input</Label>
+                <Label Grid.Row="2"  Style="{DynamicResource LabelStyle1}" 
+                       Visibility="{Binding Completed, 
+                    Converter={StaticResource BooleanToVisibilityConverter}}">Select Completed Input</Label>
+                <DockPanel Grid.Row="3" HorizontalAlignment="Stretch">
+                    <Button Command="{Binding RemoveStageInputCommand}"
+                        DockPanel.Dock="Right" 
+                            ContentTemplate="{StaticResource TrashIcon}"
+                            Width="30" 
+                            Padding="4"
+                            Margin="2 4">
+
+                    </Button>
+                    <customControls:FilePicker DockPanel.Dock="Left" 
+                                               Text="{Binding StageInputPath}"
+                                               Command="{Binding SelectCompletedInputFileCommand}"></customControls:FilePicker>
+                </DockPanel>
+            </Grid>
+            <DockPanel DockPanel.Dock="Bottom" LastChildFill="False">
+                <UniformGrid DockPanel.Dock="Right" Rows="1" Width="500" HorizontalAlignment="Right">
+                    <Button Style="{StaticResource MultiStageButtonStyle1}">Create</Button>
+                    <Button Style="{StaticResource MultiStageButtonStyle1}" 
+                            Command="{Binding SaveJobAsCommand}"
+                            >
+                        Save Job as ...
+                    </Button>
+                    <Button Style="{StaticResource MultiStageButtonStyle1}" 
+                            Command="{Binding SaveJobCommand}">
+                        Save Job
+                    </Button>
+                    <Button Style="{StaticResource MultiStageButtonStyle1}"
+                            Command="{Binding CloseWindowCommand}"
+                            CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}">Close</Button>
+                </UniformGrid>
+            </DockPanel>
+        </DockPanel>
+    </Grid>
+</UserControl>
diff --git a/VECTO3GUI2020/Views/Multistage/CreateVifView.xaml.cs b/VECTO3GUI2020/Views/Multistage/CreateVifView.xaml.cs
new file mode 100644
index 0000000000000000000000000000000000000000..70b55ddc961fa68e8de09e251524b3b7c550090e
--- /dev/null
+++ b/VECTO3GUI2020/Views/Multistage/CreateVifView.xaml.cs
@@ -0,0 +1,28 @@
+ο»Ώusing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace VECTO3GUI2020.Views.Multistage
+{
+    /// <summary>
+    /// Interaction logic for CreateVifView.xaml
+    /// </summary>
+    public partial class CreateVifView : UserControl
+    {
+        public CreateVifView()
+        {
+            InitializeComponent();
+        }
+    }
+}
diff --git a/VECTO3GUI2020/Views/Multistage/CustomControls/FilePicker.xaml b/VECTO3GUI2020/Views/Multistage/CustomControls/FilePicker.xaml
index 614ebbf578717fae433d5e08887404b7c31095a6..31afd998057d63816e703fe626eff8fee935105a 100644
--- a/VECTO3GUI2020/Views/Multistage/CustomControls/FilePicker.xaml
+++ b/VECTO3GUI2020/Views/Multistage/CustomControls/FilePicker.xaml
@@ -17,9 +17,15 @@
         <TextBox x:Name="textBox" VerticalContentAlignment="Center" Padding="4" Margin = "0 0 0 0" IsReadOnly="True" 
                      Text="{Binding Text, ElementName=filepickercustomcontrol}" HorizontalAlignment="Stretch" TextWrapping="Wrap"
                      Style="{DynamicResource TextBoxStyle1}"/>
-        <Button x:Name="button" Padding="4" Margin="4 0 0 0" Grid.Column="1" ContentTemplate="{DynamicResource AddDocumentIcon}"
+        <Button x:Name="button" Padding="4" Margin="4 0 0 0" Grid.Column="1"
                 Command="{Binding Command, ElementName=filepickercustomcontrol}" Style="{DynamicResource FilePickerButtonStyle}">
-
+            <Button.ContentTemplate>
+                <Binding Path="ButtonContentTemplate" ElementName="filepickercustomcontrol" Converter="{StaticResource NullToUnsetValue}">
+                    <Binding.FallbackValue>
+                        <StaticResource ResourceKey="AddDocumentIcon"></StaticResource>
+                    </Binding.FallbackValue>
+                </Binding>
+            </Button.ContentTemplate>
         </Button>
     </Grid>
 </UserControl>
diff --git a/VECTO3GUI2020/Views/Multistage/CustomControls/FilePicker.xaml.cs b/VECTO3GUI2020/Views/Multistage/CustomControls/FilePicker.xaml.cs
index 8fe20e035718c3aed625d9204a7007086d28dae3..6c7de5effe5ecc2f774e384ac89ddf77d2e272dc 100644
--- a/VECTO3GUI2020/Views/Multistage/CustomControls/FilePicker.xaml.cs
+++ b/VECTO3GUI2020/Views/Multistage/CustomControls/FilePicker.xaml.cs
@@ -20,6 +20,15 @@ namespace VECTO3GUI2020.Views.Multistage.CustomControls
     /// </summary>
     public partial class FilePicker : UserControl
     {
+		public static readonly DependencyProperty ButtonContentTemplateProperty = DependencyProperty.Register(
+			"ButtonContentTemplate", typeof(DataTemplate), typeof(FilePicker), new PropertyMetadata(default(DataTemplate)));
+
+		public DataTemplate ButtonContentTemplate
+		{
+			get { return (DataTemplate)GetValue(ButtonContentTemplateProperty); }
+			set { SetValue(ButtonContentTemplateProperty, value); }
+		}
+
 
 		public static readonly DependencyProperty CommandProperty = DependencyProperty.Register(
 			"Command", typeof(ICommand), typeof(FilePicker), new PropertyMetadata(default(ICommand)));
diff --git a/VECTO3GUI2020/Views/Multistage/CustomControls/InputStageView.xaml b/VECTO3GUI2020/Views/Multistage/CustomControls/InputStageView.xaml
new file mode 100644
index 0000000000000000000000000000000000000000..ac1d32d1a0a497cb65e7c030417dbbeec6ff2a7f
--- /dev/null
+++ b/VECTO3GUI2020/Views/Multistage/CustomControls/InputStageView.xaml
@@ -0,0 +1,12 @@
+ο»Ώ<UserControl x:Class="VECTO3GUI2020.Views.Multistage.CustomControls.InputStageView"
+             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
+             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
+             xmlns:local="clr-namespace:VECTO3GUI2020.Views.Multistage.CustomControls"
+             mc:Ignorable="d" 
+             d:DesignHeight="450" d:DesignWidth="800">
+    <Grid>
+            
+    </Grid>
+</UserControl>
diff --git a/VECTO3GUI2020/Views/Multistage/CustomControls/InputStageView.xaml.cs b/VECTO3GUI2020/Views/Multistage/CustomControls/InputStageView.xaml.cs
new file mode 100644
index 0000000000000000000000000000000000000000..faa68ed735d38ebcb05a7edf73beda7ec987a2f0
--- /dev/null
+++ b/VECTO3GUI2020/Views/Multistage/CustomControls/InputStageView.xaml.cs
@@ -0,0 +1,28 @@
+ο»Ώusing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace VECTO3GUI2020.Views.Multistage.CustomControls
+{
+    /// <summary>
+    /// Interaction logic for InputStageView.xaml
+    /// </summary>
+    public partial class InputStageView : UserControl
+    {
+        public InputStageView()
+        {
+            InitializeComponent();
+        }
+    }
+}
diff --git a/VECTO3GUI2020/Views/Multistage/CustomControls/MultistageParameterCheckBoxView.xaml b/VECTO3GUI2020/Views/Multistage/CustomControls/MultistageParameterCheckBoxView.xaml
index 08282aadb40ed4c467e1203e425d931f7078a23d..60b14141332c3418a4f0831e2f85d4b887bf0ac0 100644
--- a/VECTO3GUI2020/Views/Multistage/CustomControls/MultistageParameterCheckBoxView.xaml
+++ b/VECTO3GUI2020/Views/Multistage/CustomControls/MultistageParameterCheckBoxView.xaml
@@ -33,7 +33,8 @@
 
             <CheckBox x:Name="checkBox" Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Center" IsTabStop="False" IsChecked="{Binding 
                 Path=PreviousContent, 
-                Converter={StaticResource XToBoolConverter}}" IsEnabled="False">
+                Converter={StaticResource XToBoolConverter}}" IsEnabled="False"
+                      Visibility="{Binding ShowConsolidatedData, Converter={StaticResource BooleanToVisibilityConverter}}">
             </CheckBox>
 
             <CheckBox x:Name="checkBox1" Grid.Column="3" VerticalAlignment="Center" HorizontalAlignment="Center" 
diff --git a/VECTO3GUI2020/Views/Multistage/CustomControls/MultistageParameterComboBoxView.xaml b/VECTO3GUI2020/Views/Multistage/CustomControls/MultistageParameterComboBoxView.xaml
index 04884c5f67220fc0b9dafa6482d300983964c6d6..0347fbf21fb57b612be479ddd21ca9f4b83c38a7 100644
--- a/VECTO3GUI2020/Views/Multistage/CustomControls/MultistageParameterComboBoxView.xaml
+++ b/VECTO3GUI2020/Views/Multistage/CustomControls/MultistageParameterComboBoxView.xaml
@@ -5,23 +5,10 @@
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
              xmlns:local="clr-namespace:VECTO3GUI2020.Views.Multistage.CustomControls"
              xmlns:helper="clr-namespace:VECTO3GUI2020.Helper"
+             xmlns:implementation="clr-namespace:VECTO3GUI2020.ViewModel.MultiStage.Implementation"
              mc:Ignorable="d" 
-             d:DesignHeight="450" d:DesignWidth="800" d:DataContext="{d:DesignInstance helper:MultistageParameterViewModel }" x:Name="ComboboxView">
+             d:DesignHeight="450" d:DesignWidth="800" d:DataContext="{d:DesignInstance implementation:MultistageParameterViewModel }" x:Name="ComboboxView">
     <Grid>
-        <!--<Grid>
-            <Grid.ColumnDefinitions>
-                --><!--<ColumnDefinition Width="4*" SharedSizeGroup="W"/>
-                <ColumnDefinition Width="1*" SharedSizeGroup="N"/>
-                <ColumnDefinition Width="4*" SharedSizeGroup="W"/>
-                <ColumnDefinition Width="4*" SharedSizeGroup="W"/>
-                <ColumnDefinition Width="1*" SharedSizeGroup="N"/>--><!--
-                <ColumnDefinition SharedSizeGroup=""></ColumnDefinition>
-                <ColumnDefinition SharedSizeGroup=""></ColumnDefinition>
-                <ColumnDefinition SharedSizeGroup=""></ColumnDefinition>
-                <ColumnDefinition SharedSizeGroup=""></ColumnDefinition>
-                <ColumnDefinition SharedSizeGroup=""></ColumnDefinition>
-            </Grid.ColumnDefinitions>-->
-
         <UniformGrid Rows="1" Margin="0 0 10 2">
             <DockPanel Margin="5 0">
             <Label x:Name="label1" DockPanel.Dock="Left">
@@ -37,7 +24,7 @@
             Mode=TwoWay}" Checked="CheckBoxCombo_OnChecked"/>
             </DockPanel>
             <ComboBox x:Name="comboBox"  HorizontalAlignment="Stretch" VerticalAlignment="Center" Margin="2 0 2 0" IsTabStop="False" 
-                      Visibility="{Binding Optional, 
+                      Visibility="{Binding ShowConsolidatedData, 
                         Converter={StaticResource BooleanToVisibilityConverter}}" IsHitTestVisible="False" Focusable="False" IsEditable="False"
                       SelectedValue="{Binding PreviousContent, Mode=TwoWay}"
                       ItemsSource="{Binding GeneratedListItems}">
@@ -72,8 +59,6 @@
                         </DataTemplate>
                     </ComboBox.ItemTemplate>
                 </ComboBox>
-
-
             </DockPanel>
         </UniformGrid>
     </Grid>
diff --git a/VECTO3GUI2020/Views/Multistage/CustomControls/MultistageParameterTextView.xaml b/VECTO3GUI2020/Views/Multistage/CustomControls/MultistageParameterTextView.xaml
index 67bba1d5e8f6ad9eeb7a5dd18cce77b480c96bc1..64b8183e6e57f186c43882a9a90a5acdfbc2a6cb 100644
--- a/VECTO3GUI2020/Views/Multistage/CustomControls/MultistageParameterTextView.xaml
+++ b/VECTO3GUI2020/Views/Multistage/CustomControls/MultistageParameterTextView.xaml
@@ -36,7 +36,7 @@
                     Converter={StaticResource SIValueToStringConverter}}" 
                  
                  Style="{DynamicResource TextBoxStyle1}"
-                 Visibility="{Binding Optional, 
+                 Visibility="{Binding ShowConsolidatedData, 
                      Converter={StaticResource BooleanToVisibilityConverter}, UpdateSourceTrigger=PropertyChanged}"/>
 
         <DockPanel>
diff --git a/VECTO3GUI2020/Views/Multistage/ManufacturingStageAuxiliariesView.xaml b/VECTO3GUI2020/Views/Multistage/ManufacturingStageAuxiliariesView.xaml
index ec56c6569599d4ddea8043b81f2840a355aaa1ef..65740ac709baf4f651bc795bcd379721b38d20e1 100644
--- a/VECTO3GUI2020/Views/Multistage/ManufacturingStageAuxiliariesView.xaml
+++ b/VECTO3GUI2020/Views/Multistage/ManufacturingStageAuxiliariesView.xaml
@@ -41,37 +41,39 @@
                     <Border Margin="5 0" BorderBrush="{DynamicResource ButtonHighlightColor}" BorderThickness="2" >
                         <StackPanel Margin="0">
                             <Label Margin="0" Style="{DynamicResource LabelStyle1}">Heat Pumps Passenger Compartment</Label>
-                            <Label Padding="10 4 0 4" Style="{DynamicResource LabelStyle1}">Consolidated Data</Label>
-                            <ItemsControl AlternationCount="2"
-                        Visibility="{Binding ConsolidatedHeatPumpConfigurationsPassenger, Converter={StaticResource NullToVisibilityConverter}}" 
-                        ItemsSource="{Binding ConsolidatedHeatPumpConfigurationsPassenger}" 
-                        HorizontalContentAlignment="Stretch"
-                        Padding="5 5 29 5 " >
-                                <ItemsControl.ItemTemplate>
-                                    <DataTemplate>
-                                        <Border BorderThickness="1">
-                                            <DockPanel LastChildFill="true" x:Name="ItemsDockPanel">
-                                                <UniformGrid DockPanel.Dock="Left" Columns="2">
-                                                    <ContentControl Grid.Column="0" DockPanel.Dock="Top" Content="{Binding Path=HeatPumpTypeVM}"/>
-                                                    <ContentControl Grid.Column="1" DockPanel.Dock="Top" Content="{Binding Path=HeatPumpModeVM}"/>
-                                                </UniformGrid>
-                                            </DockPanel>
-                                        </Border>
-                                        <DataTemplate.Triggers>
-                                            <Trigger Property="ItemsControl.AlternationIndex" Value="0">
-                                                <Setter Property="Background" Value="White" TargetName="ItemsDockPanel"/>
-                                            </Trigger>
-                                            <Trigger Property="ItemsControl.AlternationIndex" Value="1">
-                                                <Setter Property="Background" Value="LightGray" TargetName="ItemsDockPanel"/>
-                                            </Trigger>
-                                        </DataTemplate.Triggers>
-                                    </DataTemplate>
-                                </ItemsControl.ItemTemplate>
-                            </ItemsControl>
-                            <Label Visibility="{Binding ConsolidatedHeatPumpConfigurationsPassenger, 
-                        Converter={StaticResource NullToVisibilityConverter}, 
-                        ConverterParameter=invert}"
-                           HorizontalAlignment="Center">No consolidated data available</Label>
+                            <StackPanel Visibility="{Binding ShowConsolidatedData, Converter={StaticResource BooleanToVisibilityConverter}}">
+                                <Label Padding="10 4 0 4" Style="{DynamicResource LabelStyle1}">Consolidated Data</Label>
+                                <ItemsControl AlternationCount="2"
+                                    Visibility="{Binding ConsolidatedHeatPumpConfigurationsPassenger, Converter={StaticResource NullToVisibilityConverter}}" 
+                                    ItemsSource="{Binding ConsolidatedHeatPumpConfigurationsPassenger}" 
+                                    HorizontalContentAlignment="Stretch"
+                                    Padding="5 5 29 5 " >
+                                    <ItemsControl.ItemTemplate>
+                                        <DataTemplate>
+                                            <Border BorderThickness="1">
+                                                <DockPanel LastChildFill="true" x:Name="ItemsDockPanel">
+                                                    <UniformGrid DockPanel.Dock="Left" Columns="2">
+                                                        <ContentControl Grid.Column="0" DockPanel.Dock="Top" Content="{Binding Path=HeatPumpTypeVM}"/>
+                                                        <ContentControl Grid.Column="1" DockPanel.Dock="Top" Content="{Binding Path=HeatPumpModeVM}"/>
+                                                    </UniformGrid>
+                                                </DockPanel>
+                                            </Border>
+                                            <DataTemplate.Triggers>
+                                                <Trigger Property="ItemsControl.AlternationIndex" Value="0">
+                                                    <Setter Property="Background" Value="White" TargetName="ItemsDockPanel"/>
+                                                </Trigger>
+                                                <Trigger Property="ItemsControl.AlternationIndex" Value="1">
+                                                    <Setter Property="Background" Value="LightGray" TargetName="ItemsDockPanel"/>
+                                                </Trigger>
+                                            </DataTemplate.Triggers>
+                                        </DataTemplate>
+                                    </ItemsControl.ItemTemplate>
+                                </ItemsControl>
+                                <Label Visibility="{Binding ConsolidatedHeatPumpConfigurationsPassenger, 
+                                    Converter={StaticResource NullToVisibilityConverter}, 
+                                    ConverterParameter=invert}"
+                                    HorizontalAlignment="Center">No consolidated data available</Label>
+                            </StackPanel>
                             <DockPanel LastChildFill="true">
                                 <Button DockPanel.Dock="right"  ContentTemplate="{DynamicResource AddIcon}" Command="{Binding AddPassengerHeatpumpCommand}">
 
diff --git a/VECTO3GUI2020/Views/Multistage/ManufacturingStageView.xaml b/VECTO3GUI2020/Views/Multistage/ManufacturingStageView.xaml
index 9d8137454ca38e97b76c0d0a162239683443eb07..5d2b36a12ff695c078b2556ef598269eec531d19 100644
--- a/VECTO3GUI2020/Views/Multistage/ManufacturingStageView.xaml
+++ b/VECTO3GUI2020/Views/Multistage/ManufacturingStageView.xaml
@@ -4,32 +4,56 @@
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
              xmlns:local="clr-namespace:VECTO3GUI2020.Views.Multistage" 
-             xmlns:implementation="clr-namespace:VECTO3GUI2020.ViewModel.MultiStage.Implementation" 
+             xmlns:implementation="clr-namespace:VECTO3GUI2020.ViewModel.MultiStage.Implementation"
+             xmlns:system="clr-namespace:System;assembly=mscorlib"
              mc:Ignorable="d" 
              d:DesignHeight="450" d:DesignWidth="800" d:DataContext="{d:DesignInstance implementation:ManufacturingStageViewModel_v0_1 }">
     <Grid>
         <DockPanel>
-        <Grid Margin="4" DockPanel.Dock="Top">
-            <Grid.ColumnDefinitions>
-                <ColumnDefinition></ColumnDefinition>
-                <ColumnDefinition Width="30px"></ColumnDefinition>
-            </Grid.ColumnDefinitions>
-        </Grid>
-        <DockPanel Grid.Row="1" LastChildFill="False" DockPanel.Dock="Top" >
-            <Button Width="100" DockPanel.Dock="Left" Style="{DynamicResource MultiStageButtonStyle1}" 
-                    Margin="4" Command="{Binding SwitchComponentViewCommand}" CommandParameter="Vehicle">Vehicle</Button>
-            <Button Width="100" DockPanel.Dock="Left" Style="{DynamicResource MultiStageButtonStyle1}" 
-                    Margin="4" Command="{Binding SwitchComponentViewCommand}" CommandParameter="Airdrag">Airdrag</Button>
-            <Button  Width="100" DockPanel.Dock="Left" Style="{DynamicResource MultiStageButtonStyle1}" 
-                    Margin="4" Command="{Binding SwitchComponentViewCommand}" CommandParameter="Auxiliaries">Auxiliaries</Button>
 
-            <StackPanel Orientation="Horizontal" DockPanel.Dock="Right">
-                <Label>Manufacturing Stage</Label>
-                    <Label Content="{Binding StageCount}"/>
+       
+        <DockPanel DockPanel.Dock="Top" LastChildFill="False">
+            <UniformGrid DockPanel.Dock="Left" Width="350" Rows="1" HorizontalAlignment="Left">
+                <Button Style="{DynamicResource MultiStageButtonStyle1}" 
+                        Margin="4" Command="{Binding SwitchComponentViewCommand}" CommandParameter="Vehicle">Vehicle</Button>
+                <Button Style="{DynamicResource MultiStageButtonStyle1}" 
+                        Margin="4" Command="{Binding SwitchComponentViewCommand}" CommandParameter="Airdrag">Airdrag</Button>
+                <Button Style="{DynamicResource MultiStageButtonStyle1}" 
+                        Margin="4" Command="{Binding SwitchComponentViewCommand}" CommandParameter="Auxiliaries">Auxiliaries</Button>
+            </UniformGrid>
+                <StackPanel Orientation="Horizontal" DockPanel.Dock="Right" Margin="0 10 20 10" >
+                    <StackPanel.Visibility>
+                        <PriorityBinding>
+                            <Binding Path="StageCount" Converter="{StaticResource AlwaysVisibleConverter}"/>
+                            <Binding>
+                                <Binding.Source>
+                                    <Visibility>Collapsed</Visibility>
+                                </Binding.Source>
+                            </Binding>
+                        </PriorityBinding>
+                    </StackPanel.Visibility>
+                    <Label>Manufacturing Stage</Label>
+                    <Label>
+                        <PriorityBinding>
+                            <Binding Path="StageCount"></Binding>
+                            <Binding >
+                            </Binding>
+                        </PriorityBinding>
+                    </Label>
                 </StackPanel>
-               
+
+            
         </DockPanel>
-            <ContentControl  DockPanel.Dock="Top" Content="{Binding CurrentView}"/>
+            <UniformGrid Rows="1" Width="350" DockPanel.Dock="Bottom" HorizontalAlignment="Right" 
+                         Visibility="{Binding ShowSaveAndCloseButtons, 
+                Converter={StaticResource BooleanToVisibilityConverter}}">
+                <Button Style="{StaticResource MultiStageButtonStyle1}" Command="{Binding SaveInputDataCommand}">Save</Button>
+                <Button Style="{StaticResource MultiStageButtonStyle1}" Command="{Binding SaveInputDataAsCommand}">Save As ...</Button>
+                <Button Style="{StaticResource MultiStageButtonStyle1}" 
+                        Command="{Binding CloseWindowCommand}" 
+                        CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}">Close</Button>
+            </UniformGrid>
+            <ContentControl DockPanel.Dock="Top" ContentTemplateSelector="{StaticResource MultistageVehicleDataTemplateSelector}"   Content="{Binding CurrentView}"/>
         </DockPanel>
     </Grid>
 </UserControl>
diff --git a/VECTO3GUI2020/Views/Multistage/MultiStageView.xaml b/VECTO3GUI2020/Views/Multistage/MultiStageView.xaml
index 449554b41c18f989dc1709a95bfe4b9e3eedfd0e..46ff212b1a4d0f52cd7afbfe3968bc0a42751cb8 100644
--- a/VECTO3GUI2020/Views/Multistage/MultiStageView.xaml
+++ b/VECTO3GUI2020/Views/Multistage/MultiStageView.xaml
@@ -13,9 +13,10 @@
             <customControls:FilePicker 
                 DockPanel.Dock="Top" 
                 Command="{Binding LoadVehicleDataCommand}" 
-                Text="{Binding VehicleInputDataFilePath, TargetNullValue=Select Vehicle Input Data . . .}"></customControls:FilePicker>
+                Text="{Binding VehicleInputDataFilePath, TargetNullValue=Select Vehicle Input Data . . .}"/>
+            <Label DockPanel.Dock="Top" HorizontalAlignment="Center"  Visibility="{Binding Exempted, Converter={StaticResource BooleanToVisibilityConverter}}">Exempted Vehicle</Label>
             <Border BorderThickness="1" BorderBrush="{DynamicResource ButtonHighlightColor}" Height="40" DockPanel.Dock="Bottom">
-                <DockPanel LastChildFill="False">
+                <DockPanel LastChildFill="False" DockPanel.Dock="Bottom">
                     <Button DockPanel.Dock="Right"
                         Width="100"
                         Command="{Binding CloseWindowCommand}" 
@@ -35,18 +36,18 @@
                         Style="{DynamicResource MultiStageButtonStyle1}" 
                         Margin="4" 
                         Padding="4" 
-                        Command="{Binding SaveInputDataCommand}">Save Input</Button>
+                        Command="{Binding ManufacturingStageViewModel.SaveInputDataCommand}">Save Input</Button>
                     <Button 
                         DockPanel.Dock="Right" 
                         Width="100"  
                         Style="{DynamicResource MultiStageButtonStyle1}" 
                         Margin="4" 
                         Padding="4" 
-                        Command="{Binding SaveInputDataAsCommand}">Save Input As ... </Button>
+                        Command="{Binding ManufacturingStageViewModel.SaveInputDataAsCommand}">Save Input As ... </Button>
                 </DockPanel>
             </Border>
             <ContentControl DockPanel.Dock="Top" Content="{Binding ManufacturingStageViewModel}"/>
-
+          
         </DockPanel>
     </Grid>
 </UserControl>
diff --git a/VECTO3GUI2020/Views/Multistage/MultistageAirDragView.xaml b/VECTO3GUI2020/Views/Multistage/MultistageAirDragView.xaml
index 2b7cf405dff4475dcd99a4fea093e590e40558b9..a6da16c578fe90ad63b3f2c3cf0786a1fa932b80 100644
--- a/VECTO3GUI2020/Views/Multistage/MultistageAirDragView.xaml
+++ b/VECTO3GUI2020/Views/Multistage/MultistageAirDragView.xaml
@@ -30,6 +30,8 @@
                     </DockPanel>
 
                     <StackPanel HorizontalAlignment="Stretch" Margin="4" >
+                        <StackPanel Visibility="{Binding ShowConsolidatedData,
+                            Converter={StaticResource BooleanToVisibilityConverter}}">
                         <Label Style="{DynamicResource LabelStyle1}">Consolidated Airdrag Data</Label>
                         <StackPanel Visibility="{Binding ConsolidatedAirdragData, Converter={StaticResource NullToVisibilityConverter}}">
                             <customControlsMultistage:LabledTextBoxMultistage Content="{Binding ConsolidatedAirdragData.Manufacturer, Mode=OneWay}" ReadOnly="True"/>
@@ -37,6 +39,7 @@
                             <customControlsMultistage:LabledTextBoxMultistage Content="{Binding ConsolidatedAirdragData.AirDragArea, Mode=OneWay}" ReadOnly="True"/>
                         </StackPanel>
                         <Label Visibility="{Binding ConsolidatedAirdragData, Converter={StaticResource NullToVisibilityConverter}, ConverterParameter=invert}">No data set</Label>
+                        </StackPanel>
                         <Label Style="{DynamicResource LabelStyle1}">Data from File</Label>
                         <ContentControl Content="{Binding AirDragViewModel}" 
                                         Visibility="{Binding AirDragViewModel, Converter={StaticResource NullToVisibilityConverter}}">
diff --git a/VECTO3GUI2020/Views/Multistage/NewMultistageFileView.xaml b/VECTO3GUI2020/Views/Multistage/NewMultistageFileView.xaml
index 6a1b5a60b56e2d1d75ddb51485e77be92c81ed8f..b8e27af00a50661acf11845f1c8a689339c3b751 100644
--- a/VECTO3GUI2020/Views/Multistage/NewMultistageFileView.xaml
+++ b/VECTO3GUI2020/Views/Multistage/NewMultistageFileView.xaml
@@ -12,7 +12,7 @@
         <Grid MaxWidth="900">
             <DockPanel>
                 <Grid DockPanel.Dock="Top">
-                    <customControls:FilePicker x:Name="NewMultistageFilePicker" Grid.Row="0" Text="{Binding VifPath}" HorizontalAlignment="Stretch" Command="{Binding AddVifFile}"/>
+                    <customControls:FilePicker x:Name="NewMultistageFilePicker" Grid.Row="0" Text="{Binding VifPath}" HorizontalAlignment="Stretch" Command="{Binding AddVifFileCommand}"/>
                 </Grid>
                 <Button Style="{DynamicResource MultiStageButtonStyle1}" 
                         Margin="4"  DockPanel.Dock="Bottom" 
diff --git a/VECTO3GUI2020/Views/Multistage/VehicleView_v2_8.xaml b/VECTO3GUI2020/Views/Multistage/VehicleView_v2_8.xaml
index 99ef7e8b6b34a4334df68cbb32b3faacb0f29968..eef272c305d14f887a9d213780fe1a8121784336 100644
--- a/VECTO3GUI2020/Views/Multistage/VehicleView_v2_8.xaml
+++ b/VECTO3GUI2020/Views/Multistage/VehicleView_v2_8.xaml
@@ -7,15 +7,10 @@
              xmlns:custom="clr-namespace:VECTO3GUI2020.Views.Multistage.CustomControls" xmlns:implementation="clr-namespace:VECTO3GUI2020.ViewModel.MultiStage.Implementation"
              xmlns:properties="clr-namespace:VECTO3GUI2020.Properties"
              xmlns:resources="clr-namespace:System.Resources;assembly=mscorlib"
-             d:DataContext="{d:DesignInstance Type=implementation:DeclarationInterimStageBusVehicleViewModel_v2_8}"
+             d:DataContext="{d:DesignInstance Type=implementation:InterimStageBusVehicleViewModel_v2_8}"
              mc:Ignorable="d" 
              d:DesignHeight="450" d:DesignWidth="800" BorderBrush="{DynamicResource ButtonHighlightColor}" BorderThickness="2px" Margin="4px">
     <UserControl.Resources>
-        <Style TargetType="custom:MultiStageParameter">
-            <Setter Property="NameLookUpResourceManager" Value="{x:Static properties:BusStrings.ResourceManager}"/>
-            <Setter Property="Validation.ErrorTemplate" Value="{StaticResource multistageParameterControlErrorTemplate}"/>
-        </Style>
-
         <Style TargetType="ContentControl">
             <Setter Property="ContentTemplateSelector" Value="{DynamicResource MultistageParameterTemplateSelector}"/>
             <Setter Property="IsTabStop" Value="False"></Setter>
@@ -32,12 +27,8 @@
                        Style="{DynamicResource LabelStyle1}"/>
 
 
-                <ContentControl Content="{Binding ParameterViewModels[Manufacturer]}" >
-                </ContentControl>
-
-
+                <ContentControl Content="{Binding ParameterViewModels[Manufacturer]}"/>
                 <ContentControl Content="{Binding ParameterViewModels[ManufacturerAddress]}"/>
-   
                 <ContentControl Content="{Binding ParameterViewModels[VIN]}"/>
 
 
diff --git a/VECTO3GUI2020/Views/Multistage/VehicleView_v2_8_exempted.xaml b/VECTO3GUI2020/Views/Multistage/VehicleView_v2_8_exempted.xaml
new file mode 100644
index 0000000000000000000000000000000000000000..e3f52ba7dbc010f5226c8134035eb564a88b0d24
--- /dev/null
+++ b/VECTO3GUI2020/Views/Multistage/VehicleView_v2_8_exempted.xaml
@@ -0,0 +1,55 @@
+ο»Ώ<UserControl x:Class="VECTO3GUI2020.Views.Multistage.VehicleView_v2_8_exempted"
+             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
+             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
+             xmlns:local="clr-namespace:VECTO3GUI2020.Views.Multistage"
+             mc:Ignorable="d" 
+             d:DesignHeight="450" d:DesignWidth="800">
+    <UserControl.Resources>
+        <Style TargetType="ContentControl">
+            <Setter Property="ContentTemplateSelector" Value="{DynamicResource MultistageParameterTemplateSelector}"/>
+            <Setter Property="IsTabStop" Value="False"></Setter>
+        </Style>
+    </UserControl.Resources>
+    <Grid>
+        <ScrollViewer>
+            <DockPanel>
+                <StackPanel>
+                    <Label Content="VEHICLE DATA" HorizontalAlignment="Stretch" FontSize="15" VerticalAlignment="Stretch"
+                           Style="{DynamicResource LabelStyle1}"/>
+
+
+                    <ContentControl Content="{Binding ParameterViewModels[Manufacturer]}"/>
+                    <ContentControl Content="{Binding ParameterViewModels[ManufacturerAddress]}"/>
+                    <ContentControl Content="{Binding ParameterViewModels[VIN]}"/>
+                    <ContentControl Content="{Binding ParameterViewModels[Model]}"/>
+                    <ContentControl Content="{Binding ParameterViewModels[LegislativeClass]}"/>
+                    <ContentControl Content="{Binding ParameterViewModels[CurbMassChassis]}"/>
+                    <ContentControl Content="{Binding ParameterViewModels[GrossVehicleMassRating]}"/>
+                    <ContentControl Content="{Binding ParameterViewModels[RegisteredClass]}"/>
+                    <ContentControl 
+                        Content="{Binding ParameterViewModels[VehicleCode]}"/>
+                    <ContentControl 
+                        Content="{Binding ParameterViewModels[LowEntry]}"/>
+                    <ContentControl 
+                        Content="{Binding ParameterViewModels[HeightInMm]}"/>
+
+                    <Label Style="{DynamicResource LabelStyle1}">Number of Passengers</Label>
+
+                    <ContentControl 
+                        Content="{Binding ParameterViewModels[NumberPassengerSeatsLowerDeck]}"/>
+                    <ContentControl 
+                        Content="{Binding ParameterViewModels[NumberPassengersStandingLowerDeck]}"/>
+                    <ContentControl 
+                        Content="{Binding ParameterViewModels[NumberPassengerSeatsUpperDeck]}"/>
+                    <ContentControl 
+                        Content="{Binding ParameterViewModels[NumberPassengersStandingUpperDeck]}"/>
+
+
+
+                </StackPanel>
+                </DockPanel>
+            </ScrollViewer>
+    </Grid>
+</UserControl>
diff --git a/VECTO3GUI2020/Views/Multistage/VehicleView_v2_8_exempted.xaml.cs b/VECTO3GUI2020/Views/Multistage/VehicleView_v2_8_exempted.xaml.cs
new file mode 100644
index 0000000000000000000000000000000000000000..56db7aca7d57d6cf53f94e4baea20e5833ba72f7
--- /dev/null
+++ b/VECTO3GUI2020/Views/Multistage/VehicleView_v2_8_exempted.xaml.cs
@@ -0,0 +1,28 @@
+ο»Ώusing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace VECTO3GUI2020.Views.Multistage
+{
+    /// <summary>
+    /// Interaction logic for VehicleView_v2_8_exempted.xaml
+    /// </summary>
+    public partial class VehicleView_v2_8_exempted : UserControl
+    {
+        public VehicleView_v2_8_exempted()
+        {
+            InitializeComponent();
+        }
+    }
+}
diff --git a/VECTO3GUI2020/Views/OutputView.xaml b/VECTO3GUI2020/Views/OutputView.xaml
index 7f8015871ae09214136d3b87940a49dff23249c6..0f988ee09b50fd530bb0a15e578781f276cec587 100644
--- a/VECTO3GUI2020/Views/OutputView.xaml
+++ b/VECTO3GUI2020/Views/OutputView.xaml
@@ -3,11 +3,13 @@
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
-             xmlns:local="clr-namespace:VECTO3GUI2020.Views"
              xmlns:impl="clr-namespace:VECTO3GUI2020.ViewModel.Implementation"
-             xmlns:viewModel="clr-namespace:VECTO3GUI2020.ViewModel"
-             mc:Ignorable="d" 
-             d:DesignHeight="450" d:DesignWidth="800" d:DataContext="{d:DesignData Type=viewModel:IOutputViewModel}">
+             xmlns:helper="clr-namespace:VECTO3GUI2020.Helper" 
+             mc:Ignorable="d"
+             d:DesignHeight="450" d:DesignWidth="800" d:DataContext="{d:DesignData Type=viewModel:IOutputViewModel}"
+             xmlns:behavior="clr-namespace:VECTO3GUI2020.Behaviours"
+             xmlns:i="http://schemas.microsoft.com/xaml/behaviors">
+
     <Grid>
         <DockPanel LastChildFill="False">
             <ProgressBar DockPanel.Dock="Top" 
@@ -28,57 +30,87 @@
                 SelectionUnit="FullRow" 
                 IsReadOnly="True" 
                 HeadersVisibility="All"  
-                RowHeaderWidth="5" 
-                Name="MessageList">
+                RowHeaderWidth="0.1" 
+                Name="MessageList"
+                ColumnHeaderStyle="{StaticResource JobListDataGridHeaderStyle}"
+                ColumnHeaderHeight="30"
+                d:DataContext="{d:DesignInstance helper:DesignData}"
+                AlternationCount="2"
+                Background="White">
+
+                <i:Interaction.Behaviors>
+                    <behavior:AutoScrollDataGridBehaviour>
+                    </behavior:AutoScrollDataGridBehaviour>
+                </i:Interaction.Behaviors>
                 <DataGrid.Columns>
                         <DataGridTemplateColumn Header="Message" Width="*">
                             <DataGridTemplateColumn.CellTemplate>
-                                <DataTemplate>
-                                    <StackPanel>
+                                <DataTemplate DataType="impl:MessageEntry">
+                                    <StackPanel Margin="10">
                                         <TextBlock Text="{Binding Message}" Visibility="{Binding Message, Converter={StaticResource NullToVisibilityConverter}}"
                                                    TextWrapping="Wrap"/>
-                                        <TextBlock Text="{Binding Link}" Visibility="{Binding Message, Converter={StaticResource NullToVisibilityConverter}}"
-                                                   TextWrapping="Wrap"/>
+
+                                        <TextBlock Visibility="{Binding Link, Converter={StaticResource NullToVisibilityConverter}}">
+                                            <Hyperlink Command="{Binding Path=DataContext.OpenFolderCommand, 
+                                                             RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}}" 
+                                                       CommandParameter="{Binding Link}">
+                                                Open Folder 
+                                            </Hyperlink>
+                                            
+                                            <Hyperlink Command="{Binding Path=DataContext.OpenFileCommand, 
+                                                             RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}}" 
+                                                       CommandParameter="{Binding Link}">
+                                                Open File
+                                            </Hyperlink>
+                                        </TextBlock>
                                     </StackPanel>
                                 </DataTemplate>
                             </DataGridTemplateColumn.CellTemplate>
                         </DataGridTemplateColumn>
-                        <DataGridTextColumn Header="Time" Binding="{Binding Time}" Width="130" />
+                        <DataGridTextColumn Header="Time" Binding="{Binding Time, StringFormat=hh:mm:ss dd.MM.yyyy}" Width="150" />
                     </DataGrid.Columns>
                 <DataGrid.RowStyle>
                     <Style TargetType="DataGridRow">
                         <Style.Triggers>
+
+
+
+
                             <DataTrigger Binding="{Binding Type}" Value="{x:Static impl:MessageType.StatusMessage}">
-                                <Setter Property="Background" Value="AliceBlue"/>
+                                <Setter Property="Background" Value="{StaticResource SemiTransparentWhite}"/>
                             </DataTrigger>
                             <DataTrigger Binding="{Binding Type}" Value="{x:Static impl:MessageType.InfoMessage}">
                                 <Setter Property="Background" Value="LemonChiffon"/>
                             </DataTrigger>
                             <DataTrigger Binding="{Binding Type}" Value="{x:Static impl:MessageType.ErrorMessage}">
-                                <Setter Property="Background" Value="Red"/>
+                                <Setter Property="Background" Value="OrangeRed"/>
                             </DataTrigger>
                             <DataTrigger Binding="{Binding Type}" Value="{x:Static impl:MessageType.WarningMessage}">
-                                <Setter Property="Background" Value="Gold"/>
+                                <Setter Property="Background" Value="{StaticResource SemiTransparentYellow}"/>
                             </DataTrigger>
                         </Style.Triggers>
                     </Style>
                 </DataGrid.RowStyle>
                 <DataGrid.CellStyle>
-                    <Style TargetType="DataGridCell">
+                    <Style TargetType="DataGridCell" BasedOn="{StaticResource DataGridCellStyle1}">
                         <Setter Property="FontFamily" Value="Courier New"/>
                         <Style.Triggers>
                             <DataTrigger Binding="{Binding Type}" Value="{x:Static impl:MessageType.StatusMessage}">
                                 <Setter Property="Foreground" Value="Black"/>
+                               
                             </DataTrigger>
                             <DataTrigger Binding="{Binding Type}" Value="{x:Static impl:MessageType.InfoMessage}">
-                                <Setter Property="Foreground" Value="DimGray"/>
+                                <Setter Property="Foreground" Value="Black"/>
+                               
                             </DataTrigger>
                             <DataTrigger Binding="{Binding Type}" Value="{x:Static impl:MessageType.ErrorMessage}">
-                                <Setter Property="Foreground" Value="White"/>
+                                <Setter Property="Foreground" Value="LightGray"/>
+                            
                                 <Setter Property="FontWeight" Value="Bold"/>
                             </DataTrigger>
                             <DataTrigger Binding="{Binding Type}" Value="{x:Static impl:MessageType.WarningMessage}">
                                 <Setter Property="Foreground" Value="Black"/>
+
                                 <Setter Property="FontWeight" Value="Bold"/>
                             </DataTrigger>
                         </Style.Triggers>
diff --git a/VECTO3GUI2020/Views/OutputView.xaml.cs b/VECTO3GUI2020/Views/OutputView.xaml.cs
index c9eab7dc568a76159f596d5818f783f5ba58ec51..f07ca73a6f19f525376cf3977a8e30eca1fba086 100644
--- a/VECTO3GUI2020/Views/OutputView.xaml.cs
+++ b/VECTO3GUI2020/Views/OutputView.xaml.cs
@@ -24,5 +24,6 @@ namespace VECTO3GUI2020.Views
         {
             InitializeComponent();
         }
-    }
+
+	}
 }
diff --git a/VECTO3GUI2020/Views/SettingsView.xaml b/VECTO3GUI2020/Views/SettingsView.xaml
index 225d9506482e2c5aa0e773fb63623bc488f283da..6ef78b6a93d8de01b64309520d4547ebcd419a1f 100644
--- a/VECTO3GUI2020/Views/SettingsView.xaml
+++ b/VECTO3GUI2020/Views/SettingsView.xaml
@@ -6,7 +6,10 @@
         xmlns:local="clr-namespace:VECTO3GUI2020.Views"
         xmlns:customControls="clr-namespace:VECTO3GUI2020.Views.Multistage.CustomControls"
         xmlns:implementation="clr-namespace:VECTO3GUI2020.ViewModel.Implementation"
-        mc:Ignorable="d" Height="450" Width="800" d:DataContext="{d:DesignInstance implementation:SettingsViewModel }">
+        xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
+        xmlns:behaviour="clr-namespace:VECTO3GUI2020.Behaviours"
+        mc:Ignorable="d" d:DataContext="{d:DesignInstance implementation:SettingsViewModel }"
+        MinHeight="200" MinWidth="400">
     <UserControl.Resources>
         <Style TargetType="Label">
             <Setter Property="Margin" Value="4 4 4 4"></Setter>
@@ -20,66 +23,82 @@
     </UserControl.Resources>
 
     <Grid>
-        <DockPanel LastChildFill="False">
-            <Grid DockPanel.Dock="Top">
+        <DockPanel VerticalAlignment="Stretch" LastChildFill="False">
+            <Label DockPanel.Dock="Top" Style="{StaticResource LabelStyle1}">File I/O</Label>
+            <Border DockPanel.Dock="Top" BorderBrush="{StaticResource ButtonHighlightColor}" BorderThickness="1">
+                <Grid DockPanel.Dock="Top" IsSharedSizeScope="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
                 <Grid.ColumnDefinitions>
-                    <ColumnDefinition Width="1*"/>
-                    <ColumnDefinition Width="1*"></ColumnDefinition>
-                    <ColumnDefinition Width="1*"></ColumnDefinition>
-                    <ColumnDefinition Width="1*"></ColumnDefinition>
+                    <ColumnDefinition Width="Auto"/>
+                    <ColumnDefinition Width="Auto"/>
                 </Grid.ColumnDefinitions>
                 <Grid.RowDefinitions>
                     <RowDefinition Height="Auto"></RowDefinition>
                     <RowDefinition Height="Auto"></RowDefinition>
-                    <RowDefinition Height="30"></RowDefinition>
-                    <RowDefinition Height="30"></RowDefinition>
-                    <RowDefinition Height="30"></RowDefinition>
                 </Grid.RowDefinitions>
-          
-           
-                <Label Grid.Row="0" Grid.Column="0" DockPanel.Dock="Left">Default Path</Label>
-                <customControls:FilePicker Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="3" DockPanel.Dock="Right"
-                     Text="{Binding DefaultFilePath}"
-                    HorizontalAlignment="Stretch" Command="{Binding ChangeFilePath}"/>
-
-                <Label Grid.Row="1" Grid.Column="0" DockPanel.Dock="Left">Default Path</Label>
-                <Grid Grid.Row="1" Grid.Column="1" Margin="4" VerticalAlignment="Stretch" Grid.ColumnSpan="3" DockPanel.Dock="Right">
-                    <Grid.RowDefinitions>
-                        <RowDefinition></RowDefinition>
-                    </Grid.RowDefinitions>
+
+                    <Label Grid.Row="0" Grid.Column="0" DockPanel.Dock="Left">Default Input Path</Label>
+                <customControls:FilePicker Grid.Row="0" 
+                                           Grid.Column="1" 
+                                           DockPanel.Dock="Right"
+                                           Text="{Binding DefaultFilePath}"
+                                           HorizontalAlignment="Stretch" Command="{Binding ChangeFilePath}"
+                                           ButtonContentTemplate="{DynamicResource FolderIcon}"/>
+
+
+                <Label Grid.Column="0" Grid.Row="1">Default Output Path</Label>
+                <customControls:FilePicker Grid.Row="1" 
+                                           Grid.Column="1" 
+                                           Text="{Binding DefaultOutputPath}"
+                                           Command="{Binding ChangeOutputPath}"
+                                           ButtonContentTemplate="{DynamicResource FolderIcon}"/>
+                </Grid>
+            </Border>
+            <Border BorderBrush="{DynamicResource ButtonHighlightColor}" BorderThickness="1" DockPanel.Dock="Top">
+                <StackPanel>
+
+                <Label Style="{DynamicResource LabelStyle1}" HorizontalAlignment="Stretch">Simulation Settings</Label>
+
+                    <Grid HorizontalAlignment="Left" MaxWidth="500" >
                     <Grid.ColumnDefinitions>
-                        <ColumnDefinition></ColumnDefinition>
-                        <ColumnDefinition Width="30px"></ColumnDefinition>
+                        <ColumnDefinition Width="2*"/>
+                        <ColumnDefinition Width="1*"/>
+                        <ColumnDefinition Width="2*"/>
+                        <ColumnDefinition Width="1*"/>
                     </Grid.ColumnDefinitions>
-                    <TextBox x:Name="textBox" VerticalContentAlignment="Center" Padding="4" Margin = "0 0 0 0" IsReadOnly="false" 
-                             Text="{Binding DefaultOutputPath}" HorizontalAlignment="Stretch" TextWrapping="Wrap"
-                             Style="{DynamicResource TextBoxStyle1}"/>
-                    <Button x:Name="button" Padding="4" Margin="4 0 0 0" Grid.Column="1" ContentTemplate="{DynamicResource AddDocumentIcon}"
-                            Command="{Binding ChangeOutputPath}" Style="{DynamicResource FilePickerButtonStyle}">
+                    <Grid.RowDefinitions>
+                        <RowDefinition Height="Auto"/>
+                        <RowDefinition Height="Auto"/>
+                        <RowDefinition Height="Auto"/>
+                    </Grid.RowDefinitions>
+                    <Label Grid.Row="0" Grid.Column="0">Serialize Vecto Run Data</Label>
+                    <CheckBox Grid.Row="0" Grid.Column="1" IsChecked="{Binding SerializeVectoRunData}"></CheckBox>
+
+                    <Label Grid.Row="1" Grid.Column="2">Write Modal Results</Label>
+                    <CheckBox Grid.Row="1" Grid.Column="3" IsChecked="{Binding WriteModalResults}"></CheckBox>
+
+                    <Label Grid.Row="2" Grid.Column="0">Validate</Label>
+                    <CheckBox Grid.Row="2" Grid.Column="1" IsChecked="{Binding Validate}"></CheckBox>
+
+                    <Label Grid.Row="0" Grid.Column="2">Actual Modal Data</Label>
+                    <CheckBox Grid.Row="0" Grid.Column="3" IsChecked="{Binding ActualModalData}"></CheckBox>
+
+                    <Label Grid.Row="1" Grid.Column="0">ModalResults1Hz</Label>
+                    <CheckBox Grid.Row="1" Grid.Column="1" IsChecked="{Binding ModalResults1Hz}"></CheckBox>
+
+
 
-                    </Button>
-                </Grid>
-                <!--<customControls:FilePicker Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="3" DockPanel.Dock="Right"
-                                           Text="{Binding DefaultOutputPath}"
-                                           HorizontalAlignment="Stretch" Command="{Binding ChangeOutputPath}"/>-->
 
+                    </Grid>
 
-                <Label Grid.Row="2" Grid.Column="0">Serialize Vecto Run Data</Label>
-                <CheckBox Grid.Row="2" Grid.Column="1" IsChecked="{Binding SerializeVectoRunData}"></CheckBox>
+                </StackPanel>
+            </Border>
 
-                <Label Grid.Row="3" Grid.Column="2">Write Modal Results</Label>
-                <CheckBox Grid.Row="3" Grid.Column="3" IsChecked="{Binding WriteModalResults}"></CheckBox>
 
-                <Label Grid.Row="3" Grid.Column="0">Validate</Label>
-                <CheckBox Grid.Row="3" Grid.Column="1" IsChecked="{Binding Validate}"></CheckBox>
 
-                <Label Grid.Row="4" Grid.Column="2">Actual Modal Data</Label>
-                <CheckBox Grid.Row="4" Grid.Column="3" IsChecked="{Binding ActualModalData}"></CheckBox>
 
-                <Label Grid.Row="4" Grid.Column="0">ModalResults1Hz</Label>
-                <CheckBox Grid.Row="4" Grid.Column="1" IsChecked="{Binding ModalResults1Hz}"></CheckBox>
-            </Grid>
-            <!--<DockPanel DockPanel.Dock="Bottom" LastChildFill="False">
+       
+            <!--</Grid>-->
+            <DockPanel DockPanel.Dock="Bottom" LastChildFill="False">
                 <Button DockPanel.Dock="Right"
                         Width="100"
                         Command="{Binding CloseWindowCommand}" 
@@ -87,7 +106,7 @@
                         Style="{DynamicResource MultiStageButtonStyle1}"
                         Margin="4"
                         Padding="4">Close</Button>
-            </DockPanel>-->
+            </DockPanel>
         </DockPanel>
     </Grid>
 </UserControl>
diff --git a/VECTO3GUI2020/packages.config b/VECTO3GUI2020/packages.config
index 858916a3f79f42e0406d5119d5d69b34c14416a4..9cb9073c2bdc9af52f5c0bcaa4269bafa9b3f6f7 100644
--- a/VECTO3GUI2020/packages.config
+++ b/VECTO3GUI2020/packages.config
@@ -5,9 +5,12 @@
   <package id="Microsoft.Bcl.AsyncInterfaces" version="5.0.0" targetFramework="net48" />
   <package id="Microsoft.Maps.MapControl.WPF" version="1.0.0.3" targetFramework="net48" />
   <package id="Microsoft.Toolkit.Mvvm" version="7.0.2" targetFramework="net48" />
+  <package id="Microsoft.Xaml.Behaviors.Wpf" version="1.1.31" targetFramework="net48" />
+  <package id="Newtonsoft.Json" version="8.0.3" targetFramework="net48" />
   <package id="Ninject" version="3.3.4" targetFramework="net48" />
   <package id="Ninject.Extensions.ChildKernel" version="3.3.0" targetFramework="net48" />
   <package id="Ninject.Extensions.Factory" version="3.3.3" targetFramework="net48" />
+  <package id="NLog" version="4.5.11" targetFramework="net48" />
   <package id="System.Buffers" version="4.5.1" targetFramework="net48" />
   <package id="System.ComponentModel.Annotations" version="5.0.0" targetFramework="net48" />
   <package id="System.Memory" version="4.5.4" targetFramework="net48" />
diff --git a/Vecto3GUI2020Test/AllTestWithoutUI.testsession b/Vecto3GUI2020Test/AllTestWithoutUI.testsession
deleted file mode 100644
index 09c416848ccbebfc94be4fd3f62e8923f6fd29a7..0000000000000000000000000000000000000000
--- a/Vecto3GUI2020Test/AllTestWithoutUI.testsession
+++ /dev/null
@@ -1,14 +0,0 @@
-<SessionState ContinuousTestingMode="0" IsActive="True" Name="AllTestWithoutUI" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session">
-  <TestAncestor>
-    <TestId>NUnit3x::7F4FF473-96B3-461E-9CE6-76D3B75F87CB::.NETFramework,Version=v4.8::Vecto3GUI2020Test.ViewModelTests.VIFTests.LoadPrimaryVehicleAndStageInputThenCreateVif</TestId>
-    <TestId>NUnit3x::7F4FF473-96B3-461E-9CE6-76D3B75F87CB::.NETFramework,Version=v4.8::Vecto3GUI2020Test.ViewModelTests.VehicleViewModelTests.airdragNotModifiedInPreviousStages</TestId>
-    <TestId>NUnit3x::7F4FF473-96B3-461E-9CE6-76D3B75F87CB::.NETFramework,Version=v4.8::Vecto3GUI2020Test.ViewModelTests.VIFTests.loadPrimaryVehicleOnlyAndCreateNewVIF</TestId>
-    <TestId>NUnit3x::7F4FF473-96B3-461E-9CE6-76D3B75F87CB::.NETFramework,Version=v4.8::Vecto3GUI2020Test.ViewModelTests.VIFTests.TestAirdragLoad</TestId>
-    <TestId>NUnit3x::7F4FF473-96B3-461E-9CE6-76D3B75F87CB::.NETFramework,Version=v4.8::Vecto3GUI2020Test.LoadAndSaveVehicleData.SaveVehicleDataWithMissingFields</TestId>
-    <TestId>NUnit3x::7F4FF473-96B3-461E-9CE6-76D3B75F87CB::.NETFramework,Version=v4.8::Vecto3GUI2020Test.LoadAndSaveVehicleData.loadPrimaryAndSaveVehicleData</TestId>
-    <TestId>NUnit3x::7F4FF473-96B3-461E-9CE6-76D3B75F87CB::.NETFramework,Version=v4.8::Vecto3GUI2020Test.LoadAndSaveVehicleData.loadInputFileMultipleStage</TestId>
-    <TestId>NUnit3x::7F4FF473-96B3-461E-9CE6-76D3B75F87CB::.NETFramework,Version=v4.8::Vecto3GUI2020Test.LoadAndSaveVehicleData</TestId>
-    <TestId>NUnit3x::7F4FF473-96B3-461E-9CE6-76D3B75F87CB::.NETFramework,Version=v4.8::Vecto3GUI2020Test.ViewModelTests.VIFTests</TestId>
-    <TestId>NUnit3x::7F4FF473-96B3-461E-9CE6-76D3B75F87CB::.NETFramework,Version=v4.8::Vecto3GUI2020Test.ViewModelTests.VehicleViewModelTests</TestId>
-  </TestAncestor>
-</SessionState>
\ No newline at end of file
diff --git a/Vecto3GUI2020Test/BugReports/VIFTests.cs b/Vecto3GUI2020Test/BugReports/VIFTests.cs
new file mode 100644
index 0000000000000000000000000000000000000000..7e4693efc1968ddf03807c86f255974c4a672d9a
--- /dev/null
+++ b/Vecto3GUI2020Test/BugReports/VIFTests.cs
@@ -0,0 +1,55 @@
+ο»Ώusing System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Ninject;
+using NUnit.Framework;
+using NUnit.Framework.Internal;
+using VECTO3GUI2020.ViewModel.Implementation;
+using VECTO3GUI2020.ViewModel.Interfaces;
+
+namespace Vecto3GUI2020Test.BugReports
+{
+	[TestFixture]
+	public class VifTests : ViewModelTestBase
+	{
+		public const string primaryDecimalTestFile = "PrimaryDecimal/primary_heavyBus group41_nonSmart_rounded_decimals.xml";
+
+		
+		[TestCase(VifTests.primaryDecimalTestFile, TestName="PneumaticsCompressorDrive")]
+		public async Task CreateAndLoadVifWithWrongDecimalCount(string fileName)
+		{
+            //Load JobFile 
+			var jobListViewModel = _kernel.Get<IJobListViewModel>() as JobListViewModel;
+			await jobListViewModel.AddJobAsync(GetTestDataPath(fileName: fileName));
+			Assert.AreEqual(1, jobListViewModel.Jobs.Count);
+			jobListViewModel.Jobs[0].Selected = true;
+
+			//Start Simulation
+			TestContext.Write("Starting simulation ... ");
+			Stopwatch stop = Stopwatch.StartNew();
+			await jobListViewModel.RunSimulationExecute();
+			stop.Stop();
+			TestContext.WriteLine($"Done! ({stop.Elapsed.TotalSeconds}s)");
+
+
+			var vifName = fileName.Replace(".xml", ".RSLT_VIF.xml");
+			TestContext.WriteLine($"Trying to add {vifName} to JobList");
+			await jobListViewModel.AddJobAsync(GetTestDataPath(fileName: vifName));
+			Assert.AreEqual(2, jobListViewModel.Jobs.Count);
+
+			foreach (var documentViewModel in jobListViewModel.Jobs) {
+				TestContext.WriteLine($"{documentViewModel.DataSource.SourcePath}");
+			}
+
+			return;
+		}
+
+
+
+
+
+	}
+}
diff --git a/Vecto3GUI2020Test/HelperTests/BackingStorageTest.cs b/Vecto3GUI2020Test/HelperTests/BackingStorageTest.cs
new file mode 100644
index 0000000000000000000000000000000000000000..278bbcba1f1610393009858163ebce167266b19e
--- /dev/null
+++ b/Vecto3GUI2020Test/HelperTests/BackingStorageTest.cs
@@ -0,0 +1,219 @@
+ο»Ώusing System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using Castle.Components.DictionaryAdapter;
+using NUnit.Framework;
+using VECTO3GUI2020;
+using VECTO3GUI2020.ViewModel.Implementation.Common;
+using VECTO3GUI2020.ViewModel.MultiStage.Implementation;
+
+namespace Vecto3GUI2020Test.HelperTests
+{
+	[TestFixture]
+	public class BackingStorageTest
+	{
+		private TestVm _testVm;
+		private Dictionary<string, object> _currentValues;
+		private IReadOnlyDictionary<string, object> _savedValues;
+		private IReadOnlyDictionary<string, object> _unsavedChanges;
+		private bool _unsavedChangesNotified = false;
+
+		public class TestVm : ObservableObject
+		{
+			private string _stringTestProperty;
+
+			public string StringTestProperty
+			{
+				get => _stringTestProperty;
+				set => SetProperty(ref _stringTestProperty, value);
+			}
+
+			private string _notMonitoredProperty;
+
+			public string NotMonitoredProperty
+			{
+				get => _notMonitoredProperty;
+				set => SetProperty(ref _notMonitoredProperty, value);
+			}
+
+
+			public BackingStorage<TestVm> BackingStorage { get; set; }
+			public TestVm()
+			{
+				BackingStorage = new BackingStorage<TestVm>(this, nameof(StringTestProperty));
+			}
+		}
+
+		#region Setup and Property implementation
+		private IReadOnlyDictionary<string, object> SavedValues
+		{
+			get
+			{
+				return _savedValues ?? (_savedValues = (IReadOnlyDictionary<string, object>)_testVm.BackingStorage.GetType()
+					.GetField("_savedValues", BindingFlags.NonPublic | BindingFlags.Instance)
+					.GetValue(_testVm.BackingStorage));
+			}
+		}
+
+
+		[SetUp]
+		public void SetUp()
+		{
+			_unsavedChangesNotified = false;
+			_testVm = new TestVm();
+			_currentValues = (Dictionary<string, object>)_testVm.BackingStorage.
+				GetType().GetField("_currentValues", BindingFlags.NonPublic | BindingFlags.Instance).
+				GetValue(_testVm.BackingStorage);
+			_unsavedChanges = (Dictionary<string, object>)_testVm.BackingStorage.
+				GetType().GetField("_unsavedChanges", BindingFlags.NonPublic | BindingFlags.Instance).
+				GetValue(_testVm.BackingStorage);
+
+			_testVm.BackingStorage.PropertyChanged += BackingStorage_PropertyChanged;
+		}
+
+		[TearDown]
+		public void TearDown()
+		{
+			_unsavedChangesNotified = false;
+			
+			_currentValues = null;
+			_unsavedChanges = null;
+			_savedValues = null;
+			_testVm.BackingStorage.PropertyChanged -= BackingStorage_PropertyChanged;
+			_testVm = null;
+		}
+
+        private void BackingStorage_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
+        {
+			switch (e.PropertyName) {
+				case nameof(TestVm.BackingStorage.UnsavedChanges):
+					_unsavedChangesNotified = true;
+					break;
+				default:
+					break;
+			}
+        }
+
+#endregion
+		[Test]
+		public void ValueUpdatedOnChange()
+		{
+
+			var stopWatch = Stopwatch.StartNew();
+			_testVm.StringTestProperty = "Hi i am the new value";
+			stopWatch.Stop();
+			TestContext.WriteLine($"Ticks ellapsed first update: {stopWatch.ElapsedTicks} ({stopWatch.Elapsed.TotalMilliseconds} ms)");
+
+			
+			
+
+			Assert.AreEqual(1, _currentValues.Count);
+			Assert.AreEqual(_testVm.StringTestProperty, _currentValues[nameof(_testVm.StringTestProperty)]);
+
+
+
+			stopWatch = Stopwatch.StartNew();
+			_testVm.StringTestProperty = "Hi i am ANOTHER value";
+			stopWatch.Stop();
+			TestContext.WriteLine($"Ticks ellapsed second update: {stopWatch.ElapsedTicks}  ({stopWatch.Elapsed.TotalMilliseconds} ms)");
+
+			Assert.AreEqual(1, _currentValues.Count);
+			Assert.AreEqual(_testVm.StringTestProperty, _currentValues[nameof(_testVm.StringTestProperty)]);
+		}
+
+		[Test]
+		public void NotMonitoredProperty()
+		{
+			_testVm.NotMonitoredProperty = "Hi i should not get stored in the backing storage";
+			Assert.IsFalse(_currentValues.ContainsKey(nameof(TestVm.NotMonitoredProperty)));
+		}
+
+		[Test]
+		public void SaveChanges()
+		{
+			_testVm.StringTestProperty = "hi";
+			Assert.IsTrue(checkNotified(ref _unsavedChangesNotified));
+			Assert.IsTrue(_testVm.BackingStorage.UnsavedChanges);
+
+			_testVm.BackingStorage.SaveChanges();
+			Assert.IsTrue(checkNotified(ref _unsavedChangesNotified));
+			Assert.IsFalse(_testVm.BackingStorage.UnsavedChanges);
+		}
+
+
+		[Test]
+		public void ChangeAndUndo()
+		{
+			var originalString = "original";
+			var newValue = "new Value";
+			//Set to initial value
+			_testVm.StringTestProperty = originalString;
+			Assert.IsTrue(checkNotified(ref _unsavedChangesNotified));
+			Assert.IsTrue(_testVm.BackingStorage.UnsavedChanges);
+
+			//Save
+			_testVm.BackingStorage.SaveChanges();
+			Assert.GreaterOrEqual(SavedValues.Count, 1);
+			Assert.IsTrue(checkNotified(ref _unsavedChangesNotified));
+			Assert.IsFalse(_testVm.BackingStorage.UnsavedChanges);
+
+			//Set to new value
+			_testVm.StringTestProperty = newValue;
+			Assert.IsTrue(checkNotified(ref _unsavedChangesNotified));
+			Assert.IsTrue(_testVm.BackingStorage.UnsavedChanges);
+
+			//Set to initial value
+			_testVm.StringTestProperty = originalString;
+			Assert.IsTrue(checkNotified(ref _unsavedChangesNotified));
+			Assert.IsFalse(_testVm.BackingStorage.UnsavedChanges);
+		}
+
+		[Test]
+		public void UnsavedTrueBeforeFirstSave()
+		{
+			Assert.IsTrue(_testVm.BackingStorage.UnsavedChanges);
+			_testVm.BackingStorage.SaveChanges();
+			Assert.IsFalse(_testVm.BackingStorage.UnsavedChanges);
+		}
+
+		[Test]
+		public void SavedChangesNotModified()
+		{
+			string initialValue = "hello world";
+
+			_testVm.StringTestProperty = initialValue;
+
+			_testVm.BackingStorage.SaveChanges();
+			
+			Assert.AreEqual(SavedValues.Count, _currentValues.Count);
+			Assert.AreEqual( initialValue, SavedValues[nameof(_testVm.StringTestProperty)]);
+
+			_testVm.StringTestProperty = "New value";
+			Assert.AreEqual(initialValue, SavedValues[nameof(_testVm.StringTestProperty)]);
+		}
+
+		[Test]
+		public void createEqualityComparer()
+		{
+			var stringEqualityComparer = EqualityComparer<string>.Default;
+			var CreateEqualityComparererMethodInfo = _testVm.BackingStorage.GetType()
+				.GetMethod("CreateEqualityComparer", BindingFlags.NonPublic | BindingFlags.Static);
+
+			var generatedEqualityComparer = CreateEqualityComparererMethodInfo.Invoke(null, new []{ typeof(String) });
+			Assert.AreEqual(stringEqualityComparer.GetType(), generatedEqualityComparer.GetType());
+
+
+		}
+
+		public bool checkNotified(ref bool value)
+		{
+			var result = value;
+			value = false;
+			return result;
+		}
+
+		
+	}
+}
\ No newline at end of file
diff --git a/Vecto3GUI2020Test/TestData/asdf.xml b/Vecto3GUI2020Test/TestData/asdf.xml
new file mode 100644
index 0000000000000000000000000000000000000000..70415bde697691075112a4a1c38990fceeee656d
--- /dev/null
+++ b/Vecto3GUI2020Test/TestData/asdf.xml
@@ -0,0 +1,10 @@
+ο»Ώ<?xml version="1.0" encoding="utf-8"?>
+<tns:VectoInputDeclaration xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" schemaVersion="2.8" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD\VectoDeclarationJob.xsd">
+  <v2.0:Vehicle id="TODO_ADDIDENTIFIER" xsi:type="InterimStageInputType">
+    <Manufacturer>adf</Manufacturer>
+    <ManufacturerAddress>asdf</ManufacturerAddress>
+    <VIN>asdf</VIN>
+    <Date>2021-07-01T22:00:00Z</Date>
+    <VehicleDeclarationType>interim</VehicleDeclarationType>
+  </v2.0:Vehicle>
+</tns:VectoInputDeclaration>
\ No newline at end of file
diff --git a/Vecto3GUI2020Test/TestData/bugreports/PrimaryDecimal/primary_heavyBus group41_nonSmart_rounded_decimals.xml b/Vecto3GUI2020Test/TestData/bugreports/PrimaryDecimal/primary_heavyBus group41_nonSmart_rounded_decimals.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5a3f639288f4678d8217f1584a89cc80ec93d47e
--- /dev/null
+++ b/Vecto3GUI2020Test/TestData/bugreports/PrimaryDecimal/primary_heavyBus group41_nonSmart_rounded_decimals.xml	
@@ -0,0 +1,2213 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd">
+	<v2.0:Vehicle id="VEH-PrimaryBus_nonSmart" xsi:type="PrimaryVehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6">
+		<Manufacturer>Generic Truck Manufacturer</Manufacturer>
+		<ManufacturerAddress>Street, ZIP City</ManufacturerAddress>
+		<Model>Generic Model</Model>
+		<VIN>VEH-1234567890_nonSmart</VIN>
+		<Date>2017-02-15T11:00:00Z</Date>
+		<ChassisConfiguration>Bus</ChassisConfiguration>
+		<AxleConfiguration>4x2</AxleConfiguration>
+		<Articulated>false</Articulated>
+		<TechnicalPermissibleMaximumLadenMass>28000</TechnicalPermissibleMaximumLadenMass>
+		<IdlingSpeed>700</IdlingSpeed>
+		<RetarderType>Transmission Output Retarder</RetarderType>
+		<RetarderRatio>1.000</RetarderRatio>
+		<AngledriveType>None</AngledriveType>
+		<ZeroEmissionVehicle>false</ZeroEmissionVehicle>
+		<v2.6:ADAS xsi:type="v2.1:AdvancedDriverAssistantSystemsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1">
+			<EngineStopStart>false</EngineStopStart>
+			<EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop>
+			<EcoRollWithEngineStop>false</EcoRollWithEngineStop>
+			<PredictiveCruiseControl>none</PredictiveCruiseControl>
+		</v2.6:ADAS>
+		<v2.6:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0">
+			<Entry gear="6" maxTorque="1800"/>
+			<Entry gear="1" maxTorque="2500"/>
+		</v2.6:TorqueLimits>
+		<Components xsi:type="PrimaryVehicleComponentsDeclarationType">
+			<v2.6:Engine xsi:type="v2.0:EngineComponentDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0">
+				<v2.0:Data id="ENG-gooZah3D" xsi:type="v2.1:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1">
+					<Manufacturer>Generic Engine Manufacturer</Manufacturer>
+					<Model>Generic primary bus 41 Engine</Model>
+					<CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber>
+					<Date>2017-02-15T11:00:00Z</Date>
+					<AppVersion>VectoEngine x.y</AppVersion>
+					<Displacement>7700</Displacement>
+					<IdlingSpeed>700</IdlingSpeed>
+					<RatedSpeed>2200</RatedSpeed>
+					<RatedPower>220000</RatedPower>
+					<MaxEngineTorque>1100</MaxEngineTorque>
+					<WHTCUrban>1.0600</WHTCUrban>
+					<WHTCRural>1.0300</WHTCRural>
+					<WHTCMotorway>1.0000</WHTCMotorway>
+					<BFColdHot>1.0000</BFColdHot>
+					<CFRegPer>1.0000</CFRegPer>
+					<CFNCV>1.0000</CFNCV>
+					<FuelType>Diesel CI</FuelType>
+					<FuelConsumptionMap>
+						<Entry engineSpeed='600.00' torque='-39.66' fuelConsumption='0.00'/>
+						<Entry engineSpeed='600.00' torque='0.00' fuelConsumption='580.60'/>
+						<Entry engineSpeed='600.00' torque='63.70' fuelConsumption='1457.17'/>
+						<Entry engineSpeed='600.00' torque='91.00' fuelConsumption='1838.29'/>
+						<Entry engineSpeed='600.00' torque='182.01' fuelConsumption='3031.03'/>
+						<Entry engineSpeed='600.00' torque='273.01' fuelConsumption='4233.11'/>
+						<Entry engineSpeed='600.00' torque='364.01' fuelConsumption='5425.95'/>
+						<Entry engineSpeed='600.00' torque='455.01' fuelConsumption='7261.20'/>
+						<Entry engineSpeed='600.00' torque='546.02' fuelConsumption='9123.12'/>
+						<Entry engineSpeed='800.00' torque='-48.83' fuelConsumption='0.00'/>
+						<Entry engineSpeed='800.00' torque='0.00' fuelConsumption='832.00'/>
+						<Entry engineSpeed='800.00' torque='63.70' fuelConsumption='1694.68'/>
+						<Entry engineSpeed='800.00' torque='91.00' fuelConsumption='2154.71'/>
+						<Entry engineSpeed='800.00' torque='182.01' fuelConsumption='3646.28'/>
+						<Entry engineSpeed='800.00' torque='273.01' fuelConsumption='5158.01'/>
+						<Entry engineSpeed='800.00' torque='364.01' fuelConsumption='6675.35'/>
+						<Entry engineSpeed='800.00' torque='455.01' fuelConsumption='8655.27'/>
+						<Entry engineSpeed='800.00' torque='546.02' fuelConsumption='10602.39'/>
+						<Entry engineSpeed='800.00' torque='637.02' fuelConsumption='12534.67'/>
+						<Entry engineSpeed='800.00' torque='728.02' fuelConsumption='14376.07'/>
+						<Entry engineSpeed='800.00' torque='760.78' fuelConsumption='15042.65'/>
+						<Entry engineSpeed='1000.00' torque='-56.44' fuelConsumption='0.00'/>
+						<Entry engineSpeed='1000.00' torque='0.00' fuelConsumption='1083.40'/>
+						<Entry engineSpeed='1000.00' torque='63.70' fuelConsumption='1932.20'/>
+						<Entry engineSpeed='1000.00' torque='91.00' fuelConsumption='2471.14'/>
+						<Entry engineSpeed='1000.00' torque='182.01' fuelConsumption='4261.53'/>
+						<Entry engineSpeed='1000.00' torque='273.01' fuelConsumption='6082.91'/>
+						<Entry engineSpeed='1000.00' torque='364.01' fuelConsumption='7924.76'/>
+						<Entry engineSpeed='1000.00' torque='455.01' fuelConsumption='10049.34'/>
+						<Entry engineSpeed='1000.00' torque='546.02' fuelConsumption='12081.67'/>
+						<Entry engineSpeed='1000.00' torque='637.02' fuelConsumption='14085.16'/>
+						<Entry engineSpeed='1000.00' torque='728.02' fuelConsumption='16091.69'/>
+						<Entry engineSpeed='1000.00' torque='819.02' fuelConsumption='18118.90'/>
+						<Entry engineSpeed='1000.00' torque='910.03' fuelConsumption='20145.67'/>
+						<Entry engineSpeed='1000.00' torque='973.73' fuelConsumption='21556.46'/>
+						<Entry engineSpeed='1200.00' torque='-67.29' fuelConsumption='0.00'/>
+						<Entry engineSpeed='1200.00' torque='0.00' fuelConsumption='1334.80'/>
+						<Entry engineSpeed='1200.00' torque='63.70' fuelConsumption='2169.71'/>
+						<Entry engineSpeed='1200.00' torque='91.00' fuelConsumption='2787.56'/>
+						<Entry engineSpeed='1200.00' torque='182.01' fuelConsumption='4876.78'/>
+						<Entry engineSpeed='1200.00' torque='273.01' fuelConsumption='7007.81'/>
+						<Entry engineSpeed='1200.00' torque='364.01' fuelConsumption='9174.17'/>
+						<Entry engineSpeed='1200.00' torque='455.01' fuelConsumption='11443.41'/>
+						<Entry engineSpeed='1200.00' torque='546.02' fuelConsumption='13560.95'/>
+						<Entry engineSpeed='1200.00' torque='637.02' fuelConsumption='15635.64'/>
+						<Entry engineSpeed='1200.00' torque='728.02' fuelConsumption='17807.32'/>
+						<Entry engineSpeed='1200.00' torque='819.02' fuelConsumption='20010.10'/>
+						<Entry engineSpeed='1200.00' torque='910.03' fuelConsumption='22214.23'/>
+						<Entry engineSpeed='1200.00' torque='1001.03' fuelConsumption='24405.18'/>
+						<Entry engineSpeed='1200.00' torque='1092.03' fuelConsumption='26937.53'/>
+						<Entry engineSpeed='1400.00' torque='-77.58' fuelConsumption='0.00'/>
+						<Entry engineSpeed='1400.00' torque='0.00' fuelConsumption='1768.39'/>
+						<Entry engineSpeed='1400.00' torque='63.70' fuelConsumption='2609.47'/>
+						<Entry engineSpeed='1400.00' torque='91.00' fuelConsumption='3331.51'/>
+						<Entry engineSpeed='1400.00' torque='182.01' fuelConsumption='5738.32'/>
+						<Entry engineSpeed='1400.00' torque='273.01' fuelConsumption='8220.47'/>
+						<Entry engineSpeed='1400.00' torque='364.01' fuelConsumption='10725.58'/>
+						<Entry engineSpeed='1400.00' torque='455.01' fuelConsumption='13167.60'/>
+						<Entry engineSpeed='1400.00' torque='546.02' fuelConsumption='15637.27'/>
+						<Entry engineSpeed='1400.00' torque='637.02' fuelConsumption='18217.82'/>
+						<Entry engineSpeed='1400.00' torque='728.02' fuelConsumption='20778.63'/>
+						<Entry engineSpeed='1400.00' torque='819.02' fuelConsumption='23209.12'/>
+						<Entry engineSpeed='1400.00' torque='910.03' fuelConsumption='25601.87'/>
+						<Entry engineSpeed='1400.00' torque='1001.03' fuelConsumption='28049.44'/>
+						<Entry engineSpeed='1400.00' torque='1092.03' fuelConsumption='30591.88'/>
+						<Entry engineSpeed='1600.00' torque='-87.88' fuelConsumption='0.00'/>
+						<Entry engineSpeed='1600.00' torque='0.00' fuelConsumption='2175.58'/>
+						<Entry engineSpeed='1600.00' torque='63.70' fuelConsumption='3071.70'/>
+						<Entry engineSpeed='1600.00' torque='91.00' fuelConsumption='3886.46'/>
+						<Entry engineSpeed='1600.00' torque='182.01' fuelConsumption='6602.31'/>
+						<Entry engineSpeed='1600.00' torque='273.01' fuelConsumption='9459.95'/>
+						<Entry engineSpeed='1600.00' torque='364.01' fuelConsumption='12314.99'/>
+						<Entry engineSpeed='1600.00' torque='455.01' fuelConsumption='15203.38'/>
+						<Entry engineSpeed='1600.00' torque='546.02' fuelConsumption='18046.03'/>
+						<Entry engineSpeed='1600.00' torque='637.02' fuelConsumption='20894.65'/>
+						<Entry engineSpeed='1600.00' torque='728.02' fuelConsumption='23760.26'/>
+						<Entry engineSpeed='1600.00' torque='819.02' fuelConsumption='26535.17'/>
+						<Entry engineSpeed='1600.00' torque='910.03' fuelConsumption='29166.53'/>
+						<Entry engineSpeed='1600.00' torque='1001.03' fuelConsumption='32054.59'/>
+						<Entry engineSpeed='1600.00' torque='1092.03' fuelConsumption='34958.85'/>
+						<Entry engineSpeed='1800.00' torque='-94.11' fuelConsumption='0.00'/>
+						<Entry engineSpeed='1800.00' torque='0.00' fuelConsumption='2630.39'/>
+						<Entry engineSpeed='1800.00' torque='63.70' fuelConsumption='3626.48'/>
+						<Entry engineSpeed='1800.00' torque='91.00' fuelConsumption='4518.67'/>
+						<Entry engineSpeed='1800.00' torque='182.01' fuelConsumption='7492.63'/>
+						<Entry engineSpeed='1800.00' torque='273.01' fuelConsumption='10723.22'/>
+						<Entry engineSpeed='1800.00' torque='364.01' fuelConsumption='13929.84'/>
+						<Entry engineSpeed='1800.00' torque='455.01' fuelConsumption='17153.22'/>
+						<Entry engineSpeed='1800.00' torque='546.02' fuelConsumption='20263.97'/>
+						<Entry engineSpeed='1800.00' torque='637.02' fuelConsumption='23432.40'/>
+						<Entry engineSpeed='1800.00' torque='728.02' fuelConsumption='26745.26'/>
+						<Entry engineSpeed='1800.00' torque='819.02' fuelConsumption='29986.85'/>
+						<Entry engineSpeed='1800.00' torque='910.03' fuelConsumption='33277.81'/>
+						<Entry engineSpeed='1800.00' torque='1001.03' fuelConsumption='36723.98'/>
+						<Entry engineSpeed='1800.00' torque='1022.87' fuelConsumption='37550.81'/>
+						<Entry engineSpeed='2000.00' torque='-100.76' fuelConsumption='0.00'/>
+						<Entry engineSpeed='2000.00' torque='0.00' fuelConsumption='3181.54'/>
+						<Entry engineSpeed='2000.00' torque='63.70' fuelConsumption='4374.30'/>
+						<Entry engineSpeed='2000.00' torque='91.00' fuelConsumption='5327.75'/>
+						<Entry engineSpeed='2000.00' torque='182.01' fuelConsumption='8505.93'/>
+						<Entry engineSpeed='2000.00' torque='273.01' fuelConsumption='12119.90'/>
+						<Entry engineSpeed='2000.00' torque='364.01' fuelConsumption='15645.31'/>
+						<Entry engineSpeed='2000.00' torque='455.01' fuelConsumption='19238.95'/>
+						<Entry engineSpeed='2000.00' torque='546.02' fuelConsumption='22808.60'/>
+						<Entry engineSpeed='2000.00' torque='637.02' fuelConsumption='26330.44'/>
+						<Entry engineSpeed='2000.00' torque='728.02' fuelConsumption='30061.06'/>
+						<Entry engineSpeed='2000.00' torque='819.02' fuelConsumption='33840.66'/>
+						<Entry engineSpeed='2000.00' torque='910.03' fuelConsumption='37508.22'/>
+						<Entry engineSpeed='2000.00' torque='944.61' fuelConsumption='38855.94'/>
+						<Entry engineSpeed='2200.00' torque='-113.36' fuelConsumption='0.00'/>
+						<Entry engineSpeed='2200.00' torque='0.00' fuelConsumption='3865.04'/>
+						<Entry engineSpeed='2200.00' torque='63.70' fuelConsumption='5036.10'/>
+						<Entry engineSpeed='2200.00' torque='91.00' fuelConsumption='6086.05'/>
+						<Entry engineSpeed='2200.00' torque='182.01' fuelConsumption='9585.86'/>
+						<Entry engineSpeed='2200.00' torque='273.01' fuelConsumption='13516.63'/>
+						<Entry engineSpeed='2200.00' torque='364.01' fuelConsumption='17425.54'/>
+						<Entry engineSpeed='2200.00' torque='455.01' fuelConsumption='21286.40'/>
+						<Entry engineSpeed='2200.00' torque='546.02' fuelConsumption='25325.51'/>
+						<Entry engineSpeed='2200.00' torque='637.02' fuelConsumption='29576.52'/>
+						<Entry engineSpeed='2200.00' torque='728.02' fuelConsumption='33783.46'/>
+						<Entry engineSpeed='2200.00' torque='819.02' fuelConsumption='37868.27'/>
+						<Entry engineSpeed='2200.00' torque='869.07' fuelConsumption='40086.82'/>
+						<Entry engineSpeed='2400.00' torque='-122.60' fuelConsumption='0.00'/>
+						<Entry engineSpeed='2400.00' torque='0.00' fuelConsumption='4500.17'/>
+						<Entry engineSpeed='2400.00' torque='63.70' fuelConsumption='5673.27'/>
+						<Entry engineSpeed='2400.00' torque='91.00' fuelConsumption='6848.54'/>
+						<Entry engineSpeed='2400.00' torque='182.01' fuelConsumption='10766.15'/>
+						<Entry engineSpeed='2400.00' torque='273.01' fuelConsumption='14963.98'/>
+						<Entry engineSpeed='2400.00' torque='364.01' fuelConsumption='19391.00'/>
+						<Entry engineSpeed='2400.00' torque='455.01' fuelConsumption='23957.03'/>
+						<Entry engineSpeed='2400.00' torque='546.02' fuelConsumption='28516.04'/>
+						<Entry engineSpeed='2400.00' torque='637.02' fuelConsumption='33412.68'/>
+						<Entry engineSpeed='2400.00' torque='728.02' fuelConsumption='38318.27'/>
+						<Entry engineSpeed='2400.00' torque='741.99' fuelConsumption='38989.24'/>
+						<Entry engineSpeed='2500.00' torque='-126.66' fuelConsumption='0.00'/>
+						<Entry engineSpeed='2500.00' torque='0.00' fuelConsumption='4857.60'/>
+						<Entry engineSpeed='2500.00' torque='63.70' fuelConsumption='5721.11'/>
+						<Entry engineSpeed='2500.00' torque='91.00' fuelConsumption='7036.25'/>
+						<Entry engineSpeed='2500.00' torque='182.01' fuelConsumption='11272.41'/>
+						<Entry engineSpeed='2500.00' torque='273.01' fuelConsumption='15682.12'/>
+						<Entry engineSpeed='2500.00' torque='364.01' fuelConsumption='20326.33'/>
+						<Entry engineSpeed='2500.00' torque='455.01' fuelConsumption='25430.26'/>
+						<Entry engineSpeed='2500.00' torque='546.02' fuelConsumption='30212.78'/>
+						<Entry engineSpeed='2500.00' torque='646.12' fuelConsumption='35844.80'/>
+						<Entry engineSpeed='2600.00' torque='-132.07' fuelConsumption='0.00'/>
+						<Entry engineSpeed='2600.00' torque='0.00' fuelConsumption='5036.31'/>
+					</FuelConsumptionMap>
+
+					<FullLoadAndDragCurve>
+						<Entry engineSpeed='600.00' maxTorque='546.02' dragTorque='-39.66'/>
+						<Entry engineSpeed='800.00' maxTorque='760.78' dragTorque='-48.83'/>
+						<Entry engineSpeed='1000.00' maxTorque='973.29' dragTorque='-56.44'/>
+						<Entry engineSpeed='1200.00' maxTorque='1092.03' dragTorque='-67.29'/>
+						<Entry engineSpeed='1400.00' maxTorque='1092.03' dragTorque='-77.58'/>
+						<Entry engineSpeed='1600.00' maxTorque='1092.03' dragTorque='-87.88'/>
+						<Entry engineSpeed='1800.00' maxTorque='1022.52' dragTorque='-94.11'/>
+						<Entry engineSpeed='2000.00' maxTorque='944.17' dragTorque='-100.76'/>
+						<Entry engineSpeed='2200.00' maxTorque='868.12' dragTorque='-113.36'/>
+						<Entry engineSpeed='2400.00' maxTorque='741.99' dragTorque='-122.60'/>
+						<Entry engineSpeed='2500.00' maxTorque='647.29' dragTorque='-126.66'/>
+						<Entry engineSpeed='2600.00' maxTorque='0.00' dragTorque='-132.07'/>
+					</FullLoadAndDragCurve>
+				</v2.0:Data>
+				<Signature>
+					<di:Reference URI="#ENG-gooZah3D">
+						<di:Transforms>
+							<di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/>
+							<di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
+						</di:Transforms>
+						<di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
+						<di:DigestValue>sNtMe9udO39TyKXzgwYEpVKImWizFalaBVqq3jLktuo=</di:DigestValue>
+					</di:Reference>
+				</Signature>
+			</v2.6:Engine>
+			<v2.6:Gearbox xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="GearboxComponentDeclarationType">
+				<Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType">
+					<Manufacturer>Generic Gearbox Manufacturer</Manufacturer>
+					<Model>AT 6 Gear</Model>
+					<CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber>
+					<Date>2017-01-11T11:00:00Z</Date>
+					<AppVersion>3.0.1</AppVersion>
+					<TransmissionType>APT-S</TransmissionType>
+					<MainCertificationMethod>Standard values</MainCertificationMethod>
+					<Gears xsi:type="GearsDeclarationType">
+						<Gear number="1">
+							<Ratio>3.364</Ratio>
+							<MaxTorque>1900</MaxTorque>
+							<MaxSpeed>2500</MaxSpeed>
+							<TorqueLossMap>
+								<Entry inputSpeed='0.00' inputTorque='-200.00' torqueLoss='56.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-400.00' torqueLoss='64.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-600.00' torqueLoss='72.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-900.00' torqueLoss='84.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-1200.00' torqueLoss='96.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-1600.00' torqueLoss='112.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-2000.00' torqueLoss='128.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-2500.00' torqueLoss='148.00'/>
+								<Entry inputSpeed='0.00' inputTorque='0.00' torqueLoss='48.00'/>
+								<Entry inputSpeed='0.00' inputTorque='200.00' torqueLoss='56.00'/>
+								<Entry inputSpeed='0.00' inputTorque='400.00' torqueLoss='64.00'/>
+								<Entry inputSpeed='0.00' inputTorque='600.00' torqueLoss='72.00'/>
+								<Entry inputSpeed='0.00' inputTorque='900.00' torqueLoss='84.00'/>
+								<Entry inputSpeed='0.00' inputTorque='1200.00' torqueLoss='96.00'/>
+								<Entry inputSpeed='0.00' inputTorque='1600.00' torqueLoss='112.00'/>
+								<Entry inputSpeed='0.00' inputTorque='2000.00' torqueLoss='128.00'/>
+								<Entry inputSpeed='0.00' inputTorque='2500.00' torqueLoss='148.00'/>
+								<Entry inputSpeed='600.00' inputTorque='0.00' torqueLoss='48.00'/>
+								<Entry inputSpeed='600.00' inputTorque='200.00' torqueLoss='56.00'/>
+								<Entry inputSpeed='600.00' inputTorque='400.00' torqueLoss='64.00'/>
+								<Entry inputSpeed='600.00' inputTorque='600.00' torqueLoss='72.00'/>
+								<Entry inputSpeed='600.00' inputTorque='900.00' torqueLoss='84.00'/>
+								<Entry inputSpeed='600.00' inputTorque='1200.00' torqueLoss='96.00'/>
+								<Entry inputSpeed='600.00' inputTorque='1600.00' torqueLoss='112.00'/>
+								<Entry inputSpeed='600.00' inputTorque='2000.00' torqueLoss='128.00'/>
+								<Entry inputSpeed='600.00' inputTorque='2500.00' torqueLoss='148.00'/>
+								<Entry inputSpeed='900.00' inputTorque='0.00' torqueLoss='57.00'/>
+								<Entry inputSpeed='900.00' inputTorque='200.00' torqueLoss='65.00'/>
+								<Entry inputSpeed='900.00' inputTorque='400.00' torqueLoss='73.00'/>
+								<Entry inputSpeed='900.00' inputTorque='600.00' torqueLoss='81.00'/>
+								<Entry inputSpeed='900.00' inputTorque='900.00' torqueLoss='93.00'/>
+								<Entry inputSpeed='900.00' inputTorque='1200.00' torqueLoss='105.00'/>
+								<Entry inputSpeed='900.00' inputTorque='1600.00' torqueLoss='121.00'/>
+								<Entry inputSpeed='900.00' inputTorque='2000.00' torqueLoss='137.00'/>
+								<Entry inputSpeed='900.00' inputTorque='2500.00' torqueLoss='157.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='0.00' torqueLoss='66.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='200.00' torqueLoss='74.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='400.00' torqueLoss='82.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='600.00' torqueLoss='90.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='900.00' torqueLoss='102.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='1200.00' torqueLoss='114.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='1600.00' torqueLoss='130.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='2000.00' torqueLoss='146.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='2500.00' torqueLoss='166.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='0.00' torqueLoss='78.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='200.00' torqueLoss='86.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='400.00' torqueLoss='94.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='600.00' torqueLoss='102.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='900.00' torqueLoss='114.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='1200.00' torqueLoss='126.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='1600.00' torqueLoss='142.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='2000.00' torqueLoss='158.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='2500.00' torqueLoss='178.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='0.00' torqueLoss='90.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='200.00' torqueLoss='98.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='400.00' torqueLoss='106.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='600.00' torqueLoss='114.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='900.00' torqueLoss='126.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='1200.00' torqueLoss='138.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='1600.00' torqueLoss='154.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='2000.00' torqueLoss='170.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='2500.00' torqueLoss='190.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='0.00' torqueLoss='105.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='200.00' torqueLoss='113.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='400.00' torqueLoss='121.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='600.00' torqueLoss='129.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='900.00' torqueLoss='141.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='1200.00' torqueLoss='153.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='1600.00' torqueLoss='169.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='2000.00' torqueLoss='185.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='2500.00' torqueLoss='205.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='0.00' torqueLoss='120.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='200.00' torqueLoss='128.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='400.00' torqueLoss='136.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='600.00' torqueLoss='144.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='900.00' torqueLoss='156.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='1200.00' torqueLoss='168.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='1600.00' torqueLoss='184.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='2000.00' torqueLoss='200.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='2500.00' torqueLoss='220.00'/>
+								<Entry inputSpeed='600.00' inputTorque='0.00' torqueLoss='48.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-200.00' torqueLoss='56.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-400.00' torqueLoss='64.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-600.00' torqueLoss='72.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-900.00' torqueLoss='84.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-1200.00' torqueLoss='96.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-1600.00' torqueLoss='112.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-2000.00' torqueLoss='128.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-2500.00' torqueLoss='148.00'/>
+								<Entry inputSpeed='900.00' inputTorque='0.00' torqueLoss='57.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-200.00' torqueLoss='65.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-400.00' torqueLoss='73.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-600.00' torqueLoss='81.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-900.00' torqueLoss='93.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-1200.00' torqueLoss='105.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-1600.00' torqueLoss='121.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-2000.00' torqueLoss='137.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-2500.00' torqueLoss='157.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='0.00' torqueLoss='66.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-200.00' torqueLoss='74.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-400.00' torqueLoss='82.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-600.00' torqueLoss='90.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-900.00' torqueLoss='102.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-1200.00' torqueLoss='114.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-1600.00' torqueLoss='130.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-2000.00' torqueLoss='146.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-2500.00' torqueLoss='166.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='0.00' torqueLoss='78.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-200.00' torqueLoss='86.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-400.00' torqueLoss='94.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-600.00' torqueLoss='102.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-900.00' torqueLoss='114.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-1200.00' torqueLoss='126.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-1600.00' torqueLoss='142.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-2000.00' torqueLoss='158.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-2500.00' torqueLoss='178.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='0.00' torqueLoss='90.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-200.00' torqueLoss='98.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-400.00' torqueLoss='106.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-600.00' torqueLoss='114.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-900.00' torqueLoss='126.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-1200.00' torqueLoss='138.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-1600.00' torqueLoss='154.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-2000.00' torqueLoss='170.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-2500.00' torqueLoss='190.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='0.00' torqueLoss='105.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-200.00' torqueLoss='113.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-400.00' torqueLoss='121.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-600.00' torqueLoss='129.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-900.00' torqueLoss='141.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-1200.00' torqueLoss='153.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-1600.00' torqueLoss='169.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-2000.00' torqueLoss='185.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-2500.00' torqueLoss='205.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='0.00' torqueLoss='120.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-200.00' torqueLoss='128.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-400.00' torqueLoss='136.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-600.00' torqueLoss='144.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-900.00' torqueLoss='156.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-1200.00' torqueLoss='168.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-1600.00' torqueLoss='184.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-2000.00' torqueLoss='200.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-2500.00' torqueLoss='220.00'/>
+								<Entry inputSpeed='1300.00' inputTorque='2610.00' torqueLoss='66.00'/>
+								<Entry inputSpeed='1300.00' inputTorque='2842.00' torqueLoss='71.00'/>
+								<Entry inputSpeed='1500.00' inputTorque='-812.00' torqueLoss='46.00'/>
+								<Entry inputSpeed='1500.00' inputTorque='-348.00' torqueLoss='37.00'/>
+								<Entry inputSpeed='1500.00' inputTorque='0.00' torqueLoss='13.00'/>
+								<Entry inputSpeed='1500.00' inputTorque='58.00' torqueLoss='16.00'/>
+								<Entry inputSpeed='1500.00' inputTorque='290.00' torqueLoss='21.00'/>
+								<Entry inputSpeed='1500.00' inputTorque='522.00' torqueLoss='26.00'/>
+								<Entry inputSpeed='1500.00' inputTorque='754.00' torqueLoss='30.00'/>
+								<Entry inputSpeed='1500.00' inputTorque='986.00' torqueLoss='35.00'/>
+								<Entry inputSpeed='1500.00' inputTorque='1218.00' torqueLoss='39.00'/>
+								<Entry inputSpeed='1500.00' inputTorque='1450.00' torqueLoss='44.00'/>
+								<Entry inputSpeed='1500.00' inputTorque='1682.00' torqueLoss='49.00'/>
+								<Entry inputSpeed='1500.00' inputTorque='1914.00' torqueLoss='53.00'/>
+								<Entry inputSpeed='1500.00' inputTorque='2146.00' torqueLoss='58.00'/>
+								<Entry inputSpeed='1500.00' inputTorque='2378.00' torqueLoss='63.00'/>
+								<Entry inputSpeed='1500.00' inputTorque='2610.00' torqueLoss='67.00'/>
+								<Entry inputSpeed='1500.00' inputTorque='2842.00' torqueLoss='72.00'/>
+								<Entry inputSpeed='1700.00' inputTorque='-812.00' torqueLoss='49.00'/>
+								<Entry inputSpeed='1700.00' inputTorque='-348.00' torqueLoss='39.00'/>
+								<Entry inputSpeed='1700.00' inputTorque='0.00' torqueLoss='14.00'/>
+								<Entry inputSpeed='1700.00' inputTorque='58.00' torqueLoss='17.00'/>
+								<Entry inputSpeed='1700.00' inputTorque='290.00' torqueLoss='22.00'/>
+								<Entry inputSpeed='1700.00' inputTorque='522.00' torqueLoss='27.00'/>
+								<Entry inputSpeed='1700.00' inputTorque='754.00' torqueLoss='31.00'/>
+								<Entry inputSpeed='1700.00' inputTorque='986.00' torqueLoss='36.00'/>
+								<Entry inputSpeed='1700.00' inputTorque='1218.00' torqueLoss='41.00'/>
+								<Entry inputSpeed='1700.00' inputTorque='1450.00' torqueLoss='45.00'/>
+								<Entry inputSpeed='1700.00' inputTorque='1682.00' torqueLoss='50.00'/>
+								<Entry inputSpeed='1700.00' inputTorque='1914.00' torqueLoss='55.00'/>
+								<Entry inputSpeed='1700.00' inputTorque='2146.00' torqueLoss='59.00'/>
+								<Entry inputSpeed='1700.00' inputTorque='2378.00' torqueLoss='64.00'/>
+								<Entry inputSpeed='1700.00' inputTorque='2610.00' torqueLoss='68.00'/>
+								<Entry inputSpeed='1700.00' inputTorque='2842.00' torqueLoss='73.00'/>
+								<Entry inputSpeed='1900.00' inputTorque='-812.00' torqueLoss='51.00'/>
+								<Entry inputSpeed='1900.00' inputTorque='-348.00' torqueLoss='42.00'/>
+								<Entry inputSpeed='1900.00' inputTorque='0.00' torqueLoss='15.00'/>
+								<Entry inputSpeed='1900.00' inputTorque='58.00' torqueLoss='19.00'/>
+								<Entry inputSpeed='1900.00' inputTorque='290.00' torqueLoss='23.00'/>
+								<Entry inputSpeed='1900.00' inputTorque='522.00' torqueLoss='28.00'/>
+								<Entry inputSpeed='1900.00' inputTorque='754.00' torqueLoss='32.00'/>
+								<Entry inputSpeed='1900.00' inputTorque='986.00' torqueLoss='37.00'/>
+								<Entry inputSpeed='1900.00' inputTorque='1218.00' torqueLoss='42.00'/>
+								<Entry inputSpeed='1900.00' inputTorque='1450.00' torqueLoss='46.00'/>
+								<Entry inputSpeed='1900.00' inputTorque='1682.00' torqueLoss='51.00'/>
+								<Entry inputSpeed='1900.00' inputTorque='1914.00' torqueLoss='56.00'/>
+								<Entry inputSpeed='1900.00' inputTorque='2146.00' torqueLoss='60.00'/>
+								<Entry inputSpeed='1900.00' inputTorque='2378.00' torqueLoss='65.00'/>
+								<Entry inputSpeed='1900.00' inputTorque='2610.00' torqueLoss='70.00'/>
+								<Entry inputSpeed='1900.00' inputTorque='2842.00' torqueLoss='74.00'/>
+								<Entry inputSpeed='2100.00' inputTorque='-812.00' torqueLoss='53.00'/>
+								<Entry inputSpeed='2100.00' inputTorque='-348.00' torqueLoss='44.00'/>
+								<Entry inputSpeed='2100.00' inputTorque='0.00' torqueLoss='16.00'/>
+								<Entry inputSpeed='2100.00' inputTorque='58.00' torqueLoss='20.00'/>
+								<Entry inputSpeed='2100.00' inputTorque='290.00' torqueLoss='24.00'/>
+								<Entry inputSpeed='2100.00' inputTorque='522.00' torqueLoss='29.00'/>
+								<Entry inputSpeed='2100.00' inputTorque='754.00' torqueLoss='34.00'/>
+								<Entry inputSpeed='2100.00' inputTorque='986.00' torqueLoss='38.00'/>
+								<Entry inputSpeed='2100.00' inputTorque='1218.00' torqueLoss='43.00'/>
+								<Entry inputSpeed='2100.00' inputTorque='1450.00' torqueLoss='48.00'/>
+								<Entry inputSpeed='2100.00' inputTorque='1682.00' torqueLoss='52.00'/>
+								<Entry inputSpeed='2100.00' inputTorque='1914.00' torqueLoss='57.00'/>
+								<Entry inputSpeed='2100.00' inputTorque='2146.00' torqueLoss='61.00'/>
+								<Entry inputSpeed='2100.00' inputTorque='2378.00' torqueLoss='66.00'/>
+								<Entry inputSpeed='2100.00' inputTorque='2610.00' torqueLoss='71.00'/>
+								<Entry inputSpeed='2100.00' inputTorque='2842.00' torqueLoss='75.00'/>
+							</TorqueLossMap>
+						</Gear>
+						<Gear number="2">
+							<Ratio>1.909</Ratio>
+							<MaxTorque>1900</MaxTorque>
+							<MaxSpeed>2500</MaxSpeed>
+							<TorqueLossMap>
+								<Entry inputSpeed='0.00' inputTorque='-200.00' torqueLoss='56.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-400.00' torqueLoss='64.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-600.00' torqueLoss='72.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-900.00' torqueLoss='84.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-1200.00' torqueLoss='96.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-1600.00' torqueLoss='112.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-2000.00' torqueLoss='128.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-2500.00' torqueLoss='148.00'/>
+								<Entry inputSpeed='0.00' inputTorque='0.00' torqueLoss='48.00'/>
+								<Entry inputSpeed='0.00' inputTorque='200.00' torqueLoss='56.00'/>
+								<Entry inputSpeed='0.00' inputTorque='400.00' torqueLoss='64.00'/>
+								<Entry inputSpeed='0.00' inputTorque='600.00' torqueLoss='72.00'/>
+								<Entry inputSpeed='0.00' inputTorque='900.00' torqueLoss='84.00'/>
+								<Entry inputSpeed='0.00' inputTorque='1200.00' torqueLoss='96.00'/>
+								<Entry inputSpeed='0.00' inputTorque='1600.00' torqueLoss='112.00'/>
+								<Entry inputSpeed='0.00' inputTorque='2000.00' torqueLoss='128.00'/>
+								<Entry inputSpeed='0.00' inputTorque='2500.00' torqueLoss='148.00'/>
+								<Entry inputSpeed='600.00' inputTorque='0.00' torqueLoss='48.00'/>
+								<Entry inputSpeed='600.00' inputTorque='200.00' torqueLoss='56.00'/>
+								<Entry inputSpeed='600.00' inputTorque='400.00' torqueLoss='64.00'/>
+								<Entry inputSpeed='600.00' inputTorque='600.00' torqueLoss='72.00'/>
+								<Entry inputSpeed='600.00' inputTorque='900.00' torqueLoss='84.00'/>
+								<Entry inputSpeed='600.00' inputTorque='1200.00' torqueLoss='96.00'/>
+								<Entry inputSpeed='600.00' inputTorque='1600.00' torqueLoss='112.00'/>
+								<Entry inputSpeed='600.00' inputTorque='2000.00' torqueLoss='128.00'/>
+								<Entry inputSpeed='600.00' inputTorque='2500.00' torqueLoss='148.00'/>
+								<Entry inputSpeed='900.00' inputTorque='0.00' torqueLoss='57.00'/>
+								<Entry inputSpeed='900.00' inputTorque='200.00' torqueLoss='65.00'/>
+								<Entry inputSpeed='900.00' inputTorque='400.00' torqueLoss='73.00'/>
+								<Entry inputSpeed='900.00' inputTorque='600.00' torqueLoss='81.00'/>
+								<Entry inputSpeed='900.00' inputTorque='900.00' torqueLoss='93.00'/>
+								<Entry inputSpeed='900.00' inputTorque='1200.00' torqueLoss='105.00'/>
+								<Entry inputSpeed='900.00' inputTorque='1600.00' torqueLoss='121.00'/>
+								<Entry inputSpeed='900.00' inputTorque='2000.00' torqueLoss='137.00'/>
+								<Entry inputSpeed='900.00' inputTorque='2500.00' torqueLoss='157.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='0.00' torqueLoss='66.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='200.00' torqueLoss='74.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='400.00' torqueLoss='82.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='600.00' torqueLoss='90.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='900.00' torqueLoss='102.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='1200.00' torqueLoss='114.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='1600.00' torqueLoss='130.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='2000.00' torqueLoss='146.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='2500.00' torqueLoss='166.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='0.00' torqueLoss='78.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='200.00' torqueLoss='86.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='400.00' torqueLoss='94.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='600.00' torqueLoss='102.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='900.00' torqueLoss='114.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='1200.00' torqueLoss='126.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='1600.00' torqueLoss='142.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='2000.00' torqueLoss='158.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='2500.00' torqueLoss='178.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='0.00' torqueLoss='90.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='200.00' torqueLoss='98.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='400.00' torqueLoss='106.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='600.00' torqueLoss='114.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='900.00' torqueLoss='126.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='1200.00' torqueLoss='138.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='1600.00' torqueLoss='154.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='2000.00' torqueLoss='170.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='2500.00' torqueLoss='190.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='0.00' torqueLoss='105.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='200.00' torqueLoss='113.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='400.00' torqueLoss='121.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='600.00' torqueLoss='129.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='900.00' torqueLoss='141.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='1200.00' torqueLoss='153.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='1600.00' torqueLoss='169.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='2000.00' torqueLoss='185.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='2500.00' torqueLoss='205.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='0.00' torqueLoss='120.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='200.00' torqueLoss='128.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='400.00' torqueLoss='136.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='600.00' torqueLoss='144.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='900.00' torqueLoss='156.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='1200.00' torqueLoss='168.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='1600.00' torqueLoss='184.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='2000.00' torqueLoss='200.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='2500.00' torqueLoss='220.00'/>
+								<Entry inputSpeed='600.00' inputTorque='0.00' torqueLoss='48.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-200.00' torqueLoss='56.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-400.00' torqueLoss='64.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-600.00' torqueLoss='72.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-900.00' torqueLoss='84.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-1200.00' torqueLoss='96.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-1600.00' torqueLoss='112.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-2000.00' torqueLoss='128.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-2500.00' torqueLoss='148.00'/>
+								<Entry inputSpeed='900.00' inputTorque='0.00' torqueLoss='57.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-200.00' torqueLoss='65.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-400.00' torqueLoss='73.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-600.00' torqueLoss='81.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-900.00' torqueLoss='93.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-1200.00' torqueLoss='105.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-1600.00' torqueLoss='121.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-2000.00' torqueLoss='137.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-2500.00' torqueLoss='157.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='0.00' torqueLoss='66.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-200.00' torqueLoss='74.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-400.00' torqueLoss='82.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-600.00' torqueLoss='90.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-900.00' torqueLoss='102.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-1200.00' torqueLoss='114.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-1600.00' torqueLoss='130.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-2000.00' torqueLoss='146.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-2500.00' torqueLoss='166.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='0.00' torqueLoss='78.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-200.00' torqueLoss='86.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-400.00' torqueLoss='94.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-600.00' torqueLoss='102.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-900.00' torqueLoss='114.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-1200.00' torqueLoss='126.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-1600.00' torqueLoss='142.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-2000.00' torqueLoss='158.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-2500.00' torqueLoss='178.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='0.00' torqueLoss='90.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-200.00' torqueLoss='98.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-400.00' torqueLoss='106.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-600.00' torqueLoss='114.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-900.00' torqueLoss='126.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-1200.00' torqueLoss='138.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-1600.00' torqueLoss='154.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-2000.00' torqueLoss='170.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-2500.00' torqueLoss='190.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='0.00' torqueLoss='105.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-200.00' torqueLoss='113.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-400.00' torqueLoss='121.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-600.00' torqueLoss='129.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-900.00' torqueLoss='141.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-1200.00' torqueLoss='153.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-1600.00' torqueLoss='169.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-2000.00' torqueLoss='185.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-2500.00' torqueLoss='205.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='0.00' torqueLoss='120.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-200.00' torqueLoss='128.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-400.00' torqueLoss='136.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-600.00' torqueLoss='144.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-900.00' torqueLoss='156.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-1200.00' torqueLoss='168.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-1600.00' torqueLoss='184.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-2000.00' torqueLoss='200.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-2500.00' torqueLoss='220.00'/>
+							</TorqueLossMap>
+						</Gear>
+						<Gear number="3">
+							<Ratio>1.421</Ratio>
+							<MaxSpeed>2500</MaxSpeed>
+							<TorqueLossMap>
+								<Entry inputSpeed='0.00' inputTorque='-200.00' torqueLoss='56.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-400.00' torqueLoss='64.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-600.00' torqueLoss='72.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-900.00' torqueLoss='84.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-1200.00' torqueLoss='96.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-1600.00' torqueLoss='112.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-2000.00' torqueLoss='128.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-2500.00' torqueLoss='148.00'/>
+								<Entry inputSpeed='0.00' inputTorque='0.00' torqueLoss='48.00'/>
+								<Entry inputSpeed='0.00' inputTorque='200.00' torqueLoss='56.00'/>
+								<Entry inputSpeed='0.00' inputTorque='400.00' torqueLoss='64.00'/>
+								<Entry inputSpeed='0.00' inputTorque='600.00' torqueLoss='72.00'/>
+								<Entry inputSpeed='0.00' inputTorque='900.00' torqueLoss='84.00'/>
+								<Entry inputSpeed='0.00' inputTorque='1200.00' torqueLoss='96.00'/>
+								<Entry inputSpeed='0.00' inputTorque='1600.00' torqueLoss='112.00'/>
+								<Entry inputSpeed='0.00' inputTorque='2000.00' torqueLoss='128.00'/>
+								<Entry inputSpeed='0.00' inputTorque='2500.00' torqueLoss='148.00'/>
+								<Entry inputSpeed='600.00' inputTorque='0.00' torqueLoss='48.00'/>
+								<Entry inputSpeed='600.00' inputTorque='200.00' torqueLoss='56.00'/>
+								<Entry inputSpeed='600.00' inputTorque='400.00' torqueLoss='64.00'/>
+								<Entry inputSpeed='600.00' inputTorque='600.00' torqueLoss='72.00'/>
+								<Entry inputSpeed='600.00' inputTorque='900.00' torqueLoss='84.00'/>
+								<Entry inputSpeed='600.00' inputTorque='1200.00' torqueLoss='96.00'/>
+								<Entry inputSpeed='600.00' inputTorque='1600.00' torqueLoss='112.00'/>
+								<Entry inputSpeed='600.00' inputTorque='2000.00' torqueLoss='128.00'/>
+								<Entry inputSpeed='600.00' inputTorque='2500.00' torqueLoss='148.00'/>
+								<Entry inputSpeed='900.00' inputTorque='0.00' torqueLoss='57.00'/>
+								<Entry inputSpeed='900.00' inputTorque='200.00' torqueLoss='65.00'/>
+								<Entry inputSpeed='900.00' inputTorque='400.00' torqueLoss='73.00'/>
+								<Entry inputSpeed='900.00' inputTorque='600.00' torqueLoss='81.00'/>
+								<Entry inputSpeed='900.00' inputTorque='900.00' torqueLoss='93.00'/>
+								<Entry inputSpeed='900.00' inputTorque='1200.00' torqueLoss='105.00'/>
+								<Entry inputSpeed='900.00' inputTorque='1600.00' torqueLoss='121.00'/>
+								<Entry inputSpeed='900.00' inputTorque='2000.00' torqueLoss='137.00'/>
+								<Entry inputSpeed='900.00' inputTorque='2500.00' torqueLoss='157.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='0.00' torqueLoss='66.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='200.00' torqueLoss='74.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='400.00' torqueLoss='82.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='600.00' torqueLoss='90.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='900.00' torqueLoss='102.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='1200.00' torqueLoss='114.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='1600.00' torqueLoss='130.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='2000.00' torqueLoss='146.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='2500.00' torqueLoss='166.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='0.00' torqueLoss='78.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='200.00' torqueLoss='86.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='400.00' torqueLoss='94.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='600.00' torqueLoss='102.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='900.00' torqueLoss='114.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='1200.00' torqueLoss='126.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='1600.00' torqueLoss='142.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='2000.00' torqueLoss='158.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='2500.00' torqueLoss='178.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='0.00' torqueLoss='90.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='200.00' torqueLoss='98.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='400.00' torqueLoss='106.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='600.00' torqueLoss='114.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='900.00' torqueLoss='126.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='1200.00' torqueLoss='138.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='1600.00' torqueLoss='154.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='2000.00' torqueLoss='170.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='2500.00' torqueLoss='190.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='0.00' torqueLoss='105.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='200.00' torqueLoss='113.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='400.00' torqueLoss='121.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='600.00' torqueLoss='129.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='900.00' torqueLoss='141.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='1200.00' torqueLoss='153.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='1600.00' torqueLoss='169.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='2000.00' torqueLoss='185.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='2500.00' torqueLoss='205.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='0.00' torqueLoss='120.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='200.00' torqueLoss='128.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='400.00' torqueLoss='136.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='600.00' torqueLoss='144.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='900.00' torqueLoss='156.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='1200.00' torqueLoss='168.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='1600.00' torqueLoss='184.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='2000.00' torqueLoss='200.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='2500.00' torqueLoss='220.00'/>
+								<Entry inputSpeed='600.00' inputTorque='0.00' torqueLoss='48.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-200.00' torqueLoss='56.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-400.00' torqueLoss='64.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-600.00' torqueLoss='72.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-900.00' torqueLoss='84.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-1200.00' torqueLoss='96.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-1600.00' torqueLoss='112.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-2000.00' torqueLoss='128.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-2500.00' torqueLoss='148.00'/>
+								<Entry inputSpeed='900.00' inputTorque='0.00' torqueLoss='57.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-200.00' torqueLoss='65.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-400.00' torqueLoss='73.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-600.00' torqueLoss='81.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-900.00' torqueLoss='93.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-1200.00' torqueLoss='105.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-1600.00' torqueLoss='121.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-2000.00' torqueLoss='137.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-2500.00' torqueLoss='157.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='0.00' torqueLoss='66.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-200.00' torqueLoss='74.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-400.00' torqueLoss='82.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-600.00' torqueLoss='90.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-900.00' torqueLoss='102.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-1200.00' torqueLoss='114.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-1600.00' torqueLoss='130.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-2000.00' torqueLoss='146.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-2500.00' torqueLoss='166.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='0.00' torqueLoss='78.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-200.00' torqueLoss='86.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-400.00' torqueLoss='94.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-600.00' torqueLoss='102.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-900.00' torqueLoss='114.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-1200.00' torqueLoss='126.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-1600.00' torqueLoss='142.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-2000.00' torqueLoss='158.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-2500.00' torqueLoss='178.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='0.00' torqueLoss='90.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-200.00' torqueLoss='98.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-400.00' torqueLoss='106.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-600.00' torqueLoss='114.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-900.00' torqueLoss='126.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-1200.00' torqueLoss='138.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-1600.00' torqueLoss='154.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-2000.00' torqueLoss='170.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-2500.00' torqueLoss='190.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='0.00' torqueLoss='105.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-200.00' torqueLoss='113.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-400.00' torqueLoss='121.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-600.00' torqueLoss='129.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-900.00' torqueLoss='141.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-1200.00' torqueLoss='153.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-1600.00' torqueLoss='169.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-2000.00' torqueLoss='185.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-2500.00' torqueLoss='205.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='0.00' torqueLoss='120.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-200.00' torqueLoss='128.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-400.00' torqueLoss='136.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-600.00' torqueLoss='144.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-900.00' torqueLoss='156.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-1200.00' torqueLoss='168.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-1600.00' torqueLoss='184.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-2000.00' torqueLoss='200.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-2500.00' torqueLoss='220.00'/>
+							</TorqueLossMap>
+						</Gear>
+						<Gear number="4">
+							<Ratio>1.000</Ratio>
+							<MaxSpeed>2500</MaxSpeed>
+							<TorqueLossMap>
+								<Entry inputSpeed='0.00' inputTorque='-200.00' torqueLoss='56.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-400.00' torqueLoss='64.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-600.00' torqueLoss='72.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-900.00' torqueLoss='84.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-1200.00' torqueLoss='96.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-1600.00' torqueLoss='112.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-2000.00' torqueLoss='128.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-2500.00' torqueLoss='148.00'/>
+								<Entry inputSpeed='0.00' inputTorque='0.00' torqueLoss='48.00'/>
+								<Entry inputSpeed='0.00' inputTorque='200.00' torqueLoss='56.00'/>
+								<Entry inputSpeed='0.00' inputTorque='400.00' torqueLoss='64.00'/>
+								<Entry inputSpeed='0.00' inputTorque='600.00' torqueLoss='72.00'/>
+								<Entry inputSpeed='0.00' inputTorque='900.00' torqueLoss='84.00'/>
+								<Entry inputSpeed='0.00' inputTorque='1200.00' torqueLoss='96.00'/>
+								<Entry inputSpeed='0.00' inputTorque='1600.00' torqueLoss='112.00'/>
+								<Entry inputSpeed='0.00' inputTorque='2000.00' torqueLoss='128.00'/>
+								<Entry inputSpeed='0.00' inputTorque='2500.00' torqueLoss='148.00'/>
+								<Entry inputSpeed='600.00' inputTorque='0.00' torqueLoss='48.00'/>
+								<Entry inputSpeed='600.00' inputTorque='200.00' torqueLoss='50.00'/>
+								<Entry inputSpeed='600.00' inputTorque='400.00' torqueLoss='52.00'/>
+								<Entry inputSpeed='600.00' inputTorque='600.00' torqueLoss='54.00'/>
+								<Entry inputSpeed='600.00' inputTorque='900.00' torqueLoss='57.00'/>
+								<Entry inputSpeed='600.00' inputTorque='1200.00' torqueLoss='60.00'/>
+								<Entry inputSpeed='600.00' inputTorque='1600.00' torqueLoss='64.00'/>
+								<Entry inputSpeed='600.00' inputTorque='2000.00' torqueLoss='68.00'/>
+								<Entry inputSpeed='600.00' inputTorque='2500.00' torqueLoss='73.00'/>
+								<Entry inputSpeed='900.00' inputTorque='0.00' torqueLoss='57.00'/>
+								<Entry inputSpeed='900.00' inputTorque='200.00' torqueLoss='59.00'/>
+								<Entry inputSpeed='900.00' inputTorque='400.00' torqueLoss='61.00'/>
+								<Entry inputSpeed='900.00' inputTorque='600.00' torqueLoss='63.00'/>
+								<Entry inputSpeed='900.00' inputTorque='900.00' torqueLoss='66.00'/>
+								<Entry inputSpeed='900.00' inputTorque='1200.00' torqueLoss='69.00'/>
+								<Entry inputSpeed='900.00' inputTorque='1600.00' torqueLoss='73.00'/>
+								<Entry inputSpeed='900.00' inputTorque='2000.00' torqueLoss='77.00'/>
+								<Entry inputSpeed='900.00' inputTorque='2500.00' torqueLoss='82.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='0.00' torqueLoss='66.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='200.00' torqueLoss='68.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='400.00' torqueLoss='70.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='600.00' torqueLoss='72.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='900.00' torqueLoss='75.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='1200.00' torqueLoss='78.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='1600.00' torqueLoss='82.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='2000.00' torqueLoss='86.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='2500.00' torqueLoss='91.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='0.00' torqueLoss='78.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='200.00' torqueLoss='80.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='400.00' torqueLoss='82.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='600.00' torqueLoss='84.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='900.00' torqueLoss='87.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='1200.00' torqueLoss='90.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='1600.00' torqueLoss='94.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='2000.00' torqueLoss='98.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='2500.00' torqueLoss='103.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='0.00' torqueLoss='90.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='200.00' torqueLoss='92.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='400.00' torqueLoss='94.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='600.00' torqueLoss='96.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='900.00' torqueLoss='99.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='1200.00' torqueLoss='102.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='1600.00' torqueLoss='106.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='2000.00' torqueLoss='110.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='2500.00' torqueLoss='115.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='0.00' torqueLoss='105.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='200.00' torqueLoss='107.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='400.00' torqueLoss='109.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='600.00' torqueLoss='111.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='900.00' torqueLoss='114.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='1200.00' torqueLoss='117.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='1600.00' torqueLoss='121.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='2000.00' torqueLoss='125.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='2500.00' torqueLoss='130.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='0.00' torqueLoss='120.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='200.00' torqueLoss='122.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='400.00' torqueLoss='124.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='600.00' torqueLoss='126.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='900.00' torqueLoss='129.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='1200.00' torqueLoss='132.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='1600.00' torqueLoss='136.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='2000.00' torqueLoss='140.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='2500.00' torqueLoss='145.00'/>
+								<Entry inputSpeed='600.00' inputTorque='0.00' torqueLoss='48.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-200.00' torqueLoss='50.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-400.00' torqueLoss='52.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-600.00' torqueLoss='54.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-900.00' torqueLoss='57.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-1200.00' torqueLoss='60.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-1600.00' torqueLoss='64.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-2000.00' torqueLoss='68.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-2500.00' torqueLoss='73.00'/>
+								<Entry inputSpeed='900.00' inputTorque='0.00' torqueLoss='57.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-200.00' torqueLoss='59.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-400.00' torqueLoss='61.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-600.00' torqueLoss='63.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-900.00' torqueLoss='66.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-1200.00' torqueLoss='69.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-1600.00' torqueLoss='73.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-2000.00' torqueLoss='77.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-2500.00' torqueLoss='82.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='0.00' torqueLoss='66.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-200.00' torqueLoss='68.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-400.00' torqueLoss='70.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-600.00' torqueLoss='72.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-900.00' torqueLoss='75.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-1200.00' torqueLoss='78.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-1600.00' torqueLoss='82.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-2000.00' torqueLoss='86.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-2500.00' torqueLoss='91.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='0.00' torqueLoss='78.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-200.00' torqueLoss='80.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-400.00' torqueLoss='82.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-600.00' torqueLoss='84.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-900.00' torqueLoss='87.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-1200.00' torqueLoss='90.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-1600.00' torqueLoss='94.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-2000.00' torqueLoss='98.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-2500.00' torqueLoss='103.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='0.00' torqueLoss='90.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-200.00' torqueLoss='92.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-400.00' torqueLoss='94.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-600.00' torqueLoss='96.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-900.00' torqueLoss='99.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-1200.00' torqueLoss='102.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-1600.00' torqueLoss='106.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-2000.00' torqueLoss='110.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-2500.00' torqueLoss='115.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='0.00' torqueLoss='105.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-200.00' torqueLoss='107.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-400.00' torqueLoss='109.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-600.00' torqueLoss='111.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-900.00' torqueLoss='114.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-1200.00' torqueLoss='117.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-1600.00' torqueLoss='121.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-2000.00' torqueLoss='125.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-2500.00' torqueLoss='130.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='0.00' torqueLoss='120.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-200.00' torqueLoss='122.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-400.00' torqueLoss='124.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-600.00' torqueLoss='126.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-900.00' torqueLoss='129.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-1200.00' torqueLoss='132.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-1600.00' torqueLoss='136.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-2000.00' torqueLoss='140.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-2500.00' torqueLoss='145.00'/>
+							</TorqueLossMap>
+						</Gear>
+						<Gear number="5">
+							<Ratio>0.720</Ratio>
+							<MaxSpeed>2500</MaxSpeed>
+							<TorqueLossMap>
+								<Entry inputSpeed='0.00' inputTorque='-200.00' torqueLoss='56.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-400.00' torqueLoss='64.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-600.00' torqueLoss='72.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-900.00' torqueLoss='84.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-1200.00' torqueLoss='96.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-1600.00' torqueLoss='112.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-2000.00' torqueLoss='128.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-2500.00' torqueLoss='148.00'/>
+								<Entry inputSpeed='0.00' inputTorque='0.00' torqueLoss='48.00'/>
+								<Entry inputSpeed='0.00' inputTorque='200.00' torqueLoss='56.00'/>
+								<Entry inputSpeed='0.00' inputTorque='400.00' torqueLoss='64.00'/>
+								<Entry inputSpeed='0.00' inputTorque='600.00' torqueLoss='72.00'/>
+								<Entry inputSpeed='0.00' inputTorque='900.00' torqueLoss='84.00'/>
+								<Entry inputSpeed='0.00' inputTorque='1200.00' torqueLoss='96.00'/>
+								<Entry inputSpeed='0.00' inputTorque='1600.00' torqueLoss='112.00'/>
+								<Entry inputSpeed='0.00' inputTorque='2000.00' torqueLoss='128.00'/>
+								<Entry inputSpeed='0.00' inputTorque='2500.00' torqueLoss='148.00'/>
+								<Entry inputSpeed='600.00' inputTorque='0.00' torqueLoss='48.00'/>
+								<Entry inputSpeed='600.00' inputTorque='200.00' torqueLoss='56.00'/>
+								<Entry inputSpeed='600.00' inputTorque='400.00' torqueLoss='64.00'/>
+								<Entry inputSpeed='600.00' inputTorque='600.00' torqueLoss='72.00'/>
+								<Entry inputSpeed='600.00' inputTorque='900.00' torqueLoss='84.00'/>
+								<Entry inputSpeed='600.00' inputTorque='1200.00' torqueLoss='96.00'/>
+								<Entry inputSpeed='600.00' inputTorque='1600.00' torqueLoss='112.00'/>
+								<Entry inputSpeed='600.00' inputTorque='2000.00' torqueLoss='128.00'/>
+								<Entry inputSpeed='600.00' inputTorque='2500.00' torqueLoss='148.00'/>
+								<Entry inputSpeed='900.00' inputTorque='0.00' torqueLoss='57.00'/>
+								<Entry inputSpeed='900.00' inputTorque='200.00' torqueLoss='65.00'/>
+								<Entry inputSpeed='900.00' inputTorque='400.00' torqueLoss='73.00'/>
+								<Entry inputSpeed='900.00' inputTorque='600.00' torqueLoss='81.00'/>
+								<Entry inputSpeed='900.00' inputTorque='900.00' torqueLoss='93.00'/>
+								<Entry inputSpeed='900.00' inputTorque='1200.00' torqueLoss='105.00'/>
+								<Entry inputSpeed='900.00' inputTorque='1600.00' torqueLoss='121.00'/>
+								<Entry inputSpeed='900.00' inputTorque='2000.00' torqueLoss='137.00'/>
+								<Entry inputSpeed='900.00' inputTorque='2500.00' torqueLoss='157.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='0.00' torqueLoss='66.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='200.00' torqueLoss='74.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='400.00' torqueLoss='82.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='600.00' torqueLoss='90.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='900.00' torqueLoss='102.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='1200.00' torqueLoss='114.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='1600.00' torqueLoss='130.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='2000.00' torqueLoss='146.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='2500.00' torqueLoss='166.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='0.00' torqueLoss='78.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='200.00' torqueLoss='86.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='400.00' torqueLoss='94.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='600.00' torqueLoss='102.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='900.00' torqueLoss='114.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='1200.00' torqueLoss='126.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='1600.00' torqueLoss='142.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='2000.00' torqueLoss='158.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='2500.00' torqueLoss='178.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='0.00' torqueLoss='90.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='200.00' torqueLoss='98.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='400.00' torqueLoss='106.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='600.00' torqueLoss='114.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='900.00' torqueLoss='126.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='1200.00' torqueLoss='138.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='1600.00' torqueLoss='154.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='2000.00' torqueLoss='170.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='2500.00' torqueLoss='190.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='0.00' torqueLoss='105.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='200.00' torqueLoss='113.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='400.00' torqueLoss='121.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='600.00' torqueLoss='129.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='900.00' torqueLoss='141.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='1200.00' torqueLoss='153.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='1600.00' torqueLoss='169.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='2000.00' torqueLoss='185.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='2500.00' torqueLoss='205.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='0.00' torqueLoss='120.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='200.00' torqueLoss='128.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='400.00' torqueLoss='136.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='600.00' torqueLoss='144.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='900.00' torqueLoss='156.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='1200.00' torqueLoss='168.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='1600.00' torqueLoss='184.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='2000.00' torqueLoss='200.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='2500.00' torqueLoss='220.00'/>
+								<Entry inputSpeed='600.00' inputTorque='0.00' torqueLoss='48.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-200.00' torqueLoss='56.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-400.00' torqueLoss='64.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-600.00' torqueLoss='72.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-900.00' torqueLoss='84.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-1200.00' torqueLoss='96.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-1600.00' torqueLoss='112.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-2000.00' torqueLoss='128.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-2500.00' torqueLoss='148.00'/>
+								<Entry inputSpeed='900.00' inputTorque='0.00' torqueLoss='57.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-200.00' torqueLoss='65.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-400.00' torqueLoss='73.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-600.00' torqueLoss='81.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-900.00' torqueLoss='93.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-1200.00' torqueLoss='105.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-1600.00' torqueLoss='121.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-2000.00' torqueLoss='137.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-2500.00' torqueLoss='157.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='0.00' torqueLoss='66.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-200.00' torqueLoss='74.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-400.00' torqueLoss='82.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-600.00' torqueLoss='90.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-900.00' torqueLoss='102.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-1200.00' torqueLoss='114.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-1600.00' torqueLoss='130.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-2000.00' torqueLoss='146.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-2500.00' torqueLoss='166.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='0.00' torqueLoss='78.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-200.00' torqueLoss='86.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-400.00' torqueLoss='94.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-600.00' torqueLoss='102.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-900.00' torqueLoss='114.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-1200.00' torqueLoss='126.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-1600.00' torqueLoss='142.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-2000.00' torqueLoss='158.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-2500.00' torqueLoss='178.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='0.00' torqueLoss='90.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-200.00' torqueLoss='98.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-400.00' torqueLoss='106.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-600.00' torqueLoss='114.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-900.00' torqueLoss='126.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-1200.00' torqueLoss='138.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-1600.00' torqueLoss='154.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-2000.00' torqueLoss='170.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-2500.00' torqueLoss='190.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='0.00' torqueLoss='105.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-200.00' torqueLoss='113.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-400.00' torqueLoss='121.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-600.00' torqueLoss='129.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-900.00' torqueLoss='141.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-1200.00' torqueLoss='153.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-1600.00' torqueLoss='169.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-2000.00' torqueLoss='185.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-2500.00' torqueLoss='205.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='0.00' torqueLoss='120.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-200.00' torqueLoss='128.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-400.00' torqueLoss='136.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-600.00' torqueLoss='144.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-900.00' torqueLoss='156.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-1200.00' torqueLoss='168.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-1600.00' torqueLoss='184.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-2000.00' torqueLoss='200.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-2500.00' torqueLoss='220.00'/>
+							</TorqueLossMap>
+						</Gear>
+						<Gear number="6">
+							<Ratio>0.615</Ratio>
+							<MaxSpeed>2500</MaxSpeed>
+							<TorqueLossMap>
+								<Entry inputSpeed='0.00' inputTorque='-200.00' torqueLoss='56.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-400.00' torqueLoss='64.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-600.00' torqueLoss='72.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-900.00' torqueLoss='84.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-1200.00' torqueLoss='96.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-1600.00' torqueLoss='112.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-2000.00' torqueLoss='128.00'/>
+								<Entry inputSpeed='0.00' inputTorque='-2500.00' torqueLoss='148.00'/>
+								<Entry inputSpeed='0.00' inputTorque='0.00' torqueLoss='48.00'/>
+								<Entry inputSpeed='0.00' inputTorque='200.00' torqueLoss='56.00'/>
+								<Entry inputSpeed='0.00' inputTorque='400.00' torqueLoss='64.00'/>
+								<Entry inputSpeed='0.00' inputTorque='600.00' torqueLoss='72.00'/>
+								<Entry inputSpeed='0.00' inputTorque='900.00' torqueLoss='84.00'/>
+								<Entry inputSpeed='0.00' inputTorque='1200.00' torqueLoss='96.00'/>
+								<Entry inputSpeed='0.00' inputTorque='1600.00' torqueLoss='112.00'/>
+								<Entry inputSpeed='0.00' inputTorque='2000.00' torqueLoss='128.00'/>
+								<Entry inputSpeed='0.00' inputTorque='2500.00' torqueLoss='148.00'/>
+								<Entry inputSpeed='600.00' inputTorque='0.00' torqueLoss='48.00'/>
+								<Entry inputSpeed='600.00' inputTorque='200.00' torqueLoss='56.00'/>
+								<Entry inputSpeed='600.00' inputTorque='400.00' torqueLoss='64.00'/>
+								<Entry inputSpeed='600.00' inputTorque='600.00' torqueLoss='72.00'/>
+								<Entry inputSpeed='600.00' inputTorque='900.00' torqueLoss='84.00'/>
+								<Entry inputSpeed='600.00' inputTorque='1200.00' torqueLoss='96.00'/>
+								<Entry inputSpeed='600.00' inputTorque='1600.00' torqueLoss='112.00'/>
+								<Entry inputSpeed='600.00' inputTorque='2000.00' torqueLoss='128.00'/>
+								<Entry inputSpeed='600.00' inputTorque='2500.00' torqueLoss='148.00'/>
+								<Entry inputSpeed='900.00' inputTorque='0.00' torqueLoss='57.00'/>
+								<Entry inputSpeed='900.00' inputTorque='200.00' torqueLoss='65.00'/>
+								<Entry inputSpeed='900.00' inputTorque='400.00' torqueLoss='73.00'/>
+								<Entry inputSpeed='900.00' inputTorque='600.00' torqueLoss='81.00'/>
+								<Entry inputSpeed='900.00' inputTorque='900.00' torqueLoss='93.00'/>
+								<Entry inputSpeed='900.00' inputTorque='1200.00' torqueLoss='105.00'/>
+								<Entry inputSpeed='900.00' inputTorque='1600.00' torqueLoss='121.00'/>
+								<Entry inputSpeed='900.00' inputTorque='2000.00' torqueLoss='137.00'/>
+								<Entry inputSpeed='900.00' inputTorque='2500.00' torqueLoss='157.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='0.00' torqueLoss='66.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='200.00' torqueLoss='74.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='400.00' torqueLoss='82.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='600.00' torqueLoss='90.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='900.00' torqueLoss='102.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='1200.00' torqueLoss='114.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='1600.00' torqueLoss='130.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='2000.00' torqueLoss='146.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='2500.00' torqueLoss='166.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='0.00' torqueLoss='78.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='200.00' torqueLoss='86.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='400.00' torqueLoss='94.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='600.00' torqueLoss='102.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='900.00' torqueLoss='114.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='1200.00' torqueLoss='126.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='1600.00' torqueLoss='142.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='2000.00' torqueLoss='158.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='2500.00' torqueLoss='178.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='0.00' torqueLoss='90.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='200.00' torqueLoss='98.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='400.00' torqueLoss='106.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='600.00' torqueLoss='114.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='900.00' torqueLoss='126.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='1200.00' torqueLoss='138.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='1600.00' torqueLoss='154.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='2000.00' torqueLoss='170.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='2500.00' torqueLoss='190.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='0.00' torqueLoss='105.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='200.00' torqueLoss='113.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='400.00' torqueLoss='121.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='600.00' torqueLoss='129.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='900.00' torqueLoss='141.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='1200.00' torqueLoss='153.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='1600.00' torqueLoss='169.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='2000.00' torqueLoss='185.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='2500.00' torqueLoss='205.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='0.00' torqueLoss='120.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='200.00' torqueLoss='128.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='400.00' torqueLoss='136.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='600.00' torqueLoss='144.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='900.00' torqueLoss='156.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='1200.00' torqueLoss='168.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='1600.00' torqueLoss='184.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='2000.00' torqueLoss='200.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='2500.00' torqueLoss='220.00'/>
+								<Entry inputSpeed='600.00' inputTorque='0.00' torqueLoss='48.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-200.00' torqueLoss='56.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-400.00' torqueLoss='64.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-600.00' torqueLoss='72.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-900.00' torqueLoss='84.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-1200.00' torqueLoss='96.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-1600.00' torqueLoss='112.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-2000.00' torqueLoss='128.00'/>
+								<Entry inputSpeed='600.00' inputTorque='-2500.00' torqueLoss='148.00'/>
+								<Entry inputSpeed='900.00' inputTorque='0.00' torqueLoss='57.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-200.00' torqueLoss='65.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-400.00' torqueLoss='73.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-600.00' torqueLoss='81.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-900.00' torqueLoss='93.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-1200.00' torqueLoss='105.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-1600.00' torqueLoss='121.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-2000.00' torqueLoss='137.00'/>
+								<Entry inputSpeed='900.00' inputTorque='-2500.00' torqueLoss='157.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='0.00' torqueLoss='66.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-200.00' torqueLoss='74.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-400.00' torqueLoss='82.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-600.00' torqueLoss='90.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-900.00' torqueLoss='102.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-1200.00' torqueLoss='114.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-1600.00' torqueLoss='130.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-2000.00' torqueLoss='146.00'/>
+								<Entry inputSpeed='1200.00' inputTorque='-2500.00' torqueLoss='166.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='0.00' torqueLoss='78.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-200.00' torqueLoss='86.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-400.00' torqueLoss='94.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-600.00' torqueLoss='102.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-900.00' torqueLoss='114.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-1200.00' torqueLoss='126.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-1600.00' torqueLoss='142.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-2000.00' torqueLoss='158.00'/>
+								<Entry inputSpeed='1600.00' inputTorque='-2500.00' torqueLoss='178.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='0.00' torqueLoss='90.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-200.00' torqueLoss='98.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-400.00' torqueLoss='106.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-600.00' torqueLoss='114.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-900.00' torqueLoss='126.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-1200.00' torqueLoss='138.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-1600.00' torqueLoss='154.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-2000.00' torqueLoss='170.00'/>
+								<Entry inputSpeed='2000.00' inputTorque='-2500.00' torqueLoss='190.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='0.00' torqueLoss='105.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-200.00' torqueLoss='113.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-400.00' torqueLoss='121.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-600.00' torqueLoss='129.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-900.00' torqueLoss='141.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-1200.00' torqueLoss='153.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-1600.00' torqueLoss='169.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-2000.00' torqueLoss='185.00'/>
+								<Entry inputSpeed='2500.00' inputTorque='-2500.00' torqueLoss='205.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='0.00' torqueLoss='120.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-200.00' torqueLoss='128.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-400.00' torqueLoss='136.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-600.00' torqueLoss='144.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-900.00' torqueLoss='156.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-1200.00' torqueLoss='168.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-1600.00' torqueLoss='184.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-2000.00' torqueLoss='200.00'/>
+								<Entry inputSpeed='3000.00' inputTorque='-2500.00' torqueLoss='220.00'/>
+							</TorqueLossMap>
+						</Gear>
+					</Gears>
+				</Data>
+				<Signature>
+					<di:Reference URI="#gbx-vi2Oak2N">
+						<di:Transforms>
+							<di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/>
+							<di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
+						</di:Transforms>
+						<di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
+						<di:DigestValue>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue>
+					</di:Reference>
+				</Signature>
+			</v2.6:Gearbox>
+			<v2.6:TorqueConverter xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="TorqueConverterComponentDeclarationType">
+				<Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType">
+					<Manufacturer>Some Manufacturer</Manufacturer>
+					<Model>Some Model</Model>
+					<CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber>
+					<Date>2017-02-15T11:00:00Z</Date>
+					<AppVersion>TC CalcApp 123</AppVersion>
+					<CertificationMethod>Standard values</CertificationMethod>
+					<Characteristics>
+						<Entry speedRatio='0.0000' torqueRatio='1.80' inputTorqueRef='367.68'/>
+						<Entry speedRatio='0.1000' torqueRatio='1.71' inputTorqueRef='355.43'/>
+						<Entry speedRatio='0.2000' torqueRatio='1.61' inputTorqueRef='343.17'/>
+						<Entry speedRatio='0.3000' torqueRatio='1.52' inputTorqueRef='330.92'/>
+						<Entry speedRatio='0.4000' torqueRatio='1.42' inputTorqueRef='318.66'/>
+						<Entry speedRatio='0.5000' torqueRatio='1.33' inputTorqueRef='306.40'/>
+						<Entry speedRatio='0.6000' torqueRatio='1.23' inputTorqueRef='294.15'/>
+						<Entry speedRatio='0.6500' torqueRatio='1.19' inputTorqueRef='275.76'/>
+						<Entry speedRatio='0.7000' torqueRatio='1.14' inputTorqueRef='257.38'/>
+						<Entry speedRatio='0.7500' torqueRatio='1.09' inputTorqueRef='238.99'/>
+						<Entry speedRatio='0.8000' torqueRatio='1.04' inputTorqueRef='220.61'/>
+						<Entry speedRatio='0.8500' torqueRatio='1.00' inputTorqueRef='202.23'/>
+						<Entry speedRatio='0.9000' torqueRatio='0.95' inputTorqueRef='183.84'/>
+						<Entry speedRatio='0.9500' torqueRatio='0.95' inputTorqueRef='91.92'/>
+						<Entry speedRatio='1.0000' torqueRatio='0.95' inputTorqueRef='0.00'/>
+						<Entry speedRatio='1.1000' torqueRatio='1.00' inputTorqueRef='-40.34'/>
+						<Entry speedRatio='1.2200' torqueRatio='1.00' inputTorqueRef='-80.34'/>
+						<Entry speedRatio='1.3800' torqueRatio='1.00' inputTorqueRef='-136.11'/>
+						<Entry speedRatio='1.5700' torqueRatio='1.00' inputTorqueRef='-216.52'/>
+						<Entry speedRatio='1.8300' torqueRatio='1.00' inputTorqueRef='-335.19'/>
+						<Entry speedRatio='2.2000' torqueRatio='1.00' inputTorqueRef='-528.77'/>
+						<Entry speedRatio='2.5000' torqueRatio='1.00' inputTorqueRef='-721.00'/>
+						<Entry speedRatio='3.0000' torqueRatio='1.00' inputTorqueRef='-1122.00'/>
+						<Entry speedRatio='3.5000' torqueRatio='1.00' inputTorqueRef='-1648.00'/>
+						<Entry speedRatio='4.0000' torqueRatio='1.00' inputTorqueRef='-2326.00'/>
+						<Entry speedRatio='4.5000' torqueRatio='1.00' inputTorqueRef='-3182.00'/>
+						<Entry speedRatio='5.0000' torqueRatio='1.00' inputTorqueRef='-4242.00'/>
+					</Characteristics>
+				</Data>
+				<Signature>
+					<di:Reference URI="#tc-123xyz">
+						<di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
+						<di:DigestValue>q2sumDwsqQKLw4xwkEllgsygF5bHBwZPSS66UNaXXis=</di:DigestValue>
+					</di:Reference>
+				</Signature>
+			</v2.6:TorqueConverter>
+			<v2.6:Angledrive xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AngledriveComponentDeclarationType">
+				<Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType">
+					<Manufacturer>Generic Gearbox Manufacturer</Manufacturer>
+					<Model>Generic primary bus 41 Gearbox</Model>
+					<CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber>
+					<Date>2017-01-11T11:00:00Z</Date>
+					<AppVersion>3.0.1</AppVersion>
+					<Ratio>2.345</Ratio>
+					<CertificationMethod>Standard values</CertificationMethod>
+					<TorqueLossMap>
+						<Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="100.00"/>
+						<Entry inputSpeed="1000.00" inputTorque="-1000.00" torqueLoss="100.00"/>
+						<Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="10.00"/>
+						<Entry inputSpeed="1000.00" inputTorque="0.00" torqueLoss="10.00"/>
+						<Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="100.00"/>
+						<Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/>
+					</TorqueLossMap>
+				</Data>
+				<Signature>
+					<di:Reference URI="#agl-vi2Oak2N">
+						<di:Transforms>
+							<di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/>
+							<di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
+						</di:Transforms>
+						<di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
+						<di:DigestValue>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue>
+					</di:Reference>
+				</Signature>
+			</v2.6:Angledrive>
+			<v2.6:Retarder xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="RetarderComponentDeclarationType">
+				<Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType">
+					<Manufacturer>Generic Retarder Manufacturer</Manufacturer>
+					<Model>Generic Retarder</Model>
+					<CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber>
+					<Date>2017-01-11T11:00:00Z</Date>
+					<AppVersion>3.0.1</AppVersion>
+					<CertificationMethod>Standard values</CertificationMethod>
+					<RetarderLossMap>
+						<Entry retarderSpeed="0.00" torqueLoss="10.00"/>
+						<Entry retarderSpeed="100.00" torqueLoss="10.02"/>
+						<Entry retarderSpeed="200.00" torqueLoss="10.08"/>
+						<Entry retarderSpeed="300.00" torqueLoss="10.18"/>
+						<Entry retarderSpeed="400.00" torqueLoss="10.32"/>
+						<Entry retarderSpeed="500.00" torqueLoss="10.50"/>
+						<Entry retarderSpeed="600.00" torqueLoss="10.72"/>
+						<Entry retarderSpeed="700.00" torqueLoss="10.98"/>
+						<Entry retarderSpeed="800.00" torqueLoss="11.28"/>
+						<Entry retarderSpeed="900.00" torqueLoss="11.62"/>
+						<Entry retarderSpeed="1000.00" torqueLoss="12.00"/>
+						<Entry retarderSpeed="1100.00" torqueLoss="12.42"/>
+						<Entry retarderSpeed="1200.00" torqueLoss="12.88"/>
+						<Entry retarderSpeed="1300.00" torqueLoss="13.38"/>
+						<Entry retarderSpeed="1400.00" torqueLoss="13.92"/>
+						<Entry retarderSpeed="1500.00" torqueLoss="14.50"/>
+						<Entry retarderSpeed="1600.00" torqueLoss="15.12"/>
+						<Entry retarderSpeed="1700.00" torqueLoss="15.78"/>
+						<Entry retarderSpeed="1800.00" torqueLoss="16.48"/>
+						<Entry retarderSpeed="1900.00" torqueLoss="17.22"/>
+						<Entry retarderSpeed="2000.00" torqueLoss="18.00"/>
+						<Entry retarderSpeed="2100.00" torqueLoss="18.82"/>
+						<Entry retarderSpeed="2200.00" torqueLoss="19.68"/>
+						<Entry retarderSpeed="2300.00" torqueLoss="20.58"/>
+						<Entry retarderSpeed="4000.00" torqueLoss="42.00"/>
+					</RetarderLossMap>
+				</Data>
+				<Signature>
+					<di:Reference URI="#RET-Shai9imi">
+						<di:Transforms>
+							<di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/>
+							<di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
+						</di:Transforms>
+						<di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
+						<di:DigestValue>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue>
+					</di:Reference>
+				</Signature>
+			</v2.6:Retarder>
+			<v2.6:Axlegear xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxlegearComponentDeclarationType">
+				<Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType">
+					<Manufacturer>Generic Gearbox Manufacturer</Manufacturer>
+					<Model>Generic primary bus 41 AxleGear</Model>
+					<CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber>
+					<Date>2017-01-11T11:00:00Z</Date>
+					<AppVersion>3.0.1</AppVersion>
+					<LineType>Single portal axle</LineType>
+					<Ratio>6.500</Ratio>
+					<CertificationMethod>Standard values</CertificationMethod>
+					<TorqueLossMap>
+							<Entry inputSpeed='0.00' inputTorque='31.96' torqueLoss='31.96'/>
+							<Entry inputSpeed='0.00' inputTorque='70.42' torqueLoss='31.96'/>
+							<Entry inputSpeed='0.00' inputTorque='110.07' torqueLoss='33.15'/>
+							<Entry inputSpeed='0.00' inputTorque='149.72' torqueLoss='34.34'/>
+							<Entry inputSpeed='0.00' inputTorque='189.37' torqueLoss='35.53'/>
+							<Entry inputSpeed='0.00' inputTorque='268.68' torqueLoss='37.91'/>
+							<Entry inputSpeed='0.00' inputTorque='347.98' torqueLoss='40.29'/>
+							<Entry inputSpeed='0.00' inputTorque='506.58' torqueLoss='45.04'/>
+							<Entry inputSpeed='0.00' inputTorque='665.19' torqueLoss='49.80'/>
+							<Entry inputSpeed='0.00' inputTorque='823.79' torqueLoss='54.56'/>
+							<Entry inputSpeed='0.00' inputTorque='982.39' torqueLoss='59.32'/>
+							<Entry inputSpeed='0.00' inputTorque='1141.00' torqueLoss='64.08'/>
+							<Entry inputSpeed='0.00' inputTorque='1299.60' torqueLoss='68.83'/>
+							<Entry inputSpeed='0.00' inputTorque='1458.21' torqueLoss='73.59'/>
+							<Entry inputSpeed='0.00' inputTorque='1616.81' torqueLoss='78.35'/>
+							<Entry inputSpeed='0.00' inputTorque='1934.02' torqueLoss='87.87'/>
+							<Entry inputSpeed='0.00' inputTorque='2251.23' torqueLoss='97.38'/>
+							<Entry inputSpeed='0.00' inputTorque='2568.44' torqueLoss='106.90'/>
+							<Entry inputSpeed='0.00' inputTorque='2885.65' torqueLoss='116.42'/>
+							<Entry inputSpeed='0.00' inputTorque='3202.85' torqueLoss='125.93'/>
+							<Entry inputSpeed='0.00' inputTorque='3520.06' torqueLoss='135.45'/>
+							<Entry inputSpeed='0.00' inputTorque='3837.27' torqueLoss='144.96'/>
+							<Entry inputSpeed='0.00' inputTorque='4154.48' torqueLoss='154.48'/>
+							<Entry inputSpeed='0.00' inputTorque='4471.69' torqueLoss='164.00'/>
+							<Entry inputSpeed='0.00' inputTorque='4788.90' torqueLoss='173.51'/>
+							<Entry inputSpeed='0.00' inputTorque='5106.11' torqueLoss='183.03'/>
+							<Entry inputSpeed='0.00' inputTorque='5423.31' torqueLoss='192.55'/>
+							<Entry inputSpeed='0.00' inputTorque='5740.52' torqueLoss='202.06'/>
+							<Entry inputSpeed='0.00' inputTorque='6057.73' torqueLoss='211.58'/>
+							<Entry inputSpeed='0.00' inputTorque='6374.94' torqueLoss='221.09'/>
+							<Entry inputSpeed='0.00' inputTorque='6692.15' torqueLoss='230.61'/>
+							<Entry inputSpeed='0.00' inputTorque='7009.36' torqueLoss='240.13'/>
+							<Entry inputSpeed='0.00' inputTorque='7326.57' torqueLoss='249.64'/>
+							<Entry inputSpeed='0.00' inputTorque='7643.77' torqueLoss='259.16'/>
+							<Entry inputSpeed='0.00' inputTorque='7960.98' torqueLoss='268.68'/>
+							<Entry inputSpeed='325.00' inputTorque='31.96' torqueLoss='31.96'/>
+							<Entry inputSpeed='325.00' inputTorque='70.42' torqueLoss='31.96'/>
+							<Entry inputSpeed='325.00' inputTorque='110.07' torqueLoss='33.15'/>
+							<Entry inputSpeed='325.00' inputTorque='149.72' torqueLoss='34.34'/>
+							<Entry inputSpeed='325.00' inputTorque='189.37' torqueLoss='35.53'/>
+							<Entry inputSpeed='325.00' inputTorque='268.68' torqueLoss='37.91'/>
+							<Entry inputSpeed='325.00' inputTorque='347.98' torqueLoss='40.29'/>
+							<Entry inputSpeed='325.00' inputTorque='506.58' torqueLoss='45.04'/>
+							<Entry inputSpeed='325.00' inputTorque='665.19' torqueLoss='49.80'/>
+							<Entry inputSpeed='325.00' inputTorque='823.79' torqueLoss='54.56'/>
+							<Entry inputSpeed='325.00' inputTorque='982.39' torqueLoss='59.32'/>
+							<Entry inputSpeed='325.00' inputTorque='1141.00' torqueLoss='64.08'/>
+							<Entry inputSpeed='325.00' inputTorque='1299.60' torqueLoss='68.83'/>
+							<Entry inputSpeed='325.00' inputTorque='1458.21' torqueLoss='73.59'/>
+							<Entry inputSpeed='325.00' inputTorque='1616.81' torqueLoss='78.35'/>
+							<Entry inputSpeed='325.00' inputTorque='1934.02' torqueLoss='87.87'/>
+							<Entry inputSpeed='325.00' inputTorque='2251.23' torqueLoss='97.38'/>
+							<Entry inputSpeed='325.00' inputTorque='2568.44' torqueLoss='106.90'/>
+							<Entry inputSpeed='325.00' inputTorque='2885.65' torqueLoss='116.42'/>
+							<Entry inputSpeed='325.00' inputTorque='3202.85' torqueLoss='125.93'/>
+							<Entry inputSpeed='325.00' inputTorque='3520.06' torqueLoss='135.45'/>
+							<Entry inputSpeed='325.00' inputTorque='3837.27' torqueLoss='144.96'/>
+							<Entry inputSpeed='325.00' inputTorque='4154.48' torqueLoss='154.48'/>
+							<Entry inputSpeed='325.00' inputTorque='4471.69' torqueLoss='164.00'/>
+							<Entry inputSpeed='325.00' inputTorque='4788.90' torqueLoss='173.51'/>
+							<Entry inputSpeed='325.00' inputTorque='5106.11' torqueLoss='183.03'/>
+							<Entry inputSpeed='325.00' inputTorque='5423.31' torqueLoss='192.55'/>
+							<Entry inputSpeed='325.00' inputTorque='5740.52' torqueLoss='202.06'/>
+							<Entry inputSpeed='325.00' inputTorque='6057.73' torqueLoss='211.58'/>
+							<Entry inputSpeed='325.00' inputTorque='6374.94' torqueLoss='221.09'/>
+							<Entry inputSpeed='325.00' inputTorque='6692.15' torqueLoss='230.61'/>
+							<Entry inputSpeed='325.00' inputTorque='7009.36' torqueLoss='240.13'/>
+							<Entry inputSpeed='325.00' inputTorque='7326.57' torqueLoss='249.64'/>
+							<Entry inputSpeed='325.00' inputTorque='7643.77' torqueLoss='259.16'/>
+							<Entry inputSpeed='325.00' inputTorque='7960.98' torqueLoss='268.68'/>
+							<Entry inputSpeed='650.00' inputTorque='31.96' torqueLoss='31.96'/>
+							<Entry inputSpeed='650.00' inputTorque='70.42' torqueLoss='31.96'/>
+							<Entry inputSpeed='650.00' inputTorque='110.07' torqueLoss='33.15'/>
+							<Entry inputSpeed='650.00' inputTorque='149.72' torqueLoss='34.34'/>
+							<Entry inputSpeed='650.00' inputTorque='189.37' torqueLoss='35.53'/>
+							<Entry inputSpeed='650.00' inputTorque='268.68' torqueLoss='37.91'/>
+							<Entry inputSpeed='650.00' inputTorque='347.98' torqueLoss='40.29'/>
+							<Entry inputSpeed='650.00' inputTorque='506.58' torqueLoss='45.04'/>
+							<Entry inputSpeed='650.00' inputTorque='665.19' torqueLoss='49.80'/>
+							<Entry inputSpeed='650.00' inputTorque='823.79' torqueLoss='54.56'/>
+							<Entry inputSpeed='650.00' inputTorque='982.39' torqueLoss='59.32'/>
+							<Entry inputSpeed='650.00' inputTorque='1141.00' torqueLoss='64.08'/>
+							<Entry inputSpeed='650.00' inputTorque='1299.60' torqueLoss='68.83'/>
+							<Entry inputSpeed='650.00' inputTorque='1458.21' torqueLoss='73.59'/>
+							<Entry inputSpeed='650.00' inputTorque='1616.81' torqueLoss='78.35'/>
+							<Entry inputSpeed='650.00' inputTorque='1934.02' torqueLoss='87.87'/>
+							<Entry inputSpeed='650.00' inputTorque='2251.23' torqueLoss='97.38'/>
+							<Entry inputSpeed='650.00' inputTorque='2568.44' torqueLoss='106.90'/>
+							<Entry inputSpeed='650.00' inputTorque='2885.65' torqueLoss='116.42'/>
+							<Entry inputSpeed='650.00' inputTorque='3202.85' torqueLoss='125.93'/>
+							<Entry inputSpeed='650.00' inputTorque='3520.06' torqueLoss='135.45'/>
+							<Entry inputSpeed='650.00' inputTorque='3837.27' torqueLoss='144.96'/>
+							<Entry inputSpeed='650.00' inputTorque='4154.48' torqueLoss='154.48'/>
+							<Entry inputSpeed='650.00' inputTorque='4471.69' torqueLoss='164.00'/>
+							<Entry inputSpeed='650.00' inputTorque='4788.90' torqueLoss='173.51'/>
+							<Entry inputSpeed='650.00' inputTorque='5106.11' torqueLoss='183.03'/>
+							<Entry inputSpeed='650.00' inputTorque='5423.31' torqueLoss='192.55'/>
+							<Entry inputSpeed='650.00' inputTorque='5740.52' torqueLoss='202.06'/>
+							<Entry inputSpeed='650.00' inputTorque='6057.73' torqueLoss='211.58'/>
+							<Entry inputSpeed='650.00' inputTorque='6374.94' torqueLoss='221.09'/>
+							<Entry inputSpeed='650.00' inputTorque='6692.15' torqueLoss='230.61'/>
+							<Entry inputSpeed='650.00' inputTorque='7009.36' torqueLoss='240.13'/>
+							<Entry inputSpeed='650.00' inputTorque='7326.57' torqueLoss='249.64'/>
+							<Entry inputSpeed='650.00' inputTorque='7643.77' torqueLoss='259.16'/>
+							<Entry inputSpeed='650.00' inputTorque='7960.98' torqueLoss='268.68'/>
+							<Entry inputSpeed='975.00' inputTorque='31.96' torqueLoss='31.96'/>
+							<Entry inputSpeed='975.00' inputTorque='70.42' torqueLoss='31.96'/>
+							<Entry inputSpeed='975.00' inputTorque='110.07' torqueLoss='33.15'/>
+							<Entry inputSpeed='975.00' inputTorque='149.72' torqueLoss='34.34'/>
+							<Entry inputSpeed='975.00' inputTorque='189.37' torqueLoss='35.53'/>
+							<Entry inputSpeed='975.00' inputTorque='268.68' torqueLoss='37.91'/>
+							<Entry inputSpeed='975.00' inputTorque='347.98' torqueLoss='40.29'/>
+							<Entry inputSpeed='975.00' inputTorque='506.58' torqueLoss='45.04'/>
+							<Entry inputSpeed='975.00' inputTorque='665.19' torqueLoss='49.80'/>
+							<Entry inputSpeed='975.00' inputTorque='823.79' torqueLoss='54.56'/>
+							<Entry inputSpeed='975.00' inputTorque='982.39' torqueLoss='59.32'/>
+							<Entry inputSpeed='975.00' inputTorque='1141.00' torqueLoss='64.08'/>
+							<Entry inputSpeed='975.00' inputTorque='1299.60' torqueLoss='68.83'/>
+							<Entry inputSpeed='975.00' inputTorque='1458.21' torqueLoss='73.59'/>
+							<Entry inputSpeed='975.00' inputTorque='1616.81' torqueLoss='78.35'/>
+							<Entry inputSpeed='975.00' inputTorque='1934.02' torqueLoss='87.87'/>
+							<Entry inputSpeed='975.00' inputTorque='2251.23' torqueLoss='97.38'/>
+							<Entry inputSpeed='975.00' inputTorque='2568.44' torqueLoss='106.90'/>
+							<Entry inputSpeed='975.00' inputTorque='2885.65' torqueLoss='116.42'/>
+							<Entry inputSpeed='975.00' inputTorque='3202.85' torqueLoss='125.93'/>
+							<Entry inputSpeed='975.00' inputTorque='3520.06' torqueLoss='135.45'/>
+							<Entry inputSpeed='975.00' inputTorque='3837.27' torqueLoss='144.96'/>
+							<Entry inputSpeed='975.00' inputTorque='4154.48' torqueLoss='154.48'/>
+							<Entry inputSpeed='975.00' inputTorque='4471.69' torqueLoss='164.00'/>
+							<Entry inputSpeed='975.00' inputTorque='4788.90' torqueLoss='173.51'/>
+							<Entry inputSpeed='975.00' inputTorque='5106.11' torqueLoss='183.03'/>
+							<Entry inputSpeed='975.00' inputTorque='5423.31' torqueLoss='192.55'/>
+							<Entry inputSpeed='975.00' inputTorque='5740.52' torqueLoss='202.06'/>
+							<Entry inputSpeed='975.00' inputTorque='6057.73' torqueLoss='211.58'/>
+							<Entry inputSpeed='975.00' inputTorque='6374.94' torqueLoss='221.09'/>
+							<Entry inputSpeed='975.00' inputTorque='6692.15' torqueLoss='230.61'/>
+							<Entry inputSpeed='975.00' inputTorque='7009.36' torqueLoss='240.13'/>
+							<Entry inputSpeed='975.00' inputTorque='7326.57' torqueLoss='249.64'/>
+							<Entry inputSpeed='975.00' inputTorque='7643.77' torqueLoss='259.16'/>
+							<Entry inputSpeed='975.00' inputTorque='7960.98' torqueLoss='268.68'/>
+							<Entry inputSpeed='1300.00' inputTorque='31.96' torqueLoss='31.96'/>
+							<Entry inputSpeed='1300.00' inputTorque='70.42' torqueLoss='31.96'/>
+							<Entry inputSpeed='1300.00' inputTorque='110.07' torqueLoss='33.15'/>
+							<Entry inputSpeed='1300.00' inputTorque='149.72' torqueLoss='34.34'/>
+							<Entry inputSpeed='1300.00' inputTorque='189.37' torqueLoss='35.53'/>
+							<Entry inputSpeed='1300.00' inputTorque='268.68' torqueLoss='37.91'/>
+							<Entry inputSpeed='1300.00' inputTorque='347.98' torqueLoss='40.29'/>
+							<Entry inputSpeed='1300.00' inputTorque='506.58' torqueLoss='45.04'/>
+							<Entry inputSpeed='1300.00' inputTorque='665.19' torqueLoss='49.80'/>
+							<Entry inputSpeed='1300.00' inputTorque='823.79' torqueLoss='54.56'/>
+							<Entry inputSpeed='1300.00' inputTorque='982.39' torqueLoss='59.32'/>
+							<Entry inputSpeed='1300.00' inputTorque='1141.00' torqueLoss='64.08'/>
+							<Entry inputSpeed='1300.00' inputTorque='1299.60' torqueLoss='68.83'/>
+							<Entry inputSpeed='1300.00' inputTorque='1458.21' torqueLoss='73.59'/>
+							<Entry inputSpeed='1300.00' inputTorque='1616.81' torqueLoss='78.35'/>
+							<Entry inputSpeed='1300.00' inputTorque='1934.02' torqueLoss='87.87'/>
+							<Entry inputSpeed='1300.00' inputTorque='2251.23' torqueLoss='97.38'/>
+							<Entry inputSpeed='1300.00' inputTorque='2568.44' torqueLoss='106.90'/>
+							<Entry inputSpeed='1300.00' inputTorque='2885.65' torqueLoss='116.42'/>
+							<Entry inputSpeed='1300.00' inputTorque='3202.85' torqueLoss='125.93'/>
+							<Entry inputSpeed='1300.00' inputTorque='3520.06' torqueLoss='135.45'/>
+							<Entry inputSpeed='1300.00' inputTorque='3837.27' torqueLoss='144.96'/>
+							<Entry inputSpeed='1300.00' inputTorque='4154.48' torqueLoss='154.48'/>
+							<Entry inputSpeed='1300.00' inputTorque='4471.69' torqueLoss='164.00'/>
+							<Entry inputSpeed='1300.00' inputTorque='4788.90' torqueLoss='173.51'/>
+							<Entry inputSpeed='1300.00' inputTorque='5106.11' torqueLoss='183.03'/>
+							<Entry inputSpeed='1300.00' inputTorque='5423.31' torqueLoss='192.55'/>
+							<Entry inputSpeed='1300.00' inputTorque='5740.52' torqueLoss='202.06'/>
+							<Entry inputSpeed='1300.00' inputTorque='6057.73' torqueLoss='211.58'/>
+							<Entry inputSpeed='1300.00' inputTorque='6374.94' torqueLoss='221.09'/>
+							<Entry inputSpeed='1300.00' inputTorque='6692.15' torqueLoss='230.61'/>
+							<Entry inputSpeed='1300.00' inputTorque='7009.36' torqueLoss='240.13'/>
+							<Entry inputSpeed='1300.00' inputTorque='7326.57' torqueLoss='249.64'/>
+							<Entry inputSpeed='1300.00' inputTorque='7643.77' torqueLoss='259.16'/>
+							<Entry inputSpeed='1300.00' inputTorque='7960.98' torqueLoss='268.68'/>
+							<Entry inputSpeed='1625.00' inputTorque='31.96' torqueLoss='31.96'/>
+							<Entry inputSpeed='1625.00' inputTorque='70.42' torqueLoss='31.96'/>
+							<Entry inputSpeed='1625.00' inputTorque='110.07' torqueLoss='33.15'/>
+							<Entry inputSpeed='1625.00' inputTorque='149.72' torqueLoss='34.34'/>
+							<Entry inputSpeed='1625.00' inputTorque='189.37' torqueLoss='35.53'/>
+							<Entry inputSpeed='1625.00' inputTorque='268.68' torqueLoss='37.91'/>
+							<Entry inputSpeed='1625.00' inputTorque='347.98' torqueLoss='40.29'/>
+							<Entry inputSpeed='1625.00' inputTorque='506.58' torqueLoss='45.04'/>
+							<Entry inputSpeed='1625.00' inputTorque='665.19' torqueLoss='49.80'/>
+							<Entry inputSpeed='1625.00' inputTorque='823.79' torqueLoss='54.56'/>
+							<Entry inputSpeed='1625.00' inputTorque='982.39' torqueLoss='59.32'/>
+							<Entry inputSpeed='1625.00' inputTorque='1141.00' torqueLoss='64.08'/>
+							<Entry inputSpeed='1625.00' inputTorque='1299.60' torqueLoss='68.83'/>
+							<Entry inputSpeed='1625.00' inputTorque='1458.21' torqueLoss='73.59'/>
+							<Entry inputSpeed='1625.00' inputTorque='1616.81' torqueLoss='78.35'/>
+							<Entry inputSpeed='1625.00' inputTorque='1934.02' torqueLoss='87.87'/>
+							<Entry inputSpeed='1625.00' inputTorque='2251.23' torqueLoss='97.38'/>
+							<Entry inputSpeed='1625.00' inputTorque='2568.44' torqueLoss='106.90'/>
+							<Entry inputSpeed='1625.00' inputTorque='2885.65' torqueLoss='116.42'/>
+							<Entry inputSpeed='1625.00' inputTorque='3202.85' torqueLoss='125.93'/>
+							<Entry inputSpeed='1625.00' inputTorque='3520.06' torqueLoss='135.45'/>
+							<Entry inputSpeed='1625.00' inputTorque='3837.27' torqueLoss='144.96'/>
+							<Entry inputSpeed='1625.00' inputTorque='4154.48' torqueLoss='154.48'/>
+							<Entry inputSpeed='1625.00' inputTorque='4471.69' torqueLoss='164.00'/>
+							<Entry inputSpeed='1625.00' inputTorque='4788.90' torqueLoss='173.51'/>
+							<Entry inputSpeed='1625.00' inputTorque='5106.11' torqueLoss='183.03'/>
+							<Entry inputSpeed='1625.00' inputTorque='5423.31' torqueLoss='192.55'/>
+							<Entry inputSpeed='1625.00' inputTorque='5740.52' torqueLoss='202.06'/>
+							<Entry inputSpeed='1625.00' inputTorque='6057.73' torqueLoss='211.58'/>
+							<Entry inputSpeed='1625.00' inputTorque='6374.94' torqueLoss='221.09'/>
+							<Entry inputSpeed='1625.00' inputTorque='6692.15' torqueLoss='230.61'/>
+							<Entry inputSpeed='1625.00' inputTorque='7009.36' torqueLoss='240.13'/>
+							<Entry inputSpeed='1625.00' inputTorque='7326.57' torqueLoss='249.64'/>
+							<Entry inputSpeed='1625.00' inputTorque='7643.77' torqueLoss='259.16'/>
+							<Entry inputSpeed='1625.00' inputTorque='7960.98' torqueLoss='268.68'/>
+							<Entry inputSpeed='1950.00' inputTorque='31.96' torqueLoss='31.96'/>
+							<Entry inputSpeed='1950.00' inputTorque='70.42' torqueLoss='31.96'/>
+							<Entry inputSpeed='1950.00' inputTorque='110.07' torqueLoss='33.15'/>
+							<Entry inputSpeed='1950.00' inputTorque='149.72' torqueLoss='34.34'/>
+							<Entry inputSpeed='1950.00' inputTorque='189.37' torqueLoss='35.53'/>
+							<Entry inputSpeed='1950.00' inputTorque='268.68' torqueLoss='37.91'/>
+							<Entry inputSpeed='1950.00' inputTorque='347.98' torqueLoss='40.29'/>
+							<Entry inputSpeed='1950.00' inputTorque='506.58' torqueLoss='45.04'/>
+							<Entry inputSpeed='1950.00' inputTorque='665.19' torqueLoss='49.80'/>
+							<Entry inputSpeed='1950.00' inputTorque='823.79' torqueLoss='54.56'/>
+							<Entry inputSpeed='1950.00' inputTorque='982.39' torqueLoss='59.32'/>
+							<Entry inputSpeed='1950.00' inputTorque='1141.00' torqueLoss='64.08'/>
+							<Entry inputSpeed='1950.00' inputTorque='1299.60' torqueLoss='68.83'/>
+							<Entry inputSpeed='1950.00' inputTorque='1458.21' torqueLoss='73.59'/>
+							<Entry inputSpeed='1950.00' inputTorque='1616.81' torqueLoss='78.35'/>
+							<Entry inputSpeed='1950.00' inputTorque='1934.02' torqueLoss='87.87'/>
+							<Entry inputSpeed='1950.00' inputTorque='2251.23' torqueLoss='97.38'/>
+							<Entry inputSpeed='1950.00' inputTorque='2568.44' torqueLoss='106.90'/>
+							<Entry inputSpeed='1950.00' inputTorque='2885.65' torqueLoss='116.42'/>
+							<Entry inputSpeed='1950.00' inputTorque='3202.85' torqueLoss='125.93'/>
+							<Entry inputSpeed='1950.00' inputTorque='3520.06' torqueLoss='135.45'/>
+							<Entry inputSpeed='1950.00' inputTorque='3837.27' torqueLoss='144.96'/>
+							<Entry inputSpeed='1950.00' inputTorque='4154.48' torqueLoss='154.48'/>
+							<Entry inputSpeed='1950.00' inputTorque='4471.69' torqueLoss='164.00'/>
+							<Entry inputSpeed='1950.00' inputTorque='4788.90' torqueLoss='173.51'/>
+							<Entry inputSpeed='1950.00' inputTorque='5106.11' torqueLoss='183.03'/>
+							<Entry inputSpeed='1950.00' inputTorque='5423.31' torqueLoss='192.55'/>
+							<Entry inputSpeed='1950.00' inputTorque='5740.52' torqueLoss='202.06'/>
+							<Entry inputSpeed='1950.00' inputTorque='6057.73' torqueLoss='211.58'/>
+							<Entry inputSpeed='1950.00' inputTorque='6374.94' torqueLoss='221.09'/>
+							<Entry inputSpeed='1950.00' inputTorque='6692.15' torqueLoss='230.61'/>
+							<Entry inputSpeed='1950.00' inputTorque='7009.36' torqueLoss='240.13'/>
+							<Entry inputSpeed='1950.00' inputTorque='7326.57' torqueLoss='249.64'/>
+							<Entry inputSpeed='1950.00' inputTorque='7643.77' torqueLoss='259.16'/>
+							<Entry inputSpeed='1950.00' inputTorque='7960.98' torqueLoss='268.68'/>
+							<Entry inputSpeed='2275.00' inputTorque='31.96' torqueLoss='31.96'/>
+							<Entry inputSpeed='2275.00' inputTorque='70.42' torqueLoss='31.96'/>
+							<Entry inputSpeed='2275.00' inputTorque='110.07' torqueLoss='33.15'/>
+							<Entry inputSpeed='2275.00' inputTorque='149.72' torqueLoss='34.34'/>
+							<Entry inputSpeed='2275.00' inputTorque='189.37' torqueLoss='35.53'/>
+							<Entry inputSpeed='2275.00' inputTorque='268.68' torqueLoss='37.91'/>
+							<Entry inputSpeed='2275.00' inputTorque='347.98' torqueLoss='40.29'/>
+							<Entry inputSpeed='2275.00' inputTorque='506.58' torqueLoss='45.04'/>
+							<Entry inputSpeed='2275.00' inputTorque='665.19' torqueLoss='49.80'/>
+							<Entry inputSpeed='2275.00' inputTorque='823.79' torqueLoss='54.56'/>
+							<Entry inputSpeed='2275.00' inputTorque='982.39' torqueLoss='59.32'/>
+							<Entry inputSpeed='2275.00' inputTorque='1141.00' torqueLoss='64.08'/>
+							<Entry inputSpeed='2275.00' inputTorque='1299.60' torqueLoss='68.83'/>
+							<Entry inputSpeed='2275.00' inputTorque='1458.21' torqueLoss='73.59'/>
+							<Entry inputSpeed='2275.00' inputTorque='1616.81' torqueLoss='78.35'/>
+							<Entry inputSpeed='2275.00' inputTorque='1934.02' torqueLoss='87.87'/>
+							<Entry inputSpeed='2275.00' inputTorque='2251.23' torqueLoss='97.38'/>
+							<Entry inputSpeed='2275.00' inputTorque='2568.44' torqueLoss='106.90'/>
+							<Entry inputSpeed='2275.00' inputTorque='2885.65' torqueLoss='116.42'/>
+							<Entry inputSpeed='2275.00' inputTorque='3202.85' torqueLoss='125.93'/>
+							<Entry inputSpeed='2275.00' inputTorque='3520.06' torqueLoss='135.45'/>
+							<Entry inputSpeed='2275.00' inputTorque='3837.27' torqueLoss='144.96'/>
+							<Entry inputSpeed='2275.00' inputTorque='4154.48' torqueLoss='154.48'/>
+							<Entry inputSpeed='2275.00' inputTorque='4471.69' torqueLoss='164.00'/>
+							<Entry inputSpeed='2275.00' inputTorque='4788.90' torqueLoss='173.51'/>
+							<Entry inputSpeed='2275.00' inputTorque='5106.11' torqueLoss='183.03'/>
+							<Entry inputSpeed='2275.00' inputTorque='5423.31' torqueLoss='192.55'/>
+							<Entry inputSpeed='2275.00' inputTorque='5740.52' torqueLoss='202.06'/>
+							<Entry inputSpeed='2275.00' inputTorque='6057.73' torqueLoss='211.58'/>
+							<Entry inputSpeed='2275.00' inputTorque='6374.94' torqueLoss='221.09'/>
+							<Entry inputSpeed='2275.00' inputTorque='6692.15' torqueLoss='230.61'/>
+							<Entry inputSpeed='2275.00' inputTorque='7009.36' torqueLoss='240.13'/>
+							<Entry inputSpeed='2275.00' inputTorque='7326.57' torqueLoss='249.64'/>
+							<Entry inputSpeed='2275.00' inputTorque='7643.77' torqueLoss='259.16'/>
+							<Entry inputSpeed='2275.00' inputTorque='7960.98' torqueLoss='268.68'/>
+							<Entry inputSpeed='2600.00' inputTorque='31.96' torqueLoss='31.96'/>
+							<Entry inputSpeed='2600.00' inputTorque='70.42' torqueLoss='31.96'/>
+							<Entry inputSpeed='2600.00' inputTorque='110.07' torqueLoss='33.15'/>
+							<Entry inputSpeed='2600.00' inputTorque='149.72' torqueLoss='34.34'/>
+							<Entry inputSpeed='2600.00' inputTorque='189.37' torqueLoss='35.53'/>
+							<Entry inputSpeed='2600.00' inputTorque='268.68' torqueLoss='37.91'/>
+							<Entry inputSpeed='2600.00' inputTorque='347.98' torqueLoss='40.29'/>
+							<Entry inputSpeed='2600.00' inputTorque='506.58' torqueLoss='45.04'/>
+							<Entry inputSpeed='2600.00' inputTorque='665.19' torqueLoss='49.80'/>
+							<Entry inputSpeed='2600.00' inputTorque='823.79' torqueLoss='54.56'/>
+							<Entry inputSpeed='2600.00' inputTorque='982.39' torqueLoss='59.32'/>
+							<Entry inputSpeed='2600.00' inputTorque='1141.00' torqueLoss='64.08'/>
+							<Entry inputSpeed='2600.00' inputTorque='1299.60' torqueLoss='68.83'/>
+							<Entry inputSpeed='2600.00' inputTorque='1458.21' torqueLoss='73.59'/>
+							<Entry inputSpeed='2600.00' inputTorque='1616.81' torqueLoss='78.35'/>
+							<Entry inputSpeed='2600.00' inputTorque='1934.02' torqueLoss='87.87'/>
+							<Entry inputSpeed='2600.00' inputTorque='2251.23' torqueLoss='97.38'/>
+							<Entry inputSpeed='2600.00' inputTorque='2568.44' torqueLoss='106.90'/>
+							<Entry inputSpeed='2600.00' inputTorque='2885.65' torqueLoss='116.42'/>
+							<Entry inputSpeed='2600.00' inputTorque='3202.85' torqueLoss='125.93'/>
+							<Entry inputSpeed='2600.00' inputTorque='3520.06' torqueLoss='135.45'/>
+							<Entry inputSpeed='2600.00' inputTorque='3837.27' torqueLoss='144.96'/>
+							<Entry inputSpeed='2600.00' inputTorque='4154.48' torqueLoss='154.48'/>
+							<Entry inputSpeed='2600.00' inputTorque='4471.69' torqueLoss='164.00'/>
+							<Entry inputSpeed='2600.00' inputTorque='4788.90' torqueLoss='173.51'/>
+							<Entry inputSpeed='2600.00' inputTorque='5106.11' torqueLoss='183.03'/>
+							<Entry inputSpeed='2600.00' inputTorque='5423.31' torqueLoss='192.55'/>
+							<Entry inputSpeed='2600.00' inputTorque='5740.52' torqueLoss='202.06'/>
+							<Entry inputSpeed='2600.00' inputTorque='6057.73' torqueLoss='211.58'/>
+							<Entry inputSpeed='2600.00' inputTorque='6374.94' torqueLoss='221.09'/>
+							<Entry inputSpeed='2600.00' inputTorque='6692.15' torqueLoss='230.61'/>
+							<Entry inputSpeed='2600.00' inputTorque='7009.36' torqueLoss='240.13'/>
+							<Entry inputSpeed='2600.00' inputTorque='7326.57' torqueLoss='249.64'/>
+							<Entry inputSpeed='2600.00' inputTorque='7643.77' torqueLoss='259.16'/>
+							<Entry inputSpeed='2600.00' inputTorque='7960.98' torqueLoss='268.68'/>
+							<Entry inputSpeed='2925.00' inputTorque='31.96' torqueLoss='31.96'/>
+							<Entry inputSpeed='2925.00' inputTorque='70.42' torqueLoss='31.96'/>
+							<Entry inputSpeed='2925.00' inputTorque='110.07' torqueLoss='33.15'/>
+							<Entry inputSpeed='2925.00' inputTorque='149.72' torqueLoss='34.34'/>
+							<Entry inputSpeed='2925.00' inputTorque='189.37' torqueLoss='35.53'/>
+							<Entry inputSpeed='2925.00' inputTorque='268.68' torqueLoss='37.91'/>
+							<Entry inputSpeed='2925.00' inputTorque='347.98' torqueLoss='40.29'/>
+							<Entry inputSpeed='2925.00' inputTorque='506.58' torqueLoss='45.04'/>
+							<Entry inputSpeed='2925.00' inputTorque='665.19' torqueLoss='49.80'/>
+							<Entry inputSpeed='2925.00' inputTorque='823.79' torqueLoss='54.56'/>
+							<Entry inputSpeed='2925.00' inputTorque='982.39' torqueLoss='59.32'/>
+							<Entry inputSpeed='2925.00' inputTorque='1141.00' torqueLoss='64.08'/>
+							<Entry inputSpeed='2925.00' inputTorque='1299.60' torqueLoss='68.83'/>
+							<Entry inputSpeed='2925.00' inputTorque='1458.21' torqueLoss='73.59'/>
+							<Entry inputSpeed='2925.00' inputTorque='1616.81' torqueLoss='78.35'/>
+							<Entry inputSpeed='2925.00' inputTorque='1934.02' torqueLoss='87.87'/>
+							<Entry inputSpeed='2925.00' inputTorque='2251.23' torqueLoss='97.38'/>
+							<Entry inputSpeed='2925.00' inputTorque='2568.44' torqueLoss='106.90'/>
+							<Entry inputSpeed='2925.00' inputTorque='2885.65' torqueLoss='116.42'/>
+							<Entry inputSpeed='2925.00' inputTorque='3202.85' torqueLoss='125.93'/>
+							<Entry inputSpeed='2925.00' inputTorque='3520.06' torqueLoss='135.45'/>
+							<Entry inputSpeed='2925.00' inputTorque='3837.27' torqueLoss='144.96'/>
+							<Entry inputSpeed='2925.00' inputTorque='4154.48' torqueLoss='154.48'/>
+							<Entry inputSpeed='2925.00' inputTorque='4471.69' torqueLoss='164.00'/>
+							<Entry inputSpeed='2925.00' inputTorque='4788.90' torqueLoss='173.51'/>
+							<Entry inputSpeed='2925.00' inputTorque='5106.11' torqueLoss='183.03'/>
+							<Entry inputSpeed='2925.00' inputTorque='5423.31' torqueLoss='192.55'/>
+							<Entry inputSpeed='2925.00' inputTorque='5740.52' torqueLoss='202.06'/>
+							<Entry inputSpeed='2925.00' inputTorque='6057.73' torqueLoss='211.58'/>
+							<Entry inputSpeed='2925.00' inputTorque='6374.94' torqueLoss='221.09'/>
+							<Entry inputSpeed='2925.00' inputTorque='6692.15' torqueLoss='230.61'/>
+							<Entry inputSpeed='2925.00' inputTorque='7009.36' torqueLoss='240.13'/>
+							<Entry inputSpeed='2925.00' inputTorque='7326.57' torqueLoss='249.64'/>
+							<Entry inputSpeed='2925.00' inputTorque='7643.77' torqueLoss='259.16'/>
+							<Entry inputSpeed='2925.00' inputTorque='7960.98' torqueLoss='268.68'/>
+							<Entry inputSpeed='3750.00' inputTorque='31.96' torqueLoss='31.96'/>
+							<Entry inputSpeed='3750.00' inputTorque='70.42' torqueLoss='31.96'/>
+							<Entry inputSpeed='3750.00' inputTorque='110.07' torqueLoss='33.15'/>
+							<Entry inputSpeed='3750.00' inputTorque='149.72' torqueLoss='34.34'/>
+							<Entry inputSpeed='3750.00' inputTorque='189.37' torqueLoss='35.53'/>
+							<Entry inputSpeed='3750.00' inputTorque='268.68' torqueLoss='37.91'/>
+							<Entry inputSpeed='3750.00' inputTorque='347.98' torqueLoss='40.29'/>
+							<Entry inputSpeed='3750.00' inputTorque='506.58' torqueLoss='45.04'/>
+							<Entry inputSpeed='3750.00' inputTorque='665.19' torqueLoss='49.80'/>
+							<Entry inputSpeed='3750.00' inputTorque='823.79' torqueLoss='54.56'/>
+							<Entry inputSpeed='3750.00' inputTorque='982.39' torqueLoss='59.32'/>
+							<Entry inputSpeed='3750.00' inputTorque='1141.00' torqueLoss='64.08'/>
+							<Entry inputSpeed='3750.00' inputTorque='1299.60' torqueLoss='68.83'/>
+							<Entry inputSpeed='3750.00' inputTorque='1458.21' torqueLoss='73.59'/>
+							<Entry inputSpeed='3750.00' inputTorque='1616.81' torqueLoss='78.35'/>
+							<Entry inputSpeed='3750.00' inputTorque='1934.02' torqueLoss='87.87'/>
+							<Entry inputSpeed='3750.00' inputTorque='2251.23' torqueLoss='97.38'/>
+							<Entry inputSpeed='3750.00' inputTorque='2568.44' torqueLoss='106.90'/>
+							<Entry inputSpeed='3750.00' inputTorque='2885.65' torqueLoss='116.42'/>
+							<Entry inputSpeed='3750.00' inputTorque='3202.85' torqueLoss='125.93'/>
+							<Entry inputSpeed='3750.00' inputTorque='3520.06' torqueLoss='135.45'/>
+							<Entry inputSpeed='3750.00' inputTorque='3837.27' torqueLoss='144.96'/>
+							<Entry inputSpeed='3750.00' inputTorque='4154.48' torqueLoss='154.48'/>
+							<Entry inputSpeed='3750.00' inputTorque='4471.69' torqueLoss='164.00'/>
+							<Entry inputSpeed='3750.00' inputTorque='4788.90' torqueLoss='173.51'/>
+							<Entry inputSpeed='3750.00' inputTorque='5106.11' torqueLoss='183.03'/>
+							<Entry inputSpeed='3750.00' inputTorque='5423.31' torqueLoss='192.55'/>
+							<Entry inputSpeed='3750.00' inputTorque='5740.52' torqueLoss='202.06'/>
+							<Entry inputSpeed='3750.00' inputTorque='6057.73' torqueLoss='211.58'/>
+							<Entry inputSpeed='3750.00' inputTorque='6374.94' torqueLoss='221.09'/>
+							<Entry inputSpeed='3750.00' inputTorque='6692.15' torqueLoss='230.61'/>
+							<Entry inputSpeed='3750.00' inputTorque='7009.36' torqueLoss='240.13'/>
+							<Entry inputSpeed='3750.00' inputTorque='7326.57' torqueLoss='249.64'/>
+							<Entry inputSpeed='3750.00' inputTorque='7643.77' torqueLoss='259.16'/>
+							<Entry inputSpeed='3750.00' inputTorque='7960.98' torqueLoss='268.68'/>
+							<Entry inputSpeed='0.00' inputTorque='-31.96' torqueLoss='31.96'/>
+							<Entry inputSpeed='0.00' inputTorque='-70.42' torqueLoss='31.96'/>
+							<Entry inputSpeed='0.00' inputTorque='-110.07' torqueLoss='33.15'/>
+							<Entry inputSpeed='0.00' inputTorque='-149.72' torqueLoss='34.34'/>
+							<Entry inputSpeed='0.00' inputTorque='-189.37' torqueLoss='35.53'/>
+							<Entry inputSpeed='0.00' inputTorque='-268.68' torqueLoss='37.91'/>
+							<Entry inputSpeed='0.00' inputTorque='-347.98' torqueLoss='40.29'/>
+							<Entry inputSpeed='0.00' inputTorque='-506.58' torqueLoss='45.04'/>
+							<Entry inputSpeed='0.00' inputTorque='-665.19' torqueLoss='49.80'/>
+							<Entry inputSpeed='0.00' inputTorque='-823.79' torqueLoss='54.56'/>
+							<Entry inputSpeed='0.00' inputTorque='-982.39' torqueLoss='59.32'/>
+							<Entry inputSpeed='0.00' inputTorque='-1141.00' torqueLoss='64.08'/>
+							<Entry inputSpeed='0.00' inputTorque='-1299.60' torqueLoss='68.83'/>
+							<Entry inputSpeed='0.00' inputTorque='-1458.21' torqueLoss='73.59'/>
+							<Entry inputSpeed='0.00' inputTorque='-1616.81' torqueLoss='78.35'/>
+							<Entry inputSpeed='0.00' inputTorque='-1934.02' torqueLoss='87.87'/>
+							<Entry inputSpeed='0.00' inputTorque='-2251.23' torqueLoss='97.38'/>
+							<Entry inputSpeed='0.00' inputTorque='-2568.44' torqueLoss='106.90'/>
+							<Entry inputSpeed='0.00' inputTorque='-2885.65' torqueLoss='116.42'/>
+							<Entry inputSpeed='0.00' inputTorque='-3202.85' torqueLoss='125.93'/>
+							<Entry inputSpeed='0.00' inputTorque='-3520.06' torqueLoss='135.45'/>
+							<Entry inputSpeed='0.00' inputTorque='-3837.27' torqueLoss='144.96'/>
+							<Entry inputSpeed='0.00' inputTorque='-4154.48' torqueLoss='154.48'/>
+							<Entry inputSpeed='0.00' inputTorque='-4471.69' torqueLoss='164.00'/>
+							<Entry inputSpeed='0.00' inputTorque='-4788.90' torqueLoss='173.51'/>
+							<Entry inputSpeed='0.00' inputTorque='-5106.11' torqueLoss='183.03'/>
+							<Entry inputSpeed='0.00' inputTorque='-5423.31' torqueLoss='192.55'/>
+							<Entry inputSpeed='0.00' inputTorque='-5740.52' torqueLoss='202.06'/>
+							<Entry inputSpeed='0.00' inputTorque='-6057.73' torqueLoss='211.58'/>
+							<Entry inputSpeed='0.00' inputTorque='-6374.94' torqueLoss='221.09'/>
+							<Entry inputSpeed='0.00' inputTorque='-6692.15' torqueLoss='230.61'/>
+							<Entry inputSpeed='0.00' inputTorque='-7009.36' torqueLoss='240.13'/>
+							<Entry inputSpeed='0.00' inputTorque='-7326.57' torqueLoss='249.64'/>
+							<Entry inputSpeed='0.00' inputTorque='-7643.77' torqueLoss='259.16'/>
+							<Entry inputSpeed='0.00' inputTorque='-7960.98' torqueLoss='268.68'/>
+							<Entry inputSpeed='325.00' inputTorque='-31.96' torqueLoss='31.96'/>
+							<Entry inputSpeed='325.00' inputTorque='-70.42' torqueLoss='31.96'/>
+							<Entry inputSpeed='325.00' inputTorque='-110.07' torqueLoss='33.15'/>
+							<Entry inputSpeed='325.00' inputTorque='-149.72' torqueLoss='34.34'/>
+							<Entry inputSpeed='325.00' inputTorque='-189.37' torqueLoss='35.53'/>
+							<Entry inputSpeed='325.00' inputTorque='-268.68' torqueLoss='37.91'/>
+							<Entry inputSpeed='325.00' inputTorque='-347.98' torqueLoss='40.29'/>
+							<Entry inputSpeed='325.00' inputTorque='-506.58' torqueLoss='45.04'/>
+							<Entry inputSpeed='325.00' inputTorque='-665.19' torqueLoss='49.80'/>
+							<Entry inputSpeed='325.00' inputTorque='-823.79' torqueLoss='54.56'/>
+							<Entry inputSpeed='325.00' inputTorque='-982.39' torqueLoss='59.32'/>
+							<Entry inputSpeed='325.00' inputTorque='-1141.00' torqueLoss='64.08'/>
+							<Entry inputSpeed='325.00' inputTorque='-1299.60' torqueLoss='68.83'/>
+							<Entry inputSpeed='325.00' inputTorque='-1458.21' torqueLoss='73.59'/>
+							<Entry inputSpeed='325.00' inputTorque='-1616.81' torqueLoss='78.35'/>
+							<Entry inputSpeed='325.00' inputTorque='-1934.02' torqueLoss='87.87'/>
+							<Entry inputSpeed='325.00' inputTorque='-2251.23' torqueLoss='97.38'/>
+							<Entry inputSpeed='325.00' inputTorque='-2568.44' torqueLoss='106.90'/>
+							<Entry inputSpeed='325.00' inputTorque='-2885.65' torqueLoss='116.42'/>
+							<Entry inputSpeed='325.00' inputTorque='-3202.85' torqueLoss='125.93'/>
+							<Entry inputSpeed='325.00' inputTorque='-3520.06' torqueLoss='135.45'/>
+							<Entry inputSpeed='325.00' inputTorque='-3837.27' torqueLoss='144.96'/>
+							<Entry inputSpeed='325.00' inputTorque='-4154.48' torqueLoss='154.48'/>
+							<Entry inputSpeed='325.00' inputTorque='-4471.69' torqueLoss='164.00'/>
+							<Entry inputSpeed='325.00' inputTorque='-4788.90' torqueLoss='173.51'/>
+							<Entry inputSpeed='325.00' inputTorque='-5106.11' torqueLoss='183.03'/>
+							<Entry inputSpeed='325.00' inputTorque='-5423.31' torqueLoss='192.55'/>
+							<Entry inputSpeed='325.00' inputTorque='-5740.52' torqueLoss='202.06'/>
+							<Entry inputSpeed='325.00' inputTorque='-6057.73' torqueLoss='211.58'/>
+							<Entry inputSpeed='325.00' inputTorque='-6374.94' torqueLoss='221.09'/>
+							<Entry inputSpeed='325.00' inputTorque='-6692.15' torqueLoss='230.61'/>
+							<Entry inputSpeed='325.00' inputTorque='-7009.36' torqueLoss='240.13'/>
+							<Entry inputSpeed='325.00' inputTorque='-7326.57' torqueLoss='249.64'/>
+							<Entry inputSpeed='325.00' inputTorque='-7643.77' torqueLoss='259.16'/>
+							<Entry inputSpeed='325.00' inputTorque='-7960.98' torqueLoss='268.68'/>
+							<Entry inputSpeed='650.00' inputTorque='-31.96' torqueLoss='31.96'/>
+							<Entry inputSpeed='650.00' inputTorque='-70.42' torqueLoss='31.96'/>
+							<Entry inputSpeed='650.00' inputTorque='-110.07' torqueLoss='33.15'/>
+							<Entry inputSpeed='650.00' inputTorque='-149.72' torqueLoss='34.34'/>
+							<Entry inputSpeed='650.00' inputTorque='-189.37' torqueLoss='35.53'/>
+							<Entry inputSpeed='650.00' inputTorque='-268.68' torqueLoss='37.91'/>
+							<Entry inputSpeed='650.00' inputTorque='-347.98' torqueLoss='40.29'/>
+							<Entry inputSpeed='650.00' inputTorque='-506.58' torqueLoss='45.04'/>
+							<Entry inputSpeed='650.00' inputTorque='-665.19' torqueLoss='49.80'/>
+							<Entry inputSpeed='650.00' inputTorque='-823.79' torqueLoss='54.56'/>
+							<Entry inputSpeed='650.00' inputTorque='-982.39' torqueLoss='59.32'/>
+							<Entry inputSpeed='650.00' inputTorque='-1141.00' torqueLoss='64.08'/>
+							<Entry inputSpeed='650.00' inputTorque='-1299.60' torqueLoss='68.83'/>
+							<Entry inputSpeed='650.00' inputTorque='-1458.21' torqueLoss='73.59'/>
+							<Entry inputSpeed='650.00' inputTorque='-1616.81' torqueLoss='78.35'/>
+							<Entry inputSpeed='650.00' inputTorque='-1934.02' torqueLoss='87.87'/>
+							<Entry inputSpeed='650.00' inputTorque='-2251.23' torqueLoss='97.38'/>
+							<Entry inputSpeed='650.00' inputTorque='-2568.44' torqueLoss='106.90'/>
+							<Entry inputSpeed='650.00' inputTorque='-2885.65' torqueLoss='116.42'/>
+							<Entry inputSpeed='650.00' inputTorque='-3202.85' torqueLoss='125.93'/>
+							<Entry inputSpeed='650.00' inputTorque='-3520.06' torqueLoss='135.45'/>
+							<Entry inputSpeed='650.00' inputTorque='-3837.27' torqueLoss='144.96'/>
+							<Entry inputSpeed='650.00' inputTorque='-4154.48' torqueLoss='154.48'/>
+							<Entry inputSpeed='650.00' inputTorque='-4471.69' torqueLoss='164.00'/>
+							<Entry inputSpeed='650.00' inputTorque='-4788.90' torqueLoss='173.51'/>
+							<Entry inputSpeed='650.00' inputTorque='-5106.11' torqueLoss='183.03'/>
+							<Entry inputSpeed='650.00' inputTorque='-5423.31' torqueLoss='192.55'/>
+							<Entry inputSpeed='650.00' inputTorque='-5740.52' torqueLoss='202.06'/>
+							<Entry inputSpeed='650.00' inputTorque='-6057.73' torqueLoss='211.58'/>
+							<Entry inputSpeed='650.00' inputTorque='-6374.94' torqueLoss='221.09'/>
+							<Entry inputSpeed='650.00' inputTorque='-6692.15' torqueLoss='230.61'/>
+							<Entry inputSpeed='650.00' inputTorque='-7009.36' torqueLoss='240.13'/>
+							<Entry inputSpeed='650.00' inputTorque='-7326.57' torqueLoss='249.64'/>
+							<Entry inputSpeed='650.00' inputTorque='-7643.77' torqueLoss='259.16'/>
+							<Entry inputSpeed='650.00' inputTorque='-7960.98' torqueLoss='268.68'/>
+							<Entry inputSpeed='975.00' inputTorque='-31.96' torqueLoss='31.96'/>
+							<Entry inputSpeed='975.00' inputTorque='-70.42' torqueLoss='31.96'/>
+							<Entry inputSpeed='975.00' inputTorque='-110.07' torqueLoss='33.15'/>
+							<Entry inputSpeed='975.00' inputTorque='-149.72' torqueLoss='34.34'/>
+							<Entry inputSpeed='975.00' inputTorque='-189.37' torqueLoss='35.53'/>
+							<Entry inputSpeed='975.00' inputTorque='-268.68' torqueLoss='37.91'/>
+							<Entry inputSpeed='975.00' inputTorque='-347.98' torqueLoss='40.29'/>
+							<Entry inputSpeed='975.00' inputTorque='-506.58' torqueLoss='45.04'/>
+							<Entry inputSpeed='975.00' inputTorque='-665.19' torqueLoss='49.80'/>
+							<Entry inputSpeed='975.00' inputTorque='-823.79' torqueLoss='54.56'/>
+							<Entry inputSpeed='975.00' inputTorque='-982.39' torqueLoss='59.32'/>
+							<Entry inputSpeed='975.00' inputTorque='-1141.00' torqueLoss='64.08'/>
+							<Entry inputSpeed='975.00' inputTorque='-1299.60' torqueLoss='68.83'/>
+							<Entry inputSpeed='975.00' inputTorque='-1458.21' torqueLoss='73.59'/>
+							<Entry inputSpeed='975.00' inputTorque='-1616.81' torqueLoss='78.35'/>
+							<Entry inputSpeed='975.00' inputTorque='-1934.02' torqueLoss='87.87'/>
+							<Entry inputSpeed='975.00' inputTorque='-2251.23' torqueLoss='97.38'/>
+							<Entry inputSpeed='975.00' inputTorque='-2568.44' torqueLoss='106.90'/>
+							<Entry inputSpeed='975.00' inputTorque='-2885.65' torqueLoss='116.42'/>
+							<Entry inputSpeed='975.00' inputTorque='-3202.85' torqueLoss='125.93'/>
+							<Entry inputSpeed='975.00' inputTorque='-3520.06' torqueLoss='135.45'/>
+							<Entry inputSpeed='975.00' inputTorque='-3837.27' torqueLoss='144.96'/>
+							<Entry inputSpeed='975.00' inputTorque='-4154.48' torqueLoss='154.48'/>
+							<Entry inputSpeed='975.00' inputTorque='-4471.69' torqueLoss='164.00'/>
+							<Entry inputSpeed='975.00' inputTorque='-4788.90' torqueLoss='173.51'/>
+							<Entry inputSpeed='975.00' inputTorque='-5106.11' torqueLoss='183.03'/>
+							<Entry inputSpeed='975.00' inputTorque='-5423.31' torqueLoss='192.55'/>
+							<Entry inputSpeed='975.00' inputTorque='-5740.52' torqueLoss='202.06'/>
+							<Entry inputSpeed='975.00' inputTorque='-6057.73' torqueLoss='211.58'/>
+							<Entry inputSpeed='975.00' inputTorque='-6374.94' torqueLoss='221.09'/>
+							<Entry inputSpeed='975.00' inputTorque='-6692.15' torqueLoss='230.61'/>
+							<Entry inputSpeed='975.00' inputTorque='-7009.36' torqueLoss='240.13'/>
+							<Entry inputSpeed='975.00' inputTorque='-7326.57' torqueLoss='249.64'/>
+							<Entry inputSpeed='975.00' inputTorque='-7643.77' torqueLoss='259.16'/>
+							<Entry inputSpeed='975.00' inputTorque='-7960.98' torqueLoss='268.68'/>
+							<Entry inputSpeed='1300.00' inputTorque='-31.96' torqueLoss='31.96'/>
+							<Entry inputSpeed='1300.00' inputTorque='-70.42' torqueLoss='31.96'/>
+							<Entry inputSpeed='1300.00' inputTorque='-110.07' torqueLoss='33.15'/>
+							<Entry inputSpeed='1300.00' inputTorque='-149.72' torqueLoss='34.34'/>
+							<Entry inputSpeed='1300.00' inputTorque='-189.37' torqueLoss='35.53'/>
+							<Entry inputSpeed='1300.00' inputTorque='-268.68' torqueLoss='37.91'/>
+							<Entry inputSpeed='1300.00' inputTorque='-347.98' torqueLoss='40.29'/>
+							<Entry inputSpeed='1300.00' inputTorque='-506.58' torqueLoss='45.04'/>
+							<Entry inputSpeed='1300.00' inputTorque='-665.19' torqueLoss='49.80'/>
+							<Entry inputSpeed='1300.00' inputTorque='-823.79' torqueLoss='54.56'/>
+							<Entry inputSpeed='1300.00' inputTorque='-982.39' torqueLoss='59.32'/>
+							<Entry inputSpeed='1300.00' inputTorque='-1141.00' torqueLoss='64.08'/>
+							<Entry inputSpeed='1300.00' inputTorque='-1299.60' torqueLoss='68.83'/>
+							<Entry inputSpeed='1300.00' inputTorque='-1458.21' torqueLoss='73.59'/>
+							<Entry inputSpeed='1300.00' inputTorque='-1616.81' torqueLoss='78.35'/>
+							<Entry inputSpeed='1300.00' inputTorque='-1934.02' torqueLoss='87.87'/>
+							<Entry inputSpeed='1300.00' inputTorque='-2251.23' torqueLoss='97.38'/>
+							<Entry inputSpeed='1300.00' inputTorque='-2568.44' torqueLoss='106.90'/>
+							<Entry inputSpeed='1300.00' inputTorque='-2885.65' torqueLoss='116.42'/>
+							<Entry inputSpeed='1300.00' inputTorque='-3202.85' torqueLoss='125.93'/>
+							<Entry inputSpeed='1300.00' inputTorque='-3520.06' torqueLoss='135.45'/>
+							<Entry inputSpeed='1300.00' inputTorque='-3837.27' torqueLoss='144.96'/>
+							<Entry inputSpeed='1300.00' inputTorque='-4154.48' torqueLoss='154.48'/>
+							<Entry inputSpeed='1300.00' inputTorque='-4471.69' torqueLoss='164.00'/>
+							<Entry inputSpeed='1300.00' inputTorque='-4788.90' torqueLoss='173.51'/>
+							<Entry inputSpeed='1300.00' inputTorque='-5106.11' torqueLoss='183.03'/>
+							<Entry inputSpeed='1300.00' inputTorque='-5423.31' torqueLoss='192.55'/>
+							<Entry inputSpeed='1300.00' inputTorque='-5740.52' torqueLoss='202.06'/>
+							<Entry inputSpeed='1300.00' inputTorque='-6057.73' torqueLoss='211.58'/>
+							<Entry inputSpeed='1300.00' inputTorque='-6374.94' torqueLoss='221.09'/>
+							<Entry inputSpeed='1300.00' inputTorque='-6692.15' torqueLoss='230.61'/>
+							<Entry inputSpeed='1300.00' inputTorque='-7009.36' torqueLoss='240.13'/>
+							<Entry inputSpeed='1300.00' inputTorque='-7326.57' torqueLoss='249.64'/>
+							<Entry inputSpeed='1300.00' inputTorque='-7643.77' torqueLoss='259.16'/>
+							<Entry inputSpeed='1300.00' inputTorque='-7960.98' torqueLoss='268.68'/>
+							<Entry inputSpeed='1625.00' inputTorque='-31.96' torqueLoss='31.96'/>
+							<Entry inputSpeed='1625.00' inputTorque='-70.42' torqueLoss='31.96'/>
+							<Entry inputSpeed='1625.00' inputTorque='-110.07' torqueLoss='33.15'/>
+							<Entry inputSpeed='1625.00' inputTorque='-149.72' torqueLoss='34.34'/>
+							<Entry inputSpeed='1625.00' inputTorque='-189.37' torqueLoss='35.53'/>
+							<Entry inputSpeed='1625.00' inputTorque='-268.68' torqueLoss='37.91'/>
+							<Entry inputSpeed='1625.00' inputTorque='-347.98' torqueLoss='40.29'/>
+							<Entry inputSpeed='1625.00' inputTorque='-506.58' torqueLoss='45.04'/>
+							<Entry inputSpeed='1625.00' inputTorque='-665.19' torqueLoss='49.80'/>
+							<Entry inputSpeed='1625.00' inputTorque='-823.79' torqueLoss='54.56'/>
+							<Entry inputSpeed='1625.00' inputTorque='-982.39' torqueLoss='59.32'/>
+							<Entry inputSpeed='1625.00' inputTorque='-1141.00' torqueLoss='64.08'/>
+							<Entry inputSpeed='1625.00' inputTorque='-1299.60' torqueLoss='68.83'/>
+							<Entry inputSpeed='1625.00' inputTorque='-1458.21' torqueLoss='73.59'/>
+							<Entry inputSpeed='1625.00' inputTorque='-1616.81' torqueLoss='78.35'/>
+							<Entry inputSpeed='1625.00' inputTorque='-1934.02' torqueLoss='87.87'/>
+							<Entry inputSpeed='1625.00' inputTorque='-2251.23' torqueLoss='97.38'/>
+							<Entry inputSpeed='1625.00' inputTorque='-2568.44' torqueLoss='106.90'/>
+							<Entry inputSpeed='1625.00' inputTorque='-2885.65' torqueLoss='116.42'/>
+							<Entry inputSpeed='1625.00' inputTorque='-3202.85' torqueLoss='125.93'/>
+							<Entry inputSpeed='1625.00' inputTorque='-3520.06' torqueLoss='135.45'/>
+							<Entry inputSpeed='1625.00' inputTorque='-3837.27' torqueLoss='144.96'/>
+							<Entry inputSpeed='1625.00' inputTorque='-4154.48' torqueLoss='154.48'/>
+							<Entry inputSpeed='1625.00' inputTorque='-4471.69' torqueLoss='164.00'/>
+							<Entry inputSpeed='1625.00' inputTorque='-4788.90' torqueLoss='173.51'/>
+							<Entry inputSpeed='1625.00' inputTorque='-5106.11' torqueLoss='183.03'/>
+							<Entry inputSpeed='1625.00' inputTorque='-5423.31' torqueLoss='192.55'/>
+							<Entry inputSpeed='1625.00' inputTorque='-5740.52' torqueLoss='202.06'/>
+							<Entry inputSpeed='1625.00' inputTorque='-6057.73' torqueLoss='211.58'/>
+							<Entry inputSpeed='1625.00' inputTorque='-6374.94' torqueLoss='221.09'/>
+							<Entry inputSpeed='1625.00' inputTorque='-6692.15' torqueLoss='230.61'/>
+							<Entry inputSpeed='1625.00' inputTorque='-7009.36' torqueLoss='240.13'/>
+							<Entry inputSpeed='1625.00' inputTorque='-7326.57' torqueLoss='249.64'/>
+							<Entry inputSpeed='1625.00' inputTorque='-7643.77' torqueLoss='259.16'/>
+							<Entry inputSpeed='1625.00' inputTorque='-7960.98' torqueLoss='268.68'/>
+							<Entry inputSpeed='1950.00' inputTorque='-31.96' torqueLoss='31.96'/>
+							<Entry inputSpeed='1950.00' inputTorque='-70.42' torqueLoss='31.96'/>
+							<Entry inputSpeed='1950.00' inputTorque='-110.07' torqueLoss='33.15'/>
+							<Entry inputSpeed='1950.00' inputTorque='-149.72' torqueLoss='34.34'/>
+							<Entry inputSpeed='1950.00' inputTorque='-189.37' torqueLoss='35.53'/>
+							<Entry inputSpeed='1950.00' inputTorque='-268.68' torqueLoss='37.91'/>
+							<Entry inputSpeed='1950.00' inputTorque='-347.98' torqueLoss='40.29'/>
+							<Entry inputSpeed='1950.00' inputTorque='-506.58' torqueLoss='45.04'/>
+							<Entry inputSpeed='1950.00' inputTorque='-665.19' torqueLoss='49.80'/>
+							<Entry inputSpeed='1950.00' inputTorque='-823.79' torqueLoss='54.56'/>
+							<Entry inputSpeed='1950.00' inputTorque='-982.39' torqueLoss='59.32'/>
+							<Entry inputSpeed='1950.00' inputTorque='-1141.00' torqueLoss='64.08'/>
+							<Entry inputSpeed='1950.00' inputTorque='-1299.60' torqueLoss='68.83'/>
+							<Entry inputSpeed='1950.00' inputTorque='-1458.21' torqueLoss='73.59'/>
+							<Entry inputSpeed='1950.00' inputTorque='-1616.81' torqueLoss='78.35'/>
+							<Entry inputSpeed='1950.00' inputTorque='-1934.02' torqueLoss='87.87'/>
+							<Entry inputSpeed='1950.00' inputTorque='-2251.23' torqueLoss='97.38'/>
+							<Entry inputSpeed='1950.00' inputTorque='-2568.44' torqueLoss='106.90'/>
+							<Entry inputSpeed='1950.00' inputTorque='-2885.65' torqueLoss='116.42'/>
+							<Entry inputSpeed='1950.00' inputTorque='-3202.85' torqueLoss='125.93'/>
+							<Entry inputSpeed='1950.00' inputTorque='-3520.06' torqueLoss='135.45'/>
+							<Entry inputSpeed='1950.00' inputTorque='-3837.27' torqueLoss='144.96'/>
+							<Entry inputSpeed='1950.00' inputTorque='-4154.48' torqueLoss='154.48'/>
+							<Entry inputSpeed='1950.00' inputTorque='-4471.69' torqueLoss='164.00'/>
+							<Entry inputSpeed='1950.00' inputTorque='-4788.90' torqueLoss='173.51'/>
+							<Entry inputSpeed='1950.00' inputTorque='-5106.11' torqueLoss='183.03'/>
+							<Entry inputSpeed='1950.00' inputTorque='-5423.31' torqueLoss='192.55'/>
+							<Entry inputSpeed='1950.00' inputTorque='-5740.52' torqueLoss='202.06'/>
+							<Entry inputSpeed='1950.00' inputTorque='-6057.73' torqueLoss='211.58'/>
+							<Entry inputSpeed='1950.00' inputTorque='-6374.94' torqueLoss='221.09'/>
+							<Entry inputSpeed='1950.00' inputTorque='-6692.15' torqueLoss='230.61'/>
+							<Entry inputSpeed='1950.00' inputTorque='-7009.36' torqueLoss='240.13'/>
+							<Entry inputSpeed='1950.00' inputTorque='-7326.57' torqueLoss='249.64'/>
+							<Entry inputSpeed='1950.00' inputTorque='-7643.77' torqueLoss='259.16'/>
+							<Entry inputSpeed='1950.00' inputTorque='-7960.98' torqueLoss='268.68'/>
+							<Entry inputSpeed='2275.00' inputTorque='-31.96' torqueLoss='31.96'/>
+							<Entry inputSpeed='2275.00' inputTorque='-70.42' torqueLoss='31.96'/>
+							<Entry inputSpeed='2275.00' inputTorque='-110.07' torqueLoss='33.15'/>
+							<Entry inputSpeed='2275.00' inputTorque='-149.72' torqueLoss='34.34'/>
+							<Entry inputSpeed='2275.00' inputTorque='-189.37' torqueLoss='35.53'/>
+							<Entry inputSpeed='2275.00' inputTorque='-268.68' torqueLoss='37.91'/>
+							<Entry inputSpeed='2275.00' inputTorque='-347.98' torqueLoss='40.29'/>
+							<Entry inputSpeed='2275.00' inputTorque='-506.58' torqueLoss='45.04'/>
+							<Entry inputSpeed='2275.00' inputTorque='-665.19' torqueLoss='49.80'/>
+							<Entry inputSpeed='2275.00' inputTorque='-823.79' torqueLoss='54.56'/>
+							<Entry inputSpeed='2275.00' inputTorque='-982.39' torqueLoss='59.32'/>
+							<Entry inputSpeed='2275.00' inputTorque='-1141.00' torqueLoss='64.08'/>
+							<Entry inputSpeed='2275.00' inputTorque='-1299.60' torqueLoss='68.83'/>
+							<Entry inputSpeed='2275.00' inputTorque='-1458.21' torqueLoss='73.59'/>
+							<Entry inputSpeed='2275.00' inputTorque='-1616.81' torqueLoss='78.35'/>
+							<Entry inputSpeed='2275.00' inputTorque='-1934.02' torqueLoss='87.87'/>
+							<Entry inputSpeed='2275.00' inputTorque='-2251.23' torqueLoss='97.38'/>
+							<Entry inputSpeed='2275.00' inputTorque='-2568.44' torqueLoss='106.90'/>
+							<Entry inputSpeed='2275.00' inputTorque='-2885.65' torqueLoss='116.42'/>
+							<Entry inputSpeed='2275.00' inputTorque='-3202.85' torqueLoss='125.93'/>
+							<Entry inputSpeed='2275.00' inputTorque='-3520.06' torqueLoss='135.45'/>
+							<Entry inputSpeed='2275.00' inputTorque='-3837.27' torqueLoss='144.96'/>
+							<Entry inputSpeed='2275.00' inputTorque='-4154.48' torqueLoss='154.48'/>
+							<Entry inputSpeed='2275.00' inputTorque='-4471.69' torqueLoss='164.00'/>
+							<Entry inputSpeed='2275.00' inputTorque='-4788.90' torqueLoss='173.51'/>
+							<Entry inputSpeed='2275.00' inputTorque='-5106.11' torqueLoss='183.03'/>
+							<Entry inputSpeed='2275.00' inputTorque='-5423.31' torqueLoss='192.55'/>
+							<Entry inputSpeed='2275.00' inputTorque='-5740.52' torqueLoss='202.06'/>
+							<Entry inputSpeed='2275.00' inputTorque='-6057.73' torqueLoss='211.58'/>
+							<Entry inputSpeed='2275.00' inputTorque='-6374.94' torqueLoss='221.09'/>
+							<Entry inputSpeed='2275.00' inputTorque='-6692.15' torqueLoss='230.61'/>
+							<Entry inputSpeed='2275.00' inputTorque='-7009.36' torqueLoss='240.13'/>
+							<Entry inputSpeed='2275.00' inputTorque='-7326.57' torqueLoss='249.64'/>
+							<Entry inputSpeed='2275.00' inputTorque='-7643.77' torqueLoss='259.16'/>
+							<Entry inputSpeed='2275.00' inputTorque='-7960.98' torqueLoss='268.68'/>
+							<Entry inputSpeed='2600.00' inputTorque='-31.96' torqueLoss='31.96'/>
+							<Entry inputSpeed='2600.00' inputTorque='-70.42' torqueLoss='31.96'/>
+							<Entry inputSpeed='2600.00' inputTorque='-110.07' torqueLoss='33.15'/>
+							<Entry inputSpeed='2600.00' inputTorque='-149.72' torqueLoss='34.34'/>
+							<Entry inputSpeed='2600.00' inputTorque='-189.37' torqueLoss='35.53'/>
+							<Entry inputSpeed='2600.00' inputTorque='-268.68' torqueLoss='37.91'/>
+							<Entry inputSpeed='2600.00' inputTorque='-347.98' torqueLoss='40.29'/>
+							<Entry inputSpeed='2600.00' inputTorque='-506.58' torqueLoss='45.04'/>
+							<Entry inputSpeed='2600.00' inputTorque='-665.19' torqueLoss='49.80'/>
+							<Entry inputSpeed='2600.00' inputTorque='-823.79' torqueLoss='54.56'/>
+							<Entry inputSpeed='2600.00' inputTorque='-982.39' torqueLoss='59.32'/>
+							<Entry inputSpeed='2600.00' inputTorque='-1141.00' torqueLoss='64.08'/>
+							<Entry inputSpeed='2600.00' inputTorque='-1299.60' torqueLoss='68.83'/>
+							<Entry inputSpeed='2600.00' inputTorque='-1458.21' torqueLoss='73.59'/>
+							<Entry inputSpeed='2600.00' inputTorque='-1616.81' torqueLoss='78.35'/>
+							<Entry inputSpeed='2600.00' inputTorque='-1934.02' torqueLoss='87.87'/>
+							<Entry inputSpeed='2600.00' inputTorque='-2251.23' torqueLoss='97.38'/>
+							<Entry inputSpeed='2600.00' inputTorque='-2568.44' torqueLoss='106.90'/>
+							<Entry inputSpeed='2600.00' inputTorque='-2885.65' torqueLoss='116.42'/>
+							<Entry inputSpeed='2600.00' inputTorque='-3202.85' torqueLoss='125.93'/>
+							<Entry inputSpeed='2600.00' inputTorque='-3520.06' torqueLoss='135.45'/>
+							<Entry inputSpeed='2600.00' inputTorque='-3837.27' torqueLoss='144.96'/>
+							<Entry inputSpeed='2600.00' inputTorque='-4154.48' torqueLoss='154.48'/>
+							<Entry inputSpeed='2600.00' inputTorque='-4471.69' torqueLoss='164.00'/>
+							<Entry inputSpeed='2600.00' inputTorque='-4788.90' torqueLoss='173.51'/>
+							<Entry inputSpeed='2600.00' inputTorque='-5106.11' torqueLoss='183.03'/>
+							<Entry inputSpeed='2600.00' inputTorque='-5423.31' torqueLoss='192.55'/>
+							<Entry inputSpeed='2600.00' inputTorque='-5740.52' torqueLoss='202.06'/>
+							<Entry inputSpeed='2600.00' inputTorque='-6057.73' torqueLoss='211.58'/>
+							<Entry inputSpeed='2600.00' inputTorque='-6374.94' torqueLoss='221.09'/>
+							<Entry inputSpeed='2600.00' inputTorque='-6692.15' torqueLoss='230.61'/>
+							<Entry inputSpeed='2600.00' inputTorque='-7009.36' torqueLoss='240.13'/>
+							<Entry inputSpeed='2600.00' inputTorque='-7326.57' torqueLoss='249.64'/>
+							<Entry inputSpeed='2600.00' inputTorque='-7643.77' torqueLoss='259.16'/>
+							<Entry inputSpeed='2600.00' inputTorque='-7960.98' torqueLoss='268.68'/>
+							<Entry inputSpeed='2925.00' inputTorque='-31.96' torqueLoss='31.96'/>
+							<Entry inputSpeed='2925.00' inputTorque='-70.42' torqueLoss='31.96'/>
+							<Entry inputSpeed='2925.00' inputTorque='-110.07' torqueLoss='33.15'/>
+							<Entry inputSpeed='2925.00' inputTorque='-149.72' torqueLoss='34.34'/>
+							<Entry inputSpeed='2925.00' inputTorque='-189.37' torqueLoss='35.53'/>
+							<Entry inputSpeed='2925.00' inputTorque='-268.68' torqueLoss='37.91'/>
+							<Entry inputSpeed='2925.00' inputTorque='-347.98' torqueLoss='40.29'/>
+							<Entry inputSpeed='2925.00' inputTorque='-506.58' torqueLoss='45.04'/>
+							<Entry inputSpeed='2925.00' inputTorque='-665.19' torqueLoss='49.80'/>
+							<Entry inputSpeed='2925.00' inputTorque='-823.79' torqueLoss='54.56'/>
+							<Entry inputSpeed='2925.00' inputTorque='-982.39' torqueLoss='59.32'/>
+							<Entry inputSpeed='2925.00' inputTorque='-1141.00' torqueLoss='64.08'/>
+							<Entry inputSpeed='2925.00' inputTorque='-1299.60' torqueLoss='68.83'/>
+							<Entry inputSpeed='2925.00' inputTorque='-1458.21' torqueLoss='73.59'/>
+							<Entry inputSpeed='2925.00' inputTorque='-1616.81' torqueLoss='78.35'/>
+							<Entry inputSpeed='2925.00' inputTorque='-1934.02' torqueLoss='87.87'/>
+							<Entry inputSpeed='2925.00' inputTorque='-2251.23' torqueLoss='97.38'/>
+							<Entry inputSpeed='2925.00' inputTorque='-2568.44' torqueLoss='106.90'/>
+							<Entry inputSpeed='2925.00' inputTorque='-2885.65' torqueLoss='116.42'/>
+							<Entry inputSpeed='2925.00' inputTorque='-3202.85' torqueLoss='125.93'/>
+							<Entry inputSpeed='2925.00' inputTorque='-3520.06' torqueLoss='135.45'/>
+							<Entry inputSpeed='2925.00' inputTorque='-3837.27' torqueLoss='144.96'/>
+							<Entry inputSpeed='2925.00' inputTorque='-4154.48' torqueLoss='154.48'/>
+							<Entry inputSpeed='2925.00' inputTorque='-4471.69' torqueLoss='164.00'/>
+							<Entry inputSpeed='2925.00' inputTorque='-4788.90' torqueLoss='173.51'/>
+							<Entry inputSpeed='2925.00' inputTorque='-5106.11' torqueLoss='183.03'/>
+							<Entry inputSpeed='2925.00' inputTorque='-5423.31' torqueLoss='192.55'/>
+							<Entry inputSpeed='2925.00' inputTorque='-5740.52' torqueLoss='202.06'/>
+							<Entry inputSpeed='2925.00' inputTorque='-6057.73' torqueLoss='211.58'/>
+							<Entry inputSpeed='2925.00' inputTorque='-6374.94' torqueLoss='221.09'/>
+							<Entry inputSpeed='2925.00' inputTorque='-6692.15' torqueLoss='230.61'/>
+							<Entry inputSpeed='2925.00' inputTorque='-7009.36' torqueLoss='240.13'/>
+							<Entry inputSpeed='2925.00' inputTorque='-7326.57' torqueLoss='249.64'/>
+							<Entry inputSpeed='2925.00' inputTorque='-7643.77' torqueLoss='259.16'/>
+							<Entry inputSpeed='2925.00' inputTorque='-7960.98' torqueLoss='268.68'/>
+							<Entry inputSpeed='3250.00' inputTorque='-31.96' torqueLoss='31.96'/>
+							<Entry inputSpeed='3250.00' inputTorque='-70.42' torqueLoss='31.96'/>
+							<Entry inputSpeed='3250.00' inputTorque='-110.07' torqueLoss='33.15'/>
+							<Entry inputSpeed='3250.00' inputTorque='-149.72' torqueLoss='34.34'/>
+							<Entry inputSpeed='3250.00' inputTorque='-189.37' torqueLoss='35.53'/>
+							<Entry inputSpeed='3250.00' inputTorque='-268.68' torqueLoss='37.91'/>
+							<Entry inputSpeed='3250.00' inputTorque='-347.98' torqueLoss='40.29'/>
+							<Entry inputSpeed='3250.00' inputTorque='-506.58' torqueLoss='45.04'/>
+							<Entry inputSpeed='3250.00' inputTorque='-665.19' torqueLoss='49.80'/>
+							<Entry inputSpeed='3250.00' inputTorque='-823.79' torqueLoss='54.56'/>
+							<Entry inputSpeed='3250.00' inputTorque='-982.39' torqueLoss='59.32'/>
+							<Entry inputSpeed='3250.00' inputTorque='-1141.00' torqueLoss='64.08'/>
+							<Entry inputSpeed='3250.00' inputTorque='-1299.60' torqueLoss='68.83'/>
+							<Entry inputSpeed='3250.00' inputTorque='-1458.21' torqueLoss='73.59'/>
+							<Entry inputSpeed='3250.00' inputTorque='-1616.81' torqueLoss='78.35'/>
+							<Entry inputSpeed='3250.00' inputTorque='-1934.02' torqueLoss='87.87'/>
+							<Entry inputSpeed='3250.00' inputTorque='-2251.23' torqueLoss='97.38'/>
+							<Entry inputSpeed='3250.00' inputTorque='-2568.44' torqueLoss='106.90'/>
+							<Entry inputSpeed='3250.00' inputTorque='-2885.65' torqueLoss='116.42'/>
+							<Entry inputSpeed='3250.00' inputTorque='-3202.85' torqueLoss='125.93'/>
+							<Entry inputSpeed='3250.00' inputTorque='-3520.06' torqueLoss='135.45'/>
+							<Entry inputSpeed='3250.00' inputTorque='-3837.27' torqueLoss='144.96'/>
+							<Entry inputSpeed='3250.00' inputTorque='-4154.48' torqueLoss='154.48'/>
+							<Entry inputSpeed='3250.00' inputTorque='-4471.69' torqueLoss='164.00'/>
+							<Entry inputSpeed='3250.00' inputTorque='-4788.90' torqueLoss='173.51'/>
+							<Entry inputSpeed='3250.00' inputTorque='-5106.11' torqueLoss='183.03'/>
+							<Entry inputSpeed='3250.00' inputTorque='-5423.31' torqueLoss='192.55'/>
+							<Entry inputSpeed='3250.00' inputTorque='-5740.52' torqueLoss='202.06'/>
+							<Entry inputSpeed='3250.00' inputTorque='-6057.73' torqueLoss='211.58'/>
+							<Entry inputSpeed='3250.00' inputTorque='-6374.94' torqueLoss='221.09'/>
+							<Entry inputSpeed='3250.00' inputTorque='-6692.15' torqueLoss='230.61'/>
+							<Entry inputSpeed='3250.00' inputTorque='-7009.36' torqueLoss='240.13'/>
+							<Entry inputSpeed='3250.00' inputTorque='-7326.57' torqueLoss='249.64'/>
+							<Entry inputSpeed='3250.00' inputTorque='-7643.77' torqueLoss='259.16'/>
+							<Entry inputSpeed='3250.00' inputTorque='-7960.98' torqueLoss='268.68'/>
+					</TorqueLossMap>
+				</Data>
+				<Signature>
+					<di:Reference URI="#AXL-EC3ohnoh">
+						<di:Transforms>
+							<di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/>
+							<di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
+						</di:Transforms>
+						<di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
+						<di:DigestValue>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue>
+					</di:Reference>
+				</Signature>
+			</v2.6:Axlegear>
+			<v2.6:AxleWheels xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxleWheelsComponentDeclarationType">
+				<Data xsi:type="AxleWheelsDataDeclarationType">
+					<Axles>
+						<Axle axleNumber="1" xsi:type="AxleDataDeclarationType">
+							<AxleType>VehicleNonDriven</AxleType>
+							<TwinTyres>false</TwinTyres>
+							<Steered>true</Steered>
+							<Tyre>
+								<Data id="WHL-5432198760-315-70-R22.5" xsi:type="TyreDataDeclarationType">
+									<Manufacturer>Generic Wheels Manufacturer</Manufacturer>
+									<Model>Generic Wheel</Model>
+									<CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber>
+									<Date>2017-01-11T14:00:00Z</Date>
+									<AppVersion>Tyre Generation App 1.0</AppVersion>
+									<Dimension>315/70 R22.5</Dimension>
+									<RRCDeclared>0.0055</RRCDeclared>
+									<FzISO>31300</FzISO>
+								</Data>
+								<Signature>
+									<di:Reference URI="#WHL-5432198760-315-70-R22.5">
+										<di:Transforms>
+											<di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/>
+											<di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
+										</di:Transforms>
+										<di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
+										<di:DigestValue>4TkUGQTX8tevHOU9Cj9uyCFuI/aqcEYlo/gyVjVQmv0=</di:DigestValue>
+									</di:Reference>
+								</Signature>
+							</Tyre>
+						</Axle>
+						<Axle axleNumber="2" xsi:type="AxleDataDeclarationType">
+							<AxleType>VehicleDriven</AxleType>
+							<TwinTyres>true</TwinTyres>
+							<Steered>false</Steered>
+							<Tyre>
+								<Data id="WHL-5432198760-315-70-R22.5" xsi:type="TyreDataDeclarationType">
+									<Manufacturer>Generic Wheels Manufacturer</Manufacturer>
+									<Model>Generic Wheel</Model>
+									<CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber>
+									<Date>2017-01-11T14:00:00Z</Date>
+									<AppVersion>Tyre Generation App 1.0</AppVersion>
+									<Dimension>315/70 R22.5</Dimension>
+									<RRCDeclared>0.0063</RRCDeclared>
+									<FzISO>31300</FzISO>
+								</Data>
+								<Signature>
+									<di:Reference URI="#WHL-5432198760-315-70-R22.5">
+										<di:Transforms>
+											<di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/>
+											<di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
+										</di:Transforms>
+										<di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
+										<di:DigestValue>KljvtvGUUQ/L7MiLVAqU+bckL5PNDNNwdeLH9kUVrfM=</di:DigestValue>
+									</di:Reference>
+								</Signature>
+							</Tyre>
+						</Axle>
+					</Axles>
+				</Data>
+			</v2.6:AxleWheels>
+			<v2.6:Auxiliaries xsi:type="PrimaryVehicleAuxiliariesComponentDeclarationType">
+				<Data xsi:type="PrimaryVehicleAuxiliaryDataDeclarationType">
+					<Fan>
+						<Technology>Hydraulic driven - Constant displacement pump</Technology>
+					</Fan>
+					<SteeringPump>
+						<Technology axleNumber="1">Variable displacement elec. controlled</Technology>
+					</SteeringPump>
+					<ElectricSystem>
+						<AlternatorTechnology>conventional</AlternatorTechnology>
+						<SupplyFromHEVPossible>false</SupplyFromHEVPossible>
+					</ElectricSystem>
+					<PneumaticSystem>
+						<SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply>
+						<CompressorDrive>mechanically</CompressorDrive>
+						<Clutch>none</Clutch>
+						<CompressorRatio>1.120</CompressorRatio>
+						<SmartCompressionSystem>false</SmartCompressionSystem>
+						<SmartRegenerationSystem>false</SmartRegenerationSystem>
+						<AirsuspensionControl>electronically</AirsuspensionControl>
+						<PneumaticSCRReagentDosing>true</PneumaticSCRReagentDosing>
+					</PneumaticSystem>
+					<HVAC>
+						<AdjustableCoolantThermostat>true</AdjustableCoolantThermostat>
+						<EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger>
+					</HVAC>
+				</Data>
+			</v2.6:Auxiliaries>
+		</Components>
+	</v2.0:Vehicle>
+</tns:VectoInputDeclaration>
diff --git a/Vecto3GUI2020Test/TestData/exempted_primary_heavyBus.VIF.xml b/Vecto3GUI2020Test/TestData/exempted_primary_heavyBus.VIF.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ef4e364d6bba89cfea33a6752982ae9d1cd2d1a6
--- /dev/null
+++ b/Vecto3GUI2020Test/TestData/exempted_primary_heavyBus.VIF.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<VectoOutputMultistage xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.8="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 V:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistage.0.1.xsd">
+  <PrimaryVehicle xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1">
+    <Data id="VEH-4cb168560c0d4b3d886d" xsi:type="PrimaryVehicleDataType">
+      <Vehicle xsi:type="VehicleExemptedPrimaryBusType">
+        <ManufacturerPrimaryVehicle>Some Manufacturer</ManufacturerPrimaryVehicle>
+        <ManufacturerAddressPrimaryVehicle>Infinite Loop 1</ManufacturerAddressPrimaryVehicle>
+        <Model>Sample Bus Model</Model>
+        <VIN>VEH-1234567890</VIN>
+        <Date>2017-02-15T11:00:00Z</Date>
+        <LegislativeCategory>N2</LegislativeCategory>
+        <ChassisConfiguration>Bus</ChassisConfiguration>
+        <AxleConfiguration>6x2</AxleConfiguration>
+        <Articulated>false</Articulated>
+        <TechnicalPermissibleMaximumLadenMass unit="kg">15400.0</TechnicalPermissibleMaximumLadenMass>
+        <ZeroEmissionVehicle>true</ZeroEmissionVehicle>
+        <SumNetPower unit="W">350000</SumNetPower>
+        <Technology>Fuel cell vehicle</Technology>
+      </Vehicle>
+      <InputDataSignature>
+        <di:Reference URI="#VEH-1234567890">
+          <di:Transforms>
+            <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" />
+            <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+          </di:Transforms>
+          <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
+          <di:DigestValue>sYhNx2MDHaOAMTlPflP/qQbEkazmRDxY0Vw6yzwwcJc=</di:DigestValue>
+        </di:Reference>
+      </InputDataSignature>
+      <ManufacturerRecordSignature>
+        <di:Reference URI="#RESULT-4c4c52e522874a398b3a">
+          <di:Transforms>
+            <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" />
+            <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+          </di:Transforms>
+          <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
+          <di:DigestValue>guwkv90jOyWgDpgQwAEbLRkq7pWGeVaGA+dHizLYufQ=</di:DigestValue>
+        </di:Reference>
+      </ManufacturerRecordSignature>
+      <Results>
+        <Status>success</Status>
+        <ExemptedVehicle />
+      </Results>
+      <ApplicationInformation>
+        <SimulationToolVersion>0.7.3.2247-DEV !!NOT FOR CERTIFICATION!!</SimulationToolVersion>
+        <Date>2021-06-15T16:00:43.6769906Z</Date>
+      </ApplicationInformation>
+    </Data>
+    <Signature>
+      <di:Reference URI="#VEH-4cb168560c0d4b3d886d">
+        <di:Transforms>
+          <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" />
+          <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+        </di:Transforms>
+        <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
+        <di:DigestValue>KeeEnRNO5Gjm7XB+YYx542ujYbE0k7a9SkWe/BWo7bI=</di:DigestValue>
+      </di:Reference>
+    </Signature>
+  </PrimaryVehicle>
+</VectoOutputMultistage>
\ No newline at end of file
diff --git a/Vecto3GUI2020Test/TestData/exempted_vif_mandatory.xml b/Vecto3GUI2020Test/TestData/exempted_vif_mandatory.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0d7c3952ba98fe996a7f480e313f1203691ce146
--- /dev/null
+++ b/Vecto3GUI2020Test/TestData/exempted_vif_mandatory.xml
@@ -0,0 +1,94 @@
+ο»Ώ<?xml version="1.0" encoding="utf-8"?>
+<VectoOutputMultistage xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.8="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 V:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistage.0.1.xsd">
+  <PrimaryVehicle xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1">
+    <Data id="VEH-4cb168560c0d4b3d886d" xsi:type="PrimaryVehicleDataType">
+      <Vehicle xsi:type="VehicleExemptedPrimaryBusType">
+        <ManufacturerPrimaryVehicle>Some Manufacturer</ManufacturerPrimaryVehicle>
+        <ManufacturerAddressPrimaryVehicle>Infinite Loop 1</ManufacturerAddressPrimaryVehicle>
+        <Model>Sample Bus Model</Model>
+        <VIN>VEH-1234567890</VIN>
+        <Date>2017-02-15T11:00:00Z</Date>
+        <LegislativeCategory>N2</LegislativeCategory>
+        <ChassisConfiguration>Bus</ChassisConfiguration>
+        <AxleConfiguration>6x2</AxleConfiguration>
+        <Articulated>false</Articulated>
+        <TechnicalPermissibleMaximumLadenMass unit="kg">15400.0</TechnicalPermissibleMaximumLadenMass>
+        <ZeroEmissionVehicle>true</ZeroEmissionVehicle>
+        <SumNetPower unit="W">350000</SumNetPower>
+        <Technology>Fuel cell vehicle</Technology>
+      </Vehicle>
+      <InputDataSignature>
+        <di:Reference URI="#VEH-1234567890">
+          <di:Transforms>
+            <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" />
+            <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+          </di:Transforms>
+          <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
+          <di:DigestValue>sYhNx2MDHaOAMTlPflP/qQbEkazmRDxY0Vw6yzwwcJc=</di:DigestValue>
+        </di:Reference>
+      </InputDataSignature>
+      <ManufacturerRecordSignature>
+        <di:Reference URI="#RESULT-4c4c52e522874a398b3a">
+          <di:Transforms>
+            <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" />
+            <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+          </di:Transforms>
+          <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
+          <di:DigestValue>guwkv90jOyWgDpgQwAEbLRkq7pWGeVaGA+dHizLYufQ=</di:DigestValue>
+        </di:Reference>
+      </ManufacturerRecordSignature>
+      <Results>
+        <Status>success</Status>
+        <ExemptedVehicle />
+      </Results>
+      <ApplicationInformation>
+        <SimulationToolVersion>0.7.3.2247-DEV !!NOT FOR CERTIFICATION!!</SimulationToolVersion>
+        <Date>2021-06-15T16:00:43.6769906Z</Date>
+      </ApplicationInformation>
+    </Data>
+    <Signature>
+      <di:Reference URI="#VEH-4cb168560c0d4b3d886d">
+        <di:Transforms>
+          <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" />
+          <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+        </di:Transforms>
+        <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
+        <di:DigestValue>KeeEnRNO5Gjm7XB+YYx542ujYbE0k7a9SkWe/BWo7bI=</di:DigestValue>
+      </di:Reference>
+    </Signature>
+  </PrimaryVehicle>
+  <ManufacturingStage stageCount="2">
+    <Data xsi:type="BusManufacturingStageDataType" id="MST-4c2c483e8feb4ebd8503">
+      <HashPreviousStage>
+        <di:Reference URI="#VEH-4cb168560c0d4b3d886d">
+          <di:Transforms>
+            <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" />
+            <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+          </di:Transforms>
+          <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
+          <di:DigestValue>KeeEnRNO5Gjm7XB+YYx542ujYbE0k7a9SkWe/BWo7bI=</di:DigestValue>
+        </di:Reference>
+      </HashPreviousStage>
+      <Vehicle xsi:type="v2.8:ExemptedInterimStageInputType" id="VEH-c6ac253bde8b4bd49a9b">
+        <v2.8:Manufacturer>123</v2.8:Manufacturer>
+        <v2.8:ManufacturerAddress>123</v2.8:ManufacturerAddress>
+        <v2.8:VIN>adsf1</v2.8:VIN>
+        <v2.8:Date>2021-06-22T22:00:00Z</v2.8:Date>
+      </Vehicle>
+      <ApplicationInformation>
+        <SimulationToolVersion>0.7.3.2247-DEV</SimulationToolVersion>
+        <Date>2021-06-23T08:19:04.8483845Z</Date>
+      </ApplicationInformation>
+    </Data>
+    <Signature>
+      <di:Reference URI="#MST-4c2c483e8feb4ebd8503">
+        <di:Transforms>
+          <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" />
+          <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+        </di:Transforms>
+        <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
+        <di:DigestValue>XH5k0TQWvBWs/aV6Zz0T/aggks5HgnLTvKtekiARewE=</di:DigestValue>
+      </di:Reference>
+    </Signature>
+  </ManufacturingStage>
+</VectoOutputMultistage>
\ No newline at end of file
diff --git a/Vecto3GUI2020Test/inputdata/final.VIF_Report_4.xml b/Vecto3GUI2020Test/TestData/final.VIF_Report_4.xml
similarity index 100%
rename from Vecto3GUI2020Test/inputdata/final.VIF_Report_4.xml
rename to Vecto3GUI2020Test/TestData/final.VIF_Report_4.xml
diff --git a/Vecto3GUI2020Test/inputdata/interim2.VIF_Report_3.xml b/Vecto3GUI2020Test/TestData/interim2.VIF_Report_3.xml
similarity index 100%
rename from Vecto3GUI2020Test/inputdata/interim2.VIF_Report_3.xml
rename to Vecto3GUI2020Test/TestData/interim2.VIF_Report_3.xml
diff --git a/Vecto3GUI2020Test/TestData/newVifCompletedStage.json b/Vecto3GUI2020Test/TestData/newVifCompletedStage.json
new file mode 100644
index 0000000000000000000000000000000000000000..29c1c7463c97a68966b38a3572a50afe4bf81160
--- /dev/null
+++ b/Vecto3GUI2020Test/TestData/newVifCompletedStage.json
@@ -0,0 +1,13 @@
+{
+  "Header": {
+    "CreatedBy": "Harry",
+    "Date": "2021-07-13T00:00:00+02:00",
+    "AppVersion": "Vecto3GUI2020",
+    "FileVersion": 10
+  },
+  "Body": {
+    "PrimaryVehicle": "C:\\Users\\Harry\\source\\repos\\vecto-dev\\VectoCore\\VectoCoreTest\\TestData\\XML\\XMLReaderDeclaration\\SchemaVersion2.6_Buses\\vecto_vehicle-primary_heavyBus-sample.xml",
+    "InterimStage": "C:\\Users\\Harry\\source\\repos\\vecto-dev\\VectoCore\\VectoCoreTest\\TestData\\XML\\XMLReaderDeclaration\\SchemaVersion2.8\\vecto_vehicle-stage_input_full-sample.xml",
+    "Completed": true
+  }
+}
\ No newline at end of file
diff --git a/Vecto3GUI2020Test/TestData/newVifInterimStage.json b/Vecto3GUI2020Test/TestData/newVifInterimStage.json
new file mode 100644
index 0000000000000000000000000000000000000000..7f64bef871f18c99ec84c396e8b6e2c2bd8f1a48
--- /dev/null
+++ b/Vecto3GUI2020Test/TestData/newVifInterimStage.json
@@ -0,0 +1,13 @@
+{
+  "Header": {
+    "CreatedBy": "Harry",
+    "Date": "2021-07-15T00:00:00+02:00",
+    "AppVersion": "Vecto3GUI2020",
+    "FileVersion": 10
+  },
+  "Body": {
+    "PrimaryVehicle": "C:\\Users\\Harry\\source\\repos\\vecto-dev\\VectoCore\\VectoCoreTest\\TestData\\XML\\XMLReaderDeclaration\\SchemaVersion2.6_Buses\\vecto_vehicle-primary_heavyBus-sample.xml",
+    "InterimStage": "C:\\Users\\Harry\\source\\repos\\vecto-dev\\VectoCore\\VectoCoreTest\\TestData\\XML\\XMLReaderDeclaration\\SchemaVersion2.8\\vecto_vehicle-stage_input_full-sample.xml",
+    "Completed": false
+  }
+}
\ No newline at end of file
diff --git a/Vecto3GUI2020Test/TestData/test.VIF_Report_2.xml b/Vecto3GUI2020Test/TestData/test.VIF_Report_2.xml
new file mode 100644
index 0000000000000000000000000000000000000000..95003c38d6c95d407123c97b46e746114c1b8cfc
--- /dev/null
+++ b/Vecto3GUI2020Test/TestData/test.VIF_Report_2.xml
@@ -0,0 +1,96 @@
+ο»Ώ<?xml version="1.0" encoding="utf-8"?>
+<VectoOutputMultistage xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.8="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 V:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistage.0.1.xsd">
+  <PrimaryVehicle xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1">
+    <Data id="VEH-4cb168560c0d4b3d886d" xsi:type="PrimaryVehicleDataType">
+      <Vehicle xsi:type="VehicleExemptedPrimaryBusType">
+        <ManufacturerPrimaryVehicle>Some Manufacturer</ManufacturerPrimaryVehicle>
+        <ManufacturerAddressPrimaryVehicle>Infinite Loop 1</ManufacturerAddressPrimaryVehicle>
+        <Model>Sample Bus Model</Model>
+        <VIN>VEH-1234567890</VIN>
+        <Date>2017-02-15T11:00:00Z</Date>
+        <LegislativeCategory>N2</LegislativeCategory>
+        <ChassisConfiguration>Bus</ChassisConfiguration>
+        <AxleConfiguration>6x2</AxleConfiguration>
+        <Articulated>false</Articulated>
+        <TechnicalPermissibleMaximumLadenMass unit="kg">15400.0</TechnicalPermissibleMaximumLadenMass>
+        <ZeroEmissionVehicle>true</ZeroEmissionVehicle>
+        <SumNetPower unit="W">350000</SumNetPower>
+        <Technology>Fuel cell vehicle</Technology>
+      </Vehicle>
+      <InputDataSignature>
+        <di:Reference URI="#VEH-1234567890">
+          <di:Transforms>
+            <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" />
+            <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+          </di:Transforms>
+          <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
+          <di:DigestValue>sYhNx2MDHaOAMTlPflP/qQbEkazmRDxY0Vw6yzwwcJc=</di:DigestValue>
+        </di:Reference>
+      </InputDataSignature>
+      <ManufacturerRecordSignature>
+        <di:Reference URI="#RESULT-4c4c52e522874a398b3a">
+          <di:Transforms>
+            <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" />
+            <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+          </di:Transforms>
+          <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
+          <di:DigestValue>guwkv90jOyWgDpgQwAEbLRkq7pWGeVaGA+dHizLYufQ=</di:DigestValue>
+        </di:Reference>
+      </ManufacturerRecordSignature>
+      <Results>
+        <Status>success</Status>
+        <ExemptedVehicle />
+      </Results>
+      <ApplicationInformation>
+        <SimulationToolVersion>0.7.3.2247-DEV !!NOT FOR CERTIFICATION!!</SimulationToolVersion>
+        <Date>2021-06-15T16:00:43.6769906Z</Date>
+      </ApplicationInformation>
+    </Data>
+    <Signature>
+      <di:Reference URI="#VEH-4cb168560c0d4b3d886d">
+        <di:Transforms>
+          <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" />
+          <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+        </di:Transforms>
+        <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
+        <di:DigestValue>KeeEnRNO5Gjm7XB+YYx542ujYbE0k7a9SkWe/BWo7bI=</di:DigestValue>
+      </di:Reference>
+    </Signature>
+  </PrimaryVehicle>
+  <ManufacturingStage stageCount="2">
+    <Data xsi:type="BusManufacturingStageDataType" id="MST-73e34e20c6ec4e98bac3">
+      <HashPreviousStage>
+        <di:Reference URI="#VEH-4cb168560c0d4b3d886d">
+          <di:Transforms>
+            <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" />
+            <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+          </di:Transforms>
+          <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
+          <di:DigestValue>KeeEnRNO5Gjm7XB+YYx542ujYbE0k7a9SkWe/BWo7bI=</di:DigestValue>
+        </di:Reference>
+      </HashPreviousStage>
+      <Vehicle xsi:type="v2.8:ExemptedInterimStageInputType" id="VEH-b34a0bc66bcf46f18a04">
+        <v2.8:Manufacturer>sdf</v2.8:Manufacturer>
+        <v2.8:ManufacturerAddress>asdf</v2.8:ManufacturerAddress>
+        <v2.8:VIN>afd</v2.8:VIN>
+        <v2.8:Date>2021-06-22T22:00:00Z</v2.8:Date>
+        <v2.8:CorrectedActualMass>12343</v2.8:CorrectedActualMass>
+        <v2.8:TechnicalPermissibleMaximumLadenMass>12354</v2.8:TechnicalPermissibleMaximumLadenMass>
+      </Vehicle>
+      <ApplicationInformation>
+        <SimulationToolVersion>0.7.3.2247-DEV</SimulationToolVersion>
+        <Date>2021-06-23T08:35:16.8844114Z</Date>
+      </ApplicationInformation>
+    </Data>
+    <Signature>
+      <di:Reference URI="#MST-73e34e20c6ec4e98bac3">
+        <di:Transforms>
+          <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" />
+          <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+        </di:Transforms>
+        <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
+        <di:DigestValue>1HzqGQs5vo59mNfInlO1sSMXdlFf1ExyIcV3Eh47+d4=</di:DigestValue>
+      </di:Reference>
+    </Signature>
+  </ManufacturingStage>
+</VectoOutputMultistage>
\ No newline at end of file
diff --git a/Vecto3GUI2020Test/inputdata/vecto_vehicle-completed_heavyBus_31b.xml b/Vecto3GUI2020Test/TestData/vecto_vehicle-completed_heavyBus_31b.xml
similarity index 100%
rename from Vecto3GUI2020Test/inputdata/vecto_vehicle-completed_heavyBus_31b.xml
rename to Vecto3GUI2020Test/TestData/vecto_vehicle-completed_heavyBus_31b.xml
diff --git a/Vecto3GUI2020Test/TestHelper.cs b/Vecto3GUI2020Test/TestHelper.cs
new file mode 100644
index 0000000000000000000000000000000000000000..0f800f625c404c350eeaf8e664fe342b627193d3
--- /dev/null
+++ b/Vecto3GUI2020Test/TestHelper.cs
@@ -0,0 +1,34 @@
+ο»Ώusing System;
+using System.CodeDom;
+using System.Runtime.CompilerServices;
+using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCore.InputData.FileIO.XML;
+
+namespace Vecto3GUI2020Test
+{
+	public class TestHelper
+	{
+		private IXMLInputDataReader _inputDataReader;
+
+		public TestHelper(IXMLInputDataReader inputDataReader)
+		{
+			_inputDataReader = inputDataReader;
+		}
+
+
+
+
+		public IInputDataProvider GetInputDataProvider(string fileName)
+		{
+			return _inputDataReader.Create(fileName);
+		}
+
+		public static string GetMethodName([CallerMemberName] string name = null)
+		{
+			if (name == null) {
+				throw new ArgumentException();
+			}
+			return name;
+		}
+	}
+}
\ No newline at end of file
diff --git a/Vecto3GUI2020Test/UI/UITests.cs b/Vecto3GUI2020Test/UI/UITests.cs
index 969b9c5a054b5ede41a07d6416946dee45b1bfdd..436e722c67439205a97705b8cd1c6929ff5c1274 100644
--- a/Vecto3GUI2020Test/UI/UITests.cs
+++ b/Vecto3GUI2020Test/UI/UITests.cs
@@ -16,7 +16,9 @@ namespace Vecto3GUI2020Test
 {/// <summary>
 /// The Application under Test has to run on a Windows 10 Machine on a Desktop called "VE
 /// </summary>
-    [TestFixture]
+/// 
+    [Ignore("GUI tests are not working that good")]
+	[TestFixture]
     public class UITests : VECTO3GUI2020Session
     {
 		[SetUp]
diff --git a/Vecto3GUI2020Test/Vecto3GUI2020Test.csproj b/Vecto3GUI2020Test/Vecto3GUI2020Test.csproj
index 61e6686bd13a15f88e9aba5aa5ff5159c7136733..f51a815c10de39022bce192f090038f6878035fa 100644
--- a/Vecto3GUI2020Test/Vecto3GUI2020Test.csproj
+++ b/Vecto3GUI2020Test/Vecto3GUI2020Test.csproj
@@ -43,6 +43,9 @@
     <Content Include="..\VectoCore\VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\AirdragLoadTestFile.xml" Link="Testdata\AirdragLoadTestFile.xml">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
+    <Content Include="..\VectoCore\VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\AirdragLoadTestFilev2.xml" Link="Testdata\AirdragLoadTestFilev2.xml">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
     <Content Include="..\VectoCore\VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\vecto_multistage_consolidated_multiple_stages.xml" Link="Testdata\vecto_multistage_consolidated_multiple_stages.xml">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
@@ -80,6 +83,7 @@
 
   <ItemGroup>
     <PackageReference Include="Appium.WebDriver" Version="4.3.1" />
+    <PackageReference Include="Microsoft.Toolkit.Mvvm" Version="7.0.2" />
     <PackageReference Include="Moq" Version="4.16.1" />
     <PackageReference Include="Ninject" Version="3.3.4" />
     <PackageReference Include="NUnit" Version="3.12.0" />
@@ -99,4 +103,43 @@
     <Reference Include="PresentationFramework" />
   </ItemGroup>
 
+  <ItemGroup>
+    <None Update="inputdata\final.VIF_Report_4.xml">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Update="inputdata\interim2.VIF_Report_3.xml">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Update="inputdata\vecto_vehicle-completed_heavyBus_31b.xml">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Update="TestData\bugreports\PrimaryDecimal\primary_heavyBus group41_nonSmart_rounded_decimals.xml">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </None>
+    <None Update="TestData\exempted_primary_heavyBus.VIF.xml">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Update="TestData\exempted_vif_mandatory.xml">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Update="TestData\final.VIF_Report_4.xml">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Update="TestData\interim2.VIF_Report_3.xml">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Update="TestData\newVifCompletedStage.json">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Update="TestData\vecto_vehicle-completed_heavyBus_31b.xml">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+  </ItemGroup>
+
+  <ItemGroup>
+    <Folder Include="HelperTests\" />
+    <Folder Include="Testdata\bugreports\" />
+    <Folder Include="TestData\output\" />
+  </ItemGroup>
+
 </Project>
diff --git a/Vecto3GUI2020Test/ViewModelTests/AirdragTests.cs b/Vecto3GUI2020Test/ViewModelTests/AirdragTests.cs
index 2aadd6117d635ea7a42f50356528eb49a07e4182..a53049065c0728849d9d7d99820feeda878133de 100644
--- a/Vecto3GUI2020Test/ViewModelTests/AirdragTests.cs
+++ b/Vecto3GUI2020Test/ViewModelTests/AirdragTests.cs
@@ -17,31 +17,31 @@ namespace Vecto3GUI2020Test.ViewModelTests
 
 		#region Airdrag
 		[Test]
-		public void airdragModifiedInPreviousStages()
+		public void AirdragModifiedInPreviousStages()
 		{
 			var vm = loadFile(consolidated_multiple_stages_airdrag);
 
-			var vehicleVM = vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as
-				DeclarationInterimStageBusVehicleViewModel_v2_8;
+			var vehicleVm = vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as
+				InterimStageBusVehicleViewModel_v2_8;
 
-			Assert.IsTrue(vehicleVM.AirdragModifiedMultistageEditingEnabled);
+			Assert.IsTrue(vehicleVm.AirdragModifiedMultistageEditingEnabled);
 
 			//try to change to false
 
-			vehicleVM.AirdragModifiedMultistage = false; //should not change the value
-			Assert.IsTrue(vehicleVM.AirdragModifiedMultistageEditingEnabled);
+			vehicleVm.AirdragModifiedMultistage = false; //should not change the value
+			Assert.IsTrue(vehicleVm.AirdragModifiedMultistageEditingEnabled);
 		}
 
 		[Test]
-		public void airdragNotModifiedInPreviousStages()
+		public void AirdragNotModifiedInPreviousStages()
 		{
 			var vm = loadFile(consolidated_multiple_stages);
 
-			var vehicleVM =
+			var vehicleVm =
 				vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as
-					DeclarationInterimStageBusVehicleViewModel_v2_8;
+					InterimStageBusVehicleViewModel_v2_8;
 
-			Assert.IsFalse(vehicleVM.AirdragModifiedMultistageEditingEnabled);
+			Assert.IsFalse(vehicleVm.AirdragModifiedMultistageEditingEnabled);
 		}
 
 		/// <summary>
@@ -50,32 +50,32 @@ namespace Vecto3GUI2020Test.ViewModelTests
 		///		=> 'AirdragModifiedMultistage' required in all consecutive stages
 		/// </summary>
 		[Test]
-		public void airdragComponentLoadedFirstTime()
+		public void AirdragComponentLoadedFirstTime()
 		{
 			///Load VIF without airdrag 
 
 			var vm = loadFile(primary_vehicle_only);
-			var vehicleVM =
+			var vehicleVm =
 				vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as
-					DeclarationInterimStageBusVehicleViewModel_v2_8;
+					InterimStageBusVehicleViewModel_v2_8;
 
-			Assert.IsNull(vehicleVM.AirdragModifiedMultistage);
+			Assert.IsNull(vehicleVm.AirdragModifiedMultistage);
 
-			var airdragViewModel = vehicleVM.MultistageAirdragViewModel as MultistageAirdragViewModel;
-			Assert.IsTrue(airdragViewModel.LoadAirdragFile(GetFullPath(airdragLoadTestFile)));
+			var airdragViewModel = vehicleVm.MultistageAirdragViewModel as MultistageAirdragViewModel;
+			Assert.IsTrue(airdragViewModel.LoadAirdragFile(GetTestDataPath(airdragLoadTestFile)));
 
-			Assert.IsNull(vehicleVM.AirdragModifiedMultistage);
-			Assert.IsFalse(vehicleVM.AirdragModifiedMultistageMandatory);
+			Assert.IsNull(vehicleVm.AirdragModifiedMultistage);
+			Assert.IsFalse(vehicleVm.AirdragModifiedMultistageMandatory);
 
-			vehicleVM.AirdragModifiedMultistageEditingEnabled = true;
-			Assert.IsFalse(vehicleVM.AirdragModifiedMultistageEditingEnabled);
+			vehicleVm.AirdragModifiedMultistageEditingEnabled = true;
+			Assert.IsFalse(vehicleVm.AirdragModifiedMultistageEditingEnabled);
 
-			Assert.IsNull(vehicleVM.AirdragModifiedMultistage);
+			Assert.IsNull(vehicleVm.AirdragModifiedMultistage);
 
 			//Set Mandatory Fields
-			vehicleVM.Manufacturer = "testManufacturer";
-			vehicleVM.ManufacturerAddress = "Address";
-			vehicleVM.VIN = "123456789";
+			vehicleVm.Manufacturer = "testManufacturer";
+			vehicleVm.ManufacturerAddress = "Address";
+			vehicleVm.VIN = "123456789";
 
 			//Save as new VIF
 			var multistageJobViewModel = vm.MultiStageJobViewModel as MultiStageJobViewModel_v0_1;
@@ -84,41 +84,41 @@ namespace Vecto3GUI2020Test.ViewModelTests
 
 			var resultFile = $"{outputName}.VIF_Report_2.xml";
 			Assert.IsTrue(checkFileNameExists(resultFile));
-			var secondstageVM = loadFile(resultFile);
-			Assert.IsNotNull(secondstageVM);
-			var secondStageVehicleVM =
-				(secondstageVM.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel) as
-				DeclarationInterimStageBusVehicleViewModel_v2_8;
-			Assert.IsTrue(secondStageVehicleVM.AirdragModifiedMultistageEditingEnabled);
-			Assert.IsTrue(secondStageVehicleVM.AirdragModifiedMultistageMandatory);
-			Assert.IsNull(secondStageVehicleVM.ConsolidatedVehicleData.AirdragModifiedMultistage);
+			var secondstageVm = loadFile(resultFile);
+			Assert.IsNotNull(secondstageVm);
+			var secondStageVehicleVm =
+				(secondstageVm.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel) as
+				InterimStageBusVehicleViewModel_v2_8;
+			Assert.IsTrue(secondStageVehicleVm.AirdragModifiedMultistageEditingEnabled);
+			Assert.IsTrue(secondStageVehicleVm.AirdragModifiedMultistageMandatory);
+			Assert.IsNull(secondStageVehicleVm.ConsolidatedVehicleData.AirdragModifiedMultistage);
 
 			//try to disable AirdragModified
-			secondStageVehicleVM.AirdragModifiedMultistageEditingEnabled = false;
-			Assert.IsTrue(secondStageVehicleVM.AirdragModifiedMultistageEditingEnabled);
+			secondStageVehicleVm.AirdragModifiedMultistageEditingEnabled = false;
+			Assert.IsTrue(secondStageVehicleVm.AirdragModifiedMultistageEditingEnabled);
 		}
 		/// <summary>
 		///  no airdrag component set in VIF => AirdragModifiedMultistage is disabled
 		/// </summary>
 		[Test]
-		public void airdragModifiedDisabled()
+		public void AirdragModifiedDisabled()
 		{
 			var vm = loadFile(primary_vehicle_only);
-			var vehicleVM =
+			var vehicleVm =
 				vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as
-					DeclarationInterimStageBusVehicleViewModel_v2_8;
+					InterimStageBusVehicleViewModel_v2_8;
 
-			Assert.IsNull(vehicleVM.AirdragModifiedMultistage);
+			Assert.IsNull(vehicleVm.AirdragModifiedMultistage);
 
-			Assert.IsNull(vehicleVM.AirdragModifiedMultistage);
-			Assert.IsFalse(vehicleVM.AirdragModifiedMultistageMandatory);
+			Assert.IsNull(vehicleVm.AirdragModifiedMultistage);
+			Assert.IsFalse(vehicleVm.AirdragModifiedMultistageMandatory);
 
-			var airdragViewModel = vehicleVM.MultistageAirdragViewModel;
-			Assert.IsTrue(airdragViewModel.LoadAirdragFile(GetFullPath(airdragLoadTestFile)), "Airdrag file not loaded");
-			Assert.IsFalse(vehicleVM.AirdragModifiedMultistageMandatory);
+			var airdragViewModel = vehicleVm.MultistageAirdragViewModel;
+			Assert.IsTrue(airdragViewModel.LoadAirdragFile(GetTestDataPath(airdragLoadTestFile)), "Airdrag file not loaded");
+			Assert.IsFalse(vehicleVm.AirdragModifiedMultistageMandatory);
 
-			vehicleVM.AirdragModifiedMultistageEditingEnabled = true;
-			Assert.IsFalse(vehicleVM.AirdragModifiedMultistageEditingEnabled);
+			vehicleVm.AirdragModifiedMultistageEditingEnabled = true;
+			Assert.IsFalse(vehicleVm.AirdragModifiedMultistageEditingEnabled);
 
 		}
 		/// <summary>
@@ -126,12 +126,12 @@ namespace Vecto3GUI2020Test.ViewModelTests
 		/// </summary>
 		[Test]
 
-		public void airdragModifiedMandatory()
+		public void AirdragModifiedMandatory()
 		{
 			//var vm = loadFile(primary_vehicle_only);
 			//var vehicleVM =
 			//	vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as
-			//		DeclarationInterimStageBusVehicleViewModel_v2_8;
+			//		InterimStageBusVehicleViewModel_v2_8;
 
 			//Assert.IsNull(vehicleVM.AirdragModifiedMultistage);
 
@@ -144,17 +144,17 @@ namespace Vecto3GUI2020Test.ViewModelTests
 		}
 
 		[Test]
-		public void temporarySaveAirdragComponent1()
+		public void TemporarySaveAirdragComponent1()
 		{
 			var vm = loadFile(consolidated_multiple_stages_airdrag);
 
-			var vehicleViewModel = vm.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as DeclarationInterimStageBusVehicleViewModel_v2_8;
+			var vehicleViewModel = vm.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as InterimStageBusVehicleViewModel_v2_8;
 
 			Assert.IsNull(vehicleViewModel.AirdragModifiedMultistage);
 
 
 			//Load airdrag file
-			var airdragLoaded = vehicleViewModel.MultistageAirdragViewModel.LoadAirdragFile(GetFullPath(airdragLoadTestFile));
+			var airdragLoaded = vehicleViewModel.MultistageAirdragViewModel.LoadAirdragFile(GetTestDataPath(airdragLoadTestFile));
 			var loadedAirdragComponent = vehicleViewModel.MultistageAirdragViewModel.AirDragViewModel;
 			Assert.IsTrue(airdragLoaded, "Airdrag file was not loaded");
 
@@ -176,19 +176,18 @@ namespace Vecto3GUI2020Test.ViewModelTests
 		}
 
 		[Test]
-		public void temporarySaveAirdragComponent2()
+		public void TemporarySaveAirdragComponent2()
 		{
 			var vm = loadFile(consolidated_multiple_stages_airdrag);
 
-			var vehicleViewModel = vm.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as DeclarationInterimStageBusVehicleViewModel_v2_8;
+			var vehicleViewModel = vm.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as InterimStageBusVehicleViewModel_v2_8;
 
 			Assert.IsNull(vehicleViewModel.AirdragModifiedMultistage);
 
 
 			//Load input file
 			var multistageJobViewModel = vm.MultiStageJobViewModel as MultiStageJobViewModel_v0_1;
-			var mockDialogHelper = setMockDialogHelper(stageInputFullSample, null);
-			multistageJobViewModel.LoadVehicleDataCommand.Execute(null);
+			multistageJobViewModel.ManufacturingStageViewModel.LoadStageInputData(GetTestDataPath(stageInputFullSample));
 
 
 		
@@ -214,19 +213,19 @@ namespace Vecto3GUI2020Test.ViewModelTests
 		}
 
 		[Test]
-		public void removeAirdragComponent()
+		public void RemoveAirdragComponent()
 		{
 			var vm = loadFile(consolidated_multiple_stages_airdrag);
 
-			var vehicleViewModel = vm.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as DeclarationInterimStageBusVehicleViewModel_v2_8;
+			var vehicleViewModel = vm.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as InterimStageBusVehicleViewModel_v2_8;
 
 			Assert.IsNull(vehicleViewModel.AirdragModifiedMultistage);
 
 
 			//Load input file
 			var multistageJobViewModel = vm.MultiStageJobViewModel as MultiStageJobViewModel_v0_1;
-			var mockDialogHelper = setMockDialogHelper(stageInputFullSample, null);
-			multistageJobViewModel.LoadVehicleDataCommand.Execute(null);
+			multistageJobViewModel.ManufacturingStageViewModel.LoadStageInputData(
+				GetTestDataPath(stageInputFullSample));
 
 
 			Assert.IsTrue(vehicleViewModel.AirdragModifiedMultistage);
@@ -241,17 +240,17 @@ namespace Vecto3GUI2020Test.ViewModelTests
 
 
 		[Test]
-		public void airdragModifiedSetToTrueWhenComponentIsLoaded()
+		public void AirdragModifiedSetToTrueWhenComponentIsLoaded()
 		{
 			var vm = loadFile(consolidated_multiple_stages_airdrag);
 
-			var vehicleViewModel = vm.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as DeclarationInterimStageBusVehicleViewModel_v2_8;
+			var vehicleViewModel = vm.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as InterimStageBusVehicleViewModel_v2_8;
 
 			Assert.IsNull(vehicleViewModel.AirdragModifiedMultistage);
 
 
 			//Load airdrag file
-			var airdragLoaded = vehicleViewModel.MultistageAirdragViewModel.LoadAirdragFile(GetFullPath(airdragLoadTestFile));
+			var airdragLoaded = vehicleViewModel.MultistageAirdragViewModel.LoadAirdragFile(GetTestDataPath(airdragLoadTestFile));
 			Assert.IsTrue(airdragLoaded, "Airdrag file was not loaded");
 
 			//Airdrag modified set to true if a component is loaded and the field is mandatory
@@ -264,7 +263,7 @@ namespace Vecto3GUI2020Test.ViewModelTests
 
 			//AirdragComponent is removed when airdragmodified is set to false;
 			//Load airdrag file
-			airdragLoaded = vehicleViewModel.MultistageAirdragViewModel.LoadAirdragFile(GetFullPath(airdragLoadTestFile));
+			airdragLoaded = vehicleViewModel.MultistageAirdragViewModel.LoadAirdragFile(GetTestDataPath(airdragLoadTestFile));
 			Assert.IsTrue(airdragLoaded, "Airdrag file was not loaded");
 
 			vehicleViewModel.AirdragModifiedMultistage = false;
diff --git a/Vecto3GUI2020Test/ViewModelTests/CreateVifViewModelTests.cs b/Vecto3GUI2020Test/ViewModelTests/CreateVifViewModelTests.cs
new file mode 100644
index 0000000000000000000000000000000000000000..bef354ab424c31591b3f0ec3c69759250c27822f
--- /dev/null
+++ b/Vecto3GUI2020Test/ViewModelTests/CreateVifViewModelTests.cs
@@ -0,0 +1,200 @@
+ο»Ώusing System.Diagnostics;
+using System.IO;
+using System.Threading.Tasks;
+using System.Windows.Input;
+using Ninject;
+using NUnit.Framework;
+using VECTO3GUI2020.ViewModel.Implementation;
+using VECTO3GUI2020.ViewModel.Interfaces;
+using VECTO3GUI2020.ViewModel.MultiStage.Implementation;
+
+namespace Vecto3GUI2020Test.ViewModelTests
+{
+	[TestFixture]
+	public class CreateVifViewModelTests : ViewModelTestBase
+	{
+		private ICreateVifViewModel _createVifViewModel;
+
+		private const string testdata_2_6 = "XML\\XMLReaderDeclaration\\SchemaVersion2.6_Buses\\";
+		private const string testdata_2_8 = "XML\\XMLReaderDeclaration\\SchemaVersion2.8\\";
+
+		private const string vecto_vehicle_primary_heavyBusSample =
+			testdata_2_6 + "vecto_vehicle-primary_heavyBus-sample.xml";
+
+		private const string vecto_vehicle_exempted_input_only_certain_entries =
+			"vecto_vehicle-exempted_input_only_certain_entries01-sample.xml";
+
+		private const string vecto_vehicle_primary_heavyBusExempted = testdata_2_6 + "exempted_primary_heavyBus.xml";
+
+		[SetUp]
+		public void SetUpCreateVif()
+		{
+			_createVifViewModel = _kernel.Get<ICreateVifViewModel>();
+		}
+
+		[TestCase(stageInputFullSample, TestName="InvalidPrimaryFile_StageInput")]
+		[TestCase(airdragLoadTestFile, TestName="InvalidPrimaryFile_Airdrag")]
+		[TestCase(consolidated_multiple_stages_airdrag, TestName = "InvalidPrimaryFile_VIF")]
+		[TestCase(vecto_vehicle_exempted_input_only_certain_entries, TestName="InvalidPrimaryFile_ExemptedStageInput")]
+		public void LoadInvalidPrimaryFile(string fileName)
+		{
+			var filePath = GetTestDataPath(fileName);
+			Assert.IsFalse(_createVifViewModel.LoadPrimaryInput(filePath));
+			Assert.IsNull(_createVifViewModel.PrimaryInputPath);
+			Assert.IsNull(_createVifViewModel.IsPrimaryExempted);
+		}
+
+
+		[TestCase(vecto_vehicle_primary_heavyBusSample, TestName = "InvalidStageInput_Primary")]
+		[TestCase(airdragLoadTestFile, TestName = "InvalidStageInput_Airdrag")]
+		[TestCase(consolidated_multiple_stages_airdrag, TestName = "InvalidStageFile_VIF")]
+		public void LoadInvalidCompletedFile(string fileName)
+		{
+			var filePath = GetTestDataPath(fileName);
+			Assert.IsFalse(_createVifViewModel.LoadStageInput(filePath));
+			Assert.IsNull(_createVifViewModel.IsStageInputExempted);
+			Assert.IsNull(_createVifViewModel.StageInputPath);
+		}
+
+		[Ignore("incomplete")]
+		[Test]
+		public void LoadExemptedCompletedAndNonExemptedPrimary()
+		{
+
+		}
+
+		[Test]
+		public void SaveFile()
+		{
+			LoadValidNonExemptedFiles();
+			var outputFile = "test.json";
+			var outputPath = GetFullPath(outputFile);
+			_createVifViewModel.SaveJob(outputPath);
+
+			FileAssert.Exists(outputPath);
+
+			Assert.AreEqual(Path.GetDirectoryName(outputPath), _createVifViewModel.DataSource.SourcePath);
+			Assert.AreEqual(outputPath, _createVifViewModel.DataSource.SourceFile);
+		}
+
+
+		[Test]
+		public void LoadNonExemptedCompletedAndExemptedPrimary()
+		{
+			var exemptedPrimaryPath = GetTestDataPath(vecto_vehicle_primary_heavyBusExempted);
+			var stageInputPath = GetTestDataPath(stageInputFullSample);
+
+			Assert.IsTrue(_createVifViewModel.LoadPrimaryInput(exemptedPrimaryPath));
+			Assert.IsFalse(_createVifViewModel.LoadStageInput(stageInputPath));
+		}
+
+		
+
+		[Test]
+		public void LoadValidPrimaryFile()
+		{
+			var filePath = GetTestDataPath(vecto_vehicle_primary_heavyBusSample);
+			Assert.IsTrue(_createVifViewModel.LoadPrimaryInput(filePath));
+			Assert.AreEqual(filePath, _createVifViewModel.PrimaryInputPath);
+		}
+
+		[TestCase(stageInputFullSample, TestName = "ValidStageInput_fullStageInput")]
+		[TestCase(vecto_vehicle_exempted_input_only_certain_entries, TestName = "ValidStageInput_exemptedStageInput")]
+		public void LoadValidStageInputFile(string fileName)
+		{
+			var filePath = GetTestDataPath(fileName);
+			Assert.IsTrue(_createVifViewModel.LoadStageInput(filePath));
+			Assert.AreEqual(filePath, _createVifViewModel.StageInputPath);
+		}
+
+		[Test]
+		public void LoadValidNonExemptedFilesTest()
+		{
+			LoadValidNonExemptedFiles();
+		}
+
+
+		public void LoadValidNonExemptedFiles()
+		{
+			var primaryPath = GetTestDataPath(vecto_vehicle_primary_heavyBusSample);
+			var stageInputPath = GetTestDataPath(stageInputFullSample);
+
+			Assert.IsTrue(_createVifViewModel.LoadPrimaryInput(primaryPath));
+			Assert.IsTrue(_createVifViewModel.LoadStageInput(stageInputPath));
+		}
+
+		[Test]
+		public void LoadValidExemptedFiles()
+		{
+			var primaryPath = GetTestDataPath(vecto_vehicle_primary_heavyBusExempted);
+			var stageInputPath = GetTestDataPath(vecto_vehicle_exempted_input_only_certain_entries);
+			Assert.IsTrue(_createVifViewModel.LoadPrimaryInput(primaryPath));
+			Assert.IsTrue(_createVifViewModel.LoadStageInput(stageInputPath));
+
+		}
+
+		[Test]
+		public void RemoveInputs()
+		{
+			LoadValidNonExemptedFiles();
+			Assert.NotNull(_createVifViewModel.PrimaryInputPath);
+			Assert.NotNull(_createVifViewModel.StageInputPath);
+
+			bool removePrimaryNotified = false;
+			bool removeStageInputNotified = false;
+			_createVifViewModel.RemovePrimaryCommand.CanExecuteChanged +=
+				((sender, args) => removePrimaryNotified = true);
+			_createVifViewModel.RemoveStageInputCommand.CanExecuteChanged +=
+				((sender, args) => removeStageInputNotified = true);
+
+
+			//Remove Primary
+			Assert.IsTrue(_createVifViewModel.RemovePrimaryCommand.CanExecute(null));
+
+			_createVifViewModel.RemovePrimaryCommand.Execute(null);
+			Assert.IsTrue(removePrimaryNotified);
+			removePrimaryNotified = false;
+
+			Assert.IsFalse(_createVifViewModel.RemovePrimaryCommand.CanExecute(null));
+			Assert.IsNull(_createVifViewModel.PrimaryInputPath);
+			Assert.IsNull(_createVifViewModel.IsPrimaryExempted);
+
+
+			//Remove Stage Input
+			Assert.IsTrue(_createVifViewModel.RemoveStageInputCommand.CanExecute(null));
+
+			_createVifViewModel.RemoveStageInputCommand.Execute(null);
+			Assert.IsTrue(removeStageInputNotified);
+			removeStageInputNotified = false;
+
+			Assert.IsFalse(_createVifViewModel.RemovePrimaryCommand.CanExecute(null));
+			Assert.IsNull(_createVifViewModel.PrimaryInputPath);
+			Assert.IsNull(_createVifViewModel.IsPrimaryExempted);
+		}
+
+
+		[Test]
+		public async Task SaveAndReload()
+		{
+			LoadValidNonExemptedFiles();
+			var primaryPath = _createVifViewModel.PrimaryInputPath;
+			var stagePath = _createVifViewModel.StageInputPath;
+
+			var savedToPath = _createVifViewModel.SaveJob("non_exempted.json");
+			WriteLine($"Saved to: {savedToPath}");
+
+			Assert.AreEqual(primaryPath, _createVifViewModel.PrimaryInputPath);
+			Assert.AreEqual(stagePath, _createVifViewModel.StageInputPath);
+
+			var jobListVm = _kernel.Get<IJobListViewModel>() as JobListViewModel;
+			var loadedDoc = await jobListVm.AddJobAsync(savedToPath) as CreateVifViewModel;
+
+			Assert.AreEqual(stagePath, loadedDoc.StageInputPath);
+			Assert.AreEqual(primaryPath, loadedDoc.PrimaryInputPath);
+
+
+
+
+		}
+	}
+}
\ No newline at end of file
diff --git a/Vecto3GUI2020Test/ViewModelTests/ExemptedTests.cs b/Vecto3GUI2020Test/ViewModelTests/ExemptedTests.cs
new file mode 100644
index 0000000000000000000000000000000000000000..4a5e4b3c6de620e33bb83052314a1ff7ef0f25ef
--- /dev/null
+++ b/Vecto3GUI2020Test/ViewModelTests/ExemptedTests.cs
@@ -0,0 +1,197 @@
+ο»Ώusing System;
+using System.Diagnostics;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using Castle.Core.Logging;
+using Ninject;
+using NUnit.Framework;
+using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Utils;
+using VECTO3GUI2020.ViewModel.Implementation;
+using VECTO3GUI2020.ViewModel.Interfaces;
+using VECTO3GUI2020.ViewModel.MultiStage.Implementation;
+
+namespace Vecto3GUI2020Test.ViewModelTests
+{
+	[TestFixture]
+	public class ExemptedTests : ViewModelTestBase
+	{
+
+		public const string _exemptedMandatory = "exempted_vif_mandatory.xml";
+
+		[Test]
+		public void LoadAndSaveExemptedPrimary()
+		{
+			var newMultiStageJob = loadFile(exempted_primary_vif);
+			Assert.IsTrue(newMultiStageJob.MultiStageJobViewModel.Exempted);
+
+
+			var multistageJobViewModel = newMultiStageJob.MultiStageJobViewModel as MultiStageJobViewModel_v0_1;
+
+			var outputPath = GetFullPath("test1.xml");
+
+			var vehicleVm =
+				multistageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as
+					InterimStageBusVehicleViewModel_v2_8;
+
+			Assert.IsTrue(vehicleVm.ExemptedVehicle);
+
+
+			var manufacturer = "TestManufacturer";
+			var manufacturerAddress = "TestManufacturerAddress";
+			var vehicleIdentificationNumber = "12345678";
+			var model = "model";
+			var curbMassChassis = Kilogram.Create(123456);
+			var technicalpermissableLadenMass = Kilogram.Create(654321);
+			var registeredClass = RegistrationClass.II_III;
+			var legislativeCategory = LegislativeClass.M3;
+			var bodyWorkCode = VehicleCode.CG;
+			var lowEntry = false;
+			var height = Meter.Create(1.5).ConvertToMilliMeter();
+			var PassengerSeatsLowerDeck = 4;
+			var passengerSeatsUpperDeck = 12;
+
+			vehicleVm.ParameterViewModels[nameof(vehicleVm.Manufacturer)].CurrentContent = manufacturer;
+			vehicleVm.ParameterViewModels[nameof(vehicleVm.ManufacturerAddress)].CurrentContent = manufacturerAddress;
+			vehicleVm.ParameterViewModels[nameof(vehicleVm.HeightInMm)].CurrentContent = height;
+			vehicleVm.ParameterViewModels[nameof(vehicleVm.VIN)].CurrentContent = vehicleIdentificationNumber;
+			vehicleVm.ParameterViewModels[nameof(vehicleVm.Model)].CurrentContent = model;
+			vehicleVm.ParameterViewModels[nameof(vehicleVm.LegislativeClass)].CurrentContent = legislativeCategory;
+			vehicleVm.ParameterViewModels[nameof(vehicleVm.CurbMassChassis)].CurrentContent = curbMassChassis;
+			vehicleVm.ParameterViewModels[nameof(vehicleVm.GrossVehicleMassRating)].CurrentContent = technicalpermissableLadenMass;
+			vehicleVm.ParameterViewModels[nameof(vehicleVm.RegisteredClass)].CurrentContent = registeredClass;
+			vehicleVm.ParameterViewModels[nameof(vehicleVm.VehicleCode)].CurrentContent = bodyWorkCode;
+			vehicleVm.ParameterViewModels[nameof(vehicleVm.LowEntry)].CurrentContent = lowEntry;
+			vehicleVm.ParameterViewModels[nameof(vehicleVm.NumberPassengerSeatsLowerDeck)].CurrentContent = PassengerSeatsLowerDeck;
+			vehicleVm.ParameterViewModels[nameof(vehicleVm.NumberPassengerSeatsUpperDeck)].CurrentContent = passengerSeatsUpperDeck;
+
+
+			multistageJobViewModel.ManufacturingStageViewModel.SaveInputDataExecute(outputPath);
+
+
+			Assert.AreEqual(outputPath, multistageJobViewModel.VehicleInputDataFilePath);
+
+			Assert.AreEqual(manufacturer, vehicleVm.Manufacturer);
+			Assert.AreEqual(manufacturerAddress, vehicleVm.ManufacturerAddress);
+			Assert.AreEqual(height, vehicleVm.HeightInMm);
+			Assert.AreEqual(model, vehicleVm.Model);
+			Assert.AreEqual(legislativeCategory, vehicleVm.LegislativeClass);
+			Assert.AreEqual(curbMassChassis, vehicleVm.CurbMassChassis);
+			Assert.AreEqual(technicalpermissableLadenMass, vehicleVm.GrossVehicleMassRating);
+			Assert.AreEqual(registeredClass, vehicleVm.RegisteredClass);
+			Assert.AreEqual(bodyWorkCode, vehicleVm.VehicleCode);
+			Assert.AreEqual(lowEntry, vehicleVm.LowEntry);
+			Assert.AreEqual(passengerSeatsUpperDeck, vehicleVm.NumberPassengerSeatsUpperDeck);
+			Assert.AreEqual(PassengerSeatsLowerDeck, vehicleVm.NumberPassengerSeatsLowerDeck);
+		}
+
+		[Test]
+		public async Task SaveAsNewVifAndSimulate()
+		{
+			var newMultiStageJob = loadFile(exempted_primary_vif);
+			Assert.IsTrue(newMultiStageJob.MultiStageJobViewModel.Exempted);
+
+
+			var multistageJobViewModel = newMultiStageJob.MultiStageJobViewModel as MultiStageJobViewModel_v0_1;
+
+			var outputFile = GetFullPath("exemptedNewVif/test1.xml");
+
+			var vehicleVm =
+				multistageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as
+					InterimStageBusVehicleViewModel_v2_8;
+
+			Assert.IsTrue(vehicleVm.ExemptedVehicle);
+
+
+			var manufacturer = "TestManufacturer";
+			var manufacturerAddress = "TestManufacturerAddress";
+			var vehicleIdentificationNumber = "12345678";
+			var model = "model";
+			var curbMassChassis = Kilogram.Create(123456);
+			var technicalpermissableLadenMass = Kilogram.Create(654321);
+			var registeredClass = RegistrationClass.II_III;
+			var bodyWorkCode = VehicleCode.CG;
+			var legislativeCategory = LegislativeClass.M3;
+			var lowEntry = false;
+			var height = Meter.Create(1.5).ConvertToMilliMeter();
+			var PassengerSeatsLowerDeck = 4;
+			var passengerSeatsUpperDeck = 12;
+
+			vehicleVm.ParameterViewModels[nameof(vehicleVm.Manufacturer)].CurrentContent = manufacturer;
+			vehicleVm.ParameterViewModels[nameof(vehicleVm.ManufacturerAddress)].CurrentContent = manufacturerAddress;
+			vehicleVm.ParameterViewModels[nameof(vehicleVm.HeightInMm)].CurrentContent = height;
+			vehicleVm.ParameterViewModels[nameof(vehicleVm.VIN)].CurrentContent = vehicleIdentificationNumber;
+			vehicleVm.ParameterViewModels[nameof(vehicleVm.Model)].CurrentContent = model;
+			vehicleVm.ParameterViewModels[nameof(vehicleVm.LegislativeClass)].CurrentContent = legislativeCategory;
+			vehicleVm.ParameterViewModels[nameof(vehicleVm.CurbMassChassis)].CurrentContent = curbMassChassis;
+			vehicleVm.ParameterViewModels[nameof(vehicleVm.GrossVehicleMassRating)].CurrentContent = technicalpermissableLadenMass;
+			vehicleVm.ParameterViewModels[nameof(vehicleVm.RegisteredClass)].CurrentContent = registeredClass;
+			vehicleVm.ParameterViewModels[nameof(vehicleVm.VehicleCode)].CurrentContent = bodyWorkCode;
+			vehicleVm.ParameterViewModels[nameof(vehicleVm.LowEntry)].CurrentContent = lowEntry;
+			vehicleVm.ParameterViewModels[nameof(vehicleVm.NumberPassengerSeatsLowerDeck)].CurrentContent = PassengerSeatsLowerDeck;
+			vehicleVm.ParameterViewModels[nameof(vehicleVm.NumberPassengerSeatsUpperDeck)].CurrentContent = passengerSeatsUpperDeck;
+
+			try {
+				Directory.Delete(Path.GetDirectoryName(outputFile), true);
+			} catch (Exception e) {
+				WriteLine(e.Message);
+			}
+			var result = multistageJobViewModel.SaveVif(outputFile);
+
+			//Check that file exists
+			Assert.IsTrue(File.Exists(result));
+
+			//Check that file was added to JobList
+			var jobListVm = _kernel.Get<IJobListViewModel>() as JobListViewModel;
+			Assert.AreEqual(2, jobListVm.Jobs.Count);
+			Assert.AreEqual(result, jobListVm.Jobs[1].DataSource.SourceFile);
+
+			var inputDataProvider = _testHelper.GetInputDataProvider(result) as IMultistageBusInputDataProvider;
+			Assert.NotNull(inputDataProvider);
+
+			//Check added Manufacturing Stage
+			var lastManStage = inputDataProvider.JobInputData.ManufacturingStages.Last();
+
+
+			Assert.AreEqual(manufacturer, lastManStage.Vehicle.Manufacturer);
+			Assert.AreEqual(manufacturerAddress, lastManStage.Vehicle.ManufacturerAddress);
+			Assert.AreEqual(height.ConvertToMeter(), lastManStage.Vehicle.Height);
+			Assert.AreEqual(model, lastManStage.Vehicle.Model);
+			Assert.AreEqual(legislativeCategory, lastManStage.Vehicle.LegislativeClass);
+			Assert.AreEqual(curbMassChassis, lastManStage.Vehicle.CurbMassChassis);
+			Assert.AreEqual(technicalpermissableLadenMass, lastManStage.Vehicle.GrossVehicleMassRating);
+			Assert.AreEqual(registeredClass, lastManStage.Vehicle.RegisteredClass);
+			Assert.AreEqual(bodyWorkCode, lastManStage.Vehicle.VehicleCode);
+			Assert.AreEqual(lowEntry, lastManStage.Vehicle.LowEntry);
+			Assert.AreEqual(passengerSeatsUpperDeck, lastManStage.Vehicle.NumberPassengerSeatsUpperDeck);
+			Assert.AreEqual(PassengerSeatsLowerDeck, lastManStage.Vehicle.NumberPassengerSeatsLowerDeck);
+
+
+			Write("Starting simulation ...");
+			jobListVm.Jobs[1].Selected = true;
+			await jobListVm.RunSimulationExecute();
+
+
+			Write("Done!");
+		}
+
+		[Test]
+		public async Task SimulateMinimalExemptedVif()
+		{
+			//Setup
+			var jobListViewModel = _kernel.Get<IJobListViewModel>() as JobListViewModel;
+			await jobListViewModel.AddJobAsync(GetTestDataPath(_exemptedMandatory));
+			Assert.AreEqual(1, jobListViewModel.Jobs.Count);
+
+			jobListViewModel.Jobs[0].Selected = true;
+			await jobListViewModel.RunSimulationExecute();
+
+
+		}
+
+
+
+	}
+}
\ No newline at end of file
diff --git a/Vecto3GUI2020Test/ViewModelTests/ExtensionTests.cs b/Vecto3GUI2020Test/ViewModelTests/ExtensionTests.cs
index 50d9531a52b15491bf75126f42deb6ff1e0c3818..7e758e678e7e7987f273b161713cfdc481a7200e 100644
--- a/Vecto3GUI2020Test/ViewModelTests/ExtensionTests.cs
+++ b/Vecto3GUI2020Test/ViewModelTests/ExtensionTests.cs
@@ -2,7 +2,8 @@
 using System.Collections.ObjectModel;
 using NUnit.Framework;
 using TUGraz.VectoCommon.Models;
-using VECTO3GUI2020.Helper;
+using TUGraz.VectoCommon.Utils;
+using EnumHelper = VECTO3GUI2020.Helper.EnumHelper;
 
 namespace Vecto3GUI2020Test.ViewModelTests
 {
@@ -38,6 +39,25 @@ namespace Vecto3GUI2020Test.ViewModelTests
 			Assert.False(collection2.Contains(VehicleCode.NOT_APPLICABLE));
 		}
 
-		
+		[Ignore("")]
+		[TestCase(1.000, 3U, "1.000")]
+		[TestCase(1.210, 3U, "1.210")]
+		[TestCase(1.201, 3U, "1.201")]
+		[TestCase(1.3, 3U, "1.300")]
+		public void ToMinSignificantDigitsExtensionTest(double input, uint significantDigits, string expected)
+		{
+			var result = input.ToMinSignificantDigits(significantDigits); //Called like this in XMLPrimaryBusVehicleReport;
+			Assert.AreEqual(expected, result);
+		}
+
+		[TestCase(1.000, 3U, 3U, "1.000")]
+		[TestCase(1.210, 3U, 3U, "1.210")]
+		[TestCase(1.201, 3U, 3U, "1.201")]
+		[TestCase(1.3, 3U, 3U, "1.300")]
+		public void ToMinSignificantDigitsExtensionTest2(double input, uint significantDigits, uint decimals, string expected)
+		{
+			var result = input.ToMinSignificantDigits(significantDigits, decimals); //Called like this in XMLPrimaryBusVehicleReport;
+			Assert.AreEqual(expected, result);
+		}
 	}
 }
\ No newline at end of file
diff --git a/Vecto3GUI2020Test/ViewModelTests/JobListViewModelTests.cs b/Vecto3GUI2020Test/ViewModelTests/JobListViewModelTests.cs
new file mode 100644
index 0000000000000000000000000000000000000000..cbf317ed64243b879a5ae21c922c7f84a71e9e34
--- /dev/null
+++ b/Vecto3GUI2020Test/ViewModelTests/JobListViewModelTests.cs
@@ -0,0 +1,132 @@
+ο»Ώusing System.Diagnostics;
+using System.Threading.Tasks;
+using Ninject;
+using NUnit.Framework;
+using NUnit.Framework.Internal;
+using VECTO3GUI2020.ViewModel;
+using VECTO3GUI2020.ViewModel.Implementation;
+using VECTO3GUI2020.ViewModel.Interfaces;
+using VECTO3GUI2020.ViewModel.MultiStage.Implementation;
+using Vecto3GUI2020Test.BugReports;
+
+namespace Vecto3GUI2020Test.ViewModelTests
+{
+	[TestFixture]
+	public class JobListViewModelTests : ViewModelTestBase
+	{
+		private const string finalVIF = "final.VIF_Report_4.xml";
+
+		private const string _newVifJob = "newVifCompletedStage.json";
+		private JobListViewModel _jobListViewModel;
+
+		[SetUp]
+		public void SetupViewModelTests()
+		{
+			_jobListViewModel = _kernel.Get<IJobListViewModel>() as JobListViewModel;
+		}
+
+		[Test]
+		public async Task CancelSimulationWhileLoadingFiles()
+		{
+			var watch = new Stopwatch();
+			watch.Start();
+			//load final vif
+			var loadedFile = await _jobListViewModel.AddJobAsync(GetTestDataPath(finalVIF)).ConfigureAwait(false);
+
+			//select vif for simulation
+			Assert.AreNotEqual(0, _jobListViewModel.Jobs.Count);
+			_jobListViewModel.Jobs[0].Selected = true;
+
+
+			_jobListViewModel.RunSimulationExecute();
+			TestContext.Write("Canceling Simulation ... ");
+			Assert.IsTrue(_jobListViewModel.SimulationRunning);
+			_jobListViewModel.CancelSimulation.Execute(null);
+
+
+			//Wait 
+			var constraint = Is.True.After(delayInMilliseconds: 100000, pollingInterval: 100);
+			Assert.That(() => _jobListViewModel.SimulationRunning == false, constraint);
+			TestContext.WriteLine("Done!");
+
+			watch.Stop();
+			TestContext.WriteLine($"ExecutionTime {watch.Elapsed.TotalSeconds}s");
+		}
+
+		[TestCase(VIFTests.exempted_primary_vif, TestName="Exempted")]
+		public async Task AddJobAsyncTest(string fileName)
+		{
+			var path = GetTestDataPath(fileName);
+			Assert.AreEqual(0, _jobListViewModel.Jobs.Count);
+
+			await _jobListViewModel.AddJobAsync(path);
+			Assert.AreEqual(1, _jobListViewModel.Jobs.Count);
+
+			Assert.AreEqual(path, _jobListViewModel.Jobs[0].DataSource.SourceFile);
+		}
+
+		[TestCase(true, TestName = "Exempted")]
+		[TestCase(false, TestName = "NotExempted")]
+		public void addNewFilesToJobList(bool exempted)
+		{
+			if (exempted)
+			{
+				_jobListViewModel.NewExemptedCompletedInputCommand.Execute(null);
+			}
+			else
+			{
+				_jobListViewModel.NewCompletedInputCommand.Execute(null);
+			}
+
+			Assert.AreEqual(1, _jobListViewModel.Jobs.Count);
+		}
+
+
+		[Test]
+		public async Task CancelSimulationWhenJobContainerIsRunning()
+		{
+			var watch = new Stopwatch();
+			watch.Start();
+
+			//load final vif
+			var loadedFile = await _jobListViewModel.AddJobAsync(GetTestDataPath(finalVIF)).ConfigureAwait(false);
+
+			//select vif for simulation
+			Assert.AreNotEqual(0, _jobListViewModel.Jobs.Count);
+			_jobListViewModel.Jobs[0].Selected = true;
+
+
+			//Simulate for a while
+			var outputVm = _kernel.Get<IOutputViewModel>(); // SINGLETON
+			var simulationTask = _jobListViewModel.RunSimulationExecute();
+			Assert.That(() => outputVm.Progress, Is.GreaterThanOrEqualTo(25).After(1 * 60 * 1000, 1),
+				() => $"Simulation reached {outputVm.Progress}%");
+
+			TestContext.Write("Canceling Simulation ... ");
+			Assert.IsTrue(_jobListViewModel.SimulationRunning);
+			_jobListViewModel.CancelSimulation.Execute(null);
+			Assert.That(() => _jobListViewModel.SimulationRunning, Is.False.After(20*1000, 50) );
+			TestContext.WriteLine("Done!");
+
+			watch.Stop();
+			TestContext.WriteLine($"ExecutionTime {watch.Elapsed.TotalSeconds}s");
+        }
+
+        [Test]
+        public async Task LoadStageInputOnly()
+        {
+			var documentViewModel = await _jobListViewModel.AddJobAsync(GetTestDataPath(stageInputFullSample));
+            Assert.AreEqual(typeof(StageInputViewModel), documentViewModel.GetType());
+
+            var stageInputDocumentViewModel = documentViewModel.EditViewModel as StageInputViewModel;
+            Assert.NotNull(stageInputDocumentViewModel);
+		}
+
+		[Test]
+		public async Task LoadNewVifJob()
+		{
+			var documentViewModel = await _jobListViewModel.AddJobAsync(GetTestDataPath(_newVifJob));
+			Assert.NotNull(documentViewModel);
+		}
+    }
+}
\ No newline at end of file
diff --git a/Vecto3GUI2020Test/ViewModelTests/JsonTests.cs b/Vecto3GUI2020Test/ViewModelTests/JsonTests.cs
new file mode 100644
index 0000000000000000000000000000000000000000..83aedfdca1f14e78787968998ca8023b5790811c
--- /dev/null
+++ b/Vecto3GUI2020Test/ViewModelTests/JsonTests.cs
@@ -0,0 +1,23 @@
+ο»Ώusing NUnit.Framework;
+using VECTO3GUI2020.Model.Multistage;
+using TUGraz.VectoCore;
+
+namespace Vecto3GUI2020Test.ViewModelTests
+{
+	[TestFixture]
+	public class JsonTests
+	{
+		[Test]
+		public void NamingTest()
+		{
+            //Membernames have to match JsonKeys for correct serialization/desirialization
+			Assert.AreEqual(JsonKeys.JsonHeader, nameof(JSONJob.Header));
+			Assert.AreEqual(JsonKeys.JsonHeader_FileVersion, nameof(JSONJob.Header.FileVersion));
+
+			Assert.AreEqual(JsonKeys.JsonBody, nameof(JSONJob.Body));
+            Assert.AreEqual(JsonKeys.PrimaryVehicle, nameof(JSONJob.Body.PrimaryVehicle));
+            Assert.AreEqual(JsonKeys.InterimStage, nameof(JSONJob.Body.InterimStage));
+			Assert.AreEqual(JsonKeys.Completed, nameof(JSONJob.Body.Completed));
+		}
+	}
+}
\ No newline at end of file
diff --git a/Vecto3GUI2020Test/ViewModelTests/LoadAndSaveVehicleData.cs b/Vecto3GUI2020Test/ViewModelTests/LoadAndSaveVehicleData.cs
index 8758db065c94b238396213ab54a6c184dae73b8c..43d10665153d00b3f3c05249ee0c2c3e5e2bf48b 100644
--- a/Vecto3GUI2020Test/ViewModelTests/LoadAndSaveVehicleData.cs
+++ b/Vecto3GUI2020Test/ViewModelTests/LoadAndSaveVehicleData.cs
@@ -1,4 +1,5 @@
 using System;
+using System.Configuration;
 using System.IO;
 using System.Linq;
 using System.Runtime.CompilerServices;
@@ -20,7 +21,9 @@ using TUGraz.VectoCore.Models.Simulation.Impl;
 using TUGraz.VectoCore.Models.SimulationComponent.Strategies;
 using TUGraz.VectoCore.OutputData.FileIO;
 using TUGraz.VectoCore.Utils;
+using VECTO3GUI2020;
 using VECTO3GUI2020.Helper;
+using VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components;
 using VECTO3GUI2020.ViewModel.MultiStage.Implementation;
 
 namespace Vecto3GUI2020Test
@@ -29,17 +32,21 @@ namespace Vecto3GUI2020Test
     public class LoadAndSaveVehicleData : ViewModelTestBase
 	{
 		[Test]
-		public void loadInputFileMultipleStage()
+		public void LoadInputFileMultipleStage()
 		{
-			loadFile(consolidated_multiple_stages);
+			Assert.NotNull(loadFile(consolidated_multiple_stages));
 		}
 
-		[Test]
-		public void loadPrimaryAndSaveVehicleData()
+
+		[Test, Combinatorial]
+		public void LoadPrimaryAndEditHVACDriverCompartmentOnly(
+			[Values(BusHVACSystemConfiguration.Configuration2)] BusHVACSystemConfiguration configuration)
 		{
+			var stageInputFileName = "stageinput.xml";
+
 			//Load Primary Vehicle VIF
 			var newMultiStageJob = loadFile(primary_vehicle_only);
-			var vehicle = newMultiStageJob.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as DeclarationInterimStageBusVehicleViewModel_v2_8;
+			var vehicle = newMultiStageJob.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as InterimStageBusVehicleViewModel_v2_8;
 			Assert.NotNull(vehicle);
 			vehicle.Manufacturer = "test1";
 			vehicle.ManufacturerAddress = "testAddress2";
@@ -47,110 +54,110 @@ namespace Vecto3GUI2020Test
 
 
 
-			var manufacturingStage =
-				newMultiStageJob.MultiStageJobViewModel as MultiStageJobViewModel_v0_1;
+			var manufacturingStage = newMultiStageJob.MultiStageJobViewModel.ManufacturingStageViewModel as ManufacturingStageViewModel_v0_1;
 
-			Assert.NotNull(manufacturingStage);
+			var auxVm = manufacturingStage.VehicleViewModel.MultistageAuxiliariesViewModel as MultistageAuxiliariesViewModel;
 
 
-			var fileName = primary_vehicle_only.Replace(".xml", "") + "_output.xml";
-			deleteFile(fileName);
-			setMockDialogHelper(null, fileToSave: fileName);
+			auxVm.SystemConfiguration = BusHVACSystemConfiguration.Configuration2;
+			auxVm.HeatPumpTypeDriverCompartment = HeatPumpType.non_R_744_2_stage;
+			auxVm.HeatPumpModeDriverCompartment = (HeatPumpMode)auxVm.HeatPumpModeDriverCompartmentAllowedValues[0];
+
+			var multistageJob = newMultiStageJob.MultiStageJobViewModel as MultiStageJobViewModel_v0_1;
+			multistageJob.ManufacturingStageViewModel.SaveInputDataExecute(GetFullPath(stageInputFileName));
+			Assert.IsTrue(checkFileNameExists(stageInputFileName));
+
 
 
-			manufacturingStage.SaveInputDataAsCommand.Execute(null);
-			Assert.True(checkFileNameExists(fileName));
 		}
 
+
+
+
 		[Test]
-		public void loadPrimaryAndSave()
+		public void LoadPrimaryAndSaveVehicleData()
 		{
-			//load file
+			//Load Primary Vehicle VIF
 			var newMultiStageJob = loadFile(primary_vehicle_only);
-			var vehicle = newMultiStageJob.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as DeclarationInterimStageBusVehicleViewModel_v2_8;
+			var vehicle = newMultiStageJob.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as InterimStageBusVehicleViewModel_v2_8;
+			Assert.NotNull(vehicle);
+			vehicle.Manufacturer = "test1";
+			vehicle.ManufacturerAddress = "testAddress2";
+			vehicle.VIN = "VIN123456789";
 
 
 
-		}
+			var multistageJobViewModel =
+				newMultiStageJob.MultiStageJobViewModel as MultiStageJobViewModel_v0_1;
 
+			Assert.NotNull(multistageJobViewModel);
 
 
+			var fileName = primary_vehicle_only.Replace(".xml", "") + "_output.xml";
+
+			multistageJobViewModel.ManufacturingStageViewModel.SaveInputDataExecute(GetFullPath(fileName));
+			Assert.True(checkFileNameExists(fileName));
+		}
 
-		[Ignore("Validation is only performed with gui")]
-		[TestCase(primary_vehicle_only)]
-		[TestCase(consolidated_multiple_stages)]
-		[TestCase(consolidated_one_stage)]
-		public void SaveVehicleDataWithMissingFields(string fileName)
+		[Test]
+		public void LoadPrimaryAndSaveAsVif()
 		{
-			var newMultistageJobViewModel = loadFile(fileName);
-			var manstage = newMultistageJobViewModel.MultiStageJobViewModel as MultiStageJobViewModel_v0_1;
-			Assert.NotNull(manstage);
+			//load file
+			var newMultiStageJob = loadFile(primary_vehicle_only);
+			var vehicle = newMultiStageJob.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as InterimStageBusVehicleViewModel_v2_8;
 
-			var saveFileName = fileName.Replace(".xml", "") + "_output.xml";
-			deleteFile(saveFileName);
-			_kernel.Rebind<IDialogHelper>().ToConstant(setMockDialogHelper(fileToSave: saveFileName).Object);
-			manstage.SaveInputDataAsCommand.Execute(null);
+		}
 
-			Assert.False(checkFileNameExists(saveFileName));
 
-		}
 
 		[Test]
-		public void reloadInputFile()
+		public void ReloadInputFile()
 		{
 			var newMultistageJobViewModel = loadFile(consolidated_multiple_stages_airdrag) as NewMultiStageJobViewModel;
 
 			var vehicle = newMultistageJobViewModel.MultiStageJobViewModel.VehicleInputData as
-				DeclarationInterimStageBusVehicleViewModel_v2_8;
+				InterimStageBusVehicleViewModel_v2_8;
 
 			Assert.NotNull(vehicle);
 
 
 			Assert.True(vehicle.AirdragModifiedMultistageEditingEnabled);
 
-			var mockDialog = setMockDialogHelper(consolidated_multiple_stages_hev);
-			newMultistageJobViewModel.AddVifFile.Execute(null);
-			Assert.AreEqual(mockDialog.Object.OpenXMLFileDialog(null), newMultistageJobViewModel.VifPath);
-			vehicle = newMultistageJobViewModel.MultiStageJobViewModel.VehicleInputData as DeclarationInterimStageBusVehicleViewModel_v2_8;
+			newMultistageJobViewModel.AddVifFile(GetTestDataPath(consolidated_multiple_stages_hev));
+			Assert.AreEqual(GetTestDataPath(consolidated_multiple_stages_hev), newMultistageJobViewModel.VifPath);
+			vehicle = newMultistageJobViewModel.MultiStageJobViewModel.VehicleInputData as InterimStageBusVehicleViewModel_v2_8;
 			Assert.IsFalse(vehicle.AirdragModifiedMultistageEditingEnabled);
 
-
-
 		}
 
 
 		[Test]
-		public void loadInputFileMultipleStageAirdrag()
+		public void LoadInputFileMultipleStageAirdrag()
 		{
 			loadFile(consolidated_multiple_stages_airdrag);
 		}
 
+		[Ignore("incomplete")]
 		[Test]
-		public void loadAndSaveFullInputDataSample()
+		public void LoadAndSaveFullInputDataSample()
 		{
 			var vm = loadFile(primary_vehicle_only);
 			var multiStageJobViewModel = vm.MultiStageJobViewModel as MultiStageJobViewModel_v0_1;
 
 
 			var fileToSave = "loadAndSaveFullInputDataTest.xml";
-			var mockDialogHelper = setMockDialogHelper(stageInputFullSample, fileToSave);
-			multiStageJobViewModel.LoadVehicleDataCommand.Execute(null);
+			var mockDialogHelper = SetMockDialogHelper(stageInputFullSample, fileToSave);
+			multiStageJobViewModel.ManufacturingStageViewModel.LoadStageInputData(GetFullPath(stageInputFullSample));
+
 
 			var manufacturingStageViewModel =
 				multiStageJobViewModel.ManufacturingStageViewModel as ManufacturingStageViewModel_v0_1;
 
 			var vehicleViewModel =
-				manufacturingStageViewModel.VehicleViewModel as DeclarationInterimStageBusVehicleViewModel_v2_8;
+				manufacturingStageViewModel.VehicleViewModel as InterimStageBusVehicleViewModel_v2_8;
 
-			vehicleViewModel.AirdragModifiedMultistage = true;
-			Assert.AreEqual(ConsumerTechnology.Electrically, vehicleViewModel.DoorDriveTechnology);
-			Assert.AreEqual(ConsumerTechnology.Electrically, vm.MultiStageJobViewModel.VehicleInputData.DoorDriveTechnology);
 
-			Assert.IsNotNull(multiStageJobViewModel.VehicleInputData.ManufacturerAddress);
 
-			var fileExists = checkFilePathExists(mockDialogHelper.Object.OpenXMLFileDialog());
-			Assert.IsTrue(fileExists);
-			File.Delete(mockDialogHelper.Object.SaveToXMLDialog());
 
 
 		}
@@ -158,7 +165,7 @@ namespace Vecto3GUI2020Test
 		[Test]
 		public void loadVehicleInputDataOnly()
 		{
-			string inputPath = Path.Combine(DirPath, stageInputFullSample);
+			string inputPath = GetTestDataPath(stageInputFullSample);
 			var inputDataReader = _kernel.Get<IXMLInputDataReader>();
 			var inputData = (IDeclarationInputDataProvider)inputDataReader.Create(inputPath);
 			var vehicleInputData = inputData.JobInputData.Vehicle;
@@ -191,33 +198,33 @@ namespace Vecto3GUI2020Test
 			Assert.IsTrue(vehicleViewModel.VIN.IsNullOrEmpty());
 			Assert.IsNull(vehicleViewModel.Model);
 
-			var vehicleViewModel_v2_8 = vehicleViewModel as DeclarationInterimStageBusVehicleViewModel_v2_8;
-			Assert.NotNull(vehicleViewModel_v2_8);
+			var vehicleViewModelV28 = vehicleViewModel as InterimStageBusVehicleViewModel_v2_8;
+			Assert.NotNull(vehicleViewModelV28);
 
-			Assert.Null(vehicleViewModel_v2_8.HeightInMm);
-			Assert.Null(vehicleViewModel_v2_8.LengthInMm);
-			Assert.Null(vehicleViewModel_v2_8.WidthInMm);
-			Assert.Null(vehicleViewModel_v2_8.EntranceHeightInMm);
+			Assert.Null(vehicleViewModelV28.HeightInMm);
+			Assert.Null(vehicleViewModelV28.LengthInMm);
+			Assert.Null(vehicleViewModelV28.WidthInMm);
+			Assert.Null(vehicleViewModelV28.EntranceHeightInMm);
 
 
 
-			Assert.Null(vehicleViewModel_v2_8.ConsolidatedHeightInMm);
-			Assert.Null(vehicleViewModel_v2_8.ConsolidatedLengthInMm);
-			Assert.Null(vehicleViewModel_v2_8.ConsolidatedWidthInMm);
-			Assert.Null(vehicleViewModel_v2_8.ConsolidatedEntranceHeightInMm);
+			Assert.Null(vehicleViewModelV28.ConsolidatedHeightInMm);
+			Assert.Null(vehicleViewModelV28.ConsolidatedLengthInMm);
+			Assert.Null(vehicleViewModelV28.ConsolidatedWidthInMm);
+			Assert.Null(vehicleViewModelV28.ConsolidatedEntranceHeightInMm);
 
 
-			Assert.IsFalse(vehicleViewModel_v2_8.AirdragModifiedMultistageEditingEnabled);
+			Assert.IsFalse(vehicleViewModelV28.AirdragModifiedMultistageEditingEnabled);
 
-			Assert.IsNull(vehicleViewModel_v2_8.AirdragModifiedMultistage);
-			Assert.IsNull(vehicleViewModel_v2_8.ConsolidatedAirdragModifiedEnum);
-			Assert.IsTrue(vehicleViewModel_v2_8.AirdragModifiedEnum == AIRDRAGMODIFIED.UNKNOWN || vehicleViewModel_v2_8.AirdragModifiedEnum == null);
+			Assert.IsNull(vehicleViewModelV28.AirdragModifiedMultistage);
+			Assert.IsNull(vehicleViewModelV28.ConsolidatedAirdragModifiedEnum);
+			Assert.IsTrue(vehicleViewModelV28.AirdragModifiedEnum == AIRDRAGMODIFIED.UNKNOWN || vehicleViewModelV28.AirdragModifiedEnum == null);
 			
 
 
-			Assert.AreEqual(vehicleViewModel_v2_8.AirdragModifiedMultistageEditingEnabled, false);
+			Assert.AreEqual(vehicleViewModelV28.AirdragModifiedMultistageEditingEnabled, false);
 
-			Assert.Null(vehicleViewModel_v2_8.BusAuxiliaries);
+			Assert.Null(vehicleViewModelV28.BusAuxiliaries);
 
 
 			var vifInputData = vm.MultiStageJobViewModel as IMultistageVIFInputData;
@@ -225,20 +232,26 @@ namespace Vecto3GUI2020Test
 			Assert.Null(vifInputData.VehicleInputData.Components);
 		}
 
-		[TestCase(consolidated_multiple_stages_airdrag, true)]
-		[TestCase(consolidated_multiple_stages, null)]
-		[TestCase(consolidated_one_stage, null)]
-		[TestCase(primary_vehicle_only, null)]
-		public void loadAirdragComponentAndSaveVehicleData(string fileName, object expectedAirdragModifiedValue)
+
+
+
+
+
+
+		[TestCase(consolidated_multiple_stages_airdrag, true, TestName="LoadAirdragComponentConsolidatedMultipleStages")]
+		[TestCase(consolidated_multiple_stages, null, TestName="LoadAirdragConsolidatedMultipleStage")]
+		[TestCase(consolidated_one_stage, null, TestName="LoadAirdragOneStage")]
+		[TestCase(primary_vehicle_only, null, TestName= "LoadAirdragPrimaryVehicle")]
+		public void LoadAirdragComponentAndSaveVehicleData(string fileName, object expectedAirdragModifiedValue)
 		{
 			var vm = loadFile(fileName);
 
 			var vehicleVm =
 				vm.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as
-					DeclarationInterimStageBusVehicleViewModel_v2_8;
+					InterimStageBusVehicleViewModel_v2_8;
 
 
-			var airdragLoadResult = vehicleVm.MultistageAirdragViewModel.LoadAirdragFile(GetFullPath(airdragLoadTestFile));
+			var airdragLoadResult = vehicleVm.MultistageAirdragViewModel.LoadAirdragFile(GetTestDataPath(airdragLoadTestFile));
 			Assert.IsTrue(airdragLoadResult, "Airdrag file not loaded");
 
 
@@ -251,11 +264,11 @@ namespace Vecto3GUI2020Test
 			
 			var fileToSave = "stageInput.xml";
 
-			var mockDialogHelper = setMockDialogHelper(null, fileToSave: fileToSave);
+			var mockDialogHelper = SetMockDialogHelper(null, fileToSave: fileToSave);
 
 			TestContext.Write("Saving file with loaded Airdrag Component ... ");
 			var multistageJobViewModel = vm.MultiStageJobViewModel as MultiStageJobViewModel_v0_1;
-			multistageJobViewModel.SaveInputDataAsCommand.Execute(null);
+			multistageJobViewModel.ManufacturingStageViewModel.SaveInputDataAsCommand.Execute(null);
 
 			var savePath = mockDialogHelper.Object.SaveToXMLDialog();
 			Assert.IsTrue(File.Exists(savePath));
@@ -269,75 +282,39 @@ namespace Vecto3GUI2020Test
 			
 			Assert.AreEqual(expectedAirdragModifiedValue, vehicleVm.AirdragModifiedMultistage);
 
-
-
-
 			TestContext.WriteLine("Done!");
 
-
 			File.Delete(savePath);
-
-
-
-
 		}
 
-	
-
-
-
-
-
-
 
 		[Test]
-		public void loadVehicleDataTest()
+		public void LoadVehicleDataTest()
 		{
 			
 			
 			TestContext.WriteLine($"Loading {consolidated_multiple_stages}");
-
+			//New Manufacturing Stage
 			var newMultistageJobViewModel = loadFile(consolidated_multiple_stages);
-
-			//var dialogMockConsolidatedMultipleStage = new Mock<IDialogHelper>();
-			//dialogMockConsolidatedMultipleStage.Setup(dialogHelper => dialogHelper.OpenXMLFileDialog(It.IsAny<string>())).Returns(multiplestages);
-			//dialogMockConsolidatedMultipleStage.Setup(dialogHelper => dialogHelper.OpenXMLFileDialog()).Returns(multiplestages);
-			//_kernel.Rebind<IDialogHelper>().ToConstant(dialogMockConsolidatedMultipleStage.Object);
-
-
-			//var newMultistageJobViewModel = _kernel.Get<NewMultiStageJobViewModel>();
-			//newMultistageJobViewModel.AddVifFile.Execute(null);
 			Assert.NotNull(newMultistageJobViewModel.MultiStageJobViewModel);
-
 			var manstageVehicleViewModel = newMultistageJobViewModel.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as IMultistageVehicleViewModel;
 			Assert.NotNull(manstageVehicleViewModel);
-
 			var auxiliariesViewModel = manstageVehicleViewModel.MultistageAuxiliariesViewModel;
 			Assert.NotNull(auxiliariesViewModel);
-
 			var multiStageViewModel =
 				newMultistageJobViewModel.MultiStageJobViewModel as
 					MultiStageJobViewModel_v0_1;
 			Assert.NotNull(multiStageViewModel);
-
 			var manStageViewModel = multiStageViewModel.ManufacturingStageViewModel as ManufacturingStageViewModel_v0_1;
 
-			var vehicleInputData = "vecto_vehicle-stage_input_full-sample.xml";
-			var mockDialogHelper = setMockDialogHelper(fileToLoad: vehicleInputData, fileToSave: null);
-			var vehicleInputDataFilePath = mockDialogHelper.Object.OpenXMLFileDialog();
+
+			//Load Stage InputData
+			var vehicleInputDataFilePath = GetTestDataPath(stageInputFullSample);
 			TestContext.WriteLine($"Loading {vehicleInputDataFilePath}");
 			Assert.IsTrue(File.Exists(vehicleInputDataFilePath));
+			manStageViewModel.LoadStageInputData(vehicleInputDataFilePath);
 
-			
-
-			//var vehicleInputDataFiledialogMock = new Mock<IDialogHelper>();
-			//vehicleInputDataFiledialogMock.Setup(dialogHelper => dialogHelper.OpenXMLFileDialog(It.IsAny<string>())).Returns(vehicleInputData);
-			//vehicleInputDataFiledialogMock.Setup(dialogHelper => dialogHelper.OpenXMLFileDialog()).Returns(vehicleInputData);
-			//_kernel.Rebind<IDialogHelper>().ToConstant(vehicleInputDataFiledialogMock.Object);
-
-			multiStageViewModel.LoadVehicleDataCommand.Execute(null);
-
-			var vehicleViewModel = manStageViewModel.VehicleViewModel as DeclarationInterimStageBusVehicleViewModel_v2_8;
+			var vehicleViewModel = manStageViewModel.VehicleViewModel as InterimStageBusVehicleViewModel_v2_8;
 			Assert.NotNull(vehicleViewModel);
 			//Assert.IsFalse(getMockDialogHelper().Verify);
 
@@ -350,9 +327,9 @@ namespace Vecto3GUI2020Test
 			Assert.AreEqual(LegislativeClass.M3, vehicleViewModel.LegislativeClass);
 			Assert.AreEqual(500, vehicleViewModel.CurbMassChassis.Value());//CorrectedActualMass
 			Assert.AreEqual(3500, vehicleViewModel.GrossVehicleMassRating.Value());//TechnicalPermissibleMaximumLadenMass
-			Assert.AreEqual(false, vehicleViewModel.AirdragModifiedMultistage);
-			Assert.AreEqual(AIRDRAGMODIFIED.FALSE, vehicleViewModel.AirdragModifiedEnum);
-			Assert.AreEqual(AIRDRAGMODIFIED.FALSE, vehicleViewModel.ParameterViewModels[nameof(vehicleViewModel.AirdragModifiedEnum)].CurrentContent);
+			Assert.AreEqual(true, vehicleViewModel.AirdragModifiedMultistage);
+			Assert.AreEqual(AIRDRAGMODIFIED.TRUE, vehicleViewModel.AirdragModifiedEnum);
+			Assert.AreEqual(AIRDRAGMODIFIED.TRUE, vehicleViewModel.ParameterViewModels[nameof(vehicleViewModel.AirdragModifiedEnum)].CurrentContent);
 			Assert.AreEqual(TankSystem.Compressed, vehicleViewModel.TankSystem);//NgTankSystem
 			Assert.AreEqual(RegistrationClass.II_III, vehicleViewModel.RegisteredClass);//ClassBus
 			Assert.AreEqual(1, vehicleViewModel.NumberPassengerSeatsLowerDeck);
@@ -382,7 +359,7 @@ namespace Vecto3GUI2020Test
 			Assert.NotNull(airdrag.AirDragViewModel.XMLSource);
 
 
-			TestADASInput(vehicleViewModel);
+			TestAdasInput(vehicleViewModel);
 			TestComponents(vehicleViewModel.Components);
 			TestAirdragComponent(vehicleViewModel.Components.AirdragInputData);
 			TestAuxiliariesComponent(vehicleViewModel.BusAuxiliaries);
@@ -392,7 +369,7 @@ namespace Vecto3GUI2020Test
 
 		}
 
-		private void TestADASInput(IVehicleDeclarationInputData vehicle)
+		private void TestAdasInput(IVehicleDeclarationInputData vehicle)
 		{
 			Assert.AreEqual(true, vehicle.ADAS.EngineStopStart);
 			Assert.AreEqual(EcoRollType.None, vehicle.ADAS.EcoRoll);
diff --git a/Vecto3GUI2020Test/ViewModelTests/MultistageAuxiliariesViewModelTests.cs b/Vecto3GUI2020Test/ViewModelTests/MultistageAuxiliariesViewModelTests.cs
index 07c2f96cb70c838b6c2e0afb2353d3f83328556b..801e095995c191e606368b3edbac1dd74d623a13 100644
--- a/Vecto3GUI2020Test/ViewModelTests/MultistageAuxiliariesViewModelTests.cs
+++ b/Vecto3GUI2020Test/ViewModelTests/MultistageAuxiliariesViewModelTests.cs
@@ -9,11 +9,11 @@ using VECTO3GUI2020.ViewModel.MultiStage.Implementation;
 
 namespace Vecto3GUI2020Test.ViewModelTests
 {
-    [TestFixture]
-    public class MultistageAuxiliariesViewModelTests : ViewModelTestBase
-    {
+	[TestFixture]
+	public class MultistageAuxiliariesViewModelTests : ViewModelTestBase
+	{
+
 
-	
 
 		[Test]
 		public void TestAllowedValuesHeatPumpModePassenger()
@@ -33,18 +33,18 @@ namespace Vecto3GUI2020Test.ViewModelTests
 
 		[Test]
 		public void TestAllowedValuesHeatPumpModeDriver()
-        {
+		{
 			var auxVm = new MultistageAuxiliariesViewModel(null);
 			auxVm.HeatPumpTypeDriverCompartment = HeatPumpType.none;
-            Assert.IsTrue(auxVm.HeatPumpModeDriverCompartmentAllowedValues.Contains(HeatPumpMode.N_A));
-            Assert.IsFalse(auxVm.HeatPumpModeDriverCompartmentAllowedValues.Contains(HeatPumpMode.cooling));
-            Assert.IsFalse(auxVm.HeatPumpModeDriverCompartmentAllowedValues.Contains(HeatPumpMode.heating));
-            Assert.IsFalse(auxVm.HeatPumpModeDriverCompartmentAllowedValues.Contains(HeatPumpMode.heating_and_cooling));
+			Assert.IsTrue(auxVm.HeatPumpModeDriverCompartmentAllowedValues.Contains(HeatPumpMode.N_A));
+			Assert.IsFalse(auxVm.HeatPumpModeDriverCompartmentAllowedValues.Contains(HeatPumpMode.cooling));
+			Assert.IsFalse(auxVm.HeatPumpModeDriverCompartmentAllowedValues.Contains(HeatPumpMode.heating));
+			Assert.IsFalse(auxVm.HeatPumpModeDriverCompartmentAllowedValues.Contains(HeatPumpMode.heating_and_cooling));
 
 
-            auxVm.HeatPumpTypeDriverCompartment = HeatPumpType.R_744;
-            Assert.IsFalse(auxVm.HeatPumpModeDriverCompartmentAllowedValues.Contains(HeatPumpMode.N_A));
-        }
+			auxVm.HeatPumpTypeDriverCompartment = HeatPumpType.R_744;
+			Assert.IsFalse(auxVm.HeatPumpModeDriverCompartmentAllowedValues.Contains(HeatPumpMode.N_A));
+		}
 
 
 		[Test]
@@ -80,13 +80,45 @@ namespace Vecto3GUI2020Test.ViewModelTests
 			Assert.AreEqual(HeatPumpMode.N_A, auxVm.HeatPumpModeDriverCompartment);
 			Assert.AreEqual(HeatPumpMode.N_A,
 				auxVm.ParameterViewModels[nameof(auxVm.HeatPumpModeDriverCompartment)].CurrentContent);
-
 		}
 
+		[Test]
+		public void TestPassengerHeatPumpConfigurations()
+		{
+			var auxVm = new MultistageAuxiliariesViewModel(null);
+			auxVm.HeatPumpGroupEditingEnabled = true;
+
 
+			Assert.AreEqual(1, auxVm.HeatPumpConfigurationsPassenger.Count);
 
+			Assert.IsFalse(auxVm.RemovePassengerHeatpumpCommand.CanExecute(null));
 
 
+			bool canExecuteChangedFired = false;
+			auxVm.RemovePassengerHeatpumpCommand.CanExecuteChanged += (sender, args) => {
+				canExecuteChangedFired = true;
+			};
 
+			//Add another configuration
+			
+			auxVm.AddPassengerHeatpumpCommand.Execute(null);
+			Assert.AreEqual(2, auxVm.HeatPumpConfigurationsPassenger.Count);
+			Assert.IsTrue(canExecuteChangedFired, "Can Execute Changed Not Fired");
+			canExecuteChangedFired = false;
+			Assert.IsTrue(auxVm.RemovePassengerHeatpumpCommand.CanExecute(null));
+
+			//Remove configuration
+			auxVm.RemovePassengerHeatpumpCommand.Execute(auxVm.HeatPumpConfigurationsPassenger.Last());
+			Assert.AreEqual(1, auxVm.HeatPumpConfigurationsPassenger.Count);
+			Assert.IsTrue(canExecuteChangedFired);
+			Assert.IsFalse(auxVm.RemovePassengerHeatpumpCommand.CanExecute(null));
+
+
+
+
+
+
+
+		}
 	}
 }
diff --git a/Vecto3GUI2020Test/ViewModelTests/MultistageParameterViewModelTests.cs b/Vecto3GUI2020Test/ViewModelTests/MultistageParameterViewModelTests.cs
deleted file mode 100644
index 7d75d07611250678ca960b4d7bfc859afb046ab1..0000000000000000000000000000000000000000
--- a/Vecto3GUI2020Test/ViewModelTests/MultistageParameterViewModelTests.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-ο»Ώusing NUnit.Framework;
-using VECTO3GUI2020.Annotations;
-
-namespace Vecto3GUI2020Test.ViewModelTests
-{
-	[TestFixture]
-	public class MultistageParameterViewModelTests
-	{
-		[Test]
-		public void EditingEnabledOnContentChanged()
-		{
-			
-
-		}
-
-
-
-
-	}
-}
\ No newline at end of file
diff --git a/Vecto3GUI2020Test/ViewModelTests/StageViewModelTests.cs b/Vecto3GUI2020Test/ViewModelTests/StageViewModelTests.cs
new file mode 100644
index 0000000000000000000000000000000000000000..3cf07d8a49a5447f99da09fba33e3595ba8d48f5
--- /dev/null
+++ b/Vecto3GUI2020Test/ViewModelTests/StageViewModelTests.cs
@@ -0,0 +1,51 @@
+ο»Ώusing System.IO;
+using System.Runtime.InteropServices;
+using Ninject;
+using NUnit.Framework;
+using TUGraz.VectoCore.Configuration;
+using VECTO3GUI2020.ViewModel.Implementation;
+using VECTO3GUI2020.ViewModel.Interfaces;
+using VECTO3GUI2020.ViewModel.Interfaces.Document;
+using VECTO3GUI2020.ViewModel.Interfaces.JobEdit;
+using VECTO3GUI2020.ViewModel.MultiStage.Implementation;
+using VECTO3GUI2020.ViewModel.MultiStage.Interfaces;
+
+namespace Vecto3GUI2020Test.ViewModelTests
+{
+	[TestFixture]
+	public class StageViewModelTests : ViewModelTestBase
+	{
+
+
+		[TestCase(true, TestName="Exempted")]
+		[TestCase(false, TestName="NotExempted")]
+		public void updateFilePathsWhenSavedAs_non_exempted(bool exempted)
+		{
+			IMultiStageViewModelFactory vmFactory = _kernel.Get<IMultiStageViewModelFactory>();
+
+			var StageInput = vmFactory.GetStageInputViewModel(exempted) as StageInputViewModel;
+			var vehicleVm = StageInput.VehicleViewModel as InterimStageBusVehicleViewModel_v2_8;
+			vehicleVm.Manufacturer = "adsf";
+			vehicleVm.ManufacturerAddress = "asdf 123";
+			vehicleVm.VIN = "1234567890";
+
+			var fileName = TestHelper.GetMethodName() + ".xml";
+			StageInput.SaveInputDataExecute(GetFullPath(fileName));
+			Assert.True(checkFileNameExists(fileName));
+			Assert.AreEqual(GetFullPath(fileName), StageInput.InputDataFilePath);
+
+			//Check if title is updated
+			StringAssert.Contains(fileName, StageInput.Title);
+
+			//Check datasource
+			Assert.NotNull(StageInput.DataSource);
+
+			File.Delete(GetFullPath(fileName));
+		}
+
+
+
+
+
+	}
+}
\ No newline at end of file
diff --git a/Vecto3GUI2020Test/ViewModelTests/TestExtensions.cs b/Vecto3GUI2020Test/ViewModelTests/TestExtensions.cs
deleted file mode 100644
index fbfecc557a577226d4337272c181ed4d244963ab..0000000000000000000000000000000000000000
--- a/Vecto3GUI2020Test/ViewModelTests/TestExtensions.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-ο»Ώusing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace Vecto3GUI2020Test.ViewModelTests
-{
-    internal class TestExtensions
-    {
-        
-
-    }
-}
diff --git a/Vecto3GUI2020Test/ViewModelTests/VIFTests.cs b/Vecto3GUI2020Test/ViewModelTests/VIFTests.cs
index 03af649bf3d27161e6d8ab4794dc7ee91c4a8161..868e5033e1c069ba3e144df4acc4cb3033c93d23 100644
--- a/Vecto3GUI2020Test/ViewModelTests/VIFTests.cs
+++ b/Vecto3GUI2020Test/ViewModelTests/VIFTests.cs
@@ -1,13 +1,20 @@
-ο»Ώusing System.IO;
+ο»Ώusing System;
+using System.IO;
+using System.Linq;
 using System.Xml;
 using Moq;
 using Ninject;
 using NUnit.Framework;
+using NUnit.Framework.Internal;
 using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.OutputData.FileIO;
 using TUGraz.VectoCore.Utils;
 using VECTO3GUI2020.Helper;
-
+using VECTO3GUI2020.ViewModel.Implementation;
+using VECTO3GUI2020.ViewModel.Implementation.Common;
+using VECTO3GUI2020.ViewModel.Interfaces;
 using VECTO3GUI2020.ViewModel.MultiStage.Implementation;
 
 namespace Vecto3GUI2020Test.ViewModelTests
@@ -15,17 +22,19 @@ namespace Vecto3GUI2020Test.ViewModelTests
 	public class VIFTests : ViewModelTestBase
 	{
 
+		public const string _finalVifReport4 = "final.VIF_Report_4.xml";
+
 		[Test]
 		public void loadPrimaryVehicleOnlyAndCreateNewVIF()
 		{
-			var multistagevm = loadFile(primary_vehicle_only).MultiStageJobViewModel;
+			var multistagevm = loadFile(primary_vehicle_only).MultiStageJobViewModel as MultiStageJobViewModel_v0_1;
 			var stage = multistagevm.ManufacturingStageViewModel.StageCount;
 
 			Assert.AreEqual(2, stage);
 
-			//Set Necessary Fields
+			//Set Mandatory Fields
 			var vehicle =
-				multistagevm.ManufacturingStageViewModel.Vehicle as DeclarationInterimStageBusVehicleViewModel_v2_8;
+				multistagevm.ManufacturingStageViewModel.Vehicle as InterimStageBusVehicleViewModel_v2_8;
 			vehicle.ManufacturerAddress = "Address";
 			vehicle.Manufacturer = "Manufacturer";
 			vehicle.VIN = "VIN12345678";
@@ -33,10 +42,10 @@ namespace Vecto3GUI2020Test.ViewModelTests
 			var writer = GetFileOutputVIFWriter(multistagevm);
 			
 			deleteFile(writer.XMLMultistageReportFileName);
-			setMockDialogHelper(null, writer.XMLMultistageReportFileName);
-			_kernel.Rebind<IDialogHelper>().ToConstant(setMockDialogHelper(null, writer.XMLMultistageReportFileName).Object);
+			SetMockDialogHelper(null, writer.XMLMultistageReportFileName);
+			_kernel.Rebind<IDialogHelper>().ToConstant(SetMockDialogHelper(null, writer.XMLMultistageReportFileName).Object);
 
-			MultiStageJobViewModel_v0_1.SaveVif(multistagevm, writer);
+			multistagevm.SaveVif(multistagevm, writer);
 
 			Assert.IsTrue(File.Exists(writer.XMLMultistageReportFileName));
 
@@ -44,16 +53,154 @@ namespace Vecto3GUI2020Test.ViewModelTests
 			Assert.True(validator.ValidateXML(TUGraz.VectoCore.Utils.XmlDocumentType.MultistageOutputData));
 		}
 
+		[Test, Combinatorial]
+		public void CreateVifAllParameters(
+			[Values("manufacturer")] string manufacturer,
+			[Values(LegislativeClass.M3)] LegislativeClass legCategory)
+		{
+			var multistagevm = loadFile(primary_vehicle_only).MultiStageJobViewModel as MultiStageJobViewModel_v0_1;
+			var stage = multistagevm.ManufacturingStageViewModel.StageCount;
 
-		[Test]
-		public void TestAirdragLoadAndSave()
+			Assert.AreEqual(2, stage);
+
+			//Set Necessary Fields
+			var vehicle =
+				multistagevm.ManufacturingStageViewModel.Vehicle as InterimStageBusVehicleViewModel_v2_8;
+			
+
+			vehicle.ManufacturerAddress = "Address";
+			vehicle.Manufacturer = "Manufacturer";
+			vehicle.VIN = "VIN12345678";
+			vehicle.Model = "Model";
+
+
+		}
+
+		[TestCase(true, 1, TestName="With Airdrag Component v1")]
+		[TestCase(true, 2, TestName="With Airdrag Component v2")]
+		[TestCase(false, 0, TestName="Without Airdrag Component")]
+		public void CreateCompletedFinalVIFWithAirdrag(bool loadAirdrag, int airdragVersion)
 		{
+			var multistagevm = loadFile(_finalVifReport4);
+
+			var VehicleViewModel = multistagevm.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as InterimStageBusVehicleViewModel_v2_8;
+
+			VehicleViewModel.Manufacturer = "Manufacturer";
+            VehicleViewModel.ManufacturerAddress = "Manufacturer Address";
+			VehicleViewModel.VIN = "1234567";
+			VehicleViewModel.Model = "asdf";
+			VehicleViewModel.AirdragModifiedEnum = loadAirdrag ? AIRDRAGMODIFIED.TRUE: AIRDRAGMODIFIED.FALSE;
+			VehicleViewModel.VehicleDeclarationType = VehicleDeclarationType.final;
+
+			//SETADAS
+			VehicleViewModel.EngineStopStartNullable = true;
+			VehicleViewModel.EcoRollTypeNullable = EcoRollType.WithEngineStop;
+			VehicleViewModel.PredictiveCruiseControlNullable = PredictiveCruiseControlType.Option_1_2_3;
+			VehicleViewModel.ATEcoRollReleaseLockupClutch = false;
+
+
+			if (loadAirdrag) {
+				var airdragTestFile = airdragVersion == 2 ? airdragLoadTestFilev2 : airdragLoadTestFile;
+				Assert.IsTrue(VehicleViewModel.MultistageAirdragViewModel.LoadAirdragFile(GetTestDataPath(airdragTestFile)));
+			}
+		
+			var resultFile = multistagevm.MultiStageJobViewModel.SaveVif(GetFullPath(
+				"completed_final" + ".xml"));
+
 			
+			var jobListVm = _kernel.Get<IJobListViewModel>();
+			Assert.That(() => jobListVm.Jobs.Count, Is.EqualTo(2));
+
+			Assert.IsTrue(jobListVm.Jobs[1].CanBeSimulated, String.Join("\n",((AdditionalJobInfoViewModelMultiStage) jobListVm.Jobs[1].AdditionalJobInfoVm).InvalidEntries));
+		}
+
+		[Test]
+		public void CreateCompletedExemptedVif()
+		{
+			var multistagevm = loadFile(exempted_primary_vif).MultiStageJobViewModel as MultiStageJobViewModel_v0_1;
+			var jobListVm = _kernel.Get<IJobListViewModel>();
+
+			var vehicleVm =
+				multistagevm.ManufacturingStageViewModel.VehicleViewModel as InterimStageBusVehicleViewModel_v2_8;
+
+			Assert.IsTrue(vehicleVm.ExemptedVehicle);
+			vehicleVm.Manufacturer = "Test Manufacturer 1";
+			vehicleVm.ManufacturerAddress = "Address";
+			vehicleVm.VIN = "123456789";
+			vehicleVm.Model = "Model";
+			vehicleVm.LegislativeClass = LegislativeClass.M3;
+			vehicleVm.CurbMassChassis = Kilogram.Create(20000);
+			vehicleVm.GrossVehicleMassRating = Kilogram.Create(20000);
+			vehicleVm.RegisteredClass = RegistrationClass.I_II;
+			vehicleVm.VehicleCode = VehicleCode.CC;
+			vehicleVm.LowEntry = true;
+			vehicleVm.Height = Meter.Create(2.6);
+			vehicleVm.NumberPassengerSeatsUpperDeck = 2;
+			vehicleVm.NumberPassengersStandingLowerDeck = 13;
+			vehicleVm.NumberPassengerSeatsLowerDeck = 10;
+			vehicleVm.NumberPassengersStandingUpperDeck = 12;
+
 
-			setMockDialogHelper(consolidated_multiple_stages, null);
 			
-			var newMultistageJobViewModel = _kernel.Get<NewMultiStageJobViewModel>();
-			newMultistageJobViewModel.AddVifFile.Execute(null);
+			
+			var vifName = multistagevm.SaveVif(TestHelper.GetMethodName() + ".xml");
+
+			Assert.NotNull(vifName);
+			WriteLine($"Written to {vifName}");
+			Assert.IsTrue(checkFileNameExists(vifName));
+
+			Assert.AreEqual(2, jobListVm.Jobs.Count);
+
+			Assert.IsTrue(jobListVm.Jobs[1].CanBeSimulated, string.Join("\n",((AdditionalJobInfoViewModelMultiStage)jobListVm.Jobs[1].AdditionalJobInfoVm).InvalidEntries));
+		}
+
+
+		[Test]
+		public void CreateIncompletedExemptedVif()
+		{
+			var multistagevm = loadFile(exempted_primary_vif).MultiStageJobViewModel as MultiStageJobViewModel_v0_1;
+			var jobListVm = _kernel.Get<IJobListViewModel>();
+
+			var vehicleVm =
+				multistagevm.ManufacturingStageViewModel.VehicleViewModel as InterimStageBusVehicleViewModel_v2_8;
+
+			Assert.IsTrue(vehicleVm.ExemptedVehicle);
+			vehicleVm.Manufacturer = "Test Manufacturer 1";
+			vehicleVm.ManufacturerAddress = "Address";
+			vehicleVm.VIN = "123456789";
+			vehicleVm.Model = "Model";
+			//vehicleVm.LegislativeClass = LegislativeClass.M3;
+			vehicleVm.CurbMassChassis = Kilogram.Create(20000);
+			vehicleVm.GrossVehicleMassRating = Kilogram.Create(20000);
+			//vehicleVm.RegisteredClass = RegistrationClass.I_II;
+			vehicleVm.VehicleCode = VehicleCode.CC;
+			vehicleVm.LowEntry = true;
+			vehicleVm.Height = Meter.Create(2.6);
+			vehicleVm.NumberPassengerSeatsUpperDeck = 2;
+			vehicleVm.NumberPassengerSeatsLowerDeck = 10;
+
+
+
+
+			var vifName = multistagevm.SaveVif(TestHelper.GetMethodName() + ".xml");
+
+			Assert.NotNull(vifName);
+			WriteLine($"Written to {vifName}");
+			Assert.IsTrue(checkFileNameExists(vifName));
+
+			Assert.AreEqual(2, jobListVm.Jobs.Count);
+
+			Assert.IsFalse(jobListVm.Jobs[1].CanBeSimulated);
+			var invalidEntries = (jobListVm.Jobs[1].AdditionalJobInfoVm as AdditionalJobInfoViewModelMultiStage).InvalidEntries;
+			Assert.Contains(nameof(vehicleVm.LegislativeClass), invalidEntries);
+			Assert.Contains(nameof(vehicleVm.RegisteredClass), invalidEntries);
+		}
+
+
+		[Test]
+		public void TestAirdragLoadAndSave()
+		{
+			var newMultistageJobViewModel = loadFile(consolidated_multiple_stages);
 			Assert.NotNull(newMultistageJobViewModel.MultiStageJobViewModel);
 
 			var manstageVehicleViewModel = newMultistageJobViewModel.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as IMultistageVehicleViewModel;
@@ -65,12 +212,12 @@ namespace Vecto3GUI2020Test.ViewModelTests
 			var multiStageViewModel = newMultistageJobViewModel.MultiStageJobViewModel as MultiStageJobViewModel_v0_1;
 			Assert.NotNull(multiStageViewModel);
 
-			setMockDialogHelper(stageInputFullSample, null);
+			SetMockDialogHelper(stageInputFullSample, null);
 
-			multiStageViewModel.LoadVehicleDataCommand.Execute(null);
+			multiStageViewModel.ManufacturingStageViewModel.LoadStageInputData(GetTestDataPath(stageInputFullSample));
 			
 			var vehicle =
-				multiStageViewModel.ManufacturingStageViewModel.Vehicle as DeclarationInterimStageBusVehicleViewModel_v2_8;
+				multiStageViewModel.ManufacturingStageViewModel.Vehicle as InterimStageBusVehicleViewModel_v2_8;
 			vehicle.ManufacturerAddress = "Address";
 			vehicle.Manufacturer = "Manufacturer";
 			vehicle.VIN = "VIN12345678";
@@ -80,9 +227,9 @@ namespace Vecto3GUI2020Test.ViewModelTests
 			var writer = GetFileOutputVIFWriter(multiStageViewModel);
 			
 			deleteFile(writer.XMLMultistageReportFileName);
-			setMockDialogHelper(null, writer.XMLMultistageReportFileName);
+			SetMockDialogHelper(null, writer.XMLMultistageReportFileName);
 
-			MultiStageJobViewModel_v0_1.SaveVif(multiStageViewModel, writer);
+			multiStageViewModel.SaveVif(multiStageViewModel, writer);
 			
 			var validator = new XMLValidator(XmlReader.Create(writer.XMLMultistageReportFileName));
 			Assert.True(validator.ValidateXML(TUGraz.VectoCore.Utils.XmlDocumentType.MultistageOutputData));
@@ -92,7 +239,7 @@ namespace Vecto3GUI2020Test.ViewModelTests
 		private FileOutputVIFWriter GetFileOutputVIFWriter(IMultiStageJobViewModel multistageViewModel)
 		{
 			var outputFileName = primary_vehicle_only.Replace(".xml", "_vif_output_mandatory_fields.xml");
-			var outputFilePath = Path.Combine(DirPath, outputFileName);
+			var outputFilePath = GetFullPath(outputFileName);
 
 			var currentStageCount = multistageViewModel.MultistageJobInputData.JobInputData.ManufacturingStages?.Count ?? 0;
 			return  new FileOutputVIFWriter(outputFilePath, currentStageCount);
diff --git a/Vecto3GUI2020Test/ViewModelTests/VehicleViewModelTests.cs b/Vecto3GUI2020Test/ViewModelTests/VehicleViewModelTests.cs
index 7f5d3ef5692cb23875978161f14ebb06728a06db..c814654b61c4c8f0f4ca1794492140a01b3d6764 100644
--- a/Vecto3GUI2020Test/ViewModelTests/VehicleViewModelTests.cs
+++ b/Vecto3GUI2020Test/ViewModelTests/VehicleViewModelTests.cs
@@ -25,7 +25,7 @@ namespace Vecto3GUI2020Test.ViewModelTests
 			var vm = loadFile(primary_vehicle_only);
 			var vehicleVM =
 				vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as
-					DeclarationInterimStageBusVehicleViewModel_v2_8;
+					InterimStageBusVehicleViewModel_v2_8;
 			var enteredString = "test";
 			var modelParam = vehicleVM.ParameterViewModels[nameof(vehicleVM.Model)];
 			//Null after loading
@@ -77,7 +77,7 @@ namespace Vecto3GUI2020Test.ViewModelTests
 			var vm = loadFile(primary_vehicle_only);
 			var vehicleVM =
 				vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as
-					DeclarationInterimStageBusVehicleViewModel_v2_8;
+					InterimStageBusVehicleViewModel_v2_8;
 
 			Assert.IsNull(vehicleVM.CurbMassChassis?.Value());
 			var curbMassParameter = vehicleVM.ParameterViewModels[nameof(vehicleVM.CurbMassChassis)];
@@ -105,67 +105,25 @@ namespace Vecto3GUI2020Test.ViewModelTests
 			var vm = loadFile(primary_vehicle_only);
 			var vehicleVM =
 				vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as
-					DeclarationInterimStageBusVehicleViewModel_v2_8;
-			setMockDialogHelper(stageInputFullSample);
+					InterimStageBusVehicleViewModel_v2_8;
 			var vmConc = vm.MultiStageJobViewModel as MultiStageJobViewModel_v0_1;
-			vmConc.LoadVehicleDataCommand.Execute(null);
+			vmConc.ManufacturingStageViewModel.LoadStageInputData(stageInputFullSample);
 			Assert.IsFalse(vmConc.ManufacturingStageViewModel.VehicleViewModel.HasErrors);
 			
 		}
 
-		//[Test]
-		//public void groupEditing()
-		//{
-		//	var vm = loadFile(primary_vehicle_only);
-		//	var vehicleVM =
-		//		vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as
-		//			DeclarationInterimStageBusVehicleViewModel_v2_8;
-
-		//	vehicleVM.NumberOfPassengersUpperDeck = 2;
-
-		//	Assert.IsTrue(vehicleVM.NumberOfPassengersEditingEnabled);
-		//	Assert.AreEqual(2, vehicleVM.NumberOfPassengersUpperDeck);
-		//	vehicleVM.NumberOfPassengersLowerDeck = 3;
-		//	Assert.AreEqual(3, vehicleVM.NumberOfPassengersLowerDeck);
-		//}
-
-
-		//[Test]
-		//public void automaticallyEnableEditingWhenContentIsSet()
-		//{
-		//	var vm = loadFile(primary_vehicle_only);
-		//	var vehicleVM =
-		//		vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as
-		//			DeclarationInterimStageBusVehicleViewModel_v2_8;
-
-			
-		//	vehicleVM.NumberOfPassengersUpperDeck = 2;
-		//	Assert.IsTrue(vehicleVM.NumberOfPassengersEditingEnabled);
-
-		//	vehicleVM.NumberOfPassengersUpperDeck = null;
-
-		//	getMockDialogHelper(stageInputFullSample);
-		//	var vmConc = vm.MultiStageJobViewModel as MultiStageJobViewModel_v0_1;
-		//	vmConc.LoadVehicleDataCommand.Execute(null);
-
-
-		//	Assert.IsTrue(vehicleVM.ParameterViewModels[nameof(vehicleVM.NumberOfPassengersUpperDeck)].EditingEnabled);
-		//	Assert.IsTrue(vehicleVM.NumberOfPassengersEditingEnabled);
-		//}
-
-
 
 
 		#region ADAS
 		[Test]
-		public void loadPrimaryAndEdit()
+		public void LoadPrimaryAndEdit()
 		{
 			var vm = loadFile(primary_vehicle_only);
 			Assert.NotNull(vm);
 
 			var vehicleViewModel =
 				vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as
-					DeclarationInterimStageBusVehicleViewModel_v2_8;
+					InterimStageBusVehicleViewModel_v2_8;
 
 			var vehicleData = vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle;
 
@@ -176,13 +134,6 @@ namespace Vecto3GUI2020Test.ViewModelTests
 			Assert.Null(vehicleData.ADAS);
 
 		}
-
-
-
-
-
-
-
 		#endregion
 
 
diff --git a/Vecto3GUI2020Test/ViewModelTests/ViewModelTestBase.cs b/Vecto3GUI2020Test/ViewModelTests/ViewModelTestBase.cs
index de58ab608a5806d62e56487de319ef3759104b57..b809717d78e15428000f42e6fda53fcab6301cab 100644
--- a/Vecto3GUI2020Test/ViewModelTests/ViewModelTestBase.cs
+++ b/Vecto3GUI2020Test/ViewModelTests/ViewModelTestBase.cs
@@ -1,6 +1,7 @@
 using System;
 using System.Diagnostics;
 using System.IO;
+using System.Runtime.CompilerServices;
 using System.Windows;
 using Moq;
 using Ninject;
@@ -10,6 +11,7 @@ using TUGraz.VectoCore.InputData.FileIO.XML;
 using VECTO3GUI2020.Helper;
 using VECTO3GUI2020.Ninject;
 using VECTO3GUI2020.Ninject.Vehicle;
+using VECTO3GUI2020.ViewModel.Interfaces;
 using VECTO3GUI2020.ViewModel.MultiStage.Implementation;
 using VECTO3GUI2020.ViewModel.MultiStage.Interfaces;
 
@@ -17,31 +19,38 @@ namespace Vecto3GUI2020Test
 {
 	public class ViewModelTestBase
 	{
-		protected const string DirPath = @"Testdata\";
+		protected string TestDataFullPath;
+		protected string SourceDirectoryRoot;
+		protected string prevDirectory;
 		protected const string consolidated_multiple_stages = "vecto_multistage_consolidated_multiple_stages.xml";
-
-		protected const string consolidated_multiple_stages_airdrag =
-			"vecto_multistage_consolidated_multiple_stages_airdrag.xml";
-
-		protected const string consolidated_multiple_stages_hev =
-			"vecto_multistage_consolidated_multiple_stages_hev.xml";
-
+		protected const string consolidated_multiple_stages_airdrag = "vecto_multistage_consolidated_multiple_stages_airdrag.xml";
+		protected const string consolidated_multiple_stages_hev = "vecto_multistage_consolidated_multiple_stages_hev.xml";
 		protected const string consolidated_one_stage = "vecto_multistage_consolidated_one_stage.xml";
 		protected const string primary_vehicle_only = "vecto_multistage_primary_vehicle_only.xml";
-
-		
-
+		protected const string exempted_primary_vif = "exempted_primary_heavyBus.VIF.xml";
 		protected const string stageInputFullSample = "vecto_vehicle-stage_input_full-sample.xml";
-
 		protected const string airdragLoadTestFile = "AirdragLoadTestFile.xml";
+		protected const string airdragLoadTestFilev2 = "AirdragLoadTestFilev2.xml";
 
 		//protected IXMLInputDataReader xmlInputReader;
 		protected IKernel _kernel;
-		private Mock<IDialogHelper> _mockDialogHelper = new Mock<IDialogHelper>();
+		private Mock<IDialogHelper> _mockDialogHelper;
+
+
+		protected TestHelper _testHelper;
+
+		[OneTimeSetUp]
+		public void OneTimeSetup()
+		{
+			prevDirectory = Environment.CurrentDirectory;
+			SourceDirectoryRoot = Directory.GetParent(prevDirectory).Parent.Parent.FullName;
+			TestDataFullPath = Path.Combine(SourceDirectoryRoot + "\\Testdata\\");
+		}
+
 
 
 		[SetUp]
-		public void OneTimeSetUp()
+		public void SetUp()
 		{
 			_kernel = new StandardKernel(
 				new VectoNinjectModule(),
@@ -50,23 +59,79 @@ namespace Vecto3GUI2020Test
 				new DocumentModule(),
 				new XMLWriterFactoryModule(),
 				new FactoryModule(),
-				new MultistageModule()
+				new MultistageModule(),
+				new Vecto3GUI2020Module()
 			);
 			//xmlInputReader = _kernel.Get<IXMLInputDataReader>();
-			_kernel.Rebind<IDialogHelper>().ToConstant(_mockDialogHelper.Object);
+			_kernel.Rebind<IDialogHelper>().ToConstant(SetMockDialogHelper().Object);
+			_kernel.Rebind<IWindowHelper>().ToConstant(GetMockWindowHelper());
+			_testHelper = new TestHelper(_kernel.Get<IXMLInputDataReader>());
+
+
+			SetOutputDirectory();
+		}
+
+		private void SetOutputDirectory()
+		{
+
+			prevDirectory = Environment.CurrentDirectory;
+			SourceDirectoryRoot = Directory.GetParent(prevDirectory).Parent.Parent.FullName;
+			TestDataFullPath = Path.GetFullPath(@"Testdata\");
+
+
+			var className = TestContext.CurrentContext.Test.ClassName.Replace("Vecto3GUI2020Test.", "");
+			var testName = TestContext.CurrentContext.Test.Name;
+			var invalidPathChars = Path.GetInvalidPathChars();
+			foreach (var invalidPathChar in invalidPathChars) {
+				testName = testName.Replace(invalidPathChar, '_');
+			}
+
+			var testOutputDirPath = Path.Combine(SourceDirectoryRoot + @"\Testdata\output\" + className + "\\" + testName);
+
+			//Create output directory
+
+			if (Directory.Exists(testOutputDirPath)) {
+				Directory.Delete(testOutputDirPath, true);
+			}
+			Directory.CreateDirectory(testOutputDirPath);
+			_kernel.Get<ISettingsViewModel>().DefaultOutputPath = testOutputDirPath;
+			Directory.SetCurrentDirectory(testOutputDirPath);
+
+			//var currentContext = TestContext.CurrentContext;
+
+			//var outputPath = Path.GetFullPath(TestDataDirPath + CurrentTestOutputPath);
+			//TestContext.CurrentContext.Test.Name = currentContext.
+			//var SettingsVm = _kernel.Get<ISettingsViewModel>();
+			//SettingsVm.DefaultOutputPath = 
+		}
+
+		protected string GetFullPath(string fileName)
+		{
+			return Path.GetFullPath(fileName);
+		}
+
+		private IWindowHelper GetMockWindowHelper()
+		{
+			Mock<IWindowHelper> mockWindowHelper = new Mock<IWindowHelper>();
+			mockWindowHelper.Setup(windowHelper => windowHelper.ShowWindow(It.IsAny<object>()))
+				.Callback<object>((obj) => WriteLine($"Window containing {obj.GetType().ToString()} was opened"));
 
+			return mockWindowHelper.Object;
 		}
 
+
 		[TearDown]
 		public void TearDown()
 		{
 			_kernel.Dispose();
 			_kernel = null;
+
+			Directory.SetCurrentDirectory(prevDirectory);
 		}
 
 		public bool checkFileNameExists(string fileName)
 		{
-			var filePath = Path.GetFullPath(DirPath + fileName);
+			var filePath = Path.GetFullPath(fileName);
 			return checkFilePathExists(filePath);
 		}
 
@@ -87,39 +152,38 @@ namespace Vecto3GUI2020Test
 
 		public void deleteFile(string fileName)
 		{
-			var filePath = Path.GetFullPath(DirPath + fileName);
+			var filePath = Path.GetFullPath(fileName);
 			File.Delete(fileName);
 		}
 
-		public NewMultiStageJobViewModel loadFile(string fileName)
+		public virtual NewMultiStageJobViewModel loadFile(string fileName)
 		{
-			var mockDialogHelper = setMockDialogHelper(fileName);
+			
 
 			var newMultistageJobViewModel = _kernel.Get<NewMultiStageJobViewModel>();
-			newMultistageJobViewModel.AddVifFile.Execute(null);
+			var filePath = GetTestDataPath(fileName);
+			newMultistageJobViewModel.AddVifFile(filePath);
+		
 
 			Assert.NotNull(newMultistageJobViewModel.MultiStageJobViewModel);
 
-			var manstageVehicleViewModel = newMultistageJobViewModel.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as DeclarationInterimStageBusVehicleViewModel_v2_8;
+			var manstageVehicleViewModel = newMultistageJobViewModel.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as InterimStageBusVehicleViewModel_v2_8;
 			Assert.NotNull(manstageVehicleViewModel);
 
-			var auxiliariesViewModel = manstageVehicleViewModel.MultistageAuxiliariesViewModel;
-			Assert.NotNull(auxiliariesViewModel);
-
-
-
-
-			var airdragViewModel = (manstageVehicleViewModel as DeclarationInterimStageBusVehicleViewModel_v2_8)?.MultistageAirdragViewModel;
-			Assert.NotNull(airdragViewModel);
-
-			Assert.AreEqual(mockDialogHelper.Object.OpenXMLFileDialog(), newMultistageJobViewModel.VifPath);
-
+			Assert.AreEqual(GetTestDataPath(fileName), newMultistageJobViewModel.VifPath);
 
+			if (!manstageVehicleViewModel.ExemptedVehicle) {
+				var auxiliariesViewModel = manstageVehicleViewModel.MultistageAuxiliariesViewModel;
+				Assert.NotNull(auxiliariesViewModel);
 
+				var airdragViewModel = (manstageVehicleViewModel as InterimStageBusVehicleViewModel_v2_8)?.MultistageAirdragViewModel;
+				Assert.NotNull(airdragViewModel);
+			}
 			return newMultistageJobViewModel;
 		}
 
-		protected Mock<IDialogHelper> setMockDialogHelper(string fileToLoad = null, string fileToSave = null)
+
+		protected virtual Mock<IDialogHelper> SetMockDialogHelper(string fileToLoad = null, string fileToSave = null)
 		{
 			if (_mockDialogHelper == null) {
 				_mockDialogHelper = new Mock<IDialogHelper>();
@@ -131,9 +195,26 @@ namespace Vecto3GUI2020Test
 						(message, caption, button, image) => {
 							TestContext.WriteLine($"{caption}\n {message}");
 						}));
+
+				_mockDialogHelper.Setup(dialogHelper =>
+						dialogHelper.ShowMessageBox(It.IsAny<string>(), It.IsAny<string>()))
+					.Callback<string, string>((message, caption) => 
+						TestContext.WriteLine($"{{caption}}\n {message}"));
+
+				_mockDialogHelper.Setup(dialogHelper =>
+						dialogHelper.ShowErrorMessage(It.IsAny<string>(), It.IsAny<string>()))
+					.Callback<string, string>((message, caption) =>
+						TestContext.WriteLine($"{{caption}}\n {message}"));
+
+				_mockDialogHelper.Setup(dialogHelper =>
+						dialogHelper.ShowErrorMessage(It.IsAny<string>()))
+					.Callback<string>((message) =>
+						TestContext.WriteLine($"{{Error}}\n {message}"));
+
+
 			}
 			if (fileToLoad != null) {
-				var filePath = Path.GetFullPath(DirPath + fileToLoad);
+				var filePath = fileToLoad;
 
 				Assert.NotNull(filePath);
 				_mockDialogHelper.Setup(dialogHelper => dialogHelper.OpenXMLFileDialog(It.IsAny<string>())).Returns(filePath);
@@ -143,7 +224,7 @@ namespace Vecto3GUI2020Test
 			}
 
 			if (fileToSave != null) {
-				var filePath = Path.GetFullPath(DirPath + fileToSave);
+				var filePath = fileToLoad;
 				_mockDialogHelper.Setup(dialogHelper =>
 					dialogHelper.SaveToXMLDialog(It.IsAny<string>())).Returns(filePath);
 				_mockDialogHelper.Setup(dialogHelper =>
@@ -156,16 +237,24 @@ namespace Vecto3GUI2020Test
 			return _mockDialogHelper;
 		}
 
-		protected Mock<IDialogHelper> getMockDialogHelper()
+		protected Mock<IDialogHelper> GetMockDialogHelper()
 		{
 			return _mockDialogHelper;
 		}
 
-		protected string GetFullPath(string fileName)
+		protected virtual string GetTestDataPath(string fileName)
 		{
-			var path = Path.GetFullPath(DirPath + fileName);
-			Debug.WriteLine(path);
+			var path = Path.Combine(TestDataFullPath + fileName);
 			return path;
 		}
+
+		protected void Write(string outputMessage)
+		{
+			TestContext.Write(outputMessage);
+		}
+		protected void WriteLine(string outputMessage)
+		{
+			TestContext.WriteLine(outputMessage);
+		}
 	}
 }
\ No newline at end of file
diff --git a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs
index 3c485c752f789e8e704a82246fd4bd72137779f8..7e845fd2d0ed03467a8317ba69566a46b3b1caab 100644
--- a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs
+++ b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs
@@ -96,8 +96,6 @@ namespace TUGraz.VectoCommon.InputData
 
 		string VIN { get; }
 
-		string LegislativeCategory { get; }
-
 		LegislativeClass? LegislativeClass { get; }
 
 		/// <summary>
@@ -166,6 +164,9 @@ namespace TUGraz.VectoCommon.InputData
 
 		Watt MaxNetPower2 { get; }
 
+		string ExemptedTechnology { get; }
+
+
 		RegistrationClass? RegisteredClass { get; }
 
 		int? NumberPassengerSeatsUpperDeck { get; }
diff --git a/VectoCommon/VectoCommon/InputData/IInputDataProvider.cs b/VectoCommon/VectoCommon/InputData/IInputDataProvider.cs
index 176ec2e93ba6fba19938ca48a577bc2bf46c9d18..66e6a172bab78bd27aaa89d0dbbecbaf2c1e3677 100644
--- a/VectoCommon/VectoCommon/InputData/IInputDataProvider.cs
+++ b/VectoCommon/VectoCommon/InputData/IInputDataProvider.cs
@@ -88,6 +88,8 @@ namespace TUGraz.VectoCommon.InputData
 		IVehicleDeclarationInputData CompletedVehicle { get; }
 	}
 
+	
+
 
 	public interface IMultistageBusInputDataProvider : IDeclarationInputDataProvider
 	{
@@ -105,6 +107,8 @@ namespace TUGraz.VectoCommon.InputData
 		VectoSimulationJobType JobType { get; }
 
 		bool InputComplete { get; }
+
+		IList<string> InvalidEntries { get; }
 	}
 
 
diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs
index b81a8918294544b9e8c92466fb9aa0b310a680d5..fc5da5301d7ce9b49ee311c8298794836e71828a 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs
@@ -183,8 +183,6 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 
 		public string VIN => VehicleData.VIN;
 
-		public string LegislativeCategory => null;
-
 		public LegislativeClass? LegislativeClass => VehicleData.LegislativeClass;
 
 		public VehicleCategory VehicleCategory => VehicleData.VehicleCategory;
@@ -334,6 +332,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 
 		public Watt MaxNetPower2 => null;
 
+		public string ExemptedTechnology => null;
+
 		public RegistrationClass? RegisteredClass => RegistrationClass.unknown;
 
 		public int? NumberPassengerSeatsUpperDeck => 0;
diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputData.cs
index 07b7db4ab710862123b087c404253d0929d8a5cd..440d086f52ea48277b5a112e0864c22515c5a992 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputData.cs
@@ -978,7 +978,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 			var kernel = new StandardKernel(new VectoNinjectModule());
 			_xmlInputReader = kernel.Get<IXMLInputDataReader>();
 
-			var primaryInputData = Path.Combine(BasePath,  Body.GetEx<string>("PrimaryVehicle"));
+			var primaryInputData = Path.Combine(BasePath,  Body.GetEx<string>(JsonKeys.PrimaryVehicle));
 			var completedInputData = Path.Combine(BasePath,  Body.GetEx<string>("CompletedVehicle"));
 
 			PrimaryVehicle = CreateReader(primaryInputData);
@@ -1122,4 +1122,51 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 				? null
 				: JSONInputDataFactory.ReadShiftParameters(Path.Combine(BasePath, Body.GetEx<string>("TCU")), false);
 	}
+
+
+	public class JSONInputDataV10_PrimaryAndStageInputBus : JSONFile, IInputDataProvider
+	{
+		private readonly IXMLInputDataReader _xmlInputReader;
+		private string _primaryVehicleInputDataPath;
+		private IVehicleDeclarationInputData _primaryVehicleInputData;
+		public IVehicleDeclarationInputData PrimaryVehicle =>
+			_primaryVehicleInputData ?? (_primaryVehicleInputData =
+				_xmlInputReader.CreateDeclaration(_primaryVehicleInputDataPath).JobInputData.Vehicle);
+
+		private string _stageInputDataPath;
+		private IVehicleDeclarationInputData _stageInputData;
+
+		public IVehicleDeclarationInputData StageInputData => 
+			_stageInputData ?? (_stageInputData =
+				_xmlInputReader.CreateDeclaration(_stageInputDataPath).JobInputData.Vehicle);
+
+		private bool? _completed;
+
+		public bool? Completed
+		{
+			get => _completed;
+			set => _completed = value;
+		}
+
+
+		public JSONInputDataV10_PrimaryAndStageInputBus(JObject data, string filename, bool tolerateMissing = false) :
+			base(data, filename, tolerateMissing)
+		{
+			var kernel = new StandardKernel(new VectoNinjectModule());
+			_xmlInputReader = kernel.Get<IXMLInputDataReader>();
+
+
+			_primaryVehicleInputDataPath = Body.GetEx<string>(JsonKeys.PrimaryVehicle);
+			_stageInputDataPath = Body.GetEx<string>(JsonKeys.InterimStage);
+			_completed = Body.GetValueOrDefault<bool>(JsonKeys.Completed);
+
+		}
+
+		private void checkFileExtension(string path)
+		{
+			if (Path.GetExtension(path) != ".xml") {
+				throw new VectoException("unsupported vehicle file format {0}", path);
+			}
+		}
+	}
 }
diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputDataFactory.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputDataFactory.cs
index 075fe71dfeb1469afd34c3c1726f467cf96e1901..22aa7ac6ff894735318ee306296bf9c26b8fc87c 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputDataFactory.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputDataFactory.cs
@@ -101,6 +101,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 					return new JSONInputDataV8_Hybrid(json, filename, tolerateMissing);
 				case 9:
 					return new JSONInputDataV9_BEV(json, filename, tolerateMissing);
+				case 10:
+					return new JSONInputDataV10_PrimaryAndStageInputBus(json, filename, tolerateMissing);
 				default:
 					throw new VectoException("Job-File: Unsupported FileVersion. Got: {0} ", version);
 			}
diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs
index e99c766fe29ccc20d7e20d632c27b3ee0fd45cd0..fbbca0739dbd1ab14e456a02f36d3c3a46aeab2e 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs
@@ -237,8 +237,6 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 
 		public virtual string VIN => Constants.NOT_AVAILABLE;
 
-		public string LegislativeCategory => null;
-
 		public virtual LegislativeClass? LegislativeClass =>
 			Body["LegislativeClass"]?.Value<string>().ParseEnum<LegislativeClass>() ?? VectoCommon.Models.LegislativeClass.Unknown;
 
@@ -437,6 +435,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 
 		public virtual Watt MaxNetPower2 => null;
 
+		public virtual string ExemptedTechnology => null;
+
 		public virtual RegistrationClass? RegisteredClass => RegistrationClass.unknown;
 
 		public virtual int? NumberPassengerSeatsUpperDeck => 0;
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationJobInputDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationJobInputDataProvider.cs
index 70fc89dbd810ffa829806576728efff7599a12cb..119c1e6dc82479ad25437bfdda817dbd215ac9e0 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationJobInputDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationJobInputDataProvider.cs
@@ -133,5 +133,18 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 		public IXMLPrimaryVehicleBusInputData InputData { get; }
 	}
 
+	// ---------------------------------------------------------------------------------------
+
+	public class XMLDeclarationMultistageExemptedPrimaryVehicleBusJobInputDataProviderV01 :
+			XMLDeclarationMultistagePrimaryVehicleBusJobInputDataProviderV01
+	{
+		public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_MULTISTAGE_BUS_VEHICLE_NAMESPACE_VO1;
+
+		public new const string XSD_TYPE = "VehicleExemptedPrimaryBusType";
 
+		public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE);
+
+
+		public XMLDeclarationMultistageExemptedPrimaryVehicleBusJobInputDataProviderV01(XmlNode node, IXMLPrimaryVehicleBusInputData inputProvider, string fileName) : base(node, inputProvider, fileName) { }
+	}
 }
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationMultistageInputData.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationMultistageInputData.cs
index 225b6dfb808a01eb7d6746dd6546280c2099f80c..e65ddef508ad1f130fa9d3a3b00ecb82d12257c0 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationMultistageInputData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationMultistageInputData.cs
@@ -88,6 +88,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 
 		public bool InputComplete => Reader.InputComplete;
 
+		public IList<string> InvalidEntries => Reader.InvalidEntries;
+
 		public IXMLMultistageJobReader Reader { protected get; set; }
 
 		public IXMLMultistageInputDataProvider InputData { get; }
@@ -120,6 +122,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 		public XMLDeclarationMultistagePrimaryVehicleInputDataV01(XmlNode xmlNode, string fileName)
 			: base(xmlNode, fileName)
 		{
+			//var h = VectoHash.Load(xmlNode);
+			//XMLHash = h.ComputeXmlHash();
+
 			_signatureNode = xmlNode.LastChild;
 		}
 
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs
index bd4cae6aa3bef4d0cedd06b3bde098773649524c..a8d5dbf9f7d60634e2bad6a4dd40f40d2158370a 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs
@@ -108,9 +108,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 
 		public virtual string VIN => GetString(XMLNames.Vehicle_VIN);
 
-		public virtual string LegislativeCategory => null;
-
 		public virtual LegislativeClass? LegislativeClass => GetString(XMLNames.Vehicle_LegislativeClass).ParseEnum<LegislativeClass>();
+			//get { return GetString("LegislativeCategory").ParseEnum<LegislativeClass>(); }
 
 		public virtual VehicleCategory VehicleCategory
 		{
@@ -128,6 +127,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 
 
 		public virtual Kilogram GrossVehicleMassRating => GetDouble(XMLNames.Vehicle_GrossVehicleMass).SI<Kilogram>();
+			//get { return GetDouble(XMLNames.Vehicle_TPMLM).SI<Kilogram>(); }
 
 		public virtual IList<ITorqueLimitInputData> TorqueLimits
 		{
@@ -206,6 +206,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 				? GetDouble(XMLNames.Vehicle_MaxNetPower2).SI<Watt>()
 				: null;
 
+		public virtual string ExemptedTechnology => null;
+
 		public virtual RegistrationClass? RegisteredClass => RegistrationClass.unknown;
 
 		public virtual int? NumberPassengerSeatsUpperDeck => 0;
@@ -478,6 +480,123 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 		#endregion
 	}
 
+	public class XMLDeclarationExemptedPrimaryBusDataProviderV26 : XMLDeclarationVehicleDataProviderV20
+	{
+		public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V26;
+
+		public new const string XSD_TYPE = "ExemptedPrimaryHeavyBusType";
+
+		public new static readonly string QUALIFIED_XSD_TYPE =
+			XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE);
+
+		public XMLDeclarationExemptedPrimaryBusDataProviderV26(
+			IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) : base(jobData, xmlNode, sourceFile)
+		{
+			SourceType = DataSourceType.XMLEmbedded;
+
+		}
+
+		#region Overrides of AbstractXMLResource
+
+		protected override XNamespace SchemaNamespace {
+			get { return NAMESPACE_URI; }
+		}
+
+		protected override DataSourceType SourceType { get; }
+
+		#endregion
+
+		public override VehicleCategory VehicleCategory {
+			get { return VehicleCategory.HeavyBusPrimaryVehicle; }
+		}
+
+		public override bool ExemptedVehicle {
+			get { return true; }
+		}
+
+
+		public override IList<ITorqueLimitInputData> TorqueLimits {
+			get { return new List<ITorqueLimitInputData>(); }
+		}
+
+		public override PerSecond EngineIdleSpeed {
+			get { return null; }
+		}
+
+		public override bool VocationalVehicle {
+			get { return false; }
+		}
+
+		public override bool SleeperCab {
+			get { return false; }
+		}
+
+		public override TankSystem? TankSystem {
+			get { return null; }
+		}
+
+		public override IAdvancedDriverAssistantSystemDeclarationInputData ADAS {
+			get { return null; }
+		}
+
+		public override bool ZeroEmissionVehicle {
+			get { return XmlConvert.ToBoolean(GetString(XMLNames.Vehicle_ZeroEmissionVehicle)); }
+		}
+
+		public override bool HybridElectricHDV {
+			get { return false; }
+		}
+
+		public override bool DualFuelVehicle {
+			get { return false; }
+		}
+
+		public override Watt MaxNetPower1 {
+			get { return GetDouble("SumNetPower").SI<Watt>(); }
+		}
+
+		public override Watt MaxNetPower2 {
+			get { return null; }
+		}
+
+		public override string ExemptedTechnology
+		{
+			get { return GetString("Technology"); }
+		}
+
+		public override IVehicleComponentsDeclaration Components {
+			get { return null; }
+		}
+
+		public override XmlElement ComponentNode {
+			get { return null; }
+		}
+
+		public override XmlElement PTONode {
+			get { return null; }
+		}
+
+		public override XmlElement ADASNode {
+			get { return null; }
+		}
+
+		public override AngledriveType AngledriveType {
+			get { return AngledriveType.None; }
+		}
+
+		public override RetarderType RetarderType {
+			get { return RetarderType.None; }
+		}
+
+		public override double RetarderRatio {
+			get { return 0; }
+		}
+
+		public override IPTOTransmissionInputData PTOTransmissionInputData {
+			get { return null; }
+		}
+	}
+
 	public class XMLDeclarationMediumLorryVehicleDataProviderV26 : XMLDeclarationVehicleDataProviderV21
 	{
 		public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V26;
@@ -523,6 +642,28 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 		protected override DataSourceType SourceType { get; }
 
 		#endregion
+
+		public override XmlElement ComponentNode {
+			get { return null; }
+		}
+
+
+		public override XmlElement ADASNode {
+			get { return null; }
+		}
+
+		public override AngledriveType AngledriveType {
+			get { return AngledriveType.None; }
+		}
+
+		public override RetarderType RetarderType {
+			get { return RetarderType.None; }
+		}
+
+		public override double RetarderRatio {
+			get { return 0; }
+		}
+
 	}
 
 	public class XMLDeclarationCompletedBusDataProviderV26 : XMLDeclarationVehicleDataProviderV20
@@ -639,36 +780,44 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 
 		public string VIN => GetString(XMLNames.Vehicle_VIN);
 
-		public string LegislativeCategory => GetString(XMLNames.Bus_LegislativeCategory);
+		public virtual LegislativeClass? LegislativeClass
+		{
+			get { return GetString(XMLNames.Bus_LegislativeCategory)?.ParseEnum<LegislativeClass>(); }
+		}
 
-		public VehicleCategory VehicleCategory => VehicleCategoryHelper.Parse(GetString("ChassisConfiguration"));
+		public virtual VehicleCategory VehicleCategory => VehicleCategoryHelper.Parse(GetString("ChassisConfiguration"));
 
-		public AxleConfiguration AxleConfiguration => AxleConfigurationHelper.Parse(GetString(XMLNames.Vehicle_AxleConfiguration));
+		public virtual AxleConfiguration AxleConfiguration => AxleConfigurationHelper.Parse(GetString(XMLNames.Vehicle_AxleConfiguration));
 
 		//TechnicalPermissibleMaximumLadenMass
-		public Kilogram GrossVehicleMassRating => GetDouble(XMLNames.TPMLM).SI<Kilogram>();
+		public virtual Kilogram GrossVehicleMassRating => GetDouble(XMLNames.TPMLM).SI<Kilogram>();
 
 		//IdlingSpeed
-		public PerSecond EngineIdleSpeed => GetDouble(XMLNames.Engine_IdlingSpeed).RPMtoRad();
+		public virtual PerSecond EngineIdleSpeed => GetDouble(XMLNames.Engine_IdlingSpeed).RPMtoRad();
 
-		public RetarderType RetarderType => GetString(XMLNames.Vehicle_RetarderType).ParseEnum<RetarderType>();
+		
+		public virtual RetarderType RetarderType => GetString(XMLNames.Vehicle_RetarderType).ParseEnum<RetarderType>();
 
-		public double RetarderRatio => GetDouble(XMLNames.Vehicle_RetarderRatio);
+		public virtual double RetarderRatio => GetDouble(XMLNames.Vehicle_RetarderRatio);
 
-		public AngledriveType AngledriveType => GetString(XMLNames.Vehicle_AngledriveType).ParseEnum<AngledriveType>();
+		
+		public virtual AngledriveType AngledriveType => GetString(XMLNames.Vehicle_AngledriveType).ParseEnum<AngledriveType>();
 
-		public bool ZeroEmissionVehicle => GetBool(XMLNames.Vehicle_ZeroEmissionVehicle);
+		
+		public virtual bool ZeroEmissionVehicle => GetBool(XMLNames.Vehicle_ZeroEmissionVehicle);
 
-		public XmlElement ADASNode => _adasNode ?? (_adasNode = GetNode(XMLNames.Vehicle_ADAS, required: false) as XmlElement);
+		
+		public virtual XmlElement ADASNode => _adasNode ?? (_adasNode = GetNode(XMLNames.Vehicle_ADAS, required: false) as XmlElement);
 
-		public IXMLADASReader ADASReader { get; set; }
+		public virtual IXMLADASReader ADASReader { get; set; }
 
-		public IAdvancedDriverAssistantSystemDeclarationInputData ADAS => _adas ?? (_adas = ADASReader.ADASInputData);
+		
+		public virtual IAdvancedDriverAssistantSystemDeclarationInputData ADAS => _adas ?? (_adas = ADASReader.ADASInputData);
 
 
-		public IList<ITorqueLimitInputData> TorqueLimits => ReadTorqueLimits();
+		public virtual IList<ITorqueLimitInputData> TorqueLimits => ReadTorqueLimits();
 
-		public XmlElement ComponentNode
+		public virtual XmlElement ComponentNode
 		{
 			get
 			{
@@ -681,23 +830,22 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 			}
 		}
 
-		public IXMLComponentReader ComponentReader { get; set; }
+		public virtual IXMLComponentReader ComponentReader { get; set; }
 
-		public Meter EntranceHeight { get; }
+		public virtual Meter EntranceHeight { get; }
 
 		public virtual ConsumerTechnology? DoorDriveTechnology => ConsumerTechnology.Unknown;
 
 		public virtual VehicleDeclarationType VehicleDeclarationType { get; }
 
 
-		public IVehicleComponentsDeclaration Components => _components ?? (_components = ComponentReader.ComponentInputData);
+		public virtual IVehicleComponentsDeclaration Components => _components ?? (_components = ComponentReader.ComponentInputData);
 
 
 		#region  Non seeded Properties
 
 		public string Identifier { get; }
-		public bool ExemptedVehicle { get; }
-		public LegislativeClass? LegislativeClass { get; }
+		public virtual bool ExemptedVehicle { get; }
 		public int? NumberPassengerSeatsUpperDeck { get; }
 		public int? NumberPassengerSeatsLowerDeck { get; }
 		public int? NumberPassengersStandingLowerDeck { get; }
@@ -712,8 +860,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 
 		public bool HybridElectricHDV { get; }
 		public bool DualFuelVehicle { get; }
-		public Watt MaxNetPower1 { get; }
+		public virtual Watt MaxNetPower1 { get; }
 		public Watt MaxNetPower2 { get; }
+		public virtual string ExemptedTechnology { get; }
 		public RegistrationClass? RegisteredClass { get; }
 		public VehicleCode? VehicleCode { get; }
 		public bool? LowEntry { get; }
@@ -761,7 +910,41 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 		}
 	}
 
+	// ---------------------------------------------------------------------------------------
+
+	public class XMLDeclarationMultistageExemptedPrimaryVehicleBusDataProviderV01 : XMLDeclarationMultistagePrimaryVehicleBusDataProviderV01
+	{
+
+		public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_MULTISTAGE_BUS_VEHICLE_NAMESPACE_VO1;
+
+		public new const string XSD_TYPE = "VehicleExemptedPrimaryBusType";
 
+		public new static readonly string QUALIFIED_XSD_TYPE =
+			XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE);
+
+		public XMLDeclarationMultistageExemptedPrimaryVehicleBusDataProviderV01(IXMLPrimaryVehicleBusJobInputData busJobData, XmlNode xmlNode, string sourceFile) : base(busJobData, xmlNode, sourceFile) { }
+
+		#region Overrides of XMLDeclarationMultistagePrimaryVehicleBusDataProviderV01
+
+		public override XmlElement ComponentNode
+		{
+			get { return null; }
+		}
+
+		public override IVehicleComponentsDeclaration Components
+		{
+			get { return null; }
+		}
+
+		public override bool ExemptedVehicle { get { return true; } }
+
+		public override Watt MaxNetPower1
+		{
+			get { return GetDouble("SumNetPower").SI<Watt>(); }
+		}
+
+		#endregion
+	}
 
 	// ---------------------------------------------------------------------------------------
 
@@ -782,7 +965,10 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 		{
 			get
 			{
-				return ElementExists(new [] {XMLNames.Component_Vehicle, XMLNames.Component_Model})
+				if (BaseNode.LocalName == XMLNames.Component_Vehicle) {
+					return BaseNode.SelectSingleNode($"./*[local-name()='{XMLNames.Component_Model}']")?.InnerText;
+				}
+				return ElementExists(new [] { XMLNames.Component_Vehicle, XMLNames.Component_Model})
 					? GetString(new[] { XMLNames.Component_Vehicle, XMLNames.Component_Model }) : null;
 			}
 		}
@@ -1001,9 +1187,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 		{
 			get
 			{
-				if (!ElementExists(XMLNames.Bus_NumberPassengersLowerDeck))
+				if (!ElementExists(XMLNames.Bus_NumberPassengerSeatsLowerDeck))
 					return null;
-				var node = GetNode(XMLNames.Bus_NumberPassengersLowerDeck);
+				var node = GetNode(XMLNames.Bus_NumberPassengerSeatsLowerDeck);
 				return XmlConvert.ToInt32(node.InnerText);
 			}
 		}
@@ -1012,13 +1198,37 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 		{
 			get
 			{
-				if (!ElementExists(XMLNames.Bus_NumberPassengersUpperDeck))
+				if (!ElementExists(XMLNames.Bus_NumberPassengerSeatsUpperDeck))
 					return null;
-				var node = GetNode(XMLNames.Bus_NumberPassengersUpperDeck);
+				var node = GetNode(XMLNames.Bus_NumberPassengerSeatsUpperDeck);
 				return XmlConvert.ToInt32(node.InnerText);
 			}
 		}
 
+
+		public override int? NumberPassengersStandingLowerDeck
+		{
+			get
+			{
+				if (!ElementExists(XMLNames.Bus_NumberPassengersStandingLowerDeck))
+					return null;
+				var node = GetNode(XMLNames.Bus_NumberPassengersStandingLowerDeck);
+				return XmlConvert.ToInt32(node.InnerText);
+			}
+		}
+
+		public override int? NumberPassengersStandingUpperDeck
+		{
+			get
+			{
+				if (!ElementExists(XMLNames.Bus_NumberPassengersStandingUpperDeck))
+					return null;
+				var node = GetNode(XMLNames.Bus_NumberPassengersStandingUpperDeck);
+				return XmlConvert.ToInt32(node.InnerText);
+			}
+		}
+
+
 		public override VehicleCode? VehicleCode =>
 			ElementExists(XMLNames.Vehicle_BodyworkCode)
 				? GetString(XMLNames.Vehicle_BodyworkCode).ParseEnum<VehicleCode>()
@@ -1039,6 +1249,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 		public override XmlElement ComponentNode => null;
 
 		public override IVehicleComponentsDeclaration Components => null;
+		
+
+		public override bool ExemptedVehicle => true;
 
 		#region Overrides of AbstractXMLResource
 
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/IXMLDeclarationInputDataReader.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/IXMLDeclarationInputDataReader.cs
index 60c24aeed47d0d135d3ee999a171021251685a44..7a2edd40e6f1d2fd25b3bef846cdd52951d5722d 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/IXMLDeclarationInputDataReader.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/IXMLDeclarationInputDataReader.cs
@@ -65,6 +65,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration
 		VectoSimulationJobType JobType { get; }
 
 		bool InputComplete { get; }
+
+		IList<string> InvalidEntries { get; }
 	}
 
 	public interface IXMLMultistageReader 
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataMultistageV01InjectModule.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataMultistageV01InjectModule.cs
index 1f50d3e2cf3f36e5ae92825eaa0da7f33a38fcf7..8f61766998e747ae0ca2b542dbf3a8f650fe4b6e 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataMultistageV01InjectModule.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataMultistageV01InjectModule.cs
@@ -39,14 +39,20 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.NinjectModules
 			Bind<IXMLPrimaryVehicleBusJobInputData>().To<XMLDeclarationMultistagePrimaryVehicleBusJobInputDataProviderV01>()
 				.Named(XMLDeclarationMultistagePrimaryVehicleBusJobInputDataProviderV01.QUALIFIED_XSD_TYPE);
 
+            Bind<IXMLPrimaryVehicleBusJobInputData>().To<XMLDeclarationMultistageExemptedPrimaryVehicleBusJobInputDataProviderV01>()
+                .Named(XMLDeclarationMultistageExemptedPrimaryVehicleBusJobInputDataProviderV01.QUALIFIED_XSD_TYPE);
 
-			Bind<IXMLJobDataReader>().To<XMLJobDataMultistagePrimaryVehicleReaderV01>()
+            Bind<IXMLJobDataReader>().To<XMLJobDataMultistagePrimaryVehicleReaderV01>()
 				.Named(XMLJobDataMultistagePrimaryVehicleReaderV01.QUALIFIED_XSD_TYPE);
 
+			Bind<IXMLJobDataReader>().To<XMLJobDataMultistageExemptedPrimaryVehicleReaderV01>()
+				.Named(XMLJobDataMultistageExemptedPrimaryVehicleReaderV01.QUALIFIED_XSD_TYPE);
+
 			Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationMultistagePrimaryVehicleBusDataProviderV01>()
 				.Named(XMLDeclarationMultistagePrimaryVehicleBusDataProviderV01.QUALIFIED_XSD_TYPE);
 
-
+			Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationMultistageExemptedPrimaryVehicleBusDataProviderV01>()
+				.Named(XMLDeclarationMultistageExemptedPrimaryVehicleBusDataProviderV01.QUALIFIED_XSD_TYPE);
 			// -----------------------------------
 
 			Bind<IXMLComponentReader>().To<XMLMultistagePrimaryVehicleBusComponentReaderV01>()
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV26InjectModule.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV26InjectModule.cs
index d2a946a414c4cdb9f521cf0bb662b866d5d027a3..ab7b6e506f1d8f1e309a108317c953ea8937663d 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV26InjectModule.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV26InjectModule.cs
@@ -18,6 +18,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.NinjectModules {
 			Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationCompletedBusDataProviderV26>()
 												.Named(XMLDeclarationCompletedBusDataProviderV26.QUALIFIED_XSD_TYPE);
 
+			Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationExemptedPrimaryBusDataProviderV26>()
+				.Named(XMLDeclarationExemptedPrimaryBusDataProviderV26.QUALIFIED_XSD_TYPE);
+
 
 			Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationPrimaryBusComponentsDataProviderV26>()
 													.Named(XMLDeclarationPrimaryBusComponentsDataProviderV26.QUALIFIED_XSD_TYPE);
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationMultistageInputReader.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationMultistageInputReader.cs
index cea6b6469d69043bef63ad7cdb295b9bbb45c04d..0703208a179bdb24011e2c15d31997182b34f193 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationMultistageInputReader.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationMultistageInputReader.cs
@@ -1,5 +1,6 @@
 ο»Ώusing System;
 using System.Collections.Generic;
+using System.Diagnostics;
 using System.Linq;
 using System.Xml;
 using System.Xml.Linq;
@@ -13,6 +14,7 @@ using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Factory;
 using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces;
 using TUGraz.VectoCore.OutputData.XML;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile;
 using TUGraz.VectoCore.Utils;
 
 namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
@@ -67,6 +69,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 		protected IPrimaryVehicleInformationInputDataProvider _primaryVehicle;
 		protected IList<IManufacturingStageInputData> _manufacturingStages;
 		protected ConsolidateManufacturingStages _consolidateManufacturingStages;
+		private IList<string> _invalidEntries = new List<string>();
 
 		private XmlNodeList _manufacturingNodeStages;
 
@@ -140,8 +143,10 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 		{
 			get
 			{
-				if (ManufacturingStages.IsNullOrEmpty())
+				if (ManufacturingStages.IsNullOrEmpty()) {
+					_invalidEntries.Add("no manufacturing stages");
 					return false;
+				}
 
 				if (_consolidateManufacturingStages == null)
 					_consolidateManufacturingStages = GetConsolidateManufacturingStage();
@@ -150,6 +155,20 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 			}
 		}
 
+		public IList<string> InvalidEntries
+		{
+			get
+			{
+				var consolidatedInvalidEntries = _consolidateManufacturingStages?.GetInvalidEntries(JobType);
+				if (consolidatedInvalidEntries != null) {
+					return _invalidEntries.Concat(consolidatedInvalidEntries).ToList();
+				} else {
+					return _invalidEntries;
+				}
+				
+			}
+		}
+
 		private ConsolidateManufacturingStages GetConsolidateManufacturingStage()
 		{
 			return new ConsolidateManufacturingStages(PrimaryVehicle, ManufacturingStages.Reverse());
@@ -285,11 +304,34 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 
 
 	#region  Generate Consolidated Multistage InputData
-	
 	public abstract class ConsolidatedDataBase 
 	{
 		protected readonly IEnumerable<IManufacturingStageInputData> _manufacturingStages;
-		protected string InvalidEntry { get; private set; }
+		private string _invalidEntry;
+		protected IList<string> _invalidEntries = new List<string>();
+		protected bool _fullChecked = false;
+		protected bool _checked = false;
+		protected bool _isComplete = true;
+
+		protected string InvalidEntry
+		{
+			get => _invalidEntry;
+			private set
+			{
+				_invalidEntry = value;
+
+				if (!_invalidEntries.Contains(_invalidEntry)) {
+					_invalidEntries.Add(_invalidEntry);
+				}
+				_isComplete = false;
+			} 
+		}
+
+		
+		
+
+
+
 
 		public ConsolidatedDataBase(IEnumerable<IManufacturingStageInputData> manufacturingStages)
 		{
@@ -320,10 +362,47 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 			return obj;
 		}
 
-		public abstract bool IsInputDataComplete(VectoSimulationJobType jobType);
+		protected abstract bool IsInputDataCompleteTemplate(VectoSimulationJobType jobType, bool fullCheck);
+
+
+		public bool IsInputDataComplete(VectoSimulationJobType jobType)
+		{
+			var result = (_checked && _isComplete) || IsInputDataCompleteTemplate(jobType, fullCheck: false);
+			_isComplete = result;
+			return result;
+		}
+
+		public bool IsInputDataCompleteFullCheck(VectoSimulationJobType jobType)
+		{
+			if (_isComplete && _checked) {
+				return true;
+			} else {
+				var result = IsInputDataCompleteTemplate(jobType, fullCheck: true);
+				_isComplete = result;
+				_fullChecked = true;
+				_checked = true;
+				return result;
+			}
+		}
+
 		
+		
+
 		public abstract string GetInvalidEntry();
 
+		protected abstract IList<string> GetInvalidEntriesTemplate(VectoSimulationJobType jobType);
+
+		public IList<string> GetInvalidEntries(VectoSimulationJobType jobType)
+		{
+			if (_checked && _isComplete) {
+				return _invalidEntries; //<- empty
+			} else {
+				IsInputDataCompleteFullCheck(jobType);
+				return GetInvalidEntriesTemplate(jobType);
+			}
+			
+		}
+
 		protected bool MethodComplete(bool result, string methodName)
 		{
 			if (result)
@@ -366,9 +445,12 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 
 		public DigestData Signature => _manufacturingStages.First().Signature;
 
-		public override bool IsInputDataComplete(VectoSimulationJobType jobType)
+
+		protected override bool IsInputDataCompleteTemplate(VectoSimulationJobType jobType, bool fullCheck)
 		{
-			return GetConsolidatedVehicleData().IsInputDataComplete(jobType);
+			return fullCheck
+				? GetConsolidatedVehicleData().IsInputDataCompleteFullCheck(jobType)
+				: GetConsolidatedVehicleData().IsInputDataComplete(jobType);
 		}
 
 		public override string GetInvalidEntry()
@@ -376,6 +458,13 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 			return _consolidatedVehicleData.GetInvalidEntry();
 		}
 
+		#region Overrides of ConsolidatedDataBase
+		protected override IList<string> GetInvalidEntriesTemplate(VectoSimulationJobType jobType)
+		{
+			return _invalidEntries.Concat(_consolidatedVehicleData.GetInvalidEntries(jobType)).ToList();
+		}
+		#endregion
+
 		private ConsolidatedVehicleData GetConsolidatedVehicleData()
 		{
 			return _consolidatedVehicleData ??
@@ -408,8 +497,6 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 
 		public string VIN => _manufacturingStages.First().Vehicle.VIN;
 
-		public string LegislativeCategory => null;
-
 		public VehicleDeclarationType VehicleDeclarationType => _manufacturingStages.First().Vehicle.VehicleDeclarationType;
 
 		#endregion
@@ -487,7 +574,10 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 		public string CertificationNumber { get; }
 		public DigestData DigestValue { get; }
 		public string Identifier { get; }
-		public bool ExemptedVehicle { get; }
+		public bool ExemptedVehicle
+		{
+			get { return _manufacturingStages.Any(x => x.Vehicle.ExemptedVehicle); }
+		}
 		public VehicleCategory VehicleCategory { get; }
 		public AxleConfiguration AxleConfiguration { get; }
 		public IList<ITorqueLimitInputData> TorqueLimits { get; }
@@ -500,6 +590,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 		public bool DualFuelVehicle { get; }
 		public Watt MaxNetPower1 { get; }
 		public Watt MaxNetPower2 { get; }
+		public string ExemptedTechnology { get; }
+
 		public CubicMeter CargoVolume { get; }
 		public bool Articulated { get; }
 
@@ -566,11 +658,70 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 			return validAirdragEntries;
 		}
 
-		public override bool IsInputDataComplete(VectoSimulationJobType jobType)
+		private bool IsInputDataCompleteExempted(VectoSimulationJobType jobType, bool fullCheck)
 		{
+			if (fullCheck)
+			{
+				//use Binary AND to execute all Statements and gather information about missing parameters.
+				return InputComplete(Model, nameof(Model))
+						& InputComplete(LegislativeClass, nameof(LegislativeClass))
+						& InputComplete(CurbMassChassis, nameof(CurbMassChassis))
+						& InputComplete(GrossVehicleMassRating, nameof(GrossVehicleMassRating))
+						& InputComplete(RegisteredClass, nameof(RegisteredClass))
+						& InputComplete(NumberPassengerSeatsLowerDeck, nameof(NumberPassengerSeatsLowerDeck))
+						& InputComplete(NumberPassengersStandingLowerDeck, nameof(NumberPassengersStandingLowerDeck))
+						& InputComplete(NumberPassengerSeatsUpperDeck, nameof(NumberPassengerSeatsUpperDeck))
+						& InputComplete(NumberPassengersStandingUpperDeck, nameof(NumberPassengersStandingUpperDeck))
+						& InputComplete(VehicleCode, nameof(VehicleCode))
+						& InputComplete(LowEntry, nameof(LowEntry))
+						& InputComplete(Height, nameof(Height));
+			}
+
+
+			return InputComplete(Model, nameof(Model))
+					&& InputComplete(LegislativeClass, nameof(LegislativeClass))
+					&& InputComplete(CurbMassChassis, nameof(CurbMassChassis))
+					&& InputComplete(GrossVehicleMassRating, nameof(GrossVehicleMassRating))
+					&& InputComplete(RegisteredClass, nameof(RegisteredClass))
+					&& InputComplete(NumberPassengerSeatsLowerDeck, nameof(NumberPassengerSeatsLowerDeck))
+					&& InputComplete(NumberPassengerSeatsUpperDeck, nameof(NumberPassengerSeatsUpperDeck))
+					&& InputComplete(VehicleCode, nameof(VehicleCode))
+					&& InputComplete(LowEntry, nameof(LowEntry)) && InputComplete(Height, nameof(Height));
+		}
+
+
+		protected override bool IsInputDataCompleteTemplate(VectoSimulationJobType jobType, bool fullCheck)
+		{
+			if (ExemptedVehicle) {
+				return IsInputDataCompleteExempted(jobType, fullCheck);
+			}
 			GetADAS();
 			GetComponents();
+			if (fullCheck) {
+				//use Binary AND to execute all Statements and gather information about missing parameters.
+				return InputComplete(Model, nameof(Model))
+					& InputComplete(LegislativeClass, nameof(LegislativeClass))
+					& InputComplete(CurbMassChassis, nameof(CurbMassChassis))
+					& InputComplete(GrossVehicleMassRating, nameof(GrossVehicleMassRating))
+					& MethodComplete(IsAirdragEntriesValid(), nameof(IsAirdragEntriesValid))
+					& MethodComplete(IsTankSystemValid(), nameof(IsTankSystemValid))
+					& InputComplete(RegisteredClass, nameof(RegisteredClass))
+					& InputComplete(NumberPassengerSeatsLowerDeck, nameof(NumberPassengerSeatsLowerDeck))
+					& InputComplete(NumberPassengerSeatsUpperDeck, nameof(NumberPassengerSeatsUpperDeck))
+					& InputComplete(NumberPassengersStandingLowerDeck, nameof(NumberPassengersStandingLowerDeck))
+					& InputComplete(NumberPassengersStandingUpperDeck, nameof(NumberPassengersStandingUpperDeck))
+					& InputComplete(VehicleCode, nameof(VehicleCode))
+					& InputComplete(LowEntry, nameof(LowEntry)) 
+					& InputComplete(Height, nameof(Height))
+					& InputComplete(Length, nameof(Length)) 
+					& InputComplete(Width, nameof(Width))
+					& InputComplete(EntranceHeight, nameof(EntranceHeight))
+					& InputComplete(DoorDriveTechnology, nameof(DoorDriveTechnology))
+					& (InputComplete(_consolidatedADAS, nameof(_consolidatedADAS)) && _consolidatedADAS.IsInputDataCompleteFullCheck(jobType))
+					& (InputComplete(_consolidatedComponents, nameof(_consolidatedComponents)) && _consolidatedComponents.IsInputDataCompleteFullCheck(jobType));
+			}
 			
+		
 			return  InputComplete(Model, nameof(Model)) 
 					&& InputComplete(LegislativeClass, nameof(LegislativeClass)) 
 					&& InputComplete(CurbMassChassis, nameof(CurbMassChassis)) 
@@ -587,12 +738,11 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 					&& InputComplete(Length, nameof(Length)) && InputComplete(Width, nameof(Width)) 
 					&& InputComplete(EntranceHeight, nameof(EntranceHeight))  
 					&& InputComplete(DoorDriveTechnology, nameof(DoorDriveTechnology)) 
-					&& InputComplete(_consolidatedADAS, nameof(_consolidatedADAS))
-					&& _consolidatedADAS.IsInputDataComplete(jobType)
-					&& InputComplete(_consolidatedComponents, nameof(_consolidatedComponents))
-					&& _consolidatedComponents.IsInputDataComplete(jobType);
+					&& InputComplete(_consolidatedADAS, nameof(_consolidatedADAS)) && _consolidatedADAS.IsInputDataComplete(jobType)
+					&& InputComplete(_consolidatedComponents, nameof(_consolidatedComponents)) && _consolidatedComponents.IsInputDataComplete(jobType);
 		}
 
+
 		public override string GetInvalidEntry()
 		{
 			if (InvalidEntry != null)
@@ -606,6 +756,21 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 
 			return null;
 		}
+
+		protected override IList<string> GetInvalidEntriesTemplate(VectoSimulationJobType jobType)
+		{
+			IEnumerable<string> concatenatedEntries = new List<string>();
+			if (_consolidatedComponents != null) {
+				concatenatedEntries = concatenatedEntries.Concat(_consolidatedComponents.GetInvalidEntries(jobType));
+			}
+
+			if (_consolidatedADAS != null) {
+				concatenatedEntries = concatenatedEntries.Concat(_consolidatedADAS.GetInvalidEntries(jobType));
+			}
+
+
+			return _invalidEntries.Concat(concatenatedEntries).ToList();
+		}
 	}
 
 	// ---------------------------------------------------------------------------------------
@@ -640,7 +805,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 			return default;
 		}
 
-		public override bool IsInputDataComplete(VectoSimulationJobType jobType)
+		protected override bool IsInputDataCompleteTemplate(VectoSimulationJobType jobType, bool fullCheck)
 		{
 			return InputComplete(ATEcoRollReleaseLockupClutch, nameof(ATEcoRollReleaseLockupClutch));
 		}
@@ -649,6 +814,11 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 		{
 			return InvalidEntry;
 		}
+
+		protected override IList<string> GetInvalidEntriesTemplate(VectoSimulationJobType jobType)
+		{
+			return _invalidEntries;
+		}
 	}
 
 	// ---------------------------------------------------------------------------------------
@@ -723,11 +893,15 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 		}
 
 
-		public override bool IsInputDataComplete(VectoSimulationJobType jobType)
+		protected override bool IsInputDataCompleteTemplate(VectoSimulationJobType jobType, bool fullCheck)
 		{
 			GetAirdragInputData();
 			GetBusAuxiliaries();
-
+			if (fullCheck) {
+				//use Binary AND to execute all Statements and gather information about missing parameters.
+				return InputComplete(_consolidateBusAuxiliariesData, nameof(_consolidateBusAuxiliariesData))
+						& _consolidateBusAuxiliariesData.IsInputDataCompleteFullCheck(jobType);
+			}
 			return InputComplete(_consolidateBusAuxiliariesData, nameof(_consolidateBusAuxiliariesData)) 
 					&& _consolidateBusAuxiliariesData.IsInputDataComplete(jobType);
 		}
@@ -745,6 +919,11 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 
 			return InvalidEntry;
 		}
+
+		protected override IList<string> GetInvalidEntriesTemplate(VectoSimulationJobType jobType)
+		{
+			return _invalidEntries.Concat(_consolidateBusAuxiliariesData.GetInvalidEntries(jobType)).ToList();
+		}
 	}
 
 	// ---------------------------------------------------------------------------------------
@@ -798,7 +977,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 			}
 		}
 
-		public override bool IsInputDataComplete(VectoSimulationJobType jobType)
+		protected override bool IsInputDataCompleteTemplate(VectoSimulationJobType jobType, bool fullCheck)
 		{
 			return InputComplete(AirdragEntry, nameof(AirdragEntry));
 		}
@@ -807,6 +986,11 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 		{
 			return InvalidEntry;
 		}
+
+		protected override IList<string> GetInvalidEntriesTemplate(VectoSimulationJobType jobType)
+		{
+			return _invalidEntries;
+		}
 	}
 
 	// ---------------------------------------------------------------------------------------
@@ -870,11 +1054,18 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 		}
 		
 
-		public override bool IsInputDataComplete(VectoSimulationJobType jobType)
+		protected override bool IsInputDataCompleteTemplate(VectoSimulationJobType jobType, bool fullCheck)
 		{
 			GetElectricConsumers();
 			GetHVACAux();
+			if (fullCheck) {
+				//use Binary AND to execute all Statements and gather information about missing parameters.
+				return InputComplete(_consolidateElectricConsumerData, nameof(_consolidateElectricConsumerData))
+					& _consolidateElectricConsumerData.IsInputDataCompleteFullCheck(jobType)
+					& InputComplete(_consolidatedHVACBusAuxiliariesData, nameof(_consolidatedHVACBusAuxiliariesData))
+					& _consolidatedHVACBusAuxiliariesData.IsInputDataCompleteFullCheck(jobType);
 
+			}
 			return InputComplete(_consolidateElectricConsumerData, nameof(_consolidateElectricConsumerData)) 
 					&& _consolidateElectricConsumerData.IsInputDataComplete(jobType)
 					&& InputComplete(_consolidatedHVACBusAuxiliariesData, nameof(_consolidatedHVACBusAuxiliariesData))
@@ -894,6 +1085,12 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 			return null;
 		}
 
+		protected override IList<string> GetInvalidEntriesTemplate(VectoSimulationJobType jobType)
+		{
+			return _invalidEntries.Concat(_consolidateElectricConsumerData.GetInvalidEntries(jobType))
+				.Concat(_consolidatedHVACBusAuxiliariesData.GetInvalidEntries(jobType)).ToList();
+		}
+
 
 		private XmlNode GetBusAuxXMLSource()
 		{
@@ -944,8 +1141,15 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 			return default;
 		}
 
-		public override bool IsInputDataComplete(VectoSimulationJobType jobType)
+		protected override bool IsInputDataCompleteTemplate(VectoSimulationJobType jobType, bool fullCheck)
 		{
+			if (fullCheck) {
+				return InputComplete(InteriorLightsLED, nameof(InteriorLightsLED))
+						& InputComplete(DayrunninglightsLED, nameof(DayrunninglightsLED))
+						& InputComplete(PositionlightsLED, nameof(PositionlightsLED))
+						& InputComplete(HeadlightsLED, nameof(HeadlightsLED))
+						& InputComplete(BrakelightsLED, nameof(BrakelightsLED));
+			}
 			return InputComplete(InteriorLightsLED, nameof(InteriorLightsLED))
 				&& InputComplete(DayrunninglightsLED, nameof(DayrunninglightsLED))
 				&& InputComplete(PositionlightsLED, nameof(PositionlightsLED))
@@ -957,6 +1161,11 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 		{
 			return InvalidEntry;
 		}
+
+		protected override IList<string> GetInvalidEntriesTemplate(VectoSimulationJobType jobType)
+		{
+			return _invalidEntries;
+		}
 	}
 
 	// ---------------------------------------------------------------------------------------
@@ -1039,8 +1248,19 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 			}
 		}
 		
-		public override bool IsInputDataComplete(VectoSimulationJobType jobType)
-		{
+		protected override bool IsInputDataCompleteTemplate(VectoSimulationJobType jobType, bool fullCheck)
+		{
+			if (fullCheck) {
+				return MethodComplete(IsCorrectSystemConfiguration(), nameof(IsCorrectSystemConfiguration))
+						& InputComplete(HeatPumpTypeDriverCompartment, nameof(HeatPumpTypeDriverCompartment))
+						& InputComplete(HeatPumpModeDriverCompartment, nameof(HeatPumpModeDriverCompartment))
+						& InputComplete(HeatPumpPassengerCompartments, nameof(HeatPumpPassengerCompartments))
+						& InputComplete(AuxHeaterPower, nameof(AuxHeaterPower))
+						& InputComplete(DoubleGlazing, nameof(DoubleGlazing))
+						& InputComplete(AdjustableAuxiliaryHeater, nameof(AdjustableAuxiliaryHeater))
+						& InputComplete(SeparateAirDistributionDucts, nameof(SeparateAirDistributionDucts))
+						& MethodComplete(RequiredParametersForJobType(jobType), nameof(RequiredParametersForJobType));
+			}
 			return MethodComplete(IsCorrectSystemConfiguration(), nameof(IsCorrectSystemConfiguration))
 					&& InputComplete(HeatPumpTypeDriverCompartment, nameof(HeatPumpTypeDriverCompartment))
 					&& InputComplete(HeatPumpModeDriverCompartment, nameof(HeatPumpModeDriverCompartment))
@@ -1056,6 +1276,11 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 		{
 			return InvalidEntry;
 		}
+
+		protected override IList<string> GetInvalidEntriesTemplate(VectoSimulationJobType jobType)
+		{
+			return _invalidEntries;
+		}
 	}
 
 	#endregion
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLJobDataReader.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLJobDataReader.cs
index 09f1efd57d1486751c3ec2e4fdd8ee719b775941..52d4631c79bfe8d3da587b5e276c413af565dc2a 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLJobDataReader.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLJobDataReader.cs
@@ -171,4 +171,16 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 		}
 	}
 
+	// ---------------------------------------------------------------------------------------
+
+	public class XMLJobDataMultistageExemptedPrimaryVehicleReaderV01 : XMLJobDataMultistagePrimaryVehicleReaderV01
+	{
+		public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_MULTISTAGE_BUS_VEHICLE_NAMESPACE_VO1;
+
+		public new const string XSD_TYPE = "VehicleExemptedPrimaryBusType";
+
+		public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE);
+
+		public XMLJobDataMultistageExemptedPrimaryVehicleReaderV01(IXMLPrimaryVehicleBusJobInputData busJobData, XmlNode jobNode) : base(busJobData, jobNode) { }
+	}
 }
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringVehicleDataProvider.cs
index fd6f9ccda3372030103c0c3dfae67b103e2c827a..30f573e8ee539531a322e797643f652666c36fe6 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringVehicleDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringVehicleDataProvider.cs
@@ -90,8 +90,6 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering.DataProvider
 
 		public virtual string VIN => GetString(XMLNames.Vehicle_VIN);
 
-		public string LegislativeCategory => null;
-
 		public virtual LegislativeClass? LegislativeClass => GetString(XMLNames.Vehicle_LegislativeClass).ParseEnum<LegislativeClass>();
 
 		public virtual VehicleCategory VehicleCategory =>
@@ -132,6 +130,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering.DataProvider
 
 		public Watt MaxNetPower2 => null;
 
+		public string ExemptedTechnology { get; }
+
 		public virtual RegistrationClass? RegisteredClass => RegistrationClass.unknown;
 		public virtual int? NumberPassengerSeatsUpperDeck => 0;
 		public virtual int? NumberPassengerSeatsLowerDeck => 0;
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterCompletedBusSpecific.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterCompletedBusSpecific.cs
index 3ed44c304530824451009012db15f6572993d0ab..99b0390305e5d043bfbbed82d37f67cb18e2bb83 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterCompletedBusSpecific.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterCompletedBusSpecific.cs
@@ -402,21 +402,24 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 		#endregion
 
 
-		protected double GetNumberOfPassengers(Mission mission, Meter length, Meter width, double registeredPassengers,
+		protected double GetNumberOfPassengers(Mission mission, Meter length, Meter width, double registeredPassengerSeats,
 			double registeredPassengersStanding, LoadingType loading)
 		{
 			var busFloorArea = DeclarationData.BusAuxiliaries.CalculateBusFloorSurfaceArea(length, width);
 			var passengerCountRef = busFloorArea * (loading == LoadingType.LowLoading
 				? mission.BusParameter.PassengerDensityLow
 				: mission.BusParameter.PassengerDensityRef);
-			//var passengerCountDecl = completedVehicle.NuberOfPassengersUpperDeck + completedVehicle.NumberOfPassengersLowerDeck;
+			
 			if (loading != LoadingType.ReferenceLoad && loading != LoadingType.LowLoading) {
 				throw new VectoException("Unhandled loading type: {0}", loading);
 			}
 
+			var passengerCount = registeredPassengerSeats +
+								(mission.MissionType == MissionType.Coach ? 0 : registeredPassengersStanding);
+
 			return loading == LoadingType.ReferenceLoad
-				? VectoMath.Min(passengerCountRef, registeredPassengers)
-				: VectoMath.Min(passengerCountRef * mission.MissionType.GetLowLoadFactorBus(), registeredPassengers);
+				? VectoMath.Min(passengerCountRef, passengerCount)
+				: VectoMath.Min(passengerCountRef * mission.MissionType.GetLowLoadFactorBus(), passengerCount);
 		}
 		
 		
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs
index a41418f00e47f42e0c0534849eba307e1aa8addf..44814cf8d562daa3135bdf9cfea721f04e55e0f5 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs
@@ -34,11 +34,41 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 		public override VehicleData CreateVehicleData(IVehicleDeclarationInputData data, Segment segment, Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading, bool allowVocational)
 		{
 			var retVal = base.CreateVehicleData(data, segment, mission, loading, allowVocational);
+			if (data.ExemptedVehicle) {
+				return retVal;
+			}
 			retVal.CurbMass = mission.CurbMass;
 			retVal.GrossVehicleMass = 40000.SI<Kilogram>();
 			return retVal;
 		}
 
+		protected override VehicleData CreateExemptedVehicleData(IVehicleDeclarationInputData data)
+		{
+			var exempted = new VehicleData {
+				InputData = data,
+				SavedInDeclarationMode = data.SavedInDeclarationMode,
+				Manufacturer = data.Manufacturer,
+				ModelName = data.Model,
+				Date = data.Date,
+				//CertificationNumber = data.CertificationNumber,
+				DigestValueInput = data.DigestValue != null ? data.DigestValue.DigestValue : "",
+				VehicleCategory = data.VehicleCategory,
+				//CurbMass = data.CurbMassChassis,
+				GrossVehicleMass = data.GrossVehicleMassRating,
+				AirDensity = Physics.AirDensity,
+			};
+			exempted.VIN = data.VIN;
+			exempted.ManufacturerAddress = data.ManufacturerAddress;
+			exempted.LegislativeClass = data.LegislativeClass;
+			exempted.ZeroEmissionVehicle = data.ZeroEmissionVehicle;
+			exempted.HybridElectricHDV = data.HybridElectricHDV;
+			exempted.DualFuelVehicle = data.DualFuelVehicle;
+			exempted.MaxNetPower1 = data.MaxNetPower1;
+			exempted.MaxNetPower2 = data.MaxNetPower2;
+			exempted.AxleConfiguration = data.AxleConfiguration;
+			return exempted;
+		}
+
 		public override PTOData CreatePTOTransmissionData(IPTOTransmissionInputData pto)
 		{
 			return null;
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterSingleBus.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterSingleBus.cs
index 7a122f0bdc5475bb6d01fc085556d96b61c8183b..a2a8599a5b77448173b07e8f805809cfbad6cde8 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterSingleBus.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterSingleBus.cs
@@ -32,7 +32,12 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 			var passengerCountRef = busFloorArea * (loading.Key == LoadingType.LowLoading
 				? mission.BusParameter.PassengerDensityLow
 				: mission.BusParameter.PassengerDensityRef);
-			var passengerCountDecl = CompletedVehicle.NumberPassengerSeatsUpperDeck + CompletedVehicle.NumberPassengerSeatsLowerDeck;
+			var passengerCountDecl = CompletedVehicle.NumberPassengerSeatsUpperDeck +
+									CompletedVehicle.NumberPassengerSeatsLowerDeck
+									+ (mission.MissionType == MissionType.Coach
+										? 0
+										: CompletedVehicle.NumberPassengersStandingLowerDeck +
+										CompletedVehicle.NumberPassengersStandingUpperDeck);
 
 			//var refLoad = passengerCount * mission.MissionType.GetAveragePassengerMass();
 			if (loading.Key != LoadingType.ReferenceLoad && loading.Key != LoadingType.LowLoading) {
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs
index a25eea4656357de399c11091a8a642873ab886c0..4a5678830098b6b9a9e6060510ae5e9b42d49e24 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs
@@ -714,6 +714,10 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 
 			var bat = batteryInputData.ElectricStorageElements.Where(x => x.REESSPack.StorageType == REESSType.Battery).ToArray();
 
+			if (bat.Length == 0) {
+				return null;
+			}
+
 			var retVal = new BatterySystemData();
 			foreach (var entry in bat) {
                 var b = entry.REESSPack as IBatteryPackDeclarationInputData;
diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeCompletedMultistageBusVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeCompletedMultistageBusVectoRunDataFactory.cs
index 881941b8bb849a0b24225895545b854b75219e15..05d3dd421eee4e79fc4dee81c66d70bbdbcbb77c 100644
--- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeCompletedMultistageBusVectoRunDataFactory.cs
+++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeCompletedMultistageBusVectoRunDataFactory.cs
@@ -68,19 +68,45 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
 
 		protected virtual void InitializeReport()
 		{
-			var powertrainConfig = _segmentCompletedBus.Missions.Select(
-					mission => CreateVectoRunDataSpecific(
-						mission, mission.Loadings.First(), 0))
-				.FirstOrDefault(x => x != null);
+			var powertrainConfig = CompletedVehicle.ExemptedVehicle || PrimaryVehicle.ExemptedVehicle
+				? GetExemptedVectoRunData()
+				:_segmentCompletedBus.Missions.Select(
+						mission => CreateVectoRunDataSpecific(
+							mission, mission.Loadings.First(), 0))
+					.FirstOrDefault(x => x != null);
 
 			Report.InitializeReport(powertrainConfig, new List<List<FuelData.Entry>>());
 		}
 
+		private VectoRunData GetExemptedVectoRunData()
+		{
+			return new VectoRunData() {
+				Exempted = true,
+				VehicleData = new VehicleData() {
+					ModelName = CompletedVehicle.Model,
+					Manufacturer = CompletedVehicle.Manufacturer,
+					ManufacturerAddress = CompletedVehicle.ManufacturerAddress,
+					VIN =  CompletedVehicle.VIN,
+					LegislativeClass = CompletedVehicle.LegislativeClass,
+					RegisteredClass = CompletedVehicle.RegisteredClass,
+					VehicleCode = CompletedVehicle.VehicleCode,
+					CurbMass = CompletedVehicle.CurbMassChassis,
+					GrossVehicleMass = CompletedVehicle.GrossVehicleMassRating,
+					ZeroEmissionVehicle = PrimaryVehicle.ZeroEmissionVehicle,
+					MaxNetPower1 = PrimaryVehicle.MaxNetPower1,
+					InputData = CompletedVehicle
+				},
+				Report = Report,
+				Mission = new Mission() {
+					MissionType = MissionType.ExemptedMission
+				}
+			};
+		}
 
 
 		protected virtual void Initialize()
 		{
-			if (CompletedVehicle.ExemptedVehicle || PrimaryVehicle.ExemptedVehicle)
+			if (PrimaryVehicle.ExemptedVehicle || CompletedVehicle.ExemptedVehicle)
 			{
 				return;
 			}
@@ -121,9 +147,13 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
 		
 		protected virtual IEnumerable<VectoRunData> GetNextRun()
 		{
+			if (InputDataProvider.JobInputData.PrimaryVehicle.Vehicle.ExemptedVehicle) {
+				return new[] { GetExemptedVectoRunData() };
+			}
 			return VectoRunDataHeavyBusCompleted();
 		}
 
+
 		private IEnumerable<VectoRunData> VectoRunDataHeavyBusCompleted()
 		{
 			var engineModes = InputDataProvider.JobInputData.PrimaryVehicle.Vehicle.Components.EngineInputData.EngineModes;
diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeHeavyLorryVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeHeavyLorryVectoRunDataFactory.cs
index b047c5a1eafac5c2f0df95ae8b727cfbbe25ab01..37545d3f370f03cb8a7a9b1c7f7facd584bb0ff1 100644
--- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeHeavyLorryVectoRunDataFactory.cs
+++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeHeavyLorryVectoRunDataFactory.cs
@@ -191,6 +191,6 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
 			return simulationRunData;
 		}
 
-
+		
 	}
 }
diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeMultistageBusVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeMultistageBusVectoRunDataFactory.cs
index 708b3efa8969ae980b3a742b842b5bcba4ee9cea..c2c3e20b12a7ccff214dbb7455b067ca4042f1d7 100644
--- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeMultistageBusVectoRunDataFactory.cs
+++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeMultistageBusVectoRunDataFactory.cs
@@ -26,15 +26,17 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
 		{
 			return new VectoRunData
 			{
-				Exempted = true,
+				Exempted = InputDataProvider.MultistageJobInputData.JobInputData.PrimaryVehicle.Vehicle.ExemptedVehicle,
+				MultistageRun = true,
+				ExecutionMode = ExecutionMode.Declaration,
 				Report = Report,
 				Mission = new Mission { MissionType = MissionType.ExemptedMission },
-				VehicleData = CreateExemptedVehicleData(InputDataProvider.MultistageJobInputData.JobInputData.PrimaryVehicle.Vehicle),
+				VehicleData = CreateVehicleData(InputDataProvider.MultistageJobInputData.JobInputData.PrimaryVehicle.Vehicle),
 				MultistageVIFInputData = InputDataProvider
 			};
 		}
 		
-		private VehicleData CreateExemptedVehicleData(IVehicleDeclarationInputData data)
+		private VehicleData CreateVehicleData(IVehicleDeclarationInputData data)
 		{
 			var exempted = SetCommonVehicleData(data);
 			exempted.VIN = data.VIN;
@@ -42,7 +44,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
 			exempted.LegislativeClass = data.LegislativeClass;
 			exempted.ZeroEmissionVehicle = data.ZeroEmissionVehicle;
 			exempted.HybridElectricHDV = data.HybridElectricHDV;
-			exempted.DualFuelVehicle = true;
+			exempted.DualFuelVehicle = data.DualFuelVehicle;// true;
 			exempted.MaxNetPower1 = data.MaxNetPower1;
 			exempted.MaxNetPower2 = data.MaxNetPower2;
 
diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModePrimaryBusVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModePrimaryBusVectoRunDataFactory.cs
index 4094685bc6e3f685ba3687c17aa189234a7124b7..5b54fb576f9f21e3bf02535fa314db9787acf377 100644
--- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModePrimaryBusVectoRunDataFactory.cs
+++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModePrimaryBusVectoRunDataFactory.cs
@@ -29,10 +29,19 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
 		protected override IEnumerable<VectoRunData> GetNextRun()
 		{
 			if (InputDataProvider.JobInputData.Vehicle.VehicleCategory == VehicleCategory.HeavyBusPrimaryVehicle) {
-				return VectoRunDataHeavyBusPrimary();
+				if (InputDataProvider.JobInputData.Vehicle.ExemptedVehicle) {
+					yield return CreateVectoRunData(InputDataProvider.JobInputData.Vehicle, 0, null,
+						new KeyValuePair<LoadingType, Tuple<Kilogram, double?>>());
+				} else {
+					foreach (var vectoRunData in VectoRunDataHeavyBusPrimary()) {
+						yield return vectoRunData;
+					}
+				}
 			}
 
-			return new List<VectoRunData>();
+			foreach (var entry in new List<VectoRunData>()) {
+				yield return entry;
+			}
 		}
 
 		protected override Segment GetSegment(IVehicleDeclarationInputData vehicle)
@@ -77,6 +86,19 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
 		protected override VectoRunData CreateVectoRunData(
 			IVehicleDeclarationInputData vehicle, int modeIdx, Mission mission, KeyValuePair<LoadingType, Tuple<Kilogram, double?>> loading)
 		{
+			if (InputDataProvider.JobInputData.Vehicle.ExemptedVehicle) {
+				return new VectoRunData() {
+					Exempted = true,
+					Report = Report,
+					Mission = new Mission() { MissionType = MissionType.ExemptedMission },
+					VehicleData = DataAdapter.CreateVehicleData(InputDataProvider.JobInputData.Vehicle, new Segment(),
+						null,
+						new KeyValuePair<LoadingType, Tuple<Kilogram, double?>>(LoadingType.ReferenceLoad,
+							Tuple.Create<Kilogram, double?>(0.SI<Kilogram>(), null)), _allowVocational),
+					InputDataHash = InputDataProvider.XMLHash
+				};
+			}
+
 			var engine = vehicle.Components.EngineInputData;
 			var engineModes = engine.EngineModes;
 			var engineMode = engineModes[modeIdx];
diff --git a/VectoCore/VectoCore/JsonKeys.Designer.cs b/VectoCore/VectoCore/JsonKeys.Designer.cs
index e4e7ed2fcc743ec532e0ae81f777a76a8eb76df8..635a01d099148c151fe468f853a4a73ab3068b0a 100644
--- a/VectoCore/VectoCore/JsonKeys.Designer.cs
+++ b/VectoCore/VectoCore/JsonKeys.Designer.cs
@@ -60,6 +60,15 @@ namespace TUGraz.VectoCore {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to Completed.
+        /// </summary>
+        internal static string Completed {
+            get {
+                return ResourceManager.GetString("Completed", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to VACC.
         /// </summary>
@@ -483,6 +492,15 @@ namespace TUGraz.VectoCore {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to InterimStage.
+        /// </summary>
+        internal static string InterimStage {
+            get {
+                return ResourceManager.GetString("InterimStage", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to Cycles.
         /// </summary>
@@ -528,6 +546,15 @@ namespace TUGraz.VectoCore {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to PrimaryVehicle.
+        /// </summary>
+        internal static string PrimaryVehicle {
+            get {
+                return ResourceManager.GetString("PrimaryVehicle", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to SavedInDeclMode.
         /// </summary>
diff --git a/VectoCore/VectoCore/JsonKeys.resx b/VectoCore/VectoCore/JsonKeys.resx
index a006cc08f083b9be4d8ec1c501841bc4b04ddb36..1a022153c6a6bf665f169cca44aec55a52a2a441 100644
--- a/VectoCore/VectoCore/JsonKeys.resx
+++ b/VectoCore/VectoCore/JsonKeys.resx
@@ -378,4 +378,13 @@
 	<data name="HEV_Vehicle_MaxDrivetrainPower" xml:space="preserve">
 		<value>MaxDrivetrainPower</value>
 	</data>
+  <data name="PrimaryVehicle" xml:space="preserve">
+    <value>PrimaryVehicle</value>
+  </data>
+  <data name="InterimStage" xml:space="preserve">
+    <value>InterimStage</value>
+  </data>
+  <data name="Completed" xml:space="preserve">
+    <value>Completed</value>
+  </data>
 </root>
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Models/Declaration/CompletedBusSegments.cs b/VectoCore/VectoCore/Models/Declaration/CompletedBusSegments.cs
index bbd03585ca561155665a11754a8a22b321294f5a..bb15f5da9ea6ea54ff16d19fa22a02512d110a56 100644
--- a/VectoCore/VectoCore/Models/Declaration/CompletedBusSegments.cs
+++ b/VectoCore/VectoCore/Models/Declaration/CompletedBusSegments.cs
@@ -24,23 +24,22 @@ namespace TUGraz.VectoCore.Models.Declaration
 
 		protected override string ErrorMessage =>
 			"ERROR: Could not find the declaration segment for vehicle. numberOfAxles: {0}, vehicleCode: {1}, registrationClass: {2}, " +
-			"passengersLowerDeck: {3}, bodyHeight: {4} , lowEntry: {5}";
+			"passengerSeatsLowerDeck: {3}, bodyHeight: {4} , lowEntry: {5}";
 
 		protected override void ParseData(DataTable table)
 		{
 			_segmentTable = table.Copy();
 		}
 
-		public override Segment Lookup(int numberOfAxles, VehicleCode? vehicleCode, RegistrationClass? registrationClass, int? passengersLowerDeck, Meter bodyHeight, bool? lowEntry)
+		public override Segment Lookup(int numberOfAxles, VehicleCode? vehicleCode, RegistrationClass? registrationClass, int? passengerSeatsLowerDeck, Meter bodyHeight, bool? lowEntry)
 		{
-			return LookupCompletedBusVehicle(numberOfAxles, vehicleCode, registrationClass, passengersLowerDeck, bodyHeight, lowEntry);
+			return LookupCompletedBusVehicle(numberOfAxles, vehicleCode, registrationClass, passengerSeatsLowerDeck, bodyHeight, lowEntry);
 		}
 		
-
 		#endregion
 
 
-		private Segment LookupCompletedBusVehicle(int numberOfAxles, VehicleCode? vehicleCode, RegistrationClass? registrationClass, int? passengersLowerDeck, Meter bodyHeight, bool? lowEntry)
+		private Segment LookupCompletedBusVehicle(int numberOfAxles, VehicleCode? vehicleCode, RegistrationClass? registrationClass, int? passengerSeatsLowerDeck, Meter bodyHeight, bool? lowEntry)
 		{
 			var rows = _segmentTable.AsEnumerable().Where(
 				r => {
@@ -60,7 +59,7 @@ namespace TUGraz.VectoCore.Models.Declaration
 					rows = rows.Where(
 						r => {
 							var limits = r.Field<string>("passengerslowerdeck").Split('-');
-							return ((int)passengersLowerDeck).IsBetween(limits[0].ToInt(), limits[1].ToInt());
+							return ((int)passengerSeatsLowerDeck).IsBetween(limits[0].ToInt(), limits[1].ToInt());
 						}).ToList();
 				} else if (rows.Any(r => r.Field<string>("bodyheight") != "-")) {
 					rows = rows.Where(
diff --git a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs
index 615ef139d832a9a2363662272335e452cee64b69..d0a44a5fd412ceca9acb5a6de68f09f7b83d8053 100644
--- a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs
+++ b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs
@@ -260,7 +260,7 @@ namespace TUGraz.VectoCore.Models.Declaration
 			}
 			 
 
-			public static Meter CalculateInternalLength(Meter vehicleLength, VehicleCode? vehicleCode, double numPassLowFloor)
+			public static Meter CalculateInternalLength(Meter vehicleLength, VehicleCode? vehicleCode, double numPassSeatsLowerDeck)
 				{
 				if (vehicleCode.GetFloorType()  == FloorType.LowFloor) {
 					return vehicleCode.IsDoubleDeckerBus() ? 2 * vehicleLength : vehicleLength;
@@ -268,7 +268,7 @@ namespace TUGraz.VectoCore.Models.Declaration
 
 				if (vehicleCode.GetFloorType() == FloorType.HighFloor) {
 					if (vehicleCode.IsDoubleDeckerBus()) {
-						return numPassLowFloor > 6 ? 1.5 * vehicleLength : vehicleLength + 2.4.SI<Meter>();
+						return numPassSeatsLowerDeck > 6 ? 1.5 * vehicleLength : vehicleLength + 2.4.SI<Meter>();
 					}
 
 					return vehicleLength;
diff --git a/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs b/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs
index 97196d0176432e95f7fa761bf06de24b2fce5991..bb57cfc4460acb55eeca049457e81f636147ab82 100644
--- a/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs
@@ -134,12 +134,14 @@ namespace TUGraz.VectoCore.Models.Simulation.Data
 		public SuperCapData SuperCapData { get; internal set; }
 
 
-		public SimulationType SimulationType { get; set; }
+		public SimulationType SimulationType { get; internal set; }
 
-		public VTPData VTPData { get; set; }
+		public VTPData VTPData { get; internal set; }
 
-		public ShiftStrategyParameters GearshiftParameters { get; set; }
-		public bool Exempted { get; set; }
+		public ShiftStrategyParameters GearshiftParameters { get; internal set; }
+		public bool Exempted { get; internal set; }
+
+		public bool MultistageRun { get; internal set; }
 
 		public IDrivingCycleData PTOCycleWhileDrive { get; internal set; }
 
diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/ExemptedRun.cs b/VectoCore/VectoCore/Models/Simulation/Impl/ExemptedRun.cs
index 01865075001a5d3da5991012565c5bfb70730be6..611fcfedbeaec3b22e34c04b1bd94010d53aaede 100644
--- a/VectoCore/VectoCore/Models/Simulation/Impl/ExemptedRun.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Impl/ExemptedRun.cs
@@ -63,6 +63,9 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl {
 
 		private void CheckValidInput()
 		{
+			if (Container.RunData.MultistageRun) {
+				return;
+			}
 			var vehicleData = Container.RunData.VehicleData;
 			if (vehicleData.ZeroEmissionVehicle && vehicleData.DualFuelVehicle) {
 				throw new VectoException("Invalid input: ZE-HDV and DualFuelVehicle are mutually exclusive!");
diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs
index 3d7b1243e3bf60a1ce272132e21622b14835c4d9..afc3a8bdc44faeb5566c095bbd82836ff309733c 100644
--- a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs
@@ -212,7 +212,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 				var current = i++;
 				var d = data;
 				data.JobRunId = current;
-				yield return data.Exempted ? GetExemptedRun(data) : GetNonExemptedRun(data, current, d, ref warning1Hz);
+				yield return data.Exempted || data.MultistageRun ? GetExemptedRun(data) : GetNonExemptedRun(data, current, d, ref warning1Hz);
 			}
 		}
 
diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/VectoRun.cs b/VectoCore/VectoCore/Models/Simulation/Impl/VectoRun.cs
index 3770538e26a5de7b3ef1b56987666633cf563ad3..fd1fb036b33b8f77d530c1a0b7d763d525879dcf 100644
--- a/VectoCore/VectoCore/Models/Simulation/Impl/VectoRun.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Impl/VectoRun.cs
@@ -124,7 +124,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 						Container.AbsTime = AbsTime;
 					}
 				} while (response is ResponseSuccess);
-				if (!GetContainer().RunData.Exempted) {
+				if (!(GetContainer().RunData.Exempted || GetContainer().RunData.MultistageRun)) {
 					//foreach (var fuel in GetContainer().RunData.EngineData.Fuels) {
 						// calculate vehicleline correction here in local thread context because writing sum-data and report afterwards is synchronized
 						//var cf = GetContainer().ModalData.VehicleLineCorrectionFactor(fuel.FuelData);
@@ -171,7 +171,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 				throw ex;
 			}
 
-			Container.RunStatus = Container.RunData.Exempted
+			Container.RunStatus = Container.RunData.Exempted || Container.RunData.MultistageRun
 				? Status.Success
 				: CyclePort.Progress < 1
 					? (response is ResponseBatteryEmpty ? Status.REESSEmpty : Status.Aborted)
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs b/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs
index 84adc817723d1b52f4680ea63287f094a8527279..792885f060097b46e1840b6f0255fb3e3a51b723 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs
@@ -57,6 +57,10 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 			TestPowertrain.HybridController.Initialize(Controller.PreviousState.OutTorque, Controller.PreviousState.OutAngularVelocity);
 			TestPowertrain.Clutch.Initialize(DataBus.ClutchInfo.ClutchLosses);
 			TestPowertrain.Battery?.Initialize(DataBus.BatteryInfo.StateOfCharge);
+			if (TestPowertrain.Battery != null) {
+				TestPowertrain.Battery.PreviousState.PulseDuration =
+					(DataBus.BatteryInfo as Battery).PreviousState.PulseDuration;
+			}
 			if (TestPowertrain.BatterySystem != null) {
 				var batSystem = DataBus.BatteryInfo as BatterySystem;
 				foreach (var bsKey in batSystem.Batteries.Keys) {
@@ -65,6 +69,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 							.Initialize(batSystem.Batteries[bsKey].Batteries[i].StateOfCharge);
 					}
 				}
+				TestPowertrain.BatterySystem.PreviousState.PulseDuration =
+					(DataBus.BatteryInfo as BatterySystem).PreviousState.PulseDuration;
 			}
 			TestPowertrain.SuperCap?.Initialize(DataBus.BatteryInfo.StateOfCharge);
 
@@ -214,8 +220,22 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 			TestPowertrain.HybridController.ApplyStrategySettings(cfg);
 			TestPowertrain.HybridController.Initialize(Controller.PreviousState.OutTorque, Controller.PreviousState.OutAngularVelocity);
 			//	TestPowertrain.Clutch.Initialize(DataBus.ClutchInfo.ClutchLosses);
-			
 			TestPowertrain.Battery?.Initialize(DataBus.BatteryInfo.StateOfCharge);
+			if (TestPowertrain.Battery != null) {
+				TestPowertrain.Battery.PreviousState.PulseDuration =
+					(DataBus.BatteryInfo as Battery).PreviousState.PulseDuration;
+			}
+			if (TestPowertrain.BatterySystem != null) {
+				var batSystem = DataBus.BatteryInfo as BatterySystem;
+				foreach (var bsKey in batSystem.Batteries.Keys) {
+					for (var i = 0; i < batSystem.Batteries[bsKey].Batteries.Count; i++) {
+						TestPowertrain.BatterySystem.Batteries[bsKey].Batteries[i]
+							.Initialize(batSystem.Batteries[bsKey].Batteries[i].StateOfCharge);
+					}
+				}
+				TestPowertrain.BatterySystem.PreviousState.PulseDuration =
+					(DataBus.BatteryInfo as BatterySystem).PreviousState.PulseDuration;
+			}
 			TestPowertrain.SuperCap?.Initialize(DataBus.BatteryInfo.StateOfCharge);
 
 			TestPowertrain.Brakes.BrakePower = DataBus.Brakes.BrakePower;
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/IXMLCustomerReport.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/IXMLCustomerReport.cs
new file mode 100644
index 0000000000000000000000000000000000000000..dc7e48050a1b6f7231f33dc1115e4db6f7f820ef
--- /dev/null
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/IXMLCustomerReport.cs
@@ -0,0 +1,15 @@
+ο»Ώusing System.Collections.Generic;
+using System.Xml.Linq;
+using TUGraz.VectoCore.Models.Declaration;
+using TUGraz.VectoCore.Models.Simulation.Data;
+
+namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile
+{
+	public interface IXMLCustomerReport
+	{
+		void Initialize(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes);
+		XDocument Report { get; }
+		void WriteResult(XMLDeclarationReport.ResultEntry resultValue);
+		void GenerateReport(XElement resultSignature);
+	}
+}
\ No newline at end of file
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLCustomerReport.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/XMLCustomerReport.cs
similarity index 95%
rename from VectoCore/VectoCore/OutputData/XML/XMLCustomerReport.cs
rename to VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/XMLCustomerReport.cs
index 21fe09bb6f0dea0c6ef1de9f6e10038fcf8e3714..fe28253da5cb0804ecdf0e6e294f4e4247a3cad1 100644
--- a/VectoCore/VectoCore/OutputData/XML/XMLCustomerReport.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/XMLCustomerReport.cs
@@ -1,296 +1,319 @@
-ο»Ώ/*
-* This file is part of VECTO.
-*
-* Copyright Β© 2012-2019 European Union
-*
-* Developed by Graz University of Technology,
-*              Institute of Internal Combustion Engines and Thermodynamics,
-*              Institute of Technical Informatics
-*
-* VECTO is licensed under the EUPL, Version 1.1 or - as soon they will be approved
-* by the European Commission - subsequent versions of the EUPL (the "Licence");
-* You may not use VECTO except in compliance with the Licence.
-* You may obtain a copy of the Licence at:
-*
-* https://joinup.ec.europa.eu/community/eupl/og_page/eupl
-*
-* Unless required by applicable law or agreed to in writing, VECTO
-* distributed under the Licence is distributed on an "AS IS" basis,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the Licence for the specific language governing permissions and
-* limitations under the Licence.
-*
-* Authors:
-*   Stefan Hausberger, hausberger@ivt.tugraz.at, IVT, Graz University of Technology
-*   Christian Kreiner, christian.kreiner@tugraz.at, ITI, Graz University of Technology
-*   Michael Krisper, michael.krisper@tugraz.at, ITI, Graz University of Technology
-*   Raphael Luz, luz@ivt.tugraz.at, IVT, Graz University of Technology
-*   Markus Quaritsch, markus.quaritsch@tugraz.at, IVT, Graz University of Technology
-*   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.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.Utils;
-using TUGraz.VectoHashing;
-
-namespace TUGraz.VectoCore.OutputData.XML
-{
-	public class XMLCustomerReport
-	{
-		public const string CURRENT_SCHEMA_VERSION = "0.8";
-
-		protected readonly XElement VehiclePart;
-
-		protected XElement InputDataIntegrity;
-
-		protected readonly XElement Results;
-
-		protected readonly XNamespace rootNS = XNamespace.Get("urn:tugraz:ivt:VectoAPI:CustomerOutput");
-		protected readonly XNamespace tns = XNamespace.Get("urn:tugraz:ivt:VectoAPI:CustomerOutput:v" + CURRENT_SCHEMA_VERSION);
-		protected readonly XNamespace di = XNamespace.Get("http://www.w3.org/2000/09/xmldsig#");
-		protected readonly XNamespace xsi = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance");
-
-		protected bool _allSuccess = true;
-
-		protected KilogramPerMeter _weightedCo2 = 0.SI<KilogramPerMeter>();
-
-		protected Kilogram _weightedPayload = 0.SI<Kilogram>();
-		protected double _passengerCount = 0;
-
-
-		public XMLCustomerReport()
-		{
-			
-			VehiclePart = new XElement(tns + XMLNames.Component_Vehicle);
-			Results = new XElement(tns + XMLNames.Report_Results);
-		}
-
-		public virtual void Initialize(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes)
-		{
-			var exempted = modelData.Exempted;
-			VehiclePart.Add(
-				new XElement(tns + XMLNames.Component_Model, modelData.VehicleData.ModelName),
-				new XElement(tns + XMLNames.Component_Manufacturer, modelData.VehicleData.Manufacturer),
-				new XElement(tns + XMLNames.Component_ManufacturerAddress, modelData.VehicleData.ManufacturerAddress),
-				new XElement(tns + XMLNames.Vehicle_VIN, modelData.VehicleData.VIN),
-				new XElement(tns + XMLNames.Vehicle_LegislativeClass, modelData.VehicleData.LegislativeClass.ToXMLFormat()),
-				new XElement(
-					tns + XMLNames.Vehicle_GrossVehicleMass,
-					XMLHelper.ValueAsUnit(modelData.VehicleData.GrossVehicleMass, XMLNames.Unit_t, 1)),
-				new XElement(
-					tns + XMLNames.Vehicle_CurbMassChassis, XMLHelper.ValueAsUnit(modelData.VehicleData.CurbMass, XMLNames.Unit_kg)),
-				new XElement(tns + XMLNames.Vehicle_ZeroEmissionVehicle, modelData.VehicleData.ZeroEmissionVehicle),
-				new XElement(tns + XMLNames.Vehicle_HybridElectricHDV, modelData.VehicleData.HybridElectricHDV),
-				new XElement(tns + XMLNames.Vehicle_DualFuelVehicle, modelData.VehicleData.DualFuelVehicle)
-			);
-
-			if (exempted) {
-				VehiclePart.Add(new XAttribute(xsi + "type", "ExemptedVehicleType"), 
-					ExemptedData(modelData));
-				Results.Add(new XElement(tns + XMLNames.Report_ExemptedVehicle));
-			} else {
-				VehiclePart.Add(
-					new XAttribute(xsi + "type", "VehicleType"),
-					new XElement(tns + XMLNames.Vehicle_AxleConfiguration, modelData.VehicleData.AxleConfiguration.GetName()),
-					new XElement(tns + XMLNames.Report_Vehicle_VehicleGroup, modelData.VehicleData.VehicleClass.GetClassNumber()),
-					new XElement(tns + XMLNames.Vehicle_VocationalVehicle, modelData.VehicleData.VocationalVehicle),
-					new XElement(tns + XMLNames.Vehicle_SleeperCab, modelData.VehicleData.SleeperCab),
-					GetADAS(modelData.VehicleData.ADAS),
-					ComponentData(modelData, fuelModes)
-					);
-			}
-			InputDataIntegrity = new XElement(tns + XMLNames.Report_InputDataSignature,
-				modelData.InputDataHash == null ? XMLHelper.CreateDummySig(di) : new XElement(modelData.InputDataHash));
-		}
-
-		private object[] ExemptedData(VectoRunData modelData)
-		{
-			return new object[] {
-				modelData.VehicleData.HybridElectricHDV ? new XElement(tns + XMLNames.Vehicle_MaxNetPower1, XMLHelper.ValueAsUnit(modelData.VehicleData.MaxNetPower1, XMLNames.Unit_W)) : null,
-				modelData.VehicleData.HybridElectricHDV ? new XElement(tns + XMLNames.Vehicle_MaxNetPower2, XMLHelper.ValueAsUnit(modelData.VehicleData.MaxNetPower2, XMLNames.Unit_W)) : null
-			};
-		}
-
-		protected XElement GetADAS(VehicleData.ADASData adasData)
-		{
-			return new XElement(tns + XMLNames.Vehicle_ADAS,
-								new XElement(tns + XMLNames.Vehicle_ADAS_EngineStopStart, adasData.EngineStopStart),
-								new XElement(tns + XMLNames.Vehicle_ADAS_EcoRollWithoutEngineStop, adasData.EcoRoll.WithoutEngineStop()),
-								new XElement(tns + XMLNames.Vehicle_ADAS_EcoRollWithEngineStopStart, adasData.EcoRoll.WithEngineStop()),
-								new XElement(tns + XMLNames.Vehicle_ADAS_PCC, adasData.PredictiveCruiseControl != PredictiveCruiseControlType.None)
-			);
-		}
-
-		protected virtual XElement[] ComponentData(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes)
-		{
-			return new[] {
-				new XElement(
-					tns + XMLNames.Report_Vehicle_EngineRatedPower,
-					XMLHelper.ValueAsUnit(modelData.EngineData.RatedPowerDeclared, XMLNames.Unit_kW)),
-				new XElement(
-					tns + XMLNames.Report_Vehicle_EngineDisplacement,
-					XMLHelper.ValueAsUnit(modelData.EngineData.Displacement, XMLNames.Unit_ltr, 1)),
-				new XElement(
-					tns + XMLNames.Report_Vehicle_FuelTypes,
-					fuelModes.SelectMany(x => x.Select(f => f.FuelType.ToXMLFormat())).Distinct()
-							.Select(x => new XElement(tns + XMLNames.Engine_FuelType, x))
-				),
-				new XElement(
-					tns + XMLNames.Report_Vehicle_TransmissionCertificationMethod,
-					modelData.GearboxData.CertificationMethod.ToXMLFormat()),
-				new XElement(tns + XMLNames.Gearbox_TransmissionType, modelData.GearboxData.Type.ToXMLFormat()),
-				new XElement(tns + XMLNames.Report_GetGearbox_GearsCount, modelData.GearboxData.Gears.Count),
-				new XElement(tns + XMLNames.Report_Vehicle_Retarder, modelData.Retarder.Type.IsDedicatedComponent()),
-				new XElement(tns + XMLNames.Report_Vehicle_AxleRatio, modelData.AxleGearData.AxleGear.Ratio.ToXMLFormat(3)),
-				new XElement(
-					tns + XMLNames.Report_Vehicle_AverageRRC, modelData.VehicleData.AverageRollingResistanceTruck.ToXMLFormat(4)),
-
-				//new XElement(
-				//	tns + XMLNames.Report_Vehicle_AverageRRCLabel,
-				//	DeclarationData.Wheels.TyreClass.Lookup(modelData.VehicleData.AverageRollingResistanceTruck))
-			}.Concat(
-				modelData.VehicleData.AxleData.Where(x => x.AxleType != AxleType.Trailer).Select(
-					(x, idx) => new XElement(tns + "FuelEfficiencyLabelMotorVehicleTyre",
-					new XAttribute("axleNbr", idx+1),
-					x.FuelEfficiencyClass))).ToArray();
-
-		}
-
-		
-
-		public virtual void WriteResult(XMLDeclarationReport.ResultEntry resultEntry)
-		{
-			//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;
-				_passengerCount += (resultEntry.PassengerCount ?? 0) * resultEntry.WeightingFactor;
-			}
-			Results.Add(resultEntry.Status == VectoRun.Status.Success ? GetSuccessResult(resultEntry) : GetErrorResult(resultEntry));
-		}
-
-		private XElement GetErrorResult(XMLDeclarationReport.ResultEntry resultEntry)
-		{
-			var content = new object[] { };
-			switch (resultEntry.Status) {
-				case VectoRun.Status.Pending:
-				case VectoRun.Status.Running:
-					content = null; // should not happen!
-					break;
-				case VectoRun.Status.Canceled:
-				case VectoRun.Status.Aborted:
-					content =  new object[] {
-						new XElement(tns + "Error", resultEntry.Error)
-					};
-					break;
-				default:
-					throw new ArgumentOutOfRangeException();
-			}
-
-			return new XElement(tns + XMLNames.Report_Result_Result,
-				new XAttribute(XMLNames.Report_Result_Status_Attr, "error"),
-				new XAttribute(xsi + "type", "ResultErrorType"),
-				new XElement(tns + XMLNames.Report_Result_Mission, resultEntry.Mission.ToXMLFormat()),
-				content);
-		}
-
-		private XElement GetSuccessResult(XMLDeclarationReport.ResultEntry result)
-		{
-			return new XElement(
-				tns + XMLNames.Report_Result_Result,
-				new XAttribute(XMLNames.Report_Result_Status_Attr, "success"),
-				new XAttribute(xsi + "type", "ResultSuccessType"),
-				new XElement(tns + XMLNames.Report_Result_Mission, result.Mission.ToXMLFormat()),
-				new XElement(tns + XMLNames.Report_ResultEntry_TotalVehicleMass,
-					XMLHelper.ValueAsUnit(result.TotalVehicleMass, XMLNames.Unit_kg)),
-				new XElement(tns + XMLNames.Report_ResultEntry_Payload, XMLHelper.ValueAsUnit(result.Payload, XMLNames.Unit_kg)),
-				result.PassengerCount.HasValue && result.PassengerCount.Value > 0
-					? new XElement(tns + "PassengerCount", result.PassengerCount.Value.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),
-				new XElement(tns + XMLNames.Report_Results_AverageSpeed, XMLHelper.ValueAsUnit(result.AverageSpeed, XMLNames.Unit_kmph, 1)),
-				XMLDeclarationReport.GetResults(result, tns, false).Cast<object>().ToArray()
-			);
-		}
-
-		protected XElement GetApplicationInfo()
-		{
-			var versionNumber = VectoSimulationCore.VersionNumber;
-#if CERTIFICATION_RELEASE
-			// add nothing to version number
-#else
-			versionNumber += " !!NOT FOR CERTIFICATION!!";
-#endif
-			return new XElement(tns + XMLNames.Report_ApplicationInfo_ApplicationInformation,
-				new XElement(tns + XMLNames.Report_ApplicationInfo_SimulationToolVersion, versionNumber),
-				new XElement(tns + XMLNames.Report_ApplicationInfo_Date,
-					XmlConvert.ToString(DateTime.Now, XmlDateTimeSerializationMode.Utc)));
-		}
-
-		public virtual void GenerateReport(XElement resultSignature)
-		{
-			
-			var retVal = new XDocument();
-			var results = new XElement(Results);
-			results.AddFirst(new XElement(tns + XMLNames.Report_Result_Status, _allSuccess ? "success" : "error"));
-			var summary = _allSuccess && _weightedPayload > 0
-				? new XElement(tns + XMLNames.Report_Results_Summary,
-					new XElement(tns + XMLNames.Report_SpecificCO2Emissions,
-						new XAttribute(XMLNames.Report_Results_Unit_Attr, XMLNames.Unit_gCO2Pertkm),
-						(_weightedCo2 / _weightedPayload).ConvertToGrammPerTonKilometer().ToXMLFormat(1)
-					),
-					new XElement(tns + XMLNames.Report_AveragePayload,
-						new XAttribute(XMLNames.Report_Results_Unit_Attr, XMLNames.Unit_t),
-						_weightedPayload.ConvertToTon().ToXMLFormat(3)
-					),
-					_passengerCount > 0 ? new XElement(tns + "AveragePAssengerCount", _passengerCount.ToMinSignificantDigits(2)) : null
-				)
-				: null;
-			results.Add(summary);
-			var vehicle = new XElement(VehiclePart);
-			vehicle.Add(InputDataIntegrity);
-			retVal.Add(new XProcessingInstruction("xml-stylesheet", "href=\"https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/CSS/VectoReports.css\""));
-			retVal.Add(new XElement(rootNS + XMLNames.VectoCustomerReport,
-				//new XAttribute("schemaVersion", CURRENT_SCHEMA_VERSION),
-				new XAttribute(XNamespace.Xmlns + "xsi", xsi.NamespaceName),
-				new XAttribute("xmlns", tns),
-				new XAttribute(XNamespace.Xmlns + "tns", rootNS),
-				new XAttribute(XNamespace.Xmlns + "di", di),
-				new XAttribute(xsi + "schemaLocation",
-					$"{rootNS} {AbstractXMLWriter.SchemaLocationBaseUrl}DEV/VectoOutputCustomer.xsd"),
-				new XElement(rootNS + XMLNames.Report_DataWrap,
-					new XAttribute(xsi + "type", "VectoOutputDataType"),
-					vehicle,
-					new XElement(tns + XMLNames.Report_ResultData_Signature, resultSignature),
-					results,
-					GetApplicationInfo())
-				)
-				);
-			var stream = new MemoryStream();
-			var writer = new StreamWriter(stream);
-			writer.Write(retVal);
-			writer.Flush();
-			stream.Seek(0, SeekOrigin.Begin);
-			var h = VectoHash.Load(stream);
-			Report = h.AddHash();
-		}
-
-		public XDocument Report { get; protected set; }
-	}
-}
+ο»Ώ/*
+* This file is part of VECTO.
+*
+* Copyright Β© 2012-2019 European Union
+*
+* Developed by Graz University of Technology,
+*              Institute of Internal Combustion Engines and Thermodynamics,
+*              Institute of Technical Informatics
+*
+* VECTO is licensed under the EUPL, Version 1.1 or - as soon they will be approved
+* by the European Commission - subsequent versions of the EUPL (the "Licence");
+* You may not use VECTO except in compliance with the Licence.
+* You may obtain a copy of the Licence at:
+*
+* https://joinup.ec.europa.eu/community/eupl/og_page/eupl
+*
+* Unless required by applicable law or agreed to in writing, VECTO
+* distributed under the Licence is distributed on an "AS IS" basis,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the Licence for the specific language governing permissions and
+* limitations under the Licence.
+*
+* Authors:
+*   Stefan Hausberger, hausberger@ivt.tugraz.at, IVT, Graz University of Technology
+*   Christian Kreiner, christian.kreiner@tugraz.at, ITI, Graz University of Technology
+*   Michael Krisper, michael.krisper@tugraz.at, ITI, Graz University of Technology
+*   Raphael Luz, luz@ivt.tugraz.at, IVT, Graz University of Technology
+*   Markus Quaritsch, markus.quaritsch@tugraz.at, IVT, Graz University of Technology
+*   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.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.Utils;
+using TUGraz.VectoHashing;
+
+namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile
+{
+	public class XMLCustomerReport : IXMLCustomerReport
+	{
+		public const string CURRENT_SCHEMA_VERSION = "0.8";
+
+		protected readonly XElement VehiclePart;
+
+		protected XElement InputDataIntegrity;
+
+		protected readonly XElement Results;
+
+		protected readonly XNamespace rootNS = XNamespace.Get("urn:tugraz:ivt:VectoAPI:CustomerOutput");
+		protected readonly XNamespace tns = XNamespace.Get("urn:tugraz:ivt:VectoAPI:CustomerOutput:v" + CURRENT_SCHEMA_VERSION);
+		protected readonly XNamespace di = XNamespace.Get("http://www.w3.org/2000/09/xmldsig#");
+		protected readonly XNamespace xsi = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance");
+
+		protected bool _allSuccess = true;
+
+		protected KilogramPerMeter _weightedCo2 = 0.SI<KilogramPerMeter>();
+
+		protected Kilogram _weightedPayload = 0.SI<Kilogram>();
+		protected double _passengerCount = 0;
+
+
+		public XMLCustomerReport()
+		{
+			
+			VehiclePart = new XElement(tns + XMLNames.Component_Vehicle);
+			Results = new XElement(tns + XMLNames.Report_Results);
+		}
+
+		public virtual void Initialize(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes)
+		{
+			var exempted = modelData.Exempted;
+			VehiclePart.Add(
+				new XElement(tns + XMLNames.Component_Model, modelData.VehicleData.ModelName),
+				new XElement(tns + XMLNames.Component_Manufacturer, modelData.VehicleData.Manufacturer),
+				new XElement(tns + XMLNames.Component_ManufacturerAddress, modelData.VehicleData.ManufacturerAddress),
+				new XElement(tns + XMLNames.Vehicle_VIN, modelData.VehicleData.VIN),
+				new XElement(tns + XMLNames.Vehicle_LegislativeClass, modelData.VehicleData.LegislativeClass.ToXMLFormat()),
+				new XElement(
+					tns + XMLNames.Vehicle_GrossVehicleMass,
+					XMLHelper.ValueAsUnit(modelData.VehicleData.GrossVehicleMass, XMLNames.Unit_t, 1)),
+				new XElement(
+					tns + XMLNames.Vehicle_CurbMassChassis, XMLHelper.ValueAsUnit(modelData.VehicleData.CurbMass, XMLNames.Unit_kg)),
+				new XElement(tns + XMLNames.Vehicle_ZeroEmissionVehicle, modelData.VehicleData.ZeroEmissionVehicle),
+				new XElement(tns + XMLNames.Vehicle_HybridElectricHDV, modelData.VehicleData.HybridElectricHDV),
+				new XElement(tns + XMLNames.Vehicle_DualFuelVehicle, modelData.VehicleData.DualFuelVehicle)
+			);
+
+			if (exempted) {
+				VehiclePart.Add(new XAttribute(xsi + "type", "ExemptedVehicleType"), 
+					ExemptedData(modelData));
+				Results.Add(new XElement(tns + XMLNames.Report_ExemptedVehicle));
+			} else {
+				VehiclePart.Add(
+					new XAttribute(xsi + "type", "VehicleType"),
+					new XElement(tns + XMLNames.Vehicle_AxleConfiguration, modelData.VehicleData.AxleConfiguration.GetName()),
+					new XElement(tns + XMLNames.Report_Vehicle_VehicleGroup, modelData.VehicleData.VehicleClass.GetClassNumber()),
+					new XElement(tns + XMLNames.Vehicle_VocationalVehicle, modelData.VehicleData.VocationalVehicle),
+					new XElement(tns + XMLNames.Vehicle_SleeperCab, modelData.VehicleData.SleeperCab),
+					GetADAS(modelData.VehicleData.ADAS),
+					ComponentData(modelData, fuelModes)
+					);
+			}
+			InputDataIntegrity = new XElement(tns + XMLNames.Report_InputDataSignature,
+				modelData.InputDataHash == null ? XMLHelper.CreateDummySig(di) : new XElement(modelData.InputDataHash));
+		}
+
+		private object[] ExemptedData(VectoRunData modelData)
+		{
+			return new object[] {
+				modelData.VehicleData.HybridElectricHDV ? new XElement(tns + XMLNames.Vehicle_MaxNetPower1, XMLHelper.ValueAsUnit(modelData.VehicleData.MaxNetPower1, XMLNames.Unit_W)) : null,
+				modelData.VehicleData.HybridElectricHDV ? new XElement(tns + XMLNames.Vehicle_MaxNetPower2, XMLHelper.ValueAsUnit(modelData.VehicleData.MaxNetPower2, XMLNames.Unit_W)) : null
+			};
+		}
+
+		protected XElement GetADAS(VehicleData.ADASData adasData)
+		{
+			return new XElement(tns + XMLNames.Vehicle_ADAS,
+								new XElement(tns + XMLNames.Vehicle_ADAS_EngineStopStart, adasData.EngineStopStart),
+								new XElement(tns + XMLNames.Vehicle_ADAS_EcoRollWithoutEngineStop, adasData.EcoRoll.WithoutEngineStop()),
+								new XElement(tns + XMLNames.Vehicle_ADAS_EcoRollWithEngineStopStart, adasData.EcoRoll.WithEngineStop()),
+								new XElement(tns + XMLNames.Vehicle_ADAS_PCC, adasData.PredictiveCruiseControl != PredictiveCruiseControlType.None)
+			);
+		}
+
+		protected virtual XElement[] ComponentData(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes)
+		{
+			return new[] {
+				new XElement(
+					tns + XMLNames.Report_Vehicle_EngineRatedPower,
+					XMLHelper.ValueAsUnit(modelData.EngineData.RatedPowerDeclared, XMLNames.Unit_kW)),
+				new XElement(
+					tns + XMLNames.Report_Vehicle_EngineDisplacement,
+					XMLHelper.ValueAsUnit(modelData.EngineData.Displacement, XMLNames.Unit_ltr, 1)),
+				new XElement(
+					tns + XMLNames.Report_Vehicle_FuelTypes,
+					fuelModes.SelectMany(x => x.Select(f => f.FuelType.ToXMLFormat())).Distinct()
+							.Select(x => new XElement(tns + XMLNames.Engine_FuelType, x))
+				),
+				new XElement(
+					tns + XMLNames.Report_Vehicle_TransmissionCertificationMethod,
+					modelData.GearboxData.CertificationMethod.ToXMLFormat()),
+				new XElement(tns + XMLNames.Gearbox_TransmissionType, modelData.GearboxData.Type.ToXMLFormat()),
+				new XElement(tns + XMLNames.Report_GetGearbox_GearsCount, modelData.GearboxData.Gears.Count),
+				new XElement(tns + XMLNames.Report_Vehicle_Retarder, modelData.Retarder.Type.IsDedicatedComponent()),
+				new XElement(tns + XMLNames.Report_Vehicle_AxleRatio, modelData.AxleGearData.AxleGear.Ratio.ToXMLFormat(3)),
+				new XElement(
+					tns + XMLNames.Report_Vehicle_AverageRRC, modelData.VehicleData.AverageRollingResistanceTruck.ToXMLFormat(4)),
+
+				//new XElement(
+				//	tns + XMLNames.Report_Vehicle_AverageRRCLabel,
+				//	DeclarationData.Wheels.TyreClass.Lookup(modelData.VehicleData.AverageRollingResistanceTruck))
+			}.Concat(
+				modelData.VehicleData.AxleData.Where(x => x.AxleType != AxleType.Trailer).Select(
+					(x, idx) => new XElement(tns + "FuelEfficiencyLabelMotorVehicleTyre",
+					new XAttribute("axleNbr", idx+1),
+					x.FuelEfficiencyClass))).ToArray();
+
+		}
+
+		
+
+		public virtual void WriteResult(XMLDeclarationReport.ResultEntry resultEntry)
+		{
+			//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;
+				_passengerCount += (resultEntry.PassengerCount ?? 0) * resultEntry.WeightingFactor;
+			}
+			Results.Add(resultEntry.Status == VectoRun.Status.Success ? GetSuccessResult(resultEntry) : GetErrorResult(resultEntry));
+		}
+
+		private XElement GetErrorResult(XMLDeclarationReport.ResultEntry resultEntry)
+		{
+			var content = new object[] { };
+			switch (resultEntry.Status) {
+				case VectoRun.Status.Pending:
+				case VectoRun.Status.Running:
+					content = null; // should not happen!
+					break;
+				case VectoRun.Status.Canceled:
+				case VectoRun.Status.Aborted:
+					content =  new object[] {
+						new XElement(tns + "Error", resultEntry.Error)
+					};
+					break;
+				default:
+					throw new ArgumentOutOfRangeException();
+			}
+
+			return new XElement(tns + XMLNames.Report_Result_Result,
+				new XAttribute(XMLNames.Report_Result_Status_Attr, "error"),
+				new XAttribute(xsi + "type", "ResultErrorType"),
+				new XElement(tns + XMLNames.Report_Result_Mission, resultEntry.Mission.ToXMLFormat()),
+				content);
+		}
+
+		private XElement GetSuccessResult(XMLDeclarationReport.ResultEntry result)
+		{
+			return new XElement(
+				tns + XMLNames.Report_Result_Result,
+				new XAttribute(XMLNames.Report_Result_Status_Attr, "success"),
+				new XAttribute(xsi + "type", "ResultSuccessType"),
+				new XElement(tns + XMLNames.Report_Result_Mission, result.Mission.ToXMLFormat()),
+				new XElement(tns + XMLNames.Report_ResultEntry_TotalVehicleMass,
+					XMLHelper.ValueAsUnit(result.TotalVehicleMass, XMLNames.Unit_kg)),
+				new XElement(tns + XMLNames.Report_ResultEntry_Payload, XMLHelper.ValueAsUnit(result.Payload, XMLNames.Unit_kg)),
+				result.PassengerCount.HasValue && result.PassengerCount.Value > 0
+					? new XElement(tns + "PassengerCount", result.PassengerCount.Value.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),
+				new XElement(tns + XMLNames.Report_Results_AverageSpeed, XMLHelper.ValueAsUnit(result.AverageSpeed, XMLNames.Unit_kmph, 1)),
+				XMLDeclarationReport.GetResults(result, tns, false).Cast<object>().ToArray()
+			);
+		}
+
+		protected XElement GetApplicationInfo()
+		{
+			var versionNumber = VectoSimulationCore.VersionNumber;
+#if CERTIFICATION_RELEASE
+			// add nothing to version number
+#else
+			versionNumber += " !!NOT FOR CERTIFICATION!!";
+#endif
+			return new XElement(tns + XMLNames.Report_ApplicationInfo_ApplicationInformation,
+				new XElement(tns + XMLNames.Report_ApplicationInfo_SimulationToolVersion, versionNumber),
+				new XElement(tns + XMLNames.Report_ApplicationInfo_Date,
+					XmlConvert.ToString(DateTime.Now, XmlDateTimeSerializationMode.Utc)));
+		}
+
+		public virtual void GenerateReport(XElement resultSignature)
+		{
+			
+			var retVal = new XDocument();
+			var results = new XElement(Results);
+			results.AddFirst(new XElement(tns + XMLNames.Report_Result_Status, _allSuccess ? "success" : "error"));
+			var summary = _allSuccess && _weightedPayload > 0
+				? new XElement(tns + XMLNames.Report_Results_Summary,
+					new XElement(tns + XMLNames.Report_SpecificCO2Emissions,
+						new XAttribute(XMLNames.Report_Results_Unit_Attr, XMLNames.Unit_gCO2Pertkm),
+						(_weightedCo2 / _weightedPayload).ConvertToGrammPerTonKilometer().ToXMLFormat(1)
+					),
+					new XElement(tns + XMLNames.Report_AveragePayload,
+						new XAttribute(XMLNames.Report_Results_Unit_Attr, XMLNames.Unit_t),
+						_weightedPayload.ConvertToTon().ToXMLFormat(3)
+					),
+					_passengerCount > 0 ? new XElement(tns + "AveragePAssengerCount", _passengerCount.ToMinSignificantDigits(2)) : null
+				)
+				: null;
+			results.Add(summary);
+			var vehicle = new XElement(VehiclePart);
+			vehicle.Add(InputDataIntegrity);
+			retVal.Add(new XProcessingInstruction("xml-stylesheet", "href=\"https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/CSS/VectoReports.css\""));
+			retVal.Add(new XElement(rootNS + XMLNames.VectoCustomerReport,
+				//new XAttribute("schemaVersion", CURRENT_SCHEMA_VERSION),
+				new XAttribute(XNamespace.Xmlns + "xsi", xsi.NamespaceName),
+				new XAttribute("xmlns", tns),
+				new XAttribute(XNamespace.Xmlns + "tns", rootNS),
+				new XAttribute(XNamespace.Xmlns + "di", di),
+				new XAttribute(xsi + "schemaLocation",
+					$"{rootNS} {AbstractXMLWriter.SchemaLocationBaseUrl}DEV/VectoOutputCustomer.xsd"),
+				new XElement(rootNS + XMLNames.Report_DataWrap,
+					new XAttribute(xsi + "type", "VectoOutputDataType"),
+					vehicle,
+					new XElement(tns + XMLNames.Report_ResultData_Signature, resultSignature),
+					results,
+					GetApplicationInfo())
+				)
+				);
+			var stream = new MemoryStream();
+			var writer = new StreamWriter(stream);
+			writer.Write(retVal);
+			writer.Flush();
+			stream.Seek(0, SeekOrigin.Begin);
+			var h = VectoHash.Load(stream);
+			Report = h.AddHash();
+		}
+
+		public XDocument Report { get; protected set; }
+	}
+
+	public class XMLCustomerReportExemptedPrimaryBus : IXMLCustomerReport
+	{
+		#region Implementation of IXMLCustomerReport
+
+		public void Initialize(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes)
+		{
+			// MQ 2021-06-14 TODO: fill with meat
+		}
+
+		public XDocument Report { get; }
+		public void WriteResult(XMLDeclarationReport.ResultEntry resultValue)
+		{
+			// MQ 2021-06-14 TODO: fill with meat
+		}
+
+		public void GenerateReport(XElement resultSignature)
+		{
+			// MQ 2021-06-14 TODO: fill with meat
+		}
+
+		#endregion
+	}
+}
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLCustomerReportCompletedBus.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/XMLCustomerReportCompletedBus.cs
similarity index 98%
rename from VectoCore/VectoCore/OutputData/XML/XMLCustomerReportCompletedBus.cs
rename to VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/XMLCustomerReportCompletedBus.cs
index e218c885163390b0f7c344cf1140d1803e1414e3..32480f8721668c4f5414054c7e7fcb8dfb65e583 100644
--- a/VectoCore/VectoCore/OutputData/XML/XMLCustomerReportCompletedBus.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/XMLCustomerReportCompletedBus.cs
@@ -4,7 +4,6 @@ using System.IO;
 using System.Linq;
 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;
@@ -12,10 +11,12 @@ using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Models.Declaration;
 using TUGraz.VectoCore.Models.Simulation.Data;
 using TUGraz.VectoCore.Models.Simulation.Impl;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport;
 using TUGraz.VectoCore.Utils;
 using TUGraz.VectoHashing;
 
-namespace TUGraz.VectoCore.OutputData.XML {
+namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile 
+{
 	public class XMLCustomerReportCompletedBus : XMLCustomerReport
 	{
 		private int _resultCount = 0;
@@ -82,7 +83,7 @@ namespace TUGraz.VectoCore.OutputData.XML {
 				modelData.InputDataHash == null ? XMLHelper.CreateDummySig(di) : new XElement(modelData.InputDataHash));
 		}
 
-		internal void WriteResult(XMLDeclarationReport.ResultEntry genericResult, XMLDeclarationReport.ResultEntry specificResult, IResult primaryResult)
+		public virtual void WriteResult(XMLDeclarationReport.ResultEntry genericResult, XMLDeclarationReport.ResultEntry specificResult, IResult primaryResult)
 		{
 			_allSuccess &= genericResult.Status == VectoRun.Status.Success;
 			_allSuccess &= specificResult.Status == VectoRun.Status.Success;
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/XMLCustomerReportExemptedCompletedBus.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/XMLCustomerReportExemptedCompletedBus.cs
new file mode 100644
index 0000000000000000000000000000000000000000..b9311f3be29972aed8e2f5c2de575c50a1b7178a
--- /dev/null
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/XMLCustomerReportExemptedCompletedBus.cs
@@ -0,0 +1,81 @@
+ο»Ώusing System.Collections.Generic;
+using System.Xml.Linq;
+using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Resources;
+using TUGraz.VectoCore.Models.Declaration;
+using TUGraz.VectoCore.Models.Simulation.Data;
+using TUGraz.VectoCore.Utils;
+
+namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile
+{
+	public class XMLCustomerReportExemptedCompletedBus : XMLCustomerReportCompletedBus
+	{
+		public override void Initialize(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes)
+		{
+			VehiclePart.Add(
+				new XAttribute(xsi + "type", "VehicleCompletedExemptedBusType"),
+				new XElement(tns + XMLNames.Component_Model, modelData.VehicleData.ModelName),
+				new XElement(
+					tns + "PrimaryVehicle",
+					new XElement(tns + XMLNames.Component_Manufacturer, PrimaryVehicle.Manufacturer),
+					new XElement(tns + XMLNames.Component_ManufacturerAddress, PrimaryVehicle.ManufacturerAddress),
+					new XElement(tns + XMLNames.Report_InputDataSignature,
+						PrimaryVehicleRecordFile.PrimaryVehicleInputDataHash.ToXML(di)),
+					new XElement(tns + "ManufacturerRecordSignature",
+						PrimaryVehicleRecordFile.ManufacturerRecordHash.ToXML(di))
+				),
+				new XElement(
+					tns + "CompletedVehicle",
+
+					new XElement(tns + XMLNames.Component_Manufacturer, modelData.VehicleData.Manufacturer),
+					new XElement(tns + XMLNames.Component_ManufacturerAddress,
+						modelData.VehicleData.ManufacturerAddress)
+				),
+
+				new XElement(tns + XMLNames.Vehicle_VIN, modelData.VehicleData.VIN),
+				new XElement(tns + "VehicleCategory", modelData.VehicleData.LegislativeClass.ToXMLFormat()),
+				new XElement(tns + XMLNames.Report_Vehicle_VehicleGroup,
+					modelData.VehicleData.VehicleClass.GetClassNumber()),
+				new XElement(tns + XMLNames.Vehicle_RegisteredClass,
+					modelData.VehicleData.RegisteredClass.ToXMLFormat()),
+				new XElement(tns + XMLNames.Vehicle_VehicleCode, modelData.VehicleData.VehicleCode.ToXMLFormat()),
+
+				new XElement(
+					tns + XMLNames.TPMLM,
+					XMLHelper.ValueAsUnit(modelData.VehicleData.GrossVehicleMass, XMLNames.Unit_t, 1)),
+				new XElement(
+					tns + XMLNames.Vehicle_CurbMassChassis,
+					XMLHelper.ValueAsUnit(modelData.VehicleData.CurbMass, XMLNames.Unit_kg)),
+				new XElement(tns + XMLNames.Vehicle_ZeroEmissionVehicle, modelData.VehicleData.ZeroEmissionVehicle),
+
+				new XElement(tns + XMLNames.Vehicle_AxleConfiguration,
+					modelData.VehicleData.AxleConfiguration.GetName()),
+				//new XElement(tns + XMLNames.Vehicle_VocationalVehicle, modelData.VehicleData.VocationalVehicle),
+				//new XElement(tns + XMLNames.Vehicle_SleeperCab, modelData.VehicleData.SleeperCab),
+				new XElement(
+					tns + "RegisteredPassengers",
+					modelData.VehicleData.InputData.NumberPassengerSeatsLowerDeck +
+					modelData.VehicleData.InputData.NumberPassengerSeatsUpperDeck
+				),
+				new XElement(tns + XMLNames.Bus_LowEntry, modelData.VehicleData.InputData.LowEntry),
+				new XElement(tns + XMLNames.Bus_HeighIntegratedBody,
+					modelData.VehicleData.InputData.Height.ToXMLFormat(3))
+			);
+			VehiclePart.Add(
+				new XElement(tns + "SumNetPower", XMLHelper.ValueAsUnit(modelData.VehicleData.MaxNetPower1, XMLNames.Unit_W))
+			);
+
+			InputDataIntegrity = new XElement(tns + XMLNames.Report_InputDataSignature,
+				modelData.InputDataHash == null ? XMLHelper.CreateDummySig(di) : new XElement(modelData.InputDataHash));
+
+			Results.Add(new XElement(tns + XMLNames.Report_ExemptedVehicle));
+		}
+
+		public override void WriteResult(XMLDeclarationReport.ResultEntry genericResult, XMLDeclarationReport.ResultEntry specificResult, IResult primaryResult)
+		{
+			// no results for exempted
+		}
+
+	}
+}
\ No newline at end of file
diff --git a/VectoCore/VectoCore/OutputData/XML/AbstractXMLManufacturerReport.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/AbstractXMLManufacturerReport.cs
similarity index 97%
rename from VectoCore/VectoCore/OutputData/XML/AbstractXMLManufacturerReport.cs
rename to VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/AbstractXMLManufacturerReport.cs
index cb7a0e1a59b73a61a402a03c5b20cb9238759edb..4d5f123ef363ab9f8c7ee63f73d7619f18f4b060 100644
--- a/VectoCore/VectoCore/OutputData/XML/AbstractXMLManufacturerReport.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/AbstractXMLManufacturerReport.cs
@@ -18,16 +18,8 @@ using TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox;
 using TUGraz.VectoCore.Utils;
 using TUGraz.VectoHashing;
 
-namespace TUGraz.VectoCore.OutputData.XML
+namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport
 {
-	public interface IXMLManufacturerReport
-	{
-		void Initialize(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes);
-		XDocument Report { get; }
-		void WriteResult(XMLDeclarationReport.ResultEntry resultValue);
-		void GenerateReport();
-	}
-
 	public abstract class AbstractXMLManufacturerReport : IXMLManufacturerReport
 	{
 		protected XElement VehiclePart;
@@ -38,10 +30,12 @@ namespace TUGraz.VectoCore.OutputData.XML
 
 		protected XNamespace xsi = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance");
 		protected XNamespace tns = "urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.8";
+		protected XNamespace vns;
 		protected XNamespace di = "http://www.w3.org/2000/09/xmldsig#";
 
 		protected AbstractXMLManufacturerReport()
 		{
+			vns = "urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.8";
 			VehiclePart = new XElement(tns + XMLNames.Component_Vehicle);
 			Results = new XElement(tns + XMLNames.Report_Results);
 		}
@@ -67,16 +61,17 @@ namespace TUGraz.VectoCore.OutputData.XML
 
 					//new XAttribute("schemaVersion", CURRENT_SCHEMA_VERSION),
 					new XAttribute(XNamespace.Xmlns + "xsi", xsi.NamespaceName),
-					new XAttribute("xmlns", tns),
+					new XAttribute("xmlns", vns),
 					new XAttribute(XNamespace.Xmlns + "di", di),
-					//new XAttribute(XNamespace.Xmlns + "tns", tns),
-					new XAttribute(XNamespace.Xmlns + "mrf", mrf),
+                    new XAttribute(XNamespace.Xmlns + "tns", tns),
+					new XAttribute(XNamespace.Xmlns + "vns", vns),
+                    new XAttribute(XNamespace.Xmlns + "mrf", mrf),
 					new XAttribute(
 						xsi + "schemaLocation",
 						$"{mrf} {AbstractXMLWriter.SchemaLocationBaseUrl}/DEV/VectoOutputManufacturer.xsd"),
 					new XElement(
 						mrf + XMLNames.Report_DataWrap,
-						new XAttribute(xsi + "type", "VectoOutputDataType"),
+						new XAttribute(xsi + "type", "tns:VectoOutputDataType"),
 						vehicle,
 						results,
 						GetApplicationInfo())
@@ -229,7 +224,7 @@ namespace TUGraz.VectoCore.OutputData.XML
 		protected virtual XElement GetInputDataSignature(VectoRunData modelData)
 		{
 			return new XElement(
-				tns + XMLNames.Report_Input_Signature,
+				vns + XMLNames.Report_Input_Signature,
 				modelData.InputDataHash == null ? CreateDummySig() : new XElement(modelData.InputDataHash));
 		}
 
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/IXMLManufacturerReport.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/IXMLManufacturerReport.cs
new file mode 100644
index 0000000000000000000000000000000000000000..7bc13048203c9b0ff9e7fdfcb92f36b5b4a96ef3
--- /dev/null
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/IXMLManufacturerReport.cs
@@ -0,0 +1,15 @@
+ο»Ώusing System.Collections.Generic;
+using System.Xml.Linq;
+using TUGraz.VectoCore.Models.Declaration;
+using TUGraz.VectoCore.Models.Simulation.Data;
+
+namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport
+{
+	public interface IXMLManufacturerReport
+	{
+		void Initialize(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes);
+		XDocument Report { get; }
+		void WriteResult(XMLDeclarationReport.ResultEntry resultValue);
+		void GenerateReport();
+	}
+}
\ No newline at end of file
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLManufacturerReportCompletedBus.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportCompletedBus.cs
similarity index 98%
rename from VectoCore/VectoCore/OutputData/XML/XMLManufacturerReportCompletedBus.cs
rename to VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportCompletedBus.cs
index 74485d8136ee31735a1f575cc6541facd5de9736..bec09199c00db40d99da4d367038c4d9eaad783a 100644
--- a/VectoCore/VectoCore/OutputData/XML/XMLManufacturerReportCompletedBus.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportCompletedBus.cs
@@ -14,7 +14,7 @@ using TUGraz.VectoCore.Models.Simulation.Impl;
 using TUGraz.VectoCore.Models.SimulationComponent.Data;
 using TUGraz.VectoCore.Utils;
 
-namespace TUGraz.VectoCore.OutputData.XML {
+namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport {
 	public class XMLManufacturerReportCompletedBus : AbstractXMLManufacturerReport
 	{
 		protected TankSystem? _tankSystem;
@@ -67,7 +67,7 @@ namespace TUGraz.VectoCore.OutputData.XML {
 			);
 		}
 
-		private XElement GetPrimaryVehicleInformation()
+		protected XElement GetPrimaryVehicleInformation()
 		{
 			return new XElement(
 				tns + "PrimaryVehicle",
@@ -76,8 +76,8 @@ namespace TUGraz.VectoCore.OutputData.XML {
 				new XElement(tns + XMLNames.Vehicle_AxleConfiguration, PrimaryVehicle.AxleConfiguration.ToXMLFormat()),
 				new XElement(tns + XMLNames.Report_InputDataSignature, PrimaryVehicleRecordFile.PrimaryVehicleInputDataHash.ToXML(di)),
 				new XElement(tns + "ManufacturerRecordSignature", PrimaryVehicleRecordFile.ManufacturerRecordHash.ToXML(di)),
-				new XElement(tns + "VehicleInformationSignature", PrimaryVehicleRecordFile.XMLHash)
-			);
+				new XElement(tns + "VehicleInformationSignature", CreateDummySig()) // PrimaryVehicleRecordFile.XMLHash)
+            );
 		}
 
 		public virtual void WriteResult(XMLDeclarationReport.ResultEntry genericResult, XMLDeclarationReport.ResultEntry specificResult, IResult primaryResult)
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportExemptedCompletedBus.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportExemptedCompletedBus.cs
new file mode 100644
index 0000000000000000000000000000000000000000..095ab3214d5d9d00d21a5e36d9266e3cb40b9a05
--- /dev/null
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportExemptedCompletedBus.cs
@@ -0,0 +1,63 @@
+ο»Ώusing System.Collections.Generic;
+using System.Xml.Linq;
+using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Resources;
+using TUGraz.VectoCore.Models.Declaration;
+using TUGraz.VectoCore.Models.Simulation.Data;
+using TUGraz.VectoCore.Utils;
+
+namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport
+{
+	public class XMLManufacturerReportExemptedCompletedBus : XMLManufacturerReportCompletedBus
+	{
+		public override void Initialize(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes)
+		{
+			VehiclePart.Add(
+				new XAttribute(xsi + "type", "VehicleExemptedCompletedBusType"),
+				GetPrimaryVehicleInformation(),
+				new XElement(
+					tns + "CompletedVehicle",
+					new XElement(tns + XMLNames.Component_Model, modelData.VehicleData.ModelName),
+					new XElement(tns + XMLNames.Component_Manufacturer, modelData.VehicleData.Manufacturer),
+					new XElement(tns + XMLNames.Component_ManufacturerAddress,
+						modelData.VehicleData.ManufacturerAddress),
+					new XElement(tns + XMLNames.Vehicle_VIN, modelData.VehicleData.VIN),
+					new XElement(tns + XMLNames.Bus_LegislativeCategory,
+						modelData.VehicleData.LegislativeClass.ToXMLFormat()),
+					new XElement(tns + XMLNames.Report_Vehicle_VehicleGroup,
+						modelData.VehicleData.VehicleClass.GetClassNumber()),
+					new XElement(tns + XMLNames.Vehicle_RegisteredClass,
+						modelData.VehicleData.RegisteredClass.ToXMLFormat()),
+					new XElement(tns + XMLNames.Vehicle_BodyworkCode, modelData.VehicleData.VehicleCode.ToXMLFormat()),
+					new XElement(tns + XMLNames.Bus_CorrectedActualMass,
+						XMLHelper.ValueAsUnit(modelData.VehicleData.CurbMass, XMLNames.Unit_kg)),
+					new XElement(tns + XMLNames.TPMLM,
+						XMLHelper.ValueAsUnit(modelData.VehicleData.GrossVehicleMass, XMLNames.Unit_t, 2)),
+
+					new XElement(tns + XMLNames.Bus_NumberPassengersLowerDeck,
+						modelData.VehicleData.InputData.NumberPassengerSeatsLowerDeck),
+					new XElement(tns + XMLNames.Bus_NumberPassengersUpperDeck,
+						modelData.VehicleData.InputData.NumberPassengerSeatsUpperDeck),
+
+					new XElement(tns + XMLNames.Vehicle_ZeroEmissionVehicle, modelData.VehicleData.ZeroEmissionVehicle),
+					new XElement(tns + XMLNames.Bus_LowEntry, modelData.VehicleData.InputData.LowEntry),
+					new XElement(tns + XMLNames.Bus_HeighIntegratedBody,
+						modelData.VehicleData.InputData.Height.ToXMLFormat(3)),
+
+					GetInputDataSignature(modelData)
+				)
+			);
+
+			Results.Add(new XElement(tns + XMLNames.Report_ExemptedVehicle));
+		}
+
+
+		public override void WriteResult(XMLDeclarationReport.ResultEntry genericResult,
+			XMLDeclarationReport.ResultEntry specificResult, IResult primaryResult)
+		{
+
+			// no results to write...
+		}
+	}
+}
\ No newline at end of file
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLManufacturerReportExemptedTruck.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportExemptedTruck.cs
similarity index 96%
rename from VectoCore/VectoCore/OutputData/XML/XMLManufacturerReportExemptedTruck.cs
rename to VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportExemptedTruck.cs
index 510bae3f30ee10216dfb476141a512a27cdbaac8..1fe9400d30dc7511c957873c074bad77509cf8f8 100644
--- a/VectoCore/VectoCore/OutputData/XML/XMLManufacturerReportExemptedTruck.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportExemptedTruck.cs
@@ -6,7 +6,8 @@ using TUGraz.VectoCore.Models.Declaration;
 using TUGraz.VectoCore.Models.Simulation.Data;
 using TUGraz.VectoCore.Utils;
 
-namespace TUGraz.VectoCore.OutputData.XML {
+namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport 
+{
 	public class XMLManufacturerReportExemptedTruck : AbstractXMLManufacturerReport
 	{
 		public override void Initialize(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes)
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportExeptedPrimaryBus.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportExeptedPrimaryBus.cs
new file mode 100644
index 0000000000000000000000000000000000000000..018177047aeccd2ac9b40f807feda5a93b50b5af
--- /dev/null
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportExeptedPrimaryBus.cs
@@ -0,0 +1,52 @@
+ο»Ώusing System.Collections.Generic;
+using System.Xml.Linq;
+using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Resources;
+using TUGraz.VectoCore.Models.Declaration;
+using TUGraz.VectoCore.Models.Simulation.Data;
+using TUGraz.VectoCore.Utils;
+
+namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport
+{
+	public class XMLManufacturerReportExeptedPrimaryBus : AbstractXMLManufacturerReport
+	{
+
+		public XMLManufacturerReportExeptedPrimaryBus()
+		{
+            vns = "urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.8";
+        }
+
+		public override void Initialize(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes)
+		{
+			VehiclePart.Add(
+				new XAttribute(xsi + "type", "VehicleExemptedPrimaryBusType"),
+				new XElement(vns + XMLNames.Component_Manufacturer, modelData.VehicleData.Manufacturer),
+				new XElement(vns + XMLNames.Component_ManufacturerAddress, modelData.VehicleData.ManufacturerAddress),
+				new XElement(vns + XMLNames.Component_Model, modelData.VehicleData.ModelName),
+				new XElement(vns + XMLNames.Vehicle_VIN, modelData.VehicleData.VIN),
+				new XElement(vns + "LegislativeCategory", modelData.VehicleData.LegislativeClass.ToXMLFormat()),
+				new XElement(vns + XMLNames.Bus_ChassisConfiguration, "Bus"),
+				new XElement(vns + XMLNames.Vehicle_AxleConfiguration, modelData.VehicleData.AxleConfiguration.GetName()),
+				new XElement(vns + XMLNames.Vehicle_Articulated, modelData.VehicleData.InputData.Articulated),
+				new XElement(
+					vns + XMLNames.Vehicle_TPMLM,
+					XMLHelper.ValueAsUnit(modelData.VehicleData.GrossVehicleMass, XMLNames.Unit_kg, 1)),
+				//new XElement(
+				//	tns + XMLNames.Vehicle_CurbMassChassis, XMLHelper.ValueAsUnit(modelData.VehicleData.CurbMass, XMLNames.Unit_kg)),
+				new XElement(vns + XMLNames.Vehicle_ZeroEmissionVehicle, modelData.VehicleData.ZeroEmissionVehicle),
+				new XElement(vns + "SumNetPower", XMLHelper.ValueAsUnit(modelData.VehicleData.MaxNetPower1, XMLNames.Unit_W)),
+				new XElement(vns + "Technology", modelData.VehicleData.InputData.ExemptedTechnology)
+				
+			);
+			Results.Add(new XElement(tns + XMLNames.Report_ExemptedVehicle));
+
+			InputDataIntegrity = GetInputDataSignature(modelData);
+		}
+
+		protected override XElement VehicleComponents(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes)
+		{
+			return null;
+		}
+
+	}
+}
\ No newline at end of file
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLManufacturerReportPrimaryBus.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportPrimaryBus.cs
similarity index 97%
rename from VectoCore/VectoCore/OutputData/XML/XMLManufacturerReportPrimaryBus.cs
rename to VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportPrimaryBus.cs
index 5720b3f3f9ed9211b19f283842878b363825ba99..d3011bc2e24c6ec332db6655ccb50769df229bce 100644
--- a/VectoCore/VectoCore/OutputData/XML/XMLManufacturerReportPrimaryBus.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportPrimaryBus.cs
@@ -5,6 +5,7 @@ using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Resources;
 using TUGraz.VectoCore.Models.Declaration;
 using TUGraz.VectoCore.Models.Simulation.Data;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport;
 using TUGraz.VectoCore.Utils;
 
 namespace TUGraz.VectoCore.OutputData.XML {
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLManufacturerReport.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportTruck.cs
similarity index 98%
rename from VectoCore/VectoCore/OutputData/XML/XMLManufacturerReport.cs
rename to VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportTruck.cs
index ac924037bf5b2c3d9034e47e95ff5cf607348c4b..610ba2f20e1d985d1f16c423f2c1b00f45bbc226 100644
--- a/VectoCore/VectoCore/OutputData/XML/XMLManufacturerReport.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportTruck.cs
@@ -38,7 +38,7 @@ using TUGraz.VectoCore.Models.Declaration;
 using TUGraz.VectoCore.Models.Simulation.Data;
 using TUGraz.VectoCore.Utils;
 
-namespace TUGraz.VectoCore.OutputData.XML
+namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport
 {
 	public class XMLManufacturerReportTruck : AbstractXMLManufacturerReport
 	{
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLVTPReport.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VTPReport/XMLVTPReport.cs
similarity index 100%
rename from VectoCore/VectoCore/OutputData/XML/XMLVTPReport.cs
rename to VectoCore/VectoCore/OutputData/XML/DeclarationReports/VTPReport/XMLVTPReport.cs
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/IXMLMultistageReport.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/IXMLMultistageReport.cs
new file mode 100644
index 0000000000000000000000000000000000000000..8111f0f90327ad62916024eb1a0593f6d8343f86
--- /dev/null
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/IXMLMultistageReport.cs
@@ -0,0 +1,12 @@
+ο»Ώusing System.Xml.Linq;
+using TUGraz.VectoCore.Models.Simulation.Data;
+
+namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile
+{
+	public interface IXMLMultistageReport
+	{
+		void Initialize(VectoRunData modelData);
+		XDocument Report { get; }
+		void GenerateReport();
+	}
+}
\ No newline at end of file
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/IXMLPrimaryVehicleReport.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/IXMLPrimaryVehicleReport.cs
new file mode 100644
index 0000000000000000000000000000000000000000..f28672258a5e8043e12bedfe8736f3b5c85ba629
--- /dev/null
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/IXMLPrimaryVehicleReport.cs
@@ -0,0 +1,15 @@
+ο»Ώusing System.Collections.Generic;
+using System.Xml.Linq;
+using TUGraz.VectoCore.Models.Declaration;
+using TUGraz.VectoCore.Models.Simulation.Data;
+
+namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile
+{
+	public interface IXMLPrimaryVehicleReport
+	{
+		void Initialize(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes);
+		void WriteResult(XMLDeclarationReport.ResultEntry result);
+		void GenerateReport(XElement fullReportHash);
+		XDocument Report { get; }
+	}
+}
\ No newline at end of file
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/XMLExemptedPrimaryBusVehicleReport.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/XMLExemptedPrimaryBusVehicleReport.cs
new file mode 100644
index 0000000000000000000000000000000000000000..7857a92f0ad86356aad18f5c8e50bfc8381b162c
--- /dev/null
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/XMLExemptedPrimaryBusVehicleReport.cs
@@ -0,0 +1,53 @@
+ο»Ώusing System.Collections.Generic;
+using System.Xml.Linq;
+using TUGraz.VectoCommon.Hashing;
+using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Resources;
+using TUGraz.VectoCore.Models.Declaration;
+using TUGraz.VectoCore.Models.Simulation.Data;
+using TUGraz.VectoCore.Utils;
+
+namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile
+{
+	public class XMLExemptedPrimaryBusVehicleReport : XMLPrimaryBusVehicleReport
+	{
+		#region Implementation of IXMLPrimaryVehicleReport
+
+		public override void Initialize(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes)
+		{
+			VehiclePart.Add(
+				new XAttribute(xsi + "type", "VehicleExemptedPrimaryBusType"),
+				new XElement(tns + XMLNames.Component_Manufacturer, modelData.VehicleData.Manufacturer),
+				new XElement(tns + XMLNames.Component_ManufacturerAddress, modelData.VehicleData.ManufacturerAddress),
+				new XElement(tns + XMLNames.Component_Model, modelData.VehicleData.ModelName),
+				new XElement(tns + XMLNames.Vehicle_VIN, modelData.VehicleData.VIN),
+				new XElement(tns + "LegislativeCategory", modelData.VehicleData.LegislativeClass.ToXMLFormat()),
+				new XElement(tns + XMLNames.Bus_ChassisConfiguration, "Bus"),
+				new XElement(tns + XMLNames.Vehicle_AxleConfiguration, modelData.VehicleData.AxleConfiguration.GetName()),
+				new XElement(tns + XMLNames.Vehicle_Articulated, modelData.VehicleData.InputData.Articulated),
+				new XElement(
+					tns + XMLNames.Vehicle_TPMLM,
+					XMLHelper.ValueAsUnit(modelData.VehicleData.GrossVehicleMass, XMLNames.Unit_kg, 1)),
+				//new XElement(
+				//	tns + XMLNames.Vehicle_CurbMassChassis, XMLHelper.ValueAsUnit(modelData.VehicleData.CurbMass, XMLNames.Unit_kg)),
+				new XElement(tns + XMLNames.Vehicle_ZeroEmissionVehicle, modelData.VehicleData.ZeroEmissionVehicle),
+				new XElement(tns + "SumNetPower", XMLHelper.ValueAsUnit(modelData.VehicleData.MaxNetPower1, XMLNames.Unit_W)),
+				new XElement(tns + "Technology", modelData.VehicleData.InputData.ExemptedTechnology)
+
+			);
+			Results.Add(new XElement(tns + XMLNames.Report_ExemptedVehicle));
+
+			InputDataIntegrity = new XElement(tns + XMLNames.Report_InputDataSignature,
+				modelData.InputDataHash == null ? XMLHelper.CreateDummySig(di) : new XElement(modelData.InputDataHash));
+
+		}
+
+		public override void WriteResult(XMLDeclarationReport.ResultEntry result)
+		{
+			// no results for exempted vehicle
+		}
+
+
+		#endregion
+	}
+}
\ No newline at end of file
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLMultistageBusReport.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/XMLMultistageBusReport.cs
similarity index 87%
rename from VectoCore/VectoCore/OutputData/XML/XMLMultistageBusReport.cs
rename to VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/XMLMultistageBusReport.cs
index 106ef6b5d02102fa977ed58382f0fc881e618764..7548a6139dcc0cc77a77d8fcbf1086445d93df0b 100644
--- a/VectoCore/VectoCore/OutputData/XML/XMLMultistageBusReport.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/XMLMultistageBusReport.cs
@@ -1,5 +1,6 @@
 ο»Ώusing System;
 using System.Collections.Generic;
+using System.Diagnostics;
 using System.IO;
 using System.Linq;
 using System.Security.Cryptography;
@@ -18,14 +19,46 @@ using TUGraz.VectoCore.Models.Simulation.Data;
 using TUGraz.VectoCore.Utils;
 using TUGraz.VectoHashing;
 
-
-namespace TUGraz.VectoCore.OutputData.XML
+namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile
 {
-	public interface IXMLMultistageReport
+	public class XMLMultistageExemptedBusReport : XMLMultistageBusReport
 	{
-		void Initialize(VectoRunData modelData);
-		XDocument Report { get; }
-		void GenerateReport();
+		protected override XElement GetVehicleElement(string vehicleId)
+		{
+			return new XElement(tns + XMLNames.Tag_Vehicle,
+				new XAttribute(xsi + XMLNames.Attr_Type, "v2.8:ExemptedInterimStageInputType"),
+				new XAttribute(XMLNames.Component_ID_Attr, vehicleId),
+				new XElement(v28 + XMLNames.Component_Manufacturer, _vehicleInputData.Manufacturer),
+				new XElement(v28 + XMLNames.Component_ManufacturerAddress, _vehicleInputData.ManufacturerAddress),
+				new XElement(v28 + XMLNames.Vehicle_VIN, _vehicleInputData.VIN),
+				new XElement(v28 + XMLNames.Component_Date,
+					XmlConvert.ToString(_vehicleInputData.Date, XmlDateTimeSerializationMode.Utc)),
+				_vehicleInputData.Model != null
+					? new XElement(v28 + XMLNames.Component_Model, _vehicleInputData.Model) : null,
+				_vehicleInputData.LegislativeClass != null
+					? new XElement(v28 + XMLNames.Bus_LegislativeCategory, _vehicleInputData.LegislativeClass.ToXMLFormat()) : null,
+				_vehicleInputData.CurbMassChassis != null
+					? new XElement(v28 + XMLNames.Bus_CorrectedActualMass, _vehicleInputData.CurbMassChassis.ToXMLFormat(0)) : null,
+				_vehicleInputData.GrossVehicleMassRating != null
+					? new XElement(v28 + XMLNames.TPMLM, _vehicleInputData.GrossVehicleMassRating.ToXMLFormat(0)) : null,
+				_vehicleInputData.RegisteredClass != null
+					? new XElement(v28 + XMLNames.Vehicle_RegisteredClass, _vehicleInputData.RegisteredClass.ToXMLFormat()) : null,
+				_vehicleInputData.NumberPassengerSeatsLowerDeck != null
+					? new XElement(v28 + XMLNames.Bus_NumberPassengerSeatsLowerDeck, _vehicleInputData.NumberPassengerSeatsLowerDeck) : null,
+				_vehicleInputData.NumberPassengersStandingLowerDeck != null
+					? new XElement(v28 + XMLNames.Bus_NumberPassengersStandingLowerDeck, _vehicleInputData.NumberPassengersStandingLowerDeck) : null,
+				_vehicleInputData.NumberPassengerSeatsUpperDeck != null
+					? new XElement(v28 + XMLNames.Bus_NumberPassengerSeatsUpperDeck, _vehicleInputData.NumberPassengerSeatsUpperDeck) : null,
+				_vehicleInputData.NumberPassengersStandingUpperDeck != null
+					? new XElement(v28 + XMLNames.Bus_NumberPassengersStandingUpperDeck, _vehicleInputData.NumberPassengersStandingUpperDeck) : null,
+				_vehicleInputData.VehicleCode != null
+					? new XElement(v28 + XMLNames.Vehicle_BodyworkCode, _vehicleInputData.VehicleCode.ToXMLFormat()) : null,
+				_vehicleInputData.LowEntry != null
+					? new XElement(v28 + XMLNames.Bus_LowEntry, _vehicleInputData.LowEntry) : null,
+				_vehicleInputData.Height != null
+					? new XElement(v28 + XMLNames.Bus_HeighIntegratedBody, _vehicleInputData.Height.ConvertToMilliMeter().ToXMLFormat(0)) : null
+			);
+		}
 	}
 
 	public class XMLMultistageBusReport: IXMLMultistageReport 
@@ -38,7 +71,7 @@ namespace TUGraz.VectoCore.OutputData.XML
 		protected XNamespace v23 = "urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3";
 		protected XNamespace v28 = "urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8";
 		protected XNamespace v10 = "urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0";
-
+		
 		private XElement _primaryVehicle;
 		private List<XElement> _manufacturingStages;
 		private List<XAttribute> _namespaceAttributes;
@@ -46,7 +79,7 @@ namespace TUGraz.VectoCore.OutputData.XML
 		private IPrimaryVehicleInformationInputDataProvider _primaryVehicleInputData;
 		private IList<IManufacturingStageInputData> _manufacturingStageInputData;
 		private IManufacturingStageInputData _consolidatedInputData;
-		private IVehicleDeclarationInputData _vehicleInputData;
+		protected IVehicleDeclarationInputData _vehicleInputData;
 
 
 		public XDocument Report { get; protected set; }
@@ -57,7 +90,7 @@ namespace TUGraz.VectoCore.OutputData.XML
 			_namespaceAttributes = new List<XAttribute>();
 		}
 		
-		public void Initialize(VectoRunData modelData)
+		public virtual void Initialize(VectoRunData modelData)
 		{
 			_primaryVehicleInputData = modelData.MultistageVIFInputData.MultistageJobInputData.JobInputData.PrimaryVehicle;
 			_manufacturingStageInputData = modelData.MultistageVIFInputData.MultistageJobInputData.JobInputData.ManufacturingStages;
@@ -147,7 +180,7 @@ namespace TUGraz.VectoCore.OutputData.XML
 
 		#endregion
 
-		public void GenerateReport()
+		public virtual void GenerateReport()
 		{
 			var retVal = new XDocument();
 			retVal.Add(
@@ -218,7 +251,7 @@ namespace TUGraz.VectoCore.OutputData.XML
 		}
 
 		
-		private XElement GetVehicleElement(string vehicleId)
+		protected virtual XElement GetVehicleElement(string vehicleId)
 		{
 			return new XElement(tns + XMLNames.Tag_Vehicle,
 				new XAttribute(xsi + XMLNames.Attr_Type, "v2.8:InterimStageInputType"),
@@ -361,7 +394,8 @@ namespace TUGraz.VectoCore.OutputData.XML
 			return new XElement(v28 + XMLNames.Component_AirDrag,
 				new XElement(v20 + XMLNames.Report_DataWrap,
 					new XAttribute(xsi + XMLNames.Component_Type_Attr, XMLNames.AirDrag_Data_Type_Attr),
-					new XAttribute("xmlns", v10.NamespaceName),
+					//new XAttribute("xmlns", v10.NamespaceName),
+					new XAttribute(XNamespace.Xmlns + "v1.0", v10.NamespaceName),
 					dataNode.Attributes != null && dataNode.Attributes[XMLNames.Component_ID_Attr] != null ?
 						new XAttribute(XMLNames.Component_ID_Attr, dataNode.Attributes[XMLNames.Component_ID_Attr].InnerText) : null,
 					GetElements(dataNode.ChildNodes)
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLPrimaryVehicleReport.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/XMLPrimaryBusVehicleReport.cs
similarity index 94%
rename from VectoCore/VectoCore/OutputData/XML/XMLPrimaryVehicleReport.cs
rename to VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/XMLPrimaryBusVehicleReport.cs
index 8d7a69cbe730936ccba434e253431ccccd74a178..a016a410dd9f68f0e61797cbf0daa8b3b1bb4d17 100644
--- a/VectoCore/VectoCore/OutputData/XML/XMLPrimaryVehicleReport.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/XMLPrimaryBusVehicleReport.cs
@@ -21,9 +21,9 @@ using TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox;
 using TUGraz.VectoCore.Utils;
 using TUGraz.VectoHashing;
 
-namespace TUGraz.VectoCore.OutputData.XML
+namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile
 {
-	public class XMLPrimaryVehicleReport
+	public class XMLPrimaryBusVehicleReport : IXMLPrimaryVehicleReport
 	{
 		protected XNamespace tns = "urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1";
 		protected XNamespace di = "http://www.w3.org/2000/09/xmldsig#";
@@ -40,19 +40,19 @@ namespace TUGraz.VectoCore.OutputData.XML
 		protected XElement InputDataIntegrity;
 		protected XElement Results;
 
-		private bool _allSuccess = true;
+		protected bool _allSuccess = true;
 
 
-		public XMLPrimaryVehicleReport()
+		public XMLPrimaryBusVehicleReport()
 		{
 			VehiclePart = new XElement(tns + XMLNames.Component_Vehicle);
 			Results = new XElement(tns + XMLNames.Report_Results);
 		}
 
-		public XDocument Report { get; private set; }
+		public XDocument Report { get; protected set; }
 
 
-		public void GenerateReport(XElement resultSignature)
+		public virtual void GenerateReport(XElement resultSignature)
 		{
 			var retVal = new XDocument();
 			retVal.Add(
@@ -73,7 +73,7 @@ namespace TUGraz.VectoCore.OutputData.XML
 			Report = retVal;
 		}
 		
-		private XElement GeneratePrimaryVehicle(XElement resultSignature)
+		protected virtual XElement GeneratePrimaryVehicle(XElement resultSignature)
 		{
 			var results = new XElement(Results);
 			results.AddFirst(new XElement(tns + XMLNames.Report_Result_Status, _allSuccess ? "success" : "error"));
@@ -95,7 +95,7 @@ namespace TUGraz.VectoCore.OutputData.XML
 			return primaryVehicle;
 		}
 
-		private XElement GetSignatureElement(XElement stage)
+		protected XElement GetSignatureElement(XElement stage)
 		{
 			var stream = new MemoryStream();
 			var writer = new StreamWriter(stream);
@@ -108,7 +108,7 @@ namespace TUGraz.VectoCore.OutputData.XML
 					(VectoHash.DefaultCanonicalizationMethod, VectoHash.DefaultDigestMethod));
 		}
 
-		private XElement GetApplicationInfo()
+		protected XElement GetApplicationInfo()
 		{
 			var versionNumber = VectoSimulationCore.VersionNumber;
 #if CERTIFICATION_RELEASE // add nothing to version number
@@ -342,15 +342,15 @@ namespace TUGraz.VectoCore.OutputData.XML
 		private XElement GetPneumaticSystem(IPneumaticSupplyDeclarationData supply, IPneumaticConsumersDeclarationData consumer)
 		{
 			return new XElement(tns + XMLNames.BusAux_PneumaticSystem,
-					new XElement(tns + XMLNames.Bus_SizeOfAirSupply, supply.CompressorSize),
-					new XElement(tns + XMLNames.CompressorDrive, supply.CompressorDrive.GetLabel()),
-					new XElement(tns + XMLNames.Vehicle_Clutch, supply.Clutch),
-					new XElement(tns + XMLNames.Bus_CompressorRatio, supply.Ratio.ToMinSignificantDigits(3)),
-					new XElement(tns + XMLNames.Bus_SmartCompressionSystem, supply.SmartAirCompression),
-					new XElement(tns + XMLNames.Bus_SmartRegenerationSystem, supply.SmartRegeneration),
-					new XElement(tns + XMLNames.Bus_AirsuspensionControl, GetXMLAirsuspensionControl(consumer.AirsuspensionControl)),
-					new XElement(tns + XMLNames.BusAux_PneumaticSystem_SCRReagentDosing, consumer.AdBlueDosing == ConsumerTechnology.Pneumatically)
-				);
+				new XElement(tns + XMLNames.Bus_SizeOfAirSupply, supply.CompressorSize),
+				new XElement(tns + XMLNames.CompressorDrive, supply.CompressorDrive.GetLabel()),
+				new XElement(tns + XMLNames.Vehicle_Clutch, supply.Clutch),
+				new XElement(tns + XMLNames.Bus_CompressorRatio, supply.Ratio.ToXMLFormat(3)),
+				new XElement(tns + XMLNames.Bus_SmartCompressionSystem, supply.SmartAirCompression),
+				new XElement(tns + XMLNames.Bus_SmartRegenerationSystem, supply.SmartRegeneration),
+				new XElement(tns + XMLNames.Bus_AirsuspensionControl, GetXMLAirsuspensionControl(consumer.AirsuspensionControl)),
+				new XElement(tns + XMLNames.BusAux_PneumaticSystem_SCRReagentDosing, consumer.AdBlueDosing == ConsumerTechnology.Pneumatically)
+			);
 		}
 
 		private string GetXMLAirsuspensionControl(ConsumerTechnology airsuspensionControl)
@@ -518,7 +518,7 @@ namespace TUGraz.VectoCore.OutputData.XML
 			};
 		}
 
-		public void WriteResult(XMLDeclarationReport.ResultEntry resultEntry)
+		public virtual void WriteResult(XMLDeclarationReport.ResultEntry resultEntry)
 		{
 			_allSuccess &= resultEntry.Status == VectoRun.Status.Success;
 
@@ -594,11 +594,10 @@ namespace TUGraz.VectoCore.OutputData.XML
 
 			return retVal.Cast<object>().ToArray();
 		}
-		
-		private string GetGUID()
+
+		protected string GetGUID()
 		{
 			return Guid.NewGuid().ToString("n").Substring(0, 20);
 		}
 	}
-
 }
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs
index cc7f166f39fc28ee77542a69b6e5f18cf1228666..46bec9b30a77f889c26d81e3bee348be4405cd4f 100644
--- a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs
+++ b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs
@@ -46,6 +46,8 @@ using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Models.Declaration;
 using TUGraz.VectoCore.Models.Simulation.Data;
 using TUGraz.VectoCore.Models.Simulation.Impl;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport;
 
 namespace TUGraz.VectoCore.OutputData.XML
 {
@@ -53,7 +55,7 @@ namespace TUGraz.VectoCore.OutputData.XML
 	{
 		protected IXMLManufacturerReport ManufacturerRpt;
 
-		protected XMLCustomerReport CustomerRpt;
+		protected IXMLCustomerReport CustomerRpt;
 
 
 		protected IDictionary<Tuple<MissionType, LoadingType>, double> _weightingFactors;
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportCompletedVehicle.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportCompletedVehicle.cs
index 850db9412d924e5e8ec3ef42cf45207855331f94..18d8a1e85ecdd895948090b3846024ae1743645a 100644
--- a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportCompletedVehicle.cs
+++ b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportCompletedVehicle.cs
@@ -7,6 +7,8 @@ using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCore.Models.Declaration;
 using TUGraz.VectoCore.Models.Simulation.Data;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport;
 
 namespace TUGraz.VectoCore.OutputData.XML {
 	public class XMLDeclarationReportCompletedVehicle : XMLDeclarationReport
@@ -19,12 +21,20 @@ namespace TUGraz.VectoCore.OutputData.XML {
 
 		protected override void InstantiateReports(VectoRunData modelData)
 		{
-			ManufacturerRpt = new XMLManufacturerReportCompletedBus() {
-				PrimaryVehicleRecordFile = PrimaryVehicleReportInputData
-			};
-			CustomerRpt = new XMLCustomerReportCompletedBus() {
-				PrimaryVehicleRecordFile = PrimaryVehicleReportInputData
-			};
+			ManufacturerRpt = modelData.Exempted
+				? new XMLManufacturerReportExemptedCompletedBus() {
+					PrimaryVehicleRecordFile = PrimaryVehicleReportInputData
+				}
+				: new XMLManufacturerReportCompletedBus() {
+					PrimaryVehicleRecordFile = PrimaryVehicleReportInputData
+				};
+			CustomerRpt = modelData.Exempted
+				? new XMLCustomerReportExemptedCompletedBus() {
+					PrimaryVehicleRecordFile = PrimaryVehicleReportInputData
+				}
+				: new XMLCustomerReportCompletedBus() {
+					PrimaryVehicleRecordFile = PrimaryVehicleReportInputData
+				};
 		}
 
 		public override void InitializeReport(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes)
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportMultistageBusVehicle.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportMultistageBusVehicle.cs
index 09aff714f79cb82f3aeba8dd5481805f0428572a..c2ba05703732a8c25a4d0f5e6a8123828388ab17 100644
--- a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportMultistageBusVehicle.cs
+++ b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportMultistageBusVehicle.cs
@@ -5,21 +5,24 @@ using System.Text;
 using System.Threading.Tasks;
 using TUGraz.VectoCore.Models.Declaration;
 using TUGraz.VectoCore.Models.Simulation.Data;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile;
 
 namespace TUGraz.VectoCore.OutputData.XML
 {
 	public class XMLDeclarationReportMultistageBusVehicle : XMLDeclarationReport
 	{
-		private readonly XMLMultistageBusReport _multistageBusReport;
+		private IXMLMultistageReport _multistageBusReport;
 
 		public XMLDeclarationReportMultistageBusVehicle(IReportWriter writer)
 			: base(writer)
 		{
-			_multistageBusReport = new XMLMultistageBusReport();
+			//_multistageBusReport = new XMLMultistageBusReport();
 		}
 		
 		public override void InitializeReport(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes)
 		{
+			_multistageBusReport =
+				modelData.Exempted ? new XMLMultistageExemptedBusReport() : new XMLMultistageBusReport();
 			_multistageBusReport.Initialize(modelData);
 		}
 		
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportPrimaryVehicle.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportPrimaryVehicle.cs
index b175bac434da38fcbc56b375526f095b23c584e1..36bdb48f59d0c32501569a67a651132268576c30 100644
--- a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportPrimaryVehicle.cs
+++ b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportPrimaryVehicle.cs
@@ -3,35 +3,47 @@ using System.Collections.Generic;
 using System.Xml.Linq;
 using TUGraz.VectoCore.Models.Declaration;
 using TUGraz.VectoCore.Models.Simulation.Data;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile;
 
 namespace TUGraz.VectoCore.OutputData.XML {
 	public class XMLDeclarationReportPrimaryVehicle : XMLDeclarationReport
 	{
-		private XMLPrimaryVehicleReport _primaryReport;
+		protected IXMLPrimaryVehicleReport PrimaryReport;
 
 
 		public XMLDeclarationReportPrimaryVehicle(IReportWriter writer, bool writePIF = false) : base(writer)
 		{
-			_primaryReport = new XMLPrimaryVehicleReport();
 		}
 
 		public override XDocument CustomerReport => null;
 
-		public override XDocument PrimaryVehicleReport => _primaryReport?.Report;
+		public override XDocument PrimaryVehicleReport => PrimaryReport?.Report;
 
 
 		#region Overrides of XMLDeclarationReport
 
 		protected override void InstantiateReports(VectoRunData modelData)
 		{
-			ManufacturerRpt = new XMLManufacturerReportPrimaryBus();
-			CustomerRpt = new XMLCustomerReport();
+			if (modelData.Exempted) {
+				ManufacturerRpt = new XMLManufacturerReportExeptedPrimaryBus();
+				CustomerRpt = new XMLCustomerReportExemptedPrimaryBus();
+				PrimaryReport = new XMLExemptedPrimaryBusVehicleReport();
+
+			} else {
+				ManufacturerRpt = new XMLManufacturerReportPrimaryBus();
+				CustomerRpt = new XMLCustomerReport();
+				PrimaryReport = new XMLPrimaryBusVehicleReport();
+			}
+
+
 		}
 
 		public override void InitializeReport(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes)
 		{
 			base.InitializeReport(modelData, fuelModes);
-			_primaryReport.Initialize(modelData,fuelModes);
+			PrimaryReport.Initialize(modelData,fuelModes);
 		}
 
 
@@ -39,7 +51,7 @@ namespace TUGraz.VectoCore.OutputData.XML {
 		protected override void WriteResult(ResultEntry result)
 		{
 			base.WriteResult(result);
-			_primaryReport.WriteResult(result);
+			PrimaryReport.WriteResult(result);
 		}
 
 		protected override void GenerateReports()
@@ -47,7 +59,7 @@ namespace TUGraz.VectoCore.OutputData.XML {
 			ManufacturerRpt.GenerateReport();
 			var fullReportHash = GetSignature(ManufacturerRpt.Report);
 			CustomerRpt.GenerateReport(fullReportHash);
-			_primaryReport.GenerateReport(fullReportHash);
+			PrimaryReport.GenerateReport(fullReportHash);
 		}
 
 	
@@ -55,7 +67,7 @@ namespace TUGraz.VectoCore.OutputData.XML {
 		protected override void OutputReports()
 		{
 			Writer.WriteReport(ReportType.DeclarationReportManufacturerXML, ManufacturerRpt.Report);
-			Writer.WriteReport(ReportType.DeclarationReportPrimaryVehicleXML, _primaryReport.Report);
+			Writer.WriteReport(ReportType.DeclarationReportPrimaryVehicleXML, PrimaryReport.Report);
 		}
 
 		#endregion
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLMonitoringReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLMonitoringReport.cs
deleted file mode 100644
index 47aff5e005b6e0810cc1341ea5252d9a7f39e0fe..0000000000000000000000000000000000000000
--- a/VectoCore/VectoCore/OutputData/XML/XMLMonitoringReport.cs
+++ /dev/null
@@ -1,217 +0,0 @@
-ο»Ώ/*
-* This file is part of VECTO.
-*
-* Copyright Β© 2012-2019 European Union
-*
-* Developed by Graz University of Technology,
-*              Institute of Internal Combustion Engines and Thermodynamics,
-*              Institute of Technical Informatics
-*
-* VECTO is licensed under the EUPL, Version 1.1 or - as soon they will be approved
-* by the European Commission - subsequent versions of the EUPL (the "Licence");
-* You may not use VECTO except in compliance with the Licence.
-* You may obtain a copy of the Licence at:
-*
-* https://joinup.ec.europa.eu/community/eupl/og_page/eupl
-*
-* Unless required by applicable law or agreed to in writing, VECTO
-* distributed under the Licence is distributed on an "AS IS" basis,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the Licence for the specific language governing permissions and
-* limitations under the Licence.
-*
-* Authors:
-*   Stefan Hausberger, hausberger@ivt.tugraz.at, IVT, Graz University of Technology
-*   Christian Kreiner, christian.kreiner@tugraz.at, ITI, Graz University of Technology
-*   Michael Krisper, michael.krisper@tugraz.at, ITI, Graz University of Technology
-*   Raphael Luz, luz@ivt.tugraz.at, IVT, Graz University of Technology
-*   Markus Quaritsch, markus.quaritsch@tugraz.at, IVT, Graz University of Technology
-*   Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology
-*/
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Xml;
-using System.Xml.Linq;
-using System.Xml.Schema;
-using System.Xml.XPath;
-using TUGraz.IVT.VectoXML.Writer;
-using TUGraz.VectoCommon.Models;
-using TUGraz.VectoCore.Models.Simulation.Data;
-using TUGraz.VectoCore.Utils;
-using XmlDocumentType = TUGraz.VectoCore.Utils.XmlDocumentType;
-
-namespace TUGraz.VectoCore.OutputData.XML
-{
-	public class XMLMonitoringReport
-	{
-		public const string CURRENT_SCHEMA_VERSION = "0.8";
-
-		public const string NAMESPACE_BASE_URI = "urn:tugraz:ivt:VectoAPI:MonitoringOutput";
-
-		private readonly IXMLManufacturerReport _manufacturerReport;
-
-		protected XNamespace tns;
-		protected XNamespace di;
-		private XElement _additionalFields;
-
-
-		public XMLMonitoringReport(IXMLManufacturerReport manufacturerReport)
-		{
-			di = "http://www.w3.org/2000/09/xmldsig#";
-			tns = NAMESPACE_BASE_URI + ":v" + CURRENT_SCHEMA_VERSION;
-			_manufacturerReport = manufacturerReport;
-		}
-
-		public XDocument Report
-		{
-			get {
-				var mrf = _manufacturerReport.Report;
-				if (mrf == null) {
-					return null;
-				}
-
-				var errors = new List<string>();
-				var mrfErrors = false;
-				mrf.Validate(XMLValidator.GetXMLSchema(XmlDocumentType.ManufacturerReport), (o, e) => {
-					mrfErrors = true;
-					errors.Add(e.Message);
-				}, true);
-				if (mrfErrors) {
-					LogManager.GetLogger(typeof(XMLMonitoringReport).FullName).Warn("XML Validation of manufacturer record failed! errors: {0}", string.Join(Environment.NewLine, errors));
-				}
-
-				var mrfType = mrf.Root?.GetSchemaInfo()?.SchemaType?.QualifiedName ?? new XmlQualifiedName("urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:AbstractVectoOutputManufacturerType");
-
-				var retVal = GenerateReport();
-				var prefix = "mrf" + mrfType.Namespace.Split(':').Last();
-				
-				var xsi = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance");
-
-				retVal.Root?.Add(
-					new XAttribute(XNamespace.Xmlns + prefix, mrfType.Namespace),
-					new XElement(
-						tns + "ManufacturerRecord",
-						new XAttribute(xsi + "type", $"{prefix}:{mrfType.Name}"),
-						new XAttribute("xmlns", mrfType.Namespace),
-						new XAttribute(XNamespace.Xmlns + "m", tns),
-						GetManufacturerData(mrf)),
-					_additionalFields
-				);
-				return retVal;
-			}
-		}
-
-		private XmlQualifiedName GetXMLType(XElement mrfRoot)
-		{
-			var si = mrfRoot.GetSchemaInfo();
-
-			return si?.SchemaType?.BaseXmlSchemaType.QualifiedName; 
-		}
-
-
-		private object[] GetManufacturerData(XDocument mrf)
-		{
-			return mrf.Root?.XPathSelectElements("./*").ToArray<object>();
-		}
-
-		private XDocument GenerateReport()
-		{
-			var xsi = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance");
-			var retVal = new XDocument();
-
-			//retVal.Add(
-			//	new XProcessingInstruction(
-			//		"xml-stylesheet", "href=\"https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/CSS/VectoReports.css\""));
-			retVal.Add(
-				new XElement(
-					tns + "VectoMonitoring",
-					new XAttribute("schemaVersion", CURRENT_SCHEMA_VERSION),
-					new XAttribute(XNamespace.Xmlns + "xsi", xsi.NamespaceName),
-					new XAttribute("xmlns", tns),
-					new XAttribute(XNamespace.Xmlns + "di", di),
-					new XAttribute(
-						xsi + "schemaLocation",
-						$"{NAMESPACE_BASE_URI} {AbstractXMLWriter.SchemaLocationBaseUrl}VectoMonitoring.xsd")
-				)
-			);
-			return retVal;
-		}
-
-		public void Initialize(VectoRunData modelData)
-		{
-			var numAxles = modelData.VehicleData.AxleData?.Count(x => x.AxleType != AxleType.Trailer) ?? 0;
-			var axleData = new object[numAxles];
-			for (var i = 0; i < axleData.Length; i++) {
-				axleData[i] = new XElement(tns + "Axle",
-					new XAttribute("axleNumber", i+1),
-					new XElement(tns + "Tyre", GetStandardFields($"TYRE_{i + 1}")
-					));
-			}
-
-			var components = new object[0];
-			if (!modelData.Exempted) {
-				components = new object[] {
-					new XElement(
-						tns + "Engine",
-						new XElement(
-							tns + "WHTC",
-							new XElement(tns + "CO2", XMLHelper.ValueAsUnit(double.NaN, "g/kWh", 0)),
-							new XElement(tns + "FuelConsumption", XMLHelper.ValueAsUnit(double.NaN, "g/kWh", 0))
-						),
-						new XElement(
-							tns + "WHSC",
-							new XElement(tns + "CO2", XMLHelper.ValueAsUnit(double.NaN, "g/kWh", 0)),
-							new XElement(tns + "FuelConsumption", XMLHelper.ValueAsUnit(double.NaN, "g/kWh", 0))
-						)
-					),
-					new XElement(tns + "Gearbox", GetStandardFields("GEARBOX")),
-					new XElement(tns + "Axlegear", GetStandardFields("AXLEGEAR")),
-					new XElement(tns + "AxleWheels", axleData),
-				};
-			}
-			_additionalFields = new XElement(
-				tns + "AdditionalData",
-				new XElement(tns + "Vehicle",
-							new XElement(tns + "Make", "##VEHICLE_MAKE##")),
-				components,
-				new XElement(tns + "AdvancedReducingTechnologies", new XComment(GetReducingTechnologiesExample())),
-				new XElement(tns + "VectoLicenseNbr", "##VECTO_LICENSE_NUMBER##")
-			);
-		}
-
-		private object[] GetStandardFields(string prefix)
-		{
-			return new[] {
-				new XElement(tns + "Manufacturer", $"##{prefix}_MANUFACTURER##"),
-				new XElement(tns + "ManufacturerAddress", $"##{prefix}_MANUFACTURERADDRESS##"),
-				new XElement(tns + "Make", $"##{prefix}_MAKE##")
-			};
-		}
-
-		private  string GetReducingTechnologiesExample()
-		{
-			var categories = new[] {
-				"advanced aerodynamic measures",
-				"advanced rolling resistance measures",
-				"advanced drivetrain technologies",
-				"advanced engine technologies",
-				"advanced auxiliary technologies",
-				"additional ADAS technologies",
-				"advanced powertrain integration and hybridisation",
-				"other"
-			};
-			var retVal = new object[categories.Length];
-			//var tmp = new XElement(tns + "foo");
-			for (var i = 0; i < retVal.Length; i++) { 
-				retVal[i] = new XElement("Entry",
-					new XAttribute("category", categories[i]),
-					"##TECHNOLOGY_BRAND_NAME##"
-					);
-			}
-
-			return Environment.NewLine + string.Join(Environment.NewLine, retVal.Select(x => x.ToString())) + Environment.NewLine;
-		}
-	}
-}
diff --git a/VectoCore/VectoCore/Properties/AssemblyInfo.cs b/VectoCore/VectoCore/Properties/AssemblyInfo.cs
index 5fd395da17b9de7d1f42e61dcd4c457ded7b7d38..430c7daf2c2cdec2c544004c49a1898149c18402 100644
--- a/VectoCore/VectoCore/Properties/AssemblyInfo.cs
+++ b/VectoCore/VectoCore/Properties/AssemblyInfo.cs
@@ -55,3 +55,5 @@ using System.Runtime.InteropServices;
 [assembly: System.Runtime.CompilerServices.InternalsVisibleTo("VectoAuxiliariesTests")]
 [assembly: System.Runtime.CompilerServices.InternalsVisibleTo("VECTO3")]
 [assembly: System.Runtime.CompilerServices.InternalsVisibleTo("VECTOMultistage")]
+[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("Vecto3GUI2020Test")]
+
diff --git a/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.2.6_Buses.xsd b/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.2.6_Buses.xsd
index d326dd477692891a60ebeaa3bba600af1ab05c09..6bb0fa8e1e20a64fc317c3642108a725dfca7c93 100644
--- a/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.2.6_Buses.xsd
+++ b/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.2.6_Buses.xsd
@@ -640,4 +640,73 @@
 			<xs:enumeration value="CJ"/>
 		</xs:restriction>
 	</xs:simpleType>
+	<xs:complexType name="ExemptedPrimaryHeavyBusType">
+		<xs:complexContent>
+			<xs:extension base="v2.0:AbstractVehicleDeclarationType">
+				<xs:sequence>
+					<xs:element name="Manufacturer" type="v1.0:ManufacturerType"/>
+					<xs:element name="ManufacturerAddress" type="v1.0:ManufacturerAddressType"/>
+					<xs:element name="Model" type="v1.0:ModelType">
+						<xs:annotation>
+							<xs:documentation>P236</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="VIN" type="v1.0:VINType">
+						<xs:annotation>
+							<xs:documentation>P238</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="Date" type="v1.0:DateTimeWithTimezone">
+						<xs:annotation>
+							<xs:documentation>P239</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="LegislativeCategory" type="v2.6:LegislativeClassDeclarationType">
+						<xs:annotation>
+							<xs:documentation>P251 - enum</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="ChassisConfiguration" type="v2.6:ChassisConfigurationDeclarationType">
+						<xs:annotation>
+							<xs:documentation>P036 - enum</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="AxleConfiguration" type="v2.6:VehicleAxleConfigurationDeclarationType">
+						<xs:annotation>
+							<xs:documentation>P037 - enum</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="Articulated" type="xs:boolean"/>
+					<xs:element name="TechnicalPermissibleMaximumLadenMass" type="v1.0:VehicleGrossVehicleMassType">
+						<xs:annotation>
+							<xs:documentation>P041 - [kg]</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="ZeroEmissionVehicle" type="xs:boolean"/>
+					<xs:element name="SumNetPower" type="xs:int">
+						<xs:annotation>
+							<xs:documentation>P331 - [W]</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="Technology">
+						<xs:annotation>
+							<xs:documentation>P332 - enum</xs:documentation>
+						</xs:annotation>
+						<xs:simpleType>
+							<xs:restriction base="xs:string">
+								<xs:enumeration value="HEV Article 9 exempted"/>
+								<xs:enumeration value="PEV Article 9 exempted"/>
+								<xs:enumeration value="HV Article 9 exempted"/>
+								<xs:enumeration value="Fuel cell vehicle"/>
+								<xs:enumeration value="H2 ICE"/>
+								<xs:enumeration value="Dual fuel vehicle Article 9 exempted"/>
+								<xs:enumeration value="In-motion charging Article 9 exempted"/>
+								<xs:enumeration value="Other technology Article 9 exempted"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:element>
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
 </xs:schema>
diff --git a/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.2.8_Stage.xsd b/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.2.8_Stage.xsd
index cfa6dd856c1bd6b443f310632f6f4318c8e08b48..3665c25e457be7231a3ecb0ce59c46d2f078d6ff 100644
--- a/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.2.8_Stage.xsd
+++ b/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.2.8_Stage.xsd
@@ -203,16 +203,26 @@
 						</xs:annotation>
 					</xs:element>
 					<xs:sequence minOccurs="0">
-						<xs:element name="NumberPassengersLowerDeck" type="v2.8:NumberOfPassengersType">
+						<xs:element name="NumberPassengerSeatsLowerDeck" type="v2.8:NumberOfPassengersType">
 							<xs:annotation>
 								<xs:documentation>P283 - [-]</xs:documentation>
 							</xs:annotation>
 						</xs:element>
-						<xs:element name="NumberPassengersUpperDeck" type="v2.8:NumberOfPassengersType">
+						<xs:element name="NumberPassengersStandingLowerDeck" type="v2.8:NumberOfPassengersType">
+							<xs:annotation>
+								<xs:documentation>P354 - [-]</xs:documentation>
+							</xs:annotation>
+						</xs:element>
+						<xs:element name="NumberPassengerSeatsUpperDeck" type="v2.8:NumberOfPassengersType">
 							<xs:annotation>
 								<xs:documentation>P284 - [-]</xs:documentation>
 							</xs:annotation>
 						</xs:element>
+						<xs:element name="NumberPassengersStandingUpperDeck" type="v2.8:NumberOfPassengersType">
+							<xs:annotation>
+								<xs:documentation>P355 - [-]</xs:documentation>
+							</xs:annotation>
+						</xs:element>
 					</xs:sequence>
 					<xs:element name="BodyworkCode" type="v2.6:VehicleCodeType" minOccurs="0">
 						<xs:annotation>
diff --git a/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.xsd b/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.xsd
index b6bb8bdea932e537c34583f7c489ae9da1ac79a6..96eb24c72b0db3f994d4dd7ec83e86f030635c3b 100644
--- a/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.xsd
+++ b/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.xsd
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- edited with XMLSpy v2016 rel. 2 sp1 (x64) (http://www.altova.com) by Helmut Eichlseder (TU Graz/Inst. f. VKM und THD) -->
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:vectoParam="urn:tugraz:ivt:VectoAPI:ParameterDocumentation" xmlns:vdj="urn:tugraz:ivt:VectoAPI:DeclarationJob" xmlns:vdi="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:vdd="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.2="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.2" xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3" xmlns:ns1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" targetNamespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:ParameterDocumentation ParameterDocumentation.xsd">
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:vectoParam="urn:tugraz:ivt:VectoAPI:ParameterDocumentation" xmlns:vdj="urn:tugraz:ivt:VectoAPI:DeclarationJob" xmlns:vdi="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:vdd="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.2="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.2" xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.8="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" targetNamespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:ParameterDocumentation ParameterDocumentation.xsd">
 	<!-- 
 
          This is a convienience file that imports all supported declaration definitions
diff --git a/VectoCore/VectoCore/Resources/XSD/VectoOutputCustomer.0.8.xsd b/VectoCore/VectoCore/Resources/XSD/VectoOutputCustomer.0.8.xsd
index 4948d5c58ece856340d1771937158c43ad996d79..9a6d3a03c90661ffa6ba274dc15a76de6cc9dbb2 100644
--- a/VectoCore/VectoCore/Resources/XSD/VectoOutputCustomer.0.8.xsd
+++ b/VectoCore/VectoCore/Resources/XSD/VectoOutputCustomer.0.8.xsd
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- edited with XMLSpy v2016 rel. 2 sp1 (x64) (http://www.altova.com) by Helmut Eichlseder (TU Graz/Inst. f. VKM und THD) -->
+<!-- edited with XMLSpy v2021 (x64) (http://www.altova.com) by Markus Quaritsch (Technische UniversitΓ€t Graz) -->
 <!--W3C XML Schema generated by XMLSpy vXMLSpy Professional Edition v2016 rel. 2 (x64) (http://www.altova.com)-->
 <xs:schema xmlns="urn:tugraz:ivt:VectoAPI:CustomerOutput:v0.8" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vdecdef="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:out="urn:tugraz:ivt:VectoAPI:DeclarationOutputDefinitions" targetNamespace="urn:tugraz:ivt:VectoAPI:CustomerOutput:v0.8" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.8">
 	<xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationOutputDefinitions" schemaLocation="VectoOutputDefinitions.xsd"/>
@@ -799,6 +799,149 @@
 			</xs:extension>
 		</xs:complexContent>
 	</xs:complexType>
+	<xs:complexType name="VehicleCompletedExemptedBusType">
+		<xs:complexContent>
+			<xs:extension base="AbstractVehicleType">
+				<xs:sequence>
+					<xs:element name="Model" type="vdecdef:ModelType">
+						<xs:annotation>
+							<xs:documentation>P236 / II.1.1.7</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="PrimaryVehicle">
+						<xs:complexType>
+							<xs:sequence>
+								<xs:element name="Manufacturer" type="vdecdef:ManufacturerType">
+									<xs:annotation>
+										<xs:documentation>P235 / II.1.1.6</xs:documentation>
+									</xs:annotation>
+								</xs:element>
+								<xs:element name="ManufacturerAddress" type="vdecdef:ManufacturerAddressType">
+									<xs:annotation>
+										<xs:documentation>P252 / II.1.1.6</xs:documentation>
+									</xs:annotation>
+								</xs:element>
+								<xs:element name="InputDataSignature" type="vdecdef:SignatureType"/>
+								<xs:element name="ManufacturerRecordSignature" type="vdecdef:SignatureType"/>
+							</xs:sequence>
+						</xs:complexType>
+					</xs:element>
+					<xs:element name="CompletedVehicle">
+						<xs:complexType>
+							<xs:sequence>
+								<xs:element name="Manufacturer" type="vdecdef:ManufacturerType">
+									<xs:annotation>
+										<xs:documentation>P235 / II.1.1.6</xs:documentation>
+									</xs:annotation>
+								</xs:element>
+								<xs:element name="ManufacturerAddress" type="vdecdef:ManufacturerAddressType">
+									<xs:annotation>
+										<xs:documentation>P252 / II.1.1.6</xs:documentation>
+									</xs:annotation>
+								</xs:element>
+							</xs:sequence>
+						</xs:complexType>
+					</xs:element>
+					<xs:element name="VIN" type="vdecdef:VINType">
+						<xs:annotation>
+							<xs:documentation>P238 / II.1.1.1</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="VehicleCategory">
+						<xs:annotation>
+							<xs:documentation>P251 / II.1.1.2</xs:documentation>
+						</xs:annotation>
+						<xs:simpleType>
+							<xs:restriction base="xs:string">
+								<xs:minLength value="1"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:element>
+					<xs:element name="VehicleGroup" type="VehicleGroupType">
+						<xs:annotation>
+							<xs:documentation>VECTO / II.1.1.5</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="ClassBus">
+						<xs:simpleType>
+							<xs:restriction base="xs:string">
+								<xs:minLength value="1"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:element>
+					<xs:element name="VehicleCode">
+						<xs:simpleType>
+							<xs:restriction base="xs:string">
+								<xs:minLength value="1"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:element>
+					<xs:element name="TechnicalPermissibleMaximumLadenMass">
+						<xs:annotation>
+							<xs:documentation>P041 / II.1.1.4</xs:documentation>
+						</xs:annotation>
+						<xs:complexType>
+							<xs:simpleContent>
+								<xs:extension base="xs:double">
+									<xs:attribute name="unit" type="MassUnitType" use="required"/>
+								</xs:extension>
+							</xs:simpleContent>
+						</xs:complexType>
+					</xs:element>
+					<xs:element name="CurbMassChassis">
+						<xs:annotation>
+							<xs:documentation>P038 / II.1.1.8</xs:documentation>
+						</xs:annotation>
+						<xs:complexType>
+							<xs:simpleContent>
+								<xs:extension base="vdecdef:VehicleCurbMassChassisType">
+									<xs:attribute name="unit" type="MassUnitType" use="required"/>
+								</xs:extension>
+							</xs:simpleContent>
+						</xs:complexType>
+					</xs:element>
+					<xs:element name="ZeroEmissionVehicle" type="xs:boolean">
+						<xs:annotation>
+							<xs:documentation>P269 / II.1.1.10</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="AxleConfiguration" type="xs:string">
+						<xs:annotation>
+							<xs:documentation>P037 / II.1.1.3</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="RegisteredPassengers">
+						<xs:simpleType>
+							<xs:restriction base="xs:int">
+								<xs:minInclusive value="0"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:element>
+					<xs:element name="LowEntry" type="xs:boolean"/>
+					<xs:element name="HeightIntegratedBody">
+						<xs:simpleType>
+							<xs:restriction base="vdecdef:Double3">
+								<xs:minExclusive value="0.000"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:element>
+					<xs:element name="SumNetPower">
+						<xs:annotation>
+							<xs:documentation>P250 / II.1.2.1</xs:documentation>
+						</xs:annotation>
+						<xs:complexType>
+							<xs:simpleContent>
+								<xs:extension base="vdecdef:EngineRatedPower">
+									<xs:attribute name="unit" type="PowerUnitType" use="required"/>
+								</xs:extension>
+							</xs:simpleContent>
+						</xs:complexType>
+					</xs:element>
+					<xs:element name="InputDataSignature" type="vdecdef:SignatureType"/>
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
 	<xs:simpleType name="AccelerationUnitType">
 		<xs:restriction base="xs:token">
 			<xs:enumeration value="m/sΒ²"/>
diff --git a/VectoCore/VectoCore/Resources/XSD/VectoOutputDefinitions.xsd b/VectoCore/VectoCore/Resources/XSD/VectoOutputDefinitions.xsd
index c04dc2a75dbde19273614fbe58362afd065ba69f..43f695abf03d9dea35bb2ed2c9c895186263f487 100644
--- a/VectoCore/VectoCore/Resources/XSD/VectoOutputDefinitions.xsd
+++ b/VectoCore/VectoCore/Resources/XSD/VectoOutputDefinitions.xsd
@@ -1,8 +1,35 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- edited with XMLSpy v2016 rel. 2 sp1 (x64) (http://www.altova.com) by Helmut Eichlseder (TU Graz/Inst. f. VKM und THD) -->
+<!-- edited with XMLSpy v2021 (x64) (http://www.altova.com) by Markus Quaritsch (Technische UniversitΓ€t Graz) -->
 <xs:schema xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vdecdef="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:common="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions" xmlns:mrf="urn:tugraz:ivt:VectoAPI:DeclarationOutput" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:ns1="urn:tugraz:ivt:VectoAPI:DeclarationOutputDefinitions" targetNamespace="urn:tugraz:ivt:VectoAPI:DeclarationOutputDefinitions" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.8">
-	<xs:complexType name="AbstractVTPReportDataType" abstract="true"/>
 	<xs:complexType name="AbstractPrimaryVehicleDataPIFType" abstract="true"/>
-	<xs:complexType name="AbstractVectoOutputManufacturerDataType" abstract="true"/>
 	<xs:complexType name="AbstractVectoOutputCustomerDataType" abstract="true"/>
+	<xs:complexType name="AbstractVectoOutputManufacturerDataType" abstract="true"/>
+	<xs:complexType name="AbstractVTPReportDataType" abstract="true"/>
+	<xs:simpleType name="DistanceUnitType">
+		<xs:restriction base="xs:token">
+			<xs:enumeration value="km"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="MassUnitType">
+		<xs:restriction base="xs:token">
+			<xs:enumeration value="kg"/>
+			<xs:enumeration value="t"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="PercentType">
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="%"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="PowerUnitType">
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="kW"/>
+			<xs:enumeration value="W"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="SpeedUnitType">
+		<xs:restriction base="xs:token">
+			<xs:enumeration value="km/h"/>
+		</xs:restriction>
+	</xs:simpleType>
 </xs:schema>
diff --git a/VectoCore/VectoCore/Resources/XSD/VectoOutputManufacturer.0.8.xsd b/VectoCore/VectoCore/Resources/XSD/VectoOutputManufacturer.0.8.xsd
index e1bfb206fc04705a054f38d017b2744360ed5a9c..f8ed77809325131eef95a31b782ff5d3f8862e93 100644
--- a/VectoCore/VectoCore/Resources/XSD/VectoOutputManufacturer.0.8.xsd
+++ b/VectoCore/VectoCore/Resources/XSD/VectoOutputManufacturer.0.8.xsd
@@ -1,11 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- edited with XMLSpy v2016 rel. 2 sp1 (x64) (http://www.altova.com) by Helmut Eichlseder (TU Graz/Inst. f. VKM und THD) -->
+<!-- edited with XMLSpy v2021 (x64) (http://www.altova.com) by Markus Quaritsch (Technische UniversitΓ€t Graz) -->
 <!--W3C XML Schema generated by XMLSpy vXMLSpy Professional Edition v2016 rel. 2 (x64) (http://www.altova.com)-->
-<xs:schema xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.8" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vdecdef="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:common="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions" xmlns:mrf="urn:tugraz:ivt:VectoAPI:DeclarationOutput" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:out="urn:tugraz:ivt:VectoAPI:DeclarationOutputDefinitions" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" targetNamespace="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.8" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.8">
+<xs:schema xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.8" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vdecdef="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:common="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions" xmlns:mrf="urn:tugraz:ivt:VectoAPI:DeclarationOutput" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.8="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" xmlns:out="urn:tugraz:ivt:VectoAPI:DeclarationOutputDefinitions" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" targetNamespace="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.8" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.8">
 	<xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" schemaLocation="VectoDeclarationDefinitions.1.0.xsd"/>
 	<xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" schemaLocation="VectoDeclarationDefinitions.2.0.xsd"/>
 	<xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" schemaLocation="VectoDeclarationDefinitions.2.1.xsd"/>
 	<xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" schemaLocation="VectoDeclarationDefinitions.2.6_Buses.xsd"/>
+	<xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" schemaLocation="VectoDeclarationDefinitions.2.8_Stage.xsd"/>
 	<xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions" schemaLocation="VectoDeclarationDefinitions.xsd"/>
 	<xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationOutputDefinitions" schemaLocation="VectoOutputDefinitions.xsd"/>
 	<xs:complexType name="AbstractComponentsType" abstract="true"/>
@@ -817,6 +818,171 @@
 			</xs:extension>
 		</xs:complexContent>
 	</xs:complexType>
+	<xs:complexType name="VehicleExemptedPrimaryBusType">
+		<xs:complexContent>
+			<xs:extension base="AbstractVehicleType">
+				<xs:sequence>
+					<xs:element name="Manufacturer" type="vdecdef:ManufacturerType">
+						<xs:annotation>
+							<xs:documentation>P235 / I.1.1.1 / #14</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="ManufacturerAddress" type="vdecdef:ManufacturerAddressType">
+						<xs:annotation>
+							<xs:documentation>P252 / I.1.1.1 / #14</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="Model" type="vdecdef:ModelType">
+						<xs:annotation>
+							<xs:documentation>P236 / I.1.1.2</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="VIN" type="vdecdef:VINType">
+						<xs:annotation>
+							<xs:documentation>P238 / I.1.1.3 / #1</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="LegislativeCategory">
+						<xs:annotation>
+							<xs:documentation>P251 / I.1.1.4 / #10</xs:documentation>
+						</xs:annotation>
+						<xs:simpleType>
+							<xs:restriction base="xs:string">
+								<xs:minLength value="1"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:element>
+					<xs:element name="ChassisConfiguration" type="v2.6:ChassisConfigurationDeclarationType">
+						<xs:annotation>
+							<xs:documentation>P036 - enum</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="AxleConfiguration" type="v2.6:VehicleAxleConfigurationDeclarationType">
+						<xs:annotation>
+							<xs:documentation>P037 - enum</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="Articulated" type="xs:boolean"/>
+					<xs:element name="TechnicalPermissibleMaximumLadenMass">
+						<xs:annotation>
+							<xs:documentation>P041 / I.1.1.6 / #12</xs:documentation>
+						</xs:annotation>
+						<xs:complexType>
+							<xs:simpleContent>
+								<xs:extension base="xs:double">
+									<xs:attribute name="unit" type="out:MassUnitType" use="required"/>
+								</xs:extension>
+							</xs:simpleContent>
+						</xs:complexType>
+					</xs:element>
+					<xs:element name="ZeroEmissionVehicle" type="xs:boolean">
+						<xs:annotation>
+							<xs:documentation>P269 / I.1.1.10</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="SumNetPower">
+						<xs:annotation>
+							<xs:documentation>P277</xs:documentation>
+						</xs:annotation>
+						<xs:complexType>
+							<xs:simpleContent>
+								<xs:extension base="xs:double">
+									<xs:attribute name="unit" type="out:PowerUnitType" use="required"/>
+								</xs:extension>
+							</xs:simpleContent>
+						</xs:complexType>
+					</xs:element>
+					<xs:element name="Technology">
+						<xs:annotation>
+							<xs:documentation>P332 - enum</xs:documentation>
+						</xs:annotation>
+						<xs:simpleType>
+							<xs:restriction base="xs:string">
+								<xs:enumeration value="HEV Article 9 exempted"/>
+								<xs:enumeration value="PEV Article 9 exempted"/>
+								<xs:enumeration value="HV Article 9 exempted"/>
+								<xs:enumeration value="Fuel cell vehicle"/>
+								<xs:enumeration value="H2 ICE"/>
+								<xs:enumeration value="Dual fuel vehicle Article 9 exempted"/>
+								<xs:enumeration value="In-motion charging Article 9 exempted"/>
+								<xs:enumeration value="Other technology Article 9 exempted"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:element>
+					<xs:element name="InputDataSignature" type="vdecdef:SignatureType">
+						<xs:annotation>
+							<xs:documentation>I.3.1.3</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="VehicleExemptedCompletedBusType">
+		<xs:complexContent>
+			<xs:extension base="AbstractVehicleType">
+				<xs:sequence>
+					<xs:element name="PrimaryVehicle" type="CompletedVehiclePrimaryVehicleInformationType"/>
+					<xs:element name="CompletedVehicle">
+						<xs:complexType>
+							<xs:sequence>
+								<xs:element name="Model" type="vdecdef:ModelType"/>
+								<xs:element name="Manufacturer" type="vdecdef:ManufacturerType"/>
+								<xs:element name="ManufacturerAddress" type="vdecdef:ManufacturerAddressType"/>
+								<xs:element name="VIN" type="vdecdef:VINType"/>
+								<xs:element name="LegislativeCategory" type="xs:string"/>
+								<xs:element name="VehicleGroup" type="xs:string"/>
+								<xs:element name="ClassBus" type="xs:string"/>
+								<xs:element name="BodyworkCode" type="xs:string"/>
+								<xs:element name="CorrectedActualMass">
+									<xs:complexType>
+										<xs:simpleContent>
+											<xs:extension base="vdecdef:VehicleCurbMassChassisType">
+												<xs:attribute name="unit" type="MassUnitType" use="required"/>
+											</xs:extension>
+										</xs:simpleContent>
+									</xs:complexType>
+								</xs:element>
+								<xs:element name="TechnicalPermissibleMaximumLadenMass">
+									<xs:complexType>
+										<xs:simpleContent>
+											<xs:extension base="vdecdef:Double2">
+												<xs:attribute name="unit" type="MassUnitType" use="required"/>
+											</xs:extension>
+										</xs:simpleContent>
+									</xs:complexType>
+								</xs:element>
+								<xs:element name="NumberPassengersLowerDeck">
+									<xs:simpleType>
+										<xs:restriction base="xs:int">
+											<xs:minInclusive value="0"/>
+										</xs:restriction>
+									</xs:simpleType>
+								</xs:element>
+								<xs:element name="NumberPassengersUpperDeck">
+									<xs:simpleType>
+										<xs:restriction base="xs:int">
+											<xs:minInclusive value="0"/>
+										</xs:restriction>
+									</xs:simpleType>
+								</xs:element>
+								<xs:element name="ZeroEmissionVehicle" type="xs:boolean"/>
+								<xs:element name="LowEntry" type="xs:boolean"/>
+								<xs:element name="HeightIntegratedBody">
+									<xs:simpleType>
+										<xs:restriction base="vdecdef:Double3">
+											<xs:minExclusive value="0.000"/>
+										</xs:restriction>
+									</xs:simpleType>
+								</xs:element>
+								<xs:element name="InputDataSignature" type="vdecdef:SignatureType"/>
+							</xs:sequence>
+						</xs:complexType>
+					</xs:element>
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
 	<xs:complexType name="VehicleCompletedBusType">
 		<xs:complexContent>
 			<xs:extension base="AbstractVehicleType">
@@ -1126,6 +1292,9 @@
 		</xs:sequence>
 	</xs:complexType>
 	<xs:complexType name="VehiclePrimaryBusType">
+		<xs:annotation>
+			<xs:documentation>No longer neede?</xs:documentation>
+		</xs:annotation>
 		<xs:complexContent>
 			<xs:extension base="AbstractVehicleType">
 				<xs:sequence>
diff --git a/VectoCore/VectoCore/Resources/XSD/VectoOutputManufacturer.xsd b/VectoCore/VectoCore/Resources/XSD/VectoOutputManufacturer.xsd
index 1c14db9cfee97f8591d562778b16f074e6af2593..41d4cca59b7dcc43c1f500b7137abc5dd31fab7a 100644
--- a/VectoCore/VectoCore/Resources/XSD/VectoOutputManufacturer.xsd
+++ b/VectoCore/VectoCore/Resources/XSD/VectoOutputManufacturer.xsd
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- edited with XMLSpy v2016 rel. 2 sp1 (x64) (http://www.altova.com) by Helmut Eichlseder (TU Graz/Inst. f. VKM und THD) -->
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mrf="urn:tugraz:ivt:VectoAPI:DeclarationOutput" xmlns:mrf0.5="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.5" xmlns:mrf0.6="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.6" xmlns:mrf0.7="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.7" xmlns:mrf0.8="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.8" xmlns:out="urn:tugraz:ivt:VectoAPI:DeclarationOutputDefinitions" xmlns:common="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" targetNamespace="urn:tugraz:ivt:VectoAPI:DeclarationOutput" elementFormDefault="qualified" attributeFormDefault="unqualified" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:ParameterDocumentation ParameterDocumentation.xsd">
+<!-- edited with XMLSpy v2021 (x64) (http://www.altova.com) by Markus Quaritsch (Technische UniversitΓ€t Graz) -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mrf="urn:tugraz:ivt:VectoAPI:DeclarationOutput" xmlns:mrf0.5="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.5" xmlns:mrf0.6="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.6" xmlns:mrf0.7="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.7" xmlns:mrf0.8="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.8"  xmlns:out="urn:tugraz:ivt:VectoAPI:DeclarationOutputDefinitions" xmlns:common="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:ns1="urn:tugraz:ivt:VectoAPI:DeclarationOutput:DEV:v0.9.1" targetNamespace="urn:tugraz:ivt:VectoAPI:DeclarationOutput" elementFormDefault="qualified" attributeFormDefault="unqualified" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:ParameterDocumentation ParameterDocumentation.xsd">
 	<!-- 
 
          This is a convienience file that imports the schema for all supported versions of manufacturer records file and all supported declaration definitions
diff --git a/VectoCore/VectoCore/Resources/XSD/VectoOutputMultistage.0.1.xsd b/VectoCore/VectoCore/Resources/XSD/VectoOutputMultistage.0.1.xsd
index a85e0519d4d3deebc3ca5035b4cddf972fb61ad2..9204b1753719dd846d8299d925ac3942d71aea0a 100644
--- a/VectoCore/VectoCore/Resources/XSD/VectoOutputMultistage.0.1.xsd
+++ b/VectoCore/VectoCore/Resources/XSD/VectoOutputMultistage.0.1.xsd
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- edited with XMLSpy v2021 (x64) (http://www.altova.com) by Franz Josef Kober (Technische UniversitΓ€t Graz) -->
+<!-- edited with XMLSpy v2021 (x64) (http://www.altova.com) by Markus Quaritsch (Technische UniversitΓ€t Graz) -->
 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:vif="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.4" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.8="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" xmlns:out="urn:tugraz:ivt:VectoAPI:DeclarationOutputDefinitions" xmlns:common="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions" targetNamespace="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" elementFormDefault="qualified" attributeFormDefault="unqualified" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:ParameterDocumentation ParameterDocumentation.xsd">
 	<xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationOutputDefinitions" schemaLocation="VectoOutputDefinitions.xsd"/>
 	<xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions" schemaLocation="VectoDeclarationDefinitions.xsd"/>
@@ -9,47 +9,88 @@
 	<xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3" schemaLocation="VectoDeclarationDefinitions.2.3_DEV.xsd"/>
 	<xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" schemaLocation="VectoDeclarationDefinitions.2.6_Buses.xsd"/>
 	<xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" schemaLocation="VectoDeclarationDefinitions.2.8_Stage.xsd"/>
-	<xs:complexType name="AbstractAxleWheelsComponentPIFType" abstract="true"/>
-	<xs:complexType name="AbstractAxleWheelsDataPIFType" abstract="true"/>
-	<xs:complexType name="AxleWheelsComponentPIFType">
-		<xs:complexContent>
-			<xs:extension base="vif:AbstractAxleWheelsComponentPIFType">
-				<xs:sequence>
-					<xs:element name="Data" type="vif:AbstractAxleWheelsDataPIFType"/>
-				</xs:sequence>
-			</xs:extension>
-		</xs:complexContent>
-	</xs:complexType>
-	<xs:complexType name="AxleWheelsDataPIFType">
-		<xs:annotation>
-			<xs:documentation>Axles &amp; Wheels Component</xs:documentation>
-		</xs:annotation>
-		<xs:complexContent>
-			<xs:extension base="vif:AbstractAxleWheelsDataPIFType">
-				<xs:sequence>
-					<xs:element name="Axles">
-						<xs:complexType>
-							<xs:sequence>
-								<xs:element name="Axle" type="v2.0:AbstractAxleDataDeclarationType" minOccurs="2" maxOccurs="4"/>
-							</xs:sequence>
-						</xs:complexType>
-					</xs:element>
-				</xs:sequence>
-			</xs:extension>
-		</xs:complexContent>
-	</xs:complexType>
 	<xs:element name="VectoOutputMultistage" type="vif:VectoOutputMultistageType">
 		<xs:annotation>
 			<xs:documentation>Comment describing your root element</xs:documentation>
 		</xs:annotation>
 	</xs:element>
 	<xs:complexType name="AbstractAngledriveDataPIFType" abstract="true"/>
+	<xs:complexType name="AbstractAuxiliaryDataPIFType" abstract="true"/>
 	<xs:complexType name="AbstractAxlegearDataPIFType" abstract="true"/>
+	<xs:complexType name="AbstractAxleWheelsComponentPIFType" abstract="true"/>
+	<xs:complexType name="AbstractAxleWheelsDataPIFType" abstract="true"/>
 	<xs:complexType name="AbstractEngineDataPIFType" abstract="true"/>
 	<xs:complexType name="AbstractManufacturingStageDataType" abstract="true">
 		<xs:attribute name="id" type="xs:NCName" use="required"/>
 	</xs:complexType>
-	<xs:complexType name="AbstractAuxiliaryDataPIFType" abstract="true"/>
+	<xs:complexType name="AbstractPrimaryVehicleType" abstract="true"/>
+	<xs:complexType name="AbstractTorqueConverterDataPIFType" abstract="true"/>
+	<xs:complexType name="AbstractTransmissionDataPIFType" abstract="true"/>
+	<xs:complexType name="AbstractTransmissionGearsPIFType" abstract="true"/>
+	<xs:complexType name="AbstractVehicleComponentsPIFType" abstract="true"/>
+	<xs:complexType name="AngledriveDataPIFType">
+		<xs:complexContent>
+			<xs:extension base="vif:AbstractAngledriveDataPIFType">
+				<xs:sequence>
+					<xs:element name="Manufacturer" type="v1.0:ManufacturerType">
+						<xs:annotation>
+							<xs:documentation>P220</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="Model" type="v1.0:ModelType">
+						<xs:annotation>
+							<xs:documentation>P221</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="CertificationMethod" type="v1.0:AngledriveCertificationOptionType">
+						<xs:annotation>
+							<xs:documentation>P258 - [-]</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="CertificationNumber" type="v1.0:CertificationNumberType" minOccurs="0">
+						<xs:annotation>
+							<xs:documentation>P265</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="Date" type="v1.0:DateTimeWithTimezone">
+						<xs:annotation>
+							<xs:documentation>P223</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="AppVersion" type="v1.0:AppVersionType">
+						<xs:annotation>
+							<xs:documentation>P224</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="Ratio"/>
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="AngledrivePIFType">
+		<xs:sequence>
+			<xs:element name="Data" type="vif:AbstractAngledriveDataPIFType"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="ApplicationInformationPrimaryVehicleType">
+		<xs:sequence>
+			<xs:element name="SimulationToolVersion" type="xs:string">
+				<xs:annotation>
+					<xs:documentation>II.2.5</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element name="Date" type="v1.0:DateTimeWithTimezone">
+				<xs:annotation>
+					<xs:documentation>II.2.5</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="AuxiliaryComponentPIFType">
+		<xs:sequence>
+			<xs:element name="Data" type="vif:AbstractAuxiliaryDataPIFType"/>
+		</xs:sequence>
+	</xs:complexType>
 	<xs:complexType name="AuxiliaryDataPIFType">
 		<xs:complexContent>
 			<xs:extension base="vif:AbstractAuxiliaryDataPIFType">
@@ -254,72 +295,9 @@
 			</xs:extension>
 		</xs:complexContent>
 	</xs:complexType>
-	<xs:complexType name="AbstractPrimaryVehicleType" abstract="true"/>
-	<xs:complexType name="AbstractTorqueConverterDataPIFType" abstract="true"/>
-	<xs:complexType name="AbstractTransmissionDataPIFType" abstract="true"/>
-	<xs:complexType name="AbstractTransmissionGearsPIFType" abstract="true"/>
-	<xs:complexType name="AbstractVehicleComponentsPIFType" abstract="true"/>
-	<xs:complexType name="AngledriveDataPIFType">
-		<xs:complexContent>
-			<xs:extension base="vif:AbstractAngledriveDataPIFType">
-				<xs:sequence>
-					<xs:element name="Manufacturer" type="v1.0:ManufacturerType">
-						<xs:annotation>
-							<xs:documentation>P220</xs:documentation>
-						</xs:annotation>
-					</xs:element>
-					<xs:element name="Model" type="v1.0:ModelType">
-						<xs:annotation>
-							<xs:documentation>P221</xs:documentation>
-						</xs:annotation>
-					</xs:element>
-					<xs:element name="CertificationMethod" type="v1.0:AngledriveCertificationOptionType">
-						<xs:annotation>
-							<xs:documentation>P258 - [-]</xs:documentation>
-						</xs:annotation>
-					</xs:element>
-					<xs:element name="CertificationNumber" type="v1.0:CertificationNumberType" minOccurs="0">
-						<xs:annotation>
-							<xs:documentation>P265</xs:documentation>
-						</xs:annotation>
-					</xs:element>
-					<xs:element name="Date" type="v1.0:DateTimeWithTimezone">
-						<xs:annotation>
-							<xs:documentation>P223</xs:documentation>
-						</xs:annotation>
-					</xs:element>
-					<xs:element name="AppVersion" type="v1.0:AppVersionType">
-						<xs:annotation>
-							<xs:documentation>P224</xs:documentation>
-						</xs:annotation>
-					</xs:element>
-					<xs:element name="Ratio"/>
-				</xs:sequence>
-			</xs:extension>
-		</xs:complexContent>
-	</xs:complexType>
-	<xs:complexType name="AngledrivePIFType">
-		<xs:sequence>
-			<xs:element name="Data" type="vif:AbstractAngledriveDataPIFType"/>
-		</xs:sequence>
-	</xs:complexType>
-	<xs:complexType name="ApplicationInformationPrimaryVehicleType">
-		<xs:sequence>
-			<xs:element name="SimulationToolVersion" type="xs:string">
-				<xs:annotation>
-					<xs:documentation>II.2.5</xs:documentation>
-				</xs:annotation>
-			</xs:element>
-			<xs:element name="Date" type="v1.0:DateTimeWithTimezone">
-				<xs:annotation>
-					<xs:documentation>II.2.5</xs:documentation>
-				</xs:annotation>
-			</xs:element>
-		</xs:sequence>
-	</xs:complexType>
-	<xs:complexType name="AuxiliaryComponentPIFType">
+	<xs:complexType name="AxlegearComponentPIFType">
 		<xs:sequence>
-			<xs:element name="Data" type="vif:AbstractAuxiliaryDataPIFType"/>
+			<xs:element name="Data" type="vif:AbstractAxlegearDataPIFType"/>
 		</xs:sequence>
 	</xs:complexType>
 	<xs:complexType name="AxlegearDataPIFType">
@@ -362,10 +340,32 @@
 			</xs:extension>
 		</xs:complexContent>
 	</xs:complexType>
-	<xs:complexType name="AxlegearComponentPIFType">
-		<xs:sequence>
-			<xs:element name="Data" type="vif:AbstractAxlegearDataPIFType"/>
-		</xs:sequence>
+	<xs:complexType name="AxleWheelsComponentPIFType">
+		<xs:complexContent>
+			<xs:extension base="vif:AbstractAxleWheelsComponentPIFType">
+				<xs:sequence>
+					<xs:element name="Data" type="vif:AbstractAxleWheelsDataPIFType"/>
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
+	<xs:complexType name="AxleWheelsDataPIFType">
+		<xs:annotation>
+			<xs:documentation>Axles &amp; Wheels Component</xs:documentation>
+		</xs:annotation>
+		<xs:complexContent>
+			<xs:extension base="vif:AbstractAxleWheelsDataPIFType">
+				<xs:sequence>
+					<xs:element name="Axles">
+						<xs:complexType>
+							<xs:sequence>
+								<xs:element name="Axle" type="v2.0:AbstractAxleDataDeclarationType" minOccurs="2" maxOccurs="4"/>
+							</xs:sequence>
+						</xs:complexType>
+					</xs:element>
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
 	</xs:complexType>
 	<xs:complexType name="BusManufacturingStageDataType">
 		<xs:complexContent>
@@ -551,7 +551,12 @@
 	<xs:complexType name="ResultsPrimaryVehicleType">
 		<xs:sequence>
 			<xs:element name="Status"/>
-			<xs:element name="Result" type="vif:ResultPrimaryVehicleType" maxOccurs="unbounded"/>
+			<xs:choice>
+				<xs:element name="Result" type="vif:ResultPrimaryVehicleType" maxOccurs="unbounded"/>
+				<xs:element name="ExemptedVehicle">
+					<xs:complexType/>
+				</xs:element>
+			</xs:choice>
 		</xs:sequence>
 	</xs:complexType>
 	<xs:complexType name="SimulationParametersType">
@@ -717,6 +722,12 @@
 			</xs:extension>
 		</xs:complexContent>
 	</xs:complexType>
+	<xs:complexType name="VectoOutputMultistageType">
+		<xs:sequence>
+			<xs:element name="PrimaryVehicle" type="vif:PrimaryVehicleType"/>
+			<xs:element name="ManufacturingStage" type="vif:ManufacturingStageType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
 	<xs:complexType name="VehicleComponentsPIFType">
 		<xs:complexContent>
 			<xs:extension base="vif:AbstractVehicleComponentsPIFType">
@@ -732,6 +743,102 @@
 			</xs:extension>
 		</xs:complexContent>
 	</xs:complexType>
+	<xs:complexType name="VehicleExemptedPrimaryBusType">
+		<xs:complexContent>
+			<xs:extension base="vif:AbstractPrimaryVehicleType">
+				<xs:sequence>
+					<xs:element name="ManufacturerPrimaryVehicle" type="v1.0:ManufacturerType">
+						<xs:annotation>
+							<xs:documentation>P235 / I.1.1.1 / #14</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="ManufacturerAddressPrimaryVehicle" type="v1.0:ManufacturerAddressType">
+						<xs:annotation>
+							<xs:documentation>P252 / I.1.1.1 / #14</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="Model" type="v1.0:ModelType">
+						<xs:annotation>
+							<xs:documentation>P236 / I.1.1.2</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="VIN" type="v1.0:VINType">
+						<xs:annotation>
+							<xs:documentation>P238 / I.1.1.3 / #1</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="Date" type="v1.0:DateTimeWithTimezone"/>
+					<xs:element name="LegislativeCategory">
+						<xs:annotation>
+							<xs:documentation>P251 / I.1.1.4 / #10</xs:documentation>
+						</xs:annotation>
+						<xs:simpleType>
+							<xs:restriction base="xs:string">
+								<xs:minLength value="1"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:element>
+					<xs:element name="ChassisConfiguration" type="v2.6:ChassisConfigurationDeclarationType">
+						<xs:annotation>
+							<xs:documentation>P036 - enum</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="AxleConfiguration" type="v2.6:VehicleAxleConfigurationDeclarationType">
+						<xs:annotation>
+							<xs:documentation>P037 - enum</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="Articulated" type="xs:boolean"/>
+					<xs:element name="TechnicalPermissibleMaximumLadenMass">
+						<xs:annotation>
+							<xs:documentation>P041 / I.1.1.6 / #12</xs:documentation>
+						</xs:annotation>
+						<xs:complexType>
+							<xs:simpleContent>
+								<xs:extension base="xs:double">
+									<xs:attribute name="unit" type="out:MassUnitType" use="required"/>
+								</xs:extension>
+							</xs:simpleContent>
+						</xs:complexType>
+					</xs:element>
+					<xs:element name="ZeroEmissionVehicle" type="xs:boolean">
+						<xs:annotation>
+							<xs:documentation>P269 / I.1.1.10</xs:documentation>
+						</xs:annotation>
+					</xs:element>
+					<xs:element name="SumNetPower">
+						<xs:annotation>
+							<xs:documentation>P277</xs:documentation>
+						</xs:annotation>
+						<xs:complexType>
+							<xs:simpleContent>
+								<xs:extension base="xs:double">
+									<xs:attribute name="unit" type="out:PowerUnitType" use="required"/>
+								</xs:extension>
+							</xs:simpleContent>
+						</xs:complexType>
+					</xs:element>
+					<xs:element name="Technology">
+						<xs:annotation>
+							<xs:documentation>P332 - enum</xs:documentation>
+						</xs:annotation>
+						<xs:simpleType>
+							<xs:restriction base="xs:string">
+								<xs:enumeration value="HEV Article 9 exempted"/>
+								<xs:enumeration value="PEV Article 9 exempted"/>
+								<xs:enumeration value="HV Article 9 exempted"/>
+								<xs:enumeration value="Fuel cell vehicle"/>
+								<xs:enumeration value="H2 ICE"/>
+								<xs:enumeration value="Dual fuel vehicle Article 9 exempted"/>
+								<xs:enumeration value="In-motion charging Article 9 exempted"/>
+								<xs:enumeration value="Other technology Article 9 exempted"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:element>
+				</xs:sequence>
+			</xs:extension>
+		</xs:complexContent>
+	</xs:complexType>
 	<xs:complexType name="VehiclePIFType">
 		<xs:complexContent>
 			<xs:extension base="vif:AbstractPrimaryVehicleType">
@@ -805,10 +912,4 @@
 			<xs:enumeration value="Coach"/>
 		</xs:restriction>
 	</xs:simpleType>
-	<xs:complexType name="VectoOutputMultistageType">
-		<xs:sequence>
-			<xs:element name="PrimaryVehicle" type="vif:PrimaryVehicleType"/>
-			<xs:element name="ManufacturingStage" type="vif:ManufacturingStageType" minOccurs="0" maxOccurs="unbounded"/>
-		</xs:sequence>
-	</xs:complexType>
 </xs:schema>
diff --git a/VectoCore/VectoCore/Utils/XMLValidator.cs b/VectoCore/VectoCore/Utils/XMLValidator.cs
index 171ed8772b3baeea63b863f310811f1637771336..302f6860d6df7bf4006af225c50608adc126c7e1 100644
--- a/VectoCore/VectoCore/Utils/XMLValidator.cs
+++ b/VectoCore/VectoCore/Utils/XMLValidator.cs
@@ -30,6 +30,7 @@
 */
 
 using System;
+using System.Collections.Generic;
 using System.IO;
 using System.Xml;
 using System.Xml.Schema;
@@ -44,6 +45,7 @@ namespace TUGraz.VectoCore.Utils
 		private readonly Action<bool> _resultAction;
 		private bool _valid;
 		private  XmlDocument _doc;
+		private List<string> _validationErrors = new List<string>();
 
 		private XMLValidator(Action<bool> resultaction, Action<XmlSeverityType, ValidationEvent> validationErrorAction)
 		{
@@ -70,6 +72,7 @@ namespace TUGraz.VectoCore.Utils
 		public bool ValidateXML(XmlDocumentType docType)
 		{
 			_valid = true;
+			_validationErrors.Clear();
 			if (_doc.DocumentElement == null) {
 				throw new Exception("empty XML document");
 			}
@@ -91,11 +94,14 @@ namespace TUGraz.VectoCore.Utils
 		{
 			_resultAction(false);
 			_valid = false;
-			ValidationError = args?.Message ?? "no schema found";
+			_validationErrors.Add(args?.Message ?? "no schema found");
 			_validationErrorAction(args?.Severity ?? XmlSeverityType.Error, new ValidationEvent { ValidationEventArgs = args });
 		}
 
-		public string ValidationError { get; private set; }
+		public string ValidationError
+		{
+			get { return string.Join(Environment.NewLine, _validationErrors); }
+		}
 
 		public static void CallBackExceptionOnError(XmlSeverityType severity, ValidationEvent evt)
 		{
diff --git a/VectoCore/VectoCore/VectoCore.csproj b/VectoCore/VectoCore/VectoCore.csproj
index ec72baab2cb4291565438bdda9f654a01dfb5ed4..206f76063133f7b17977ca1e42694f8cc6ab3c5b 100644
--- a/VectoCore/VectoCore/VectoCore.csproj
+++ b/VectoCore/VectoCore/VectoCore.csproj
@@ -446,8 +446,14 @@
     <Compile Include="OutputData\FileIO\FileOutputVIFWriter.cs" />
     <Compile Include="OutputData\FileIO\JSONFileWriter.cs" />
     <Compile Include="OutputData\ModalDataPostprocessingCorrection.cs" />
-    <Compile Include="OutputData\XML\AbstractXMLManufacturerReport.cs" />
+    <Compile Include="OutputData\XML\DeclarationReports\CustomerInformationFile\IXMLCustomerReport.cs" />
+    <Compile Include="OutputData\XML\DeclarationReports\CustomerInformationFile\XMLCustomerReportExemptedCompletedBus.cs" />
+    <Compile Include="OutputData\XML\DeclarationReports\ManufacturerReport\AbstractXMLManufacturerReport.cs" />
     <Compile Include="OutputData\XML\DeclarationJobs\XMLCompletedBusWriter.cs" />
+    <Compile Include="OutputData\XML\DeclarationReports\ManufacturerReport\IXMLManufacturerReport.cs" />
+    <Compile Include="OutputData\XML\DeclarationReports\ManufacturerReport\XMLManufacturerReportExemptedCompletedBus.cs" />
+    <Compile Include="OutputData\XML\DeclarationReports\VehicleInformationFile\IXMLMultistageReport.cs" />
+    <Compile Include="OutputData\XML\DeclarationReports\VehicleInformationFile\IXMLPrimaryVehicleReport.cs" />
     <Compile Include="OutputData\XML\Engineering\Factory\EngineeringWriterFactory.cs" />
     <Compile Include="OutputData\XML\Engineering\Factory\IEngineeringWriterInjectFactory.cs" />
     <Compile Include="OutputData\XML\Engineering\Interfaces\IXMLEngineeringComponentWriter.cs" />
@@ -482,15 +488,17 @@
     <Compile Include="OutputData\XML\Engineering\XMLEngineeringWriter.cs" />
     <Compile Include="OutputData\XML\Engineering\XMLEngineeringWriterInjectModule.cs" />
     <Compile Include="OutputData\XML\Engineering\XMLWriterMapping.cs" />
-    <Compile Include="OutputData\XML\XMLCustomerReportCompletedBus.cs" />
+    <Compile Include="OutputData\XML\DeclarationReports\CustomerInformationFile\XMLCustomerReportCompletedBus.cs" />
     <Compile Include="OutputData\XML\XMLDeclarationReportCompletedVehicle.cs" />
     <Compile Include="OutputData\XML\XMLDeclarationReportMultistageBusVehicle.cs" />
     <Compile Include="OutputData\XML\XMLDeclarationReportPrimaryVehicle.cs" />
-    <Compile Include="OutputData\XML\XMLManufacturerReportCompletedBus.cs" />
-    <Compile Include="OutputData\XML\XMLManufacturerReportExemptedTruck.cs" />
-    <Compile Include="OutputData\XML\XMLManufacturerReportPrimaryBus.cs" />
-    <Compile Include="OutputData\XML\XMLMultistageBusReport.cs" />
-    <Compile Include="OutputData\XML\XMLPrimaryVehicleReport.cs" />
+    <Compile Include="OutputData\XML\DeclarationReports\ManufacturerReport\XMLManufacturerReportCompletedBus.cs" />
+    <Compile Include="OutputData\XML\DeclarationReports\ManufacturerReport\XMLManufacturerReportExemptedTruck.cs" />
+    <Compile Include="OutputData\XML\DeclarationReports\ManufacturerReport\XMLManufacturerReportExeptedPrimaryBus.cs" />
+    <Compile Include="OutputData\XML\DeclarationReports\ManufacturerReport\XMLManufacturerReportPrimaryBus.cs" />
+    <Compile Include="OutputData\XML\DeclarationReports\VehicleInformationFile\XMLExemptedPrimaryBusVehicleReport.cs" />
+    <Compile Include="OutputData\XML\DeclarationReports\VehicleInformationFile\XMLMultistageBusReport.cs" />
+    <Compile Include="OutputData\XML\DeclarationReports\VehicleInformationFile\XMLPrimaryBusVehicleReport.cs" />
     <Compile Include="Utils\Ninject\UseFirstArgumentAsInstanceProvider.cs" />
     <Compile Include="InputData\FileIO\XML\Declaration\NinjectModules\XMLDeclarationReaderInjectModule.cs" />
     <Compile Include="InputData\FileIO\XML\Declaration\DataProvider\XMLDeclarationVehicleDataProvider.cs" />
@@ -579,17 +587,16 @@
     <Compile Include="Models\SimulationComponent\Impl\VTPCycle.cs" />
     <Compile Include="Models\Simulation\Data\ShiftStrategyParameters.cs" />
     <Compile Include="Models\Simulation\Impl\ExemptedRun.cs" />
-    <Compile Include="OutputData\XML\XMLMonitoringReport.cs" />
-    <Compile Include="OutputData\XML\XMLVTPReport.cs" />
+    <Compile Include="OutputData\XML\DeclarationReports\VTPReport\XMLVTPReport.cs" />
     <Compile Include="OutputData\VTPReport.cs" />
     <Compile Include="OutputData\ModFilter\ActualModalDataFilter.cs" />
     <Compile Include="OutputData\ModFilter\ModalData1HzFilter.cs" />
     <Compile Include="OutputData\XML\AbstractXMLWriter.cs" />
     <Compile Include="OutputData\XML\AttributeMappings.cs" />
-    <Compile Include="OutputData\XML\XMLCustomerReport.cs" />
+    <Compile Include="OutputData\XML\DeclarationReports\CustomerInformationFile\XMLCustomerReport.cs" />
     <Compile Include="OutputData\XML\XMLDeclarationReport.cs" />
     <Compile Include="OutputData\XML\XMLDeclarationWriter.cs" />
-    <Compile Include="OutputData\XML\XMLManufacturerReport.cs" />
+    <Compile Include="OutputData\XML\DeclarationReports\ManufacturerReport\XMLManufacturerReportTruck.cs" />
     <Compile Include="Utils\Interpolate2D.cs" />
     <Compile Include="Utils\DataIntegrityHelper.cs" />
     <Compile Include="Utils\MeanShiftClustering.cs" />
diff --git a/VectoCore/VectoCoreTest/Integration/CompletedBus/CompletedBusFactorMethodTest.cs b/VectoCore/VectoCoreTest/Integration/CompletedBus/CompletedBusFactorMethodTest.cs
index 52884da0ee1b4a13163a621dff94d11a1cb5e533..26720ddfeabce3d3bbcd7e2568ba875459fbd0c3 100644
--- a/VectoCore/VectoCoreTest/Integration/CompletedBus/CompletedBusFactorMethodTest.cs
+++ b/VectoCore/VectoCoreTest/Integration/CompletedBus/CompletedBusFactorMethodTest.cs
@@ -5,6 +5,7 @@ using System.Linq;
 using System.Reflection;
 using System.Runtime.InteropServices.WindowsRuntime;
 using System.Xml;
+using System.Xml.Linq;
 using Newtonsoft.Json;
 using Newtonsoft.Json.Linq;
 using Ninject;
@@ -1132,6 +1133,146 @@ namespace TUGraz.VectoCore.Tests.Integration.CompletedBus
 			//Assert.IsTrue(jobContainer.Runs.All(r => r.Success), String.Concat<Exception>(jobContainer.Runs.Select(r => r.ExecException)));
 		}
 
+		private const string JobGrp32b = @"TestData\Integration\Buses\FactorMethod\CompletedBus_41-32b_ES-AUX.vecto";
+
+		[
+		TestCase(JobGrp32b, 2, 20, 5, 17, 9, 51, TestName = "CompleteBus PassengerCount IU specific RL"),
+		TestCase(JobGrp32b, 3, 20, 5, 17, 9, 49.572, TestName = "CompleteBus PassengerCount IU generic RL"),
+		TestCase(JobGrp32b, 6, 20, 5, 17, 9, 37, TestName = "CompleteBus PassengerCount CO specific RL"),
+		TestCase(JobGrp32b, 7, 20, 5, 17, 9, 38.556, TestName = "CompleteBus PassengerCount CO generic RL"),
+		]
+		public void TestPassengerCountAllocationCompletedBus(string jobName, int runIdx, int pSeatsLower, int pStdLower, int pSeatsUpper, int pStdUpper,  double expectedPassengers)
+		{
+			var inputData = CompletedVIF.CreateCompletedVifXML(
+				JSONInputDataFactory.ReadJsonJob(JobFile_Group41) as JSONInputDataCompletedBusFactorMethodV7,
+				xmlInputReader);
+
+			var modified = GetModifiedXML(inputData, pSeatsLower, pStdLower, pSeatsUpper, pStdUpper);
+			var completedVif = xmlInputReader.CreateDeclaration(XmlReader.Create(new StringReader(modified)));
+			
+			var writer = new FileOutputWriter("SanityCheckTest");
+			//var inputData = new MockCompletedBusInputData(XmlReader.Create(PifFile_33_34), modified);
+			//var inputData = new MockCompletedBusInputData(modified);
+
+			var factory = new SimulatorFactory(ExecutionMode.Declaration, new XMLDeclarationVIFInputData(completedVif as IMultistageBusInputDataProvider, null), writer) {
+				WriteModalResults = true,
+				Validate = false
+			};
+
+			var runs = factory.DataReader.NextRun().ToList();
+			var run = runs[runIdx];
+			
+			Assert.NotNull(run.VehicleData.PassengerCount);
+			Assert.AreEqual(expectedPassengers, run.VehicleData.PassengerCount.Value, 1e-3);
+
+			var ssmInputs = run.BusAuxiliaries.SSMInputs as ISSMDeclarationInputs;
+			Assert.NotNull(ssmInputs);
+			Assert.AreEqual(expectedPassengers + 1, ssmInputs.NumberOfPassengers, 1e-3); // adding driver for SSM
+		}
+
+		private const string PrimaryGrp41 = @"TestData\Integration\Buses\FactorMethod\primary_heavyBus group41_nonSmart.xml";
+		private const string CompletedGrp41_32b = @"TestData\Integration\Buses\FactorMethod\vecto_vehicle-completed_heavyBus_41.xml";
+
+		[
+			TestCase(PrimaryGrp41, CompletedGrp41_32b, 1, 20, 5, 17, 9, 51, TestName = "SingleBus PassengerCount IU RL"),
+			TestCase(PrimaryGrp41, CompletedGrp41_32b, 3, 20, 5, 17, 9, 37, TestName = "SingleBus PassengerCount CO RL"),
+		]
+		public void TestPassengerCountAllocationSingleBus(string primaryFile, string completedFile, int runIdx, int pSeatsLower, int pStdLower, int pSeatsUpper, int pStdUpper, double expectedPassengers)
+		{
+			var primary = xmlInputReader.CreateDeclaration(primaryFile);
+
+			var completedXml = new XmlDocument();
+			completedXml.Load(completedFile);
+			var modified = GetModifiedXML(completedXml.OuterXml, pSeatsLower, pStdLower, pSeatsUpper, pStdUpper, VehicleCode.CB);
+			var modifiedCompleted = xmlInputReader.CreateDeclaration(XmlReader.Create(new StringReader(modified)));
+
+			var inputData = new MockSingleBusInputDataProvider(primary.JobInputData.Vehicle, modifiedCompleted.JobInputData.Vehicle);
+			var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, null) {
+				WriteModalResults = true,
+				//ActualModalData = true,
+				Validate = false
+			};
+			var runs = factory.DataReader.NextRun().ToList();
+			var run = runs[runIdx];
+
+			Assert.NotNull(run.VehicleData.PassengerCount);
+			Assert.AreEqual(expectedPassengers, run.VehicleData.PassengerCount.Value, 1e-3);
+
+			var ssmInputs = run.BusAuxiliaries.SSMInputs as ISSMDeclarationInputs;
+			Assert.NotNull(ssmInputs);
+			Assert.AreEqual(expectedPassengers + 1, ssmInputs.NumberOfPassengers, 1e-3); // adding driver for SSM
+		}
+
+		public class MockSingleBusInputDataProvider : ISingleBusInputDataProvider, IDeclarationJobInputData
+		{
+			public MockSingleBusInputDataProvider(IVehicleDeclarationInputData primary, IVehicleDeclarationInputData completed)
+			{
+				PrimaryVehicle = primary;
+				CompletedVehicle = completed;
+			}
+
+			#region Implementation of IInputDataProvider
+
+			public DataSource DataSource { get; }
+
+			#endregion
+
+			#region Implementation of IDeclarationInputDataProvider
+
+			public IDeclarationJobInputData JobInputData => this;
+			public IPrimaryVehicleInformationInputDataProvider PrimaryVehicleData { get; }
+			public XElement XMLHash { get; }
+
+			#endregion
+
+			#region Implementation of ISingleBusInputDataProvider
+
+			public IVehicleDeclarationInputData PrimaryVehicle { get; set; }
+			public IVehicleDeclarationInputData CompletedVehicle { get; set; }
+
+			#endregion
+
+			#region Implementation of IDeclarationJobInputData
+
+			public bool SavedInDeclarationMode => true;
+			public IVehicleDeclarationInputData Vehicle => PrimaryVehicle;
+			public string JobName { get; }
+			public string ShiftStrategy => "";
+			public VectoSimulationJobType JobType => VectoSimulationJobType.ConventionalVehicle;
+
+			#endregion
+		}
+
+		private string GetModifiedXML(string vifXML, int pSeatsLower, int pStdLower, int pSeatsUpper, int pStdUpper,
+			VehicleCode? vehicleCode = null)
+		{
+			var vif = new XmlDocument();
+			vif.LoadXml(vifXML);
+
+			var pSeatsLowerNode = vif.SelectSingleNode("//*[local-name()='NumberPassengerSeatsLowerDeck']");
+			pSeatsLowerNode.InnerText = pSeatsLower.ToString();
+
+			var pStdLowerNode = vif.SelectSingleNode("//*[local-name()='NumberPassengersStandingLowerDeck']");
+			pStdLowerNode.InnerText = pStdLower.ToString();
+
+			var pSeatsUpperNode = vif.SelectSingleNode("//*[local-name()='NumberPassengerSeatsUpperDeck']");
+			pSeatsUpperNode.InnerText = pSeatsUpper.ToString();
+
+			var pStdUpperNode = vif.SelectSingleNode("//*[local-name()='NumberPassengersStandingUpperDeck']");
+			pStdUpperNode.InnerText = pStdUpper.ToString();
+
+			if (vehicleCode != null) {
+				var bodyWorkNode = vif.SelectSingleNode("//*[local-name()='BodyworkCode']");
+				bodyWorkNode.InnerText = vehicleCode.ToXMLFormat();
+
+			}
+
+			return vif.OuterXml;
+
+			
+		}
+
+
 		//[TestCase(@"E:\QUAM\tmp\primary_heavyBus group 42_SmartPS_spec engine map.xml", 0),]
 		public void TestRunPrimaryBusSimulationSngle(string jobName, int runIdx)
 		{
diff --git a/VectoCore/VectoCoreTest/Integration/Declaration/ExemptedVehicleTest.cs b/VectoCore/VectoCoreTest/Integration/Declaration/ExemptedVehicleTest.cs
index f487abd323e5431443375014ac40dbf5f458387b..eb012863b0f5d54765940435471c0296c7b2eff2 100644
--- a/VectoCore/VectoCoreTest/Integration/Declaration/ExemptedVehicleTest.cs
+++ b/VectoCore/VectoCoreTest/Integration/Declaration/ExemptedVehicleTest.cs
@@ -58,6 +58,8 @@ namespace TUGraz.VectoCore.Tests.Integration
 	{
 		const string ExemptedVehicle = @"Testdata\Integration\DeclarationMode\ExemptedVehicle\vecto_vehicle-sample_exempted.xml";
 
+		const string ExemptedPrimaryBus = @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\exempted_primary_heavyBus.xml";
+
 		protected IXMLInputDataReader xmlInputReader;
 		private IKernel _kernel;
 
@@ -287,5 +289,57 @@ namespace TUGraz.VectoCore.Tests.Integration
 				manager);
 			hybridNode.SetValue(hybrid.ToString().ToLowerInvariant());
 		}
+
+		[TestCase(ExemptedPrimaryBus, 1)]
+		public void TestSimulationExemptedPrimaryBusVehicle(string filename, int numRuns)
+		{
+			var writer = new FileOutputWriter(filename);
+
+			var primaryReportFile = writer.XMLPrimaryVehicleReportName;
+			var manufactuerFile = writer.XMLFullReportName;
+			var monitoringFile = writer.XMLMonitoringReportName;
+			if (File.Exists(primaryReportFile)) {
+				File.Delete(primaryReportFile);
+			}
+			if (File.Exists(manufactuerFile)) {
+				File.Delete(manufactuerFile);
+			}
+			if (File.Exists(monitoringFile)) {
+				File.Delete(monitoringFile);
+			}
+
+			var inputData = xmlInputReader.CreateDeclaration(filename);
+
+			var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer) {
+				WriteModalResults = true,
+				ActualModalData = true
+			};
+			var jobContainer = new JobContainer(new MockSumWriter());
+
+			var runs = factory.SimulationRuns().ToList();
+			Assert.AreEqual(numRuns, runs.Count);
+			foreach (var run in runs) {
+				jobContainer.AddRun(run);
+			}
+			//jobContainer.AddRuns(factory);
+
+			jobContainer.Execute();
+			jobContainer.WaitFinished();
+			var progress = jobContainer.GetProgress();
+			Assert.IsTrue(progress.All(r => r.Value.Success), string.Concat<Exception>(progress.Select(r => r.Value.Error)));
+
+			Assert.IsTrue(File.Exists(manufactuerFile));
+			Assert.IsTrue(File.Exists(primaryReportFile));
+
+			var validator = new XMLValidator(XmlReader.Create(manufactuerFile));
+			Assert.IsTrue(validator.ValidateXML(XmlDocumentType.ManufacturerReport), validator.ValidationError);
+
+			var val2 = new XMLValidator(XmlReader.Create(primaryReportFile));
+			Assert.IsTrue(val2.ValidateXML(XmlDocumentType.MultistageOutputData), val2.ValidationError);
+
+			//var val3 = new XMLValidator(XmlReader.Create(monitoringFile));
+			//Assert.IsTrue(val3.ValidateXML(XmlDocumentType.MonitoringReport), val3.ValidationError);
+
+		}
 	}
 }
diff --git a/VectoCore/VectoCoreTest/Integration/Multistage/MultistageVehicleTest.cs b/VectoCore/VectoCoreTest/Integration/Multistage/MultistageVehicleTest.cs
index 30eff5400243d28de14e78fa728cacdc65041640..7197eca49cd5e17e161245f86f5f738f6ab89e0e 100644
--- a/VectoCore/VectoCoreTest/Integration/Multistage/MultistageVehicleTest.cs
+++ b/VectoCore/VectoCoreTest/Integration/Multistage/MultistageVehicleTest.cs
@@ -20,6 +20,7 @@ using TUGraz.VectoCore.Models.Simulation.Impl;
 using TUGraz.VectoCore.OutputData;
 using TUGraz.VectoCore.OutputData.FileIO;
 using TUGraz.VectoCore.OutputData.XML;
+using TUGraz.VectoCore.Tests.Integration.Declaration;
 using TUGraz.VectoCore.Tests.Models.Simulation;
 using TUGraz.VectoCore.Utils;
 
@@ -42,6 +43,10 @@ namespace TUGraz.VectoCore.Tests.Integration.Multistage
 		const string InputFilePathGroup41 = InputDirPath + "vecto_vehicle-stage_input_full-sample_group41.xml";
 		const string VIFInputFileGroup41 = VIFDirPath + "vecto_multistage_primary_vehicle_stage_2_3_group41.xml";
 
+		const string VIFExemptedPrimaryBus = VIFDirPath + "exempted_primary_heavyBus.VIF.xml";
+		private const string ExepmtedCompletedBusInput = InputDirPath + "vecto_vehicle-exempted_input_full-sample.xml";
+
+
 		const string vifResult = VIFDirPath + "vif_vehicle-sample.VIF_Report_3.xml";
 
 
@@ -235,7 +240,7 @@ namespace TUGraz.VectoCore.Tests.Integration.Multistage
 			Assert.AreEqual("Some Manufacturer", data.Vehicle.Manufacturer);
 			Assert.AreEqual("Some Manufacturer Address", data.Vehicle.ManufacturerAddress);
 			Assert.AreEqual("VEH-1234567890", data.Vehicle.VIN);
-			Assert.AreEqual(DateTime.Parse("2020-01-09T11:00:00Z").ToUniversalTime(), data.Vehicle.Date);
+			Assert.AreEqual(DateTime.Parse("2021-06-30T22:00:00Z").ToUniversalTime(), data.Vehicle.Date);
 			Assert.AreEqual("Sample Bus Model", data.Vehicle.Model);
 			Assert.AreEqual(LegislativeClass.M3, data.Vehicle.LegislativeClass);
 			Assert.AreEqual(500, data.Vehicle.CurbMassChassis.Value());
@@ -327,7 +332,7 @@ namespace TUGraz.VectoCore.Tests.Integration.Multistage
 			var vifDataProvider = xmlInputReader.Create(vifReader) as IMultistageBusInputDataProvider;
 
 			var inputData = new XMLDeclarationVIFInputData(vifDataProvider, null);
-			var writer = new FileOutputWriter("vif_vehicle-sample_test.xml");
+			var writer = new MockDeclarationWriter("vif_vehicle-sample_test.xml");
 			
 
 			var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer)
@@ -347,6 +352,35 @@ namespace TUGraz.VectoCore.Tests.Integration.Multistage
 			Assert.IsTrue(jobContainer.Runs.All(r => r.Success), string.Concat(jobContainer.Runs.Select(r => r.ExecException)));
 		}
 
+		[TestCase()]
+		public void TestMultistageExemptedSimulationRun()
+		{
+			TestSimulationMultistageVehicle(VIFExemptedPrimaryBus, ExepmtedCompletedBusInput, 1);
+
+			var vifReader = XmlReader.Create(_generatedVIFFilepath);
+			var vifDataProvider = xmlInputReader.Create(vifReader) as IMultistageBusInputDataProvider;
+
+			var inputData = new XMLDeclarationVIFInputData(vifDataProvider, null);
+			var writer = new FileOutputWriter("vif_vehicle-sample_test.xml");
+
+
+			var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer) {
+				WriteModalResults = true,
+				//ActualModalData = true,
+				Validate = false
+			};
+
+			var jobContainer = new JobContainer(new SummaryDataContainer(writer));
+			jobContainer.AddRuns(factory);
+
+			jobContainer.Execute();
+			jobContainer.WaitFinished();
+			var progress = jobContainer.GetProgress();
+			Assert.IsTrue(progress.All(r => r.Value.Success), string.Concat<Exception>(progress.Select(r => r.Value.Error)));
+			Assert.IsTrue(jobContainer.Runs.All(r => r.Success), string.Concat<Exception>(jobContainer.Runs.Select(r => r.ExecException)));
+		}
+
+
 		[NonParallelizable]
 		[TestCase(PrimaryBus, TestName = "Multistage Write VIF Primary"),
 		TestCase(PrimaryBus_SmartES, TestName = "Multistage Write VIF Primary SmartES")]
@@ -354,7 +388,7 @@ namespace TUGraz.VectoCore.Tests.Integration.Multistage
 		{
 			var inputData = xmlInputReader.Create(primaryFile);
 
-			var writer = new FileOutputWriter("vif_writing_test.xml");
+			var writer = new MockDeclarationWriter("vif_writing_test.xml");
 			
 			//var xmlreport = new XMLDeclarationReportMultistageBusVehicle(writer);
 			var xmlreport = new XMLDeclarationReportPrimaryVehicle(writer);
@@ -377,7 +411,7 @@ namespace TUGraz.VectoCore.Tests.Integration.Multistage
 		{
 			var inputData = xmlInputReader.Create(primaryFile);
 
-			var writer = new FileOutputWriter(outputFile);
+			var writer = new MockDeclarationWriter(outputFile);
 			var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer)
 			{
 				WriteModalResults = true,
@@ -451,7 +485,7 @@ namespace TUGraz.VectoCore.Tests.Integration.Multistage
 			Assert.AreEqual("Generic Model", vehicleData.Model);
 			Assert.AreEqual("VEH-1234567890", vehicleData.VIN);
 			Assert.AreEqual(DateTime.Parse("2017-02-15T11:00:00Z").ToUniversalTime(), vehicleData.Date);
-			Assert.AreEqual("M3", vehicleData.LegislativeCategory);
+			Assert.AreEqual(LegislativeClass.M3, vehicleData.LegislativeClass);
 			Assert.AreEqual("Bus", vehicleData.VehicleCategory.ToXMLFormat());
 			Assert.AreEqual(AxleConfiguration.AxleConfig_4x2, vehicleData.AxleConfiguration);
 			Assert.AreEqual(false, vehicleData.Articulated);
diff --git a/VectoCore/VectoCoreTest/Models/EngineeringMode/EngineeringModeBusAuxTest.cs b/VectoCore/VectoCoreTest/Models/EngineeringMode/EngineeringModeBusAuxTest.cs
index 5f1214d614bfb02f30d3f3e5fd877d59327d5943..ef74191115d8a0df945c2abd0c8fbd4e0fe6e092 100644
--- a/VectoCore/VectoCoreTest/Models/EngineeringMode/EngineeringModeBusAuxTest.cs
+++ b/VectoCore/VectoCoreTest/Models/EngineeringMode/EngineeringModeBusAuxTest.cs
@@ -221,7 +221,7 @@ namespace TUGraz.VectoCore.Tests.Models.EngineeringMode
 			// no HEV
 			Assert.Null(container.Components.FirstOrDefault(x => x is DCDCConverter));
 			Assert.Null(container.Components.FirstOrDefault(x => x is ElectricSystem));
-			Assert.Null(container.Components.FirstOrDefault(x => x is Battery));
+			Assert.Null(container.Components.FirstOrDefault(x => x is BatterySystem));
 
 			Assert.AreEqual(AlternatorType.Conventional, container.RunData.BusAuxiliaries.ElectricalUserInputsConfig.AlternatorType);
 			Assert.IsFalse(container.RunData.BusAuxiliaries.ElectricalUserInputsConfig.ConnectESToREESS);
@@ -289,7 +289,7 @@ namespace TUGraz.VectoCore.Tests.Models.EngineeringMode
 			// no HEV
 			Assert.Null(container.Components.FirstOrDefault(x => x is DCDCConverter));
 			Assert.Null(container.Components.FirstOrDefault(x => x is ElectricSystem));
-			Assert.Null(container.Components.FirstOrDefault(x => x is Battery));
+			Assert.Null(container.Components.FirstOrDefault(x => x is BatterySystem));
 
 			Assert.AreEqual(AlternatorType.Smart, container.RunData.BusAuxiliaries.ElectricalUserInputsConfig.AlternatorType);
 			Assert.IsFalse(container.RunData.BusAuxiliaries.ElectricalUserInputsConfig.ConnectESToREESS);
@@ -356,7 +356,7 @@ namespace TUGraz.VectoCore.Tests.Models.EngineeringMode
 			// HEV
 			Assert.NotNull(container.Components.FirstOrDefault(x => x is DCDCConverter));
 			Assert.NotNull(container.Components.FirstOrDefault(x => x is ElectricSystem));
-			Assert.NotNull(container.Components.FirstOrDefault(x => x is Battery));
+			Assert.NotNull(container.Components.FirstOrDefault(x => x is BatterySystem));
 
 			Assert.AreEqual(AlternatorType.None, container.RunData.BusAuxiliaries.ElectricalUserInputsConfig.AlternatorType);
 			Assert.IsTrue(container.RunData.BusAuxiliaries.ElectricalUserInputsConfig.ConnectESToREESS);
@@ -425,7 +425,7 @@ namespace TUGraz.VectoCore.Tests.Models.EngineeringMode
 			// HEV
 			Assert.NotNull(container.Components.FirstOrDefault(x => x is DCDCConverter));
 			Assert.NotNull(container.Components.FirstOrDefault(x => x is ElectricSystem));
-			Assert.NotNull(container.Components.FirstOrDefault(x => x is Battery));
+			Assert.NotNull(container.Components.FirstOrDefault(x => x is BatterySystem));
 
 			// simulated with alternator type NONE!
 			Assert.AreEqual(AlternatorType.None, container.RunData.BusAuxiliaries.ElectricalUserInputsConfig.AlternatorType);
@@ -474,7 +474,7 @@ namespace TUGraz.VectoCore.Tests.Models.EngineeringMode
 			// HEV, no DCDC converter
 			Assert.Null(container.Components.FirstOrDefault(x => x is DCDCConverter));
 			Assert.NotNull(container.Components.FirstOrDefault(x => x is ElectricSystem));
-			Assert.NotNull(container.Components.FirstOrDefault(x => x is Battery));
+			Assert.NotNull(container.Components.FirstOrDefault(x => x is BatterySystem));
 
 			// simulated with alternator type NONE!
 			Assert.AreEqual(AlternatorType.Conventional, container.RunData.BusAuxiliaries.ElectricalUserInputsConfig.AlternatorType);
@@ -612,7 +612,7 @@ namespace TUGraz.VectoCore.Tests.Models.EngineeringMode
 			// HEV, no DCDC converter
 			Assert.NotNull(container.Components.FirstOrDefault(x => x is DCDCConverter));
 			Assert.NotNull(container.Components.FirstOrDefault(x => x is ElectricSystem));
-			Assert.NotNull(container.Components.FirstOrDefault(x => x is Battery));
+			Assert.NotNull(container.Components.FirstOrDefault(x => x is BatterySystem));
 
 			// simulated with alternator type NONE!
 			Assert.AreEqual(AlternatorType.Smart, container.RunData.BusAuxiliaries.ElectricalUserInputsConfig.AlternatorType);
@@ -704,7 +704,7 @@ namespace TUGraz.VectoCore.Tests.Models.EngineeringMode
 			// HEV
 			Assert.Null(container.Components.FirstOrDefault(x => x is DCDCConverter));
 			Assert.NotNull(container.Components.FirstOrDefault(x => x is ElectricSystem));
-			Assert.NotNull(container.Components.FirstOrDefault(x => x is Battery));
+			Assert.NotNull(container.Components.FirstOrDefault(x => x is BatterySystem));
 
 			// simulated with alternator type NONE!
 			Assert.AreEqual(AlternatorType.Smart, container.RunData.BusAuxiliaries.ElectricalUserInputsConfig.AlternatorType);
@@ -900,12 +900,12 @@ namespace TUGraz.VectoCore.Tests.Models.EngineeringMode
 							MaxSOC = REESS_MaxSoC,
 							SOCMap = BatterySOCReader.Create("SOC,V\n0,590\n100,658".ToStream()),
 							InternalResistance =
-								BatteryInternalResistanceReader.Create("SoC, Ri\n0,0.02\n100,0.02".ToStream(),
-									packCount),
+								BatteryInternalResistanceReader.Create("SoC, Ri\n0,0.02\n100,0.02".ToStream(), packCount),
 							MaxCurrent = BatteryMaxCurrentReader.Create(
 								"SOC, I_charge, I_discharge\n0, 375, 573\n100, 375, 375".ToStream(), packCount),
-						})
-					}
+						}),
+					},
+					InitialSoC = reessSoC.Value
 				};
 				var es = new ElectricSystem(container);
 				var battery = new BatterySystem(container, runData.BatteryData);
diff --git a/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/vecto_vehicle-completed_heavyBus_41.xml b/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/vecto_vehicle-completed_heavyBus_41.xml
index 95cf175667d01c6c17614c00c3e49ddafcd1b2c2..c9db0481c519a1fab72f7b3ce821c71351e5c0e3 100644
--- a/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/vecto_vehicle-completed_heavyBus_41.xml
+++ b/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/vecto_vehicle-completed_heavyBus_41.xml
@@ -16,7 +16,7 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCor
 		<LegislativeCategory>M3</LegislativeCategory>
 		<CorrectedActualMass>8300</CorrectedActualMass>
 		<TechnicalPermissibleMaximumLadenMass>18000</TechnicalPermissibleMaximumLadenMass>
-		<AirdragModifiedMultistage>false</AirdragModifiedMultistage>
+		<AirdragModifiedMultistage>true</AirdragModifiedMultistage>
 		<NgTankSystem>Compressed</NgTankSystem>
 		<ClassBus>II+III</ClassBus>
 		<NumberPassengerSeatsLowerDeck>30</NumberPassengerSeatsLowerDeck>
diff --git a/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/vecto_vehicle-completed_heavyBus_41_mixed.xml b/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/vecto_vehicle-completed_heavyBus_41_mixed.xml
index 3379693363ea865a1587972bd5c7c309716a4eb5..0fe54266ec17ef49046ea9f5c5aa41c36db79bec 100644
--- a/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/vecto_vehicle-completed_heavyBus_41_mixed.xml
+++ b/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/vecto_vehicle-completed_heavyBus_41_mixed.xml
@@ -19,8 +19,10 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCor
 		<AirdragModifiedMultistage>true</AirdragModifiedMultistage>
 		<NgTankSystem>Compressed</NgTankSystem>
 		<ClassBus>II+III</ClassBus>
-			<NumberPassengersLowerDeck>30</NumberPassengersLowerDeck>
-			<NumberPassengersUpperDeck>0</NumberPassengersUpperDeck>
+		<NumberPassengerSeatsLowerDeck>30</NumberPassengerSeatsLowerDeck>
+		<NumberPassengersStandingLowerDeck>0</NumberPassengersStandingLowerDeck>
+		<NumberPassengerSeatsUpperDeck>0</NumberPassengerSeatsUpperDeck>
+		<NumberPassengersStandingUpperDeck>0</NumberPassengersStandingUpperDeck>
 		<BodyworkCode>CA</BodyworkCode>
 		<LowEntry>true</LowEntry>
 		<HeightIntegratedBody>3000</HeightIntegratedBody>
diff --git a/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/vecto_vehicle-completed_heavyBus_42.xml b/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/vecto_vehicle-completed_heavyBus_42.xml
index 102d148e65ba6cd3cae6feb7905a68470e9cae07..6fbd95682f22879d8226585099b06ed5c3cc9e23 100644
--- a/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/vecto_vehicle-completed_heavyBus_42.xml
+++ b/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/vecto_vehicle-completed_heavyBus_42.xml
@@ -18,8 +18,10 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCor
 		<TechnicalPermissibleMaximumLadenMass>18000</TechnicalPermissibleMaximumLadenMass>
 		<AirdragModifiedMultistage>false</AirdragModifiedMultistage>		
 		<ClassBus>I+II</ClassBus>		
-		<NumberPassengersLowerDeck>30</NumberPassengersLowerDeck>
-		<NumberPassengersUpperDeck>0</NumberPassengersUpperDeck>
+		<NumberPassengerSeatsLowerDeck>30</NumberPassengerSeatsLowerDeck>
+		<NumberPassengersStandingLowerDeck>0</NumberPassengersStandingLowerDeck>
+		<NumberPassengerSeatsUpperDeck>0</NumberPassengerSeatsUpperDeck>
+		<NumberPassengersStandingUpperDeck>0</NumberPassengersStandingUpperDeck>
 		<BodyworkCode>CE</BodyworkCode>
 				<LowEntry>true</LowEntry>
 		<HeightIntegratedBody>3000</HeightIntegratedBody>
diff --git a/VectoCore/VectoCoreTest/TestData/Integration/Buses/vecto_vehicle-completed_heavyBus.xml b/VectoCore/VectoCoreTest/TestData/Integration/Buses/vecto_vehicle-completed_heavyBus.xml
index f00a8112fe4e09d458a0badf8177bf8fa22a0d60..1218ea9e6c58183cac5e710f12f7428d6badae43 100644
--- a/VectoCore/VectoCoreTest/TestData/Integration/Buses/vecto_vehicle-completed_heavyBus.xml
+++ b/VectoCore/VectoCoreTest/TestData/Integration/Buses/vecto_vehicle-completed_heavyBus.xml
@@ -18,8 +18,10 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCor
 		<TechnicalPermissibleMaximumLadenMass>15400</TechnicalPermissibleMaximumLadenMass>
 		<AirdragModifiedMultistage>true</AirdragModifiedMultistage>
 		<ClassBus>II+III</ClassBus>
-			<NumberPassengersLowerDeck>50</NumberPassengersLowerDeck>
-			<NumberPassengersUpperDeck>0</NumberPassengersUpperDeck>
+		<NumberPassengerSeatsLowerDeck>50</NumberPassengerSeatsLowerDeck>
+		<NumberPassengersStandingLowerDeck>0</NumberPassengersStandingLowerDeck>
+		<NumberPassengerSeatsUpperDeck>0</NumberPassengerSeatsUpperDeck>
+		<NumberPassengersStandingUpperDeck>0</NumberPassengersStandingUpperDeck>
 		<BodyworkCode>CA</BodyworkCode>
 		<LowEntry>true</LowEntry>
 		<HeightIntegratedBody>2700</HeightIntegratedBody>
diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.6_Buses/exempted_primary_heavyBus.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.6_Buses/exempted_primary_heavyBus.xml
new file mode 100644
index 0000000000000000000000000000000000000000..aef216779b96bd7d1342f7324dd2323928faf9fe
--- /dev/null
+++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.6_Buses/exempted_primary_heavyBus.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<tns:VectoInputDeclaration schemaVersion="2.0" 
+xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" 
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" 
+xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" 
+xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" 
+xmlns:di="http://www.w3.org/2000/09/xmldsig#" 
+xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd">
+	<v2.0:Vehicle id="VEH-1234567890" xsi:type="v2.6:ExemptedPrimaryHeavyBusType">
+		<Manufacturer>Some Manufacturer</Manufacturer>
+		<ManufacturerAddress>Infinite Loop 1</ManufacturerAddress>
+		<Model>Sample Bus Model</Model>
+		<VIN>VEH-1234567890</VIN>
+		<Date>2020-01-09T11:00:00Z</Date>
+		<LegislativeCategory>N2</LegislativeCategory>
+		<ChassisConfiguration>Bus</ChassisConfiguration>
+		<AxleConfiguration>6x2</AxleConfiguration>
+		<Articulated>false</Articulated>
+		<TechnicalPermissibleMaximumLadenMass>15400</TechnicalPermissibleMaximumLadenMass>
+		<ZeroEmissionVehicle>true</ZeroEmissionVehicle>
+		<SumNetPower>350000</SumNetPower>
+		<Technology>Fuel cell vehicle</Technology>
+	</v2.0:Vehicle>
+</tns:VectoInputDeclaration>
diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-exempted_input_full-sample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-exempted_input_full-sample.xml
index b6069da5a5049db6e1487e69ca57609b1e78efc3..c8f44fc1b3bb0d1c4f800d92383c39cb6692142e 100644
--- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-exempted_input_full-sample.xml
+++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-exempted_input_full-sample.xml
@@ -1 +1,25 @@
-<?xml version="1.0" encoding="UTF-8"?>
<tns:VectoInputDeclaration schemaVersion="2.8" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" 
xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" 
xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd">
	<v2.0:Vehicle id="VEH-1234567890" xsi:type="ExemptedInterimStageInputType">
		<Manufacturer>Some Manufacturer</Manufacturer>
		<ManufacturerAddress>Infinite Loop</ManufacturerAddress>
		<VIN>VEH-1234567891</VIN>
		<Date>2021-01-09T11:00:00Z</Date>
		<Model>Sample Bus Model 2</Model>
		<LegislativeCategory>M3</LegislativeCategory>
		<CorrectedActualMass>7000</CorrectedActualMass>
		<TechnicalPermissibleMaximumLadenMass>10000</TechnicalPermissibleMaximumLadenMass>
		<ClassBus>A</ClassBus>
		<NumberPassengersLowerDeck>10</NumberPassengersLowerDeck>
		<NumberPassengersUpperDeck>20</NumberPassengersUpperDeck>
		<BodyworkCode>CC</BodyworkCode>
		<LowEntry>true</LowEntry>
		<HeightIntegratedBody>2500</HeightIntegratedBody>		
	</v2.0:Vehicle>
</tns:VectoInputDeclaration>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+<tns:VectoInputDeclaration schemaVersion="2.8" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8"
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" 
+xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" 
+xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd">
+	<v2.0:Vehicle id="VEH-1234567890" xsi:type="ExemptedInterimStageInputType">
+		<Manufacturer>Some Manufacturer</Manufacturer>
+		<ManufacturerAddress>Infinite Loop</ManufacturerAddress>
+		<VIN>VEH-1234567891</VIN>
+		<Date>2021-01-09T11:00:00Z</Date>
+		<Model>Sample Bus Model 2</Model>
+		<LegislativeCategory>M3</LegislativeCategory>
+		<CorrectedActualMass>7000</CorrectedActualMass>
+		<TechnicalPermissibleMaximumLadenMass>10000</TechnicalPermissibleMaximumLadenMass>
+		<ClassBus>A</ClassBus>
+		<NumberPassengerSeatsLowerDeck>10</NumberPassengerSeatsLowerDeck>
+		<NumberPassengersStandingLowerDeck>42</NumberPassengersStandingLowerDeck>
+		<NumberPassengerSeatsUpperDeck>20</NumberPassengerSeatsUpperDeck>
+		<NumberPassengersStandingUpperDeck>13</NumberPassengersStandingUpperDeck>
+		<BodyworkCode>CE</BodyworkCode>
+		<LowEntry>true</LowEntry>
+		<HeightIntegratedBody>2500</HeightIntegratedBody>		
+	</v2.0:Vehicle>
+</tns:VectoInputDeclaration>
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-exempted_input_only_certain_entries02-sample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-exempted_input_only_certain_entries02-sample.xml
index a580db7446d77a5ac44a28e6284b220ebfc0e9f9..7c9454e563e8bbe3283a2361f19032c6ef2ebf79 100644
--- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-exempted_input_only_certain_entries02-sample.xml
+++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-exempted_input_only_certain_entries02-sample.xml
@@ -1 +1,17 @@
-<?xml version="1.0" encoding="UTF-8"?>
<tns:VectoInputDeclaration schemaVersion="2.8" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" 
xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" 
xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd">
	<v2.0:Vehicle id="VEH-1234567890" xsi:type="ExemptedInterimStageInputType">
		<Manufacturer>Some Manufacturer 2</Manufacturer>
		<ManufacturerAddress>Some Manufacturer Address 2</ManufacturerAddress>
		<VIN>VEH-1234567891</VIN>
		<Date>2021-01-09T11:00:00Z</Date>
		<NumberPassengersLowerDeck>10</NumberPassengersLowerDeck>
		<NumberPassengersUpperDeck>20</NumberPassengersUpperDeck>	
	</v2.0:Vehicle>
</tns:VectoInputDeclaration>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+<tns:VectoInputDeclaration schemaVersion="2.8" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" 
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" 
+xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" 
+xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd">
+	<v2.0:Vehicle id="VEH-1234567890" xsi:type="ExemptedInterimStageInputType">
+		<Manufacturer>Some Manufacturer 2</Manufacturer>
+		<ManufacturerAddress>Some Manufacturer Address 2</ManufacturerAddress>
+		<VIN>VEH-1234567891</VIN>
+		<Date>2021-01-09T11:00:00Z</Date>
+		<NumberPassengerSeatsLowerDeck>10</NumberPassengerSeatsLowerDeck>
+		<NumberPassengersStandingLowerDeck>42</NumberPassengersStandingLowerDeck>
+		<NumberPassengerSeatsUpperDeck>20</NumberPassengerSeatsUpperDeck>
+		<NumberPassengersStandingUpperDeck>13</NumberPassengersStandingUpperDeck>
+	</v2.0:Vehicle>
+</tns:VectoInputDeclaration>
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-stage_input_full-sample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-stage_input_full-sample.xml
index 85f865e71925dbca4a77fc9246cadbfcf02df70b..24f2810fdf692cbe4e1f1f7af756eddf86f2e8fd 100644
--- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-stage_input_full-sample.xml
+++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-stage_input_full-sample.xml
@@ -1,95 +1,90 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<tns:VectoInputDeclaration schemaVersion="2.8" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8"
-xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
-xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" 
-xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3" 
-xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" 
-xmlns:di="http://www.w3.org/2000/09/xmldsig#" 
-xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd">
-	<v2.0:Vehicle id="VEH-1234567890" xsi:type="InterimStageInputType">
-		<Manufacturer>Some Manufacturer</Manufacturer>
-		<ManufacturerAddress>Some Manufacturer Address</ManufacturerAddress>
-		<VIN>VEH-1234567890</VIN>
-		<Date>2020-01-09T11:00:00Z</Date>
-		<Model>Sample Bus Model</Model>
-		<LegislativeCategory>M3</LegislativeCategory>
-		<CorrectedActualMass>500</CorrectedActualMass>
-		<TechnicalPermissibleMaximumLadenMass>3500</TechnicalPermissibleMaximumLadenMass>
-		<NgTankSystem>Compressed</NgTankSystem>
-		<ClassBus>II+III</ClassBus>
-		<NumberPassengerSeatsLowerDeck>1</NumberPassengerSeatsLowerDeck>
-		<NumberPassengersStandingLowerDeck>10</NumberPassengersStandingLowerDeck>
-		<NumberPassengerSeatsUpperDeck>11</NumberPassengerSeatsUpperDeck>
-		<NumberPassengersStandingUpperDeck>2</NumberPassengersStandingUpperDeck>
-		<BodyworkCode>CB</BodyworkCode>
-		<LowEntry>false</LowEntry>
-		<HeightIntegratedBody>2500</HeightIntegratedBody>
-		<VehicleLength>9500</VehicleLength>
-		<VehicleWidth>2500</VehicleWidth>
-		<EntranceHeight>2000</EntranceHeight>
-		<DoorDriveTechnology>electric</DoorDriveTechnology>
-		<VehicleDeclarationType>interim</VehicleDeclarationType>
-		<ADAS>
-			<v2.3:EngineStopStart>true</v2.3:EngineStopStart>
-			<v2.3:EcoRollWithoutEngineStop>false</v2.3:EcoRollWithoutEngineStop>
-			<v2.3:EcoRollWithEngineStop>false</v2.3:EcoRollWithEngineStop>
-			<v2.3:PredictiveCruiseControl>none</v2.3:PredictiveCruiseControl>
-			<v2.3:APTEcoRollReleaseLockupClutch>true</v2.3:APTEcoRollReleaseLockupClutch>
-		</ADAS>
-		<Components xsi:type="CompletedVehicleComponentsDeclarationType">
-			<AirDrag>
-				<v2.0:Data xsi:type="v2.0:AirDragDataDeclarationType" id="CabinX23h">
-					<v2.0:Manufacturer>Generic Manufacturer</v2.0:Manufacturer>
-					<v2.0:Model>Generic Model</v2.0:Model>
-					<v2.0:CertificationNumber>e12*0815/8051*2017/05E0000*00</v2.0:CertificationNumber>
-					<v2.0:Date>2017-03-24T15:00:00Z</v2.0:Date>
-					<v2.0:AppVersion>Vecto AirDrag x.y</v2.0:AppVersion>
-					<v2.0:CdxA_0>6.31</v2.0:CdxA_0>
-					<v2.0:TransferredCdxA>6.32</v2.0:TransferredCdxA>
-					<v2.0:DeclaredCdxA>6.34</v2.0:DeclaredCdxA>
-				</v2.0:Data>
-				<v2.0:Signature>
-					<di:Reference URI="#CabinX23h">
-						<di:Transforms>
-							<di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/>
-							<di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
-						</di:Transforms>
-						<di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
-						<di:DigestValue>b9SHCfOoVrBxFQ8wwDK32OO+9bd85DuaUdgs6j/29N8=</di:DigestValue>
-					</di:Reference>
-				</v2.0:Signature>
-			</AirDrag>
-			<Auxiliaries>
-				<Data xsi:type="CompletedVehicleAuxiliaryDataDeclarationType">
-					<ElectricSystem>
-						<LEDLights>
-							<Interiorlights>false</Interiorlights>
-							<Dayrunninglights>true</Dayrunninglights>
-							<Positionlights>true</Positionlights>
-							<Brakelights>true</Brakelights>
-							<Headlights>false</Headlights>
-						</LEDLights>		
-					</ElectricSystem>
-					<HVAC>
-						<SystemConfiguration>0</SystemConfiguration>
-						<HeatPumpTypeDriverCompartment>none</HeatPumpTypeDriverCompartment>
-						<HeatPumpModeDriverCompartment>heating</HeatPumpModeDriverCompartment>
-						<HeatPumpTypePassengerCompartment>non R-744 2-stage</HeatPumpTypePassengerCompartment>
-						<HeatPumpModePassengerCompartment>cooling</HeatPumpModePassengerCompartment>
-						<HeatPumpTypePassengerCompartment>non R-744 3-stage</HeatPumpTypePassengerCompartment>
-						<HeatPumpModePassengerCompartment>heating</HeatPumpModePassengerCompartment>
-						<HeatPumpTypePassengerCompartment>non R-744 2-stage</HeatPumpTypePassengerCompartment>
-						<HeatPumpModePassengerCompartment>cooling</HeatPumpModePassengerCompartment>
-						<AuxiliaryHeaterPower>50</AuxiliaryHeaterPower>
-						<DoubleGlazing>false</DoubleGlazing>
-						<AdjustableAuxiliaryHeater>true</AdjustableAuxiliaryHeater>
-						<SeparateAirDistributionDucts>false</SeparateAirDistributionDucts>
-						<WaterElectricHeater>true</WaterElectricHeater>
-						<AirElectricHeater>false</AirElectricHeater>
-						<OtherHeatingTechnology>false</OtherHeatingTechnology>			
-					</HVAC>
-				</Data>
-			</Auxiliaries>
-		</Components>
-	</v2.0:Vehicle>
+ο»Ώ<?xml version="1.0" encoding="utf-8"?>
+<tns:VectoInputDeclaration xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" schemaVersion="2.8" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD\VectoDeclarationJob.xsd">
+  <v2.0:Vehicle id="VEH-1234567890" xsi:type="InterimStageInputType">
+    <Manufacturer>Some Manufacturer</Manufacturer>
+    <ManufacturerAddress>Some Manufacturer Address</ManufacturerAddress>
+    <VIN>VEH-1234567890</VIN>
+    <Date>2021-06-30T22:00:00Z</Date>
+    <Model>Sample Bus Model</Model>
+    <LegislativeCategory>M3</LegislativeCategory>
+    <CorrectedActualMass>500</CorrectedActualMass>
+    <TechnicalPermissibleMaximumLadenMass>3500</TechnicalPermissibleMaximumLadenMass>
+    <AirdragModifiedMultistage>true</AirdragModifiedMultistage>
+    <NgTankSystem>Compressed</NgTankSystem>
+    <ClassBus>II+III</ClassBus>
+    <NumberPassengerSeatsLowerDeck>1</NumberPassengerSeatsLowerDeck>
+    <NumberPassengersStandingLowerDeck>10</NumberPassengersStandingLowerDeck>
+    <NumberPassengerSeatsUpperDeck>11</NumberPassengerSeatsUpperDeck>
+    <NumberPassengersStandingUpperDeck>2</NumberPassengersStandingUpperDeck>
+    <BodyworkCode>CB</BodyworkCode>
+    <LowEntry>false</LowEntry>
+    <HeightIntegratedBody>2500</HeightIntegratedBody>
+    <VehicleLength>9500</VehicleLength>
+    <VehicleWidth>2500</VehicleWidth>
+    <EntranceHeight>2000</EntranceHeight>
+    <DoorDriveTechnology>electric</DoorDriveTechnology>
+    <VehicleDeclarationType>interim</VehicleDeclarationType>
+    <ADAS>
+      <v2.3:EngineStopStart>true</v2.3:EngineStopStart>
+      <v2.3:EcoRollWithoutEngineStop>false</v2.3:EcoRollWithoutEngineStop>
+      <v2.3:EcoRollWithEngineStop>false</v2.3:EcoRollWithEngineStop>
+      <v2.3:PredictiveCruiseControl>none</v2.3:PredictiveCruiseControl>
+      <v2.3:APTEcoRollReleaseLockupClutch>true</v2.3:APTEcoRollReleaseLockupClutch>
+    </ADAS>
+    <Components xsi:type="CompletedVehicleComponentsDeclarationType">
+      <AirDrag>
+        <v2.0:Data id="CabinX23h" xsi:type="v2.0:AirDragDataDeclarationType">
+          <v2.0:Manufacturer>Generic Manufacturer</v2.0:Manufacturer>
+          <v2.0:Model>Generic Model</v2.0:Model>
+          <v2.0:CertificationNumber>e12*0815/8051*2017/05E0000*00</v2.0:CertificationNumber>
+          <v2.0:Date>2017-03-24T15:00:00Z</v2.0:Date>
+          <v2.0:AppVersion>Vecto AirDrag x.y</v2.0:AppVersion>
+          <v2.0:CdxA_0>6.31</v2.0:CdxA_0>
+          <v2.0:TransferredCdxA>6.32</v2.0:TransferredCdxA>
+          <v2.0:DeclaredCdxA>6.34</v2.0:DeclaredCdxA>
+        </v2.0:Data>
+        <v2.0:Signature>
+          <di:Reference URI="#CabinX23h">
+            <di:Transforms>
+              <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" />
+              <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+            </di:Transforms>
+            <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
+            <di:DigestValue>b9SHCfOoVrBxFQ8wwDK32OO+9bd85DuaUdgs6j/29N8=</di:DigestValue>
+          </di:Reference>
+        </v2.0:Signature>
+      </AirDrag>
+      <Auxiliaries>
+        <Data xsi:type="CompletedVehicleAuxiliaryDataDeclarationType">
+          <ElectricSystem>
+            <LEDLights>
+              <Interiorlights>false</Interiorlights>
+              <Dayrunninglights>true</Dayrunninglights>
+              <Positionlights>true</Positionlights>
+              <Brakelights>true</Brakelights>
+              <Headlights>false</Headlights>
+            </LEDLights>
+          </ElectricSystem>
+          <HVAC>
+            <SystemConfiguration>0</SystemConfiguration>
+            <HeatPumpTypeDriverCompartment>none</HeatPumpTypeDriverCompartment>
+            <HeatPumpModeDriverCompartment>heating</HeatPumpModeDriverCompartment>
+            <HeatPumpTypePassengerCompartment>non R-744 2-stage</HeatPumpTypePassengerCompartment>
+            <HeatPumpModePassengerCompartment>cooling</HeatPumpModePassengerCompartment>
+            <HeatPumpTypePassengerCompartment>non R-744 3-stage</HeatPumpTypePassengerCompartment>
+            <HeatPumpModePassengerCompartment>heating</HeatPumpModePassengerCompartment>
+            <HeatPumpTypePassengerCompartment>non R-744 2-stage</HeatPumpTypePassengerCompartment>
+            <HeatPumpModePassengerCompartment>cooling</HeatPumpModePassengerCompartment>
+            <AuxiliaryHeaterPower>50</AuxiliaryHeaterPower>
+            <DoubleGlazing>false</DoubleGlazing>
+            <AdjustableAuxiliaryHeater>true</AdjustableAuxiliaryHeater>
+            <SeparateAirDistributionDucts>false</SeparateAirDistributionDucts>
+            <WaterElectricHeater>true</WaterElectricHeater>
+            <AirElectricHeater>false</AirElectricHeater>
+            <OtherHeatingTechnology>false</OtherHeatingTechnology>
+          </HVAC>
+        </Data>
+      </Auxiliaries>
+    </Components>
+  </v2.0:Vehicle>
 </tns:VectoInputDeclaration>
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/AirdragLoadTestFilev2.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/AirdragLoadTestFilev2.xml
new file mode 100644
index 0000000000000000000000000000000000000000..45cc6f8f24c4475d5cf9c26215e4ac6e5a8a3c5d
--- /dev/null
+++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/AirdragLoadTestFilev2.xml
@@ -0,0 +1,25 @@
+ο»Ώ<?xml version="1.0" encoding="utf-8"?>
+<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v2.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoComponent.xsd">
+    <tns:AirDrag>
+        <Data id="TestAirDrag1234" xsi:type="AirDragDataDeclarationType">
+            <Manufacturer>Test AirDrag Manufacturer</Manufacturer>
+            <Model>Test AirDrag Model</Model>
+            <CertificationNumber>e12*0815/8051*2020/05E0000*66</CertificationNumber>
+            <Date>2020-04-28T09:16:15.1270795Z</Date>
+            <AppVersion>Vecto AirDrag Test Load</AppVersion>
+            <CdxA_0>6.12</CdxA_0>
+            <TransferredCdxA>7.12</TransferredCdxA>
+            <DeclaredCdxA>8.12</DeclaredCdxA>
+        </Data>
+        <Signature>
+            <di:Reference URI="#TestAirDrag1234">
+                <di:Transforms>
+                    <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" />
+                    <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+                </di:Transforms>
+                <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
+                <di:DigestValue>Yd3UDJ/zKPhsmPadJeC4Ez/q7o3G82Zbq3mX3tSqLDw=</di:DigestValue>
+            </di:Reference>
+        </Signature>
+    </tns:AirDrag>
+</tns:VectoInputDeclaration>
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/exempted_primary_heavyBus.VIF.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/exempted_primary_heavyBus.VIF.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ef4e364d6bba89cfea33a6752982ae9d1cd2d1a6
--- /dev/null
+++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/exempted_primary_heavyBus.VIF.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<VectoOutputMultistage xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.8="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 V:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistage.0.1.xsd">
+  <PrimaryVehicle xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1">
+    <Data id="VEH-4cb168560c0d4b3d886d" xsi:type="PrimaryVehicleDataType">
+      <Vehicle xsi:type="VehicleExemptedPrimaryBusType">
+        <ManufacturerPrimaryVehicle>Some Manufacturer</ManufacturerPrimaryVehicle>
+        <ManufacturerAddressPrimaryVehicle>Infinite Loop 1</ManufacturerAddressPrimaryVehicle>
+        <Model>Sample Bus Model</Model>
+        <VIN>VEH-1234567890</VIN>
+        <Date>2017-02-15T11:00:00Z</Date>
+        <LegislativeCategory>N2</LegislativeCategory>
+        <ChassisConfiguration>Bus</ChassisConfiguration>
+        <AxleConfiguration>6x2</AxleConfiguration>
+        <Articulated>false</Articulated>
+        <TechnicalPermissibleMaximumLadenMass unit="kg">15400.0</TechnicalPermissibleMaximumLadenMass>
+        <ZeroEmissionVehicle>true</ZeroEmissionVehicle>
+        <SumNetPower unit="W">350000</SumNetPower>
+        <Technology>Fuel cell vehicle</Technology>
+      </Vehicle>
+      <InputDataSignature>
+        <di:Reference URI="#VEH-1234567890">
+          <di:Transforms>
+            <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" />
+            <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+          </di:Transforms>
+          <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
+          <di:DigestValue>sYhNx2MDHaOAMTlPflP/qQbEkazmRDxY0Vw6yzwwcJc=</di:DigestValue>
+        </di:Reference>
+      </InputDataSignature>
+      <ManufacturerRecordSignature>
+        <di:Reference URI="#RESULT-4c4c52e522874a398b3a">
+          <di:Transforms>
+            <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" />
+            <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+          </di:Transforms>
+          <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
+          <di:DigestValue>guwkv90jOyWgDpgQwAEbLRkq7pWGeVaGA+dHizLYufQ=</di:DigestValue>
+        </di:Reference>
+      </ManufacturerRecordSignature>
+      <Results>
+        <Status>success</Status>
+        <ExemptedVehicle />
+      </Results>
+      <ApplicationInformation>
+        <SimulationToolVersion>0.7.3.2247-DEV !!NOT FOR CERTIFICATION!!</SimulationToolVersion>
+        <Date>2021-06-15T16:00:43.6769906Z</Date>
+      </ApplicationInformation>
+    </Data>
+    <Signature>
+      <di:Reference URI="#VEH-4cb168560c0d4b3d886d">
+        <di:Transforms>
+          <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" />
+          <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
+        </di:Transforms>
+        <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
+        <di:DigestValue>KeeEnRNO5Gjm7XB+YYx542ujYbE0k7a9SkWe/BWo7bI=</di:DigestValue>
+      </di:Reference>
+    </Signature>
+  </PrimaryVehicle>
+</VectoOutputMultistage>
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-exempted_input_full-sample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-exempted_input_full-sample.xml
index 9e20d2cd2d4e3791611918ac7b389c79169f1984..57659cef43c4d0b34fa9e642d9fb832a5070197e 100644
--- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-exempted_input_full-sample.xml
+++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-exempted_input_full-sample.xml
@@ -1 +1,25 @@
-<?xml version="1.0" encoding="UTF-8"?>
<tns:VectoInputDeclaration schemaVersion="2.8" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" 
xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" 
xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\VECTO_DEV\fk_vecto-dev\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd">
	<v2.0:Vehicle id="VEH-1234567890" xsi:type="ExemptedInterimStageInputType">
		<Manufacturer>Some Manufacturer</Manufacturer>
		<ManufacturerAddress>Infinite Loop</ManufacturerAddress>
		<VIN>VEH-1234567891</VIN>
		<Date>2021-01-09T11:00:00Z</Date>
		<Model>Sample Bus Model 2</Model>
		<LegislativeCategory>M3</LegislativeCategory>
		<CorrectedActualMass>7000</CorrectedActualMass>
		<TechnicalPermissibleMaximumLadenMass>10000</TechnicalPermissibleMaximumLadenMass>
		<ClassBus>A</ClassBus>
		<NumberPassengersLowerDeck>10</NumberPassengersLowerDeck>
		<NumberPassengersUpperDeck>20</NumberPassengersUpperDeck>
		<BodyworkCode>CC</BodyworkCode>
		<LowEntry>true</LowEntry>
		<HeightIntegratedBody>2500</HeightIntegratedBody>		
	</v2.0:Vehicle>
</tns:VectoInputDeclaration>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+<tns:VectoInputDeclaration schemaVersion="2.8" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8"
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" 
+xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" 
+xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\VECTO_DEV\fk_vecto-dev\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd">
+	<v2.0:Vehicle id="VEH-1234567890" xsi:type="ExemptedInterimStageInputType">
+		<Manufacturer>Some Manufacturer</Manufacturer>
+		<ManufacturerAddress>Infinite Loop</ManufacturerAddress>
+		<VIN>VEH-1234567891</VIN>
+		<Date>2021-01-09T11:00:00Z</Date>
+		<Model>Sample Bus Model 2</Model>
+		<LegislativeCategory>M3</LegislativeCategory>
+		<CorrectedActualMass>7000</CorrectedActualMass>
+		<TechnicalPermissibleMaximumLadenMass>10000</TechnicalPermissibleMaximumLadenMass>
+		<ClassBus>A</ClassBus>
+		<NumberPassengerSeatsLowerDeck>10</NumberPassengerSeatsLowerDeck>
+		<NumberPassengersStandingLowerDeck>42</NumberPassengersStandingLowerDeck>
+		<NumberPassengerSeatsUpperDeck>20</NumberPassengerSeatsUpperDeck>
+		<NumberPassengersStandingUpperDeck>13</NumberPassengersStandingUpperDeck>
+		<BodyworkCode>CC</BodyworkCode>
+		<LowEntry>true</LowEntry>
+		<HeightIntegratedBody>2500</HeightIntegratedBody>		
+	</v2.0:Vehicle>
+</tns:VectoInputDeclaration>
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-exempted_input_only_certain_entries02-sample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-exempted_input_only_certain_entries02-sample.xml
index 6404f3d41e9b2c384697e1762cc46bf9a919d79a..9a6adaf176806f20f62ebdccdf56a5ee7ebbe527 100644
--- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-exempted_input_only_certain_entries02-sample.xml
+++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-exempted_input_only_certain_entries02-sample.xml
@@ -1 +1,17 @@
-<?xml version="1.0" encoding="UTF-8"?>
<tns:VectoInputDeclaration schemaVersion="2.8" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" 
xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" 
xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\VECTO_DEV\fk_vecto-dev\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd">
	<v2.0:Vehicle id="VEH-1234567890" xsi:type="ExemptedInterimStageInputType">
		<Manufacturer>Some Manufacturer 2</Manufacturer>
		<ManufacturerAddress>Some Manufacturer Address 2</ManufacturerAddress>
		<VIN>VEH-1234567891</VIN>
		<Date>2021-01-09T11:00:00Z</Date>
		<NumberPassengersLowerDeck>10</NumberPassengersLowerDeck>
		<NumberPassengersUpperDeck>20</NumberPassengersUpperDeck>	
	</v2.0:Vehicle>
</tns:VectoInputDeclaration>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+<tns:VectoInputDeclaration schemaVersion="2.8" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" 
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" 
+xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" 
+xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\VECTO_DEV\fk_vecto-dev\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd">
+	<v2.0:Vehicle id="VEH-1234567890" xsi:type="ExemptedInterimStageInputType">
+		<Manufacturer>Some Manufacturer 2</Manufacturer>
+		<ManufacturerAddress>Some Manufacturer Address 2</ManufacturerAddress>
+		<VIN>VEH-1234567891</VIN>
+		<Date>2021-01-09T11:00:00Z</Date>
+		<NumberPassengerSeatsLowerDeck>10</NumberPassengerSeatsLowerDeck>
+		<NumberPassengersStandingLowerDeck>42</NumberPassengersStandingLowerDeck>
+		<NumberPassengerSeatsUpperDeck>20</NumberPassengerSeatsUpperDeck>
+		<NumberPassengersStandingUpperDeck>13</NumberPassengersStandingUpperDeck>
+	</v2.0:Vehicle>
+</tns:VectoInputDeclaration>
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/Utils/CompletedVIF.cs b/VectoCore/VectoCoreTest/Utils/CompletedVIF.cs
index cfb858ef85dcabc4feebf1ec0620ba540a599ee5..422e16c9762caf89a0367b3ef515c38e776ade62 100644
--- a/VectoCore/VectoCoreTest/Utils/CompletedVIF.cs
+++ b/VectoCore/VectoCoreTest/Utils/CompletedVIF.cs
@@ -14,7 +14,8 @@ namespace TUGraz.VectoCore.Tests.Utils
 {
 	public static class CompletedVIF
 	{
-		public static XMLDeclarationVIFInputData CreateCompletedVif(JSONInputDataCompletedBusFactorMethodV7 completedJson,
+		public static string CreateCompletedVifXML(
+			JSONInputDataCompletedBusFactorMethodV7 completedJson,
 			IXMLInputDataReader xmlInputReader)
 		{
 			var vifDataProvider = xmlInputReader.Create(completedJson.PrimaryInputDataFile);
@@ -33,10 +34,17 @@ namespace TUGraz.VectoCore.Tests.Utils
 
 			var completedVifXML = new XmlDocument();
 			completedVifXML.Load(writerAsm.XMLMultistageReportFileName);
+			var retVal = completedVifXML.OuterXml;
+			File.Delete(writerAsm.XMLMultistageReportFileName);
+			return retVal;
+		}
 
+		public static XMLDeclarationVIFInputData CreateCompletedVif(JSONInputDataCompletedBusFactorMethodV7 completedJson,
+			IXMLInputDataReader xmlInputReader)
+		{
 			var completedVif =
-				xmlInputReader.CreateDeclaration(XmlReader.Create(new StringReader(completedVifXML.OuterXml)));
-			File.Delete(writerAsm.XMLMultistageReportFileName);
+				xmlInputReader.CreateDeclaration(XmlReader.Create(new StringReader(CreateCompletedVifXML(completedJson, xmlInputReader))));
+			
 			return new XMLDeclarationVIFInputData(completedVif as IMultistageBusInputDataProvider, null);
 			}
 	}
diff --git a/VectoCore/VectoCoreTest/Utils/MockDeclarationVehicleInputData.cs b/VectoCore/VectoCoreTest/Utils/MockDeclarationVehicleInputData.cs
index b83bde203d76065e11904f94aec270d5bcb1efb7..b491470cb4459565e2c68edf3daef6ed8429a61a 100644
--- a/VectoCore/VectoCoreTest/Utils/MockDeclarationVehicleInputData.cs
+++ b/VectoCore/VectoCoreTest/Utils/MockDeclarationVehicleInputData.cs
@@ -29,7 +29,6 @@ namespace TUGraz.VectoCore.Tests.Utils {
 		public string Identifier { get; }
 		public bool ExemptedVehicle { get; }
 		public string VIN { get; }
-		public string LegislativeCategory { get; }
 		public LegislativeClass? LegislativeClass { get; }
 		public VehicleCategory VehicleCategory { get; }
 		public AxleConfiguration AxleConfiguration { get; }
@@ -48,6 +47,7 @@ namespace TUGraz.VectoCore.Tests.Utils {
 		public bool DualFuelVehicle { get; }
 		public Watt MaxNetPower1 { get; }
 		public Watt MaxNetPower2 { get; }
+		public string ExemptedTechnology { get; }
 		public RegistrationClass? RegisteredClass { get; set; }
 		public int? NumberPassengerSeatsUpperDeck { get; set; }
 		public int? NumberPassengerSeatsLowerDeck { get; set; }
@@ -121,6 +121,7 @@ namespace TUGraz.VectoCore.Tests.Utils {
 		public ConsumerTechnology? DoorDriveTechnology { get; }
 		public VehicleDeclarationType VehicleDeclarationType { get; }
 		public Watt MaxNetPower2 { get; }
+		public string ExemptedTechnology { get; }
 		public RegistrationClass? RegisteredClass { get; set; }
 		public int? NumberPassengerSeatsUpperDeck { get; set; }
 		public int? NumberPassengerSeatsLowerDeck { get; set; }
@@ -138,7 +139,6 @@ namespace TUGraz.VectoCore.Tests.Utils {
 		public string Identifier { get; }
 		public bool ExemptedVehicle { get; }
 		public string VIN { get; }
-		public string LegislativeCategory { get; }
 		public LegislativeClass? LegislativeClass { get; }
 		public VehicleCategory VehicleCategory { get; }
 		public AxleConfiguration AxleConfiguration { get; }
diff --git a/VectoCore/VectoCoreTest/VectoCoreTest.csproj b/VectoCore/VectoCoreTest/VectoCoreTest.csproj
index 072ff03c35406be28c6a18bddb618366a5d9239f..eadf0faaef7d60ca26ac98e81f5683892e8d31b1 100644
--- a/VectoCore/VectoCoreTest/VectoCoreTest.csproj
+++ b/VectoCore/VectoCoreTest/VectoCoreTest.csproj
@@ -5968,6 +5968,9 @@
     <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.3\vehicle_sampleDualModeDualFuel.xml">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
+    <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\exempted_primary_heavyBus.xml">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
     <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\PIF-heavyBus-sample.xml">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
@@ -6028,6 +6031,9 @@
     <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\vecto_vehicle-stage_vif_input.xml">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
+    <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\exempted_primary_heavyBus.VIF.xml">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
     <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\vecto_multistage_consolidated_multiple_stages.xml">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
diff --git a/VectoCore/VectoCoreTest/XML/XMLCompleteBusReaderTest.cs b/VectoCore/VectoCoreTest/XML/XMLCompleteBusReaderTest.cs
index 444bb17a9bd769843018af9518bb7eb097ac8b04..4bceadbd97b62b68f2db214d2ee3608095fe5f06 100644
--- a/VectoCore/VectoCoreTest/XML/XMLCompleteBusReaderTest.cs
+++ b/VectoCore/VectoCoreTest/XML/XMLCompleteBusReaderTest.cs
@@ -36,7 +36,8 @@ namespace TUGraz.VectoCore.Tests.XML
 		}
 
 
-		[TestCase]
+		[TestCase,
+		Ignore("CompleteBus no longer used - new multistep approach")]
 		public void TestCompleteBusVehicleData()
 		{
 			var reader = XmlReader.Create(CompleteBusExample);
diff --git a/VectoCore/VectoCoreTest/XML/XMLMultistageBusDataTest.cs b/VectoCore/VectoCoreTest/XML/XMLMultistageBusDataTest.cs
index 6a337e3dace079efaf26bb6f597f22ec8429f4db..3f32009dea4d138c7d586b2e699900819b738c70 100644
--- a/VectoCore/VectoCoreTest/XML/XMLMultistageBusDataTest.cs
+++ b/VectoCore/VectoCoreTest/XML/XMLMultistageBusDataTest.cs
@@ -71,7 +71,7 @@ namespace TUGraz.VectoCore.Tests.XML
 			Assert.AreEqual("Generic Model", vehicleData.Model);
 			Assert.AreEqual("VEH-1234567890_nonSmart-ESS", vehicleData.VIN);
 			Assert.AreEqual(DateTime.Parse("2017-02-15T11:00:00Z").ToUniversalTime(), vehicleData.Date);
-			Assert.AreEqual("M3", vehicleData.LegislativeCategory);
+			Assert.AreEqual(LegislativeClass.M3, vehicleData.LegislativeClass);
 			Assert.AreEqual("Bus", vehicleData.VehicleCategory.ToXMLFormat());
 			Assert.AreEqual(AxleConfiguration.AxleConfig_8x2, vehicleData.AxleConfiguration);
 			Assert.AreEqual(true, vehicleData.Articulated);
diff --git a/VectoCore/VectoCoreTest/XML/XMLMultistageBusInputDataTest.cs b/VectoCore/VectoCoreTest/XML/XMLMultistageBusInputDataTest.cs
index c3be89ee5b145013a5f6503292e93dbe380e104a..04127d5f4f065075535a015d32563b68c11ae934 100644
--- a/VectoCore/VectoCoreTest/XML/XMLMultistageBusInputDataTest.cs
+++ b/VectoCore/VectoCoreTest/XML/XMLMultistageBusInputDataTest.cs
@@ -54,12 +54,12 @@ namespace TUGraz.VectoCore.Tests.XML
 			Assert.AreEqual("Some Manufacturer", vehicle.Manufacturer);
 			Assert.AreEqual("Some Manufacturer Address", vehicle.ManufacturerAddress);
 			Assert.AreEqual("VEH-1234567890", vehicle.VIN);
-			Assert.AreEqual(DateTime.Parse("2020-01-09T11:00:00Z").ToUniversalTime(), vehicle.Date);
+			Assert.AreEqual(DateTime.Parse("2021-06-30T22:00:00Z").ToUniversalTime(), vehicle.Date);
 			Assert.AreEqual("Sample Bus Model", vehicle.Model);
 			Assert.AreEqual(LegislativeClass.M3, vehicle.LegislativeClass);
 			Assert.AreEqual(500, vehicle.CurbMassChassis.Value());//CorrectedActualMass
 			Assert.AreEqual(3500, vehicle.GrossVehicleMassRating.Value());//TechnicalPermissibleMaximumLadenMass
-			Assert.AreEqual(null, vehicle.AirdragModifiedMultistage);
+			Assert.AreEqual(true, vehicle.AirdragModifiedMultistage);
 			Assert.AreEqual(TankSystem.Compressed, vehicle.TankSystem);//NgTankSystem
 			Assert.AreEqual(RegistrationClass.II_III, vehicle.RegisteredClass);//ClassBus
 			Assert.AreEqual(1, vehicle.NumberPassengerSeatsLowerDeck);
@@ -158,8 +158,10 @@ namespace TUGraz.VectoCore.Tests.XML
 			Assert.AreEqual(10000, vehicle.GrossVehicleMassRating.Value());//TechnicalPermissibleMaximumLadenMass
 			Assert.AreEqual(RegistrationClass.A, vehicle.RegisteredClass);//ClassBus
 			Assert.AreEqual(10, vehicle.NumberPassengerSeatsLowerDeck);
+			Assert.AreEqual(42, vehicle.NumberPassengersStandingLowerDeck);
 			Assert.AreEqual(20, vehicle.NumberPassengerSeatsUpperDeck);
-			Assert.AreEqual(VehicleCode.CC, vehicle.VehicleCode);
+			Assert.AreEqual(13, vehicle.NumberPassengersStandingUpperDeck);
+			Assert.AreEqual(VehicleCode.CE, vehicle.VehicleCode);
 			Assert.AreEqual(true, vehicle.LowEntry);
 			Assert.AreEqual(2.5, vehicle.Height.Value());
 		}
diff --git a/VectoCore/VectoCoreTest/bin/Debug/TestData/Integration/Buses/FactorMethod/primary_heavyBus group42_SmartPS.RSLT_VIF.xml b/VectoCore/VectoCoreTest/bin/Debug/TestData/Integration/Buses/FactorMethod/primary_heavyBus group42_SmartPS.RSLT_VIF.xml
index c40ef4fe6e6b2959057c757a3c3d510ed463f6ca..8280da3de3b4f002e45489138af883e7966cdf0c 100644
--- a/VectoCore/VectoCoreTest/bin/Debug/TestData/Integration/Buses/FactorMethod/primary_heavyBus group42_SmartPS.RSLT_VIF.xml	
+++ b/VectoCore/VectoCoreTest/bin/Debug/TestData/Integration/Buses/FactorMethod/primary_heavyBus group42_SmartPS.RSLT_VIF.xml	
@@ -1,605 +1,577 @@
-ο»Ώ<?xml version="1.0" encoding="utf-8"?>
-<VectoOutputMultistage xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.8="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 V:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistage.0.1.xsd">
-  <PrimaryVehicle xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1">
-    <Data id="VEH-9e4666291f0a4d4f9abb" xsi:type="PrimaryVehicleDataType">
-      <Vehicle xsi:type="VehiclePIFType">
-        <ManufacturerPrimaryVehicle>Generic Truck Manufacturer</ManufacturerPrimaryVehicle>
-        <ManufacturerAddressPrimaryVehicle>Street, ZIP City</ManufacturerAddressPrimaryVehicle>
-        <Model>Generic Model Primary</Model>
-        <VIN>VEH-1234567890_SmartPS</VIN>
-        <Date>2017-02-15T11:00:00Z</Date>
-        <LegislativeCategory>M3</LegislativeCategory>
-        <ChassisConfiguration>Bus</ChassisConfiguration>
-        <AxleConfiguration>6x2</AxleConfiguration>
-        <Articulated>false</Articulated>
-        <TechnicalPermissibleMaximumLadenMass>25000</TechnicalPermissibleMaximumLadenMass>
-        <IdlingSpeed>600</IdlingSpeed>
-        <RetarderType>Transmission Output Retarder</RetarderType>
-        <RetarderRatio>1.000</RetarderRatio>
-        <AngledriveType>None</AngledriveType>
-        <ZeroEmissionVehicle>false</ZeroEmissionVehicle>
-        <ADAS xmlns:adas="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xsi:type="adas:AdvancedDriverAssistantSystemsType">
-          <adas:EngineStopStart>false</adas:EngineStopStart>
-          <adas:EcoRollWithoutEngineStop>false</adas:EcoRollWithoutEngineStop>
-          <adas:EcoRollWithEngineStop>false</adas:EcoRollWithEngineStop>
-          <adas:PredictiveCruiseControl>none</adas:PredictiveCruiseControl>
-        </ADAS>
-        <TorqueLimits xmlns:tcl="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="tcl:TorqueLimitsType">
-          <tcl:Entry gear="6" maxTorque="1800" />
-          <tcl:Entry gear="1" maxTorque="2500" />
-          <tcl:Entry gear="12" maxTorque="1900" />
-        </TorqueLimits>
-        <Components xsi:type="VehicleComponentsPIFType">
-          <Engine>
-            <Data xsi:type="EngineDataPIFType">
-              <Manufacturer>Generic Engine Manufacturer Primary</Manufacturer>
-              <Model>Bus 6x2 Engine</Model>
-              <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber>
-              <Date>2017-02-15T11:00:00Z</Date>
-              <AppVersion>VectoEngine x.y</AppVersion>
-              <Displacement>12730</Displacement>
-              <RatedSpeed>1800</RatedSpeed>
-              <RatedPower>325032</RatedPower>
-              <MaxEngineTorque>2134</MaxEngineTorque>
-              <WHRType>
-                <v2.3:MechanicalOutputICE>false</v2.3:MechanicalOutputICE>
-                <v2.3:MechanicalOutputDrivetrain>false</v2.3:MechanicalOutputDrivetrain>
-                <v2.3:ElectricalOutput>false</v2.3:ElectricalOutput>
-              </WHRType>
-              <Mode>
-                <IdlingSpeed>600</IdlingSpeed>
-                <FullLoadAndDragCurve>
-                  <Entry engineSpeed="600.00" maxTorque="1188.00" dragTorque="-138.00" />
-                  <Entry engineSpeed="800.00" maxTorque="1661.00" dragTorque="-143.00" />
-                  <Entry engineSpeed="1000.00" maxTorque="2134.00" dragTorque="-152.00" />
-                  <Entry engineSpeed="1200.00" maxTorque="2134.00" dragTorque="-165.00" />
-                  <Entry engineSpeed="1400.00" maxTorque="2134.00" dragTorque="-187.00" />
-                  <Entry engineSpeed="1600.00" maxTorque="1928.00" dragTorque="-217.00" />
-                  <Entry engineSpeed="1800.00" maxTorque="1722.00" dragTorque="-244.00" />
-                  <Entry engineSpeed="2000.00" maxTorque="1253.00" dragTorque="-278.00" />
-                  <Entry engineSpeed="2100.00" maxTorque="1019.00" dragTorque="-296.00" />
-                  <Entry engineSpeed="2200.00" maxTorque="0.00" dragTorque="-314.00" />
-                </FullLoadAndDragCurve>
-                <Fuels>
-                  <FuelType>Diesel CI</FuelType>
-                </Fuels>
-              </Mode>
-            </Data>
-          </Engine>
-          <Transmission>
-            <Data xsi:type="TransmissionDataPIFType">
-              <Manufacturer>Generic Gearbox Manufacturer Primary</Manufacturer>
-              <Model>Generic 40t Long Haul Truck Gearbox Primary</Model>
-              <MainCertificationMethod>Standard values</MainCertificationMethod>
-              <Date>2017-01-11T11:00:00Z</Date>
-              <AppVersion>3.0.1</AppVersion>
-              <TransmissionType>AMT</TransmissionType>
-              <Gears xsi:type="TransmissionGearsPIFType">
-                <Gear number="1">
-                  <Ratio>14.930</Ratio>
-                  <MaxTorque>1900</MaxTorque>
-                  <MaxSpeed>2000</MaxSpeed>
-                </Gear>
-                <Gear number="2">
-                  <Ratio>11.640</Ratio>
-                  <MaxTorque>1900</MaxTorque>
-                  <MaxSpeed>2000</MaxSpeed>
-                </Gear>
-                <Gear number="3">
-                  <Ratio>9.020</Ratio>
-                  <MaxSpeed>2000</MaxSpeed>
-                </Gear>
-                <Gear number="4">
-                  <Ratio>7.040</Ratio>
-                  <MaxSpeed>2000</MaxSpeed>
-                </Gear>
-                <Gear number="5">
-                  <Ratio>5.640</Ratio>
-                  <MaxSpeed>2000</MaxSpeed>
-                </Gear>
-                <Gear number="6">
-                  <Ratio>4.400</Ratio>
-                  <MaxSpeed>2000</MaxSpeed>
-                </Gear>
-                <Gear number="7">
-                  <Ratio>3.390</Ratio>
-                  <MaxSpeed>2000</MaxSpeed>
-                </Gear>
-                <Gear number="8">
-                  <Ratio>2.650</Ratio>
-                  <MaxSpeed>2000</MaxSpeed>
-                </Gear>
-                <Gear number="9">
-                  <Ratio>2.050</Ratio>
-                  <MaxSpeed>2000</MaxSpeed>
-                </Gear>
-                <Gear number="10">
-                  <Ratio>1.600</Ratio>
-                  <MaxSpeed>2000</MaxSpeed>
-                </Gear>
-                <Gear number="11">
-                  <Ratio>1.280</Ratio>
-                  <MaxSpeed>2000</MaxSpeed>
-                </Gear>
-                <Gear number="12">
-                  <Ratio>1.000</Ratio>
-                </Gear>
-              </Gears>
-            </Data>
-          </Transmission>
-          <Axlegear>
-            <Data xsi:type="AxlegearDataPIFType">
-              <Manufacturer>Generic Gearbox Manufacturer</Manufacturer>
-              <Model>Generic 40t Long Haul Truck AxleGear Primary</Model>
-              <CertificationMethod>Standard values</CertificationMethod>
-              <Date>2017-01-11T11:00:00Z</Date>
-              <AppVersion>3.0.1</AppVersion>
-              <LineType>Single portal axle</LineType>
-              <Ratio>2.590</Ratio>
-            </Data>
-          </Axlegear>
-          <AxleWheels>
-            <Data xsi:type="AxleWheelsDataPIFType">
-              <Axles>
-                <Axle axleNumber="1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="v2.0:AxleDataDeclarationType">
-                  <v2.0:AxleType>VehicleNonDriven</v2.0:AxleType>
-                  <v2.0:TwinTyres>false</v2.0:TwinTyres>
-                  <v2.0:Steered>true</v2.0:Steered>
-                  <v2.0:Tyre>
-                    <v2.0:Data id="WHL-5432198760-315-70-R22.5" xsi:type="v2.0:TyreDataDeclarationType">
-                      <v2.0:Manufacturer>Generic Wheels Manufacturer</v2.0:Manufacturer>
-                      <v2.0:Model>Generic Wheel</v2.0:Model>
-                      <v2.0:CertificationNumber>e12*0815/8051*2017/05E0000*00</v2.0:CertificationNumber>
-                      <v2.0:Date>2017-01-11T14:00:00Z</v2.0:Date>
-                      <v2.0:AppVersion>Tyre Generation App 1.0</v2.0:AppVersion>
-                      <v2.0:Dimension>315/70 R22.5</v2.0:Dimension>
-                      <v2.0:RRCDeclared>0.0055</v2.0:RRCDeclared>
-                      <v2.0:FzISO>31300</v2.0:FzISO>
-                    </v2.0:Data>
-                    <v2.0:Signature>
-                      <di:Reference URI="#WHL-5432198760-315-70-R22.5" xmlns:di="http://www.w3.org/2000/09/xmldsig#">
-                        <di:Transforms>
-                          <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" />
-                          <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
-                        </di:Transforms>
-                        <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
-                        <di:DigestValue>4TkUGQTX8tevHOU9Cj9uyCFuI/aqcEYlo/gyVjVQmv0=</di:DigestValue>
-                      </di:Reference>
-                    </v2.0:Signature>
-                  </v2.0:Tyre>
-                </Axle>
-                <Axle axleNumber="2" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="v2.0:AxleDataDeclarationType">
-                  <v2.0:AxleType>VehicleDriven</v2.0:AxleType>
-                  <v2.0:TwinTyres>true</v2.0:TwinTyres>
-                  <v2.0:Steered>false</v2.0:Steered>
-                  <v2.0:Tyre>
-                    <v2.0:Data id="WHL-5432198760-315-70-R22.5" xsi:type="v2.0:TyreDataDeclarationType">
-                      <v2.0:Manufacturer>Generic Wheels Manufacturer</v2.0:Manufacturer>
-                      <v2.0:Model>Generic Wheel</v2.0:Model>
-                      <v2.0:CertificationNumber>e12*0815/8051*2017/05E0000*00</v2.0:CertificationNumber>
-                      <v2.0:Date>2017-01-11T14:00:00Z</v2.0:Date>
-                      <v2.0:AppVersion>Tyre Generation App 1.0</v2.0:AppVersion>
-                      <v2.0:Dimension>315/70 R22.5</v2.0:Dimension>
-                      <v2.0:RRCDeclared>0.0063</v2.0:RRCDeclared>
-                      <v2.0:FzISO>31300</v2.0:FzISO>
-                    </v2.0:Data>
-                    <v2.0:Signature>
-                      <di:Reference URI="#WHL-5432198760-315-70-R22.5" xmlns:di="http://www.w3.org/2000/09/xmldsig#">
-                        <di:Transforms>
-                          <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" />
-                          <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
-                        </di:Transforms>
-                        <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
-                        <di:DigestValue>KljvtvGUUQ/L7MiLVAqU+bckL5PNDNNwdeLH9kUVrfM=</di:DigestValue>
-                      </di:Reference>
-                    </v2.0:Signature>
-                  </v2.0:Tyre>
-                </Axle>
-                <Axle axleNumber="3" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="v2.0:AxleDataDeclarationType">
-                  <v2.0:AxleType>VehicleNonDriven</v2.0:AxleType>
-                  <v2.0:TwinTyres>false</v2.0:TwinTyres>
-                  <v2.0:Steered>false</v2.0:Steered>
-                  <v2.0:Tyre>
-                    <v2.0:Data id="WHL-5432198760-315-70-R22.5" xsi:type="v2.0:TyreDataDeclarationType">
-                      <v2.0:Manufacturer>Generic Wheels Manufacturer</v2.0:Manufacturer>
-                      <v2.0:Model>Generic Wheel</v2.0:Model>
-                      <v2.0:CertificationNumber>e12*0815/8051*2017/05E0000*00</v2.0:CertificationNumber>
-                      <v2.0:Date>2017-01-11T14:00:00Z</v2.0:Date>
-                      <v2.0:AppVersion>Tyre Generation App 1.0</v2.0:AppVersion>
-                      <v2.0:Dimension>315/70 R22.5</v2.0:Dimension>
-                      <v2.0:RRCDeclared>0.0055</v2.0:RRCDeclared>
-                      <v2.0:FzISO>31300</v2.0:FzISO>
-                    </v2.0:Data>
-                    <v2.0:Signature>
-                      <di:Reference URI="#WHL-5432198760-315-70-R22.5" xmlns:di="http://www.w3.org/2000/09/xmldsig#">
-                        <di:Transforms>
-                          <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" />
-                          <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
-                        </di:Transforms>
-                        <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
-                        <di:DigestValue>4TkUGQTX8tevHOU9Cj9uyCFuI/aqcEYlo/gyVjVQmv0=</di:DigestValue>
-                      </di:Reference>
-                    </v2.0:Signature>
-                  </v2.0:Tyre>
-                </Axle>
-              </Axles>
-            </Data>
-          </AxleWheels>
-          <Auxiliaries>
-            <Data xsi:type="AuxiliaryDataPIFType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1">
-              <Fan>
-                <Technology>Hydraulic driven - Constant displacement pump</Technology>
-              </Fan>
-              <SteeringPump>
-                <Technology axleNumber="1">Variable displacement elec. controlled</Technology>
-              </SteeringPump>
-              <ElectricSystem>
-                <AlternatorTechnology>conventional</AlternatorTechnology>
-                <SupplyFromHEVPossible>false</SupplyFromHEVPossible>
-              </ElectricSystem>
-              <PneumaticSystem>
-                <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply>
-                <CompressorDrive>electrically</CompressorDrive>
-                <Clutch>none</Clutch>
-                <CompressorRatio>1.000</CompressorRatio>
-                <SmartCompressionSystem>true</SmartCompressionSystem>
-                <SmartRegenerationSystem>false</SmartRegenerationSystem>
-                <AirsuspensionControl>electronically</AirsuspensionControl>
-                <PneumaticSCRReagentDosing>true</PneumaticSCRReagentDosing>
-              </PneumaticSystem>
-              <HVAC>
-                <AdjustableCoolantThermostat>true</AdjustableCoolantThermostat>
-                <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger>
-              </HVAC>
-            </Data>
-          </Auxiliaries>
-        </Components>
-      </Vehicle>
-      <InputDataSignature>
-        <di:Reference URI="#VEH-PrimaryBus_SmartPS">
-          <di:Transforms>
-            <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" />
-            <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
-          </di:Transforms>
-          <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
-          <di:DigestValue>c/SAad1K6yd0rTkcUZHyNiWrUzOMRnzp7BtAQwBSlOo=</di:DigestValue>
-        </di:Reference>
-      </InputDataSignature>
-      <ManufacturerRecordSignature>
-        <di:Reference URI="#RESULT-5debfa6af6cc4cdca854">
-          <di:Transforms>
-            <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" />
-            <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
-          </di:Transforms>
-          <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
-          <di:DigestValue>rnHfLevq9mOW+IJrTGf+ZccNxAUI9e3qF7lzBKpequ8=</di:DigestValue>
-        </di:Reference>
-      </ManufacturerRecordSignature>
-      <Results>
-        <Status>success</Status>
-        <Result status="success">
-          <VehicleGroup>P33SD</VehicleGroup>
-          <Mission>Heavy Urban</Mission>
-          <SimulationParameters>
-            <TotalVehicleMass unit="kg">15527.52</TotalVehicleMass>
-            <Payload unit="kg">1352.52</Payload>
-            <PassengerCount>19.89</PassengerCount>
-            <FuelMode>single fuel mode</FuelMode>
-          </SimulationParameters>
-          <Fuel type="Diesel CI">
-            <EnergyConsumption unit="MJ/km">21.18222</EnergyConsumption>
-          </Fuel>
-          <CO2 unit="g/km">1552.70</CO2>
-        </Result>
-        <Result status="success">
-          <VehicleGroup>P33SD</VehicleGroup>
-          <Mission>Heavy Urban</Mission>
-          <SimulationParameters>
-            <TotalVehicleMass unit="kg">20937.60</TotalVehicleMass>
-            <Payload unit="kg">6762.60</Payload>
-            <PassengerCount>99.45</PassengerCount>
-            <FuelMode>single fuel mode</FuelMode>
-          </SimulationParameters>
-          <Fuel type="Diesel CI">
-            <EnergyConsumption unit="MJ/km">25.34865</EnergyConsumption>
-          </Fuel>
-          <CO2 unit="g/km">1858.11</CO2>
-        </Result>
-        <Result status="success">
-          <VehicleGroup>P33SD</VehicleGroup>
-          <Mission>Urban</Mission>
-          <SimulationParameters>
-            <TotalVehicleMass unit="kg">15527.52</TotalVehicleMass>
-            <Payload unit="kg">1352.52</Payload>
-            <PassengerCount>19.89</PassengerCount>
-            <FuelMode>single fuel mode</FuelMode>
-          </SimulationParameters>
-          <Fuel type="Diesel CI">
-            <EnergyConsumption unit="MJ/km">16.73134</EnergyConsumption>
-          </Fuel>
-          <CO2 unit="g/km">1226.44</CO2>
-        </Result>
-        <Result status="success">
-          <VehicleGroup>P33SD</VehicleGroup>
-          <Mission>Urban</Mission>
-          <SimulationParameters>
-            <TotalVehicleMass unit="kg">20937.60</TotalVehicleMass>
-            <Payload unit="kg">6762.60</Payload>
-            <PassengerCount>99.45</PassengerCount>
-            <FuelMode>single fuel mode</FuelMode>
-          </SimulationParameters>
-          <Fuel type="Diesel CI">
-            <EnergyConsumption unit="MJ/km">20.18763</EnergyConsumption>
-          </Fuel>
-          <CO2 unit="g/km">1479.80</CO2>
-        </Result>
-        <Result status="success">
-          <VehicleGroup>P33SD</VehicleGroup>
-          <Mission>Suburban</Mission>
-          <SimulationParameters>
-            <TotalVehicleMass unit="kg">15527.52</TotalVehicleMass>
-            <Payload unit="kg">1352.52</Payload>
-            <PassengerCount>19.89</PassengerCount>
-            <FuelMode>single fuel mode</FuelMode>
-          </SimulationParameters>
-          <Fuel type="Diesel CI">
-            <EnergyConsumption unit="MJ/km">14.37825</EnergyConsumption>
-          </Fuel>
-          <CO2 unit="g/km">1053.96</CO2>
-        </Result>
-        <Result status="success">
-          <VehicleGroup>P33SD</VehicleGroup>
-          <Mission>Suburban</Mission>
-          <SimulationParameters>
-            <TotalVehicleMass unit="kg">20937.60</TotalVehicleMass>
-            <Payload unit="kg">6762.60</Payload>
-            <PassengerCount>99.45</PassengerCount>
-            <FuelMode>single fuel mode</FuelMode>
-          </SimulationParameters>
-          <Fuel type="Diesel CI">
-            <EnergyConsumption unit="MJ/km">17.60724</EnergyConsumption>
-          </Fuel>
-          <CO2 unit="g/km">1290.65</CO2>
-        </Result>
-        <Result status="success">
-          <VehicleGroup>P33SD</VehicleGroup>
-          <Mission>Interurban</Mission>
-          <SimulationParameters>
-            <TotalVehicleMass unit="kg">15469.51</TotalVehicleMass>
-            <Payload unit="kg">1294.51</Payload>
-            <PassengerCount>18.23</PassengerCount>
-            <FuelMode>single fuel mode</FuelMode>
-          </SimulationParameters>
-          <Fuel type="Diesel CI">
-            <EnergyConsumption unit="MJ/km">11.83208</EnergyConsumption>
-          </Fuel>
-          <CO2 unit="g/km">867.32</CO2>
-        </Result>
-        <Result status="success">
-          <VehicleGroup>P33SD</VehicleGroup>
-          <Mission>Interurban</Mission>
-          <SimulationParameters>
-            <TotalVehicleMass unit="kg">18411.57</TotalVehicleMass>
-            <Payload unit="kg">4236.57</Payload>
-            <PassengerCount>59.67</PassengerCount>
-            <FuelMode>single fuel mode</FuelMode>
-          </SimulationParameters>
-          <Fuel type="Diesel CI">
-            <EnergyConsumption unit="MJ/km">13.24974</EnergyConsumption>
-          </Fuel>
-          <CO2 unit="g/km">971.23</CO2>
-        </Result>
-        <Result status="success">
-          <VehicleGroup>P33DD</VehicleGroup>
-          <Mission>Heavy Urban</Mission>
-          <SimulationParameters>
-            <TotalVehicleMass unit="kg">16303.29</TotalVehicleMass>
-            <Payload unit="kg">1578.29</Payload>
-            <PassengerCount>23.21</PassengerCount>
-            <FuelMode>single fuel mode</FuelMode>
-          </SimulationParameters>
-          <Fuel type="Diesel CI">
-            <EnergyConsumption unit="MJ/km">22.68369</EnergyConsumption>
-          </Fuel>
-          <CO2 unit="g/km">1662.76</CO2>
-        </Result>
-        <Result status="success">
-          <VehicleGroup>P33DD</VehicleGroup>
-          <Mission>Heavy Urban</Mission>
-          <SimulationParameters>
-            <TotalVehicleMass unit="kg">22616.43</TotalVehicleMass>
-            <Payload unit="kg">7891.43</Payload>
-            <PassengerCount>116.05</PassengerCount>
-            <FuelMode>single fuel mode</FuelMode>
-          </SimulationParameters>
-          <Fuel type="Diesel CI">
-            <EnergyConsumption unit="MJ/km">27.86044</EnergyConsumption>
-          </Fuel>
-          <CO2 unit="g/km">2042.23</CO2>
-        </Result>
-        <Result status="success">
-          <VehicleGroup>P33DD</VehicleGroup>
-          <Mission>Urban</Mission>
-          <SimulationParameters>
-            <TotalVehicleMass unit="kg">16303.29</TotalVehicleMass>
-            <Payload unit="kg">1578.29</Payload>
-            <PassengerCount>23.21</PassengerCount>
-            <FuelMode>single fuel mode</FuelMode>
-          </SimulationParameters>
-          <Fuel type="Diesel CI">
-            <EnergyConsumption unit="MJ/km">17.89638</EnergyConsumption>
-          </Fuel>
-          <CO2 unit="g/km">1311.84</CO2>
-        </Result>
-        <Result status="success">
-          <VehicleGroup>P33DD</VehicleGroup>
-          <Mission>Urban</Mission>
-          <SimulationParameters>
-            <TotalVehicleMass unit="kg">22616.43</TotalVehicleMass>
-            <Payload unit="kg">7891.43</Payload>
-            <PassengerCount>116.05</PassengerCount>
-            <FuelMode>single fuel mode</FuelMode>
-          </SimulationParameters>
-          <Fuel type="Diesel CI">
-            <EnergyConsumption unit="MJ/km">22.16303</EnergyConsumption>
-          </Fuel>
-          <CO2 unit="g/km">1624.60</CO2>
-        </Result>
-        <Result status="success">
-          <VehicleGroup>P33DD</VehicleGroup>
-          <Mission>Suburban</Mission>
-          <SimulationParameters>
-            <TotalVehicleMass unit="kg">16303.29</TotalVehicleMass>
-            <Payload unit="kg">1578.29</Payload>
-            <PassengerCount>23.21</PassengerCount>
-            <FuelMode>single fuel mode</FuelMode>
-          </SimulationParameters>
-          <Fuel type="Diesel CI">
-            <EnergyConsumption unit="MJ/km">15.31725</EnergyConsumption>
-          </Fuel>
-          <CO2 unit="g/km">1122.79</CO2>
-        </Result>
-        <Result status="success">
-          <VehicleGroup>P33DD</VehicleGroup>
-          <Mission>Suburban</Mission>
-          <SimulationParameters>
-            <TotalVehicleMass unit="kg">22616.43</TotalVehicleMass>
-            <Payload unit="kg">7891.43</Payload>
-            <PassengerCount>116.05</PassengerCount>
-            <FuelMode>single fuel mode</FuelMode>
-          </SimulationParameters>
-          <Fuel type="Diesel CI">
-            <EnergyConsumption unit="MJ/km">19.24665</EnergyConsumption>
-          </Fuel>
-          <CO2 unit="g/km">1410.82</CO2>
-        </Result>
-        <Result status="success">
-          <VehicleGroup>P34SD</VehicleGroup>
-          <Mission>Interurban</Mission>
-          <SimulationParameters>
-            <TotalVehicleMass unit="kg">16467.68</TotalVehicleMass>
-            <Payload unit="kg">1254.68</Payload>
-            <PassengerCount>17.67</PassengerCount>
-            <FuelMode>single fuel mode</FuelMode>
-          </SimulationParameters>
-          <Fuel type="Diesel CI">
-            <EnergyConsumption unit="MJ/km">11.94563</EnergyConsumption>
-          </Fuel>
-          <CO2 unit="g/km">875.64</CO2>
-        </Result>
-        <Result status="success">
-          <VehicleGroup>P34SD</VehicleGroup>
-          <Mission>Interurban</Mission>
-          <SimulationParameters>
-            <TotalVehicleMass unit="kg">19319.21</TotalVehicleMass>
-            <Payload unit="kg">4106.21</Payload>
-            <PassengerCount>57.83</PassengerCount>
-            <FuelMode>single fuel mode</FuelMode>
-          </SimulationParameters>
-          <Fuel type="Diesel CI">
-            <EnergyConsumption unit="MJ/km">13.32323</EnergyConsumption>
-          </Fuel>
-          <CO2 unit="g/km">976.62</CO2>
-        </Result>
-        <Result status="success">
-          <VehicleGroup>P34SD</VehicleGroup>
-          <Mission>Coach</Mission>
-          <SimulationParameters>
-            <TotalVehicleMass unit="kg">16490.49</TotalVehicleMass>
-            <Payload unit="kg">1277.49</Payload>
-            <PassengerCount>17.99</PassengerCount>
-            <FuelMode>single fuel mode</FuelMode>
-          </SimulationParameters>
-          <Fuel type="Diesel CI">
-            <EnergyConsumption unit="MJ/km">8.71857</EnergyConsumption>
-          </Fuel>
-          <CO2 unit="g/km">639.09</CO2>
-        </Result>
-        <Result status="success">
-          <VehicleGroup>P34SD</VehicleGroup>
-          <Mission>Coach</Mission>
-          <SimulationParameters>
-            <TotalVehicleMass unit="kg">18406.72</TotalVehicleMass>
-            <Payload unit="kg">3193.72</Payload>
-            <PassengerCount>44.98</PassengerCount>
-            <FuelMode>single fuel mode</FuelMode>
-          </SimulationParameters>
-          <Fuel type="Diesel CI">
-            <EnergyConsumption unit="MJ/km">9.20204</EnergyConsumption>
-          </Fuel>
-          <CO2 unit="g/km">674.53</CO2>
-        </Result>
-        <Result status="success">
-          <VehicleGroup>P34DD</VehicleGroup>
-          <Mission>Interurban</Mission>
-          <SimulationParameters>
-            <TotalVehicleMass unit="kg">19588.08</TotalVehicleMass>
-            <Payload unit="kg">1738.08</Payload>
-            <PassengerCount>24.48</PassengerCount>
-            <FuelMode>single fuel mode</FuelMode>
-          </SimulationParameters>
-          <Fuel type="Diesel CI">
-            <EnergyConsumption unit="MJ/km">13.59063</EnergyConsumption>
-          </Fuel>
-          <CO2 unit="g/km">996.22</CO2>
-        </Result>
-        <Result status="success">
-          <VehicleGroup>P34DD</VehicleGroup>
-          <Mission>Interurban</Mission>
-          <SimulationParameters>
-            <TotalVehicleMass unit="kg">23643.60</TotalVehicleMass>
-            <Payload unit="kg">5793.60</Payload>
-            <PassengerCount>81.60</PassengerCount>
-            <FuelMode>single fuel mode</FuelMode>
-          </SimulationParameters>
-          <Fuel type="Diesel CI">
-            <EnergyConsumption unit="MJ/km">15.56945</EnergyConsumption>
-          </Fuel>
-          <CO2 unit="g/km">1141.27</CO2>
-        </Result>
-        <Result status="success">
-          <VehicleGroup>P34DD</VehicleGroup>
-          <Mission>Coach</Mission>
-          <SimulationParameters>
-            <TotalVehicleMass unit="kg">19703.95</TotalVehicleMass>
-            <Payload unit="kg">1853.95</Payload>
-            <PassengerCount>26.11</PassengerCount>
-            <FuelMode>single fuel mode</FuelMode>
-          </SimulationParameters>
-          <Fuel type="Diesel CI">
-            <EnergyConsumption unit="MJ/km">9.82883</EnergyConsumption>
-          </Fuel>
-          <CO2 unit="g/km">720.47</CO2>
-        </Result>
-        <Result status="success">
-          <VehicleGroup>P34DD</VehicleGroup>
-          <Mission>Coach</Mission>
-          <SimulationParameters>
-            <TotalVehicleMass unit="kg">22484.88</TotalVehicleMass>
-            <Payload unit="kg">4634.88</Payload>
-            <PassengerCount>65.28</PassengerCount>
-            <FuelMode>single fuel mode</FuelMode>
-          </SimulationParameters>
-          <Fuel type="Diesel CI">
-            <EnergyConsumption unit="MJ/km">10.56696</EnergyConsumption>
-          </Fuel>
-          <CO2 unit="g/km">774.58</CO2>
-        </Result>
-      </Results>
-      <ApplicationInformation>
-        <SimulationToolVersion>0.7.3.2247-DEV !!NOT FOR CERTIFICATION!!</SimulationToolVersion>
-        <Date>2021-07-16T23:11:51.7641727Z</Date>
-      </ApplicationInformation>
-    </Data>
-    <Signature>
-      <di:Reference URI="#VEH-9e4666291f0a4d4f9abb">
-        <di:Transforms>
-          <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" />
-          <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
-        </di:Transforms>
-        <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
-        <di:DigestValue>9Pz6So6VfBP+rgvPc/WkUnRyHIQ8DMhNunuMnYMksK8=</di:DigestValue>
-      </di:Reference>
-    </Signature>
-  </PrimaryVehicle>
-</VectoOutputMultistage>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<VectoOutputMultistage xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.8="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" xmlns:vif0.1="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 V:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistage.0.1.xsd">
+	<PrimaryVehicle>
+		<Data xsi:type="PrimaryVehicleDataType" id="PIF-584956b9e3ab43acaf97">
+			<Vehicle xsi:type="VehiclePIFType">
+				<ManufacturerPrimaryVehicle>Generic Truck Manufacturer</ManufacturerPrimaryVehicle>
+				<ManufacturerAddressPrimaryVehicle>Street, ZIP City</ManufacturerAddressPrimaryVehicle>
+				<Model>Generic Model Primary</Model>
+				<VIN>VEH-1234567890_SmartPS</VIN>
+				<Date>2017-02-15T11:00:00Z</Date>
+				<LegislativeCategory>M3</LegislativeCategory>
+				<ChassisConfiguration>Bus</ChassisConfiguration>
+				<AxleConfiguration>6x2</AxleConfiguration>
+				<Articulated>false</Articulated>
+				<TechnicalPermissibleMaximumLadenMass>40000</TechnicalPermissibleMaximumLadenMass>
+				<IdlingSpeed>600</IdlingSpeed>
+				<RetarderType>Transmission Output Retarder</RetarderType>
+				<RetarderRatio>1.000</RetarderRatio>
+				<AngledriveType>None</AngledriveType>
+				<ZeroEmissionVehicle>false</ZeroEmissionVehicle>
+				<ADAS xmlns:adas="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xsi:type="adas:AdvancedDriverAssistantSystemsType">
+					<adas:EngineStopStart>false</adas:EngineStopStart>
+					<adas:EcoRollWithoutEngineStop>false</adas:EcoRollWithoutEngineStop>
+					<adas:EcoRollWithEngineStop>false</adas:EcoRollWithEngineStop>
+					<adas:PredictiveCruiseControl>none</adas:PredictiveCruiseControl>
+				</ADAS>
+				<TorqueLimits xmlns:tcl="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="tcl:TorqueLimitsType">
+					<tcl:Entry gear="6" maxTorque="1800"/>
+					<tcl:Entry gear="1" maxTorque="2500"/>
+					<tcl:Entry gear="12" maxTorque="1900"/>
+				</TorqueLimits>
+				<Components xsi:type="VehicleComponentsPIFType">
+					<Engine>
+						<Data xsi:type="EngineDataPIFType">
+							<Manufacturer>Generic Engine Manufacturer Primary</Manufacturer>
+							<Model>Bus 6x2 Engine</Model>
+							<CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber>
+							<Date>2017-02-15T11:00:00Z</Date>
+							<AppVersion>VectoEngine x.y</AppVersion>
+							<Displacement>12730</Displacement>
+							<RatedSpeed>1800</RatedSpeed>
+							<RatedPower>325032</RatedPower>
+							<MaxEngineTorque>2134</MaxEngineTorque>
+							<WHRType>
+								<MechanicalOutputICE xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3">false</MechanicalOutputICE>
+								<MechanicalOutputDrivetrain xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3">false</MechanicalOutputDrivetrain>
+								<ElectricalOutput xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3">false</ElectricalOutput>
+							</WHRType>
+							<Mode>
+								<IdlingSpeed>600</IdlingSpeed>
+								<FullLoadAndDragCurve>
+									<Entry engineSpeed="600.00" maxTorque="1188.00" dragTorque="-138.00"/>
+									<Entry engineSpeed="800.00" maxTorque="1661.00" dragTorque="-143.00"/>
+									<Entry engineSpeed="1000.00" maxTorque="2134.00" dragTorque="-152.00"/>
+									<Entry engineSpeed="1200.00" maxTorque="2134.00" dragTorque="-165.00"/>
+									<Entry engineSpeed="1400.00" maxTorque="2134.00" dragTorque="-187.00"/>
+									<Entry engineSpeed="1600.00" maxTorque="1928.00" dragTorque="-217.00"/>
+									<Entry engineSpeed="1800.00" maxTorque="1722.00" dragTorque="-244.00"/>
+									<Entry engineSpeed="2000.00" maxTorque="1253.00" dragTorque="-278.00"/>
+									<Entry engineSpeed="2100.00" maxTorque="1019.00" dragTorque="-296.00"/>
+									<Entry engineSpeed="2200.00" maxTorque="0.00" dragTorque="-314.00"/>
+								</FullLoadAndDragCurve>
+								<Fuels>
+									<FuelType>Diesel CI</FuelType>
+								</Fuels>
+							</Mode>
+						</Data>
+					</Engine>
+					<Transmission>
+						<Data xsi:type="TransmissionDataPIFType">
+							<Manufacturer>Generic Gearbox Manufacturer Primary</Manufacturer>
+							<Model>Generic 40t Long Haul Truck Gearbox Primary</Model>
+							<MainCertificationMethod>Standard values</MainCertificationMethod>
+							<Date>2017-01-11T11:00:00Z</Date>
+							<AppVersion>3.0.1</AppVersion>
+							<TransmissionType>AMT</TransmissionType>
+							<Gears xsi:type="TransmissionGearsPIFType">
+								<Gear number="1">
+									<Ratio>14.930</Ratio>
+									<MaxTorque>1900</MaxTorque>
+									<MaxSpeed>2000</MaxSpeed>
+								</Gear>
+								<Gear number="2">
+									<Ratio>11.640</Ratio>
+									<MaxTorque>1900</MaxTorque>
+									<MaxSpeed>2000</MaxSpeed>
+								</Gear>
+								<Gear number="3">
+									<Ratio>9.020</Ratio>
+									<MaxSpeed>2000</MaxSpeed>
+								</Gear>
+								<Gear number="4">
+									<Ratio>7.040</Ratio>
+									<MaxSpeed>2000</MaxSpeed>
+								</Gear>
+								<Gear number="5">
+									<Ratio>5.640</Ratio>
+									<MaxSpeed>2000</MaxSpeed>
+								</Gear>
+								<Gear number="6">
+									<Ratio>4.400</Ratio>
+									<MaxSpeed>2000</MaxSpeed>
+								</Gear>
+								<Gear number="7">
+									<Ratio>3.390</Ratio>
+									<MaxSpeed>2000</MaxSpeed>
+								</Gear>
+								<Gear number="8">
+									<Ratio>2.650</Ratio>
+									<MaxSpeed>2000</MaxSpeed>
+								</Gear>
+								<Gear number="9">
+									<Ratio>2.050</Ratio>
+									<MaxSpeed>2000</MaxSpeed>
+								</Gear>
+								<Gear number="10">
+									<Ratio>1.600</Ratio>
+									<MaxSpeed>2000</MaxSpeed>
+								</Gear>
+								<Gear number="11">
+									<Ratio>1.280</Ratio>
+									<MaxSpeed>2000</MaxSpeed>
+								</Gear>
+								<Gear number="12">
+									<Ratio>1.000</Ratio>
+								</Gear>
+							</Gears>
+						</Data>
+					</Transmission>
+					<Axlegear>
+						<Data xsi:type="AxlegearDataPIFType">
+							<Manufacturer>Generic Gearbox Manufacturer</Manufacturer>
+							<Model>Generic 40t Long Haul Truck AxleGear Primary</Model>
+							<CertificationMethod>Standard values</CertificationMethod>
+							<Date>2017-01-11T11:00:00Z</Date>
+							<AppVersion>3.0.1</AppVersion>
+							<LineType>Single portal axle</LineType>
+							<Ratio>2.590</Ratio>
+						</Data>
+					</Axlegear>
+					<AxleWheels>
+						<Data xsi:type="AxleWheelsDataPIFType">
+							<Axles>
+								<vif0.1:Axle axleNumber="1" xsi:type="AxleDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0">
+									<AxleType>VehicleNonDriven</AxleType>
+									<TwinTyres>false</TwinTyres>
+									<Steered>true</Steered>
+									<Tyre>
+										<Data id="WHL-5432198760-315-70-R22.5" xsi:type="TyreDataDeclarationType">
+											<Manufacturer>Generic Wheels Manufacturer</Manufacturer>
+											<Model>Generic Wheel</Model>
+											<CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber>
+											<Date>2017-01-11T14:00:00Z</Date>
+											<AppVersion>Tyre Generation App 1.0</AppVersion>
+											<Dimension>315/70 R22.5</Dimension>
+											<RRCDeclared>0.0055</RRCDeclared>
+											<FzISO>31300</FzISO>
+										</Data>
+										<Signature>
+											<di:Reference URI="#WHL-5432198760-315-70-R22.5" xmlns:di="http://www.w3.org/2000/09/xmldsig#">
+												<di:Transforms>
+													<di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/>
+													<di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
+												</di:Transforms>
+												<di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
+												<di:DigestValue>4TkUGQTX8tevHOU9Cj9uyCFuI/aqcEYlo/gyVjVQmv0=</di:DigestValue>
+											</di:Reference>
+										</Signature>
+									</Tyre>
+								</vif0.1:Axle>
+								<vif0.1:Axle axleNumber="2" xsi:type="AxleDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0">
+									<AxleType>VehicleDriven</AxleType>
+									<TwinTyres>true</TwinTyres>
+									<Steered>false</Steered>
+									<Tyre>
+										<Data id="WHL-5432198760-315-70-R22.5" xsi:type="TyreDataDeclarationType">
+											<Manufacturer>Generic Wheels Manufacturer</Manufacturer>
+											<Model>Generic Wheel</Model>
+											<CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber>
+											<Date>2017-01-11T14:00:00Z</Date>
+											<AppVersion>Tyre Generation App 1.0</AppVersion>
+											<Dimension>315/70 R22.5</Dimension>
+											<RRCDeclared>0.0063</RRCDeclared>
+											<FzISO>31300</FzISO>
+										</Data>
+										<Signature>
+											<di:Reference URI="#WHL-5432198760-315-70-R22.5" xmlns:di="http://www.w3.org/2000/09/xmldsig#">
+												<di:Transforms>
+													<di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/>
+													<di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
+												</di:Transforms>
+												<di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
+												<di:DigestValue>KljvtvGUUQ/L7MiLVAqU+bckL5PNDNNwdeLH9kUVrfM=</di:DigestValue>
+											</di:Reference>
+										</Signature>
+									</Tyre>
+								</vif0.1:Axle>
+								<vif0.1:Axle axleNumber="3" xsi:type="AxleDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0">
+									<AxleType>VehicleNonDriven</AxleType>
+									<TwinTyres>false</TwinTyres>
+									<Steered>false</Steered>
+									<Tyre>
+										<Data id="WHL-5432198760-315-70-R22.5" xsi:type="TyreDataDeclarationType">
+											<Manufacturer>Generic Wheels Manufacturer</Manufacturer>
+											<Model>Generic Wheel</Model>
+											<CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber>
+											<Date>2017-01-11T14:00:00Z</Date>
+											<AppVersion>Tyre Generation App 1.0</AppVersion>
+											<Dimension>315/70 R22.5</Dimension>
+											<RRCDeclared>0.0055</RRCDeclared>
+											<FzISO>31300</FzISO>
+										</Data>
+										<Signature>
+											<di:Reference URI="#WHL-5432198760-315-70-R22.5" xmlns:di="http://www.w3.org/2000/09/xmldsig#">
+												<di:Transforms>
+													<di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/>
+													<di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
+												</di:Transforms>
+												<di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
+												<di:DigestValue>4TkUGQTX8tevHOU9Cj9uyCFuI/aqcEYlo/gyVjVQmv0=</di:DigestValue>
+											</di:Reference>
+										</Signature>
+									</Tyre>
+								</vif0.1:Axle>
+							</Axles>
+						</Data>
+					</AxleWheels>
+					<Auxiliaries>
+						<Data xmlns:aux="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xsi:type="AuxiliaryDataPIFType">
+							<Fan>
+								<Technology>Hydraulic driven - Constant displacement pump</Technology>
+							</Fan>
+							<SteeringPump>
+								<Technology axleNumber="1">Variable displacement elec. controlled</Technology>
+							</SteeringPump>
+							<ElectricSystem>
+								<AlternatorTechnology>conventional</AlternatorTechnology>
+								<SupplyFromHEVPossible>false</SupplyFromHEVPossible>
+							</ElectricSystem>
+							<PneumaticSystem>
+								<SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply>
+								<CompressorDrive>mechanically</CompressorDrive>
+								<Clutch>none</Clutch>
+								<CompressorRatio>1.000</CompressorRatio>
+								<SmartCompressionSystem>true</SmartCompressionSystem>
+								<SmartRegenerationSystem>false</SmartRegenerationSystem>
+								<AirsuspensionControl>electronically</AirsuspensionControl>
+								<PneumaticSCRReagentDosing>true</PneumaticSCRReagentDosing>
+							</PneumaticSystem>
+							<HVAC>
+								<AdjustableCoolantThermostat>true</AdjustableCoolantThermostat>
+								<EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger>
+							</HVAC>
+						</Data>
+					</Auxiliaries>
+				</Components>
+			</Vehicle>
+			<InputDataSignature>
+				<di:Reference URI="#VEH-PrimaryBus_SmartPS">
+					<di:Transforms>
+						<di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/>
+						<di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
+					</di:Transforms>
+					<di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
+					<di:DigestValue>KyEUoR+pb/fnqRuLFC53Ft+RhDf+ABAdd1xxsMwH7io=</di:DigestValue>
+				</di:Reference>
+			</InputDataSignature>
+			<ManufacturerRecordSignature>
+				<di:Reference URI="#RESULT-77ea5cb9575a4fe3b401">
+					<di:Transforms>
+						<di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/>
+						<di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
+					</di:Transforms>
+					<di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
+					<di:DigestValue>jIFYjdZEqVpxFinMBSoXvJg8Wl3OjE09xRAnjEgnhhY=</di:DigestValue>
+				</di:Reference>
+			</ManufacturerRecordSignature>
+			<Results>
+				<Status>success</Status>
+				<Result status="success">
+					<VehicleGroup>P33SD</VehicleGroup>
+					<Mission>Heavy Urban</Mission>
+					<SimulationParameters>
+						<TotalVehicleMass unit="kg">15527.52</TotalVehicleMass>
+						<Payload unit="kg">1352.52</Payload>
+						<PassengerCount>19.89</PassengerCount>
+						<FuelMode>single fuel mode</FuelMode>
+					</SimulationParameters>
+					<Fuel type="Diesel CI">
+						<EnergyConsumption unit="MJ/km">21.22359</EnergyConsumption>
+					</Fuel>
+					<CO2 unit="g/km">1555.73</CO2>
+				</Result>
+				<Result status="success">
+					<VehicleGroup>P33SD</VehicleGroup>
+					<Mission>Heavy Urban</Mission>
+					<SimulationParameters>
+						<TotalVehicleMass unit="kg">20937.60</TotalVehicleMass>
+						<Payload unit="kg">6762.60</Payload>
+						<PassengerCount>99.45</PassengerCount>
+						<FuelMode>single fuel mode</FuelMode>
+					</SimulationParameters>
+					<Fuel type="Diesel CI">
+						<EnergyConsumption unit="MJ/km">25.40945</EnergyConsumption>
+					</Fuel>
+					<CO2 unit="g/km">1862.57</CO2>
+				</Result>
+				<Result status="success">
+					<VehicleGroup>P33SD</VehicleGroup>
+					<Mission>Urban</Mission>
+					<SimulationParameters>
+						<TotalVehicleMass unit="kg">15527.52</TotalVehicleMass>
+						<Payload unit="kg">1352.52</Payload>
+						<PassengerCount>19.89</PassengerCount>
+						<FuelMode>single fuel mode</FuelMode>
+					</SimulationParameters>
+					<Fuel type="Diesel CI">
+						<EnergyConsumption unit="MJ/km">16.74101</EnergyConsumption>
+					</Fuel>
+					<CO2 unit="g/km">1227.15</CO2>
+				</Result>
+				<Result status="success">
+					<VehicleGroup>P33SD</VehicleGroup>
+					<Mission>Urban</Mission>
+					<SimulationParameters>
+						<TotalVehicleMass unit="kg">20937.60</TotalVehicleMass>
+						<Payload unit="kg">6762.60</Payload>
+						<PassengerCount>99.45</PassengerCount>
+						<FuelMode>single fuel mode</FuelMode>
+					</SimulationParameters>
+					<Fuel type="Diesel CI">
+						<EnergyConsumption unit="MJ/km">20.24221</EnergyConsumption>
+					</Fuel>
+					<CO2 unit="g/km">1483.80</CO2>
+				</Result>
+				<Result status="success">
+					<VehicleGroup>P33SD</VehicleGroup>
+					<Mission>Suburban</Mission>
+					<SimulationParameters>
+						<TotalVehicleMass unit="kg">15527.52</TotalVehicleMass>
+						<Payload unit="kg">1352.52</Payload>
+						<PassengerCount>19.89</PassengerCount>
+						<FuelMode>single fuel mode</FuelMode>
+					</SimulationParameters>
+					<Fuel type="Diesel CI">
+						<EnergyConsumption unit="MJ/km">14.34578</EnergyConsumption>
+					</Fuel>
+					<CO2 unit="g/km">1051.58</CO2>
+				</Result>
+				<Result status="success">
+					<VehicleGroup>P33SD</VehicleGroup>
+					<Mission>Suburban</Mission>
+					<SimulationParameters>
+						<TotalVehicleMass unit="kg">20937.60</TotalVehicleMass>
+						<Payload unit="kg">6762.60</Payload>
+						<PassengerCount>99.45</PassengerCount>
+						<FuelMode>single fuel mode</FuelMode>
+					</SimulationParameters>
+					<Fuel type="Diesel CI">
+						<EnergyConsumption unit="MJ/km">17.60016</EnergyConsumption>
+					</Fuel>
+					<CO2 unit="g/km">1290.13</CO2>
+				</Result>
+				<Result status="success">
+					<VehicleGroup>P33DD</VehicleGroup>
+					<Mission>Heavy Urban</Mission>
+					<SimulationParameters>
+						<TotalVehicleMass unit="kg">16303.29</TotalVehicleMass>
+						<Payload unit="kg">1578.29</Payload>
+						<PassengerCount>23.21</PassengerCount>
+						<FuelMode>single fuel mode</FuelMode>
+					</SimulationParameters>
+					<Fuel type="Diesel CI">
+						<EnergyConsumption unit="MJ/km">22.72091</EnergyConsumption>
+					</Fuel>
+					<CO2 unit="g/km">1665.49</CO2>
+				</Result>
+				<Result status="success">
+					<VehicleGroup>P33DD</VehicleGroup>
+					<Mission>Heavy Urban</Mission>
+					<SimulationParameters>
+						<TotalVehicleMass unit="kg">22616.43</TotalVehicleMass>
+						<Payload unit="kg">7891.43</Payload>
+						<PassengerCount>116.05</PassengerCount>
+						<FuelMode>single fuel mode</FuelMode>
+					</SimulationParameters>
+					<Fuel type="Diesel CI">
+						<EnergyConsumption unit="MJ/km">27.95930</EnergyConsumption>
+					</Fuel>
+					<CO2 unit="g/km">2049.48</CO2>
+				</Result>
+				<Result status="success">
+					<VehicleGroup>P33DD</VehicleGroup>
+					<Mission>Urban</Mission>
+					<SimulationParameters>
+						<TotalVehicleMass unit="kg">16303.29</TotalVehicleMass>
+						<Payload unit="kg">1578.29</Payload>
+						<PassengerCount>23.21</PassengerCount>
+						<FuelMode>single fuel mode</FuelMode>
+					</SimulationParameters>
+					<Fuel type="Diesel CI">
+						<EnergyConsumption unit="MJ/km">17.90756</EnergyConsumption>
+					</Fuel>
+					<CO2 unit="g/km">1312.66</CO2>
+				</Result>
+				<Result status="success">
+					<VehicleGroup>P33DD</VehicleGroup>
+					<Mission>Urban</Mission>
+					<SimulationParameters>
+						<TotalVehicleMass unit="kg">22616.43</TotalVehicleMass>
+						<Payload unit="kg">7891.43</Payload>
+						<PassengerCount>116.05</PassengerCount>
+						<FuelMode>single fuel mode</FuelMode>
+					</SimulationParameters>
+					<Fuel type="Diesel CI">
+						<EnergyConsumption unit="MJ/km">22.23796</EnergyConsumption>
+					</Fuel>
+					<CO2 unit="g/km">1630.09</CO2>
+				</Result>
+				<Result status="success">
+					<VehicleGroup>P33DD</VehicleGroup>
+					<Mission>Suburban</Mission>
+					<SimulationParameters>
+						<TotalVehicleMass unit="kg">16303.29</TotalVehicleMass>
+						<Payload unit="kg">1578.29</Payload>
+						<PassengerCount>23.21</PassengerCount>
+						<FuelMode>single fuel mode</FuelMode>
+					</SimulationParameters>
+					<Fuel type="Diesel CI">
+						<EnergyConsumption unit="MJ/km">15.28035</EnergyConsumption>
+					</Fuel>
+					<CO2 unit="g/km">1120.08</CO2>
+				</Result>
+				<Result status="success">
+					<VehicleGroup>P33DD</VehicleGroup>
+					<Mission>Suburban</Mission>
+					<SimulationParameters>
+						<TotalVehicleMass unit="kg">22616.43</TotalVehicleMass>
+						<Payload unit="kg">7891.43</Payload>
+						<PassengerCount>116.05</PassengerCount>
+						<FuelMode>single fuel mode</FuelMode>
+					</SimulationParameters>
+					<Fuel type="Diesel CI">
+						<EnergyConsumption unit="MJ/km">19.26201</EnergyConsumption>
+					</Fuel>
+					<CO2 unit="g/km">1411.95</CO2>
+				</Result>
+				<Result status="success">
+					<VehicleGroup>P34SD</VehicleGroup>
+					<Mission>Interurban</Mission>
+					<SimulationParameters>
+						<TotalVehicleMass unit="kg">16239.55</TotalVehicleMass>
+						<Payload unit="kg">1254.68</Payload>
+						<PassengerCount>14.46</PassengerCount>
+						<FuelMode>single fuel mode</FuelMode>
+					</SimulationParameters>
+					<Fuel type="Diesel CI">
+						<EnergyConsumption unit="MJ/km">11.82464</EnergyConsumption>
+					</Fuel>
+					<CO2 unit="g/km">866.77</CO2>
+				</Result>
+				<Result status="success">
+					<VehicleGroup>P34SD</VehicleGroup>
+					<Mission>Interurban</Mission>
+					<SimulationParameters>
+						<TotalVehicleMass unit="kg">19319.21</TotalVehicleMass>
+						<Payload unit="kg">4106.21</Payload>
+						<PassengerCount>57.83</PassengerCount>
+						<FuelMode>single fuel mode</FuelMode>
+					</SimulationParameters>
+					<Fuel type="Diesel CI">
+						<EnergyConsumption unit="MJ/km">13.32341</EnergyConsumption>
+					</Fuel>
+					<CO2 unit="g/km">976.63</CO2>
+				</Result>
+				<Result status="success">
+					<VehicleGroup>P34SD</VehicleGroup>
+					<Mission>Coach</Mission>
+					<SimulationParameters>
+						<TotalVehicleMass unit="kg">16490.49</TotalVehicleMass>
+						<Payload unit="kg">1277.49</Payload>
+						<PassengerCount>17.99</PassengerCount>
+						<FuelMode>single fuel mode</FuelMode>
+					</SimulationParameters>
+					<Fuel type="Diesel CI">
+						<EnergyConsumption unit="MJ/km">8.71847</EnergyConsumption>
+					</Fuel>
+					<CO2 unit="g/km">639.08</CO2>
+				</Result>
+				<Result status="success">
+					<VehicleGroup>P34SD</VehicleGroup>
+					<Mission>Coach</Mission>
+					<SimulationParameters>
+						<TotalVehicleMass unit="kg">18406.72</TotalVehicleMass>
+						<Payload unit="kg">3193.72</Payload>
+						<PassengerCount>44.98</PassengerCount>
+						<FuelMode>single fuel mode</FuelMode>
+					</SimulationParameters>
+					<Fuel type="Diesel CI">
+						<EnergyConsumption unit="MJ/km">9.20255</EnergyConsumption>
+					</Fuel>
+					<CO2 unit="g/km">674.57</CO2>
+				</Result>
+				<Result status="success">
+					<VehicleGroup>P34DD</VehicleGroup>
+					<Mission>Interurban</Mission>
+					<SimulationParameters>
+						<TotalVehicleMass unit="kg">19298.40</TotalVehicleMass>
+						<Payload unit="kg">1448.40</Payload>
+						<PassengerCount>20.40</PassengerCount>
+						<FuelMode>single fuel mode</FuelMode>
+					</SimulationParameters>
+					<Fuel type="Diesel CI">
+						<EnergyConsumption unit="MJ/km">13.44807</EnergyConsumption>
+					</Fuel>
+					<CO2 unit="g/km">985.77</CO2>
+				</Result>
+				<Result status="success">
+					<VehicleGroup>P34DD</VehicleGroup>
+					<Mission>Interurban</Mission>
+					<SimulationParameters>
+						<TotalVehicleMass unit="kg">23643.60</TotalVehicleMass>
+						<Payload unit="kg">5793.60</Payload>
+						<PassengerCount>81.60</PassengerCount>
+						<FuelMode>single fuel mode</FuelMode>
+					</SimulationParameters>
+					<Fuel type="Diesel CI">
+						<EnergyConsumption unit="MJ/km">15.56740</EnergyConsumption>
+					</Fuel>
+					<CO2 unit="g/km">1141.12</CO2>
+				</Result>
+				<Result status="success">
+					<VehicleGroup>P34DD</VehicleGroup>
+					<Mission>Coach</Mission>
+					<SimulationParameters>
+						<TotalVehicleMass unit="kg">19703.95</TotalVehicleMass>
+						<Payload unit="kg">1853.95</Payload>
+						<PassengerCount>26.11</PassengerCount>
+						<FuelMode>single fuel mode</FuelMode>
+					</SimulationParameters>
+					<Fuel type="Diesel CI">
+						<EnergyConsumption unit="MJ/km">9.82937</EnergyConsumption>
+					</Fuel>
+					<CO2 unit="g/km">720.51</CO2>
+				</Result>
+				<Result status="success">
+					<VehicleGroup>P34DD</VehicleGroup>
+					<Mission>Coach</Mission>
+					<SimulationParameters>
+						<TotalVehicleMass unit="kg">22484.88</TotalVehicleMass>
+						<Payload unit="kg">4634.88</Payload>
+						<PassengerCount>65.28</PassengerCount>
+						<FuelMode>single fuel mode</FuelMode>
+					</SimulationParameters>
+					<Fuel type="Diesel CI">
+						<EnergyConsumption unit="MJ/km">10.56728</EnergyConsumption>
+					</Fuel>
+					<CO2 unit="g/km">774.60</CO2>
+				</Result>
+			</Results>
+			<ApplicationInformation>
+				<SimulationToolVersion>0.6.1.1957-DEV !!NOT FOR CERTIFICATION!!</SimulationToolVersion>
+				<Date>2020-05-27T08:16:48.0278823Z</Date>
+			</ApplicationInformation>
+		</Data>
+		<Signature>
+			<di:Reference URI="#PIF-584956b9e3ab43acaf97">
+				<di:Transforms>
+					<di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/>
+					<di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
+				</di:Transforms>
+				<di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
+				<di:DigestValue>GPW3cyV+VQrDzyGeryMrakfOlD+YUWtdaHz/C2lhxJQ=</di:DigestValue>
+			</di:Reference>
+		</Signature>
+	</PrimaryVehicle>
+</VectoOutputMultistage>
diff --git a/VectoCore/VectoXML.spp b/VectoCore/VectoXML.spp
index a18bdad0c3e962a29e4afe556f0a5240f7d01bf0..e776a5e7ab55e1e9b4a2c74f6e95757891ce3e4d 100644
--- a/VectoCore/VectoXML.spp
+++ b/VectoCore/VectoXML.spp
@@ -15,6 +15,7 @@
 			<File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.3\vehicle_sampleDualModeDualFuel.xml" HomeFolder="Yes"/>
 		</Folder>
 		<Folder FolderName="Schema 2.6DEV Buses ML">
+			<File FilePath="E:\QUAM\Workspace\VECTO_DEV_Buses\VectoCore\VectoCoreTest\bin\Debug\TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\exempted_primary_heavyBus.xml" HomeFolder="Yes"/>
 			<File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\PIF-heavyBus-sample.xml" HomeFolder="Yes"/>
 			<File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\vecto_vehicle-completed_heavyBus-sample.xml" HomeFolder="Yes"/>
 			<File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\vecto_vehicle-medium_lorryFWD-sample.xml" HomeFolder="Yes"/>