From 4ea213a513c3c42bf44f2ab6c5bb466294448f92 Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Mon, 20 Jan 2020 17:37:48 +0100
Subject: [PATCH] refactor electric consumers: make cycle-dependent current
 demand

---
 VECTO/BusAuxiliaries/UI/frmAuxiliaryConfig.vb |  12 +-
 .../Mocks/ElectricalConsumerMock.vb           |  54 ++--
 .../AuxiliaryEnvironmentComparisonTests.vb    | 278 +++++++++---------
 .../UnitTests/ElectricalConsumerListTests.vb  |  58 ++--
 .../UnitTests/ElectricalConsumerTests.vb      | 101 +++----
 ..._NonSmart_AlternatorsSetEfficiencyTests.vb |  15 +-
 .../VectoAuxiliariesTests/UnitTests/Utils.vb  |  88 +++---
 .../BusAuxiliaries/IAuxiliaryConfig.cs        |   1 +
 .../BusAuxiliaries/IElectricalConsumer.cs     |  30 --
 .../BusAuxiliaries/IElectricalConsumerList.cs |  61 ----
 .../IElectricsUserInputsConfig.cs             |  10 +-
 .../FileIO/JSON/BusAuxiliaryInputData.cs      |  20 +-
 .../ComponentData/ElectricConsumerReader.cs   |  47 +--
 .../DeclarationDataAdapterPrimaryBus.cs       |  77 ++++-
 .../DeclarationModeBusVectoRunDataFactory.cs  |   2 +-
 .../Models/BusAuxiliaries/AuxiliaryConfig.cs  |  30 +-
 .../Impl/Electrics/ElectricalConsumer.cs      | 177 ++++-------
 .../Impl/Electrics/ElectricalConsumerList.cs  |   8 +-
 .../Electrics/ElectricsUserInputsConfig.cs    |   7 +-
 .../Impl/Electrics/M00Impl.cs                 |   2 +-
 .../Impl/Electrics/M02Impl.cs                 |   2 +-
 .../Impl/Electrics/M0_1Impl.cs                |  38 +--
 .../Impl/Electrics/M0_5Impl.cs                |   2 +-
 .../IM0_1_AverageElectricLoadDemand.cs        |   4 +-
 .../Models/Declaration/DeclarationData.cs     |  20 +-
 .../OutputData/FileIO/BusAuxWriter.cs         |  21 +-
 .../Declaration/Buses/ElectricConsumers.csv   |  37 +--
 .../Declaration/HeavyBusSegmentationTable.csv |  44 +--
 28 files changed, 540 insertions(+), 706 deletions(-)
 delete mode 100644 VectoCommon/VectoCommon/BusAuxiliaries/IElectricalConsumer.cs
 delete mode 100644 VectoCommon/VectoCommon/BusAuxiliaries/IElectricalConsumerList.cs

diff --git a/VECTO/BusAuxiliaries/UI/frmAuxiliaryConfig.vb b/VECTO/BusAuxiliaries/UI/frmAuxiliaryConfig.vb
index 583555ce6d..8f208e16a6 100644
--- a/VECTO/BusAuxiliaries/UI/frmAuxiliaryConfig.vb
+++ b/VECTO/BusAuxiliaries/UI/frmAuxiliaryConfig.vb
@@ -45,7 +45,7 @@ Public Class frmAuxiliaryConfig
     Private auxFile As String
     Private cmFilesList As String()
     Private SaveClicked As Boolean
-    Private electricalConsumerBinding As New BindingList(Of IElectricalConsumer)
+    'Private electricalConsumerBinding As New BindingList(Of IElectricalConsumer)
 
 
 #End Region
@@ -1366,9 +1366,9 @@ Public Class frmAuxiliaryConfig
 
 
         'Electrical ConsumablesGrid
-        electricalConsumerBinding =
-            New BindingList(Of IElectricalConsumer)(CType (auxConfig.ElectricalUserInputsConfig.ElectricalConsumers.Items, List(Of IElectricalConsumer)))
-        gvElectricalConsumables.DataSource = electricalConsumerBinding
+        'electricalConsumerBinding =
+        '    New BindingList(Of IElectricalConsumer)(CType (auxConfig.ElectricalUserInputsConfig.ElectricalConsumers.Items, List(Of IElectricalConsumer)))
+        'gvElectricalConsumables.DataSource = electricalConsumerBinding
         AddHandler gvElectricalConsumables.CellFormatting, New DataGridViewCellFormattingEventHandler(AddressOf SIToText)
 
 
@@ -1476,7 +1476,7 @@ Public Class frmAuxiliaryConfig
             gvResultsCardTraction.BackgroundColor = Color.Gray
             gvResultsCardOverrun.BackgroundColor = Color.Gray
 
-            electricalConsumerBinding.Single(Function(c) c.Category = "Veh Electronics &Engine").NumberInActualVehicle = 0
+            'electricalConsumerBinding.Single(Function(c) c.Category = "Veh Electronics &Engine").NumberInActualVehicle = 0
         Else
 
             gvResultsCardIdle.Enabled = False
@@ -1488,7 +1488,7 @@ Public Class frmAuxiliaryConfig
             gvResultsCardTraction.BackgroundColor = Color.White
             gvResultsCardOverrun.BackgroundColor = Color.White
 
-            electricalConsumerBinding.Single(Function(c) c.Category = "Veh Electronics &Engine").NumberInActualVehicle = 1
+            'electricalConsumerBinding.Single(Function(c) c.Category = "Veh Electronics &Engine").NumberInActualVehicle = 1
         End If
     End Sub
 
diff --git a/VECTOAux/VectoAuxiliariesTests/Mocks/ElectricalConsumerMock.vb b/VECTOAux/VectoAuxiliariesTests/Mocks/ElectricalConsumerMock.vb
index af08deb266..41f6053118 100644
--- a/VECTOAux/VectoAuxiliariesTests/Mocks/ElectricalConsumerMock.vb
+++ b/VECTOAux/VectoAuxiliariesTests/Mocks/ElectricalConsumerMock.vb
@@ -4,46 +4,46 @@ Imports TUGraz.VectoCommon.BusAuxiliaries
 Imports TUGraz.VectoCommon.Utils
 
 Namespace Mocks
-	Public Class ElectricalConsumerMock
-		Implements IElectricalConsumer
+	'Public Class ElectricalConsumerMock
+	'	Implements IElectricalConsumer
 
-		'Public Property AvgConsumptionAmps As Ampere Implements IElectricalConsumer.AvgConsumptionAmps
+	'	'Public Property AvgConsumptionAmps As Ampere Implements IElectricalConsumer.AvgConsumptionAmps
 
-		Public Property BaseVehicle As Boolean Implements IElectricalConsumer.BaseVehicle
+	'	Public Property BaseVehicle As Boolean Implements IElectricalConsumer.BaseVehicle
 
-		Public Property Category As String Implements IElectricalConsumer.Category
+	'	Public Property Category As String Implements IElectricalConsumer.Category
 
-		Public Property ConsumerName As String Implements IElectricalConsumer.ConsumerName
+	'	Public Property ConsumerName As String Implements IElectricalConsumer.ConsumerName
 
-		Public Property NominalConsumptionAmps As Ampere Implements IElectricalConsumer.NominalConsumptionAmps
+	'	Public Property NominalConsumptionAmps As Ampere Implements IElectricalConsumer.NominalConsumptionAmps
 
-		Public Property NumberInActualVehicle As Integer Implements IElectricalConsumer.NumberInActualVehicle
+	'	Public Property NumberInActualVehicle As Integer Implements IElectricalConsumer.NumberInActualVehicle
 
-		Public Property PhaseIdle_TractionOn As Double Implements IElectricalConsumer.PhaseIdle_TractionOn
+	'	Public Property PhaseIdle_TractionOn As Double Implements IElectricalConsumer.PhaseIdle_TractionOn
 
-		Public Property PowerNetVoltage As Volt Implements IElectricalConsumer.PowerNetVoltage
+	'	Public Property PowerNetVoltage As Volt Implements IElectricalConsumer.PowerNetVoltage
 
-		Public ReadOnly Property TotalAvgConumptionAmps As Ampere _
-			Implements IElectricalConsumer.TotalAvgConumptionAmps
-		get
-			Return 9.SI(Of Ampere)()
-		End Get
-		End Property
+	'	Public ReadOnly Property TotalAvgConumptionAmps As Ampere _
+	'		Implements IElectricalConsumer.TotalAvgConumptionAmps
+	'	get
+	'		Return 9.SI(Of Ampere)()
+	'	End Get
+	'	End Property
 			
-		'Public Function TotalAvgConsumptionInWatts(Optional PhaseIdle_TractionOnBasedOnCycle As Double = 0.0) As Watt _
-		'	Implements IElectricalConsumer.TotalAvgConsumptionInWatts
+	'	'Public Function TotalAvgConsumptionInWatts(Optional PhaseIdle_TractionOnBasedOnCycle As Double = 0.0) As Watt _
+	'	'	Implements IElectricalConsumer.TotalAvgConsumptionInWatts
 
-		'	Return (9 * 26.3).SI(Of Watt)()
-		'End Function
+	'	'	Return (9 * 26.3).SI(Of Watt)()
+	'	'End Function
 
 
-		Public Property Info As String Implements IElectricalConsumer.Info
+	'	Public Property Info As String Implements IElectricalConsumer.Info
 
-		Public Event PropertyChanged As PropertyChangedEventHandler _
-			Implements INotifyPropertyChanged.PropertyChanged
+	'	Public Event PropertyChanged As PropertyChangedEventHandler _
+	'		Implements INotifyPropertyChanged.PropertyChanged
 
-		Private Sub NotifyPropertyChanged(p As String)
-			RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(p))
-		End Sub
-	End Class
+	'	Private Sub NotifyPropertyChanged(p As String)
+	'		RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(p))
+	'	End Sub
+	'End Class
 End Namespace
diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/AuxiliaryEnvironmentComparisonTests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/AuxiliaryEnvironmentComparisonTests.vb
index 7a873ac230..ad7e4888c5 100644
--- a/VECTOAux/VectoAuxiliariesTests/UnitTests/AuxiliaryEnvironmentComparisonTests.vb
+++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/AuxiliaryEnvironmentComparisonTests.vb
@@ -17,16 +17,16 @@ Namespace UnitTests
 	Public Class AuxiliaryComparisonTests
 
 
-        <OneTimeSetUp>
-        Sub RunBeforeAnyTests()
-            Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory)
-        end Sub
+		<OneTimeSetUp>
+		Sub RunBeforeAnyTests()
+			Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory)
+		end Sub
 
-        shared Function GetDefaultAuxiliaryConfig() As IAuxiliaryConfig
-            Dim retVal As IAuxiliaryConfig = Utils.GetAuxTestConfig()
+		shared Function GetDefaultAuxiliaryConfig() As IAuxiliaryConfig
+			Dim retVal As IAuxiliaryConfig = Utils.GetAuxTestConfig()
 
-            Return retVal
-        End Function
+			Return retVal
+		End Function
 
 		<Test()>
 		Public Sub BasicEqualCompareTest()
@@ -42,9 +42,9 @@ Namespace UnitTests
 			Assert.AreEqual(True, compareResult)
 		End Sub
 
-       
+	   
 
-        <Test()>
+		<Test()>
 		Public Sub BasicUnequalTest()
 
 			'Arrange
@@ -104,7 +104,7 @@ Namespace UnitTests
 			Dim auxFresh = GetDefaultAuxiliaryConfig()
 			Dim auxNow = GetDefaultAuxiliaryConfig()
 			Dim compareResult As Boolean
-		    CType (auxNow.ElectricalUserInputsConfig, ElectricsUserInputsConfig).DoorActuationTimeSecond += 1.SI(Of Second)
+			CType (auxNow.ElectricalUserInputsConfig, ElectricsUserInputsConfig).DoorActuationTimeSecond += 1.SI(Of Second)
 
 			'Act
 			compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
@@ -112,21 +112,21 @@ Namespace UnitTests
 			Assert.AreEqual(False, compareResult)
 		End Sub
 
-		<Test()>
-		<Category("ElectricalUserConfig")>
-		Public Sub ElectricalUserConfig_Consumers_Unequal_Count_UnequalTest()
+		'<Test()>
+		'<Category("ElectricalUserConfig")>
+		'Public Sub ElectricalUserConfig_Consumers_Unequal_Count_UnequalTest()
 
-			'Arrange
-			Dim auxFresh = GetDefaultAuxiliaryConfig()
-			Dim auxNow = GetDefaultAuxiliaryConfig()
-			Dim compareResult As Boolean
-			CType(auxNow.ElectricalUserInputsConfig.ElectricalConsumers.Items, List(of IElectricalConsumer)).RemoveAt(0)
+		'	'Arrange
+		'	Dim auxFresh = GetDefaultAuxiliaryConfig()
+		'	Dim auxNow = GetDefaultAuxiliaryConfig()
+		'	Dim compareResult As Boolean
+		'	CType(auxNow.ElectricalUserInputsConfig.ElectricalConsumers.Items, List(of IElectricalConsumer)).RemoveAt(0)
 
-			'Act
-			compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
+		'	'Act
+		'	compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
 
-			Assert.AreEqual(False, compareResult)
-		End Sub
+		'	Assert.AreEqual(False, compareResult)
+		'End Sub
 
 		'<Test()>
 		'<Category("ElectricalUserConfig")>
@@ -144,106 +144,106 @@ Namespace UnitTests
 		'	Assert.AreEqual(False, compareResult)
 		'End Sub
 
-		<Test()>
-		<Category("ElectricalUserConfig")>
-		Public Sub ElectricalUserConfig_Unequal_Consumers_BaseVehicle_UnequalTest()
+		'<Test()>
+		'<Category("ElectricalUserConfig")>
+		'Public Sub ElectricalUserConfig_Unequal_Consumers_BaseVehicle_UnequalTest()
 
-			'Arrange
-			Dim auxFresh = GetDefaultAuxiliaryConfig()
-			Dim auxNow = GetDefaultAuxiliaryConfig()
-			Dim compareResult As Boolean
-		    CType(CType(auxNow.ElectricalUserInputsConfig.ElectricalConsumers.Items, List(of IElectricalConsumer))(0), ElectricalConsumer).BaseVehicle =
-				Not auxNow.ElectricalUserInputsConfig.ElectricalConsumers.Items(0).BaseVehicle
+		'	'Arrange
+		'	Dim auxFresh = GetDefaultAuxiliaryConfig()
+		'	Dim auxNow = GetDefaultAuxiliaryConfig()
+		'	Dim compareResult As Boolean
+		'	CType(CType(auxNow.ElectricalUserInputsConfig.ElectricalConsumers.Items, List(of IElectricalConsumer))(0), ElectricalConsumer).BaseVehicle =
+		'		Not auxNow.ElectricalUserInputsConfig.ElectricalConsumers.Items(0).BaseVehicle
 
