From 2c8f0a51e80dca7818a1e252a483252d3a3e5f6a Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Thu, 23 Jan 2020 19:39:00 +0100
Subject: [PATCH] more work on filling parameters for bus auxiliaries

---
 VECTO/Input Files/Engine.vb                   |   1 +
 VECTO/Input Files/Gearbox.vb                  |   1 +
 VECTO/Input Files/MockVehicleInputData.vb     |   1 +
 VECTO/Input Files/Vehicle.vb                  |   1 +
 .../M0_5_SmartAlternatorSetEfficiencyTests.vb |  14 +-
 ..._NonSmart_AlternatorsSetEfficiencyTests.vb |  29 ++-
 .../M1_AverageHVACLoadDemandTests.vb          |   5 +-
 .../M2_AverageElectricalLoadTests.vb          |   8 +-
 .../M5_SmartAlternatorSetGenerationTests.vb   |  16 +-
 .../VectoAuxiliariesTests/UnitTests/Utils.vb  |   2 +-
 .../IPneumaticUserInputsConfig.cs             |  42 +++-
 .../InputData/DeclarationInputData.cs         |   7 +-
 .../Resources/XMLNames.Designer.cs            | 171 ++++++++++++++++
 .../VectoCommon/Resources/XMLNames.resx       |  45 +++++
 VectoCommon/VectoCommon/VectoCommon.csproj    |   2 -
 .../FileIO/JSON/BusAuxiliaryInputData.cs      |   1 +
 .../FileIO/JSON/JSONComponentInputData.cs     |   1 +
 .../InputData/FileIO/JSON/JSONVehicleData.cs  |  10 +-
 .../FileIO/XML/Common/AbstractXMLType.cs      |  15 ++
 ...MLDeclarationBusAuxiliariesDataProvider.cs | 189 +++++++++++++++++-
 .../XMLDeclarationVehicleDataProvider.cs      |   5 +-
 .../XMLDeclarationInputDataV26InjectModule.cs |   4 +-
 .../XMLEngineeringVehicleDataProvider.cs      |   1 +
 .../ComponentData/ElectricConsumerReader.cs   |   5 +-
 .../DeclarationDataAdapterPrimaryBus.cs       | 141 ++++++++++---
 .../BusAuxiliaries/AdvancedAuxiliaries.cs     |  12 +-
 .../Impl/Electrics/ElectricalConsumer.cs      |  15 +-
 .../Impl/Electrics/M00Impl.cs                 |  18 +-
 .../Impl/Electrics/M02Impl.cs                 |  17 +-
 .../Impl/Electrics/M0_1Impl.cs                |  24 ---
 .../Impl/Electrics/M0_5Impl.cs                |  19 +-
 .../Impl/Electrics/ResultCard.cs              |  25 ++-
 .../Impl/Electrics/SimpleAlternator.cs        |  30 +++
 .../DownstreamModules/Impl/HVAC/M01Impl.cs    |   1 -
 .../IM0_1_AverageElectricLoadDemand.cs        |  10 -
 .../Declaration/BusAlternatorTechnologies.cs  |  27 +++
 .../Models/Declaration/BusSegments.cs         |  60 ++++--
 .../Models/Declaration/DeclarationData.cs     |   4 +-
 .../VectoCore/Models/Declaration/Mission.cs   |   3 +
 .../Buses/AlternatorTechnologies.csv          |   2 +
 .../Declaration/HeavyBusSegmentationTable.csv |  42 ++--
 .../VectoOutputPrimaryVehicleInformation.xsd  |   8 +-
 VectoCore/VectoCore/VectoCore.csproj          |   5 +-
 .../Utils/MockDeclarationVehicleInputData.cs  |   2 +
 44 files changed, 818 insertions(+), 223 deletions(-)
 delete mode 100644 VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/M0_1Impl.cs
 create mode 100644 VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/SimpleAlternator.cs
 delete mode 100644 VectoCore/VectoCore/Models/BusAuxiliaries/Interfaces/DownstreamModules/IM0_1_AverageElectricLoadDemand.cs
 create mode 100644 VectoCore/VectoCore/Models/Declaration/BusAlternatorTechnologies.cs
 create mode 100644 VectoCore/VectoCore/Resources/Declaration/Buses/AlternatorTechnologies.csv

diff --git a/VECTO/Input Files/Engine.vb b/VECTO/Input Files/Engine.vb
index 0904ab94d3..8e87c3b3a6 100644
--- a/VECTO/Input Files/Engine.vb	
+++ b/VECTO/Input Files/Engine.vb	
@@ -656,6 +656,7 @@ Public Class DummyVehicle
     Public ReadOnly Property IVehicleDeclarationInputData_Height As Meter Implements IVehicleDeclarationInputData.Height
     Public ReadOnly Property Length As Meter Implements IVehicleDeclarationInputData.Length
     Public ReadOnly Property Width As Meter Implements IVehicleDeclarationInputData.Width
+    Public ReadOnly Property EntranceHeight As Meter Implements IVehicleDeclarationInputData.EntranceHeight
 
     Public readonly Property Components As IVehicleComponentsDeclaration Implements IVehicleDeclarationInputData.Components
 	get
diff --git a/VECTO/Input Files/Gearbox.vb b/VECTO/Input Files/Gearbox.vb
index b53660c418..771b29b61e 100644
--- a/VECTO/Input Files/Gearbox.vb	
+++ b/VECTO/Input Files/Gearbox.vb	
@@ -844,6 +844,7 @@ Public Class MockEngineeringVehicle
     Public Property Height As Meter Implements IVehicleEngineeringInputData.Height
     Public ReadOnly Property Length As Meter Implements IVehicleDeclarationInputData.Length
     Public ReadOnly Property Width As Meter Implements IVehicleDeclarationInputData.Width
+    Public ReadOnly Property EntranceHeight As Meter Implements IVehicleDeclarationInputData.EntranceHeight
     Public Property Components As IVehicleComponentsDeclaration Implements IVehicleDeclarationInputData.Components
     Public ReadOnly Property XMLSource As XmlNode Implements IVehicleDeclarationInputData.XMLSource
 
diff --git a/VECTO/Input Files/MockVehicleInputData.vb b/VECTO/Input Files/MockVehicleInputData.vb
index 71ea965995..1cca56259f 100644
--- a/VECTO/Input Files/MockVehicleInputData.vb	
+++ b/VECTO/Input Files/MockVehicleInputData.vb	
@@ -48,6 +48,7 @@ Public Class MockVehicleInputData
     Public ReadOnly Property Height As Meter Implements IVehicleDeclarationInputData.Height
     Public ReadOnly Property Length As Meter Implements IVehicleDeclarationInputData.Length
     Public ReadOnly Property Width As Meter Implements IVehicleDeclarationInputData.Width
+    Public ReadOnly Property EntranceHeight As Meter Implements IVehicleDeclarationInputData.EntranceHeight
     Public Property Components As IVehicleComponentsDeclaration Implements IVehicleDeclarationInputData.Components
     Public ReadOnly Property XMLSource As XmlNode Implements IVehicleDeclarationInputData.XMLSource
 End Class
\ No newline at end of file
diff --git a/VECTO/Input Files/Vehicle.vb b/VECTO/Input Files/Vehicle.vb
index 887a949383..4ea96dbdb0 100644
--- a/VECTO/Input Files/Vehicle.vb	
+++ b/VECTO/Input Files/Vehicle.vb	
@@ -426,6 +426,7 @@ Public Class Vehicle
 
     Public ReadOnly Property Length As Meter Implements IVehicleDeclarationInputData.Length
     Public ReadOnly Property Width As Meter Implements IVehicleDeclarationInputData.Width
+    Public ReadOnly Property EntranceHeight As Meter Implements IVehicleDeclarationInputData.EntranceHeight
 
     Public ReadOnly Property IVehicleEngineeringInputData_Components As IVehicleComponentsEngineering Implements IVehicleEngineeringInputData.Components
 	get
diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/M0_5_SmartAlternatorSetEfficiencyTests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/M0_5_SmartAlternatorSetEfficiencyTests.vb
index 6c1c60ce86..20056afdd6 100644
--- a/VECTOAux/VectoAuxiliariesTests/UnitTests/M0_5_SmartAlternatorSetEfficiencyTests.vb
+++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/M0_5_SmartAlternatorSetEfficiencyTests.vb
@@ -63,22 +63,20 @@ Namespace UnitTests
             Dim auxConfig = Utils.GetAuxTestConfig()
             'Dim  hvacMap As New HVACMap("testFiles\TestHvacMap.csv")
             'hvacMap.Initialise()
-            dim m01 = New M0_1Impl(auxConfig)
-            Dim m0 As New M00Impl(m01, auxConfig.ElectricalUserInputsConfig.AlternatorMap, 26.3.SI (Of Volt), auxConfig.Signals, ssm)
+            CType(auxConfig.ElectricalUserInputsConfig, ElectricsUserInputsConfig).PowerNetVoltage = 26.3.SI (Of Volt)
+            Dim m0 As New M00Impl(auxConfig.ElectricalUserInputsConfig, auxConfig.Signals, ssm)
 
             'Results Cards
             Dim readings = New List(Of SmartResult)
             readings.Add(New SmartResult(10.SI (of Ampere), 8.SI (of Ampere)))
             readings.Add(New SmartResult(70.SI (of Ampere), 63.SI (of Ampere)))
 
-            Dim idleResult As New ResultCard(readings)
-            Dim tractionResult As New ResultCard(readings)
-            Dim overrunResult As New ResultCard(readings)
-
+            CType(auxConfig.ElectricalUserInputsConfig, ElectricsUserInputsConfig).ResultCardIdle = New ResultCard(readings)
+            CType(auxConfig.ElectricalUserInputsConfig, ElectricsUserInputsConfig).ResultCardTraction = New ResultCard(readings)
+            CType(auxConfig.ElectricalUserInputsConfig, ElectricsUserInputsConfig).ResultCardOverrun = New ResultCard(readings)
 
             
-            target = New M0_5Impl(m0, m01, auxConfig.ElectricalUserInputsConfig.AlternatorMap, idleResult, tractionResult,
-                                  overrunResult, auxConfig.Signals)
+            target = New M0_5Impl(m0, auxConfig.ElectricalUserInputsConfig, auxConfig.Signals)
         End Sub
 
         <Test()>
diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/M0_NonSmart_AlternatorsSetEfficiencyTests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/M0_NonSmart_AlternatorsSetEfficiencyTests.vb
index a5ac8efa76..90c81129b9 100644
--- a/VECTOAux/VectoAuxiliariesTests/UnitTests/M0_NonSmart_AlternatorsSetEfficiencyTests.vb
+++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/M0_NonSmart_AlternatorsSetEfficiencyTests.vb
@@ -71,8 +71,10 @@ Namespace UnitTests
 
             Dim auxConfig = utils.GetAuxTestConfig()
             CType(CType(auxConfig.SSMInputs, SSMInputs).Vehicle, VehicleData).Height=  0.SI (Of Meter)
