diff --git a/VECTOAux/VectoAuxiliaries/Electrics/ElectricsUserInputsConfig.vb b/VECTOAux/VectoAuxiliaries/Electrics/ElectricsUserInputsConfig.vb
new file mode 100644
index 0000000000000000000000000000000000000000..e09b25a7d63cb4d3d0c174ba0eb3b954521d97e8
--- /dev/null
+++ b/VECTOAux/VectoAuxiliaries/Electrics/ElectricsUserInputsConfig.vb
@@ -0,0 +1,26 @@
+Imports VectoAuxiliaries.Electrics
+Namespace Electrics
+
+Public Class ElectricsUserInputsConfig
+Implements IElectricsUserInputsConfig
+
+
+Public Property PowerNetVoltage As Single Implements IElectricsUserInputsConfig.PowerNetVoltage
+Public Property AlternatorMap As String Implements IElectricsUserInputsConfig.AlternatorMap
+Public Property AlternatorGearEfficiency As Single Implements IElectricsUserInputsConfig.AlternatorGearEfficiency
+Public Property ElectricalConsumers As IElectricalConsumerList Implements IElectricsUserInputsConfig.ElectricalConsumers
+Public Property DoorActuationTimeSecond As Integer Implements IElectricsUserInputsConfig.DoorActuationTimeSecond
+
+
+Public Property ResultCardIdleAmps As Dictionary(Of Single, Single) Implements IElectricsUserInputsConfig.ResultCardIdleAmps
+Public Property ResultCardTractionAmps As Dictionary(Of Single, Single) Implements IElectricsUserInputsConfig.ResultCardTractionAmps
+Public Property ResultCardOverrunAmps As Dictionary(Of Single, Single) Implements IElectricsUserInputsConfig.ResultCardOverrunAmps
+
+
+
+End Class
+
+End Namespace
+
+
+
diff --git a/VECTOAux/VectoAuxiliaries/Electrics/IElectricsUserInputsConfig.vb b/VECTOAux/VectoAuxiliaries/Electrics/IElectricsUserInputsConfig.vb
new file mode 100644
index 0000000000000000000000000000000000000000..5a44a061dcb20f1ffb56b18f7e7f3487d80bb535
--- /dev/null
+++ b/VECTOAux/VectoAuxiliaries/Electrics/IElectricsUserInputsConfig.vb
@@ -0,0 +1,21 @@
+Imports VectoAuxiliaries.Electrics
+
+Namespace Electrics
+
+Public Interface IElectricsUserInputsConfig
+
+Property PowerNetVoltage As Single
+Property AlternatorMap As String
+Property AlternatorGearEfficiency As Single
+Property ElectricalConsumers As IElectricalConsumerList
+Property DoorActuationTimeSecond As Integer
+
+Property ResultCardIdleAmps As Dictionary(Of Single, Single)
+Property ResultCardTractionAmps As Dictionary(Of Single, Single)
+Property ResultCardOverrunAmps As Dictionary(Of Single, Single)
+
+End Interface
+
+End Namespace
+
+
diff --git a/VECTOAux/VectoAuxiliaries/Electrics/IM0_NonSmart_AlternatorsSetEfficiency.vb b/VECTOAux/VectoAuxiliaries/Electrics/IM0_NonSmart_AlternatorsSetEfficiency.vb
new file mode 100644
index 0000000000000000000000000000000000000000..e911f8e65647882f9a0bb4e69323656edcd8add3
--- /dev/null
+++ b/VECTOAux/VectoAuxiliaries/Electrics/IM0_NonSmart_AlternatorsSetEfficiency.vb
@@ -0,0 +1,8 @@
+Public Interface IM0_NonSmart_AlternatorsSetEfficiency
+
+
+     Function GetHVACElectricalPowerDemandAmps() As Single
+     Function GetEfficiency(crankRPM As Integer, DoorCycleActuationPercentage As Single) As Single
+
+
+End Interface
diff --git a/VECTOAux/VectoAuxiliaries/Electrics/IResultCard.vb b/VECTOAux/VectoAuxiliaries/Electrics/IResultCard.vb
new file mode 100644
index 0000000000000000000000000000000000000000..60bcf230cf178473b34683a5c567415d970664f5
--- /dev/null
+++ b/VECTOAux/VectoAuxiliaries/Electrics/IResultCard.vb
@@ -0,0 +1,12 @@
+Namespace Electrics
+
+Public Interface IResultCard
+
+Function GetSmartCurrentResult(key As Single) As Single
+
+End Interface
+
+
+End Namespace
+
+
diff --git a/VECTOAux/VectoAuxiliaries/Electrics/M0_5_SmartAlternatorSetEfficiency.vb b/VECTOAux/VectoAuxiliaries/Electrics/M0_5_SmartAlternatorSetEfficiency.vb
new file mode 100644
index 0000000000000000000000000000000000000000..b563eeed7bd4ab28f0539450b8e47e7e58757e68
--- /dev/null
+++ b/VECTOAux/VectoAuxiliaries/Electrics/M0_5_SmartAlternatorSetEfficiency.vb
@@ -0,0 +1,11 @@
+
+Namespace Electrics
+
+
+Public Class M0_5_SmartAlternatorSetEfficiency
+
+End Class
+
+End Namespace
+
+
diff --git a/VECTOAux/VectoAuxiliaries/Electrics/AlternatorsEfficiency.vb b/VECTOAux/VectoAuxiliaries/Electrics/M0_NonSmart_AlternatorsSetEfficiency.vb
similarity index 86%
rename from VECTOAux/VectoAuxiliaries/Electrics/AlternatorsEfficiency.vb
rename to VECTOAux/VectoAuxiliaries/Electrics/M0_NonSmart_AlternatorsSetEfficiency.vb
index 7be03502716d809218c5fd126340bc5a9e90f85f..71661d5c0533afd9e22eda69654fcac0e2149ed4 100644
--- a/VECTOAux/VectoAuxiliaries/Electrics/AlternatorsEfficiency.vb
+++ b/VECTOAux/VectoAuxiliaries/Electrics/M0_NonSmart_AlternatorsSetEfficiency.vb
@@ -3,7 +3,8 @@ Imports VectoAuxiliaries.Hvac
 Namespace Electrics
 
 