-			'Act
-			compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
+		'	'Act
+		'	compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
 
-			Assert.AreEqual(False, compareResult)
-		End Sub
+		'	Assert.AreEqual(False, compareResult)
+		'End Sub
 
-		<Test()>
-		<Category("ElectricalUserConfig")>
-		Public Sub ElectricalUserConfig_Unequal_Consumers_Category_UnequalTest()
+		'<Test()>
+		'<Category("ElectricalUserConfig")>
+		'Public Sub ElectricalUserConfig_Unequal_Consumers_Category_UnequalTest()
 
-			'Arrange
-			Dim auxFresh = GetDefaultAuxiliaryConfig()
-			Dim auxNow = GetDefaultAuxiliaryConfig()
-			Dim compareResult As Boolean
-			Dim cat As String = auxNow.ElectricalUserInputsConfig.ElectricalConsumers.Items(0).Category
-		    CType(CType(auxNow.ElectricalUserInputsConfig.ElectricalConsumers.Items, List(of IElectricalConsumer))(0), ElectricalConsumer).Category = cat & "x"
+		'	'Arrange
+		'	Dim auxFresh = GetDefaultAuxiliaryConfig()
+		'	Dim auxNow = GetDefaultAuxiliaryConfig()
+		'	Dim compareResult As Boolean
+		'	Dim cat As String = auxNow.ElectricalUserInputsConfig.ElectricalConsumers.Items(0).Category
+		'	CType(CType(auxNow.ElectricalUserInputsConfig.ElectricalConsumers.Items, List(of IElectricalConsumer))(0), ElectricalConsumer).Category = cat & "x"
 
-			'Act
-			compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
+		'	'Act
+		'	compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
 
-			Assert.AreEqual(False, compareResult)
-		End Sub
+		'	Assert.AreEqual(False, compareResult)
+		'End Sub
 
-		<Test()>
-		<Category("ElectricalUserConfig")>
-		Public Sub ElectricalUserConfig_Unequal_Consumers_ConsumerName_UnequalTest()
+		'<Test()>
+		'<Category("ElectricalUserConfig")>
+		'Public Sub ElectricalUserConfig_Unequal_Consumers_ConsumerName_UnequalTest()
 
-			'Arrange
-			Dim auxFresh = GetDefaultAuxiliaryConfig()
-			Dim auxNow = GetDefaultAuxiliaryConfig()
-			Dim compareResult As Boolean
-			Dim cname As String = auxNow.ElectricalUserInputsConfig.ElectricalConsumers.Items(0).ConsumerName
-		    CType(CType(auxNow.ElectricalUserInputsConfig.ElectricalConsumers.Items, List(of IElectricalConsumer))(0), ElectricalConsumer).ConsumerName = cname & "x"
+		'	'Arrange
+		'	Dim auxFresh = GetDefaultAuxiliaryConfig()
+		'	Dim auxNow = GetDefaultAuxiliaryConfig()
+		'	Dim compareResult As Boolean
+		'	Dim cname As String = auxNow.ElectricalUserInputsConfig.ElectricalConsumers.Items(0).ConsumerName
+		'	CType(CType(auxNow.ElectricalUserInputsConfig.ElectricalConsumers.Items, List(of IElectricalConsumer))(0), ElectricalConsumer).ConsumerName = cname & "x"
 
-			'Act
-			compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
+		'	'Act
+		'	compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
 
-			Assert.AreEqual(False, compareResult)
-		End Sub
+		'	Assert.AreEqual(False, compareResult)
+		'End Sub
 
-		<Test()>
-		<Category("ElectricalUserConfig")>
-		Public Sub ElectricalUserConfig_Unequal_Consumers_NominalConsumptionAmps_UnequalTest()
+		'<Test()>
+		'<Category("ElectricalUserConfig")>
+		'Public Sub ElectricalUserConfig_Unequal_Consumers_NominalConsumptionAmps_UnequalTest()
 
-			'Arrange
-			Dim auxFresh = GetDefaultAuxiliaryConfig()
-			Dim auxNow = GetDefaultAuxiliaryConfig()
-			Dim compareResult As Boolean
-		    CType(CType(auxNow.ElectricalUserInputsConfig.ElectricalConsumers.Items, List(of IElectricalConsumer))(0), ElectricalConsumer).NominalConsumptionAmps += 1.SI(of Ampere)
+		'	'Arrange
+		'	Dim auxFresh = GetDefaultAuxiliaryConfig()
+		'	Dim auxNow = GetDefaultAuxiliaryConfig()
+		'	Dim compareResult As Boolean
+		'	CType(CType(auxNow.ElectricalUserInputsConfig.ElectricalConsumers.Items, List(of IElectricalConsumer))(0), ElectricalConsumer).NominalConsumptionAmps += 1.SI(of Ampere)
 
-			'Act
-			compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
+		'	'Act
+		'	compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
 
-			Assert.AreEqual(False, compareResult)
-		End Sub
+		'	Assert.AreEqual(False, compareResult)
+		'End Sub
 
-		<Test()>
-		<Category("ElectricalUserConfig")>
-		Public Sub ElectricalUserConfig_Unequal_Consumers_NumberInActualVehicle_UnequalTest()
+		'<Test()>
+		'<Category("ElectricalUserConfig")>
+		'Public Sub ElectricalUserConfig_Unequal_Consumers_NumberInActualVehicle_UnequalTest()
 
-			'Arrange
-			Dim auxFresh = GetDefaultAuxiliaryConfig()
-			Dim auxNow = GetDefaultAuxiliaryConfig()
-			Dim compareResult As Boolean
-			Dim cname As Single = auxNow.ElectricalUserInputsConfig.ElectricalConsumers.Items(0).NumberInActualVehicle
-			auxNow.ElectricalUserInputsConfig.ElectricalConsumers.Items(0).NumberInActualVehicle += 1
+		'	'Arrange
+		'	Dim auxFresh = GetDefaultAuxiliaryConfig()
+		'	Dim auxNow = GetDefaultAuxiliaryConfig()
+		'	Dim compareResult As Boolean
+		'	Dim cname As Single = auxNow.ElectricalUserInputsConfig.ElectricalConsumers.Items(0).NumberInActualVehicle
+		'	auxNow.ElectricalUserInputsConfig.ElectricalConsumers.Items(0).NumberInActualVehicle += 1
 
-			'Act
-			compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
+		'	'Act
+		'	compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
 
-			Assert.AreEqual(False, compareResult)
-		End Sub
+		'	Assert.AreEqual(False, compareResult)
+		'End Sub
 
-		<Test()>
-		<Category("ElectricalUserConfig")>
-		Public Sub ElectricalUserConfig_Unequal_Consumers_PhaseIdle_TractionOn_UnequalTest()
+		'<Test()>
+		'<Category("ElectricalUserConfig")>
+		'Public Sub ElectricalUserConfig_Unequal_Consumers_PhaseIdle_TractionOn_UnequalTest()
 
-			'Arrange
-			Dim auxFresh = GetDefaultAuxiliaryConfig()
-			Dim auxNow = GetDefaultAuxiliaryConfig()
-			Dim compareResult As Boolean
-			Dim cname As Double = auxNow.ElectricalUserInputsConfig.ElectricalConsumers.Items(0).PhaseIdle_TractionOn
-		    CType(CType(auxNow.ElectricalUserInputsConfig.ElectricalConsumers.Items, List(of IElectricalConsumer))(0), ElectricalConsumer).PhaseIdle_TractionOn += 1
+		'	'Arrange
+		'	Dim auxFresh = GetDefaultAuxiliaryConfig()
+		'	Dim auxNow = GetDefaultAuxiliaryConfig()
+		'	Dim compareResult As Boolean
+		'	Dim cname As Double = auxNow.ElectricalUserInputsConfig.ElectricalConsumers.Items(0).PhaseIdle_TractionOn
+		'	CType(CType(auxNow.ElectricalUserInputsConfig.ElectricalConsumers.Items, List(of IElectricalConsumer))(0), ElectricalConsumer).PhaseIdle_TractionOn += 1
 
-			'Act
-			compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
+		'	'Act
+		'	compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
 
-			Assert.AreEqual(False, compareResult)
-		End Sub
+		'	Assert.AreEqual(False, compareResult)
+		'End Sub
 
 		<Test()>
 		<Category("ElectricalUserConfig")>
@@ -269,7 +269,7 @@ Namespace UnitTests
 			Dim auxFresh = GetDefaultAuxiliaryConfig()
 			Dim auxNow = GetDefaultAuxiliaryConfig()
 			Dim compareResult As Boolean
-		    CType(CType (auxNow.ElectricalUserInputsConfig.ResultCardTraction, ResultCard).Results, List(of SmartResult)).Add(New SmartResult(50.SI(of Ampere), 49.SI(of Ampere)))
+			CType(CType (auxNow.ElectricalUserInputsConfig.ResultCardTraction, ResultCard).Results, List(of SmartResult)).Add(New SmartResult(50.SI(of Ampere), 49.SI(of Ampere)))
 
 			'Act
 			compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
@@ -285,7 +285,7 @@ Namespace UnitTests
 			Dim auxFresh = GetDefaultAuxiliaryConfig()
 			Dim auxNow = GetDefaultAuxiliaryConfig()
 			Dim compareResult As Boolean
-		    CType(CType (auxNow.ElectricalUserInputsConfig.ResultCardOverrun, ResultCard).Results, List(of SmartResult)).Add(New SmartResult(50.SI(of Ampere), 49.SI(of Ampere)))
+			CType(CType (auxNow.ElectricalUserInputsConfig.ResultCardOverrun, ResultCard).Results, List(of SmartResult)).Add(New SmartResult(50.SI(of Ampere), 49.SI(of Ampere)))
 
 			'Act
 			compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
@@ -301,8 +301,8 @@ Namespace UnitTests
 			Dim auxFresh = GetDefaultAuxiliaryConfig()
 			Dim auxNow = GetDefaultAuxiliaryConfig()
 			Dim compareResult As Boolean
-		    CType(CType (auxNow.ElectricalUserInputsConfig.ResultCardIdle, ResultCard).Results, List(of SmartResult)).Add(New SmartResult(50.SI(of Ampere), 49.SI(of Ampere)))
-		    CType(CType (auxNow.ElectricalUserInputsConfig.ResultCardIdle, ResultCard).Results, List(of SmartResult)).Add(New SmartResult(49.SI(of Ampere), 49.SI(of Ampere)))
+			CType(CType (auxNow.ElectricalUserInputsConfig.ResultCardIdle, ResultCard).Results, List(of SmartResult)).Add(New SmartResult(50.SI(of Ampere), 49.SI(of Ampere)))
+			CType(CType (auxNow.ElectricalUserInputsConfig.ResultCardIdle, ResultCard).Results, List(of SmartResult)).Add(New SmartResult(49.SI(of Ampere), 49.SI(of Ampere)))
 
 			'Act
 			compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
@@ -318,8 +318,8 @@ Namespace UnitTests
 			Dim auxFresh = GetDefaultAuxiliaryConfig()
 			Dim auxNow = GetDefaultAuxiliaryConfig()
 			Dim compareResult As Boolean
-		    CType(CType (auxNow.ElectricalUserInputsConfig.ResultCardIdle, ResultCard).Results, List(of SmartResult)).Add(New SmartResult(49.SI(of Ampere), 49.SI(of Ampere)))
-		    CType(CType (auxNow.ElectricalUserInputsConfig.ResultCardIdle, ResultCard).Results, List(of SmartResult)).Add(New SmartResult(50.SI(of Ampere), 49.SI(of Ampere)))
+			CType(CType (auxNow.ElectricalUserInputsConfig.ResultCardIdle, ResultCard).Results, List(of SmartResult)).Add(New SmartResult(49.SI(of Ampere), 49.SI(of Ampere)))
+			CType(CType (auxNow.ElectricalUserInputsConfig.ResultCardIdle, ResultCard).Results, List(of SmartResult)).Add(New SmartResult(50.SI(of Ampere), 49.SI(of Ampere)))
 
 			'Act
 			compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
@@ -335,8 +335,8 @@ Namespace UnitTests
 			Dim auxFresh = GetDefaultAuxiliaryConfig()
 			Dim auxNow = GetDefaultAuxiliaryConfig()
 			Dim compareResult As Boolean
-		    CType(CType (auxNow.ElectricalUserInputsConfig.ResultCardIdle, ResultCard).Results, List(of SmartResult)).Add(New SmartResult(49.SI(of Ampere), 51.SI(of Ampere)))
-		    CType(CType (auxNow.ElectricalUserInputsConfig.ResultCardIdle, ResultCard).Results, List(of SmartResult)).Add(New SmartResult(49.SI(of Ampere), 50.SI(of Ampere)))
+			CType(CType (auxNow.ElectricalUserInputsConfig.ResultCardIdle, ResultCard).Results, List(of SmartResult)).Add(New SmartResult(49.SI(of Ampere), 51.SI(of Ampere)))
+			CType(CType (auxNow.ElectricalUserInputsConfig.ResultCardIdle, ResultCard).Results, List(of SmartResult)).Add(New SmartResult(49.SI(of Ampere), 50.SI(of Ampere)))
 
 			'Act
 			compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
@@ -352,8 +352,8 @@ Namespace UnitTests
 			Dim auxFresh = GetDefaultAuxiliaryConfig()
 			Dim auxNow = GetDefaultAuxiliaryConfig()
 			Dim compareResult As Boolean
-		    CType(CType (auxNow.ElectricalUserInputsConfig.ResultCardTraction, ResultCard).Results, List(of SmartResult)).Add(New SmartResult(50.SI(of Ampere), 49.SI(of Ampere)))
-		    CType(CType (auxNow.ElectricalUserInputsConfig.ResultCardTraction, ResultCard).Results, List(of SmartResult)).Add(New SmartResult(51.SI(of Ampere), 49.SI(of Ampere)))
+			CType(CType (auxNow.ElectricalUserInputsConfig.ResultCardTraction, ResultCard).Results, List(of SmartResult)).Add(New SmartResult(50.SI(of Ampere), 49.SI(of Ampere)))
+			CType(CType (auxNow.ElectricalUserInputsConfig.ResultCardTraction, ResultCard).Results, List(of SmartResult)).Add(New SmartResult(51.SI(of Ampere), 49.SI(of Ampere)))
 
 			'Act
 			compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