-            Dim m01 As IM0_1_AverageElectricLoadDemand = New M0_1Impl(Utils.GetAuxTestConfig())
-            Dim target As IM0_NonSmart_AlternatorsSetEfficiency = New M00Impl(m01, alternatorMap, powernetVoltage,
+            CType(auxConfig.ElectricalUserInputsConfig, ElectricsUserInputsConfig).PowerNetVoltage = powernetVoltage
+            CType(auxConfig.ElectricalUserInputsConfig, ElectricsUserInputsConfig).AlternatorMap =alternatorMap
+
+            Dim target As IM0_NonSmart_AlternatorsSetEfficiency = New M00Impl(auxConfig.ElectricalUserInputsConfig,
                                                                               signals,  New SSMTOOL(auxconfig.SSMInputs))
             Assert.IsNotNull(target)
         End Sub
@@ -83,7 +85,10 @@ Namespace UnitTests
             Dim target As IM0_NonSmart_AlternatorsSetEfficiency
             Dim auxConfig = utils.GetAuxTestConfig()
             CType(CType(auxConfig.SSMInputs, SSMInputs).Vehicle, VehicleData).Height=  0.SI (Of Meter)
-            Assert.That(Sub() target = New M00Impl(Nothing, alternatorMap, powernetVoltage, signals, New SSMTOOL(auxconfig.SSMInputs)),
+            CType(auxConfig.ElectricalUserInputsConfig, ElectricsUserInputsConfig).PowerNetVoltage = powernetVoltage
+            CType(auxConfig.ElectricalUserInputsConfig, ElectricsUserInputsConfig).AlternatorMap =alternatorMap
+
+            Assert.That(Sub() target = New M00Impl(auxConfig.ElectricalUserInputsConfig, signals, New SSMTOOL(auxconfig.SSMInputs)),
                         Throws.InstanceOf (Of ArgumentException))
         End Sub
 
@@ -92,9 +97,10 @@ Namespace UnitTests
             Dim target As IM0_NonSmart_AlternatorsSetEfficiency
             Dim auxConfig = utils.GetAuxTestConfig()
             CType(CType(auxConfig.SSMInputs, SSMInputs).Vehicle, VehicleData).Height=  0.SI (Of Meter)
+            CType(auxConfig.ElectricalUserInputsConfig, ElectricsUserInputsConfig).PowerNetVoltage = powernetVoltage
+            CType(auxConfig.ElectricalUserInputsConfig, ElectricsUserInputsConfig).AlternatorMap = Nothing
 
-            Dim m01 As IM0_1_AverageElectricLoadDemand = New M0_1Impl(auxConfig)
-            Assert.That(Sub() target = New M00Impl(m01, Nothing, powernetVoltage, signals, New SSMTOOL(auxconfig.SSMInputs)),
+            Assert.That(Sub() target = New M00Impl(auxConfig.ElectricalUserInputsConfig, signals, New SSMTOOL(auxconfig.SSMInputs)),
                         Throws.InstanceOf (Of ArgumentException))
         End Sub
 
@@ -108,9 +114,11 @@ Namespace UnitTests
             CType(auxConfig.ElectricalUserInputsConfig, ElectricsUserInputsConfig).AverageCurrentDemandInclBaseLoad = 0.5.SI(Of Ampere)
             CType(CType(auxConfig.SSMInputs, SSMInputs).Vehicle, VehicleData).Height=  0.SI (Of Meter)
 
-            Dim m01 As IM0_1_AverageElectricLoadDemand = New M0_1Impl(auxConfig)
+            CType(auxConfig.ElectricalUserInputsConfig, ElectricsUserInputsConfig).PowerNetVoltage = powernetVoltage
+            CType(auxConfig.ElectricalUserInputsConfig, ElectricsUserInputsConfig).AlternatorMap =alternatorMap
 
-            Dim target As M00Impl = New M00Impl(m01, alternatorMap, powernetVoltage, signals, New SSMTOOL(auxconfig.SSMInputs))
+
+            Dim target As M00Impl = New M00Impl(auxConfig.ElectricalUserInputsConfig, signals, New SSMTOOL(auxconfig.SSMInputs))
 
             Dim actual As Double = target.AlternatorsEfficiency
 
@@ -123,10 +131,11 @@ Namespace UnitTests
         Public Sub HVAC_PowerDemandAmpsTest()
             Dim auxConfig = utils.GetAuxTestConfig()
             CType(CType(auxConfig.SSMInputs, SSMInputs).Vehicle, VehicleData).Height=  0.SI (Of Meter)
-            Dim m01 As IM0_1_AverageElectricLoadDemand = New M0_1Impl(auxConfig)
+            CType(auxConfig.ElectricalUserInputsConfig, ElectricsUserInputsConfig).PowerNetVoltage = powernetVoltage
+            CType(auxConfig.ElectricalUserInputsConfig, ElectricsUserInputsConfig).AlternatorMap =alternatorMap
+
 
-            Dim target As IM0_NonSmart_AlternatorsSetEfficiency = New M00Impl(m01, alternatorMap, powernetVoltage,
-                                                                              signals, New SSMTOOL(auxconfig.SSMInputs))
+            Dim target As IM0_NonSmart_AlternatorsSetEfficiency = New M00Impl(auxConfig.ElectricalUserInputsConfig, signals, New SSMTOOL(auxconfig.SSMInputs))
 
             Dim actual As Ampere
             Dim expected As Single = 0
diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/M1_AverageHVACLoadDemandTests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/M1_AverageHVACLoadDemandTests.vb
index 9ad62f8faa..3757debf09 100644
--- a/VECTOAux/VectoAuxiliariesTests/UnitTests/M1_AverageHVACLoadDemandTests.vb
+++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/M1_AverageHVACLoadDemandTests.vb
@@ -58,9 +58,10 @@ Namespace UnitTests
             For Each entry As ISSMTechnology In ssm.TechList.TechLines
                 entry.OnVehicle = True
             Next
-            Dim m01 As IM0_1_AverageElectricLoadDemand = New M0_1Impl(auxConfig)
+            CType(auxConfig.ElectricalUserInputsConfig, ElectricsUserInputsConfig).PowerNetVoltage = powernetVoltage
+            CType(auxConfig.ElectricalUserInputsConfig, ElectricsUserInputsConfig).AlternatorMap =alternatorMap
 
-            m0 = New M00Impl(m01,alternatorMap, powernetVoltage, signals, ssm)
+            m0 = New M00Impl(auxConfig.ElectricalUserInputsConfig, signals, ssm)
         End Sub
 
         Private Function GETM1Instance() As IM1_AverageHVACLoadDemand
diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/M2_AverageElectricalLoadTests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/M2_AverageElectricalLoadTests.vb
index 141225a7e9..c13e134ed7 100644
--- a/VECTOAux/VectoAuxiliariesTests/UnitTests/M2_AverageElectricalLoadTests.vb
+++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/M2_AverageElectricalLoadTests.vb
@@ -58,14 +58,16 @@ Namespace UnitTests
 
 			Dim altMap As IAlternatorMap = AlternatorReader.ReadMap( "testfiles\testAlternatorMap.aalt")
 			'altMap.Initialise()
+		    CType(auxConfig.ElectricalUserInputsConfig, ElectricsUserInputsConfig).PowerNetVoltage = 26.3.SI(Of Volt)
+		    CType(auxConfig.ElectricalUserInputsConfig, ElectricsUserInputsConfig).AlternatorMap =altMap
+		    CType(auxConfig.ElectricalUserInputsConfig, ElectricsUserInputsConfig).AlternatorGearEfficiency = 0.8
 
-		    Dim m01 As IM0_1_AverageElectricLoadDemand = New M0_1Impl(auxConfig)
-			Dim m0 As New M00Impl(m01, altMap, 26.3.SI(Of Volt), signals, New SSMTOOL(auxConfig.SSMInputs))
+			Dim m0 As New M00Impl(auxConfig.ElectricalUserInputsConfig, signals, New SSMTOOL(auxConfig.SSMInputs))
 
 			'Get Consumers.
 
 
-			Return New M02Impl(m01, m0, 0.8, 26.3.SI(Of Volt))
+			Return New M02Impl(m0, auxConfig.ElectricalUserInputsConfig)
 		End Function
 
 #End Region
diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/M5_SmartAlternatorSetGenerationTests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/M5_SmartAlternatorSetGenerationTests.vb
index 2836d53c58..3cef3d1c56 100644
--- a/VECTOAux/VectoAuxiliariesTests/UnitTests/M5_SmartAlternatorSetGenerationTests.vb
+++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/M5_SmartAlternatorSetGenerationTests.vb
@@ -65,11 +65,10 @@ Namespace UnitTests
 			
             Dim auxConfig = Utils.GetAuxTestConfig()
 		    CType(CType(auxConfig.SSMInputs,SSMInputs).Vehicle, VehicleData).Height = 0.SI(of Meter)
+		    CType(auxConfig.ElectricalUserInputsConfig, ElectricsUserInputsConfig).PowerNetVoltage = _powerNetVoltage
+		    CType(auxConfig.ElectricalUserInputsConfig, ElectricsUserInputsConfig).AlternatorMap = alternatoMap
 
-            Dim m0_1 = New M0_1Impl(auxConfig)
-            Dim _
-				m0 As _
-					New M00Impl(m0_1, alternatoMap, _powerNetVoltage, _signals,
+            Dim m0 As New M00Impl(auxConfig.ElectricalUserInputsConfig, _signals,
                                 New SSMTOOL(auxConfig.SSMInputs))
 
 			'Results Cards
@@ -77,15 +76,14 @@ Namespace UnitTests
 			readings.Add(New SmartResult(10.SI(Of Ampere), 8.SI(Of Ampere)))
 			readings.Add(New SmartResult(70.SI(Of Ampere), 63.SI(Of Ampere)))
 
-			Dim idleResult As New ResultCard(readings)
-			Dim tractionResult As New ResultCard(readings)
-			Dim overrunResult As New ResultCard(readings)
+		    CType(auxConfig.ElectricalUserInputsConfig, ElectricsUserInputsConfig).ResultCardIdle = New ResultCard(readings)
+		    CType(auxConfig.ElectricalUserInputsConfig, ElectricsUserInputsConfig).ResultCardTraction = New ResultCard(readings)
+		    CType(auxConfig.ElectricalUserInputsConfig, ElectricsUserInputsConfig).ResultCardOverrun = New ResultCard(readings)
 
 			Dim signals As ISignals = New Signals
 			signals.EngineSpeed = 2000.RPMtoRad()
 
-			_m05 = New M0_5Impl(m0, m0_1, alternatoMap, idleResult, tractionResult,
-														overrunResult, signals)
+			_m05 = New M0_5Impl(m0, auxConfig.ElectricalUserInputsConfig, signals)
 		End Sub
 
 		<TestCase()>
diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/Utils.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/Utils.vb
index b21b3b0022..d74dd17674 100644
--- a/VECTOAux/VectoAuxiliariesTests/UnitTests/Utils.vb
+++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/Utils.vb
@@ -81,7 +81,7 @@ Public Class Utils
             }
     End function
 
-    public Shared Function GetAuxTestConfig(Optional retarder As boolean = true) as IAuxiliaryConfig
+    public Shared Function GetAuxTestConfig(Optional retarder As boolean = true) as AuxiliaryConfig
 
         Dim signals = New Signals()
         signals.EngineSpeed = 2000.RPMtoRad()
diff --git a/VectoCommon/VectoCommon/BusAuxiliaries/IPneumaticUserInputsConfig.cs b/VectoCommon/VectoCommon/BusAuxiliaries/IPneumaticUserInputsConfig.cs
index 74e8984e25..d93ab63a69 100644
--- a/VectoCommon/VectoCommon/BusAuxiliaries/IPneumaticUserInputsConfig.cs
+++ b/VectoCommon/VectoCommon/BusAuxiliaries/IPneumaticUserInputsConfig.cs
@@ -6,16 +6,19 @@ namespace TUGraz.VectoCommon.BusAuxiliaries
 {
 	public interface IPneumaticUserInputsConfig
 	{
-		ICompressorMap CompressorMap { get;  }
-		double CompressorGearEfficiency { get;  }
-		double CompressorGearRatio { get;  }
-		bool SmartAirCompression { get;  }
-		bool SmartRegeneration { get;  }
+		ICompressorMap CompressorMap { get; }
+		double CompressorGearEfficiency { get; }
+		double CompressorGearRatio { get; }
+		bool SmartAirCompression { get; }
+
+		bool SmartRegeneration { get; }
+
 		//bool RetarderBrake { get;  }
-		Meter KneelingHeight { get;  }
-		ConsumerTechnology AirSuspensionControl { get;  } // mechanical or electrical
-		ConsumerTechnology AdBlueDosing { get;  } // pnmeumatic or electric
-		ConsumerTechnology Doors { get;  } // pneumatic or electric
+		Meter KneelingHeight { get; }
+
+		ConsumerTechnology AirSuspensionControl { get; } // mechanical or electrical
+		ConsumerTechnology AdBlueDosing { get; } // pnmeumatic or electric
+		ConsumerTechnology Doors { get; } // pneumatic or electric
 	}
 
 	public enum ConsumerTechnology
@@ -25,4 +28,25 @@ namespace TUGraz.VectoCommon.BusAuxiliaries
 		Electrically,
 		Pneumatically,
 	}
+
+	public static class ConsumerTechnologyHelper
+	{
+		public static ConsumerTechnology Parse(string technology)
+		{
+			switch (technology.ToLowerInvariant()) {
+				case "mechanically":
+				case "mechanic":
+					return ConsumerTechnology.Mechanically;
+				case "electrically":
+				case "electric":
+				case "electronically":
+					return ConsumerTechnology.Electrically;
+				case "pneumatically":
+				case "pneumatic":
+					return ConsumerTechnology.Pneumatically;
+				default:
+					return ConsumerTechnology.Unknown;
+			}
+		}
+	}
 }
diff --git a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs
index 3c200b57cd..5ed766e5b1 100644
--- a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs
+++ b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs
@@ -181,6 +181,8 @@ namespace TUGraz.VectoCommon.InputData
 
 		Meter Width { get; }
 
+		Meter EntranceHeight { get; }
+
 		// components
 
 		IVehicleComponentsDeclaration Components { get; }
@@ -742,6 +744,10 @@ namespace TUGraz.VectoCommon.InputData
 		double Ratio { get; }
 
 		string CompressorSize { get; }
+
+		bool SmartAirCompression { get; }
+
+		bool SmartRegeneration { get; }
 	}
 
 	public interface IPneumaticConsumersDeclarationData
@@ -750,7 +756,6 @@ namespace TUGraz.VectoCommon.InputData
 		ConsumerTechnology AdBlueDosing { get; }
 		ConsumerTechnology DoorDriveTechnology { get; }
 
-		Meter EntranceHeight { get; }
 	}
 
 	public interface IHVACBusAuxiliariesDeclarationData