-Public Class AlternatorsEfficiency
+Public Class M0_NonSmart_AlternatorsSetEfficiency
+ Implements IM0_NonSmart_AlternatorsSetEfficiency
 
  Private _electricalConsumersList As IElectricalConsumerList
  Private _hvacInputs As IHVACInputs
@@ -32,7 +33,9 @@ Public Class AlternatorsEfficiency
 
     End Sub
 
-    Public Function GetEfficiency(crankRPM As Integer, DoorCycleActuationPercentage As Single) As Single
+
+
+    Public Function GetEfficiency(crankRPM As Integer, DoorCycleActuationPercentage As Single) As Single Implements IM0_NonSmart_AlternatorsSetEfficiency.GetEfficiency
 
           'Sanity Check.
           If crankRPM < 1 Then Throw New ArgumentException("CrankRMP must be greater than zero")
@@ -48,7 +51,7 @@ Public Class AlternatorsEfficiency
 
     End Function
 
-   Public Function GetHVACElectricalPowerDemandAmps() As Single
+    Public Function GetHVACElectricalPowerDemandAmps() As Single Implements IM0_NonSmart_AlternatorsSetEfficiency.GetHVACElectricalPowerDemandAmps
 
         Return _hvacMap.GetElectricalDemand(_hvacInputs.Region, _hvacInputs.Season) / _powernetVoltage
 
diff --git a/VECTOAux/VectoAuxiliaries/Electrics/AverageElectricalDemand.vb b/VECTOAux/VectoAuxiliaries/Electrics/M2_AverageElectricalLoadDemand.vb
similarity index 54%
rename from VECTOAux/VectoAuxiliaries/Electrics/AverageElectricalDemand.vb
rename to VECTOAux/VectoAuxiliaries/Electrics/M2_AverageElectricalLoadDemand.vb
index b245dc7e691e692380ee45730ed5f1f29e600f8a..69a6970d7c84ceab154cedb0fd7041e0c3cefad3 100644
--- a/VECTOAux/VectoAuxiliaries/Electrics/AverageElectricalDemand.vb
+++ b/VECTOAux/VectoAuxiliaries/Electrics/M2_AverageElectricalLoadDemand.vb
@@ -1,41 +1,32 @@
 Namespace Electrics
 
-    Public Class AverageElectricalDemand
+    Public Class M2_AverageElectricalLoadDemand
 
         Public _powerNetVoltage As Single = 26.3
+        Private _electricalConsumers As IElectricalConsumerList
+        Private _module0 As IM0_NonSmart_AlternatorsSetEfficiency
+        Private _alternatorPulleyEffiency As Single
 
-        ''' <summary>
-        ''' Alternator Model
-        ''' </summary>
-        ''' <value></value>
-        ''' <returns></returns>
-        'Public ReadOnly Property Alternator() As IAlternator
-        '    Get
-        '        Return _alternator
-        '    End Get
-        'End Property
 
-        Private _electricalConsumers As IElectricalConsumerList
+        Public Sub New(ByVal electricalConsumers As IElectricalConsumerList, m0 As IM0_NonSmart_AlternatorsSetEfficiency, altPulleyEfficiency As Single, powerNetVoltage As Single)
+
+        If electricalConsumers Is Nothing Then Throw New ArgumentException("Electrical Consumer List must be supplied")
+        If m0 Is Nothing Then Throw New ArgumentException("Must supply module 0")
+        If altPulleyEfficiency = 0 OrElse altPulleyEfficiency > 1 Then Throw New ArgumentException("Alternator Gear efficiency out of range.")
+        If powerNetVoltage < ElectricConstants.PowenetVoltageMin OrElse powerNetVoltage > ElectricConstants.PowenetVoltageMax Then
+        Throw New ArgumentException("Powernet Voltage out of known range.")
+        End If
+
 
-        ''' <summary>
-        ''' Creates a new instance of the AverageElectricalDemand class
-        ''' </summary>
-        ''' <param name="alternator">Alternator Models</param>
-        ''' <param name="electricalConsumers">List of Electrical Consumers</param>
-        ''' <remarks></remarks>
-        Public Sub New(ByVal electricalConsumers As IElectricalConsumerList, powerNetVoltage As Single)
             _powerNetVoltage = powerNetVoltage
             _electricalConsumers = electricalConsumers
+            _module0 = m0
+            _alternatorPulleyEffiency = altPulleyEfficiency
+
+
         End Sub
 
-        ''' <summary>
-        ''' Initialised the Alternator Models
-        ''' </summary>
-        ''' <returns></returns>
-        ''' <remarks></remarks>
-        Public Function Initialise() As Boolean
 