@@ -369,8 +369,8 @@ Namespace UnitTests
 			Dim auxFresh = GetDefaultAuxiliaryConfig()
 			Dim auxNow = GetDefaultAuxiliaryConfig()
 			Dim compareResult As Boolean
-		    CType(CType (auxNow.ElectricalUserInputsConfig.ResultCardTraction, ResultCard).Results, List(of SmartResult)).Add(New SmartResult(49.SI(of Ampere), 49.SI(of Ampere)))
-		    CType(CType (auxNow.ElectricalUserInputsConfig.ResultCardTraction, ResultCard).Results, List(of SmartResult)).Add(New SmartResult(50.SI(of Ampere), 49.SI(of Ampere)))
+			CType(CType (auxNow.ElectricalUserInputsConfig.ResultCardTraction, ResultCard).Results, List(of SmartResult)).Add(New SmartResult(49.SI(of Ampere), 49.SI(of Ampere)))
+			CType(CType (auxNow.ElectricalUserInputsConfig.ResultCardTraction, ResultCard).Results, List(of SmartResult)).Add(New SmartResult(50.SI(of Ampere), 49.SI(of Ampere)))
 
 			'Act
 			compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
@@ -386,8 +386,8 @@ Namespace UnitTests
 			Dim auxFresh = GetDefaultAuxiliaryConfig()
 			Dim auxNow = GetDefaultAuxiliaryConfig()
 			Dim compareResult As Boolean
-		    CType(CType (auxNow.ElectricalUserInputsConfig.ResultCardTraction, ResultCard).Results, List(of SmartResult)).Add(New SmartResult(49.SI(of Ampere), 49.SI(of Ampere)))
-		    CType(CType (auxNow.ElectricalUserInputsConfig.ResultCardTraction, ResultCard).Results, List(of SmartResult)).Add(New SmartResult(49.SI(of Ampere), 50.SI(of Ampere)))
+			CType(CType (auxNow.ElectricalUserInputsConfig.ResultCardTraction, ResultCard).Results, List(of SmartResult)).Add(New SmartResult(49.SI(of Ampere), 49.SI(of Ampere)))
+			CType(CType (auxNow.ElectricalUserInputsConfig.ResultCardTraction, ResultCard).Results, List(of SmartResult)).Add(New SmartResult(49.SI(of Ampere), 50.SI(of Ampere)))
 
 			'Act
 			compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
@@ -403,8 +403,8 @@ Namespace UnitTests
 			Dim auxFresh = GetDefaultAuxiliaryConfig()
 			Dim auxNow = GetDefaultAuxiliaryConfig()
 			Dim compareResult As Boolean
-		    CType(CType (auxNow.ElectricalUserInputsConfig.ResultCardOverrun, ResultCard).Results, List(of SmartResult)).Add(New SmartResult(50.SI(of Ampere), 49.SI(of Ampere)))
-		    CType(CType (auxNow.ElectricalUserInputsConfig.ResultCardOverrun, ResultCard).Results, List(of SmartResult)).Add(New SmartResult(50.SI(of Ampere), 48.SI(of Ampere)))
+			CType(CType (auxNow.ElectricalUserInputsConfig.ResultCardOverrun, ResultCard).Results, List(of SmartResult)).Add(New SmartResult(50.SI(of Ampere), 49.SI(of Ampere)))
+			CType(CType (auxNow.ElectricalUserInputsConfig.ResultCardOverrun, ResultCard).Results, List(of SmartResult)).Add(New SmartResult(50.SI(of Ampere), 48.SI(of Ampere)))
 
 			'Act
 			compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
@@ -420,8 +420,8 @@ Namespace UnitTests
 			Dim auxFresh = GetDefaultAuxiliaryConfig()
 			Dim auxNow = GetDefaultAuxiliaryConfig()
 			Dim compareResult As Boolean
-		    CType(CType (auxNow.ElectricalUserInputsConfig.ResultCardOverrun, ResultCard).Results, List(of SmartResult)).Add(New SmartResult(49.SI(of Ampere), 49.SI(of Ampere)))
-		    CType(CType (auxNow.ElectricalUserInputsConfig.ResultCardOverrun, ResultCard).Results, List(of SmartResult)).Add(New SmartResult(50.SI(of Ampere), 49.SI(of Ampere)))
+			CType(CType (auxNow.ElectricalUserInputsConfig.ResultCardOverrun, ResultCard).Results, List(of SmartResult)).Add(New SmartResult(49.SI(of Ampere), 49.SI(of Ampere)))
+			CType(CType (auxNow.ElectricalUserInputsConfig.ResultCardOverrun, ResultCard).Results, List(of SmartResult)).Add(New SmartResult(50.SI(of Ampere), 49.SI(of Ampere)))
 
 			'Act
 			compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
@@ -437,8 +437,8 @@ Namespace UnitTests
 			Dim auxFresh = GetDefaultAuxiliaryConfig()
 			Dim auxNow = GetDefaultAuxiliaryConfig()
 			Dim compareResult As Boolean
-		    CType(CType (auxNow.ElectricalUserInputsConfig.ResultCardOverrun, ResultCard).Results, List(of SmartResult)).Add(New SmartResult(49.SI(of Ampere), 49.SI(of Ampere)))
-		    CType(CType (auxNow.ElectricalUserInputsConfig.ResultCardOverrun, ResultCard).Results, List(of SmartResult)).Add(New SmartResult(49.SI(of Ampere), 50.SI(of Ampere)))
+			CType(CType (auxNow.ElectricalUserInputsConfig.ResultCardOverrun, ResultCard).Results, List(of SmartResult)).Add(New SmartResult(49.SI(of Ampere), 49.SI(of Ampere)))
+			CType(CType (auxNow.ElectricalUserInputsConfig.ResultCardOverrun, ResultCard).Results, List(of SmartResult)).Add(New SmartResult(49.SI(of Ampere), 50.SI(of Ampere)))
 
 			'Act
 			compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
@@ -454,7 +454,7 @@ Namespace UnitTests
 			Dim auxFresh = GetDefaultAuxiliaryConfig()
 			Dim auxNow = GetDefaultAuxiliaryConfig()
 			Dim compareResult As Boolean
-		    CType (auxNow.ElectricalUserInputsConfig, ElectricsUserInputsConfig).PowerNetVoltage += 1.SI(of Volt)
+			CType (auxNow.ElectricalUserInputsConfig, ElectricsUserInputsConfig).PowerNetVoltage += 1.SI(of Volt)
 
 			'Act
 			compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
@@ -470,7 +470,7 @@ Namespace UnitTests
 			Dim auxFresh = GetDefaultAuxiliaryConfig()
 			Dim auxNow = GetDefaultAuxiliaryConfig()
 			Dim compareResult As Boolean
-		    CType (auxNow.ElectricalUserInputsConfig, ElectricsUserInputsConfig).SmartElectrical = Not auxNow.ElectricalUserInputsConfig.SmartElectrical
+			CType (auxNow.ElectricalUserInputsConfig, ElectricsUserInputsConfig).SmartElectrical = Not auxNow.ElectricalUserInputsConfig.SmartElectrical
 
 			'Act
 			compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
@@ -506,7 +506,7 @@ Namespace UnitTests
 			Dim auxFresh = GetDefaultAuxiliaryConfig()
 			Dim auxNow = GetDefaultAuxiliaryConfig()
 			Dim compareResult As Boolean
-		    CType (auxNow.PneumaticAuxillariesConfig, PneumaticsConsumersDemand).AirControlledSuspension += 1.SI(of NormLiterPerSecond)
+			CType (auxNow.PneumaticAuxillariesConfig, PneumaticsConsumersDemand).AirControlledSuspension += 1.SI(of NormLiterPerSecond)
 
 			'Act
 			compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
@@ -522,7 +522,7 @@ Namespace UnitTests
 			Dim auxFresh = GetDefaultAuxiliaryConfig()
 			Dim auxNow = GetDefaultAuxiliaryConfig()
 			Dim compareResult As Boolean
-		    CType (auxNow.PneumaticAuxillariesConfig, PneumaticsConsumersDemand).Braking += 1.SI(of NormLiterPerKilogram)
+			CType (auxNow.PneumaticAuxillariesConfig, PneumaticsConsumersDemand).Braking += 1.SI(of NormLiterPerKilogram)
 
 			'Act
 			compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
@@ -554,7 +554,7 @@ Namespace UnitTests
 			Dim auxFresh = GetDefaultAuxiliaryConfig()
 			Dim auxNow = GetDefaultAuxiliaryConfig()
 			Dim compareResult As Boolean
-		    CType (auxNow.PneumaticAuxillariesConfig, PneumaticsConsumersDemand).BreakingWithKneeling += 1.SI(Of NormLiterPerKilogramMeter)
+			CType (auxNow.PneumaticAuxillariesConfig, PneumaticsConsumersDemand).BreakingWithKneeling += 1.SI(Of NormLiterPerKilogramMeter)
 
 			'Act
 			compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
@@ -570,7 +570,7 @@ Namespace UnitTests
 			Dim auxFresh = GetDefaultAuxiliaryConfig()
 			Dim auxNow = GetDefaultAuxiliaryConfig()
 			Dim compareResult As Boolean
-		    CType (auxNow.PneumaticAuxillariesConfig, PneumaticsConsumersDemand).DeadVolBlowOuts += 1.SI(Of PerSecond)
+			CType (auxNow.PneumaticAuxillariesConfig, PneumaticsConsumersDemand).DeadVolBlowOuts += 1.SI(Of PerSecond)
 
 			'Act
 			compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
@@ -586,7 +586,7 @@ Namespace UnitTests
 			Dim auxFresh = GetDefaultAuxiliaryConfig()
 			Dim auxNow = GetDefaultAuxiliaryConfig()
 			Dim compareResult As Boolean
-		    CType (auxNow.PneumaticAuxillariesConfig, PneumaticsConsumersDemand).DeadVolume += 1.SI(of NormLiter)
+			CType (auxNow.PneumaticAuxillariesConfig, PneumaticsConsumersDemand).DeadVolume += 1.SI(of NormLiter)
 
 			'Act
 			compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
@@ -602,7 +602,7 @@ Namespace UnitTests
 			Dim auxFresh = GetDefaultAuxiliaryConfig()
 			Dim auxNow = GetDefaultAuxiliaryConfig()
 			Dim compareResult As Boolean
-		    CType (auxNow.PneumaticAuxillariesConfig, PneumaticsConsumersDemand).NonSmartRegenFractionTotalAirDemand += 1
+			CType (auxNow.PneumaticAuxillariesConfig, PneumaticsConsumersDemand).NonSmartRegenFractionTotalAirDemand += 1
 
 			'Act
 			compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
@@ -618,7 +618,7 @@ Namespace UnitTests
 			Dim auxFresh = GetDefaultAuxiliaryConfig()
 			Dim auxNow = GetDefaultAuxiliaryConfig()
 			Dim compareResult As Boolean
-		    CType (auxNow.PneumaticAuxillariesConfig, PneumaticsConsumersDemand).OverrunUtilisationForCompressionFraction += 1
+			CType (auxNow.PneumaticAuxillariesConfig, PneumaticsConsumersDemand).OverrunUtilisationForCompressionFraction += 1
 
 			'Act
 			compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
@@ -634,7 +634,7 @@ Namespace UnitTests
 			Dim auxFresh = GetDefaultAuxiliaryConfig()
 			Dim auxNow = GetDefaultAuxiliaryConfig()
 			Dim compareResult As Boolean
-		    CType (auxNow.PneumaticAuxillariesConfig, PneumaticsConsumersDemand).DoorOpening += 1.SI(Of NormLiter)
+			CType (auxNow.PneumaticAuxillariesConfig, PneumaticsConsumersDemand).DoorOpening += 1.SI(Of NormLiter)
 
 			'Act
 			compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
@@ -650,7 +650,7 @@ Namespace UnitTests
 			Dim auxFresh = GetDefaultAuxiliaryConfig()
 			Dim auxNow = GetDefaultAuxiliaryConfig()
 			Dim compareResult As Boolean
-		    CType (auxNow.PneumaticAuxillariesConfig, PneumaticsConsumersDemand).StopBrakeActuation += 1.SI(of NormLiterPerKilogram)
+			CType (auxNow.PneumaticAuxillariesConfig, PneumaticsConsumersDemand).StopBrakeActuation += 1.SI(of NormLiterPerKilogram)
 
 			'Act
 			compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
@@ -666,7 +666,7 @@ Namespace UnitTests
 			Dim auxFresh = GetDefaultAuxiliaryConfig()
 			Dim auxNow = GetDefaultAuxiliaryConfig()
 			Dim compareResult As Boolean
-		    CType (auxNow.PneumaticAuxillariesConfig, PneumaticsConsumersDemand).SmartRegenFractionTotalAirDemand += 1
+			CType (auxNow.PneumaticAuxillariesConfig, PneumaticsConsumersDemand).SmartRegenFractionTotalAirDemand += 1
 
 			'Act
 			compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
@@ -719,7 +719,7 @@ Namespace UnitTests
 			Dim auxFresh = GetDefaultAuxiliaryConfig()
 			Dim auxNow = GetDefaultAuxiliaryConfig()
 			Dim compareResult As Boolean
-		    CType (auxNow.PneumaticUserInputsConfig, PneumaticUserInputsConfig).AirSuspensionControl = ConsumerTechnology.Unknown ' auxNow.PneumaticUserInputsConfig.AirSuspensionControl & "x"
+			CType (auxNow.PneumaticUserInputsConfig, PneumaticUserInputsConfig).AirSuspensionControl = ConsumerTechnology.Unknown ' auxNow.PneumaticUserInputsConfig.AirSuspensionControl & "x"
 
 			'Act
 			compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
@@ -735,7 +735,7 @@ Namespace UnitTests
 			Dim auxFresh = GetDefaultAuxiliaryConfig()
 			Dim auxNow = GetDefaultAuxiliaryConfig()
 			Dim compareResult As Boolean
-		    CType (auxNow.PneumaticUserInputsConfig, PneumaticUserInputsConfig).CompressorGearEfficiency =
+			CType (auxNow.PneumaticUserInputsConfig, PneumaticUserInputsConfig).CompressorGearEfficiency =
 				If _
 					(auxNow.PneumaticUserInputsConfig.CompressorGearEfficiency - 0.1 < 0, 0,
 					auxNow.PneumaticUserInputsConfig.CompressorGearEfficiency - 0.1)