diff --git a/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs b/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs
index 4dfd882404..1ce46301d1 100644
--- a/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs
+++ b/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs
@@ -402,6 +402,159 @@ namespace TUGraz.VectoCommon.Resources {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to ElectricSystem.
+        /// </summary>
+        public static string BusAux_ElectricSystem {
+            get {
+                return ResourceManager.GetString("BusAux_ElectricSystem", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to ratio.
+        /// </summary>
+        public static string BusAux_ElectricSystem_Alternator_Ratio_Attr {
+            get {
+                return ResourceManager.GetString("BusAux_ElectricSystem_Alternator_Ratio_Attr", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to AlternatorTechnology.
+        /// </summary>
+        public static string BusAux_ElectricSystem_AlternatorTechnology {
+            get {
+                return ResourceManager.GetString("BusAux_ElectricSystem_AlternatorTechnology", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to ResultCards.
+        /// </summary>
+        public static string BusAux_ElectricSystem_ResultCards {
+            get {
+                return ResourceManager.GetString("BusAux_ElectricSystem_ResultCards", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to SmartElectrics.
+        /// </summary>
+        public static string BusAux_ElectricSystem_SmartElectrics {
+            get {
+                return ResourceManager.GetString("BusAux_ElectricSystem_SmartElectrics", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to PneumaticSystem.
+        /// </summary>
+        public static string BusAux_PneumaticSystem {
+            get {
+                return ResourceManager.GetString("BusAux_PneumaticSystem", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to AdBlueDosing.
+        /// </summary>
+        public static string BusAux_PneumaticSystem_AdBlueDosing {
+            get {
+                return ResourceManager.GetString("BusAux_PneumaticSystem_AdBlueDosing", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to AirsuspensionControl.
+        /// </summary>
+        public static string BusAux_PneumaticSystem_AirsuspensionControl {
+            get {
+                return ResourceManager.GetString("BusAux_PneumaticSystem_AirsuspensionControl", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to CompressorRatio.
+        /// </summary>
+        public static string BusAux_PneumaticSystem_CompressorRatio {
+            get {
+                return ResourceManager.GetString("BusAux_PneumaticSystem_CompressorRatio", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to SizeOfAirSupply.
+        /// </summary>
+        public static string BusAux_PneumaticSystem_CompressorSize {
+            get {
+                return ResourceManager.GetString("BusAux_PneumaticSystem_CompressorSize", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to DoorDriveTechnology.
+        /// </summary>
+        public static string BusAux_PneumaticSystem_DoorDriveTechnology {
+            get {
+                return ResourceManager.GetString("BusAux_PneumaticSystem_DoorDriveTechnology", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to SmartCompressionSystem.
+        /// </summary>
+        public static string BusAux_PneumaticSystem_SmartcompressionSystem {
+            get {
+                return ResourceManager.GetString("BusAux_PneumaticSystem_SmartcompressionSystem", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to SmartRegenerationSystem.
+        /// </summary>
+        public static string BusAux_PneumaticSystem_SmartRegenerationSystem {
+            get {
+                return ResourceManager.GetString("BusAux_PneumaticSystem_SmartRegenerationSystem", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Entry.
+        /// </summary>
+        public static string BusAux_ResultCard_Entry {
+            get {
+                return ResourceManager.GetString("BusAux_ResultCard_Entry", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Idle.
+        /// </summary>
+        public static string BusAux_ResultCard_Idle {
+            get {
+                return ResourceManager.GetString("BusAux_ResultCard_Idle", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Overrun.
+        /// </summary>
+        public static string BusAux_ResultCard_Overrun {
+            get {
+                return ResourceManager.GetString("BusAux_ResultCard_Overrun", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Traction.
+        /// </summary>
+        public static string BusAux_ResultCard_Traction {
+            get {
+                return ResourceManager.GetString("BusAux_ResultCard_Traction", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to AirDrag.
         /// </summary>
@@ -2247,6 +2400,24 @@ namespace TUGraz.VectoCommon.Resources {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to current.
+        /// </summary>
+        public static string ResultCard_Entry_CurrentAttr {
+            get {
+                return ResourceManager.GetString("ResultCard_Entry_CurrentAttr", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to smartCurrent.
+        /// </summary>
+        public static string ResultCard_Entry_SmartCurrent_Attr {
+            get {
+                return ResourceManager.GetString("ResultCard_Entry_SmartCurrent_Attr", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to RetarderLossMap.
         /// </summary>
diff --git a/VectoCommon/VectoCommon/Resources/XMLNames.resx b/VectoCommon/VectoCommon/Resources/XMLNames.resx
index 91860e88ed..69f3da494c 100644
--- a/VectoCommon/VectoCommon/Resources/XMLNames.resx
+++ b/VectoCommon/VectoCommon/Resources/XMLNames.resx
@@ -1170,4 +1170,49 @@
   <data name="Gearbox_AxlegearRatio" xml:space="preserve">
     <value>AxlegearRatio</value>
   </data>
+  <data name="BusAux_ElectricSystem" xml:space="preserve">
+    <value>ElectricSystem</value>
+  </data>
+  <data name="BusAux_ElectricSystem_ResultCards" xml:space="preserve">
+    <value>ResultCards</value>
+  </data>
+  <data name="BusAux_ResultCard_Traction" xml:space="preserve">
+    <value>Traction</value>
+  </data>
+  <data name="BusAux_ResultCard_Overrun" xml:space="preserve">
+    <value>Overrun</value>
+  </data>
+  <data name="BusAux_ResultCard_Idle" xml:space="preserve">
+    <value>Idle</value>
+  </data>
+  <data name="BusAux_ResultCard_Entry" xml:space="preserve">
+    <value>Entry</value>
+  </data>
+  <data name="ResultCard_Entry_SmartCurrent_Attr" xml:space="preserve">
+    <value>smartCurrent</value>
+  </data>
+  <data name="ResultCard_Entry_CurrentAttr" xml:space="preserve">
+    <value>current</value>
+  </data>
+  <data name="BusAux_ElectricSystem_SmartElectrics" xml:space="preserve">
+    <value>SmartElectrics</value>
+  </data>
+  <data name="BusAux_ElectricSystem_AlternatorTechnology" xml:space="preserve">
+    <value>AlternatorTechnology</value>
+  </data>
+  <data name="BusAux_ElectricSystem_Alternator_Ratio_Attr" xml:space="preserve">
+    <value>ratio</value>
+  </data>
+  <data name="BusAux_PneumaticSystem" xml:space="preserve">
+    <value>PneumaticSystem</value>
+  </data>
+  <data name="BusAux_PneumaticSystem_AirsuspensionControl" xml:space="preserve">
+    <value>AirsuspensionControl</value>
+  </data>
+  <data name="BusAux_PneumaticSystem_AdBlueDosing" xml:space="preserve">
+    <value>AdBlueDosing</value>
+  </data>
+  <data name="BusAux_PneumaticSystem_DoorDriveTechnology" xml:space="preserve">
+    <value>DoorDriveTechnology</value>
+  </data>
 </root>
\ No newline at end of file
diff --git a/VectoCommon/VectoCommon/VectoCommon.csproj b/VectoCommon/VectoCommon/VectoCommon.csproj
index 841c4bfe9b..eaf17f4ceb 100644
--- a/VectoCommon/VectoCommon/VectoCommon.csproj
+++ b/VectoCommon/VectoCommon/VectoCommon.csproj
@@ -58,8 +58,6 @@
     <Compile Include="BusAuxiliaries\IAuxiliaryConfig.cs" />
     <Compile Include="BusAuxiliaries\ICombinedAlternatorMapRow.cs" />
     <Compile Include="BusAuxiliaries\ICompressorMap.cs" />
-    <Compile Include="BusAuxiliaries\IElectricalConsumer.cs" />
-    <Compile Include="BusAuxiliaries\IElectricalConsumerList.cs" />
     <Compile Include="BusAuxiliaries\IElectricsUserInputsConfig.cs" />
     <Compile Include="BusAuxiliaries\IEnvironmentalConditionsMapEntry.cs" />
     <Compile Include="BusAuxiliaries\IEnvironmentalConditionsMap.cs" />
diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/BusAuxiliaryInputData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/BusAuxiliaryInputData.cs
index cba1a204df..96da2833e5 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/BusAuxiliaryInputData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/BusAuxiliaryInputData.cs
@@ -72,6 +72,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 			// DoorActuationTimeSecond
 			electricalUserInputsConfig.DoorActuationTimeSecond = elData.GetEx<double>("DoorActuationTimeSecond").SI<Second>();
 
+
 			electricalUserInputsConfig.AverageCurrentDemandInclBaseLoad = elData["ElectricalConsumers"]
 				.GetEx<double>("AverageCurrentDemandInclBaseLoad").SI<Ampere>();
 			electricalUserInputsConfig.AverageCurrentDemandWithoutBaseLoad = elData["ElectricalConsumers"]
diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs
index c4ea9883e3..083d03a68d 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs
@@ -248,6 +248,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 
 		public Meter Length { get { return VehicleData.Length; } }
 		public Meter Width { get { return VehicleData.Width; } }
+		public Meter EntranceHeight { get { return null; } }
 
 		IVehicleComponentsEngineering IVehicleEngineeringInputData.Components
 		{
diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs
index c4a57b0725..44fbaf4b8e 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs
@@ -164,13 +164,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 		}
 		public virtual ConsumerTechnology DoorDriveTechnology { get { return ConsumerTechnology.Unknown; } }
 
-		public virtual Meter EntranceHeight
-		{
-			get {
-				return null;
-			}
-		}
-
+		
 		#endregion
 
 		#region Implementation of IHVACBusAuxiliariesDeclarationData
@@ -373,6 +367,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 			get { return null; }
 		}
 
+		public virtual Meter EntranceHeight { get { return null; } }
+
 		IVehicleComponentsEngineering IVehicleEngineeringInputData.Components
 		{
 			get { return this; }
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Common/AbstractXMLType.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Common/AbstractXMLType.cs
index 156f38b33c..4e3b279524 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Common/AbstractXMLType.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Common/AbstractXMLType.cs
@@ -21,10 +21,20 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Common {
 			return GetNode(nodeName, BaseNode, required:false) != null;
 		}
 
+		protected bool ElementExists(string[] nodePath)
+		{
+			return GetNode(nodePath, BaseNode, required: false) != null;
+		}
+
+
 		protected string GetString(string nodeName, XmlNode basenode = null, bool required = true)
 		{
 			return GetNode(nodeName, basenode, required)?.InnerText;
 		}
+		protected string GetString(string[] nodePath, XmlNode basenode = null, bool required = true)
+		{
+			return GetNode(nodePath, basenode, required)?.InnerText;
+		}
 
 		protected double GetDouble(string nodeName, double? fallbackValue = null)
 		{
@@ -53,6 +63,11 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Common {
 			return XmlConvert.ToBoolean(GetNode(nodeName).InnerText);
 		}
 
+		protected bool GetBool(string[] nodePath)
+		{
+			return XmlConvert.ToBoolean(GetNode(nodePath).InnerText);
+		}
+
 		protected XmlNode GetNode(string[] nodeName, XmlNode baseNode = null, bool required = true)
 		{
 			return DoGetNode(XMLHelper.QueryLocalName(nodeName), baseNode, required);
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs
index fd157ffb39..1b914e4dcd 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs
@@ -2,14 +2,20 @@
 using System.Linq;
 using System.Xml;
 using System.Xml.Linq;
+using TUGraz.VectoCommon.BusAuxiliaries;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Resources;
+using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.InputData.FileIO.XML.Common;
 using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces;
+using TUGraz.VectoCore.InputData.Impl;
 using TUGraz.VectoCore.Utils;
 
-namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider {
-	public class XMLDeclarationBusAuxiliariesDataProviderV26 : AbstractXMLType, IXMLBusAuxiliariesDeclarationData
+namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
+{
+	public class XMLDeclarationPrimaryBusAuxiliariesDataProviderV26 : AbstractXMLType, IXMLBusAuxiliariesDeclarationData,
+		IElectricSupplyDeclarationData, IResultCardDeclarationInputData, IPneumaticConsumersDeclarationData,
+		IPneumaticSupplyDeclarationData
 	{
 		public static XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V26;
 
@@ -17,12 +23,15 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider {
 
 		public static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE);
 
-		public XMLDeclarationBusAuxiliariesDataProviderV26(
+		public XMLDeclarationPrimaryBusAuxiliariesDataProviderV26(
 			IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) : base(componentNode) { }
 
 		#region Implementation of IBusAuxiliariesDeclarationData
 
-		public XmlNode XMLSource { get { return BaseNode; } }
+		public XmlNode XMLSource
+		{
+			get { return BaseNode; }
+		}
 
 		public string FanTechnology
 		{
@@ -31,15 +40,175 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider {
 
 		public IList<string> SteeringPumpTechnology
 		{
-			get { return GetNodes(new[] { "SteeringPump", XMLNames.Auxiliaries_Auxiliary_Technology }).Cast <XmlNode>().Select(x => x.InnerText).ToList(); }
+			get {
+				return GetNodes(new[] { "SteeringPump", XMLNames.Auxiliaries_Auxiliary_Technology })
+					.Cast<XmlNode>().Select(x => x.InnerText).ToList();
+			}
+		}
+
+		public IElectricSupplyDeclarationData ElectricSupply
+		{
+			get { return this; }
+		}
+
+		public IElectricConsumersDeclarationData ElectricConsumers
+		{
+			get { return null; }
+		}
+
+		public IPneumaticSupplyDeclarationData PneumaticSupply
+		{
+			get { return this; }
+		}
+
+		public IPneumaticConsumersDeclarationData PneumaticConsumers
+		{
+			get { return this; }
 		}
 
-		public IElectricSupplyDeclarationData ElectricSupply { get; }
-		public IElectricConsumersDeclarationData ElectricConsumers { get; }
-		public IPneumaticSupplyDeclarationData PneumaticSupply { get; }
-		public IPneumaticConsumersDeclarationData PneumaticConsumers { get; }
 		public IHVACBusAuxiliariesDeclarationData HVACAux { get; }
 
 		#endregion
+
+		#region Implementation of IElectricSupplyDeclarationData
+
+		public IList<IAlternatorDeclarationInputData> Alternators
+		{
+			get {
+				return GetNodes(new[] { XMLNames.BusAux_ElectricSystem, XMLNames.BusAux_ElectricSystem_AlternatorTechnology })
+					.Cast<XmlNode>().Select(
+						x => new AlternatorInputData(
+							x.InnerText, GetAttribute(x, XMLNames.BusAux_ElectricSystem_Alternator_Ratio_Attr).ToDouble()))
+					.Cast<IAlternatorDeclarationInputData>().ToList();
+			}
+		}
+
+		public IResultCardDeclarationInputData ResultCards
+		{
+			get {
+				return ElementExists(new[] { XMLNames.BusAux_ElectricSystem, XMLNames.BusAux_ElectricSystem_ResultCards })
+					? this
+					: null;
+			}
+		}
+
+		public bool SmartElectrics
+		{
+			get { return GetBool(new[] { XMLNames.BusAux_ElectricSystem, XMLNames.BusAux_ElectricSystem_SmartElectrics }); }
+		}
+
+		#endregion
+
+		#region Implementation of IResultCardDeclarationInputData
+
+		public IList<IResultCardEntry> Idle
+		{
+			get {
+				return GetNodes(
+						new[] {
+							XMLNames.BusAux_ElectricSystem, XMLNames.BusAux_ElectricSystem_ResultCards, XMLNames.BusAux_ResultCard_Idle,
+							XMLNames.BusAux_ResultCard_Entry
+						})
+					.Cast<XmlNode>().Select(
+						x => new ResultCardEntry(
+							GetAttribute(x, XMLNames.ResultCard_Entry_CurrentAttr).ToDouble().SI<Ampere>(),
+							GetAttribute(x, XMLNames.ResultCard_Entry_SmartCurrent_Attr).ToDouble().SI<Ampere>()))
+					.Cast<IResultCardEntry>()
+					.ToList();
+			}
+		}
+
+		public IList<IResultCardEntry> Traction
+		{
+			get {
+				return GetNodes(
+						new[] {
+							XMLNames.BusAux_ElectricSystem, XMLNames.BusAux_ElectricSystem_ResultCards, XMLNames.BusAux_ResultCard_Traction,
+							XMLNames.BusAux_ResultCard_Entry
+						})
+					.Cast<XmlNode>().Select(
+						x => new ResultCardEntry(
+							GetAttribute(x, XMLNames.ResultCard_Entry_CurrentAttr).ToDouble().SI<Ampere>(),
+							GetAttribute(x, XMLNames.ResultCard_Entry_SmartCurrent_Attr).ToDouble().SI<Ampere>()))
+					.Cast<IResultCardEntry>()
+					.ToList();
+			}
+		}
+
+		public IList<IResultCardEntry> Overrun
+		{
+			get {
+				return GetNodes(
+						new[] {
+							XMLNames.BusAux_ElectricSystem, XMLNames.BusAux_ElectricSystem_ResultCards, XMLNames.BusAux_ResultCard_Overrun,
+							XMLNames.BusAux_ResultCard_Entry
+						})
+					.Cast<XmlNode>().Select(
+						x => new ResultCardEntry(
+							GetAttribute(x, XMLNames.ResultCard_Entry_CurrentAttr).ToDouble().SI<Ampere>(),
+							GetAttribute(x, XMLNames.ResultCard_Entry_SmartCurrent_Attr).ToDouble().SI<Ampere>()))
+					.Cast<IResultCardEntry>()
+					.ToList();
+			}
+		}
+
+		#endregion
+
+		#region Implementation of IPneumaticConsumersDeclarationData
+
+		public ConsumerTechnology AirsuspensionControl
+		{
+			get {
+				return ConsumerTechnologyHelper.Parse(
+					GetString(new[] { XMLNames.BusAux_PneumaticSystem, XMLNames.BusAux_PneumaticSystem_AirsuspensionControl }));
+			}
+		}
+
+		public ConsumerTechnology AdBlueDosing
+		{
+			get {
+				return ConsumerTechnologyHelper.Parse(
+					GetString(
+						new[] { XMLNames.BusAux_PneumaticSystem, XMLNames.BusAux_PneumaticSystem_AdBlueDosing }));
+			}
+		}
+
+		public ConsumerTechnology DoorDriveTechnology
+		{
+			get {
+				return ConsumerTechnologyHelper.Parse(
+					GetString(new[] { XMLNames.BusAux_PneumaticSystem, XMLNames.BusAux_PneumaticSystem_DoorDriveTechnology }));
+			}
+		}
+
+		#endregion
+
+		#region Implementation of IPneumaticSupplyDeclarationData
+
+		public double Ratio
+		{
+			get { return GetDouble(new[] { XMLNames.BusAux_PneumaticSystem, XMLNames.BusAux_PneumaticSystem_CompressorRatio }); }
+		}
+
+		public string CompressorSize
+		{
+			get { return GetString(new[] { XMLNames.BusAux_PneumaticSystem, XMLNames.BusAux_PneumaticSystem_CompressorSize }); }
+		}
+
+		public bool SmartAirCompression
+		{
+			get {
+				return GetBool(new[] { XMLNames.BusAux_PneumaticSystem, XMLNames.BusAux_PneumaticSystem_SmartcompressionSystem });
+			}
+		}
+
+		public bool SmartRegeneration
+		{
+			get {
+				return GetBool(new[] { XMLNames.BusAux_PneumaticSystem, XMLNames.BusAux_PneumaticSystem_SmartRegenerationSystem });
+			}
+		}
+
+		#endregion
 	}
-}
\ No newline at end of file
+}
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs
index 86632066d0..9c094ac359 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs
@@ -278,6 +278,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 		public virtual Meter Height { get { return null; } }
 		public virtual Meter Length { get { return null; } }
 		public virtual Meter Width { get { return null; } }
+		public virtual Meter EntranceHeight { get { return null; } }
 
 		public virtual IVehicleComponentsDeclaration Components
 		{
@@ -622,7 +623,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 
 		public override Kilogram GrossVehicleMassRating { get { return GetDouble(XMLNames.Vehicle_TPMLM).SI<Kilogram>(); } }
 
-		
+		public override Meter EntranceHeight { get { return null; } }
+
+
 		#endregion
 
 		#region Overrides of AbstractXMLResource
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV26InjectModule.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV26InjectModule.cs
index d3bde412f8..814dd3f262 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV26InjectModule.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV26InjectModule.cs
@@ -19,8 +19,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.NinjectModules {
 			Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationPrimaryBusComponentsDataProviderV26>()
 													.Named(XMLDeclarationPrimaryBusComponentsDataProviderV26.QUALIFIED_XSD_TYPE);
 
-			Bind<IXMLBusAuxiliariesDeclarationData>().To<XMLDeclarationBusAuxiliariesDataProviderV26>()
-													.Named(XMLDeclarationBusAuxiliariesDataProviderV26.QUALIFIED_XSD_TYPE);
+			Bind<IXMLBusAuxiliariesDeclarationData>().To<XMLDeclarationPrimaryBusAuxiliariesDataProviderV26>()
+													.Named(XMLDeclarationPrimaryBusAuxiliariesDataProviderV26.QUALIFIED_XSD_TYPE);
 
 
 			Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationMediumLorryVehicleDataProviderV26>()
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringVehicleDataProvider.cs
index b045f37da4..0734e05b54 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringVehicleDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringVehicleDataProvider.cs
@@ -173,6 +173,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering.DataProvider
 		
 
 		public virtual Meter Width { get { return null; } }
+		public virtual Meter EntranceHeight { get { return null; } }
 
 		IVehicleComponentsDeclaration IVehicleDeclarationInputData.Components
 		{
diff --git a/VectoCore/VectoCore/InputData/Reader/ComponentData/ElectricConsumerReader.cs b/VectoCore/VectoCore/InputData/Reader/ComponentData/ElectricConsumerReader.cs
index 9ec66bad98..64ad194473 100644
--- a/VectoCore/VectoCore/InputData/Reader/ComponentData/ElectricConsumerReader.cs
+++ b/VectoCore/VectoCore/InputData/Reader/ComponentData/ElectricConsumerReader.cs
@@ -9,6 +9,7 @@ using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electrics;
+using TUGraz.VectoCore.Models.Declaration;
 using TUGraz.VectoCore.Utils;
 
 namespace TUGraz.VectoCore.InputData.Reader.ComponentData
@@ -43,8 +44,8 @@ namespace TUGraz.VectoCore.InputData.Reader.ComponentData
 					NumberInActualVehicle = row.Field<string>(Fields.NuminVehicle)
 				};
 				foreach (var mission in EnumHelper.GetValues<MissionType>()) {
-					if (data.Columns.Contains(mission.ToString())) {
-						consumer[mission] = row.ParseDouble(mission.ToString()).SI<Ampere>();
+					if (data.Columns.Contains(mission.ToXMLFormat())) {
+						consumer[mission] = row.ParseDouble(mission.ToXMLFormat()).SI<Ampere>();
 					}
 				}
 				retVal.Add(consumer);
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs
index 8862cbd162..b3bf9b8a32 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs
@@ -7,6 +7,7 @@ using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Configuration;
+using TUGraz.VectoCore.InputData.Reader.ComponentData;
 using TUGraz.VectoCore.Models.BusAuxiliaries;
 using TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electrics;
 using TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC;
@@ -14,6 +15,7 @@ using TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Pneumatics;
 using TUGraz.VectoCore.Models.Declaration;
 using TUGraz.VectoCore.Models.Simulation.Data;
 using TUGraz.VectoCore.Models.SimulationComponent.Data;
+using TUGraz.VectoCore.Utils;
 
 namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 {
@@ -71,7 +73,8 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 
 		#endregion
 
-		public IAuxiliaryConfig CreateBusAuxiliariesData(Mission mission, IVehicleDeclarationInputData vehicleData, VectoRunData runData)
+		public IAuxiliaryConfig CreateBusAuxiliariesData(
+			Mission mission, IVehicleDeclarationInputData vehicleData, VectoRunData runData)
 		{
 			var actuations = DeclarationData.BusAuxiliaries.ActuationsMap.Lookup(runData.Mission.MissionType);
 
@@ -86,19 +89,57 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 				FuelMap = runData.EngineData.Fuels.First().ConsumptionMap
 			};
 
+			return retVal;
+		}
 
+		private IElectricsUserInputsConfig GetElectricalUserConfig(
+			Mission mission, IVehicleDeclarationInputData vehicleData, IActuations actuations)
+		{
+			var currentDemand = CalculateAverageCurrent(mission, vehicleData, actuations);
+			var busAux = vehicleData.Components.BusAuxiliaries;
 
-			return retVal;
+			return new ElectricsUserInputsConfig() {
+				SmartElectrical = busAux.ElectricSupply.SmartElectrics,
+				AverageCurrentDemandInclBaseLoad = currentDemand.Item1,
+				AverageCurrentDemandWithoutBaseLoad = currentDemand.Item2,
+				AlternatorMap = new SimpleAlternator(CalculateAlternatorEfficiency(busAux.ElectricSupply.Alternators)),
+				PowerNetVoltage = Constants.BusAuxiliaries.ElectricSystem.PowernetVoltage,
+				ResultCardIdle = busAux.ElectricSupply.ResultCards != null
+					? new ResultCard(
+						busAux.ElectricSupply.ResultCards.Idle.Select(x => new SmartResult(x.Current, x.SmartCurrent)).ToList())
+					: (IResultCard)new DummyResultCard(),
+				ResultCardOverrun = busAux.ElectricSupply.ResultCards != null
+					? new ResultCard(
+						busAux.ElectricSupply.ResultCards.Overrun.Select(x => new SmartResult(x.Current, x.SmartCurrent)).ToList())
+					: (IResultCard)new DummyResultCard(),
+				ResultCardTraction = busAux.ElectricSupply.ResultCards != null
+					? new ResultCard(
+						busAux.ElectricSupply.ResultCards.Traction.Select(x => new SmartResult(x.Current, x.SmartCurrent)).ToList())
+					: (IResultCard) new DummyResultCard(),
+				AlternatorGearEfficiency = Constants.BusAuxiliaries.ElectricSystem.AlternatorGearEfficiency,
+			};
+		}
+
+		private double CalculateAlternatorEfficiency(IList<IAlternatorDeclarationInputData> alternators)
+		{
+			var sum = 0.0;
+			foreach (var entry in alternators) {
+				sum += DeclarationData.BusAuxiliaries.AlternatorTechnologies.Lookup(entry.Technology);
+			}
+
+			return sum / alternators.Count;
 		}
 
-		private IElectricsUserInputsConfig GetElectricalUserConfig(Mission mission, IVehicleDeclarationInputData vehicleData, IActuations actuations)
+		private Tuple<Ampere, Ampere> CalculateAverageCurrent(
+			Mission mission, IVehicleDeclarationInputData vehicleData, IActuations actuations)
 		{
 			var avgInclBase = 0.SI<Ampere>();
 			var avgWithoutBase = 0.SI<Ampere>();
 			var doorDutyCycleFraction =
 				(actuations.ParkBrakeAndDoors * Constants.BusAuxiliaries.ElectricalConsumers.DoorActuationTimeSecond) /
 				actuations.CycleTime;
-			var electricDoors = vehicleData.Components.BusAuxiliaries.PneumaticConsumers.DoorDriveTechnology ==
+			var busAux = vehicleData.Components.BusAuxiliaries;
+			var electricDoors = busAux.PneumaticConsumers.DoorDriveTechnology ==
 								ConsumerTechnology.Electrically;
 			foreach (var consumer in DeclarationData.BusAuxiliaries.DefaultElectricConsumerList.Items) {
 				var nbr = CalcNumberInVehicle(consumer.NumberInActualVehicle, mission);
@@ -109,7 +150,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 					: consumer.PhaseIdleTractionOn;
 
 				var current = consumer.NominalCurrent(mission.MissionType) * dutyCycle * nbr;
-				if (consumer.Bonus && !VehicleHasConsumer(consumer.ConsumerName, vehicleData.Components.BusAuxiliaries)) {
+				if (consumer.Bonus && !VehicleHasConsumer(consumer.ConsumerName, busAux)) {
 					current = 0.SI<Ampere>();
 				}
 
@@ -119,29 +160,21 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 				}
 			}
 
-
-			return new ElectricsUserInputsConfig() {
-				SmartElectrical = false,
-				AverageCurrentDemandInclBaseLoad = avgInclBase,
-				AverageCurrentDemandWithoutBaseLoad = avgWithoutBase,
-				AlternatorMap = new AlternatorMap(new List<ICombinedAlternatorMapRow>() {new CombinedAlternatorMapRow("test", 1000.RPMtoRad(), 10.SI<Ampere>(), 0.8, 1.0)  }, ""),
-				PowerNetVoltage = Constants.BusAuxiliaries.ElectricSystem.PowernetVoltage,
-				ResultCardIdle = new ResultCard(new List<SmartResult>()),
-				ResultCardOverrun = new ResultCard(new List<SmartResult>()),
-				ResultCardTraction = new ResultCard(new List<SmartResult>()),
-				AlternatorGearEfficiency = 0.9,
-			};
+			return Tuple.Create(avgInclBase, avgWithoutBase);
 		}
 
 		private bool VehicleHasConsumer(string consumerName, IBusAuxiliariesDeclarationData busAux)
 		{
 			switch (consumerName) {
-				case "Interior lights LED bonus": return busAux.ElectricConsumers.InteriorLightsLED;
-				case "Day running lights LED bonus": return busAux.ElectricConsumers.DayrunninglightsLED;
-				case "Position lights LED bonus": return busAux.ElectricConsumers.PositionlightsLED;
-				case "Brake lights LED bonus": return busAux.ElectricConsumers.BrakelightsLED;
-				case "Headlights LED bonus": return busAux.ElectricConsumers.HeadlightsLED;
-				default: return false;
+				case "Day running lights LED bonus":
+				case "Position lights LED bonus":
+				case "Brake lights LED bonus":
+					return false;
+				case "Interior lights LED bonus": 
+				case "Headlights LED bonus":
+					return true;
+				default:
+					return false;
 			}
 		}
 
@@ -151,18 +184,60 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 				return DeclarationData.BusAuxiliaries.CalculateLengthInteriorLights(
 					mission.VehicleLength, mission.DoubleDecker, mission.FloorType, mission.NumberPassengersLowerDeck).Value();
 			}
+
 			return nbr.ToDouble();
 		}
 
 		private IPneumaticUserInputsConfig GetPneumaticUserConfig(IVehicleDeclarationInputData vehicleData)
 		{
+			var busAux = vehicleData.Components.BusAuxiliaries;
 			//throw new NotImplementedException();
 			return new PneumaticUserInputsConfig() {
-				SmartRegeneration = false,
-				KneelingHeight = 0.SI<Meter>()
+				KneelingHeight = 0.SI<Meter>(),
+				CompressorGearEfficiency = Constants.BusAuxiliaries.PneumaticUserConfig.CompressorGearEfficiency,
+				CompressorGearRatio = busAux.PneumaticSupply.Ratio,
+				CompressorMap = GetCompressorMap(busAux.PneumaticSupply.CompressorSize),
+				SmartAirCompression = busAux.PneumaticSupply.SmartAirCompression,
+				SmartRegeneration = busAux.PneumaticSupply.SmartRegeneration,
 			};
 		}
 
+		private ICompressorMap GetCompressorMap(string compressorSize)
+		{
+			var resource = "";
+			switch (compressorSize) {
+				case "Small":
+				case "Small + visco clutch":
+				case "Small + mech. clutch":
+					resource = "DEFAULT_1-Cylinder_1-Stage_393ccm.ACMP";
+					break;
+				case "Medium Supply 1-stage":
+				case "Medium Supply 1-stage + visco clutch":
+				case "Medium Supply 1-stage + mech. clutch":
+					resource = "DEFAULT_1-Cylinder_1-Stage_393ccm.ACMP";
+					break;
+				case "Medium Supply 2-stage":
+				case "Medium Supply 2-stage + visco clutch":
+				case "Medium Supply 2-stage + mech. clutch":
+					resource = "DEFAULT_2-Cylinder_1-Stage_650ccm.ACMP";
+					break;
+				case "Large Supply 1-stage":
+				case "Large Supply 1-stage + visco clutch":
+				case "Large Supply 1-stage + mech. clutch":
+					resource = "DEFAULT_2-Cylinder_2-Stage_398ccm.ACMP";
+					break;
+				case "Large Supply 2-stage":
+				case "Large Supply 2-stage + visco clutch":
+				case "Large Supply 2-stage + mech. clutch":
+					resource = "DEFAULT_3-Cylinder_2-Stage_598ccm.ACMP";
+					break;
+				default: throw new ArgumentException(string.Format("unkown compressor size {0}"), compressorSize);
+			}
+
+			return CompressorMapReader.ReadStream(
+				RessourceHelper.ReadStream(DeclarationData.DeclarationDataResourcePrefix + ".VAUXBuses." + resource));
+		}
+
 		public virtual ISSMInputs CreateSSMModelParameters(IVehicleData vehicleData, IFuelProperties heatingFuel)
 		{
 			var retVal = new SSMInputs(vehicleData, null, heatingFuel) {
@@ -191,6 +266,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 				VentilationOnDuringHeating = true,
 				VentilationWhenBothHeatingAndACInactive = true,
 				VentilationDuringAC = true,
+
 				//VentilationDuringHeating = VentilationLevel.High,
 				//VentilationDuringCooling = VentilationLevel.High,
 				//VentilationFlowSettingWhenHeatingAndACInactive = VentilationLevel.High,
@@ -208,15 +284,18 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 			return new PneumaticsConsumersDemand() {
 				AdBlueInjection = Constants.BusAuxiliaries.PneumaticConsumersDemands.AdBlueInjection,
 				AirControlledSuspension = Constants.BusAuxiliaries.PneumaticConsumersDemands.AirControlledSuspension,
-				Braking = retarderType == RetarderType.None ?
-					Constants.BusAuxiliaries.PneumaticConsumersDemands.BrakingNoRetarder :
-					Constants.BusAuxiliaries.PneumaticConsumersDemands.BrakingWithRetarder,
+				Braking = retarderType == RetarderType.None
+					? Constants.BusAuxiliaries.PneumaticConsumersDemands.BrakingNoRetarder
+					: Constants.BusAuxiliaries.PneumaticConsumersDemands.BrakingWithRetarder,
 				BreakingWithKneeling = Constants.BusAuxiliaries.PneumaticConsumersDemands.BreakingAndKneeling,
 				DeadVolBlowOuts = Constants.BusAuxiliaries.PneumaticConsumersDemands.DeadVolBlowOuts,
 				DeadVolume = Constants.BusAuxiliaries.PneumaticConsumersDemands.DeadVolume,
-				NonSmartRegenFractionTotalAirDemand = Constants.BusAuxiliaries.PneumaticConsumersDemands.NonSmartRegenFractionTotalAirDemand,
-				SmartRegenFractionTotalAirDemand = Constants.BusAuxiliaries.PneumaticConsumersDemands.SmartRegenFractionTotalAirDemand,
-				OverrunUtilisationForCompressionFraction = Constants.BusAuxiliaries.PneumaticConsumersDemands.OverrunUtilisationForCompressionFraction,
+				NonSmartRegenFractionTotalAirDemand =
+					Constants.BusAuxiliaries.PneumaticConsumersDemands.NonSmartRegenFractionTotalAirDemand,
+				SmartRegenFractionTotalAirDemand =
+					Constants.BusAuxiliaries.PneumaticConsumersDemands.SmartRegenFractionTotalAirDemand,
+				OverrunUtilisationForCompressionFraction =
+					Constants.BusAuxiliaries.PneumaticConsumersDemands.OverrunUtilisationForCompressionFraction,
 				DoorOpening = Constants.BusAuxiliaries.PneumaticConsumersDemands.DoorOpening,
 				StopBrakeActuation = Constants.BusAuxiliaries.PneumaticConsumersDemands.StopBrakeActuation,
 			};
diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/AdvancedAuxiliaries.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/AdvancedAuxiliaries.cs
index 3137d52ef1..06cae02596 100644
--- a/VectoCore/VectoCore/Models/BusAuxiliaries/AdvancedAuxiliaries.cs
+++ b/VectoCore/VectoCore/Models/BusAuxiliaries/AdvancedAuxiliaries.cs
@@ -117,15 +117,12 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries {
 			//if ((ssmTool.Load(ssmPath) == false || ssmToolModule14.Load(ssmPath) == false))
 				//throw new Exception(string.Format("Unable to load the ssmTOOL with file {0}", ssmPath));
 			
-			var m0_1 = new M0_1Impl(auxConfig);
-
-			M0 = new M00Impl(m0_1, alternatorMap, auxConfig.ElectricalUserInputsConfig.PowerNetVoltage, Signals, ssmTool);
+			
+			M0 = new M00Impl(auxConfig.ElectricalUserInputsConfig, Signals, ssmTool);
 
 
 			var M0_5tmp = new M0_5Impl(
-				M0, m0_1, alternatorMap,
-				auxConfig.ElectricalUserInputsConfig.ResultCardIdle, auxConfig.ElectricalUserInputsConfig.ResultCardTraction,
-				auxConfig.ElectricalUserInputsConfig.ResultCardOverrun, Signals);
+				M0, auxConfig.ElectricalUserInputsConfig, Signals);
 			M0_5 = M0_5tmp;
 
 			M1 = new M01Impl(
@@ -133,8 +130,7 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries {
 				auxConfig.PneumaticUserInputsConfig.CompressorGearEfficiency, ssmTool);
 
 
-			M2 = new M02Impl(m0_1, M0,
-				auxConfig.ElectricalUserInputsConfig.AlternatorGearEfficiency, auxConfig.ElectricalUserInputsConfig.PowerNetVoltage);
+			M2 = new M02Impl(M0, auxConfig.ElectricalUserInputsConfig);
 
 			
 			M3 = new M03Impl(auxConfig, compressorMap, auxCfg.Actuations, Signals);
diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/ElectricalConsumer.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/ElectricalConsumer.cs
index f9d0dad651..c705e35a78 100644
--- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/ElectricalConsumer.cs
+++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/ElectricalConsumer.cs
@@ -7,6 +7,7 @@ using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Configuration;
 using TUGraz.VectoCore.Models.BusAuxiliaries.Interfaces.DownstreamModules.Electrics;
+using TUGraz.VectoCore.Models.Declaration;
 
 // Copyright 2017 European Union.
 // Licensed under the EUPL (the 'Licence');
@@ -130,15 +131,13 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electric
 		//	PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(p));
 		//}
 
-		public Ampere this[MissionType mission]
+		public Ampere NominalCurrent(MissionType mission)
 		{
-			get {
-				if (_missions.ContainsKey(mission)) {
-					return _missions[mission];
-				}
+			return _missions.ContainsKey(mission) ? _missions[mission] : 0.SI<Ampere>();
+		}
 
-				return 0.SI<Ampere>();
-			}
+		public Ampere this[MissionType mission]
+		{
 			set {
 				if (_missions.ContainsKey(mission)) {
 					throw new VectoException("key {0} already exists!", mission.ToString());
@@ -147,5 +146,7 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electric
 				_missions[mission] = value;
 			}
 		}
+
+		
 	}
 }
diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/M00Impl.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/M00Impl.cs
index 396db0c7e3..220833b204 100644
--- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/M00Impl.cs
+++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/M00Impl.cs
@@ -14,14 +14,15 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electric
 		protected Volt _powernetVoltage;
 		protected ISignals _signals;
 		protected Watt _ElectricalPowerW;
-		private IM0_1_AverageElectricLoadDemand _m0_1;
 
-		public M00Impl(IM0_1_AverageElectricLoadDemand m0_1, IAlternatorMap alternatorEfficiencyMap, Volt powernetVoltage,
-			ISignals signals, ISSMTOOL ssmHvac)
+		private Ampere _totalAverageDemandAmpsIncludingBaseLoad;
+
+		//private IM0_1_AverageElectricLoadDemand _m0_1;
+
+		public M00Impl(IElectricsUserInputsConfig electricConfig, ISignals signals, ISSMTOOL ssmHvac)
 		{
-			if (m0_1 == null) {
-				throw new ArgumentException("No ElectricalConsumersList Supplied");
-			}
+			var alternatorEfficiencyMap = electricConfig.AlternatorMap;
+			var powernetVoltage = electricConfig.PowerNetVoltage;
 
 			if (alternatorEfficiencyMap == null) {
 				throw new ArgumentException("No Alternator Efficiency Map Supplied");
@@ -35,12 +36,11 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electric
 				throw new ArgumentException("No Signals reference was supplied.");
 			}
 
-			_m0_1 = m0_1;
-			
 			_alternatorEfficiencyMap = alternatorEfficiencyMap;
 
 			_powernetVoltage = powernetVoltage;
 
+			_totalAverageDemandAmpsIncludingBaseLoad = electricConfig.AverageCurrentDemandInclBaseLoad;
 			_signals = signals;
 
 			_ElectricalPowerW = ssmHvac.ElectricalWAdjusted;
@@ -56,7 +56,7 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electric
 		public double AlternatorsEfficiency
 		{
 			get {
-				var baseCurrentDemandAmps = _m0_1.TotalAverageDemandAmpsIncludingBaseLoad; // _electricalConsumersList.GetTotalAverageDemandAmps(false);
+				var baseCurrentDemandAmps = _totalAverageDemandAmpsIncludingBaseLoad; // _electricalConsumersList.GetTotalAverageDemandAmps(false);
 				var totalDemandAmps = baseCurrentDemandAmps + GetHVACElectricalCurrentDemand;
 				return _alternatorEfficiencyMap.GetEfficiency(_signals.EngineSpeed, totalDemandAmps);
 			}
diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/M02Impl.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/M02Impl.cs
index 3f1cc9c919..8a288aeb9a 100644
--- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/M02Impl.cs
+++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/M02Impl.cs
@@ -1,4 +1,5 @@
 using System;
+using TUGraz.VectoCommon.BusAuxiliaries;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Configuration;
 using TUGraz.VectoCore.Models.BusAuxiliaries.Interfaces.DownstreamModules;
@@ -9,17 +10,15 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electric
 	public class M02Impl : AbstractModule, IM2_AverageElectricalLoadDemand
 	{
 		private Volt _powerNetVoltage;
-		private IM0_1_AverageElectricLoadDemand _m0_1;
+		
 		private IM0_NonSmart_AlternatorsSetEfficiency _module0;
 		private double _alternatorPulleyEffiency;
+		private Ampere _totalAverageDemandAmpsIncludingBaseLoad;
 
-		public M02Impl(
-			IM0_1_AverageElectricLoadDemand m0_1, IM0_NonSmart_AlternatorsSetEfficiency m0, double altPulleyEfficiency,
-			Volt powerNetVoltage)
+		public M02Impl(IM0_NonSmart_AlternatorsSetEfficiency m0, IElectricsUserInputsConfig electricConfig)
 		{
-			if (m0_1 == null) {
-				throw new ArgumentException("Electrical Consumer List must be supplied");
-			}
+			var altPulleyEfficiency = electricConfig.AlternatorGearEfficiency;
+			var powerNetVoltage = electricConfig.PowerNetVoltage;
 			if (m0 == null) {
 				throw new ArgumentException("Must supply module 0");
 			}
@@ -31,7 +30,7 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electric
 			}
 
 			_powerNetVoltage = powerNetVoltage;
-			_m0_1 = m0_1;
+			_totalAverageDemandAmpsIncludingBaseLoad = electricConfig.AverageCurrentDemandInclBaseLoad;			
 			_module0 = m0;
 			_alternatorPulleyEffiency = altPulleyEfficiency;
 		}
@@ -40,7 +39,7 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electric
 
 		public Watt GetAveragePowerAtCrankFromElectrics()
 		{
-			var electricalPowerDemandsWatts = _powerNetVoltage * _m0_1.TotalAverageDemandAmpsIncludingBaseLoad;
+			var electricalPowerDemandsWatts = _powerNetVoltage * _totalAverageDemandAmpsIncludingBaseLoad;
 			var alternatorsEfficiency = _module0.AlternatorsEfficiency;
 			var electricalPowerDemandsWattsDividedByAlternatorEfficiency =
 				electricalPowerDemandsWatts * (1 / alternatorsEfficiency);
diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/M0_1Impl.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/M0_1Impl.cs
deleted file mode 100644
index 7651b07a43..0000000000
--- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/M0_1Impl.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-using System.Diagnostics;
-using System.Linq;
-using TUGraz.VectoCommon.BusAuxiliaries;
-using TUGraz.VectoCommon.Utils;
-using TUGraz.VectoCore.Configuration;
-using TUGraz.VectoCore.Models.BusAuxiliaries.Interfaces.DownstreamModules;
-
-namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electrics
-{
-	public class M0_1Impl : IM0_1_AverageElectricLoadDemand
-	{
-		
-		public M0_1Impl(IAuxiliaryConfig config)
-		{
-
-			TotalAverageDemandAmpsIncludingBaseLoad = config.ElectricalUserInputsConfig.AverageCurrentDemandInclBaseLoad;
-			TotalAverageDemandAmpsWithoutBaseLoad = config.ElectricalUserInputsConfig.AverageCurrentDemandWithoutBaseLoad;
-		}
-
-		public Ampere TotalAverageDemandAmpsIncludingBaseLoad { get; }
-
-		public Ampere TotalAverageDemandAmpsWithoutBaseLoad { get; }
-	}
-}
diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/M0_5Impl.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/M0_5Impl.cs
index 40ade8dbf0..7d53a16f4f 100644
--- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/M0_5Impl.cs
+++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/M0_5Impl.cs
@@ -20,17 +20,22 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electric
 		protected IResultCard _resultCardTraction;
 		protected IResultCard _resultCardOverrun;
 		protected ISignals _signals;
-		private IM0_1_AverageElectricLoadDemand _m0_1;
 
-		public M0_5Impl(IM0_NonSmart_AlternatorsSetEfficiency m0, IM0_1_AverageElectricLoadDemand m0_1, IAlternatorMap alternatorMap, IResultCard resultCardIdle, IResultCard resultCardTraction, IResultCard resultCardOverrun, ISignals signals)
+		private Ampere _totalAverageDemandAmpsWithoutBaseLoad;
+
+		//private IM0_1_AverageElectricLoadDemand _m0_1;
+
+		public M0_5Impl(IM0_NonSmart_AlternatorsSetEfficiency m0, IElectricsUserInputsConfig electricConfig, ISignals signals)
 		{
+			var alternatorMap = electricConfig.AlternatorMap;
+			var resultCardIdle = electricConfig.ResultCardIdle;
+			var resultCardTraction = electricConfig.ResultCardTraction;
+			var resultCardOverrun = electricConfig.ResultCardOverrun;
+
 			//'Sanity Check on supplied arguments, throw an argument exception
 			if (m0 == null) {
 				throw new ArgumentException("Module 0 must be supplied");}
 
-			if (m0_1 == null) {
-				throw new ArgumentException("ElectricalConsumablesList must be supplied even if empty");
-			}
 			if (alternatorMap ==null) {throw new ArgumentException("Must supply a valid alternator map");
 			}
 			if (resultCardIdle == null) {
@@ -49,8 +54,8 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electric
 
 			//'Assignments to private variables.
 			_m0 = m0;
-			_m0_1 = m0_1;
 			_alternatorMap = alternatorMap;
+			_totalAverageDemandAmpsWithoutBaseLoad = electricConfig.AverageCurrentDemandWithoutBaseLoad;
 			_resultCardIdle = resultCardIdle;
 			_resultCardTraction = resultCardTraction;
 			_resultCardOverrun = resultCardOverrun;
@@ -61,7 +66,7 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electric
 
 		private Ampere HvacPlusNonBaseCurrents()
 		{
-			return _m0.GetHVACElectricalCurrentDemand + _m0_1.TotalAverageDemandAmpsWithoutBaseLoad;
+			return _m0.GetHVACElectricalCurrentDemand + _totalAverageDemandAmpsWithoutBaseLoad;
 		}
 
 		public Ampere SmartIdleCurrent
diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/ResultCard.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/ResultCard.cs
index 472cd57ba2..c08dab04fc 100644
--- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/ResultCard.cs
+++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/ResultCard.cs
@@ -17,6 +17,18 @@ using TUGraz.VectoCommon.Utils;
 
 namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electrics
 {
+	public class DummyResultCard : IResultCard
+	{
+		#region Implementation of IResultCard
+
+		public Ampere GetSmartCurrentResult(Ampere amps)
+		{
+			return 0.SI<Ampere>();
+		}
+
+		#endregion
+	}
+
 	public class ResultCard : IResultCard
 	{
 		private readonly List<SmartResult> _results;
@@ -24,9 +36,13 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electric
 		// Constructor
 		public ResultCard(List<SmartResult> results)
 		{
-			if (results == null)
+			if (results == null) {
 				throw new ArgumentException("A list of smart results must be supplied.");
+			}
 
+			if (results.Count < 2) {
+				throw new ArgumentException("At least two smart result entries must be provided.");
+			}
 			_results = results.OrderBy(x => x.Amps).ToList();
 		}
 
@@ -39,11 +55,6 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electric
 
 		public Ampere GetSmartCurrentResult(Ampere Amps)
 		{
-			// TODO: MQ 2019-10-29 - keep this?
-			if (_results.Count < 2) {
-				return 10.SI<Ampere>();
-			}
-
 			return GetOrInterpolate(Amps);
 		}
 
@@ -57,8 +68,6 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electric
 		///         ''' <remarks></remarks>
 		private Ampere GetOrInterpolate(Ampere amps)
 		{
-			// TODO: MQ 2019-10-29 - simplify?
-
 			var s = _results.GetSection(x => amps > x.Amps);
 			return VectoMath.Interpolate(s.Item1.Amps, s.Item2.Amps, s.Item1.SmartAmps, s.Item2.SmartAmps, amps);
 
diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/SimpleAlternator.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/SimpleAlternator.cs
new file mode 100644
index 0000000000..81732e9172
--- /dev/null
+++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/SimpleAlternator.cs
@@ -0,0 +1,30 @@
+using System.Collections.Generic;
+using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCommon.Utils;
+using TUGraz.VectoCore.Models.BusAuxiliaries.Interfaces.DownstreamModules.Electrics;
+
+namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electrics
+{
+	public class SimpleAlternator : IAlternatorMap
+	{
+		protected double _efficiency;
+
+		
+
+		public SimpleAlternator(double efficiency)
+		{
+			_efficiency = efficiency;
+		}
+
+		#region Implementation of IAlternatorMap
+
+		public double GetEfficiency(PerSecond rpm, Ampere currentDemand)
+		{
+			return _efficiency;
+		}
+
+		public string Source { get { return null; } }
+
+		#endregion
+	}
+}
diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/M01Impl.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/M01Impl.cs
index 0b2bfb01a9..427c313d85 100644
--- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/M01Impl.cs
+++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/HVAC/M01Impl.cs
@@ -43,7 +43,6 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC
 			_m0 = m0;
 			_alternatorGearEfficiency = altGearEfficiency;
 			
-
 			_compressorGearEfficiency = compressorGearEfficiency;
 			
 			_ElectricalPowerW = ssm.ElectricalWAdjusted;
diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/Interfaces/DownstreamModules/IM0_1_AverageElectricLoadDemand.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/Interfaces/DownstreamModules/IM0_1_AverageElectricLoadDemand.cs
deleted file mode 100644
index 761c3cf65f..0000000000
--- a/VectoCore/VectoCore/Models/BusAuxiliaries/Interfaces/DownstreamModules/IM0_1_AverageElectricLoadDemand.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-using TUGraz.VectoCommon.Utils;
-
-namespace TUGraz.VectoCore.Models.BusAuxiliaries.Interfaces.DownstreamModules
-{
-	public interface IM0_1_AverageElectricLoadDemand
-	{
-		Ampere TotalAverageDemandAmpsIncludingBaseLoad { get; }
-		Ampere TotalAverageDemandAmpsWithoutBaseLoad { get; }
-	}
-}
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Models/Declaration/BusAlternatorTechnologies.cs b/VectoCore/VectoCore/Models/Declaration/BusAlternatorTechnologies.cs
new file mode 100644
index 0000000000..c0156498dc
--- /dev/null
+++ b/VectoCore/VectoCore/Models/Declaration/BusAlternatorTechnologies.cs
@@ -0,0 +1,27 @@
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+using TUGraz.VectoCore.Utils;
+
+namespace TUGraz.VectoCore.Models.Declaration {
+	public sealed class BusAlternatorTechnologies : LookupData<string, double>
+	{
+		#region Overrides of LookupData
+
+		protected override string ResourceId { get { return DeclarationData.DeclarationDataResourcePrefix + ".Buses.AlternatorTechnologies.csv"; } }
+
+		protected override string ErrorMessage
+		{
+			get { return "Bus-Alternator Technology Lookup Error: No value found for Technology. Key: '{0}'"; }
+		}
+		protected override void ParseData(DataTable table)
+		{
+			Data = table.Rows.Cast<DataRow>()
+						.Select(row => Tuple.Create(row.Field<string>("technology"), row.ParseDouble("efficiency")))
+						.ToDictionary(e => e.Item1, e => e.Item2);
+		}
+
+		#endregion
+	}
+}
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Models/Declaration/BusSegments.cs b/VectoCore/VectoCore/Models/Declaration/BusSegments.cs
index f4c4d99e4f..e75901dbc1 100644
--- a/VectoCore/VectoCore/Models/Declaration/BusSegments.cs
+++ b/VectoCore/VectoCore/Models/Declaration/BusSegments.cs
@@ -8,12 +8,13 @@ using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Configuration;
 using TUGraz.VectoCore.Utils;
 
-namespace TUGraz.VectoCore.Models.Declaration {
+namespace TUGraz.VectoCore.Models.Declaration
+{
 	public sealed class BusSegments : LookupData<VehicleCategory, AxleConfiguration, bool, FloorType, bool, bool, Segment>
 	{
 		private DataTable _segmentTable;
 
-		
+
 		#region Overrides of LookupData
 
 		protected override string ResourceId
@@ -21,28 +22,34 @@ namespace TUGraz.VectoCore.Models.Declaration {
 			get { return DeclarationData.DeclarationDataResourcePrefix + ".HeavyBusSegmentationTable.csv"; }
 		}
 
-		protected override string ErrorMessage {
+		protected override string ErrorMessage
+		{
 			get {
 				return
 					"ERROR: Could not find the declaration segment for vehicle. Category: {0}, AxleConfiguration: {1}, GrossVehicleWeight: {2}";
 			}
 		}
+
 		protected override void ParseData(DataTable table)
 		{
 			_segmentTable = table.Copy();
 		}
 
-		public override Segment Lookup(VehicleCategory vehicleCategory, AxleConfiguration axleConfiguration, bool articulated, FloorType entrance, bool doubleDecker, bool primaryVehicle)
+		public override Segment Lookup(
+			VehicleCategory vehicleCategory, AxleConfiguration axleConfiguration, bool articulated, FloorType entrance,
+			bool doubleDecker, bool primaryVehicle)
 		{
 			if (primaryVehicle) {
 				return LookupPrimaryVehicle(vehicleCategory, axleConfiguration, articulated);
 			}
+
 			throw new NotImplementedException("Completed Vechiles not implemented");
 		}
 
 		#endregion
 
-		private Segment LookupPrimaryVehicle(VehicleCategory vehicleCategory, AxleConfiguration axleConfiguration, bool articulated)
+		private Segment LookupPrimaryVehicle(
+			VehicleCategory vehicleCategory, AxleConfiguration axleConfiguration, bool articulated)
 		{
 			var rows = _segmentTable.AsEnumerable().Where(
 				r => {
@@ -55,8 +62,9 @@ namespace TUGraz.VectoCore.Models.Declaration {
 							axleConfiguration.NumAxles() == numAxles;
 				}).ToList();
 			if (rows.Count == 0) {
-				return new Segment() {Found = false};
+				return new Segment() { Found = false };
 			}
+
 			var firstRow = rows.First();
 			var segment = new Segment {
 				Found = true,
@@ -66,8 +74,9 @@ namespace TUGraz.VectoCore.Models.Declaration {
 				AxleConfiguration = axleConfiguration,
 				VehicleClass = VehicleClassHelper.Parse(firstRow.Field<string>("hdvsupergroup")),
 				AccelerationFile =
-					RessourceHelper.ReadStream(DeclarationData.DeclarationDataResourcePrefix + ".VACC." +
-												firstRow.Field<string>(".vaccfile")),
+					RessourceHelper.ReadStream(
+						DeclarationData.DeclarationDataResourcePrefix + ".VACC." +
+						firstRow.Field<string>(".vaccfile")),
 				Missions = CreateMissions(rows),
 				DesignSpeed = firstRow.ParseDouble("designspeed").KMPHtoMeterPerSecond(),
 			};
@@ -87,6 +96,7 @@ namespace TUGraz.VectoCore.Models.Declaration {
 					if (string.IsNullOrWhiteSpace(row.Field<string>(missionType.ToString()))) {
 						continue;
 					}
+
 					var busArea = (row.ParseDouble("length").SI<Meter>() - Constants.BusParameters.DriverCompartmentLength) *
 								row.ParseDouble("width").SI<Meter>();
 					var passengerDensity = row.ParseDouble(missionType.ToString()).SI<PerSquareMeter>();
@@ -102,8 +112,6 @@ namespace TUGraz.VectoCore.Models.Declaration {
 								Constants.FileExtensions.CycleFile),
 						AxleWeightDistribution = GetAxleWeightDistribution(row),
 						CurbMass = row.ParseDouble("curbmass").SI<Kilogram>(),
-						NumberPassengersLowerDeck = row.ParseDouble("passengerslowerdeck"),
-						NumberPassengersUpperDeck = row.ParseDouble("passengersupperdeck"),
 						BodyCurbWeight = 0.SI<Kilogram>(),
 						Trailer = new List<MissionTrailer>(),
 						MinLoad = null,
@@ -111,10 +119,23 @@ namespace TUGraz.VectoCore.Models.Declaration {
 						LowLoad = refLoad * 0.2,
 						RefLoad = refLoad,
 						VehicleHeight = row.ParseDouble("height").SI<Meter>(),
-						VehicleLength = row.ParseDouble("length").SI<Meter>(),
-						VehicleWidth = row.ParseDouble("width").SI<Meter>(),
 						TotalCargoVolume = 0.SI<CubicMeter>(),
-						DefaultCDxA = row.ParseDouble("cdxastandard").SI<SquareMeter>()
+						DefaultCDxA = row.ParseDouble("cdxastandard").SI<SquareMeter>(),
+						BusParameter = new BusParameters() {
+							VehicleLength = row.ParseDouble("length").SI<Meter>(),
+							VehicleWidth = row.ParseDouble("width").SI<Meter>(),
+							NumberPassengersLowerDeck = row.ParseDouble("passengerslowerdeck"),
+							NumberPassengersUpperDeck = row.ParseDouble("passengersupperdeck"),
+							DoubleDecker = row.ParseBoolean("doubledecker"),
+							FloorType = GetFloorType(row.Field<string>("floortype")),
+							HVACConfiguration = BusHVACSystemConfigurationHelper.Parse(row.Field<string>("hvaccompressortype")),
+							HVACAuxHeaterPower = row.ParseDouble("hvacauxheater").SI(Unit.SI.Kilo.Watt).Cast<Watt>(),
+							HVACCompressorType = ACCompressorTypeExtensions.ParseEnum(row.Field<string>("hvaccompressortype")),
+							HVACDoubleGlasing = row.ParseBoolean("hvacdoubleglasing"),
+							HVACHeatpump = row.ParseBoolean("hvacheatpump"),
+							HVACAdjustableAuxHeater = row.ParseBoolean("hvacadjustableauxiliaryheater"),
+							HVACSeparateAirDistributionDucts = row.ParseBoolean("hvacseparateairdistributionducts")
+						}
 					};
 					missions.Add(mission);
 				}
@@ -123,6 +144,17 @@ namespace TUGraz.VectoCore.Models.Declaration {
 			return missions.ToArray();
 		}
 
+		private FloorType GetFloorType(string field)
+		{
+			switch (field) {
+				case "high": return FloorType.HighFloor;
+				case "low": return FloorType.LowFloor;
+				case "semilowfloor":
+				case "semilow": return FloorType.SemiLowFloor;
+				default: return FloorType.Unknown;
+			}
+		}
+
 		private static double[] GetAxleWeightDistribution(DataRow row)
 		{
 			var axleDistribution = row.Field<string>("AxlesWeights");
@@ -133,4 +165,4 @@ namespace TUGraz.VectoCore.Models.Declaration {
 			return axleDistribution.Split('/').ToDouble().Select(x => x / 100.0).ToArray();
 		}
 	}
-}
\ No newline at end of file
+}
diff --git a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs
index d5d6635dec..a1d3c7f1dc 100644
--- a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs
+++ b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs
@@ -156,6 +156,8 @@ namespace TUGraz.VectoCore.Models.Declaration
 			//	}
 			//}
 
+			public static BusAlternatorTechnologies AlternatorTechnologies = new BusAlternatorTechnologies();
+
 			public static ISSMTechnologies SSMTechnologyList
 			{
 				get {
@@ -210,7 +212,7 @@ namespace TUGraz.VectoCore.Models.Declaration
 				}
 			}
 
-			public static Meter CalculateLengthInteriorLights(Meter vehicleLength, bool doubleDecker, FloorType floorType, int numPassLowFloor)
+			public static Meter CalculateLengthInteriorLights(Meter vehicleLength, bool doubleDecker, FloorType floorType, double numPassLowFloor)
 			{
 				if (floorType == FloorType.LowFloor) {
 					return doubleDecker ? 2 * vehicleLength : vehicleLength;
diff --git a/VectoCore/VectoCore/Models/Declaration/Mission.cs b/VectoCore/VectoCore/Models/Declaration/Mission.cs
index 2c9c19b008..699bc53ade 100644
--- a/VectoCore/VectoCore/Models/Declaration/Mission.cs
+++ b/VectoCore/VectoCore/Models/Declaration/Mission.cs
@@ -33,6 +33,7 @@ using System;
 using System.Collections.Generic;
 using System.IO;
 using System.Linq;
+using TUGraz.VectoCommon.BusAuxiliaries;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
 
@@ -91,6 +92,8 @@ namespace TUGraz.VectoCore.Models.Declaration
 
 		public double NumberPassengersLowerDeck { get; internal set; }
 		public double NumberPassengersUpperDeck { get; internal set; }
+		public bool DoubleDecker { get; set; }
+		public FloorType FloorType { get; set; }
 	}
 
 	public class MissionTrailer
diff --git a/VectoCore/VectoCore/Resources/Declaration/Buses/AlternatorTechnologies.csv b/VectoCore/VectoCore/Resources/Declaration/Buses/AlternatorTechnologies.csv
new file mode 100644
index 0000000000..5fc779587d
--- /dev/null
+++ b/VectoCore/VectoCore/Resources/Declaration/Buses/AlternatorTechnologies.csv
@@ -0,0 +1,2 @@
+Technology , Efficiency
+default    , 0.7
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Resources/Declaration/HeavyBusSegmentationTable.csv b/VectoCore/VectoCore/Resources/Declaration/HeavyBusSegmentationTable.csv
index 8471e5e9e4..8d87f5ce08 100644
--- a/VectoCore/VectoCore/Resources/Declaration/HeavyBusSegmentationTable.csv
+++ b/VectoCore/VectoCore/Resources/Declaration/HeavyBusSegmentationTable.csv
@@ -1,26 +1,26 @@
-HDV group , Production Stage , Vehicle Category , HDV SuperGroup , Articulated , Num Axles , TPMLM_Min , TPMLM_Max , doubledecker , floor type , DesignSpeed , Body , .vacc file , Cross Wind Correction , CdxA Standard , AxlesWeights        , Width , Length , Height , CurbMass , PassengersLowerDeck , PassengersUpperDeck , Heavy Urban , Urban , Suburban , Interurban , Coach , External displays , Internal displays , Fridge , Kitchen Standard ,
+HDV group , Production Stage , Vehicle Category , HDV SuperGroup , Articulated , Num Axles , TPMLM_Min , TPMLM_Max , doubledecker , floor type , DesignSpeed , Body , .vacc file , Cross Wind Correction , CdxA Standard , AxlesWeights        , Width , Length , Height , CurbMass , PassengersLowerDeck , PassengersUpperDeck , Heavy Urban , Urban , Suburban , Interurban , Coach , External displays , Internal displays , Fridge , Kitchen Standard , HVAC System Configuration , HVAC Compressor type , HVAC Aux Heater , HVAC Double Glasing , HVAC Heatpump , HVAC Adjustable AuxiliaryHeater , HVAC SeparateAirDistributionDucts
 ## Heavy Bus Primary Vehicles
-P31SD     , 1                , HeavyBus         , PB41           , -           , 2         , 7.4       , 999       , 0            , low        , 100         ,      , Bus.vacc   , CoachBus              , 4.9           , 37.5/62.5           , 2.55  , 12     , 2.7    , 10000    , 80                  , 0                   , 3           , 3     , 3        ,            ,       , 3                 , 2                 , 0      , 0                ,
-P31DD     , 1                , HeavyBus         , PB41           , -           , 2         , 7.4       , 999       , 1            , low        , 100         ,      , Bus.vacc   , CoachBus              , 6.2           , 37.5/62.5           , 2.55  , 12     , 3.7    , 10000    , 60                  , 40                  , 3.7         , 3.7   , 3.7      ,            ,       , 3                 , 3                 , 0      , 0                ,
-P32SD     , 1                , HeavyBus         , PB41           , -           , 2         , 7.4       , 999       , 0            , high       , 100         ,      , Bus.vacc   , CoachBus              , 4.6           , 37.5/62.5           , 2.55  , 12     , 3.0    , 10000    , 45                  , 0                   ,             ,       ,          , 2.2        , 1.4   , 2                 , 2                 , 0.5    , 0.5              ,
-P32SD     , 1                , HeavyBus         , PB41           , -           , 2         , 7.4       , 999       , 1            , high       , 100         ,      , Bus.vacc   , CoachBus              , 5.2           , 37.5/62.5           , 2.55  , 12     , 3.9    , 10000    , 25                  , 35                  ,             ,       ,          , 3          , 2     , 1                 , 2                 , 1      , 1                ,
+P31SD     , 1                , HeavyBus         , PB41           , -           , 2         , 7.4       , 999       , 0            , low        , 100         ,      , Bus.vacc   , CoachBus              , 4.9           , 37.5/62.5           , 2.55  , 12     , 2.7    , 10000    , 80                  , 0                   , 3           , 3     , 3        ,            ,       , 3                 , 2                 , 0      , 0                , 6                         , 2-stage              , 15              , 0                   , 0             , 0                               , 0
+P31DD     , 1                , HeavyBus         , PB41           , -           , 2         , 7.4       , 999       , 1            , low        , 100         ,      , Bus.vacc   , CoachBus              , 6.2           , 37.5/62.5           , 2.55  , 12     , 3.7    , 10000    , 60                  , 40                  , 3.7         , 3.7   , 3.7      ,            ,       , 3                 , 3                 , 0      , 0                , 6                         , 2-stage              , 15              , 0                   , 0             , 0                               , 0
+P32SD     , 1                , HeavyBus         , PB41           , -           , 2         , 7.4       , 999       , 0            , high       , 100         ,      , Bus.vacc   , CoachBus              , 4.6           , 37.5/62.5           , 2.55  , 12     , 3.0    , 10000    , 45                  , 0                   ,             ,       ,          , 2.2        , 1.4   , 2                 , 2                 , 0.5    , 0.5              , 6                         , 2-stage              , 30              , 1                   , 0             , 0                               , 1
+P32SD     , 1                , HeavyBus         , PB41           , -           , 2         , 7.4       , 999       , 1            , high       , 100         ,      , Bus.vacc   , CoachBus              , 5.2           , 37.5/62.5           , 2.55  , 12     , 3.9    , 10000    , 25                  , 35                  ,             ,       ,          , 3          , 2     , 1                 , 2                 , 1      , 1                , 6                         , 2-stage              , 30              , 1                   , 0             , 0                               , 1
 ##
-P33SD     , 1                , HeavyBus         , PB42           , 0           , 3         , 7.4       , 999       , 0            , low        , 100         ,      , Bus.vacc   , CoachBus              , 5.0           , 27.3/45.4/27.3      , 2.55  , 14     , 2.7    , 12000    , 104                 , 0                   , 3           , 3     , 3        ,            ,       , 3                 , 2                 , 0      , 0                ,
-P33DD     , 1                , HeavyBus         , PB42           , 0           , 3         , 7.4       , 999       , 1            , low        , 100         ,      , Bus.vacc   , CoachBus              , 6.3           , 27.3/45.4/27.3      , 2.55  , 14     , 3.7    , 12000    , 78                  , 52                  , 3.7         , 3.7   , 3.7      ,            ,       , 3                 , 3                 , 0      , 0                ,
-P34SD     , 1                , HeavyBus         , PB42           , 0           , 3         , 7.4       , 999       , 0            , high       , 100         ,      , Bus.vacc   , CoachBus              , 4.7           , 27.3/45.4/27.3      , 2.55  , 14     , 3.0    , 12000    , 59                  , 0                   ,             ,       ,          , 2.2        , 1.4   , 2                 , 2                 , 0.5    , 0.5              ,
-P34SD     , 1                , HeavyBus         , PB42           , 0           , 3         , 7.4       , 999       , 1            , high       , 100         ,      , Bus.vacc   , CoachBus              , 5.3           , 27.3/45.4/27.3      , 2.55  , 14     , 3.9    , 12000    , 33                  , 46                  ,             ,       ,          , 3          , 2     , 1                 , 4                 , 1      , 1.0              ,
+P33SD     , 1                , HeavyBus         , PB42           , 0           , 3         , 7.4       , 999       , 0            , low        , 100         ,      , Bus.vacc   , CoachBus              , 5.0           , 27.3/45.4/27.3      , 2.55  , 14     , 2.7    , 12000    , 104                 , 0                   , 3           , 3     , 3        ,            ,       , 3                 , 2                 , 0      , 0                , 6                         , 2-stage              , 15              , 0                   , 0             , 0                               , 0
+P33DD     , 1                , HeavyBus         , PB42           , 0           , 3         , 7.4       , 999       , 1            , low        , 100         ,      , Bus.vacc   , CoachBus              , 6.3           , 27.3/45.4/27.3      , 2.55  , 14     , 3.7    , 12000    , 78                  , 52                  , 3.7         , 3.7   , 3.7      ,            ,       , 3                 , 3                 , 0      , 0                , 6                         , 2-stage              , 15              , 0                   , 0             , 0                               , 0
+P34SD     , 1                , HeavyBus         , PB42           , 0           , 3         , 7.4       , 999       , 0            , high       , 100         ,      , Bus.vacc   , CoachBus              , 4.7           , 27.3/45.4/27.3      , 2.55  , 14     , 3.0    , 12000    , 59                  , 0                   ,             ,       ,          , 2.2        , 1.4   , 2                 , 2                 , 0.5    , 0.5              , 6                         , 2-stage              , 30              , 1                   , 0             , 0                               , 1
+P34SD     , 1                , HeavyBus         , PB42           , 0           , 3         , 7.4       , 999       , 1            , high       , 100         ,      , Bus.vacc   , CoachBus              , 5.3           , 27.3/45.4/27.3      , 2.55  , 14     , 3.9    , 12000    , 33                  , 46                  ,             ,       ,          , 3          , 2     , 1                 , 4                 , 1      , 1.0              , 6                         , 2-stage              , 30              , 1                   , 0             , 0                               , 1
 #
-P35SD     , 1                , HeavyBus         , PB43           , 1           , 3         , 7.4       , 999       , 0            , low        , 100         ,      , Bus.vacc   , CoachBus              , 5.1           , 24.3/35.2/40.5      , 2.55  , 18     , 2.7    , 12000    , 104                 , 0                   , 3           , 3     , 3        ,            ,       , 3                 , 3                 , 0      , 0                ,
-P35DD     , 1                , HeavyBus         , PB43           , 1           , 3         , 7.4       , 999       , 1            , low        , 100         ,      , Bus.vacc   , CoachBus              , 6.4           , 24.3/35.2/40.5      , 2.55  , 18     , 3.7    , 12000    , 78                  , 52                  , 3.7         , 3.7   , 3.7      ,            ,       ,                   ,                   ,        ,                  ,
-P36SD     , 1                , HeavyBus         , PB43           , 1           , 3         , 7.4       , 999       , 0            , high       , 100         ,      , Bus.vacc   , CoachBus              , 4.8           , 24.3/35.2/40.5      , 2.55  , 18     , 3.0    , 12000    , 59                  , 0                   ,             ,       ,          , 2.2        , 1.4   ,                   ,                   ,        ,                  ,
-P36SD     , 1                , HeavyBus         , PB43           , 1           , 3         , 7.4       , 999       , 1            , high       , 100         ,      , Bus.vacc   , CoachBus              , 5.4           , 24.3/35.2/40.5      , 2.55  , 18     , 3.9    , 12000    , 33                  , 46                  ,             ,       ,          , 3          , 2     ,                   ,                   ,        ,                  ,
+P35SD     , 1                , HeavyBus         , PB43           , 1           , 3         , 7.4       , 999       , 0            , low        , 100         ,      , Bus.vacc   , CoachBus              , 5.1           , 24.3/35.2/40.5      , 2.55  , 18     , 2.7    , 12000    , 104                 , 0                   , 3           , 3     , 3        ,            ,       , 3                 , 3                 , 0      , 0                , 6                         , 2-stage              , 15              , 0                   , 0             , 0                               , 0
+P35DD     , 1                , HeavyBus         , PB43           , 1           , 3         , 7.4       , 999       , 1            , low        , 100         ,      , Bus.vacc   , CoachBus              , 6.4           , 24.3/35.2/40.5      , 2.55  , 18     , 3.7    , 12000    , 78                  , 52                  , 3.7         , 3.7   , 3.7      ,            ,       ,                   ,                   ,        ,                  , 6                         , 2-stage              , 15              , 0                   , 0             , 0                               , 0
+P36SD     , 1                , HeavyBus         , PB43           , 1           , 3         , 7.4       , 999       , 0            , high       , 100         ,      , Bus.vacc   , CoachBus              , 4.8           , 24.3/35.2/40.5      , 2.55  , 18     , 3.0    , 12000    , 59                  , 0                   ,             ,       ,          , 2.2        , 1.4   ,                   ,                   ,        ,                  , 6                         , 2-stage              , 30              , 1                   , 0             , 0                               , 1
+P36SD     , 1                , HeavyBus         , PB43           , 1           , 3         , 7.4       , 999       , 1            , high       , 100         ,      , Bus.vacc   , CoachBus              , 5.4           , 24.3/35.2/40.5      , 2.55  , 18     , 3.9    , 12000    , 33                  , 46                  ,             ,       ,          , 3          , 2     ,                   ,                   ,        ,                  , 6                         , 2-stage              , 30              , 1                   , 0             , 0                               , 1
 ##        ,
-P37SD     , 1                , HeavyBus         , PB44           , 0           , 4         , 7.4       , 999       , 0            , low        , 100         ,      , Bus.vacc   , CoachBus              , 5.1           , 21.4/21.4/35.8/21.4 , 2.55  , 15     , 2.7    , 14000    , 125                 , 0                   , 3           , 3     , 3        ,            ,       ,                   ,                   ,        ,                  ,
-P37DD     , 1                , HeavyBus         , PB44           , 0           , 4         , 7.4       , 999       , 1            , low        , 100         ,      , Bus.vacc   , CoachBus              , 6.4           , 21.4/21.4/35.8/21.4 , 2.55  , 15     , 3.7    , 14000    , 94                  , 62                  , 3.7         , 3.7   , 3.7      ,            ,       ,                   ,                   ,        ,                  ,
-P38SD     , 1                , HeavyBus         , PB44           , 0           , 4         , 7.4       , 999       , 0            , high       , 100         ,      , Bus.vacc   , CoachBus              , 4.8           , 21.4/21.4/35.8/21.4 , 2.55  , 15     , 3.0    , 14000    , 70                  , 0                   ,             ,       ,          , 2.2        , 1.4   ,                   ,                   ,        ,                  ,
-P38SD     , 1                , HeavyBus         , PB44           , 0           , 4         , 7.4       , 999       , 1            , high       , 100         ,      , Bus.vacc   , CoachBus              , 5.4           , 21.4/21.4/35.8/21.4 , 2.55  , 15     , 3.9    , 14000    , 39                  , 55                  ,             ,       ,          , 3          , 2     ,                   ,                   ,        ,                  ,
+P37SD     , 1                , HeavyBus         , PB44           , 0           , 4         , 7.4       , 999       , 0            , low        , 100         ,      , Bus.vacc   , CoachBus              , 5.1           , 21.4/21.4/35.8/21.4 , 2.55  , 15     , 2.7    , 14000    , 125                 , 0                   , 3           , 3     , 3        ,            ,       ,                   ,                   ,        ,                  , 6                         , 2-stage              , 15              , 0                   , 0             , 0                               , 0
+P37DD     , 1                , HeavyBus         , PB44           , 0           , 4         , 7.4       , 999       , 1            , low        , 100         ,      , Bus.vacc   , CoachBus              , 6.4           , 21.4/21.4/35.8/21.4 , 2.55  , 15     , 3.7    , 14000    , 94                  , 62                  , 3.7         , 3.7   , 3.7      ,            ,       ,                   ,                   ,        ,                  , 6                         , 2-stage              , 15              , 0                   , 0             , 0                               , 0
+P38SD     , 1                , HeavyBus         , PB44           , 0           , 4         , 7.4       , 999       , 0            , high       , 100         ,      , Bus.vacc   , CoachBus              , 4.8           , 21.4/21.4/35.8/21.4 , 2.55  , 15     , 3.0    , 14000    , 70                  , 0                   ,             ,       ,          , 2.2        , 1.4   ,                   ,                   ,        ,                  , 6                         , 2-stage              , 30              , 1                   , 0             , 0                               , 1
+P38SD     , 1                , HeavyBus         , PB44           , 0           , 4         , 7.4       , 999       , 1            , high       , 100         ,      , Bus.vacc   , CoachBus              , 5.4           , 21.4/21.4/35.8/21.4 , 2.55  , 15     , 3.9    , 14000    , 39                  , 55                  ,             ,       ,          , 3          , 2     ,                   ,                   ,        ,                  , 6                         , 2-stage              , 30              , 1                   , 0             , 0                               , 1
 #
-P39SD     , 1                , HeavyBus         , PB45           , 1           , 4         , 7.4       , 999       , 0            , low        , 100         ,      , Bus.vacc   , CoachBus              , 5.2           , 20.0/28.2/32.4/19.4 , 2.55  , 20     , 2.7    , 14000    , 125                 , 0                   , 3           , 3     , 3        ,            ,       , 3                 , 3                 , 0      , 0                ,
-P39DD     , 1                , HeavyBus         , PB45           , 1           , 4         , 7.4       , 999       , 1            , low        , 100         ,      , Bus.vacc   , CoachBus              , 6.5           , 20.0/28.2/32.4/19.4 , 2.55  , 20     , 3.7    , 14000    , 94                  , 62                  , 3.7         , 3.7   , 3.7      ,            ,       ,                   ,                   ,        ,                  ,
-P40SD     , 1                , HeavyBus         , PB45           , 1           , 4         , 7.4       , 999       , 0            , high       , 100         ,      , Bus.vacc   , CoachBus              , 4.9           , 20.0/28.2/32.4/19.4 , 2.55  , 20     , 3.0    , 14000    , 70                  , 0                   ,             ,       ,          , 2.2        , 1.4   ,                   ,                   ,        ,                  ,
-P40SD     , 1                , HeavyBus         , PB45           , 1           , 4         , 7.4       , 999       , 1            , high       , 100         ,      , Bus.vacc   , CoachBus              , 5.5           , 20.0/28.2/32.4/19.4 , 2.55  , 20     , 3.9    , 14000    , 39                  , 55                  ,             ,       ,          , 3          , 2     ,                   ,                   ,        ,                  ,
+P39SD     , 1                , HeavyBus         , PB45           , 1           , 4         , 7.4       , 999       , 0            , low        , 100         ,      , Bus.vacc   , CoachBus              , 5.2           , 20.0/28.2/32.4/19.4 , 2.55  , 20     , 2.7    , 14000    , 125                 , 0                   , 3           , 3     , 3        ,            ,       , 3                 , 3                 , 0      , 0                , 6                         , 2-stage              , 15              , 0                   , 0             , 0                               , 0
+P39DD     , 1                , HeavyBus         , PB45           , 1           , 4         , 7.4       , 999       , 1            , low        , 100         ,      , Bus.vacc   , CoachBus              , 6.5           , 20.0/28.2/32.4/19.4 , 2.55  , 20     , 3.7    , 14000    , 94                  , 62                  , 3.7         , 3.7   , 3.7      ,            ,       ,                   ,                   ,        ,                  , 6                         , 2-stage              , 15              , 0                   , 0             , 0                               , 0
+P40SD     , 1                , HeavyBus         , PB45           , 1           , 4         , 7.4       , 999       , 0            , high       , 100         ,      , Bus.vacc   , CoachBus              , 4.9           , 20.0/28.2/32.4/19.4 , 2.55  , 20     , 3.0    , 14000    , 70                  , 0                   ,             ,       ,          , 2.2        , 1.4   ,                   ,                   ,        ,                  , 6                         , 2-stage              , 30              , 1                   , 0             , 0                               , 1
+P40SD     , 1                , HeavyBus         , PB45           , 1           , 4         , 7.4       , 999       , 1            , high       , 100         ,      , Bus.vacc   , CoachBus              , 5.5           , 20.0/28.2/32.4/19.4 , 2.55  , 20     , 3.9    , 14000    , 39                  , 55                  ,             ,       ,          , 3          , 2     ,                   ,                   ,        ,                  , 6                         , 2-stage              , 30              , 1                   , 0             , 0                               , 1
diff --git a/VectoCore/VectoCore/Resources/XSD/VectoOutputPrimaryVehicleInformation.xsd b/VectoCore/VectoCore/Resources/XSD/VectoOutputPrimaryVehicleInformation.xsd
index 08ca618e51..11b60d54f4 100644
--- a/VectoCore/VectoCore/Resources/XSD/VectoOutputPrimaryVehicleInformation.xsd
+++ b/VectoCore/VectoCore/Resources/XSD/VectoOutputPrimaryVehicleInformation.xsd
@@ -1,17 +1,17 @@
 <?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:tns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:PrimaryVehicleInformation" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" targetNamespace="urn:tugraz:ivt:VectoAPI:DeclarationOutput:PrimaryVehicleInformation" elementFormDefault="qualified" attributeFormDefault="unqualified">
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:PrimaryVehicleInformation" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:pbus="urn:tugraz:ivt:VectoAPI:DeclarationOutput:PrimaryVehicleInformation:HeavyBus:v0.1" xmlns:out="urn:tugraz:ivt:VectoAPI:DeclarationOutputDefinitions" targetNamespace="urn:tugraz:ivt:VectoAPI:DeclarationOutput:PrimaryVehicleInformation" elementFormDefault="qualified" attributeFormDefault="unqualified">
 	<xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" schemaLocation="VectoDeclarationDefinitions.1.0.xsd"/>
-<xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationOutput:PrimaryVehicleInformation:HeavyBus:v0.1" schemaLocation="VectoOutputPrimaryBus.xsd"/>
+	<xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationOutput:PrimaryVehicleInformation:HeavyBus:v0.1" schemaLocation="VectoOutputPrimaryBus.xsd"/>
+	<xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationOutputDefinitions" schemaLocation="VectoOutputDefinitions.xsd"/>
 	<xs:element name="VectoOutputPrimaryVehicle" type="tns:PrimaryVehicleHeavyBusType">
 		<xs:annotation>
 			<xs:documentation>Comment describing your root element</xs:documentation>
 		</xs:annotation>
 	</xs:element>
-	<xs:complexType name="AbstractPrimaryVehicleDataPIFType" abstract="true"/>
 	<xs:complexType name="PrimaryVehicleHeavyBusType">
 		<xs:sequence>
-			<xs:element name="Data" type="tns:AbstractPrimaryVehicleDataPIFType"/>
+			<xs:element name="Data" type="out:AbstractPrimaryVehicleDataPIFType"/>
 			<xs:element name="Signature" type="v1.0:SignatureType"/>
 		</xs:sequence>
 	</xs:complexType>
diff --git a/VectoCore/VectoCore/VectoCore.csproj b/VectoCore/VectoCore/VectoCore.csproj
index ebe22db111..53dd9058c4 100644
--- a/VectoCore/VectoCore/VectoCore.csproj
+++ b/VectoCore/VectoCore/VectoCore.csproj
@@ -270,6 +270,7 @@
     <Compile Include="InputData\FileIO\XML\Declaration\IXMLDeclarationInputDataReader.cs" />
     <Compile Include="InputData\FileIO\XML\IXMLInputDataReader.cs" />
     <Compile Include="InputData\FileIO\XML\XMLInputDataNinjectModule.cs" />
+    <Compile Include="Models\BusAuxiliaries\DownstreamModules\Impl\Electrics\SimpleAlternator.cs" />
     <Compile Include="Models\Declaration\ADASCombination.cs" />
     <Compile Include="InputData\Reader\ComponentData\AlternatorReader.cs" />
     <Compile Include="InputData\Reader\ComponentData\CompressorMapReader.cs" />
@@ -292,11 +293,9 @@
     <Compile Include="Models\BusAuxiliaries\DownstreamModules\Impl\Electrics\ElectricalConsumer.cs" />
     <Compile Include="Models\BusAuxiliaries\DownstreamModules\Impl\Electrics\ElectricalConsumerList.cs" />
     <Compile Include="Models\BusAuxiliaries\DownstreamModules\Impl\Electrics\ElectricsUserInputsConfig.cs" />
-    <Compile Include="Models\BusAuxiliaries\Interfaces\DownstreamModules\IM0_1_AverageElectricLoadDemand.cs" />
     <Compile Include="Models\BusAuxiliaries\DownstreamModules\Impl\Electrics\M00Impl.cs" />
     <Compile Include="Models\BusAuxiliaries\DownstreamModules\Impl\Electrics\M02Impl.cs" />
     <Compile Include="Models\BusAuxiliaries\DownstreamModules\Impl\Electrics\M05Impl.cs" />
-    <Compile Include="Models\BusAuxiliaries\DownstreamModules\Impl\Electrics\M0_1Impl.cs" />
     <Compile Include="Models\BusAuxiliaries\DownstreamModules\Impl\Electrics\M0_5Impl.cs" />
     <Compile Include="Models\BusAuxiliaries\DownstreamModules\Impl\Electrics\ResultCard.cs" />
     <Compile Include="Models\BusAuxiliaries\DownstreamModules\Impl\HVAC\EnvironmentalConditionMapEntry.cs" />
@@ -351,6 +350,7 @@
     <Compile Include="Models\BusAuxiliaries\Interfaces\IM12.cs" />
     <Compile Include="Models\BusAuxiliaries\Interfaces\Signals.cs" />
     <Compile Include="Models\BusAuxiliaries\Util\FilePathUtils.cs" />
+    <Compile Include="Models\Declaration\BusAlternatorTechnologies.cs" />
     <Compile Include="Models\Declaration\BusSegments.cs" />
     <Compile Include="Models\Declaration\SteeringPumpBus.cs" />
     <Compile Include="Models\SimulationComponent\Data\Engine\WHRPowerMap.cs" />
@@ -843,6 +843,7 @@
     <EmbeddedResource Include="Resources\Declaration\Buses\DefaultClimatic.aenv">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </EmbeddedResource>
+    <EmbeddedResource Include="Resources\Declaration\Buses\AlternatorTechnologies.csv" />
     <None Include="Resources\Declaration\Buses\DefaultBusAuxCfg.aaux">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
diff --git a/VectoCore/VectoCoreTest/Utils/MockDeclarationVehicleInputData.cs b/VectoCore/VectoCoreTest/Utils/MockDeclarationVehicleInputData.cs
index 1932a1e8da..e92696fac9 100644
--- a/VectoCore/VectoCoreTest/Utils/MockDeclarationVehicleInputData.cs
+++ b/VectoCore/VectoCoreTest/Utils/MockDeclarationVehicleInputData.cs
@@ -54,6 +54,7 @@ namespace TUGraz.VectoCore.Tests.Utils {
 		public Meter Height { get; set; }
 		public Meter Length { get; set; }
 		public Meter Width { get; set; }
+		public Meter EntranceHeight { get; }
 		public IVehicleComponentsDeclaration Components { get { return this; } }
 		public XmlNode XMLSource { get; }
 
@@ -104,6 +105,7 @@ namespace TUGraz.VectoCore.Tests.Utils {
 		public Meter Height { get; }
 		public Meter Length { get; set; }
 		public Meter Width { get; set; }
+		public Meter EntranceHeight { get; }
 		public Watt MaxNetPower2 { get; }
 		public string RegisteredClass { get; set; }
 		public int NuberOfPassengersUpperDeck { get; set; }
-- 
GitLab