-        End Function
 
         ''' <summary>
         ''' Gets the total average power at the alternator for all electrical consumers
@@ -44,7 +35,7 @@
         ''' <remarks></remarks>
         Public Function GetAveragePowerDemandAtAlternator() As Single
 
-            ' Return _electricalConsumers.GetTotalAverageDemandAmps()
+           '  Return _electricalConsumers.GetTotalAverageDemandAmps()
 
             Return 5000 ' TODO:FIX THIS
         End Function
diff --git a/VECTOAux/VectoAuxiliaries/Electrics/ResultCard.vb b/VECTOAux/VectoAuxiliaries/Electrics/ResultCard.vb
new file mode 100644
index 0000000000000000000000000000000000000000..6927ae57018e5d304e0a72ff90f8f692e684727f
--- /dev/null
+++ b/VECTOAux/VectoAuxiliaries/Electrics/ResultCard.vb
@@ -0,0 +1,123 @@
+Imports VectoAuxiliaries.Electrics
+
+Namespace Electrics
+
+
+Public Class ResultCard
+Implements IResultCard
+
+
+Private _results As Dictionary(Of Single, Single)
+
+
+Public Sub New(results As Dictionary(Of Single, Single))
+
+   If results Is Nothing Then Throw New ArgumentException("A dictionary of smart results must be supplied.")
+   If results.Count < 2 Then Throw New ArgumentException("More than two entries are needed to interpolate results")
+  _results = results
+
+End Sub
+
+
+
+
+Public Function GetSmartCurrentResult(key As Single) As Single Implements IResultCard.GetSmartCurrentResult
+
+
+  Return GetOrInterpolate(key)
+
+
+End Function
+
+
+Private Function GetOrInterpolate(key As Single) As Single
+
+Dim pre As Single
+Dim post As Single
+Dim dAmps As Single
+Dim dSmartAmps As Single
+Dim smartAmpsSlope As Single
+Dim smartAmps As Single
+Dim maxKey As Single
+Dim minKey As Single
+
+     maxKey = (From k In _results Select k).Last.Key
+     minKey = (From k In _results Select k).First.Key
+
+
+     'Is on boundary check
+     If _results.ContainsKey(key) Then Return _results(key)
+
+     'Is over map - Extrapolate
+     If key > maxKey Then
+
+            'get the entries before and after the supplied key
+             pre = (From m In _results Order By m.Key Where m.Key < maxKey Select m).Last().Key
+             post = maxKey
+
+            'get the delta values 
+             dAmps = post - pre
+             dSmartAmps = _results(post) - _results(pre)
+
+            'calculate the slopes
+             smartAmpsSlope = dSmartAmps / dAmps
+
+            'calculate the new values
+             smartAmps = ((key - post) * smartAmpsSlope) + _results(post)
+
+             Return smartAmps
+
+     End If
+
+     'Is under map - Extrapolate
+     If key < minKey Then
+
+            'get the entries before and after the supplied key
+            'Post is the first entry and pre is the penultimate to first entry
+             post = minKey
+             pre = (From k In _results Order By k.Key Where k.Key > minKey Select k).First.Key
+
+            'get the delta values 
+             dAmps = post - pre
+             dSmartAmps = _results(post) - _results(pre)
+
+            'calculate the slopes
+             smartAmpsSlope = dSmartAmps / dAmps
+
+            'calculate the new values
+             smartAmps = ((key - post) * smartAmpsSlope) + _results(post)
+
+             Return smartAmps
+     End If
+
+     'Is Inside map - Interpolate
+
+            'get the entries before and after the supplied rpm
+             pre = (From m In _results Where m.Key < key Select m).Last().Key
+             post = (From m In _results Where m.Key > key Select m).First().Key
+
+            'get the delta values for rpm and the map values
+             dAmps = post - pre
+             dSmartAmps = _results(post) - _results(pre)
+
+            'calculate the slopes
+             smartAmpsSlope = dSmartAmps / dAmps
+
+            'calculate the new values
+             smartAmps = ((key - pre) * smartAmpsSlope) + _results(pre)
+
+
+            Return smartAmps
+
+End Function
+
+
+
+
+End Class
+
+
+End Namespace
+
+
+
diff --git a/VECTOAux/VectoAuxiliaries/VectoAuxiliaries.vbproj b/VECTOAux/VectoAuxiliaries/VectoAuxiliaries.vbproj
index 8c44f8a5644e58fd272307aa2865bc80bd5724ec..999d8aeb064ba98d3b356bf02dd3040f65f92869 100644
--- a/VECTOAux/VectoAuxiliaries/VectoAuxiliaries.vbproj
+++ b/VECTOAux/VectoAuxiliaries/VectoAuxiliaries.vbproj
@@ -70,9 +70,15 @@
   </ItemGroup>
   <ItemGroup>
     <Compile Include="Electrics\AlternatorMapValues.vb" />
-    <Compile Include="Electrics\AlternatorsEfficiency.vb" />
+    <Compile Include="Electrics\ElectricsUserInputsConfig.vb" />
+    <Compile Include="Electrics\IElectricsUserInputsConfig.vb" />
+    <Compile Include="Electrics\IResultCard.vb" />
+    <Compile Include="Electrics\M0_5_SmartAlternatorSetEfficiency.vb" />
+    <Compile Include="Electrics\M0_NonSmart_AlternatorsSetEfficiency.vb" />
     <Compile Include="Electrics\ElectricalConsumerList.vb" />
     <Compile Include="Electrics\ElectricConstants.vb" />
+    <Compile Include="Electrics\IM0_NonSmart_AlternatorsSetEfficiency.vb" />
+    <Compile Include="Electrics\ResultCard.vb" />
     <Compile Include="Hvac\HVACInputs.vb" />
     <Compile Include="Electrics\IAlternator.vb" />
     <Compile Include="Electrics\IElectricalConsumerList.vb" />
@@ -83,7 +89,7 @@
     <Compile Include="Pneumatics\AirCompressor.vb" />
     <Compile Include="Electrics\Alternator.vb" />
     <Compile Include="Electrics\AlternatorMap.vb" />
-    <Compile Include="Electrics\AverageElectricalDemand.vb" />
+    <Compile Include="Electrics\M2_AverageElectricalLoadDemand.vb" />
     <Compile Include="Hvac\AverageHVACLoadDemand.vb" />
     <Compile Include="Pneumatics\AveragePneumaticLoadDemand.vb" />
     <Compile Include="Pneumatics\CompressorMap.vb" />
diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/AverageElectricalDemandTests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/AverageElectricalDemandTests.vb
index 3144cff50876fcad107a45a4e9254f6d373f05b2..539d3648ab5c504ffa24b3be6bb6cac0708ba735 100644
--- a/VECTOAux/VectoAuxiliariesTests/UnitTests/AverageElectricalDemandTests.vb
+++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/AverageElectricalDemandTests.vb
@@ -8,30 +8,24 @@ Namespace UnitTests
     Public Class AverageElectricalDemandTests
 
 #Region "Helpers"
-        Private Function GetAverageElectricalDemandInstance() As AverageElectricalDemand
+        Private Function GetAverageElectricalDemandInstance() As M2_AverageElectricalLoadDemand
             Dim alt As IAlternator = New AlternatorMock
-            Dim consumers As List(Of IElectricalConsumer) = New List(Of IElectricalConsumer)()
-            consumers.Add(New ElectricalConsumerMock)
-            consumers.Add(New ElectricalConsumerMock)
-            Return New AverageElectricalDemand(consumers, 26.3)
+            Dim consumers As IElectricalConsumerList = CType(New ElectricalConsumerList(), IElectricalConsumerList)
+
+            Return New M2_AverageElectricalLoadDemand(consumers, 26.3)
         End Function
 #End Region
 
         <Test()>
         Public Sub NewTest()
-            Dim target As AverageElectricalDemand = GetAverageElectricalDemandInstance()
+            Dim target As M2_AverageElectricalLoadDemand = GetAverageElectricalDemandInstance()
             Assert.IsNotNull(target)
         End Sub
 
-        <Test()>
-        Public Sub InitialiseTest()
-            Dim target As AverageElectricalDemand = GetAverageElectricalDemandInstance()
-            Assert.IsTrue(target.Initialise())
-        End Sub
 
         <Test()>
         Public Sub GetElectricalConsumersTest()
-            Dim target As AverageElectricalDemand = GetAverageElectricalDemandInstance()
+            Dim target As M2_AverageElectricalLoadDemand = GetAverageElectricalDemandInstance()
             Assert.Fail()
         End Sub
 
@@ -41,7 +35,7 @@ Namespace UnitTests
             Dim consumers As List(Of IElectricalConsumer) = New List(Of IElectricalConsumer)()
             Dim mock As ElectricalConsumerMock = New ElectricalConsumerMock
             consumers.Add(mock)
-            Dim target As AverageElectricalDemand = New AverageElectricalDemand(consumers, 26.3)
+            Dim target As M2_AverageElectricalLoadDemand = New M2_AverageElectricalLoadDemand(consumers, 26.3)
 
             'Assert.IsTrue(target.ElectricalConsumers.Contains(mock))
             Assert.Fail()
@@ -49,23 +43,10 @@ Namespace UnitTests
         End Sub
 
 
-        <Test()>
-        Public Sub GetAlternatorTest()
-            Dim alt As IAlternator = New AlternatorMock
-            Dim consumers As List(Of IElectricalConsumer) = New List(Of IElectricalConsumer)()
-            Dim mock As ElectricalConsumerMock = New ElectricalConsumerMock
-            consumers.Add(mock)
-            Dim target As AverageElectricalDemand = New AverageElectricalDemand(consumers, 26.3)
-
-            'Assert.AreSame(alt, target.Alternator) TODO: CHECK
-            Assert.Fail()
-        End Sub
-
-
         <Test()>
         Public Sub GetAveragePowerAtAlternatorTest()
 
-            Dim target As AverageElectricalDemand = GetAverageElectricalDemandInstance()
+            Dim target As M2_AverageElectricalLoadDemand = GetAverageElectricalDemandInstance()
             Dim actual As Single = target.GetAveragePowerDemandAtAlternator()
             Assert.AreEqual(actual, 200)
 
@@ -73,7 +54,7 @@ Namespace UnitTests
 
         <Test()>
         Public Sub GetAveragePowerAtCrankTest()
-            Dim target As AverageElectricalDemand = GetAverageElectricalDemandInstance()
+            Dim target As M2_AverageElectricalLoadDemand = GetAverageElectricalDemandInstance()
             Dim expected As Single = 400.0
             Dim actual As Single = target.GetAveragePowerAtCrank(100)
             Assert.AreEqual(expected, actual)
diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/AveragePneumaticLoadDemandTests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/AveragePneumaticLoadDemandTests.vb
index ded141b214dfecfda28820fd44addc944e150c13..4fb73fca51a186d40884ae88ef63a62d157c118d 100644
--- a/VECTOAux/VectoAuxiliariesTests/UnitTests/AveragePneumaticLoadDemandTests.vb
+++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/AveragePneumaticLoadDemandTests.vb
@@ -120,6 +120,29 @@ Namespace UnitTests
 
          End Sub
 
+        'CompressorGearEfficiency = 0.99
+        <Test()>
+         Public Sub AverageLoadValueUsingDefaultAuxValues_AveragePowerAtTheCrank_0_99EFTest()
+
+         initialise()
+
+         _defaultInputConfig.CompressorGearEfficiency = 0.99
+
+            Dim psAuxConfig = CType(New PneumaticsAuxilliariesConfig(True), IPneumaticsAuxilliariesConfig)
+            Dim psActuationsMap = CType(New PneumaticActuationsMAP(_actuationsMapPath), IPneumaticActuationsMAP)
+            Dim psCompressorMap = CType(New CompressorMap(_compressorMapPath), ICompressorMap)
+
+            psCompressorMap.Initialise()
+
+            Dim target As New AveragePneumaticLoadDemand(_defaultInputConfig, psAuxConfig, psActuationsMap, psCompressorMap, _vehicleMassKG, "Urban", _cycleDurationMinutes)
+
+            Dim expected As Single = 0.025780227
+            Dim actual As Single = target.GetAveragePowerDemandAtCrankFromPneumatics()
+
+            Assert.AreEqual(expected, actual)
+
+         End Sub
+
         <Test()>
          Public Sub AverageLoadValueUsingDefaultAuxValues_TotalRequiredAirDeliveryRateTest()
 
@@ -140,22 +163,149 @@ Namespace UnitTests
 
          End Sub
 
+        'SmartRegeneration = False
+        <Test()>
+         Public Sub AverageLoadValueUsingDefaultAuxValues_TotalRequiredAirDeliveryRate_SmartRegenOffTest()
 
-        'CompressorGearEfficiency = 0.99
+         initialise()
 
-        'SmartRegeneration = False
+            Dim psAuxConfig = CType(New PneumaticsAuxilliariesConfig(True), IPneumaticsAuxilliariesConfig)
+            Dim psActuationsMap = CType(New PneumaticActuationsMAP(_actuationsMapPath), IPneumaticActuationsMAP)
+            Dim psCompressorMap = CType(New CompressorMap(_compressorMapPath), ICompressorMap)
+
+            psCompressorMap.Initialise()
+
+            _defaultInputConfig.SmartRegeneration = False
+
+            Dim target As New AveragePneumaticLoadDemand(_defaultInputConfig, psAuxConfig, psActuationsMap, psCompressorMap, _vehicleMassKG, "Urban", _cycleDurationMinutes)
+
+            Dim expected As Single = 8863.295
+            Dim actual As Single = target.TotalAirConsumedPerCycle()
+
+            Assert.AreEqual(expected, actual)
+
+         End Sub
 
         'RetarderBrake = False
+        <Test()>
+         Public Sub AverageLoadValueUsingDefaultAuxValues_TotalRequiredAirDeliveryRate_RetarderBrakeOffTest()
+
+         initialise()
+
+            Dim psAuxConfig = CType(New PneumaticsAuxilliariesConfig(True), IPneumaticsAuxilliariesConfig)
+            Dim psActuationsMap = CType(New PneumaticActuationsMAP(_actuationsMapPath), IPneumaticActuationsMAP)
+            Dim psCompressorMap = CType(New CompressorMap(_compressorMapPath), ICompressorMap)
+
+            psCompressorMap.Initialise()
+
+            _defaultInputConfig.RetarderBrake = False
+
+            Dim target As New AveragePneumaticLoadDemand(_defaultInputConfig, psAuxConfig, psActuationsMap, psCompressorMap, _vehicleMassKG, "Urban", _cycleDurationMinutes)
+
+            Dim expected As Single = 8541.45
+
+            Dim actual As Single = Math.Round(target.TotalAirConsumedPerCycle(), 2)
+
+            Assert.AreEqual(expected, actual)
+
+         End Sub
 
         'KneelingHeightMilimeters = 100
+        <Test()>
+         Public Sub AverageLoadValueUsingDefaultAuxValues_TotalRequiredAirDeliveryRate_Kneeling100mmTest()
+
+         initialise()
+
+            Dim psAuxConfig = CType(New PneumaticsAuxilliariesConfig(True), IPneumaticsAuxilliariesConfig)
+            Dim psActuationsMap = CType(New PneumaticActuationsMAP(_actuationsMapPath), IPneumaticActuationsMAP)
+            Dim psCompressorMap = CType(New CompressorMap(_compressorMapPath), ICompressorMap)
+
+            psCompressorMap.Initialise()
+
+            _defaultInputConfig.KneelingHeightMilimeters = 100
+
+            Dim target As New AveragePneumaticLoadDemand(_defaultInputConfig, psAuxConfig, psActuationsMap, psCompressorMap, _vehicleMassKG, "Urban", _cycleDurationMinutes)
+
+            Dim expected As Single = 8557.52
+
+            Dim actual As Single = Math.Round(target.TotalAirConsumedPerCycle(), 2)
+
+            Assert.AreEqual(expected, actual)
+
+         End Sub
 
         'AirSuspensionControl = "mechanically"
+        <Test()>
+         Public Sub AverageLoadValueUsingDefaultAuxValues_TotalRequiredAirDeliveryRate_AirSuspension_mechanicallyTest()
+
+         initialise()
+
+            Dim psAuxConfig = CType(New PneumaticsAuxilliariesConfig(True), IPneumaticsAuxilliariesConfig)
+            Dim psActuationsMap = CType(New PneumaticActuationsMAP(_actuationsMapPath), IPneumaticActuationsMAP)
+            Dim psCompressorMap = CType(New CompressorMap(_compressorMapPath), ICompressorMap)
+
+            psCompressorMap.Initialise()
+
+            _defaultInputConfig.AirSuspensionControl = "mechanically"
+
+            Dim target As New AveragePneumaticLoadDemand(_defaultInputConfig, psAuxConfig, psActuationsMap, psCompressorMap, _vehicleMassKG, "Urban", _cycleDurationMinutes)
+
+            Dim expected As Single = 8726.18
+
+            Dim actual As Single = Math.Round(target.TotalAirConsumedPerCycle(), 2)
+
+            Assert.AreEqual(expected, actual)
+
+         End Sub
 
         'AdBlueDosing = "electric"
+        <Test()>
+         Public Sub AverageLoadValueUsingDefaultAuxValues_TotalRequiredAirDeliveryRate_AdBlueDosing_electric_Test()
+
+         initialise()
+
+            Dim psAuxConfig = CType(New PneumaticsAuxilliariesConfig(True), IPneumaticsAuxilliariesConfig)
+            Dim psActuationsMap = CType(New PneumaticActuationsMAP(_actuationsMapPath), IPneumaticActuationsMAP)
+            Dim psCompressorMap = CType(New CompressorMap(_compressorMapPath), ICompressorMap)
+
+            psCompressorMap.Initialise()
+
+            _defaultInputConfig.AdBlueDosing = "electric"
+
+            Dim target As New AveragePneumaticLoadDemand(_defaultInputConfig, psAuxConfig, psActuationsMap, psCompressorMap, _vehicleMassKG, "Urban", _cycleDurationMinutes)
+
+            Dim expected As Single = 6712.46
+
+            Dim actual As Single = Math.Round(target.TotalAirConsumedPerCycle(), 2)
+
+            Assert.AreEqual(expected, actual)
+
+         End Sub
 
         'Doors = "electric"
+        <Test()>
+         Public Sub AverageLoadValueUsingDefaultAuxValues_TotalRequiredAirDeliveryRate_Doors_electric_Test()
+
+         initialise()
+
+            Dim psAuxConfig = CType(New PneumaticsAuxilliariesConfig(True), IPneumaticsAuxilliariesConfig)
+            Dim psActuationsMap = CType(New PneumaticActuationsMAP(_actuationsMapPath), IPneumaticActuationsMAP)
+            Dim psCompressorMap = CType(New CompressorMap(_compressorMapPath), ICompressorMap)
+
+            psCompressorMap.Initialise()
+
+            _defaultInputConfig.Doors = "electric"
+
+            Dim target As New AveragePneumaticLoadDemand(_defaultInputConfig, psAuxConfig, psActuationsMap, psCompressorMap, _vehicleMassKG, "Urban", _cycleDurationMinutes)
+
+            Dim expected As Single = 6880.88
+
+            Dim actual As Single = Math.Round(target.TotalAirConsumedPerCycle(), 2)
+
+            Assert.AreEqual(expected, actual)
+
+         End Sub
 
-        'SmartAirCompression = false
 
 
     End Class
diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/AlternatorsEfficiencyTests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/M0_NonSmart_AlternatorsSetEfficiencyTests.vb
similarity index 65%
rename from VECTOAux/VectoAuxiliariesTests/UnitTests/AlternatorsEfficiencyTests.vb
rename to VECTOAux/VectoAuxiliariesTests/UnitTests/M0_NonSmart_AlternatorsSetEfficiencyTests.vb
index ee91311168d3f7bdcd171fc3b59be936a951ba37..7eb7540e1e64333be937b8c9d58b355c2154d58d 100644
--- a/VECTOAux/VectoAuxiliariesTests/UnitTests/AlternatorsEfficiencyTests.vb
+++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/M0_NonSmart_AlternatorsSetEfficiencyTests.vb
@@ -9,7 +9,7 @@ Imports VectoAuxiliaries.Hvac
 Namespace UnitTests
 
 <TestFixture()>
-Public Class AlternatorsEfficiencyTests
+Public Class M0_NonSmart_AlternatorsSetEfficiencyTests
 
 Private Const cstrAlternatorsEfficiencyMapLocation As String = "tests\testAlternatorMap.csv"
 Private Const cstrHVACMapLocation As String = "TestFiles\TestHvacMap.csv"
@@ -45,41 +45,41 @@ End Sub
 
 <Test()>
 Public Sub CreateNewTest()
-       Dim target As AlternatorsEfficiency = New AlternatorsEfficiency(elecConsumers, hvacInputs, hvacMap, alternatorMap, powernetVoltage)
+       Dim target As M0_NonSmart_AlternatorsSetEfficiency = New M0_NonSmart_AlternatorsSetEfficiency(elecConsumers, hvacInputs, hvacMap, alternatorMap, powernetVoltage)
        Assert.IsNotNull(target)
 End Sub
 
 <Test()>
 <ExpectedException("System.ArgumentException")>
 Public Sub CreateNew_MissingElecConsumers_ThrowArgumentExceptionTest()
-       Dim target As AlternatorsEfficiency = New AlternatorsEfficiency(Nothing, hvacInputs, hvacMap, alternatorMap, powernetVoltage)
+       Dim target As M0_NonSmart_AlternatorsSetEfficiency = New M0_NonSmart_AlternatorsSetEfficiency(Nothing, hvacInputs, hvacMap, alternatorMap, powernetVoltage)
 End Sub
 
 <Test()>
 <ExpectedException("System.ArgumentException")>
 Public Sub CreateNew_MissingHVACInputs_ThrowArgumentExceptionTest()
-       Dim target As AlternatorsEfficiency = New AlternatorsEfficiency(elecConsumers, Nothing, hvacMap, alternatorMap, powernetVoltage)
+       Dim target As M0_NonSmart_AlternatorsSetEfficiency = New M0_NonSmart_AlternatorsSetEfficiency(elecConsumers, Nothing, hvacMap, alternatorMap, powernetVoltage)
 End Sub
 
 
 <Test()>
 <ExpectedException("System.ArgumentException")>
 Public Sub CreateNew_MissingHVACMAP_ThrowArgumentExceptionTest()
-       Dim target As AlternatorsEfficiency = New AlternatorsEfficiency(elecConsumers, hvacInputs, Nothing, alternatorMap, powernetVoltage)
+       Dim target As M0_NonSmart_AlternatorsSetEfficiency = New M0_NonSmart_AlternatorsSetEfficiency(elecConsumers, hvacInputs, Nothing, alternatorMap, powernetVoltage)
 End Sub
 
 
 <Test()>
 <ExpectedException("System.ArgumentException")>
 Public Sub CreateNew_MissingAlternatorMap_ThrowArgumentExceptionTest()
-       Dim target As AlternatorsEfficiency = New AlternatorsEfficiency(elecConsumers, hvacInputs, hvacMap, Nothing, powernetVoltage)
+       Dim target As M0_NonSmart_AlternatorsSetEfficiency = New M0_NonSmart_AlternatorsSetEfficiency(elecConsumers, hvacInputs, hvacMap, Nothing, powernetVoltage)
 End Sub
 
 
 
 <Test()>
 Public Sub EfficiencyValueTest()
-       Dim target As AlternatorsEfficiency = New AlternatorsEfficiency(elecConsumers, hvacInputs, hvacMap, alternatorMap, powernetVoltage)
+       Dim target As M0_NonSmart_AlternatorsSetEfficiency = New M0_NonSmart_AlternatorsSetEfficiency(elecConsumers, hvacInputs, hvacMap, alternatorMap, powernetVoltage)
 
        Dim actual As Single = target.GetEfficiency(2000, 1)
 
@@ -94,7 +94,7 @@ End Sub
 <Test()>
 Public Sub HVAC_PowerDemandAmpsTest()
 
-      Dim target As AlternatorsEfficiency = New AlternatorsEfficiency(elecConsumers, hvacInputs, hvacMap, alternatorMap, powernetVoltage)
+      Dim target As M0_NonSmart_AlternatorsSetEfficiency = New M0_NonSmart_AlternatorsSetEfficiency(elecConsumers, hvacInputs, hvacMap, alternatorMap, powernetVoltage)
 
       Dim actual As Single
       Dim expected As Single = 152.091263F   '( HVAC POWER OUTPUT IN KW not Watts )
diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/ResultCardTests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/ResultCardTests.vb
new file mode 100644
index 0000000000000000000000000000000000000000..9cd2f072e8a6146226a8c8f4a08a53286051b6a1
--- /dev/null
+++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/ResultCardTests.vb
@@ -0,0 +1,116 @@
+Imports NUnit.Framework
+Imports VectoAuxiliaries.Electrics
+
+<TestFixture()>
+Public Class ResultCardTests
+
+Private results As New Dictionary(Of Single, Single)
+Private resultCard As ResultCard
+
+Public Sub New()
+
+results.Add(20, 18)
+results.Add(30, 27)
+results.Add(40, 36)
+results.Add(50, 45)
+'results.Add(60, 54)
+
+resultCard = New ResultCard(results)
+
+End Sub
+
+
+<Test()>
+Public Sub CreateNewResultsOKTest()
+
+ Dim target As New ResultCard(results)
+
+ Assert.IsNotNull(target)
+
+End Sub
+
+<Test()>
+<ExpectedException("System.ArgumentException")>
+Public Sub CreateNewBanResultsNullTest()
+
+ Dim target As New ResultCard(Nothing)
+
+ Assert.IsNotNull(target)
+
+End Sub
+
+<Test()>
+<ExpectedException("System.ArgumentException")>
+Public Sub CreateNewBanResultsInsufficientEntriesTest()
+
+
+ Dim target As New ResultCard(New Dictionary(Of Single, Single))
+
+
+End Sub
+
+<Test()>
+Public Sub GetBotomBoundryValueTest()
+
+Dim expected As Single = 18
+Dim actual As Single = resultCard.GetSmartCurrentResult(20)
+
+Assert.AreEqual(expected, actual)
+
+End Sub
+
+<Test()>
+Public Sub GetCentreBoundayValueTest()
+
+Dim expected As Single = 36
+Dim actual As Single = resultCard.GetSmartCurrentResult(40)
+
+Assert.AreEqual(expected, actual)
+
+
+End Sub
+
+
+<Test()>
+Public Sub GetTopBoundaryValueTest()
+
+Dim expected As Single = 45
+Dim actual As Single = resultCard.GetSmartCurrentResult(50)
+
+Assert.AreEqual(expected, actual)
+
+End Sub
+
+<Test()>
+Public Sub GetInterpolatedValue35AmpsTest()
+
+Dim expected As Single = 31.5
+Dim actual As Single = resultCard.GetSmartCurrentResult(35)
+
+Assert.AreEqual(expected, actual)
+
+End Sub
+
+<Test()>
+Public Sub GetExtrapolatedValue60AmpsTest()
+
+Dim expected As Single = 54
+Dim actual As Single = resultCard.GetSmartCurrentResult(60)
+
+Assert.AreEqual(expected, actual)
+
+End Sub
+
+<Test()>
+Public Sub GetExtrapolatedValue10AmpsTest()
+
+Dim expected As Single = 9
+Dim actual As Single = resultCard.GetSmartCurrentResult(10)
+
+Assert.AreEqual(expected, actual)
+
+End Sub
+
+
+End Class
+
diff --git a/VECTOAux/VectoAuxiliariesTests/VectoAuxiliariesTests.vbproj b/VECTOAux/VectoAuxiliariesTests/VectoAuxiliariesTests.vbproj
index f6025ac4899a493bc13bd2f9d02ee1d18ee5867f..e895c67aff36bb579131fb184fdc5a4f7edb3b90 100644
--- a/VECTOAux/VectoAuxiliariesTests/VectoAuxiliariesTests.vbproj
+++ b/VECTOAux/VectoAuxiliariesTests/VectoAuxiliariesTests.vbproj
@@ -88,7 +88,7 @@
   </ItemGroup>
   <ItemGroup>
     <Compile Include="Mocks\HVACMapMock.vb" />
-    <Compile Include="UnitTests\AlternatorsEfficiencyTests.vb" />
+    <Compile Include="UnitTests\M0_NonSmart_AlternatorsSetEfficiencyTests.vb" />
     <Compile Include="UnitTests\AveragePneumaticLoadDemandTests.vb" />
     <Compile Include="UnitTests\ElectricalConsumerListTests.vb" />
     <Compile Include="UnitTests\HVACMapTests.vb" />
@@ -118,6 +118,7 @@
       <DependentUpon>Settings.settings</DependentUpon>
       <DesignTimeSharedInput>True</DesignTimeSharedInput>
     </Compile>
+    <Compile Include="UnitTests\ResultCardTests.vb" />
   </ItemGroup>
   <ItemGroup>
     <EmbeddedResource Include="My Project\Resources.resx">