@@ -755,7 +755,7 @@ Namespace UnitTests
 			Dim auxFresh = GetDefaultAuxiliaryConfig()
 			Dim auxNow = GetDefaultAuxiliaryConfig()
 			Dim compareResult As Boolean
-		    CType (auxNow.PneumaticUserInputsConfig, PneumaticUserInputsConfig).CompressorGearRatio += 1
+			CType (auxNow.PneumaticUserInputsConfig, PneumaticUserInputsConfig).CompressorGearRatio += 1
 
 			'Act
 			compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
@@ -788,7 +788,7 @@ Namespace UnitTests
 			Dim auxFresh = GetDefaultAuxiliaryConfig()
 			Dim auxNow = GetDefaultAuxiliaryConfig()
 			Dim compareResult As Boolean
-		    CType (auxNow.PneumaticUserInputsConfig, PneumaticUserInputsConfig).Doors = ConsumerTechnology.Unknown ' auxNow.PneumaticUserInputsConfig.Doors & "x"
+			CType (auxNow.PneumaticUserInputsConfig, PneumaticUserInputsConfig).Doors = ConsumerTechnology.Unknown ' auxNow.PneumaticUserInputsConfig.Doors & "x"
 
 			'Act
 			compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
@@ -805,7 +805,7 @@ Namespace UnitTests
 			Dim auxFresh = GetDefaultAuxiliaryConfig()
 			Dim auxNow = GetDefaultAuxiliaryConfig()
 			Dim compareResult As Boolean
-		    CType (auxNow.PneumaticUserInputsConfig, PneumaticUserInputsConfig).KneelingHeight += 1.SI(Of Meter)
+			CType (auxNow.PneumaticUserInputsConfig, PneumaticUserInputsConfig).KneelingHeight += 1.SI(Of Meter)
 
 			'Act
 			compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
@@ -835,7 +835,7 @@ Namespace UnitTests
 			Dim auxFresh = GetDefaultAuxiliaryConfig()
 			Dim auxNow = GetDefaultAuxiliaryConfig()
 			Dim compareResult As Boolean
-		    CType (auxNow.PneumaticUserInputsConfig, PneumaticUserInputsConfig).SmartAirCompression = Not auxNow.PneumaticUserInputsConfig.SmartAirCompression
+			CType (auxNow.PneumaticUserInputsConfig, PneumaticUserInputsConfig).SmartAirCompression = Not auxNow.PneumaticUserInputsConfig.SmartAirCompression
 
 			'Act
 			compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
@@ -852,7 +852,7 @@ Namespace UnitTests
 			Dim auxFresh = GetDefaultAuxiliaryConfig()
 			Dim auxNow = GetDefaultAuxiliaryConfig()
 			Dim compareResult As Boolean
-		    CType (auxNow.PneumaticUserInputsConfig, PneumaticUserInputsConfig).SmartRegeneration = Not auxNow.PneumaticUserInputsConfig.SmartRegeneration
+			CType (auxNow.PneumaticUserInputsConfig, PneumaticUserInputsConfig).SmartRegeneration = Not auxNow.PneumaticUserInputsConfig.SmartRegeneration
 
 			'Act
 			compareResult = auxFresh.ConfigValuesAreTheSameAs(auxNow)
diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/ElectricalConsumerListTests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/ElectricalConsumerListTests.vb
index 803e0b4b76..3127a6ddc3 100644
--- a/VECTOAux/VectoAuxiliariesTests/UnitTests/ElectricalConsumerListTests.vb
+++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/ElectricalConsumerListTests.vb
@@ -21,50 +21,50 @@ Public Class ElectricalConsumerListTests
         Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory)
     End Sub
 
-	<Test()>
-	Public Sub CreateNewTest()
+	'<Test()>
+	'Public Sub CreateNewTest()
 
-		Dim target As ElectricalConsumerList = new ElectricalConsumerList(New List(Of IElectricalConsumer)()) '(26.3.SI(of Volt), 0.096, True)
+	'	Dim target As ElectricalConsumerList = new ElectricalConsumerList(New List(Of IElectricalConsumer)()) '(26.3.SI(of Volt), 0.096, True)
 
-		Assert.IsNotNull(target)
-	End Sub
+	'	Assert.IsNotNull(target)
+	'End Sub
 
 
-	<Test()>
-	Public Sub SumAllConsumersTest()
+	'<Test()>
+	'Public Sub SumAllConsumersTest()
 
-        Dim auxconfig = Utils.GetAuxTestConfig()
-        Dim TestConsumerList = auxconfig.ElectricalUserInputsConfig.ElectricalConsumers
-		TestConsumerList.Items.First(Function(item) item.ConsumerName = "Controllers,Valves etc").NumberInActualVehicle = 1
+ '       Dim auxconfig = Utils.GetAuxTestConfig()
+ '       Dim TestConsumerList = auxconfig.ElectricalUserInputsConfig.ElectricalConsumers
+	'	TestConsumerList.Items.First(Function(item) item.ConsumerName = "Controllers,Valves etc").NumberInActualVehicle = 1
 
-		'Dim actual As Ampere = TestConsumerList.GetTotalAverageDemandAmps(False)
+	'	'Dim actual As Ampere = TestConsumerList.GetTotalAverageDemandAmps(False)
 
-        Dim m0_1 = New M0_1Impl(auxconfig)
-        dim actual As Ampere = m0_1.GetTotalAverageDemandAmpsIncludingBaseLoad
+ '       Dim m0_1 = New M0_1Impl(auxconfig)
+ '       dim actual As Ampere = m0_1.TotalAverageDemandAmpsIncludingBaseLoad
 
-		TestConsumerList.Items.First(Function(item) item.ConsumerName = "Controllers,Valves etc").NumberInActualVehicle = 0
+	'	TestConsumerList.Items.First(Function(item) item.ConsumerName = "Controllers,Valves etc").NumberInActualVehicle = 0
 
-		Dim expected = 60.63
+	'	Dim expected = 60.63
 
-		Assert.AreEqual(expected, actual.Value(), 0.01)
-	End Sub
+	'	Assert.AreEqual(expected, actual.Value(), 0.01)
+	'End Sub
 
-	<Test()>
-	Public Sub SumNonExcludedConsumersTest()
+	'<Test()>
+	'Public Sub SumNonExcludedConsumersTest()
 
-	    Dim auxconfig = Utils.GetAuxTestConfig()
-	    Dim TestConsumerList = auxconfig.ElectricalUserInputsConfig.ElectricalConsumers
+	'    Dim auxconfig = Utils.GetAuxTestConfig()
+	'    Dim TestConsumerList = auxconfig.ElectricalUserInputsConfig.ElectricalConsumers
 
-        TestConsumerList.Items.First(Function(item) item.ConsumerName = "Controllers,Valves etc").NumberInActualVehicle = 1
-		'Dim actual As Ampere = TestConsumerList.GetTotalAverageDemandAmps(True)
-	    Dim m0_1 = New M0_1Impl(auxconfig)
-	    dim actual As Ampere = m0_1.GetTotalAverageDemandAmpsWithoutBaseLoad
+ '       TestConsumerList.Items.First(Function(item) item.ConsumerName = "Controllers,Valves etc").NumberInActualVehicle = 1
+	'	'Dim actual As Ampere = TestConsumerList.GetTotalAverageDemandAmps(True)
+	'    Dim m0_1 = New M0_1Impl(auxconfig)
+	'    dim actual As Ampere = m0_1.TotalAverageDemandAmpsWithoutBaseLoad
 
-		TestConsumerList.Items.First(Function(item) item.ConsumerName = "Controllers,Valves etc").NumberInActualVehicle = 0
-		Dim expected = 35.63
+	'	TestConsumerList.Items.First(Function(item) item.ConsumerName = "Controllers,Valves etc").NumberInActualVehicle = 0
+	'	Dim expected = 35.63
 
-        Assert.AreEqual(expected, actual.Value(), 0.01)
-	End Sub
+ '       Assert.AreEqual(expected, actual.Value(), 0.01)
+	'End Sub
 
 
     '<Test()>
diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/ElectricalConsumerTests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/ElectricalConsumerTests.vb
index a230147d08..b1c9d3c1fd 100644
--- a/VECTOAux/VectoAuxiliariesTests/UnitTests/ElectricalConsumerTests.vb
+++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/ElectricalConsumerTests.vb
@@ -1,7 +1,6 @@
 
 
 Imports NUnit.Framework
-Imports TUGraz.VectoCommon.Utils
 Imports TUGraz.VectoCore.Configuration
 Imports TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electrics
 Imports TUGraz.VectoCore.Models.BusAuxiliaries.Interfaces.DownstreamModules.Electrics
@@ -12,77 +11,73 @@ Namespace UnitTests
 
 #Region "Helpers"
 
-		Public Function GetGoodConsumer() As ElectricalConsumer
-			Return New ElectricalConsumer(False, "Doors", "Doors per Door", 20.SI(of Ampere), 0.5, 26.3.SI(of Volt), 1, "")
-		End Function
+		'Public Function GetGoodConsumer() As ElectricalConsumer
+		'	Return New ElectricalConsumer(False, "Doors", "Doors per Door", 0.5, 1)
+		'End Function
 
 #End Region
 
 
-		<Test()>
-		Public Sub CreateNewTest()
-			Dim target As ElectricalConsumer = GetGoodConsumer()
-			Assert.IsNotNull(target)
-		End Sub
+		'<Test()>
+		'Public Sub CreateNewTest()
+		'	Dim target As ElectricalConsumer = GetGoodConsumer()
+		'	Assert.IsNotNull(target)
+		'End Sub
 
-		'  <Test(), ExpectedException("System.ArgumentException")>
+		''  <Test(), ExpectedException("System.ArgumentException")>
 
-		<Test()>
-		Public Sub ZeroLengthConsumerNameTest()
-			Dim target As ElectricalConsumer
-			Assert.That(Sub() target = New ElectricalConsumer(False, "Doors", "", 20.SI(of Ampere), 0.5, 26.3.SI(of Volt), 1, ""), Throws.InstanceOf(Of ArgumentException))
+		'<Test()>
+		'Public Sub ZeroLengthConsumerNameTest()
+		'	Dim target As ElectricalConsumer
+		'	Assert.That(Sub() target = New ElectricalConsumer(False, "Doors", "", 0.5, 1), Throws.InstanceOf(Of ArgumentException))
 
-		End Sub
+		'End Sub
 
-		<Test()>
-		Public Sub ZeroLengthCategoryNameTest_ThrowsArgumentException()
-			Dim target As ElectricalConsumer
-			Assert.That(Sub() target = New ElectricalConsumer(False, "", "Doors per Door", 20.SI(of Ampere), 0.5, 26.3.SI(of Volt), 1, ""), Throws.InstanceOf(Of ArgumentException))
-		End Sub
+		'<Test()>
+		'Public Sub ZeroLengthCategoryNameTest_ThrowsArgumentException()
+		'	Dim target As ElectricalConsumer
+		'	Assert.That(Sub() target = New ElectricalConsumer(False, "", "Doors per Door", 0.5, 1), Throws.InstanceOf(Of ArgumentException))
+		'End Sub
 
 
-		'TooLow     NominalConsumption
-		'TooHigh    NominalConsumption
+		''TooLow     NominalConsumption
+		''TooHigh    NominalConsumption
 
 
-		<Test()>
-		Public Sub ToLow_PhaseIdleTractionOn_ThrowsArgumentException()
-			Dim target As ElectricalConsumer
-			Assert.That(Sub() target = New ElectricalConsumer(False, "", "Doors per Door", 20.SI(of Ampere), Constants.BusAuxiliaries.ElectricConstants.PhaseIdleTractionOnMin - 1,
-											26.3.SI(of Volt), 1, ""), Throws.InstanceOf(Of ArgumentException))
+		'<Test()>
+		'Public Sub ToLow_PhaseIdleTractionOn_ThrowsArgumentException()
+		'	Dim target As ElectricalConsumer
+		'	Assert.That(Sub() target = New ElectricalConsumer(False, "", "Doors per Door", Constants.BusAuxiliaries.ElectricConstants.PhaseIdleTractionOnMin - 1, 1), Throws.InstanceOf(Of ArgumentException))
 
-		End Sub
+		'End Sub
 
-		<Test()>
-		Public Sub ToHigh_PhaseIdleTractionOn_ThrowsArgumentException()
-			Dim target As ElectricalConsumer
-			Assert.That(Sub() target = New ElectricalConsumer(False, "", "Doors per Door", 20.SI(of Ampere), Constants.BusAuxiliaries.ElectricConstants.PhaseIdleTractionMax + 1,
-											26.3.SI(of Volt), 1, ""), Throws.InstanceOf(Of ArgumentException))
-		End Sub
+		'<Test()>
+		'Public Sub ToHigh_PhaseIdleTractionOn_ThrowsArgumentException()
+		'	Dim target As ElectricalConsumer
+		'	Assert.That(Sub() target = New ElectricalConsumer(False, "", "Doors per Door", Constants.BusAuxiliaries.ElectricConstants.PhaseIdleTractionMax + 1, 1), Throws.InstanceOf(Of ArgumentException))
+		'End Sub
 
 
-		<Test()>
-		Public Sub ToLowNumberInVehicle_ThrowsArgumentException()
-			Dim target As ElectricalConsumer
-			Assert.That(Sub() target = New ElectricalConsumer(False, "", "Doors per Door", 20.SI(of Ampere), 0.5, 26.3.SI(of Volt), -1, ""), Throws.InstanceOf(Of ArgumentException))
-		End Sub
+		'<Test()>
+		'Public Sub ToLowNumberInVehicle_ThrowsArgumentException()
+		'	Dim target As ElectricalConsumer
+		'	Assert.That(Sub() target = New ElectricalConsumer(False, "", "Doors per Door", 0.5, -1), Throws.InstanceOf(Of ArgumentException))
+		'End Sub
 
-		'TooLow     PowerNetVoltage
-		<Test()>
-		Public Sub ToLowPowerNetVoltageTest_ThrowsArgumentException()
-			Dim target As ElectricalConsumer
-			Assert.That(Sub() target = New ElectricalConsumer(False, "", "Doors per Door", 20.SI(of Ampere), 0.5,
-											(Constants.BusAuxiliaries.ElectricConstants.PowenetVoltageMin - 1).SI(of Volt), 1, ""), Throws.InstanceOf(Of ArgumentException))
+		''TooLow     PowerNetVoltage
+		'<Test()>
+		'Public Sub ToLowPowerNetVoltageTest_ThrowsArgumentException()
+		'	Dim target As ElectricalConsumer
+		'	Assert.That(Sub() target = New ElectricalConsumer(False, "", "Doors per Door", 0.5, 1), Throws.InstanceOf(Of ArgumentException))
 
-		End Sub
+		'End Sub
 
-		'TooHigh    PowerNetVoltage
-		<Test()>
-		Public Sub ToHighPowerNetVoltageTest_ThrowsArgumentException()
-			Dim target As ElectricalConsumer
-			Assert.That(Sub() target = New ElectricalConsumer(False, "", "Doors per Door", 20.SI(of Ampere), 0.5,
-											(Constants.BusAuxiliaries.ElectricConstants.PowenetVoltageMax + 1).SI(of Volt), 1, ""), Throws.InstanceOf(Of ArgumentException))
+		''TooHigh    PowerNetVoltage
+		'<Test()>
+		'Public Sub ToHighPowerNetVoltageTest_ThrowsArgumentException()
+		'	Dim target As ElectricalConsumer
+		'	Assert.That(Sub() target = New ElectricalConsumer(False, "", "Doors per Door", 0.5, 1), Throws.InstanceOf(Of ArgumentException))
 
-		End Sub
+		'End Sub
 	End Class
 End Namespace
\ No newline at end of file
diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/M0_NonSmart_AlternatorsSetEfficiencyTests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/M0_NonSmart_AlternatorsSetEfficiencyTests.vb
index 6395085da3..a5ac8efa76 100644
--- a/VECTOAux/VectoAuxiliariesTests/UnitTests/M0_NonSmart_AlternatorsSetEfficiencyTests.vb
+++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/M0_NonSmart_AlternatorsSetEfficiencyTests.vb
@@ -23,7 +23,7 @@ Namespace UnitTests
         Private Const cstrHVACMapLocation As String = "TestFiles\TestHvacMap.csv"
         Private Const cstrAlternatorMap As String = "TestFiles\testAlternatorMap.aalt"
 
-        Private elecConsumers As IElectricalConsumerList
+        'Private elecConsumers As IElectricalConsumerList
 
         Private alternatorMap As IAlternatorMap
         Private signals As Signals = New Signals
@@ -51,11 +51,10 @@ Namespace UnitTests
 
             'Setup consumers and HVAC ( 1 Consumer in Test Category )
 
-            Dim list = New List(Of IElectricalConsumer)()
-            Dim consumer = New ElectricalConsumer(False, "TEST", "CONSUMER1", 20.SI (Of Ampere), 0.5,
-                                                  26.3.SI (Of Volt), 1, "")
-            list.Add(consumer)
-            elecConsumers = CType(New ElectricalConsumerList(list), IElectricalConsumerList)
+            'Dim list = New List(Of IElectricalConsumer)()
+            'Dim consumer = New ElectricalConsumer(False, "TEST", "CONSUMER1", 0.5, 1)
+            'list.Add(consumer)
+            'elecConsumers = CType(New ElectricalConsumerList(list), IElectricalConsumerList)
 
             'Alternator Map
             alternatorMap = AlternatorReader.ReadMap(cstrAlternatorMap)
@@ -104,7 +103,9 @@ Namespace UnitTests
 
             Dim auxConfig = utils.GetAuxTestConfig()
 
-            CType(auxConfig.ElectricalUserInputsConfig, ElectricsUserInputsConfig).ElectricalConsumers = elecConsumers
+            'CType(auxConfig.ElectricalUserInputsConfig, ElectricsUserInputsConfig).ElectricalConsumers = elecConsumers
+            CType(auxConfig.ElectricalUserInputsConfig, ElectricsUserInputsConfig).AverageCurrentDemandInclBaseLoad = 0.5.SI(Of Ampere)
+            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)
diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/Utils.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/Utils.vb
index aa0b6418db..b21b3b0022 100644
--- a/VECTOAux/VectoAuxiliariesTests/UnitTests/Utils.vb
+++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/Utils.vb
@@ -12,61 +12,38 @@ Imports TUGraz.VectoCore.Models.Declaration
 Imports TUGraz.VectoCore.Models.SimulationComponent.Data
 
 Public Class Utils
-    public shared function GetElectricConsumers As IElectricalConsumerList
-        Dim _powernetVoltage = 26.3.SI (Of Volt)
-        Dim list As List(Of IElectricalConsumer) = New List(Of IElectricalConsumer)()
-        list.add(New ElectricalConsumer(False, "Doors", "Doors per vehicle", 3.0.SI (Of Ampere), 0.096339,
-                                        _powernetVoltage, 3, ""))
-        list.add(New ElectricalConsumer(True, "Veh Electronics &Engine", "Controllers,Valves etc",
-                                        25.0.SI (Of Ampere), 1.0, _powernetVoltage, 1, ""))
-        list.add(New ElectricalConsumer(False, "Vehicle basic equipment", "Radio City", 2.0.SI (Of Ampere), 0.8,
-                                        _powernetVoltage, 1, ""))
-        list.add(New ElectricalConsumer(False, "Vehicle basic equipment", "Radio Intercity", 5.0.SI (Of Ampere),
-                                        0.8, _powernetVoltage, 0, ""))
-        list.add(New ElectricalConsumer(False, "Vehicle basic equipment", "Radio/Audio Tourism",
-                                        9.0.SI (Of Ampere), 0.8,
-                                        _powernetVoltage, 0, ""))
-        list.add(New ElectricalConsumer(False, "Vehicle basic equipment", "Fridge", 4.0.SI (Of Ampere), 0.5,
-                                        _powernetVoltage, 0, ""))
-        list.add(New ElectricalConsumer(False, "Vehicle basic equipment", "Kitchen Standard",
-                                        67.0.SI (Of Ampere), 0.05, _powernetVoltage, 0, ""))
-        list.add(New ElectricalConsumer(False, "Vehicle basic equipment",
-                                        "Interior lights City/ Intercity + Doorlights [Should be 1/m]",
-                                        1.0.SI (Of Ampere), 0.7,
-                                        _powernetVoltage, 12, "1 Per metre length of bus"))
-        list.add(New ElectricalConsumer(False, "Vehicle basic equipment",
-                                        "LED Interior lights ceiling city/Intercity + door [Should be 1/m]",
-                                        0.6.SI (Of Ampere), 0.7,
-                                        _powernetVoltage, 0, "1 Per metre length of bus"))
-        list.add(New ElectricalConsumer(False, "Vehicle basic equipment", "Interior lights Tourism + reading [1/m]",
-                                        1.1.SI (Of Ampere), 0.7, _powernetVoltage, 0, "1 Per metre length of bus"))
-        list.add(New ElectricalConsumer(False, "Vehicle basic equipment",
-                                        "LED Interior lights ceiling Tourism + LED reading [Should be 1/m]",
-                                        0.66.SI (Of Ampere), 0.7,
-                                        _powernetVoltage, 0, "1 Per metre length of bus"))
-        list.add(New ElectricalConsumer(False, "Customer Specific Equipment", "External Displays Font/Side/Rear",
-                                        2.65017667844523.SI (Of Ampere), 1.0, _powernetVoltage, 4, ""))
-        list.add(New ElectricalConsumer(False, "Customer Specific Equipment",
-                                        "Internal display per unit ( front side rear)",
-                                        1.06007067137809.SI (Of Ampere), 1.0, _powernetVoltage, 1, ""))
-        list.add(New ElectricalConsumer(False, "Customer Specific Equipment",
-                                        "CityBus Ref EBSF Table4 Devices ITS No Displays", 9.3.SI (Of Ampere), 1.0,
-                                        _powernetVoltage, 1, ""))
-        list.add(New ElectricalConsumer(False, "Lights", "Exterior Lights BULB", 7.4.SI (Of Ampere), 1.0,
-                                        _powernetVoltage, 1, ""))
-        list.add(New ElectricalConsumer(False, "Lights", "Day running lights LED bonus", - 0.723.SI (Of Ampere), 1.0,
-                                        _powernetVoltage, 1, ""))
-        list.add(New ElectricalConsumer(False, "Lights", "Antifog rear lights LED bonus", - 0.17.SI (Of Ampere), 1.0,
-                                        _powernetVoltage, 1, ""))
-        list.add(New ElectricalConsumer(False, "Lights", "Position lights LED bonus", - 1.2.SI (Of Ampere), 1.0,
-                                        _powernetVoltage, 1, ""))
-        list.add(New ElectricalConsumer(False, "Lights", "Direction lights LED bonus", - 0.3.SI (Of Ampere), 1.0,
-                                        _powernetVoltage, 1, ""))
-        list.add(New ElectricalConsumer(False, "Lights", "Brake Lights LED bonus", - 1.2.SI (Of Ampere), 1.0,
-                                        _powernetVoltage, 1, ""))
+    'public shared function GetElectricConsumers As IElectricalConsumerList
+    '    Dim _powernetVoltage = 26.3.SI (Of Volt)
+    '    Dim list As List(Of IElectricalConsumer) = New List(Of IElectricalConsumer)()
+    '    list.add(New ElectricalConsumer(False, "Doors", "Doors per vehicle", 0.096339, 3))
+    '    list.add(New ElectricalConsumer(True, "Veh Electronics &Engine", "Controllers,Valves etc", 1.0, 1))
+    '    list.add(New ElectricalConsumer(False, "Vehicle basic equipment", "Radio City", 0.8, 1))
+    '    list.add(New ElectricalConsumer(False, "Vehicle basic equipment", "Radio Intercity",
+    '                                    0.8, 0))
+    '    list.add(New ElectricalConsumer(False, "Vehicle basic equipment", "Radio/Audio Tourism", 0.8, 0))
+    '    list.add(New ElectricalConsumer(False, "Vehicle basic equipment", "Fridge", 0.5, 0))
+    '    list.add(New ElectricalConsumer(False, "Vehicle basic equipment", "Kitchen Standard", 0.05, 0))
+    '    list.add(New ElectricalConsumer(False, "Vehicle basic equipment",
+    '                                    "Interior lights City/ Intercity + Doorlights [Should be 1/m]", 0.7, 12))
+    '    list.add(New ElectricalConsumer(False, "Vehicle basic equipment",
+    '                                    "LED Interior lights ceiling city/Intercity + door [Should be 1/m]", 0.7, 0))
+    '    list.add(New ElectricalConsumer(False, "Vehicle basic equipment", "Interior lights Tourism + reading [1/m]", 0.7, 0))
+    '    list.add(New ElectricalConsumer(False, "Vehicle basic equipment",
+    '                                    "LED Interior lights ceiling Tourism + LED reading [Should be 1/m]", 0.7, 0))
+    '    list.add(New ElectricalConsumer(False, "Customer Specific Equipment", "External Displays Font/Side/Rear", 1.0, 4))
+    '    list.add(New ElectricalConsumer(False, "Customer Specific Equipment",
+    '                                    "Internal display per unit ( front side rear)", 1.0, 1))
+    '    list.add(New ElectricalConsumer(False, "Customer Specific Equipment",
+    '                                    "CityBus Ref EBSF Table4 Devices ITS No Displays", 1.0, 1))
+    '    list.add(New ElectricalConsumer(False, "Lights", "Exterior Lights BULB", 1.0, 1))
+    '    list.add(New ElectricalConsumer(False, "Lights", "Day running lights LED bonus", 1.0, 1))
+    '    list.add(New ElectricalConsumer(False, "Lights", "Antifog rear lights LED bonus", 1.0, 1))
+    '    list.add(New ElectricalConsumer(False, "Lights", "Position lights LED bonus", 1.0, 1))
+    '    list.add(New ElectricalConsumer(False, "Lights", "Direction lights LED bonus", 1.0, 1))
+    '    list.add(New ElectricalConsumer(False, "Lights", "Brake Lights LED bonus", 1.0, 1))
 
-        Return New ElectricalConsumerList(list)
-    End function
+    '    Return New ElectricalConsumerList(list)
+    'End function
 
     Public Shared Function GetDefaultVehicleData(optional vehicleWeight As Kilogram = Nothing) as VehicleData
         Return New VehicleData With {
@@ -118,7 +95,8 @@ Public Class Utils
 
         Dim retval = New AuxiliaryConfig() With {
                 .ElectricalUserInputsConfig = New ElectricsUserInputsConfig() With {
-                .ElectricalConsumers = GetElectricConsumers(),
+                .AverageCurrentDemandInclBaseLoad = 0.SI(Of Ampere),
+                .AverageCurrentDemandWithoutBaseLoad = 0.SI(of Ampere),
                 .ResultCardIdle = New ResultCard(New List(Of SmartResult)()),
                 .ResultCardTraction = New ResultCard(New List(Of SmartResult)()),
                 .ResultCardOverrun = New ResultCard(New List(Of SmartResult)()),
diff --git a/VectoCommon/VectoCommon/BusAuxiliaries/IAuxiliaryConfig.cs b/VectoCommon/VectoCommon/BusAuxiliaries/IAuxiliaryConfig.cs
index 3885af16ea..b2da7f68ec 100644
--- a/VectoCommon/VectoCommon/BusAuxiliaries/IAuxiliaryConfig.cs
+++ b/VectoCommon/VectoCommon/BusAuxiliaries/IAuxiliaryConfig.cs
@@ -11,6 +11,7 @@
 
 using System.Xml.Linq;
 using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Models.BusAuxiliaries;
 
 namespace TUGraz.VectoCommon.BusAuxiliaries {
diff --git a/VectoCommon/VectoCommon/BusAuxiliaries/IElectricalConsumer.cs b/VectoCommon/VectoCommon/BusAuxiliaries/IElectricalConsumer.cs
deleted file mode 100644
index d620c0aa03..0000000000
--- a/VectoCommon/VectoCommon/BusAuxiliaries/IElectricalConsumer.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2017 European Union.
-// Licensed under the EUPL (the 'Licence');
-// 
-// * You may not use this work except in compliance with the Licence.
-// * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl
-// * Unless required by applicable law or agreed to in writing,
-// software distributed under the Licence is distributed on an "AS IS" basis,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// 
-// See the LICENSE.txt for the specific language governing permissions and limitations.
-
-using System.ComponentModel;
-using TUGraz.VectoCommon.Utils;
-
-namespace TUGraz.VectoCommon.BusAuxiliaries
-{
-	public interface IElectricalConsumer : INotifyPropertyChanged
-	{
-		string Category { get;  }
-		string ConsumerName { get;  }
-		bool BaseVehicle { get;  }
-		Ampere NominalConsumptionAmps { get;  }
-		double PhaseIdle_TractionOn { get;  }
-		int NumberInActualVehicle { get; set; }
-		Volt PowerNetVoltage { get;  }
-		string Info { get;  }
-		Ampere TotalAvgConumptionAmps { get; }
-		
-	}
-}
diff --git a/VectoCommon/VectoCommon/BusAuxiliaries/IElectricalConsumerList.cs b/VectoCommon/VectoCommon/BusAuxiliaries/IElectricalConsumerList.cs
deleted file mode 100644
index 23df849b59..0000000000
--- a/VectoCommon/VectoCommon/BusAuxiliaries/IElectricalConsumerList.cs
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2017 European Union.
-// Licensed under the EUPL (the 'Licence');
-// 
-// * You may not use this work except in compliance with the Licence.
-// * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl
-// * Unless required by applicable law or agreed to in writing,
-// software distributed under the Licence is distributed on an "AS IS" basis,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// 
-// See the LICENSE.txt for the specific language governing permissions and limitations.
-
-using System.Collections.Generic;
-using TUGraz.VectoCommon.Utils;
-
-namespace TUGraz.VectoCommon.BusAuxiliaries
-{
-	public interface IElectricalConsumerList
-	{
-		/// <summary>
-		/// 	List of Electrical Consumers
-		/// 	</summary>
-		/// 	<value></value>
-		/// 	<returns></returns>
-		/// 	<remarks></remarks>
-		IReadOnlyList<IElectricalConsumer> Items { get; }
-
-		///// <summary>
-		///// 	Add New Electrical Consumer
-		///// 	</summary>
-		///// 	<param name="consumer"></param>
-		///// 	<remarks></remarks>
-		//void AddConsumer(IElectricalConsumer consumer);
-
-		///// <summary>
-		///// 	Remove Electrical Consumer
-		///// 	</summary>
-		///// 	<param name="consumer"></param>
-		///// 	<remarks></remarks>
-		//void RemoveConsumer(IElectricalConsumer consumer);
-
-		///// <summary>
-		///// 	Get Total Average Demand In Amps 
-		///// 	</summary>
-		///// 	<param name="excludeOnBase">Exclude those on base vehicle</param>
-		///// 	<returns></returns>
-		///// 	<remarks></remarks>
-		//Ampere GetTotalAverageDemandAmps(bool excludeOnBase);
-
-		///// <summary>
-		///// 	Door Actuation Time Fraction ( Total Time Spent Operational during cycle )
-		///// 	</summary>
-		///// 	<value></value>
-		///// 	<returns></returns>
-		///// 	<remarks></remarks>
-		//double DoorDutyCycleFraction { get; set; }
-
-		// Merge Info data from ElectricalConsumer in a Default set into live set
-		// This is required because the info is stored in the AAUX file and we do not want to use a persistance stored version.
-		//void MergeInfoData();
-	}
-}
diff --git a/VectoCommon/VectoCommon/BusAuxiliaries/IElectricsUserInputsConfig.cs b/VectoCommon/VectoCommon/BusAuxiliaries/IElectricsUserInputsConfig.cs
index 08c99e9841..3ed13166bf 100644
--- a/VectoCommon/VectoCommon/BusAuxiliaries/IElectricsUserInputsConfig.cs
+++ b/VectoCommon/VectoCommon/BusAuxiliaries/IElectricsUserInputsConfig.cs
@@ -42,13 +42,9 @@ namespace TUGraz.VectoCommon.BusAuxiliaries
 		/// 	<remarks></remarks>
 		double AlternatorGearEfficiency { get;  }
 
-		/// <summary>
-		/// 	List of Electrical Consumers
-		/// 	</summary>
-		/// 	<value></value>
-		/// 	<returns></returns>
-		/// 	<remarks></remarks>
-		IElectricalConsumerList ElectricalConsumers { get; }
+		Ampere AverageCurrentDemandInclBaseLoad { get; }
+
+		Ampere AverageCurrentDemandWithoutBaseLoad { get; }
 
 		/// <summary>
 		/// 	Door Actuation Time In Seconds ( Time Taken to Open/Close the door )
diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/BusAuxiliaryInputData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/BusAuxiliaryInputData.cs
index 851c10f9c0..cba1a204df 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/BusAuxiliaryInputData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/BusAuxiliaryInputData.cs
@@ -72,23 +72,13 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 			// DoorActuationTimeSecond
 			electricalUserInputsConfig.DoorActuationTimeSecond = elData.GetEx<double>("DoorActuationTimeSecond").SI<Second>();
 
-			// Electrical Consumer list
-			//electricalUserInputsConfig.ElectricalConsumers.Items.Clear();
-			var consumers = new List<IElectricalConsumer>();
-			foreach (var consumer in elData["ElectricalConsumers"]) {
-				var newConsumer = new ElectricalConsumer(
-					consumer.GetEx<bool>("BaseVehicle"), consumer.GetEx<string>("Category"), consumer.GetEx<string>("ConsumerName"),
-					consumer.GetEx<double>("NominalConsumptionAmps").SI<Ampere>(),
-					consumer.GetEx<double>("PhaseIdle_TractionOn"), consumer.GetEx<double>("PowerNetVoltage").SI<Volt>(),
-					consumer.GetEx<int>("NumberInActualVehicle"),
-					consumer.GetEx<string>("Info"));
-				consumers.Add(newConsumer);
-			}
-
-			electricalUserInputsConfig.ElectricalConsumers = new ElectricalConsumerList(consumers);
+			electricalUserInputsConfig.AverageCurrentDemandInclBaseLoad = elData["ElectricalConsumers"]
+				.GetEx<double>("AverageCurrentDemandInclBaseLoad").SI<Ampere>();
+			electricalUserInputsConfig.AverageCurrentDemandWithoutBaseLoad = elData["ElectricalConsumers"]
+				.GetEx<double>("AverageCurrentDemandWithoutBaseLoad").SI<Ampere>();
 
 			// PowerNetVoltage
-			electricalUserInputsConfig.PowerNetVoltage = elData.GetEx<double>("PowerNetVoltage").SI<Volt>();
+			//electricalUserInputsConfig.PowerNetVoltage = elData.GetEx<double>("PowerNetVoltage").SI<Volt>();
 
 			// ResultCardIdle
 
diff --git a/VectoCore/VectoCore/InputData/Reader/ComponentData/ElectricConsumerReader.cs b/VectoCore/VectoCore/InputData/Reader/ComponentData/ElectricConsumerReader.cs
index 2225515973..9ec66bad98 100644
--- a/VectoCore/VectoCore/InputData/Reader/ComponentData/ElectricConsumerReader.cs
+++ b/VectoCore/VectoCore/InputData/Reader/ComponentData/ElectricConsumerReader.cs
@@ -1,12 +1,13 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
 using System.Data;
 using System.IO;
 using System.Linq;
 using TUGraz.VectoCommon.BusAuxiliaries;
 using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
-using TUGraz.VectoCore.Configuration;
 using TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electrics;
 using TUGraz.VectoCore.Utils;
 
@@ -15,16 +16,15 @@ namespace TUGraz.VectoCore.InputData.Reader.ComponentData
 	public static class ElectricConsumerReader
 	{
 		public static readonly string[] Header = new[] {
-			Fields.Category, Fields.Consumer, Fields.BaseVehicle, Fields.NominalAmps, Fields.PhaseIdle, Fields.NuminVehicle,
-			Fields.Info
+			Fields.Category, Fields.Consumer, Fields.BaseVehicle, Fields.PhaseIdle, Fields.NuminVehicle
 		};
 
-		public static IElectricalConsumerList ReadStream(Stream str)
+		public static ElectricalConsumerList ReadStream(Stream str)
 		{
 			return Create(VectoCSVFile.ReadStream(str));
 		}
 
-		public static IElectricalConsumerList Create(TableData data)
+		public static ElectricalConsumerList Create(TableData data)
 		{
 			if (!HeaderValid(data.Columns)) {
 				throw new VectoException("Invalid header. Expected: {0}, got: {1}",
@@ -32,18 +32,22 @@ namespace TUGraz.VectoCore.InputData.Reader.ComponentData
 					string.Join(", ", data.Columns.Cast<DataColumn>().Select(c => c.ColumnName)));
 			}
 
-			var retVal = new List<IElectricalConsumer>();
+			var retVal = new List<ElectricalConsumer>();
 			foreach (DataRow row in data.Rows) {
-				retVal.Add(new ElectricalConsumer(
-					row.ParseBoolean(Fields.BaseVehicle),
-					row.Field<string>(Fields.Category),
-					row.Field<string>(Fields.Consumer),
-					row.ParseDouble(Fields.NominalAmps).SI<Ampere>(),
-					row.ParseDouble(Fields.PhaseIdle),
-					Constants.BusAuxiliaries.ElectricSystem.PowernetVoltage,
-					0,
-					row.Field<string>(Fields.Info)
-					));
+				var consumer = new ElectricalConsumer() {
+					Category =row.Field<string>(Fields.Category),
+					ConsumerName = row.Field<string>(Fields.Consumer),
+					BaseVehicle = row.ParseBoolean(Fields.BaseVehicle),
+					Bonus = row.ParseBoolean(Fields.Bonus),
+					PhaseIdleTractionOn = row.ParseDouble(Fields.PhaseIdle),
+					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>();
+					}
+				}
+				retVal.Add(consumer);
 			}
 
 			return new ElectricalConsumerList( retVal);
@@ -59,10 +63,11 @@ namespace TUGraz.VectoCore.InputData.Reader.ComponentData
 			public const string Category = "Category";
 			public const string Consumer = "Consumer";
 			public const string BaseVehicle = "Base Vehicle";
-			public const string NominalAmps = "Nominal Amps";
-			public const string PhaseIdle = "PhaseIdle/TractionOn";
-			public const string NuminVehicle = "Num in Vehicle";
-			public const string Info = "Info";
+			public const string Bonus = "Bonus";
+			//public const string NominalAmps = "Nominal Amps";
+			public const string PhaseIdle = "PhaseIdle";
+			public const string NuminVehicle = "Number in Vehicle";
+			//public const string Info = "Info";
 
 		}
 	}
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs
index 10ef34f234..8862cbd162 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterPrimaryBus.cs
@@ -71,29 +71,59 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 
 		#endregion
 
-		public IAuxiliaryConfig CreateBusAuxiliariesData(IVehicleDeclarationInputData vehicleData, VectoRunData runData)
+		public IAuxiliaryConfig CreateBusAuxiliariesData(Mission mission, IVehicleDeclarationInputData vehicleData, VectoRunData runData)
 		{
-			var retVal = new AuxiliaryConfig();
+			var actuations = DeclarationData.BusAuxiliaries.ActuationsMap.Lookup(runData.Mission.MissionType);
+
+			var retVal = new AuxiliaryConfig {
+				InputData = vehicleData.Components.BusAuxiliaries,
+				ElectricalUserInputsConfig = GetElectricalUserConfig(mission, vehicleData, actuations),
+				PneumaticUserInputsConfig = GetPneumaticUserConfig(vehicleData),
+				PneumaticAuxillariesConfig = CreatePneumaticAuxConfig(runData.Retarder.Type),
+				Actuations = actuations,
+				SSMInputs = CreateSSMModelParameters(runData.VehicleData, FuelData.Diesel),
+				VehicleData = runData.VehicleData,
+				FuelMap = runData.EngineData.Fuels.First().ConsumptionMap
+			};
 
-			retVal.InputData = vehicleData.Components.BusAuxiliaries;
-			retVal.ElectricalUserInputsConfig = GetElectricalUserConfig(vehicleData);
-			retVal.PneumaticUserInputsConfig = GetPneumaticUserConfig(vehicleData);
-			retVal.PneumaticAuxillariesConfig = CreatePneumaticAuxConfig(runData.Retarder.Type);
-			retVal.Actuations = DeclarationData.BusAuxiliaries.ActuationsMap.Lookup(runData.Mission.MissionType);
-			retVal.SSMInputs = CreateSSMModelParameters(runData.VehicleData, FuelData.Diesel);
-			retVal.VehicleData = runData.VehicleData;
-			retVal.FuelMap = runData.EngineData.Fuels.First().ConsumptionMap;
 
 
 			return retVal;
 		}
 
-		private IElectricsUserInputsConfig GetElectricalUserConfig(IVehicleDeclarationInputData vehicleData)
+		private IElectricsUserInputsConfig GetElectricalUserConfig(Mission mission, IVehicleDeclarationInputData vehicleData, IActuations actuations)
 		{
-			//throw new NotImplementedException();
+			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 ==
+								ConsumerTechnology.Electrically;
+			foreach (var consumer in DeclarationData.BusAuxiliaries.DefaultElectricConsumerList.Items) {
+				var nbr = CalcNumberInVehicle(consumer.NumberInActualVehicle, mission);
+				var dutyCycle = electricDoors && consumer.ConsumerName.Equals(
+									Constants.BusAuxiliaries.ElectricalConsumers.DoorsPerVehicleConsumer,
+									StringComparison.CurrentCultureIgnoreCase)
+					? doorDutyCycleFraction
+					: consumer.PhaseIdleTractionOn;
+
+				var current = consumer.NominalCurrent(mission.MissionType) * dutyCycle * nbr;
+				if (consumer.Bonus && !VehicleHasConsumer(consumer.ConsumerName, vehicleData.Components.BusAuxiliaries)) {
+					current = 0.SI<Ampere>();
+				}
+
+				avgInclBase += current;
+				if (!consumer.BaseVehicle) {
+					avgWithoutBase += current;
+				}
+			}
+
+
 			return new ElectricsUserInputsConfig() {
 				SmartElectrical = false,
-				ElectricalConsumers = new ElectricalConsumerList(new List<IElectricalConsumer>()),
+				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>()),
@@ -103,6 +133,27 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 			};
 		}
 
+		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;
+			}
+		}
+
+		private double CalcNumberInVehicle(string nbr, Mission mission)
+		{
+			if ("f_IntLight(L_CoC)".Equals(nbr, StringComparison.InvariantCultureIgnoreCase)) {
+				return DeclarationData.BusAuxiliaries.CalculateLengthInteriorLights(
+					mission.VehicleLength, mission.DoubleDecker, mission.FloorType, mission.NumberPassengersLowerDeck).Value();
+			}
+			return nbr.ToDouble();
+		}
+
 		private IPneumaticUserInputsConfig GetPneumaticUserConfig(IVehicleDeclarationInputData vehicleData)
 		{
 			//throw new NotImplementedException();
diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeBusVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeBusVectoRunDataFactory.cs
index 314bec8f94..570e98ad24 100644
--- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeBusVectoRunDataFactory.cs
+++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeBusVectoRunDataFactory.cs
@@ -109,7 +109,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl {
 			};
 			simulationRunData.EngineData.FuelMode = modeIdx;
 			simulationRunData.VehicleData.VehicleClass = _segment.VehicleClass;
-			simulationRunData.BusAuxiliaries = _dao.CreateBusAuxiliariesData(InputDataProvider.JobInputData.Vehicle, simulationRunData);
+			simulationRunData.BusAuxiliaries = _dao.CreateBusAuxiliariesData(mission, InputDataProvider.JobInputData.Vehicle, simulationRunData);
 			return simulationRunData;
 		}
 	}
diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/AuxiliaryConfig.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/AuxiliaryConfig.cs
index 9b9a2143f9..37797988af 100644
--- a/VectoCore/VectoCore/Models/BusAuxiliaries/AuxiliaryConfig.cs
+++ b/VectoCore/VectoCore/Models/BusAuxiliaries/AuxiliaryConfig.cs
@@ -62,28 +62,14 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries {
 				return false;
 			}
 
-			// Consumer list
-			if (ElectricalUserInputsConfig.ElectricalConsumers.Items.Count !=
-				other.ElectricalUserInputsConfig.ElectricalConsumers.Items.Count) {
-				return false;
-			}
-
-			int i;
-			for (i = 0; i < ElectricalUserInputsConfig.ElectricalConsumers.Items.Count; i++) {
-				IElectricalConsumer thisConsumer, otherConsumer;
-				thisConsumer = ElectricalUserInputsConfig.ElectricalConsumers.Items[i];
-				otherConsumer = other.ElectricalUserInputsConfig.ElectricalConsumers.Items[i];
-
-				if (
-					//thisConsumer.AvgConsumptionAmps != otherConsumer.AvgConsumptionAmps ||
-					thisConsumer.BaseVehicle != otherConsumer.BaseVehicle || thisConsumer.Category != otherConsumer.Category ||
-					thisConsumer.ConsumerName != otherConsumer.ConsumerName ||
-					thisConsumer.NominalConsumptionAmps != otherConsumer.NominalConsumptionAmps ||
-					thisConsumer.NumberInActualVehicle != otherConsumer.NumberInActualVehicle ||
-					thisConsumer.PhaseIdle_TractionOn != otherConsumer.PhaseIdle_TractionOn) 
-				{
-					return false;
-				}
+			if (ElectricalUserInputsConfig.AverageCurrentDemandInclBaseLoad !=
+				other.ElectricalUserInputsConfig.AverageCurrentDemandInclBaseLoad) {
+				return false;
+			}
+
+			if (ElectricalUserInputsConfig.AverageCurrentDemandWithoutBaseLoad !=
+				other.ElectricalUserInputsConfig.AverageCurrentDemandWithoutBaseLoad) {
+				return false;
 			}
 
 			// PowerNetVoltage
diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/ElectricalConsumer.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/ElectricalConsumer.cs
index 93bb5b5dc1..f9d0dad651 100644
--- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/ElectricalConsumer.cs
+++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/ElectricalConsumer.cs
@@ -1,6 +1,9 @@
 using System;
+using System.Collections.Generic;
 using System.ComponentModel;
 using TUGraz.VectoCommon.BusAuxiliaries;
+using TUGraz.VectoCommon.Exceptions;
+using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Configuration;
 using TUGraz.VectoCore.Models.BusAuxiliaries.Interfaces.DownstreamModules.Electrics;
@@ -22,38 +25,13 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electric
 	/// 	''' Described a consumer of Alternator electrical power
 	/// 	''' </summary>
 	/// 	''' <remarks></remarks>
-	public class ElectricalConsumer : IElectricalConsumer
+	public class ElectricalConsumer // : IElectricalConsumer
 	{
 		// Fields
-		private bool _BaseVehicle;
-
-		private string _Category;
-		private string _ConsumerName;
-		private Ampere _NominalConsumptionAmps;
-		private int _NumberInActualVehicle;
-		private double _PhaseIdle_TractionOn;
-		private Volt _PowerNetVoltage;
-		private string _Info;
-
-		// Constructor
-		public ElectricalConsumer(
-			bool baseVehicle, string category, string consumerName, Ampere nominalConsumptionAmps, double phaseIdleTractionOn,
-			Volt powerNetVoltage, int numberInVehicle, string info)
-		{
-			// Illegal Value Check.
-			ValidateInput(category, consumerName, nominalConsumptionAmps, phaseIdleTractionOn, powerNetVoltage, numberInVehicle);
-
-			// Good, now assign.
-			BaseVehicle = baseVehicle;
-			Category = category;
-			ConsumerName = consumerName;
-			NominalConsumptionAmps = nominalConsumptionAmps;
-			PhaseIdle_TractionOn = phaseIdleTractionOn;
-			PowerNetVoltage = powerNetVoltage;
-			NumberInActualVehicle = numberInVehicle;
-			Info = info;
-			
-		}
+
+		//private Volt _PowerNetVoltage;
+		private readonly Dictionary<MissionType, Ampere> _missions = new Dictionary<MissionType, Ampere>();
+
 
 		protected void ValidateInput(
 			string category, string consumerName, Ampere nominalConsumptionAmps, double phaseIdleTractionOn, Volt powerNetVoltage,
@@ -96,111 +74,78 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electric
 
 
 		// Properties
-		public bool BaseVehicle
-		{
-			get { return _BaseVehicle; }
-			set {
-				_BaseVehicle = value;
-				NotifyPropertyChanged("BaseVehicle");
-			}
-		}
-
-		public string Category
-		{
-			get { return _Category; }
-			set {
-				_Category = value;
-				NotifyPropertyChanged("Category");
-			}
-		}
 
-		public string ConsumerName
-		{
-			get { return _ConsumerName; }
-			set {
-				_ConsumerName = value;
-				NotifyPropertyChanged("ConsumerName");
-			}
-		}
+		public bool BaseVehicle { get; set; }
 
-		public Ampere NominalConsumptionAmps
-		{
-			get { return _NominalConsumptionAmps; }
-			set {
-				_NominalConsumptionAmps = value;
-				NotifyPropertyChanged("NominalConsumptionAmps");
-			}
-		}
-
-		public int NumberInActualVehicle
-		{
-			get { return _NumberInActualVehicle; }
-			set {
-				_NumberInActualVehicle = value;
-				NotifyPropertyChanged("NumberInActualVehicle");
-			}
-		}
+		public string Category { get; set; }
 
-		public double PhaseIdle_TractionOn
-		{
-			get { return _PhaseIdle_TractionOn; }
-			set {
-				_PhaseIdle_TractionOn = value;
-				NotifyPropertyChanged("PhaseIdle_TractionOn");
-			}
-		}
+		public string ConsumerName { get; set; }
 
-		public Volt PowerNetVoltage
-		{
-			get { return _PowerNetVoltage; }
-			set {
-				_PowerNetVoltage = value;
-				NotifyPropertyChanged("PowerNetVoltage");
-			}
-		}
+		public string NumberInActualVehicle { get; set; }
 
-		public string Info
-		{
-			get { return _Info; }
-			set {
-				_Info = value;
-				NotifyPropertyChanged("Info");
-			}
-		}
+		public double PhaseIdleTractionOn { get; set; }
+		public bool Bonus { get; set; }
 
+		//public Volt PowerNetVoltage
+		//{
+		//	get { return _PowerNetVoltage; }
+		//	set {
+		//		_PowerNetVoltage = value;
+		//		NotifyPropertyChanged("PowerNetVoltage");
+		//	}
+		//}
 
+		
 		// Public class outputs
-		public Ampere TotalAvgConumptionAmps
-		{
-			get { return NominalConsumptionAmps * (NumberInActualVehicle * PhaseIdle_TractionOn); }
-		}
+		//public Ampere TotalAvgConumptionAmps
+		//{
+		//	get { return NominalConsumptionAmps * (NumberInActualVehicle * PhaseIdle_TractionOn); }
+		//}
 
 		
 
 		// Comparison Overrides
-		public override bool Equals(object obj)
-		{
-			if (obj == null || GetType() != obj.GetType()) {
-				return false;
-			}
+		//public override bool Equals(object obj)
+		//{
+		//	if (obj == null || GetType() != obj.GetType()) {
+		//		return false;
+		//	}
 
-			var other = (IElectricalConsumer)obj;
+		//	var other = (IElectricalConsumer)obj;
 
-			return ConsumerName == other.ConsumerName;
-		}
+		//	return ConsumerName == other.ConsumerName;
+		//}
 
-		[System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage]
-		public override int GetHashCode()
-		{
-			return 0;
-		}
+		//[System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage]
+		//public override int GetHashCode()
+		//{
+		//	return 0;
+		//}
 
 
-		public event PropertyChangedEventHandler PropertyChanged;
+		//public event PropertyChangedEventHandler PropertyChanged;
 
-		private void NotifyPropertyChanged(string p)
+		//private void NotifyPropertyChanged(string p)
+		//{
+		//	PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(p));
+		//}
+
+		public Ampere this[MissionType mission]
 		{
-			PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(p));
+			get {
+				if (_missions.ContainsKey(mission)) {
+					return _missions[mission];
+				}
+
+				return 0.SI<Ampere>();
+			}
+			set {
+				if (_missions.ContainsKey(mission)) {
+					throw new VectoException("key {0} already exists!", mission.ToString());
+				}
+
+				_missions[mission] = value;
+			}
 		}
 	}
 }
diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/ElectricalConsumerList.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/ElectricalConsumerList.cs
index 04f5963463..1a1a2b6346 100644
--- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/ElectricalConsumerList.cs
+++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/ElectricalConsumerList.cs
@@ -15,20 +15,20 @@ using TUGraz.VectoCommon.BusAuxiliaries;
 
 namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electrics
 {
-	public class ElectricalConsumerList : IElectricalConsumerList
+	public class ElectricalConsumerList // : IElectricalConsumerList
 	{
-		private readonly List<IElectricalConsumer> _items;
+		private readonly List<ElectricalConsumer> _items;
 		//private Volt _powernetVoltage;
 		
 		// Constructor
-		public ElectricalConsumerList(List<IElectricalConsumer> consumer)
+		public ElectricalConsumerList(List<ElectricalConsumer> consumer)
 		{
 			_items = consumer;
 		}
 
 		// Interface implementation
 		
-		public IReadOnlyList<IElectricalConsumer> Items
+		public IReadOnlyList<ElectricalConsumer> Items
 		{
 			get {
 				return _items;
diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/ElectricsUserInputsConfig.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/ElectricsUserInputsConfig.cs
index 56213464a3..82086e36c6 100644
--- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/ElectricsUserInputsConfig.cs
+++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/ElectricsUserInputsConfig.cs
@@ -21,8 +21,6 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electric
 		public IAlternatorMap AlternatorMap { get; set; }
 		public double AlternatorGearEfficiency { get; set; }
 
-		public IElectricalConsumerList ElectricalConsumers { get; set; }
-
 		public Second DoorActuationTimeSecond { get; set; }
 		public double StoredEnergyEfficiency { get; set; }
 
@@ -32,5 +30,10 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electric
 
 		public bool SmartElectrical { get; set; }
 
+		public Ampere AverageCurrentDemandInclBaseLoad { get; set; }
+		
+		public Ampere AverageCurrentDemandWithoutBaseLoad { get; set; }
+
 	}
+
 }
diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/M00Impl.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/M00Impl.cs
index 5b170ce1df..396db0c7e3 100644
--- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/M00Impl.cs
+++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/M00Impl.cs
@@ -56,7 +56,7 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electric
 		public double AlternatorsEfficiency
 		{
 			get {
-				var baseCurrentDemandAmps = _m0_1.GetTotalAverageDemandAmpsIncludingBaseLoad; // _electricalConsumersList.GetTotalAverageDemandAmps(false);
+				var baseCurrentDemandAmps = _m0_1.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 aa566df23b..3f1cc9c919 100644
--- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/M02Impl.cs
+++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/M02Impl.cs
@@ -40,7 +40,7 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electric
 
 		public Watt GetAveragePowerAtCrankFromElectrics()
 		{
-			var electricalPowerDemandsWatts = _powerNetVoltage * _m0_1.GetTotalAverageDemandAmpsIncludingBaseLoad;
+			var electricalPowerDemandsWatts = _powerNetVoltage * _m0_1.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
index 3dbccc7986..7651b07a43 100644
--- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/M0_1Impl.cs
+++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/M0_1Impl.cs
@@ -9,40 +9,16 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electric
 {
 	public class M0_1Impl : IM0_1_AverageElectricLoadDemand
 	{
-		protected IElectricalConsumerList Consumer;
+		
+		public M0_1Impl(IAuxiliaryConfig config)
+		{
 
-
-		public M0_1Impl(IAuxiliaryConfig config) { 
-			Consumer = config.ElectricalUserInputsConfig.ElectricalConsumers;
-			
-			var doorDutyCycleFraction = (config.Actuations.ParkBrakeAndDoors * Constants.BusAuxiliaries.ElectricalConsumers.DoorActuationTimeSecond) / config.Actuations.CycleTime; ;
-
-			GetTotalAverageDemandAmpsIncludingBaseLoad = Consumer.Items.Sum(
-				x => x.ConsumerName == Constants.BusAuxiliaries.ElectricalConsumers.DoorsPerVehicleConsumer
-					? x.NumberInActualVehicle * x.NominalConsumptionAmps * doorDutyCycleFraction
-					: x.TotalAvgConumptionAmps);
-
-			GetTotalAverageDemandAmpsWithoutBaseLoad = Consumer.Items.Where(x => !x.BaseVehicle).Sum(
-				x => x.ConsumerName == Constants.BusAuxiliaries.ElectricalConsumers.DoorsPerVehicleConsumer
-					? x.NumberInActualVehicle * x.NominalConsumptionAmps * doorDutyCycleFraction
-					: x.TotalAvgConumptionAmps);
-
-			// just for debugging linq expression above
-			var sum = 0.0;
-			foreach (var x in Consumer.Items) {
-				if (x.BaseVehicle) {
-					continue;
-				}
-				var current = x.ConsumerName == Constants.BusAuxiliaries.ElectricalConsumers.DoorsPerVehicleConsumer
-					? x.NumberInActualVehicle * x.NominalConsumptionAmps * doorDutyCycleFraction
-					: x.TotalAvgConumptionAmps;
-				Debug.WriteLine(current);
-				sum += current.Value();
-			}
+			TotalAverageDemandAmpsIncludingBaseLoad = config.ElectricalUserInputsConfig.AverageCurrentDemandInclBaseLoad;
+			TotalAverageDemandAmpsWithoutBaseLoad = config.ElectricalUserInputsConfig.AverageCurrentDemandWithoutBaseLoad;
 		}
 
-		public Ampere GetTotalAverageDemandAmpsIncludingBaseLoad { get; }
+		public Ampere TotalAverageDemandAmpsIncludingBaseLoad { get; }
 
-		public Ampere GetTotalAverageDemandAmpsWithoutBaseLoad { 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 97637642be..40ade8dbf0 100644
--- a/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/M0_5Impl.cs
+++ b/VectoCore/VectoCore/Models/BusAuxiliaries/DownstreamModules/Impl/Electrics/M0_5Impl.cs
@@ -61,7 +61,7 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electric
 
 		private Ampere HvacPlusNonBaseCurrents()
 		{
-			return _m0.GetHVACElectricalCurrentDemand + _m0_1.GetTotalAverageDemandAmpsWithoutBaseLoad;
+			return _m0.GetHVACElectricalCurrentDemand + _m0_1.TotalAverageDemandAmpsWithoutBaseLoad;
 		}
 
 		public Ampere SmartIdleCurrent
diff --git a/VectoCore/VectoCore/Models/BusAuxiliaries/Interfaces/DownstreamModules/IM0_1_AverageElectricLoadDemand.cs b/VectoCore/VectoCore/Models/BusAuxiliaries/Interfaces/DownstreamModules/IM0_1_AverageElectricLoadDemand.cs
index c6834f82e4..761c3cf65f 100644
--- a/VectoCore/VectoCore/Models/BusAuxiliaries/Interfaces/DownstreamModules/IM0_1_AverageElectricLoadDemand.cs
+++ b/VectoCore/VectoCore/Models/BusAuxiliaries/Interfaces/DownstreamModules/IM0_1_AverageElectricLoadDemand.cs
@@ -4,7 +4,7 @@ namespace TUGraz.VectoCore.Models.BusAuxiliaries.Interfaces.DownstreamModules
 {
 	public interface IM0_1_AverageElectricLoadDemand
 	{
-		Ampere GetTotalAverageDemandAmpsIncludingBaseLoad { get; }
-		Ampere GetTotalAverageDemandAmpsWithoutBaseLoad { get; }
+		Ampere TotalAverageDemandAmpsIncludingBaseLoad { get; }
+		Ampere TotalAverageDemandAmpsWithoutBaseLoad { get; }
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs
index f10f94bfe7..d5d6635dec 100644
--- a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs
+++ b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs
@@ -43,6 +43,7 @@ using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Configuration;
 using TUGraz.VectoCore.InputData.FileIO.JSON;
 using TUGraz.VectoCore.InputData.Reader.ComponentData;
+using TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Electrics;
 using TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC;
 using TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.Pneumatics;
 using TUGraz.VectoCore.Models.SimulationComponent.Data;
@@ -139,7 +140,7 @@ namespace TUGraz.VectoCore.Models.Declaration
 			private static IEnvironmentalConditionsMap envMap = null;
 
 			//private static AuxiliaryConfig busAuxConfig = null;
-			private static IElectricalConsumerList elUserConfig;
+			private static ElectricalConsumerList elUserConfig;
 
 			private static IActuationsMap actuationsMap;
 			//private static PneumaticsAuxilliariesConfig pneumaticAuxConfig;
@@ -171,7 +172,7 @@ namespace TUGraz.VectoCore.Models.Declaration
 				}
 			}
 
-			public static IElectricalConsumerList DefaultElectricConsumerList
+			public static ElectricalConsumerList DefaultElectricConsumerList
 			{
 				get {
 					return elUserConfig ?? (elUserConfig = ElectricConsumerReader.ReadStream(
@@ -209,6 +210,21 @@ namespace TUGraz.VectoCore.Models.Declaration
 				}
 			}
 
+			public static Meter CalculateLengthInteriorLights(Meter vehicleLength, bool doubleDecker, FloorType floorType, int numPassLowFloor)
+			{
+				if (floorType == FloorType.LowFloor) {
+					return doubleDecker ? 2 * vehicleLength : vehicleLength;
+				}
+
+				if (floorType == FloorType.HighFloor) {
+					if (doubleDecker) {
+						return numPassLowFloor > 6 ? 1.5 * vehicleLength : vehicleLength + 2.4.SI<Meter>();
+					}
+
+					return vehicleLength;
+				}
+				throw new VectoException("Internal Length for floorType {0} {1} not defined", floorType.ToString(), doubleDecker ? "DD" : "SD");
+			}
 		}
 
 		public static class Driver
diff --git a/VectoCore/VectoCore/OutputData/FileIO/BusAuxWriter.cs b/VectoCore/VectoCore/OutputData/FileIO/BusAuxWriter.cs
index 7723eb70f4..bb20ac474f 100644
--- a/VectoCore/VectoCore/OutputData/FileIO/BusAuxWriter.cs
+++ b/VectoCore/VectoCore/OutputData/FileIO/BusAuxWriter.cs
@@ -62,23 +62,10 @@ namespace TUGraz.VectoCore.OutputData.FileIO
 
 			// Electrical Consumer list
 
-			var elConsumers = new List<object>();
-			foreach (var entry in electricalUserCfg.ElectricalConsumers.Items) {
-				var newConsumer = new Dictionary<string, object>();
-
-				newConsumer["BaseVehicle"] = entry.BaseVehicle;
-				newConsumer["Category"] = entry.Category;
-				newConsumer["ConsumerName"] = entry.ConsumerName;
-				newConsumer["NominalConsumptionAmps"] = entry.NominalConsumptionAmps.Value();
-				newConsumer["PhaseIdle_TractionOn"] = entry.PhaseIdle_TractionOn;
-				newConsumer["PowerNetVoltage"] = entry.PowerNetVoltage.Value();
-				newConsumer["NumberInActualVehicle"] = entry.NumberInActualVehicle;
-				newConsumer["Info"] = entry.Info;
-
-				elConsumers.Add(newConsumer);
-			}
-
-			elData["ElectricalConsumers"] = elConsumers;
+			elData["ElectricalConsumers"] = new Dictionary<string, object>() {
+				{"AverageCurrentDemandInclBaseLoad", electricalUserCfg.AverageCurrentDemandInclBaseLoad.Value() },
+				{"AverageCurrentDemandWithoutBaseLoad", electricalUserCfg.AverageCurrentDemandWithoutBaseLoad.Value() }
+			};
 
 			// PowerNetVoltage
 			elData["PowerNetVoltage"] = electricalUserCfg.PowerNetVoltage.Value();
diff --git a/VectoCore/VectoCore/Resources/Declaration/Buses/ElectricConsumers.csv b/VectoCore/VectoCore/Resources/Declaration/Buses/ElectricConsumers.csv
index 5915d075e2..27b5b4b128 100644
--- a/VectoCore/VectoCore/Resources/Declaration/Buses/ElectricConsumers.csv
+++ b/VectoCore/VectoCore/Resources/Declaration/Buses/ElectricConsumers.csv
@@ -1,21 +1,16 @@
-Category                    , Consumer                                                , Base Vehicle , Nominal Amps , PhaseIdle/TractionOn , Num in Vehicle , Info
-Veh Electronics & Engine    , Controllers Valves etc.                                 , 1            , 25.0         , 1.0                  , 1              ,
-Doors                       , Doors per vehicle                                       , 0            , 3.0          , 0.0                  , 3              ,
-Vehicle basic equipment     , Radio City                                              , 0            , 2.0          , 0.8                  , 1              ,
-Vehicle basic equipment     , Radio Intercity                                         , 0            , 5.0          , 0.8                  , 0              ,
-Vehicle basic equipment     , Radio/Audio Tourism                                     , 0            , 9.0          , 0.8                  , 0              ,
-Vehicle basic equipment     , Fridge                                                  , 0            , 4.0          , 0.5                  , 0              ,
-Vehicle basic equipment     , Kitchen Standard                                        , 0            , 67.0         , 0.05                 , 0              ,
-Vehicle basic equipment     , Interior lights City/ Intercity + doorlights            , 0            , 1.0          , 0.7                  , 12             , 1/m vehicle length
-Vehicle basic equipment     , LED Interior lights ceiling city/Intercity + doorlights , 0            , 0.6          , 0.7                  , 0              , 1/m vehicle length
-Vehicle basic equipment     , Interior lights Tourism + reading                       , 0            , 1.1          , 0.7                  , 0              , 1/m vehicle length
-Vehicle basic equipment     , LED Interior lights ceiling Tourism + reading           , 0            , 0.66         , 0.7                  , 0              , 1/m vehicle length
-Customer Specific Equipment , External Displays Font/Side/Rear                        , 0            , 2.65         , 1.0                  , 4              ,
-Customer Specific Equipment , Internal display per unit                               , 0            , 1.06         , 1.0                  , 1              , (front side rear)
-Customer Specific Equipment , CityBus Ref EBSF Table4 Devices ITS No Displays         , 0            , 9.3          , 1.0                  , 1              ,
-Lights                      , Exterior Lights BULB                                    , 0            , 7.4          , 1.0                  , 1              ,
-Lights                      , Day running lights LED bonus                            , 0            , -0.723       , 1.0                  , 1              ,
-# Lights                    , Antifog rear lights LED bonus                           , 0            , -0.17        , 1.0                  , 1              , @quam: not mentioned input parameters
-Lights                      , Position lights LED bonus                               , 0            , -1.2         , 1.0                  , 1              ,
-Lights                      , Direction lights LED bonus                              , 0            , -0.3         , 1.0                  , 1              ,
-Lights                      , Brake Lights LED bonus                                  , 0            , -1.2         , 1.0                  , 1              ,
\ No newline at end of file
+Category                  , Consumer                                         , Base Vehicle , Bonus , Heavy Urban , Urban , Suburban , Interurban , Coach , PhaseIdle , Number in Vehicle , Comment
+Veh. Electronics & Engine , controllers & valves                             , 1            , 0     , 25.0        , 25.0  , 25.0     , 25.0       , 25.0  , 1.0       , 1.0               ,
+Vehicle basic equipment   , Radio                                            , 0            , 0     , 2.0         , 2.0   , 2.0      , 5.0        , 9.0   , 0.8       , 1.0               ,
+Vehicle basic equipment   , Fridge                                           , 0            , 0     , 4.0         , 4.0   , 4.0      , 4.0        , 4.0   , 0.5       , 0.0               ,
+Vehicle basic equipment   , Kitchen Standard                                 , 0            , 0     , 67.0        , 67.0  , 67.0     , 67.0       , 67.0  , 0.05      , 0.0               ,
+Vehicle basic equipment   , Interior lights per metre                        , 0            , 0     , 1.0         , 1.0   , 1.0      , 1.0        , 1.1   , 0.7       , f_IntLight(L_CoC) , per meter vehicle length
+Vehicle basic equipment   , Interior lights LED bonus                        , 0            , 1     , -0.4        , -0.4  , -0.4     , -0.4       , -0.4  , 0.7       , f_IntLight(L_CoC) , per meter vehicle length
+Customer specific equipm. , External displays per unit (front / rear / side) , 0            , 0     , 2.7         , 2.7   , 2.7      , 2.7        , 2.7   , 1.0       , 2.0               ,
+Customer specific equipm. , Internal displays per unit                       , 0            , 0     , 1.1         , 1.1   , 1.1      , 1.1        , 1.1   , 1.0       , 0.0               ,
+Customer specific equipm. , Citybus customer specific value (EBSF)           , 0            , 0     , 9.3         , 9.3   , 9.3      , 0.0        , 0.0   , 1.0       , 1.0               ,
+Lights                    , Exterior lights (bulb)                           , 1            , 0     , 7.4         , 7.4   , 7.4      , 7.4        , 7.4   , 1.0       , 1.0               ,
+Lights                    , Day running lights LED bonus                     , 0            , 1     , -0.7        , -0.7  , -0.7     , -0.7       , -0.7  , 1.0       , 0.0               ,
+Lights                    , Position lights LED bonus                        , 0            , 1     , -1.2        , -1.2  , -1.2     , -1.2       , -1.2  , 1.0       , 0.0               ,
+Lights                    , Brake lights LED bonus                           , 0            , 1     , -1.2        , -1.2  , -1.2     , -1.2       , -1.2  , 1.0       , 0.0               ,
+Lights                    , Headlights LED bonus                             , 0            , 1     , -1.5        , -1.5  , -1.5     , -1.5       , -1.5  , 1.0       , 1.0               ,
+Doors                     , Doors per vehicle                                , 0            , 0     , 3.0         , 3.0   , 3.0      , 3.0        , 3.0   , 0.0       , 2.0               ,
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Resources/Declaration/HeavyBusSegmentationTable.csv b/VectoCore/VectoCore/Resources/Declaration/HeavyBusSegmentationTable.csv
index cfe1d6fb24..8471e5e9e4 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 , single/double deck , 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 ,
 ## Heavy Bus Primary Vehicles
-P31SD     , 1                , HeavyBus         , PB41           , -           , 2         , 7.4       , 999       , single             , 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       , double             , 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       , single             , 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       , double             , 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                ,
+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                ,
 ##
-P33SD     , 1                , HeavyBus         , PB42           , 0           , 3         , 7.4       , 999       , single             , 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       , double             , 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       , single             , 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       , double             , 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                ,
+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              ,
 #
-P35SD     , 1                , HeavyBus         , PB43           , 1           , 3         , 7.4       , 999       , single             , 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       , double             , 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       , single             , 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       , double             , 100         ,      , Bus.vacc   , CoachBus              , 5.4           , 24.3/35.2/40.5      , 2.55  , 18     , 3.9    , 12000    , 33                  , 46                  ,             ,       ,          , 3          , 2     ,                   ,                   ,        ,                  ,
-##
-P37SD     , 1                , HeavyBus         , PB44           , 0           , 4         , 7.4       , 999       , single             , 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       , double             , 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       , single             , 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       , double             , 100         ,      , Bus.vacc   , CoachBus              , 5.4           , 21.4/21.4/35.8/21.4 , 2.55  , 15     , 3.9    , 14000    , 39                  , 55                  ,             ,       ,          , 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                ,
+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     ,                   ,                   ,        ,                  ,
+##        ,
+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     ,                   ,                   ,        ,                  ,
 #
-P39SD     , 1                , HeavyBus         , PB45           , 1           , 4         , 7.4       , 999       , single             , 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       , double             , 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       , single             , 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       , double             , 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                ,
+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     ,                   ,                   ,        ,                  ,
-- 
GitLab