From 82482d951bd2529439e67e67642de8946db5ea71 Mon Sep 17 00:00:00 2001
From: "Zarb, Glenn" <STC\GZ1>
Date: Thu, 2 Jul 2015 13:06:12 +0000
Subject: [PATCH] Merge local source control into main branch

git-tfs-id: [http://tfs00.element.root.com:8080/tfs/TFSCollection]$/VECTO;C2004
---
 .../VectoAuxiliaries/AdvancedAuxiliaries.vb   |  468 ++--
 VECTOAux/VectoAuxiliaries/AuxiliaryConfig.vb  |  706 +++---
 .../Electrics/ElectricalConsumer.vb           |  159 +-
 .../Electrics/ElectricalConsumerList.vb       |    2 +-
 .../Electrics/IElectricalConsumer.vb          |   25 +-
 VECTOAux/VectoAuxiliaries/Hvac/Bus.vb         |  332 +--
 VECTOAux/VectoAuxiliaries/Hvac/BusDatabase.vb |  125 +-
 .../Hvac/EnvironmentalCondition.vb            |   36 +
 .../Hvac/EnvironmentalConditionsMap.vb        |   73 +
 .../Hvac/HVACUserInputsConfig.vb              |   25 +-
 VECTOAux/VectoAuxiliaries/Hvac/IBus.vb        |   29 +-
 .../VectoAuxiliaries/Hvac/IBusDatabase.vb     |   16 +-
 .../Hvac/IEnvironmentalCondition.vb           |   10 +
 .../Hvac/IEnvironmentalConditionsMap.vb       |   11 +
 .../Hvac/IHVACUserInputsConfig.vb             |   35 +-
 .../VectoAuxiliaries/Hvac/ISSMCalculate.vb    |  116 +-
 .../VectoAuxiliaries/Hvac/ISSMGenInputs.vb    |  132 +-
 VECTOAux/VectoAuxiliaries/Hvac/ISSMTOOL.vb    |   50 +-
 .../VectoAuxiliaries/Hvac/SSMCalculate.vb     |  840 ++++---
 .../VectoAuxiliaries/Hvac/SSMGenInputs.vb     |  601 ++---
 VECTOAux/VectoAuxiliaries/Hvac/SSMTOOL.vb     |  362 ++-
 .../UI/frmAuxiliaryConfig.Designer.vb         |  243 +-
 .../UI/frmAuxiliaryConfig.resx                |  120 +-
 .../VectoAuxiliaries/UI/frmAuxiliaryConfig.vb | 1866 +++++++--------
 .../UI/frmHVACTool.Designer.vb                | 1598 ++++++++-----
 VECTOAux/VectoAuxiliaries/UI/frmHVACTool.resx |   20 +
 VECTOAux/VectoAuxiliaries/UI/frmHVACTool.vb   | 2095 ++++++++++-------
 .../VectoAuxiliaries/VectoAuxiliaries.vbproj  |    4 +
 .../Mocks/ElectricalConsumerMock.vb           |   18 +-
 .../UnitTests/BusDatabaseTests.vb             |  233 +-
 .../UnitTests/M14Tests.vb                     |    1 +
 31 files changed, 5776 insertions(+), 4575 deletions(-)
 create mode 100644 VECTOAux/VectoAuxiliaries/Hvac/EnvironmentalCondition.vb
 create mode 100644 VECTOAux/VectoAuxiliaries/Hvac/EnvironmentalConditionsMap.vb
 create mode 100644 VECTOAux/VectoAuxiliaries/Hvac/IEnvironmentalCondition.vb
 create mode 100644 VECTOAux/VectoAuxiliaries/Hvac/IEnvironmentalConditionsMap.vb

diff --git a/VECTOAux/VectoAuxiliaries/AdvancedAuxiliaries.vb b/VECTOAux/VectoAuxiliaries/AdvancedAuxiliaries.vb
index 4ff2eda38d..8bc54b3300 100644
--- a/VECTOAux/VectoAuxiliaries/AdvancedAuxiliaries.vb
+++ b/VECTOAux/VectoAuxiliaries/AdvancedAuxiliaries.vb
@@ -17,334 +17,322 @@ Imports VectoAuxiliaries.DownstreamModules
 Imports System.Windows.Forms
 
 Public Class AdvancedAuxiliaries
- Implements IAdvancedAuxiliaries
-
-
-
-    Private  auxConfig As AuxiliaryConfig
+    Implements IAdvancedAuxiliaries
 
+    Private auxConfig As AuxiliaryConfig
 
     'Supporting classes which may generate event messages
     Private WithEvents compressorMap As ICompressorMap
-   ' Private Withevents alternatorMap  As IAlternatorMap 
 
-     private WithEvents ssmTool As New SSMTOOL
-     Private WithEvents ssmToolModule14 As New SSMTOOL
+    Private WithEvents ssmTool As SSMTOOL
+    Private WithEvents ssmToolModule14 As SSMTOOL
 
-    Private Withevents alternatorMap  As IAlternatorMap
+    Private WithEvents alternatorMap As IAlternatorMap
     Private WithEvents actuationsMap As IPneumaticActuationsMAP
-    Private WithEvents fuelMap       As IFUELMAP 
+    Private WithEvents fuelMap As IFUELMAP
 
     'Classes which compose the model.
-    private WithEvents M0  As IM0_NonSmart_AlternatorsSetEfficiency
-    private WithEvents M05 As IM0_5_SmartAlternatorSetEfficiency
-    private WithEvents M1  As IM1_AverageHVACLoadDemand
-    private WithEvents M2  As IM2_AverageElectricalLoadDemand
-    private WithEvents M3  As IM3_AveragePneumaticLoadDemand
-    private WithEvents M4  As IM4_AirCompressor
-    private WithEvents M5  As IM5_SmartAlternatorSetGeneration
-    private WithEvents M6  As IM6
-    private WithEvents M7  As IM7
-    private WithEvents M8  As IM8
-    private WithEvents M9  As IM9
-    private WithEvents M10 As IM10
-    private WithEvents M11 As IM11
-    private WithEvents M12 As IM12
-    private WithEvents M13 As IM13
+    Private WithEvents M0 As IM0_NonSmart_AlternatorsSetEfficiency
+    Private WithEvents M05 As IM0_5_SmartAlternatorSetEfficiency
+    Private WithEvents M1 As IM1_AverageHVACLoadDemand
+    Private WithEvents M2 As IM2_AverageElectricalLoadDemand
+    Private WithEvents M3 As IM3_AveragePneumaticLoadDemand
+    Private WithEvents M4 As IM4_AirCompressor
+    Private WithEvents M5 As IM5_SmartAlternatorSetGeneration
+    Private WithEvents M6 As IM6
+    Private WithEvents M7 As IM7
+    Private WithEvents M8 As IM8
+    Private WithEvents M9 As IM9
+    Private WithEvents M10 As IM10
+    Private WithEvents M11 As IM11
+    Private WithEvents M12 As IM12
+    Private WithEvents M13 As IM13
     Private WithEvents M14 As IM14
 
-    private vectoDirectory As String 
+    Private vectoDirectory As String
 
     'Event Handler top level bubble.
-    Public Sub VectoEventHandler( byref sender As Object, message As String, messageType As AdvancedAuxiliaryMessageType) handles compressorMap.AuxiliaryEvent, alternatorMap.AuxiliaryEvent, ssmTool.Message, ssmToolModule14.Message
-
+    Public Sub VectoEventHandler(ByRef sender As Object, message As String, messageType As AdvancedAuxiliaryMessageType) Handles compressorMap.AuxiliaryEvent, alternatorMap.AuxiliaryEvent, ssmTool.Message, ssmToolModule14.Message
 
-    If Signals.AuxiliaryEventReportingLevel <= messageType then
+        If Signals.AuxiliaryEventReportingLevel <= messageType Then
 
-        RaiseEvent AuxiliaryEvent( sender, message,messageType)
+            RaiseEvent AuxiliaryEvent(sender, message, messageType)
 
-    End If
-        
+        End If
 
-
-  End Sub   
+    End Sub
 
     'Constructor
-    Public Sub new( )
+    Public Sub New()
 
-           VectoInputs = New VectoInputs() 
-           Signals     = New Signals()
+        VectoInputs = New VectoInputs()
+        Signals = New Signals()
 
     End Sub
 
     'Initialise Model
-    Public Sub Initialise( IAuxPath  As String , vectoFilePath As string)
-
-      Dim auxPath As string
-      vectoDirectory  =fPATH(vectoFilePath)
-
-      auxPath = FilePathUtils.ResolveFilePath(vectoDirectory,IAuxPath)
-
-
-      Signals.CurrentCycleTimeInSeconds=0
-      auxConfig = New AuxiliaryConfig(auxPath)
-      
-      'Pass some signals from config to Signals. ( These are stored in the configuration but shared in the signal distribution around modules )
-      Signals.SmartElectrics  = auxConfig.ElectricalUserInputsConfig.SmartElectrical
-      Signals.SmartPneumatics = auxConfig.PneumaticUserInputsConfig.SmartAirCompression
-      
-      'alternatorMap  = New AlternatorMap(FilePathUtils.ResolveFilePath(vectoDirectory,auxConfig.ElectricalUserInputsConfig.AlternatorMap))
-     ' alternatorMap.Initialise()
-
-     ' alternatorMap  = New AlternatorMap(FilePathUtils.ResolveFilePath(vectoDirectory,auxConfig.ElectricalUserInputsConfig.AlternatorMap))
-       alternatorMap  = New CombinedAlternator(FilePathUtils.ResolveFilePath(vectoDirectory,auxConfig.ElectricalUserInputsConfig.AlternatorMap))
-
-      
-      actuationsMap = New PneumaticActuationsMAP( FilePathUtils.ResolveFilePath(vectoDirectory,auxConfig.PneumaticUserInputsConfig.ActuationsMap))
-      
-      compressorMap  = New CompressorMap(FilePathUtils.ResolveFilePath(vectoDirectory, auxConfig.PneumaticUserInputsConfig.CompressorMap))
-      compressorMap.Initialise()
-      
-      fuelMap  = New cMAP()
-      fuelMap.FilePath= FilePathUtils.ResolveFilePath(vectoDirectory,VectoInputs.FuelMap)
-      If Not fuelMap.ReadFile() then 
-      MessageBox.Show("Unable to read fuel map, aborting.")
-      return
-      End If
-      fuelMap.Triangulate()
-      
-      
-      auxConfig.ElectricalUserInputsConfig.ElectricalConsumers.DoorDutyCycleFraction = GetDoorActuationTimeFraction( )
-      
-      'SSM HVAC
-      Dim ssmPath as string = FilePathUtils.ResolveFilePath(vectoDirectory,auxConfig.HvacUserInputsConfig.SSMFilePath)
-      Dim BusDatabase as String = FilePathUtils.ResolveFilePath(vectoDirectory,auxConfig.HvacUserInputsConfig.BusDatabasePath)     
-      ssmTool = New SSMTOOL( ssmPath)
-
-      'This duplicate SSM is being created for use in M14 as its properties will be dynamically changed at that point
-      'to honour EngineWaste Heat Usage in Fueling calculations.
-      ssmToolModule14 = New SSMTOOL( ssmPath)
-
-
-      If( ssmTool.Load(ssmPath)=False OrElse ssmToolModule14.Load(ssmPath)=False)
-
-       Throw New Exception(String.Format("Unable to load the ssmTOOL with file {0}", ssmPath))
-
-      End If     
-
-      
-      M0 = New M0_NonSmart_AlternatorsSetEfficiency( auxConfig.ElectricalUserInputsConfig.ElectricalConsumers,
-                                                     alternatorMap,
-                                                     auxConfig.ElectricalUserInputsConfig.PowerNetVoltage,
-                                                     Signals,
-                                                     ssmTool)
-      
-      
-      M05 = New M0_5_SmartAlternatorSetEfficiency(M0, 
-                                                  auxConfig.ElectricalUserInputsConfig.ElectricalConsumers, 
-                                                  alternatorMap,
-                                                  auxConfig.ElectricalUserInputsConfig.ResultCardIdle,
-                                                  auxConfig.ElectricalUserInputsConfig.ResultCardTraction,
-                                                  auxConfig.ElectricalUserInputsConfig.ResultCardOverrun,Signals)
-
-      
-      M1 = New M1_AverageHVACLoadDemand(M0,
-                                        auxConfig.ElectricalUserInputsConfig.AlternatorGearEfficiency, 
+    Public Sub Initialise(IAuxPath As String, vectoFilePath As String)
+
+        Dim auxPath As String
+        vectoDirectory = fPATH(vectoFilePath)
+
+        auxPath = FilePathUtils.ResolveFilePath(vectoDirectory, IAuxPath)
+
+
+        Signals.CurrentCycleTimeInSeconds = 0
+        auxConfig = New AuxiliaryConfig(auxPath)
+
+        'Pass some signals from config to Signals. ( These are stored in the configuration but shared in the signal distribution around modules )
+        Signals.SmartElectrics = auxConfig.ElectricalUserInputsConfig.SmartElectrical
+        Signals.SmartPneumatics = auxConfig.PneumaticUserInputsConfig.SmartAirCompression
+
+        alternatorMap = New CombinedAlternator(FilePathUtils.ResolveFilePath(vectoDirectory, auxConfig.ElectricalUserInputsConfig.AlternatorMap))
+
+        actuationsMap = New PneumaticActuationsMAP(FilePathUtils.ResolveFilePath(vectoDirectory, auxConfig.PneumaticUserInputsConfig.ActuationsMap))
+
+        compressorMap = New CompressorMap(FilePathUtils.ResolveFilePath(vectoDirectory, auxConfig.PneumaticUserInputsConfig.CompressorMap))
+        compressorMap.Initialise()
+
+        fuelMap = New cMAP()
+        fuelMap.FilePath = FilePathUtils.ResolveFilePath(vectoDirectory, VectoInputs.FuelMap)
+        If Not fuelMap.ReadFile() Then
+            MessageBox.Show("Unable to read fuel map, aborting.")
+            Return
+        End If
+        fuelMap.Triangulate()
+
+
+        auxConfig.ElectricalUserInputsConfig.ElectricalConsumers.DoorDutyCycleFraction = GetDoorActuationTimeFraction()
+
+        'SSM HVAC
+        Dim ssmPath As String = FilePathUtils.ResolveFilePath(vectoDirectory, auxConfig.HvacUserInputsConfig.SSMFilePath)
+        Dim BusDatabase As String = FilePathUtils.ResolveFilePath(vectoDirectory, auxConfig.HvacUserInputsConfig.BusDatabasePath)
+        ssmTool = New SSMTOOL(ssmPath, auxConfig.HvacUserInputsConfig.SSMDisabled)
+
+        'This duplicate SSM is being created for use in M14 as its properties will be dynamically changed at that point
+        'to honour EngineWaste Heat Usage in Fueling calculations.
+        ssmToolModule14 = New SSMTOOL(ssmPath, auxConfig.HvacUserInputsConfig.SSMDisabled)
+
+
+        If (ssmTool.Load(ssmPath) = False OrElse ssmToolModule14.Load(ssmPath) = False) Then
+
+            Throw New Exception(String.Format("Unable to load the ssmTOOL with file {0}", ssmPath))
+
+        End If
+
+
+        M0 = New M0_NonSmart_AlternatorsSetEfficiency(auxConfig.ElectricalUserInputsConfig.ElectricalConsumers,
+                                                        alternatorMap,
+                                                        auxConfig.ElectricalUserInputsConfig.PowerNetVoltage,
+                                                        Signals,
+                                                        ssmTool)
+
+
+        M05 = New M0_5_SmartAlternatorSetEfficiency(M0,
+                                                    auxConfig.ElectricalUserInputsConfig.ElectricalConsumers,
+                                                    alternatorMap,
+                                                    auxConfig.ElectricalUserInputsConfig.ResultCardIdle,
+                                                    auxConfig.ElectricalUserInputsConfig.ResultCardTraction,
+                                                    auxConfig.ElectricalUserInputsConfig.ResultCardOverrun, Signals)
+
+
+        M1 = New M1_AverageHVACLoadDemand(M0,
+                                        auxConfig.ElectricalUserInputsConfig.AlternatorGearEfficiency,
                                         auxConfig.PneumaticUserInputsConfig.CompressorGearEfficiency,
                                         auxConfig.ElectricalUserInputsConfig.PowerNetVoltage,
                                         Signals,
                                         ssmTOOL)
-      
-      
-      M2 = New M2_AverageElectricalLoadDemand(auxConfig.ElectricalUserInputsConfig.ElectricalConsumers,
-                                              M0,
-                                              auxConfig.ElectricalUserInputsConfig.AlternatorGearEfficiency, 
-                                              auxConfig.ElectricalUserInputsConfig.PowerNetVoltage,Signals )
-      
-      
-      
-      M3 = New M3_AveragePneumaticLoadDemand(auxConfig.PneumaticUserInputsConfig,
-               auxConfig.PneumaticAuxillariesConfig,
-               actuationsMap,
-               compressorMap, 
-               VectoInputs.VehicleWeightKG,
-               VectoInputs.Cycle,
-               Signals)
-      
-      
-      M4 = New M4_AirCompressor(compressorMap,auxConfig.PneumaticUserInputsConfig.CompressorGearRatio,auxConfig.PneumaticUserInputsConfig.CompressorGearEfficiency,Signals)
-      M5 = New M5__SmartAlternatorSetGeneration( M05, auxConfig.ElectricalUserInputsConfig.PowerNetVoltage,auxConfig.ElectricalUserInputsConfig.AlternatorGearEfficiency)
-      M6 = New M6(M1,M2,M3,M4,M5,Signals)
-      M7 = New M7(M5,M6,Signals)
-      M8 = New M8(M1,M6,M7,Signals)
-      M9 = New M9(M1,M4,M6,M8,fuelMap,auxConfig.PneumaticAuxillariesConfig,Signals)
-      M10 = New M10(M3,M9,Signals)
-      M11 = New M11(M1,M3,M6,M8,fuelMap,Signals)
-      M12 = New M12(M10, M11, Signals )
-      M13 = New M13(M1,M10,M12,Signals)
-      M14 = New M14(M13,ssmToolModule14, New HVACConstants(), Signals)
-    
-    
-End Sub
-  
-    #Region "Interface implementation"
+
+
+        M2 = New M2_AverageElectricalLoadDemand(auxConfig.ElectricalUserInputsConfig.ElectricalConsumers,
+                                                M0,
+                                                auxConfig.ElectricalUserInputsConfig.AlternatorGearEfficiency,
+                                                auxConfig.ElectricalUserInputsConfig.PowerNetVoltage, Signals)
+
+
+
+        M3 = New M3_AveragePneumaticLoadDemand(auxConfig.PneumaticUserInputsConfig,
+                auxConfig.PneumaticAuxillariesConfig,
+                actuationsMap,
+                compressorMap,
+                VectoInputs.VehicleWeightKG,
+                VectoInputs.Cycle,
+                Signals)
+
+
+        M4 = New M4_AirCompressor(compressorMap, auxConfig.PneumaticUserInputsConfig.CompressorGearRatio, auxConfig.PneumaticUserInputsConfig.CompressorGearEfficiency, Signals)
+        M5 = New M5__SmartAlternatorSetGeneration(M05, auxConfig.ElectricalUserInputsConfig.PowerNetVoltage, auxConfig.ElectricalUserInputsConfig.AlternatorGearEfficiency)
+        M6 = New M6(M1, M2, M3, M4, M5, Signals)
+        M7 = New M7(M5, M6, Signals)
+        M8 = New M8(M1, M6, M7, Signals)
+        M9 = New M9(M1, M4, M6, M8, fuelMap, auxConfig.PneumaticAuxillariesConfig, Signals)
+        M10 = New M10(M3, M9, Signals)
+        M11 = New M11(M1, M3, M6, M8, fuelMap, Signals)
+        M12 = New M12(M10, M11, Signals)
+        M13 = New M13(M1, M10, M12, Signals)
+        M14 = New M14(M13, ssmToolModule14, New HVACConstants(), Signals)
+
+
+    End Sub
+
+#Region "Interface implementation"
 
     Public Property Signals As ISignals Implements IAdvancedAuxiliaries.Signals
     Public Property VectoInputs As IVectoInputs Implements IAdvancedAuxiliaries.VectoInputs
 
     Public Event AuxiliaryEvent(ByRef sender As Object, message As String, messageType As AdvancedAuxiliaryMessageType) Implements IAdvancedAuxiliaries.AuxiliaryEvent
 
-    Public Function Configure(filePath As String, vectoFilePath As String ) As Boolean Implements VectoAuxiliaries.IAdvancedAuxiliaries.Configure
-    
-    try
+    Public Function Configure(filePath As String, vectoFilePath As String) As Boolean Implements VectoAuxiliaries.IAdvancedAuxiliaries.Configure
+
+        Try
+
+            Dim frmAuxiliaryConfig As New frmAuxiliaryConfig(filePath, vectoFilePath)
 
-             Dim frmAuxiliaryConfig As New frmAuxiliaryConfig( filePath, vectoFilePath)
+            frmAuxiliaryConfig.Show()
 
-             frmAuxiliaryConfig.Show()
+            If frmAuxiliaryConfig.DialogResult <> DialogResult.OK Then
 
-             If frmAuxiliaryConfig.DialogResult<>DialogResult.OK then
+                Return True
 
-               Return true
+            Else
 
-               Else
-               
-               Return False
+                Return False
 
-             End If
+            End If
 
 
-    Catch ex As Exception
+        Catch ex As Exception
 
-     Return False
+            Return False
 
-    Return false
+            Return False
 
-    End Try
+        End Try
 
 
-    Return true
+        Return True
 
     End Function
 
     Public Function CycleStep(seconds As Integer, ByRef message As String) As Boolean Implements VectoAuxiliaries.IAdvancedAuxiliaries.CycleStep
-         
-      
-       try
 
-       M9.CycleStep( seconds ) 
-       M10.CycleStep( seconds )     
-       M11.CycleStep( seconds )
 
-       Signals.CurrentCycleTimeInSeconds+=1
+        Try
+
+            M9.CycleStep(seconds)
+            M10.CycleStep(seconds)
+            M11.CycleStep(seconds)
+
+            Signals.CurrentCycleTimeInSeconds += 1
+
 
+        Catch ex As Exception
+            MessageBox.Show("Im an exception")
+            Return False
 
-       Catch ex As Exception
-          MessageBox.Show("Im an exception")
-          Return false
+        End Try
 
-       end try
 
 
-     
-       Return true
-     
+        Return True
+
     End Function
 
     Public ReadOnly Property Running As Boolean Implements VectoAuxiliaries.IAdvancedAuxiliaries.Running
         Get
-              throw new NotImplementedException
+            Throw New NotImplementedException
         End Get
     End Property
 
-    Public Function RunStart( ByVal auxFilePath As String,byval vectoFilePath as string , ByRef message As String) As Boolean Implements VectoAuxiliaries.IAdvancedAuxiliaries.RunStart
-          
-          Try
+    Public Function RunStart(ByVal auxFilePath As String, ByVal vectoFilePath As String, ByRef message As String) As Boolean Implements VectoAuxiliaries.IAdvancedAuxiliaries.RunStart
+
+        Try
 
-           Initialise(auxFilePath, vectoFilePath)  
+            Initialise(auxFilePath, vectoFilePath)
 
-          Catch ex As Exception
+        Catch ex As Exception
 
-            Return false
+            Return False
 
-          End Try
- 
-       Return true     
+        End Try
+
+        Return True
 
     End Function
 
     Public Function RunStop(ByRef message As String) As Boolean Implements VectoAuxiliaries.IAdvancedAuxiliaries.RunStop
-          throw new NotImplementedException
+        Throw New NotImplementedException
     End Function
 
     Public ReadOnly Property TotalFuelGRAMS As Single Implements VectoAuxiliaries.IAdvancedAuxiliaries.TotalFuelGRAMS
         Get
-             If Not M13 is Nothing then
+            If Not M13 Is Nothing Then
+
+                Return M14.TotalCycleFCGrams
 
-               Return M14.TotalCycleFCGrams
+            Else
 
-               Else
-          
-               Return 0
+                Return 0
+
+            End If
 
-             End If
 
-             
         End Get
     End Property
 
     Public ReadOnly Property TotalFuelLITRES As Single Implements VectoAuxiliaries.IAdvancedAuxiliaries.TotalFuelLITRES
         Get
-             If Not M14 is Nothing then
+            If Not M14 Is Nothing Then
 
-               Return M14.TotalCycleFCLitres
+                Return M14.TotalCycleFCLitres
 
-               Else
+            Else
 
-               Return 0
+                Return 0
 
-             End If
+            End If
         End Get
     End Property
 
     Public ReadOnly Property AuxiliaryName As String Implements VectoAuxiliaries.IAdvancedAuxiliaries.AuxiliaryName
         Get
-          Return "BusAuxiliaries"
+            Return "BusAuxiliaries"
         End Get
     End Property
 
     Public ReadOnly Property AuxiliaryVersion As String Implements VectoAuxiliaries.IAdvancedAuxiliaries.AuxiliaryVersion
         Get
-           Return "Version 1.0 Beta"
+            Return "Version 1.0 Beta"
         End Get
     End Property
 
 
-    #End Region
+#End Region
 
     'Helpers
-    Private Function GetDoorActuationTimeFraction()As Single
-   
-    Dim actuationsMap as PneumaticActuationsMAP = New PneumaticActuationsMAP( FilePathUtils.ResolveFilePath(  vectoDirectory, auxConfig.PneumaticUserInputsConfig.ActuationsMap ))
-    Dim actuationsKey As ActuationsKey = New ActuationsKey( "Park brake + 2 doors",VectoInputs.Cycle)
-   
-    Dim numActuations       as single = actuationsMap.GetNumActuations( actuationsKey)
-    Dim secondsPerActuation As single = auxConfig.ElectricalUserInputsConfig.DoorActuationTimeSecond
-   
-    Dim doorDutyCycleFraction as Single = (numActuations * secondsPerActuation)/Signals.TotalCycleTimeSeconds
-   
-    Return doorDutyCycleFraction
-   
-   End Function
- 
+    Private Function GetDoorActuationTimeFraction() As Single
+
+        Dim actuationsMap As PneumaticActuationsMAP = New PneumaticActuationsMAP(FilePathUtils.ResolveFilePath(vectoDirectory, auxConfig.PneumaticUserInputsConfig.ActuationsMap))
+        Dim actuationsKey As ActuationsKey = New ActuationsKey("Park brake + 2 doors", VectoInputs.Cycle)
+
+        Dim numActuations As Single = actuationsMap.GetNumActuations(actuationsKey)
+        Dim secondsPerActuation As Single = auxConfig.ElectricalUserInputsConfig.DoorActuationTimeSecond
+
+        Dim doorDutyCycleFraction As Single = (numActuations * secondsPerActuation) / Signals.TotalCycleTimeSeconds
+
+        Return doorDutyCycleFraction
+
+    End Function
+
     Public Function ValidateAAUXFile(filePath As String, ByRef message As String) As Boolean Implements IAdvancedAuxiliaries.ValidateAAUXFile
 
 
-     Dim validResult As Boolean =  FilePathUtils.ValidateFilePath( filePath, ".aaux", message)
+        Dim validResult As Boolean = FilePathUtils.ValidateFilePath(filePath, ".aaux", message)
 
-     If Not validResult then Return False
+        If Not validResult Then Return False
 
 
-     Return true
+        Return True
 
     End Function
 
@@ -352,87 +340,87 @@ End Sub
     'Eventually this can be removed or rendered non effective to reduce calculation load on the model.
     Public ReadOnly Property AA_NonSmartAlternatorsEfficiency As Single? Implements IAdvancedAuxiliaries.AA_NonSmartAlternatorsEfficiency
         Get
-          Return M0.AlternatorsEfficiency
+            Return M0.AlternatorsEfficiency
         End Get
     End Property
 
     Public ReadOnly Property AA_SmartIdleCurrent_Amps As Single? Implements IAdvancedAuxiliaries.AA_SmartIdleCurrent_Amps
         Get
-         Return M05.SmartIdleCurrent
+            Return M05.SmartIdleCurrent
         End Get
     End Property
 
     Public ReadOnly Property AA_SmartIdleAlternatorsEfficiency As Single? Implements IAdvancedAuxiliaries.AA_SmartIdleAlternatorsEfficiency
         Get
-         Return M05.AlternatorsEfficiencyIdleResultCard
+            Return M05.AlternatorsEfficiencyIdleResultCard
         End Get
     End Property
 
     Public ReadOnly Property AA_SmartTractionCurrent_Amps As Single? Implements IAdvancedAuxiliaries.AA_SmartTractionCurrent_Amps
         Get
-         Return M05.SmartTractionCurrent
+            Return M05.SmartTractionCurrent
         End Get
     End Property
 
     Public ReadOnly Property AA_SmartTractionAlternatorEfficiency As Single? Implements IAdvancedAuxiliaries.AA_SmartTractionAlternatorEfficiency
         Get
-         Return M05.AlternatorsEfficiencyTractionOnResultCard
+            Return M05.AlternatorsEfficiencyTractionOnResultCard
         End Get
     End Property
 
     Public ReadOnly Property AA_SmartOverrunCurrent_Amps As Single? Implements IAdvancedAuxiliaries.AA_SmartOverrunCurrent_Amps
         Get
-         Return M05.SmartOverrunCurrent
+            Return M05.SmartOverrunCurrent
         End Get
     End Property
 
     Public ReadOnly Property AA_SmartOverrunAlternatorEfficiency As Single? Implements IAdvancedAuxiliaries.AA_SmartOverrunAlternatorEfficiency
         Get
-         Return M05.AlternatorsEfficiencyOverrunResultCard
+            Return M05.AlternatorsEfficiencyOverrunResultCard
         End Get
     End Property
 
     Public ReadOnly Property AA_CompressorFlowRate_LitrePerSec As Single? Implements IAdvancedAuxiliaries.AA_CompressorFlowRate_LitrePerSec
         Get
-         Return  M4.GetFlowRate
+            Return M4.GetFlowRate
         End Get
     End Property
 
     Public ReadOnly Property AA_OverrunFlag As Integer? Implements IAdvancedAuxiliaries.AA_OverrunFlag
         Get
-         Return M6.OverrunFlag
+            Return M6.OverrunFlag
         End Get
     End Property
 
     Public ReadOnly Property AA_EngineIdleFlag As Integer? Implements IAdvancedAuxiliaries.AA_EngineIdleFlag
         Get
 
-          Return  If( signals.EngineSpeed <=_signals.EngineIdleSpeed ANDAlso  ( NOT signals.ClutchEngaged OrElse signals.InNeutral),1,0)
+            Return If(signals.EngineSpeed <= _signals.EngineIdleSpeed AndAlso (Not signals.ClutchEngaged OrElse signals.InNeutral), 1, 0)
 
         End Get
     End Property
 
     Public ReadOnly Property AA_CompressorFlag As Integer? Implements IAdvancedAuxiliaries.AA_CompressorFlag
         Get
-         Return M8.CompressorFlag
+            Return M8.CompressorFlag
         End Get
     End Property
 
     Public ReadOnly Property AA_TotalCycleFC_Grams As Single? Implements IAdvancedAuxiliaries.AA_TotalCycleFC_Grams
         Get
-         Return M14.TotalCycleFCGrams
+            Return M14.TotalCycleFCGrams
         End Get
     End Property
 
     Public ReadOnly Property AA_TotalCycleFC_Litres As Single? Implements IAdvancedAuxiliaries.AA_TotalCycleFC_Litres
         Get
-         Return M14.TotalCycleFCLitres
+            Return M14.TotalCycleFCLitres
         End Get
     End Property
 
     Public ReadOnly Property AuxiliaryPowerAtCrankWatts As Single Implements IAdvancedAuxiliaries.AuxiliaryPowerAtCrankWatts
         Get
-          Return M8.AuxPowerAtCrankFromElectricalHVACAndPneumaticsAncillaries
+            Return M8.AuxPowerAtCrankFromElectricalHVACAndPneumaticsAncillaries
         End Get
     End Property
 
@@ -442,50 +430,48 @@ End Sub
 
     Public ReadOnly Property AA_D_M10_INTERP1 As Single Implements IAdvancedAuxiliaries.AA_D_M12_INTERP1
         Get
-         Return M12.INTRP1
+            Return M12.INTRP1
         End Get
     End Property
     Public ReadOnly Property AA_D_M10_INTERP2 As Single Implements IAdvancedAuxiliaries.AA_D_M12_INTERP2
         Get
-         Return M12.INTRP2
+            Return M12.INTRP2
         End Get
     End Property
     Public ReadOnly Property AA_D_M12_P1X As Single Implements IAdvancedAuxiliaries.AA_D_M12_P1X
         Get
-          Return M12.P1X
+            Return M12.P1X
         End Get
     End Property
     Public ReadOnly Property AA_D_M12_P1Y As Single Implements IAdvancedAuxiliaries.AA_D_M12_P1Y
         Get
-         Return M12.P1Y
+            Return M12.P1Y
         End Get
     End Property
     Public ReadOnly Property AA_D_M12_P2X As Single Implements IAdvancedAuxiliaries.AA_D_M12_P2X
         Get
-         Return M12.P2X
+            Return M12.P2X
         End Get
     End Property
     Public ReadOnly Property AA_D_M12_P2Y As Single Implements IAdvancedAuxiliaries.AA_D_M12_P2Y
         Get
-          Return M12.P2Y
+            Return M12.P2Y
         End Get
     End Property
     Public ReadOnly Property AA_D_M12_P3X As Single Implements IAdvancedAuxiliaries.AA_D_M12_P3X
         Get
-          Return M12.P3X
+            Return M12.P3X
         End Get
     End Property
     Public ReadOnly Property AA_D_M12_P3Y As Single Implements IAdvancedAuxiliaries.AA_D_M12_P3Y
         Get
-         Return M12.P3Y
+            Return M12.P3Y
         End Get
     End Property
     Public ReadOnly Property AA_D_M12_XTAIN As Single Implements IAdvancedAuxiliaries.AA_D_M12_XTAIN
         Get
-          Return M12.XTAIN
+            Return M12.XTAIN
         End Get
     End Property
 
-
-
 End Class
diff --git a/VECTOAux/VectoAuxiliaries/AuxiliaryConfig.vb b/VECTOAux/VectoAuxiliaries/AuxiliaryConfig.vb
index 02f363ea6b..81b6e349f2 100644
--- a/VECTOAux/VectoAuxiliaries/AuxiliaryConfig.vb
+++ b/VECTOAux/VectoAuxiliaries/AuxiliaryConfig.vb
@@ -16,403 +16,387 @@ Imports System.IO
 Imports VectoAuxiliaries.DownstreamModules
 Imports System.Windows.Forms
 Imports Newtonsoft.Json
-imports VectoAuxiliaries
+Imports VectoAuxiliaries
 
 <Serializable()>
 Public Class AuxiliaryConfig
- Implements IAuxiliaryConfig
-
-   'Vecto
-   Public Property VectoInputs As IVectoInputs  implements IAuxiliaryConfig.VectoInputs
-    
-   'Electrical
-   Public property ElectricalUserInputsConfig As IElectricsUserInputsConfig  Implements IAuxiliaryConfig.ElectricalUserInputsConfig
-   
-   
-   'Pneumatics
-   public Property PneumaticUserInputsConfig As IPneumaticUserInputsConfig Implements IAuxiliaryConfig.PneumaticUserInputsConfig
-   public Property PneumaticAuxillariesConfig As IPneumaticsAuxilliariesConfig  Implements IAuxiliaryConfig.PneumaticAuxillariesConfig
-   
-   'Hvac
-   Public Property  HvacUserInputsConfig As IHVACUserInputsConfig Implements IAuxiliaryConfig.HvacUserInputsConfig
-   
-   'Vecto Signals
-   public Property Signals As ISignals
-   
-   
-   'Constructors
-   Sub new()
+    Implements IAuxiliaryConfig
 
-   Call Me.New("EMPTY")
-
- End Sub
-   Public Sub new(auxConfigFile As String)
-
-  'Special Condition
-  If auxConfigFile="EMPTY" then 
-      ElectricalUserInputsConfig = New  ElectricsUserInputsConfig() With { .PowerNetVoltage= 28.3}
-      ElectricalUserInputsConfig.ElectricalConsumers= New ElectricalConsumerList(28.3,0.096,false)
-      ElectricalUserInputsConfig.ResultCardIdle = new ResultCard( New List(Of SmartResult ))
-      ElectricalUserInputsConfig.ResultCardOverrun= new ResultCard( New List(Of SmartResult ))
-      ElectricalUserInputsConfig.ResultCardTraction= new ResultCard( New List(Of SmartResult ))
-      PneumaticAuxillariesConfig= New PneumaticsAuxilliariesConfig(False)
-      PneumaticUserInputsConfig= New PneumaticUserInputsConfig(False)
-      HvacUserInputsConfig = New HVACUserInputsConfig(New HVACSteadyStateModel(), String.Empty, String.Empty)
-  Exit sub
-  
-  End If
-  
-  If auxConfigFile is Nothing orelse auxConfigFile.Trim().Length=0 orelse Not FILE.Exists(auxConfigFile)  then
-  
-      setdefaults()
-  
-      Else
-      
-      setDefaults()
-      'ElectricalUserInputsConfig.ElectricalConsumers.Items.Clear
-      If Not Load(auxConfigFile)
-        MessageBox.Show(String.Format("Unable to load file  {0}", auxConfigFile))
-      End If
-  
-  End If
-
-End Sub
-   
-   'Set Default Values
-   Private Sub setDefaults()
-
-'.CycleDurationMinutes=51.9,
-
- VectoInputs = New VectoInputs With {.Cycle="Urban", .VehicleWeightKG=16500, .PowerNetVoltage=28.3, .FuelMap="testFuelGoodMap.vmap"}
- 
- 'Pneumatics
- PneumaticUserInputsConfig  = New PneumaticUserInputsConfig(true) 
- PneumaticAuxillariesConfig = New PneumaticsAuxilliariesConfig(true)
-
-
-
-'testAlternatorMap.aalt
- ElectricalUserInputsConfig = New  ElectricsUserInputsConfig() With {.DoorActuationTimeSecond=4, 
-                                                                     .AlternatorGearEfficiency=0.92,
-                                                                     .PowerNetVoltage= VectoInputs.PowerNetVoltage,
-                                                                     .ResultCardIdle= New  ResultCard( New List(Of SmartResult)),
-                                                                     .ResultCardOverrun= New ResultCard(New List(Of SmartResult)),
-                                                                     .ResultCardTraction=New  ResultCard(New List(Of SmartResult)),
-                                                                     .SmartElectrical=True,
-                                                                     .AlternatorMap=String.Empty
-                                                                     }
-
- HvacUserInputsConfig = New HVACUserInputsConfig( New HVACSteadyStateModel(100,100,100), String.Empty, String.Empty)
-
-
- Signals = New Signals With { .EngineSpeed=2000, .TotalCycleTimeSeconds=3114, .ClutchEngaged=False}
-
-
- ElectricalUserInputsConfig.ElectricalConsumers= New ElectricalConsumerList(28.3,0.096,true)
-
-
-
-
-End Sub
-   
-   Private Function GetDoorActuationTimeFraction()As Single
-
- Dim actuationsMap as PneumaticActuationsMAP = New PneumaticActuationsMAP( PneumaticUserInputsConfig.ActuationsMap )
- Dim actuationsKey As ActuationsKey = New ActuationsKey( "Park brake + 2 doors",VectoInputs.Cycle)
-
- Dim numActuations       as single = actuationsMap.GetNumActuations( actuationsKey)
- Dim secondsPerActuation As single = ElectricalUserInputsConfig.DoorActuationTimeSecond
-
- Dim doorDutyCycleFraction as Single = (numActuations * secondsPerActuation)/Signals.TotalCycleTimeSeconds
-
- Return doorDutyCycleFraction
-
-End Function
-   
-   #Region "Comparison"
-
-Private function CompareElectricalConfiguration( other as AuxiliaryConfig) as boolean
-
-'AlternatorGearEfficiency
-If Me.ElectricalUserInputsConfig.AlternatorGearEfficiency<> other.ElectricalUserInputsConfig.AlternatorGearEfficiency  then return false
-
-'AlternatorMap
-If Me.ElectricalUserInputsConfig.AlternatorMap<> other.ElectricalUserInputsConfig.AlternatorMap  then return false
-
-'DoorActuationTimeSecond
-If Me.ElectricalUserInputsConfig.DoorActuationTimeSecond<> other.ElectricalUserInputsConfig.DoorActuationTimeSecond  then return false
+    'Vecto
+    Public Property VectoInputs As IVectoInputs Implements IAuxiliaryConfig.VectoInputs
 
+    'Electrical
+    Public Property ElectricalUserInputsConfig As IElectricsUserInputsConfig Implements IAuxiliaryConfig.ElectricalUserInputsConfig
 
-'Consumer list
-If Me.ElectricalUserInputsConfig.ElectricalConsumers.Items.Count<> other.ElectricalUserInputsConfig.ElectricalConsumers.Items.count  then return false
-Dim i As integer
-For i=0 to Me.ElectricalUserInputsConfig.ElectricalConsumers.Items.Count-1
-       Dim thisConsumer, otherConsumer As IElectricalConsumer
-       thisConsumer = Me.ElectricalUserInputsConfig.ElectricalConsumers.Items(i)
-       otherConsumer = other.ElectricalUserInputsConfig.ElectricalConsumers.Items(i)
+    'Pneumatics
+    Public Property PneumaticUserInputsConfig As IPneumaticUserInputsConfig Implements IAuxiliaryConfig.PneumaticUserInputsConfig
+    Public Property PneumaticAuxillariesConfig As IPneumaticsAuxilliariesConfig Implements IAuxiliaryConfig.PneumaticAuxillariesConfig
 
-       If  thisConsumer.AvgConsumptionAmps         <> otherConsumer.AvgConsumptionAmps             OrElse _
-           thisConsumer.BaseVehicle                <> otherConsumer.BaseVehicle                    OrElse _
-           thisConsumer.Category                   <> otherConsumer.Category                       OrElse _
-           thisConsumer.ConsumerName               <> otherConsumer.ConsumerName                   OrElse _
-           thisConsumer.NominalConsumptionAmps     <> otherConsumer.NominalConsumptionAmps         OrElse _
-           thisConsumer.NumberInActualVehicle      <> otherConsumer.NumberInActualVehicle          OrElse _ 
-           thisConsumer.PhaseIdle_TractionOn       <> otherConsumer.PhaseIdle_TractionOn           OrElse _
-           thisConsumer.TotalAvgConsumptionInWatts <> otherConsumer.TotalAvgConsumptionInWatts     OrElse _
-           thisConsumer.TotalAvgConumptionAmps     <> otherConsumer.TotalAvgConumptionAmps         Then Return False  
+    'Hvac
+    Public Property HvacUserInputsConfig As IHVACUserInputsConfig Implements IAuxiliaryConfig.HvacUserInputsConfig
 
-Next
+    'Vecto Signals
+    Public Property Signals As ISignals
 
-'PowerNetVoltage
-If Me.ElectricalUserInputsConfig.PowerNetVoltage <> other.ElectricalUserInputsConfig.PowerNetVoltage then Return False
+    'Constructors
+    Sub New()
 
-'ResultCardIdle
-If  Me.ElectricalUserInputsConfig.ResultCardIdle.Results.count <> other.ElectricalUserInputsConfig.ResultCardIdle.Results.Count then Return False
-For i = 0 to Me.ElectricalUserInputsConfig.ResultCardIdle.Results.Count-1
-       If Me.ElectricalUserInputsConfig.ResultCardIdle.Results(i).Amps      <> other .ElectricalUserInputsConfig.ResultCardIdle.Results(i).Amps       OrElse _
-          Me.ElectricalUserInputsConfig.ResultCardIdle.Results(i).SmartAmps <> other .ElectricalUserInputsConfig.ResultCardIdle.Results(i).SmartAmps  Then Return False        
-Next
+        Call Me.New("EMPTY")
 
-'ResultCardOverrun
-If  Me.ElectricalUserInputsConfig.ResultCardOverrun.Results.count <> other.ElectricalUserInputsConfig.ResultCardOverrun.Results.Count then Return False
-For i = 0 to Me.ElectricalUserInputsConfig.ResultCardOverrun.Results.Count-1
-       If Me.ElectricalUserInputsConfig.ResultCardOverrun.Results(i).Amps      <> other .ElectricalUserInputsConfig.ResultCardOverrun.Results(i).Amps       OrElse _
-          Me.ElectricalUserInputsConfig.ResultCardOverrun.Results(i).SmartAmps <> other .ElectricalUserInputsConfig.ResultCardOverrun.Results(i).SmartAmps  Then Return False        
-Next
+    End Sub
 
+    Public Sub New(auxConfigFile As String)
 
-'ResultCardTraction
-If  Me.ElectricalUserInputsConfig.ResultCardTraction.Results.count <> other.ElectricalUserInputsConfig.ResultCardTraction.Results.Count then Return False
-For i = 0 to Me.ElectricalUserInputsConfig.ResultCardTraction.Results.Count-1
-       If Me.ElectricalUserInputsConfig.ResultCardTraction.Results(i).Amps      <> other .ElectricalUserInputsConfig.ResultCardTraction.Results(i).Amps       OrElse _
-          Me.ElectricalUserInputsConfig.ResultCardTraction.Results(i).SmartAmps <> other .ElectricalUserInputsConfig.ResultCardTraction.Results(i).SmartAmps  Then Return False        
-Next
+        'Special Condition
+        If auxConfigFile = "EMPTY" Then
+            ElectricalUserInputsConfig = New ElectricsUserInputsConfig() With {.PowerNetVoltage = 28.3}
+            ElectricalUserInputsConfig.ElectricalConsumers = New ElectricalConsumerList(28.3, 0.096, False)
+            ElectricalUserInputsConfig.ResultCardIdle = New ResultCard(New List(Of SmartResult))
+            ElectricalUserInputsConfig.ResultCardOverrun = New ResultCard(New List(Of SmartResult))
+            ElectricalUserInputsConfig.ResultCardTraction = New ResultCard(New List(Of SmartResult))
+            PneumaticAuxillariesConfig = New PneumaticsAuxilliariesConfig(False)
+            PneumaticUserInputsConfig = New PneumaticUserInputsConfig(False)
+            HvacUserInputsConfig = New HVACUserInputsConfig(String.Empty, String.Empty, False)
+            Exit Sub
 
-'SmartElectrical
-If Me.ElectricalUserInputsConfig.SmartElectrical <> other.ElectricalUserInputsConfig.SmartElectrical then Return False
+        End If
 
+        If auxConfigFile Is Nothing OrElse auxConfigFile.Trim().Length = 0 OrElse Not FILE.Exists(auxConfigFile) Then
 
-Return true
+            setdefaults()
 
+        Else
 
-End Function
-Private Function ComparePneumaticAuxiliariesConfig( other As AuxiliaryConfig ) As Boolean
+            setDefaults()
 
- If Me.PneumaticAuxillariesConfig.AdBlueNIperMinute <> other.PneumaticAuxillariesConfig.AdBlueNIperMinute then Return False
- If Me.PneumaticAuxillariesConfig.AirControlledSuspensionNIperMinute <> other.PneumaticAuxillariesConfig.AirControlledSuspensionNIperMinute then Return False 
- If Me.PneumaticAuxillariesConfig.BrakingNoRetarderNIperKG <> other.PneumaticAuxillariesConfig.BrakingNoRetarderNIperKG then Return False
- If Me.PneumaticAuxillariesConfig.BrakingWithRetarderNIperKG <> other.PneumaticAuxillariesConfig.BrakingWithRetarderNIperKG then Return False
- If Me.PneumaticAuxillariesConfig.BreakingPerKneelingNIperKGinMM <> other.PneumaticAuxillariesConfig.BreakingPerKneelingNIperKGinMM then Return False
- If Me.PneumaticAuxillariesConfig.DeadVolBlowOutsPerLitresperHour <> other.PneumaticAuxillariesConfig.DeadVolBlowOutsPerLitresperHour then Return False
- If Me.PneumaticAuxillariesConfig.DeadVolumeLitres <> other.PneumaticAuxillariesConfig.DeadVolumeLitres then Return False
- If Me.PneumaticAuxillariesConfig.NonSmartRegenFractionTotalAirDemand <> other.PneumaticAuxillariesConfig.NonSmartRegenFractionTotalAirDemand then Return False
- If Me.PneumaticAuxillariesConfig.PerDoorOpeningNI <> other.PneumaticAuxillariesConfig.PerDoorOpeningNI then Return False
- If Me.PneumaticAuxillariesConfig.PerStopBrakeActuationNIperKG <> other.PneumaticAuxillariesConfig.PerStopBrakeActuationNIperKG then Return False
- If Me.PneumaticAuxillariesConfig.SmartRegenFractionTotalAirDemand <> other.PneumaticAuxillariesConfig.SmartRegenFractionTotalAirDemand then Return False
- If Me.PneumaticAuxillariesConfig.OverrunUtilisationForCompressionFraction <> other.PneumaticAuxillariesConfig.OverrunUtilisationForCompressionFraction then Return False
+            If Not Load(auxConfigFile) Then
+                MessageBox.Show(String.Format("Unable to load file  {0}", auxConfigFile))
+            End If
 
- Return true
+        End If
 
-End Function
-Private Function ComparePneumaticUserConfig( other As AuxiliaryConfig ) As Boolean
+    End Sub
 
- If Me.PneumaticUserInputsConfig.ActuationsMap <> other.PneumaticUserInputsConfig.ActuationsMap then Return False
- If Me.PneumaticUserInputsConfig.AdBlueDosing <> other.PneumaticUserInputsConfig.AdBlueDosing then Return False 
- If Me.PneumaticUserInputsConfig.AirSuspensionControl <> other.PneumaticUserInputsConfig.AirSuspensionControl then Return False
- If Me.PneumaticUserInputsConfig.CompressorGearEfficiency <> other.PneumaticUserInputsConfig.CompressorGearEfficiency then Return False
- If Me.PneumaticUserInputsConfig.CompressorGearRatio <> other.PneumaticUserInputsConfig.CompressorGearRatio then Return False
- If Me.PneumaticUserInputsConfig.CompressorMap <> other.PneumaticUserInputsConfig.CompressorMap then Return False
- If Me.PneumaticUserInputsConfig.Doors <> other.PneumaticUserInputsConfig.Doors then Return False
- If Me.PneumaticUserInputsConfig.KneelingHeightMillimeters <> other.PneumaticUserInputsConfig.KneelingHeightMillimeters then Return False
- If Me.PneumaticUserInputsConfig.RetarderBrake <> other.PneumaticUserInputsConfig.RetarderBrake then Return False
- If Me.PneumaticUserInputsConfig.SmartAirCompression <> other.PneumaticUserInputsConfig.SmartAirCompression then Return False
- If Me.PneumaticUserInputsConfig.SmartRegeneration <> other.PneumaticUserInputsConfig.SmartRegeneration then Return False
+    'Set Default Values
+    Private Sub setDefaults()
 
+        '.CycleDurationMinutes=51.9,
 
- Return true
+        VectoInputs = New VectoInputs With {.Cycle = "Urban", .VehicleWeightKG = 16500, .PowerNetVoltage = 28.3, .FuelMap = "testFuelGoodMap.vmap"}
 
-End Function
-Private Function CompareHVACConfig( other As AuxiliaryConfig) As Boolean Implements IAuxiliaryConfig.ConfigValuesAreTheSameAs
+        'Pneumatics
+        PneumaticUserInputsConfig = New PneumaticUserInputsConfig(True)
+        PneumaticAuxillariesConfig = New PneumaticsAuxilliariesConfig(True)
 
-  If Me.HvacUserInputsConfig.SteadyStateModel.HVACElectricalLoadPowerWatts <> other.HvacUserInputsConfig.SteadyStateModel.HVACElectricalLoadPowerWatts then Return false
-  If Me.HvacUserInputsConfig.SteadyStateModel.HVACFuellingLitresPerHour <> other.HvacUserInputsConfig.SteadyStateModel.HVACFuellingLitresPerHour then Return false
-  If Me.HvacUserInputsConfig.SteadyStateModel.HVACMechanicalLoadPowerWatts <> other.HvacUserInputsConfig.SteadyStateModel.HVACMechanicalLoadPowerWatts then Return false
-  If Me.HvacUserInputsConfig.SSMFilePath <> other.HvacUserInputsConfig.SSMFilePath then Return false
-  If Me.HvacUserInputsConfig.BusDatabasePath <> other.HvacUserInputsConfig.BusDatabasePath then Return false
+        'testAlternatorMap.aalt
+        ElectricalUserInputsConfig = New ElectricsUserInputsConfig() With {.DoorActuationTimeSecond = 4,
+                                                                            .AlternatorGearEfficiency = 0.92,
+                                                                            .PowerNetVoltage = VectoInputs.PowerNetVoltage,
+                                                                            .ResultCardIdle = New ResultCard(New List(Of SmartResult)),
+                                                                            .ResultCardOverrun = New ResultCard(New List(Of SmartResult)),
+                                                                            .ResultCardTraction = New ResultCard(New List(Of SmartResult)),
+                                                                            .SmartElectrical = True,
+                                                                            .AlternatorMap = String.Empty
+                                                                            }
 
-  Return true
+        HvacUserInputsConfig = New HVACUserInputsConfig(String.Empty, String.Empty, False)
 
-End Function
-
-Public Function ConfigValuesAreTheSameAs( other As AuxiliaryConfig) As Boolean
 
-   If Not CompareElectricalConfiguration     ( other ) then Return False
-   If Not ComparePneumaticAuxiliariesConfig ( other ) then Return False
-   If Not ComparePneumaticUserConfig        ( other ) then Return False
-   If Not CompareHVACConfig                 ( other ) then Return False
-      
-   Return true
+        Signals = New Signals With {.EngineSpeed = 2000, .TotalCycleTimeSeconds = 3114, .ClutchEngaged = False}
 
-End Function
+        ElectricalUserInputsConfig.ElectricalConsumers = New ElectricalConsumerList(28.3, 0.096, True)
+
+    End Sub
+
+    Private Function GetDoorActuationTimeFraction() As Single
+
+        Dim actuationsMap As PneumaticActuationsMAP = New PneumaticActuationsMAP(PneumaticUserInputsConfig.ActuationsMap)
+        Dim actuationsKey As ActuationsKey = New ActuationsKey("Park brake + 2 doors", VectoInputs.Cycle)
+
+        Dim numActuations As Single = actuationsMap.GetNumActuations(actuationsKey)
+        Dim secondsPerActuation As Single = ElectricalUserInputsConfig.DoorActuationTimeSecond
+
+        Dim doorDutyCycleFraction As Single = (numActuations * secondsPerActuation) / Signals.TotalCycleTimeSeconds
+
+        Return doorDutyCycleFraction
+
+    End Function
+
+#Region "Comparison"
+
+    Private Function CompareElectricalConfiguration(other As AuxiliaryConfig) As Boolean
+
+        'AlternatorGearEfficiency
+        If Me.ElectricalUserInputsConfig.AlternatorGearEfficiency <> other.ElectricalUserInputsConfig.AlternatorGearEfficiency Then Return False
+
+        'AlternatorMap
+        If Me.ElectricalUserInputsConfig.AlternatorMap <> other.ElectricalUserInputsConfig.AlternatorMap Then Return False
+
+        'DoorActuationTimeSecond
+        If Me.ElectricalUserInputsConfig.DoorActuationTimeSecond <> other.ElectricalUserInputsConfig.DoorActuationTimeSecond Then Return False
+
+
+        'Consumer list
+        If Me.ElectricalUserInputsConfig.ElectricalConsumers.Items.Count <> other.ElectricalUserInputsConfig.ElectricalConsumers.Items.count Then Return False
+        Dim i As Integer
+        For i = 0 To Me.ElectricalUserInputsConfig.ElectricalConsumers.Items.Count - 1
+            Dim thisConsumer, otherConsumer As IElectricalConsumer
+            thisConsumer = Me.ElectricalUserInputsConfig.ElectricalConsumers.Items(i)
+            otherConsumer = other.ElectricalUserInputsConfig.ElectricalConsumers.Items(i)
+
+            If thisConsumer.AvgConsumptionAmps <> otherConsumer.AvgConsumptionAmps OrElse _
+                thisConsumer.BaseVehicle <> otherConsumer.BaseVehicle OrElse _
+                thisConsumer.Category <> otherConsumer.Category OrElse _
+                thisConsumer.ConsumerName <> otherConsumer.ConsumerName OrElse _
+                thisConsumer.NominalConsumptionAmps <> otherConsumer.NominalConsumptionAmps OrElse _
+                thisConsumer.NumberInActualVehicle <> otherConsumer.NumberInActualVehicle OrElse _
+                thisConsumer.PhaseIdle_TractionOn <> otherConsumer.PhaseIdle_TractionOn OrElse _
+                thisConsumer.TotalAvgConsumptionInWatts <> otherConsumer.TotalAvgConsumptionInWatts OrElse _
+                thisConsumer.TotalAvgConumptionAmps <> otherConsumer.TotalAvgConumptionAmps Then Return False
+
+        Next
+
+        'PowerNetVoltage
+        If Me.ElectricalUserInputsConfig.PowerNetVoltage <> other.ElectricalUserInputsConfig.PowerNetVoltage Then Return False
+
+        'ResultCardIdle
+        If Me.ElectricalUserInputsConfig.ResultCardIdle.Results.count <> other.ElectricalUserInputsConfig.ResultCardIdle.Results.Count Then Return False
+        For i = 0 To Me.ElectricalUserInputsConfig.ResultCardIdle.Results.Count - 1
+            If Me.ElectricalUserInputsConfig.ResultCardIdle.Results(i).Amps <> other.ElectricalUserInputsConfig.ResultCardIdle.Results(i).Amps OrElse _
+                Me.ElectricalUserInputsConfig.ResultCardIdle.Results(i).SmartAmps <> other.ElectricalUserInputsConfig.ResultCardIdle.Results(i).SmartAmps Then Return False
+        Next
+
+        'ResultCardOverrun
+        If Me.ElectricalUserInputsConfig.ResultCardOverrun.Results.count <> other.ElectricalUserInputsConfig.ResultCardOverrun.Results.Count Then Return False
+        For i = 0 To Me.ElectricalUserInputsConfig.ResultCardOverrun.Results.Count - 1
+            If Me.ElectricalUserInputsConfig.ResultCardOverrun.Results(i).Amps <> other.ElectricalUserInputsConfig.ResultCardOverrun.Results(i).Amps OrElse _
+                Me.ElectricalUserInputsConfig.ResultCardOverrun.Results(i).SmartAmps <> other.ElectricalUserInputsConfig.ResultCardOverrun.Results(i).SmartAmps Then Return False
+        Next
+
+
+        'ResultCardTraction
+        If Me.ElectricalUserInputsConfig.ResultCardTraction.Results.count <> other.ElectricalUserInputsConfig.ResultCardTraction.Results.Count Then Return False
+        For i = 0 To Me.ElectricalUserInputsConfig.ResultCardTraction.Results.Count - 1
+            If Me.ElectricalUserInputsConfig.ResultCardTraction.Results(i).Amps <> other.ElectricalUserInputsConfig.ResultCardTraction.Results(i).Amps OrElse _
+                Me.ElectricalUserInputsConfig.ResultCardTraction.Results(i).SmartAmps <> other.ElectricalUserInputsConfig.ResultCardTraction.Results(i).SmartAmps Then Return False
+        Next
+
+        'SmartElectrical
+        If Me.ElectricalUserInputsConfig.SmartElectrical <> other.ElectricalUserInputsConfig.SmartElectrical Then Return False
+
+
+        Return True
+
+
+    End Function
+    Private Function ComparePneumaticAuxiliariesConfig(other As AuxiliaryConfig) As Boolean
+
+        If Me.PneumaticAuxillariesConfig.AdBlueNIperMinute <> other.PneumaticAuxillariesConfig.AdBlueNIperMinute Then Return False
+        If Me.PneumaticAuxillariesConfig.AirControlledSuspensionNIperMinute <> other.PneumaticAuxillariesConfig.AirControlledSuspensionNIperMinute Then Return False
+        If Me.PneumaticAuxillariesConfig.BrakingNoRetarderNIperKG <> other.PneumaticAuxillariesConfig.BrakingNoRetarderNIperKG Then Return False
+        If Me.PneumaticAuxillariesConfig.BrakingWithRetarderNIperKG <> other.PneumaticAuxillariesConfig.BrakingWithRetarderNIperKG Then Return False
+        If Me.PneumaticAuxillariesConfig.BreakingPerKneelingNIperKGinMM <> other.PneumaticAuxillariesConfig.BreakingPerKneelingNIperKGinMM Then Return False
+        If Me.PneumaticAuxillariesConfig.DeadVolBlowOutsPerLitresperHour <> other.PneumaticAuxillariesConfig.DeadVolBlowOutsPerLitresperHour Then Return False
+        If Me.PneumaticAuxillariesConfig.DeadVolumeLitres <> other.PneumaticAuxillariesConfig.DeadVolumeLitres Then Return False
+        If Me.PneumaticAuxillariesConfig.NonSmartRegenFractionTotalAirDemand <> other.PneumaticAuxillariesConfig.NonSmartRegenFractionTotalAirDemand Then Return False
+        If Me.PneumaticAuxillariesConfig.PerDoorOpeningNI <> other.PneumaticAuxillariesConfig.PerDoorOpeningNI Then Return False
+        If Me.PneumaticAuxillariesConfig.PerStopBrakeActuationNIperKG <> other.PneumaticAuxillariesConfig.PerStopBrakeActuationNIperKG Then Return False
+        If Me.PneumaticAuxillariesConfig.SmartRegenFractionTotalAirDemand <> other.PneumaticAuxillariesConfig.SmartRegenFractionTotalAirDemand Then Return False
+        If Me.PneumaticAuxillariesConfig.OverrunUtilisationForCompressionFraction <> other.PneumaticAuxillariesConfig.OverrunUtilisationForCompressionFraction Then Return False
+
+        Return True
+
+    End Function
+    Private Function ComparePneumaticUserConfig(other As AuxiliaryConfig) As Boolean
+
+        If Me.PneumaticUserInputsConfig.ActuationsMap <> other.PneumaticUserInputsConfig.ActuationsMap Then Return False
+        If Me.PneumaticUserInputsConfig.AdBlueDosing <> other.PneumaticUserInputsConfig.AdBlueDosing Then Return False
+        If Me.PneumaticUserInputsConfig.AirSuspensionControl <> other.PneumaticUserInputsConfig.AirSuspensionControl Then Return False
+        If Me.PneumaticUserInputsConfig.CompressorGearEfficiency <> other.PneumaticUserInputsConfig.CompressorGearEfficiency Then Return False
+        If Me.PneumaticUserInputsConfig.CompressorGearRatio <> other.PneumaticUserInputsConfig.CompressorGearRatio Then Return False
+        If Me.PneumaticUserInputsConfig.CompressorMap <> other.PneumaticUserInputsConfig.CompressorMap Then Return False
+        If Me.PneumaticUserInputsConfig.Doors <> other.PneumaticUserInputsConfig.Doors Then Return False
+        If Me.PneumaticUserInputsConfig.KneelingHeightMillimeters <> other.PneumaticUserInputsConfig.KneelingHeightMillimeters Then Return False
+        If Me.PneumaticUserInputsConfig.RetarderBrake <> other.PneumaticUserInputsConfig.RetarderBrake Then Return False
+        If Me.PneumaticUserInputsConfig.SmartAirCompression <> other.PneumaticUserInputsConfig.SmartAirCompression Then Return False
+        If Me.PneumaticUserInputsConfig.SmartRegeneration <> other.PneumaticUserInputsConfig.SmartRegeneration Then Return False
+
+
+        Return True
+
+    End Function
+    Private Function CompareHVACConfig(other As AuxiliaryConfig) As Boolean Implements IAuxiliaryConfig.ConfigValuesAreTheSameAs
+
+        If Me.HvacUserInputsConfig.SSMFilePath <> other.HvacUserInputsConfig.SSMFilePath Then Return False
+        If Me.HvacUserInputsConfig.BusDatabasePath <> other.HvacUserInputsConfig.BusDatabasePath Then Return False
+        If Me.HvacUserInputsConfig.SSMDisabled <> other.HvacUserInputsConfig.SSMDisabled Then Return False
+
+        Return True
+
+    End Function
+
+    Public Function ConfigValuesAreTheSameAs(other As AuxiliaryConfig) As Boolean
+
+        If Not CompareElectricalConfiguration(other) Then Return False
+        If Not ComparePneumaticAuxiliariesConfig(other) Then Return False
+        If Not ComparePneumaticUserConfig(other) Then Return False
+        If Not CompareHVACConfig(other) Then Return False
+
+        Return True
+
+    End Function
 
 
 #End Region
-   
-   #Region "Persistance"
-
-
-'Persistance Functions
-Public Function Save(  auxFile As String ) As Boolean  Implements IAuxiliaryConfig.Save
-
-  Dim returnValue As Boolean = true
-  Dim settings As JsonSerializerSettings = new JsonSerializerSettings()
-  settings.TypeNameHandling = TypeNameHandling.Objects
-
-   'JSON METHOD
-   try
-   
-      Dim  output As string = JsonConvert.SerializeObject(me, Formatting.Indented, settings)
-     
-      File.WriteAllText(auxFile , output)
-     
-      Catch ex as Exception
-
-         returnValue= False
-     
-    End Try
-  
-  Return returnValue
-
-End Function
-Public Function Load(  auxFile As String  ) As Boolean  Implements IAuxiliaryConfig.Load
-
-  Dim returnValue As Boolean = true
-  Dim settings As JsonSerializerSettings = new JsonSerializerSettings()
-  Dim tmpAux As AuxiliaryConfig
-
-  settings.TypeNameHandling = TypeNameHandling.Objects
-
-   'JSON METHOD
-   try
-      
-     Dim output As String  = File.ReadAllText(auxFile)
-   
-
-     tmpAux =  JsonConvert.DeserializeObject( Of AuxiliaryConfig)(output,settings)
-   
-     'This is where we Assume values of loaded( Deserialized ) object.
-      AssumeValuesOfOther( tmpAux ) 
-   
-    Catch ex as Exception
-
-       returnValue= False
-    End Try
-  
-  Return returnValue
-
-End Function
-
-'Persistance Helpers
-Public sub AssumeValuesOfOther( other As AuxiliaryConfig )
-
-   CloneElectricaConfiguration( other )
-   ClonePneumaticsAuxiliariesConfig( other )
-   ClonePneumaticsUserInputsConfig(other)
-   CloneHVAC(other)
-
-End sub
-Private sub CloneElectricaConfiguration( other as AuxiliaryConfig) 
-
-'AlternatorGearEfficiency
-me.ElectricalUserInputsConfig.AlternatorGearEfficiency  =  other.ElectricalUserInputsConfig.AlternatorGearEfficiency
-'AlternatorMap
-me.ElectricalUserInputsConfig.AlternatorMap             = other.ElectricalUserInputsConfig.AlternatorMap
-'DoorActuationTimeSecond
-me.ElectricalUserInputsConfig.DoorActuationTimeSecond   = other.ElectricalUserInputsConfig.DoorActuationTimeSecond
-
-'Electrical Consumer list
-Me.ElectricalUserInputsConfig.ElectricalConsumers.Items.Clear
-For  Each otherConsumer As IElectricalConsumer In other.ElectricalUserInputsConfig.ElectricalConsumers.Items    
-  
-      Dim  newConsumer  As ElectricalConsumer = New ElectricalConsumer( otherConsumer.BaseVehicle,            _
-                                                                        otherConsumer.Category,               _
-                                                                        otherConsumer.ConsumerName,           _
-                                                                        otherConsumer.NominalConsumptionAmps, _
-                                                                        otherConsumer.PhaseIdle_TractionOn,   _
-                                                                        otherConsumer.PowerNetVoltage,        _
-                                                                        otherConsumer.NumberInActualVehicle ,
-                                                                        otherConsumer.info  )
-       
-      Me.ElectricalUserInputsConfig.ElectricalConsumers.Items.Add( newConsumer )
-
-Next
-
-'PowerNetVoltage
-Me.ElectricalUserInputsConfig.PowerNetVoltage = other.ElectricalUserInputsConfig.PowerNetVoltage 
-'ResultCardIdle
-Me.ElectricalUserInputsConfig.ResultCardIdle.Results.Clear
-For each result As SmartResult In other.ElectricalUserInputsConfig.ResultCardIdle.Results
-       Me.ElectricalUserInputsConfig.ResultCardIdle.Results.Add( New SmartResult(result.Amps,result.SmartAmps))    
-Next
-'ResultCardOverrun
-Me.ElectricalUserInputsConfig.ResultCardOverrun.Results.Clear
-For each result As SmartResult In other.ElectricalUserInputsConfig.ResultCardOverrun.Results
-        Me.ElectricalUserInputsConfig.ResultCardOverrun.Results.Add( New SmartResult(result.Amps,result.SmartAmps))       
-Next
-'ResultCardTraction
-Me.ElectricalUserInputsConfig.ResultCardTraction.Results.Clear
-For each result As SmartResult In other.ElectricalUserInputsConfig.ResultCardTraction.Results
-        Me.ElectricalUserInputsConfig.ResultCardTraction.Results.Add( New SmartResult(result.Amps,result.SmartAmps))          
-Next
-'SmartElectrical
-Me.ElectricalUserInputsConfig.SmartElectrical = other.ElectricalUserInputsConfig.SmartElectrical 
-
-End Sub
-Private sub ClonePneumaticsAuxiliariesConfig( other as AuxiliaryConfig) 
-
- Me.PneumaticAuxillariesConfig.AdBlueNIperMinute                        =other.PneumaticAuxillariesConfig.AdBlueNIperMinute 
- Me.PneumaticAuxillariesConfig.AirControlledSuspensionNIperMinute       =other.PneumaticAuxillariesConfig.AirControlledSuspensionNIperMinute 
- Me.PneumaticAuxillariesConfig.BrakingNoRetarderNIperKG                 =other.PneumaticAuxillariesConfig.BrakingNoRetarderNIperKG 
- Me.PneumaticAuxillariesConfig.BrakingWithRetarderNIperKG               =other.PneumaticAuxillariesConfig.BrakingWithRetarderNIperKG 
- Me.PneumaticAuxillariesConfig.BreakingPerKneelingNIperKGinMM           =other.PneumaticAuxillariesConfig.BreakingPerKneelingNIperKGinMM 
- Me.PneumaticAuxillariesConfig.DeadVolBlowOutsPerLitresperHour          =other.PneumaticAuxillariesConfig.DeadVolBlowOutsPerLitresperHour 
- Me.PneumaticAuxillariesConfig.DeadVolumeLitres                         =other.PneumaticAuxillariesConfig.DeadVolumeLitres 
- Me.PneumaticAuxillariesConfig.NonSmartRegenFractionTotalAirDemand      =other.PneumaticAuxillariesConfig.NonSmartRegenFractionTotalAirDemand 
- Me.PneumaticAuxillariesConfig.PerDoorOpeningNI                         =other.PneumaticAuxillariesConfig.PerDoorOpeningNI 
- Me.PneumaticAuxillariesConfig.PerStopBrakeActuationNIperKG             =other.PneumaticAuxillariesConfig.PerStopBrakeActuationNIperKG 
- Me.PneumaticAuxillariesConfig.SmartRegenFractionTotalAirDemand         =other.PneumaticAuxillariesConfig.SmartRegenFractionTotalAirDemand 
- Me.PneumaticAuxillariesConfig.OverrunUtilisationForCompressionFraction =other.PneumaticAuxillariesConfig.OverrunUtilisationForCompressionFraction 
-
-End Sub
-Private Sub ClonePneumaticsUserInputsConfig ( other As AuxiliaryConfig )
-
-  Me.PneumaticUserInputsConfig.ActuationsMap = other.PneumaticUserInputsConfig.ActuationsMap 
-  Me.PneumaticUserInputsConfig.AdBlueDosing = other.PneumaticUserInputsConfig.AdBlueDosing 
-  Me.PneumaticUserInputsConfig.AirSuspensionControl = other.PneumaticUserInputsConfig.AirSuspensionControl 
-  Me.PneumaticUserInputsConfig.CompressorGearEfficiency = other.PneumaticUserInputsConfig.CompressorGearEfficiency
-  Me.PneumaticUserInputsConfig.CompressorGearRatio = other.PneumaticUserInputsConfig.CompressorGearRatio 
-  Me.PneumaticUserInputsConfig.CompressorMap = other.PneumaticUserInputsConfig.CompressorMap 
-  Me.PneumaticUserInputsConfig.Doors = other.PneumaticUserInputsConfig.Doors 
-  Me.PneumaticUserInputsConfig.KneelingHeightMillimeters = other.PneumaticUserInputsConfig.KneelingHeightMillimeters 
-  Me.PneumaticUserInputsConfig.RetarderBrake = other.PneumaticUserInputsConfig.RetarderBrake 
-  Me.PneumaticUserInputsConfig.SmartAirCompression = other.PneumaticUserInputsConfig.SmartAirCompression 
-  Me.PneumaticUserInputsConfig.SmartRegeneration = other.PneumaticUserInputsConfig.SmartRegeneration 
-
-
-End Sub
-Private Sub CloneHVAC( other As AuxiliaryConfig)
-
-  Me.HvacUserInputsConfig.SteadyStateModel.HVACElectricalLoadPowerWatts = other.HvacUserInputsConfig.SteadyStateModel.HVACElectricalLoadPowerWatts 
-  Me.HvacUserInputsConfig.SteadyStateModel.HVACFuellingLitresPerHour    = other.HvacUserInputsConfig.SteadyStateModel.HVACFuellingLitresPerHour 
-  Me.HvacUserInputsConfig.SteadyStateModel.HVACMechanicalLoadPowerWatts = other.HvacUserInputsConfig.SteadyStateModel.HVACMechanicalLoadPowerWatts 
-
-  Me.HvacUserInputsConfig.SSMFilePath = other.HvacUserInputsConfig.SSMFilePath
-  Me.HvacUserInputsConfig.BusDatabasePath = other.HvacUserInputsConfig.BusDatabasePath
-
-End Sub
 
+#Region "Persistance"
+
+    'Persistance Functions
+    Public Function Save(auxFile As String) As Boolean Implements IAuxiliaryConfig.Save
+
+        Dim returnValue As Boolean = True
+        Dim settings As JsonSerializerSettings = New JsonSerializerSettings()
+        settings.TypeNameHandling = TypeNameHandling.Objects
+
+        'JSON METHOD
+        Try
+
+            Dim output As String = JsonConvert.SerializeObject(Me, Formatting.Indented, settings)
+
+            File.WriteAllText(auxFile, output)
+
+        Catch ex As Exception
+
+            returnValue = False
+
+        End Try
+
+        Return returnValue
+
+    End Function
+    Public Function Load(auxFile As String) As Boolean Implements IAuxiliaryConfig.Load
+
+        Dim returnValue As Boolean = True
+        Dim settings As JsonSerializerSettings = New JsonSerializerSettings()
+        Dim tmpAux As AuxiliaryConfig
+
+        settings.TypeNameHandling = TypeNameHandling.Objects
+
+        'JSON METHOD
+        Try
+
+            Dim output As String = File.ReadAllText(auxFile)
+
+
+            tmpAux = JsonConvert.DeserializeObject(Of AuxiliaryConfig)(output, settings)
+
+            'This is where we Assume values of loaded( Deserialized ) object.
+            AssumeValuesOfOther(tmpAux)
+
+        Catch ex As Exception
+
+            returnValue = False
+        End Try
+
+        Return returnValue
+
+    End Function
+
+    'Persistance Helpers
+    Public Sub AssumeValuesOfOther(other As AuxiliaryConfig)
+
+        CloneElectricaConfiguration(other)
+        ClonePneumaticsAuxiliariesConfig(other)
+        ClonePneumaticsUserInputsConfig(other)
+        CloneHVAC(other)
+
+    End Sub
+    Private Sub CloneElectricaConfiguration(other As AuxiliaryConfig)
+
+        'AlternatorGearEfficiency
+        Me.ElectricalUserInputsConfig.AlternatorGearEfficiency = other.ElectricalUserInputsConfig.AlternatorGearEfficiency
+        'AlternatorMap
+        Me.ElectricalUserInputsConfig.AlternatorMap = other.ElectricalUserInputsConfig.AlternatorMap
+        'DoorActuationTimeSecond
+        Me.ElectricalUserInputsConfig.DoorActuationTimeSecond = other.ElectricalUserInputsConfig.DoorActuationTimeSecond
+
+        'Electrical Consumer list
+        Me.ElectricalUserInputsConfig.ElectricalConsumers.Items.Clear()
+        For Each otherConsumer As IElectricalConsumer In other.ElectricalUserInputsConfig.ElectricalConsumers.Items
+
+            Dim newConsumer As ElectricalConsumer = New ElectricalConsumer(otherConsumer.BaseVehicle, _
+                                                                            otherConsumer.Category, _
+                                                                            otherConsumer.ConsumerName, _
+                                                                            otherConsumer.NominalConsumptionAmps, _
+                                                                            otherConsumer.PhaseIdle_TractionOn, _
+                                                                            otherConsumer.PowerNetVoltage, _
+                                                                            otherConsumer.NumberInActualVehicle,
+                                                                            otherConsumer.info)
+
+            Me.ElectricalUserInputsConfig.ElectricalConsumers.Items.Add(newConsumer)
+
+        Next
+
+        'PowerNetVoltage
+        Me.ElectricalUserInputsConfig.PowerNetVoltage = other.ElectricalUserInputsConfig.PowerNetVoltage
+        'ResultCardIdle
+        Me.ElectricalUserInputsConfig.ResultCardIdle.Results.Clear()
+        For Each result As SmartResult In other.ElectricalUserInputsConfig.ResultCardIdle.Results
+            Me.ElectricalUserInputsConfig.ResultCardIdle.Results.Add(New SmartResult(result.Amps, result.SmartAmps))
+        Next
+        'ResultCardOverrun
+        Me.ElectricalUserInputsConfig.ResultCardOverrun.Results.Clear()
+        For Each result As SmartResult In other.ElectricalUserInputsConfig.ResultCardOverrun.Results
+            Me.ElectricalUserInputsConfig.ResultCardOverrun.Results.Add(New SmartResult(result.Amps, result.SmartAmps))
+        Next
+        'ResultCardTraction
+        Me.ElectricalUserInputsConfig.ResultCardTraction.Results.Clear()
+        For Each result As SmartResult In other.ElectricalUserInputsConfig.ResultCardTraction.Results
+            Me.ElectricalUserInputsConfig.ResultCardTraction.Results.Add(New SmartResult(result.Amps, result.SmartAmps))
+        Next
+        'SmartElectrical
+        Me.ElectricalUserInputsConfig.SmartElectrical = other.ElectricalUserInputsConfig.SmartElectrical
 
+    End Sub
+    Private Sub ClonePneumaticsAuxiliariesConfig(other As AuxiliaryConfig)
 
+        Me.PneumaticAuxillariesConfig.AdBlueNIperMinute = other.PneumaticAuxillariesConfig.AdBlueNIperMinute
+        Me.PneumaticAuxillariesConfig.AirControlledSuspensionNIperMinute = other.PneumaticAuxillariesConfig.AirControlledSuspensionNIperMinute
+        Me.PneumaticAuxillariesConfig.BrakingNoRetarderNIperKG = other.PneumaticAuxillariesConfig.BrakingNoRetarderNIperKG
+        Me.PneumaticAuxillariesConfig.BrakingWithRetarderNIperKG = other.PneumaticAuxillariesConfig.BrakingWithRetarderNIperKG
+        Me.PneumaticAuxillariesConfig.BreakingPerKneelingNIperKGinMM = other.PneumaticAuxillariesConfig.BreakingPerKneelingNIperKGinMM
+        Me.PneumaticAuxillariesConfig.DeadVolBlowOutsPerLitresperHour = other.PneumaticAuxillariesConfig.DeadVolBlowOutsPerLitresperHour
+        Me.PneumaticAuxillariesConfig.DeadVolumeLitres = other.PneumaticAuxillariesConfig.DeadVolumeLitres
+        Me.PneumaticAuxillariesConfig.NonSmartRegenFractionTotalAirDemand = other.PneumaticAuxillariesConfig.NonSmartRegenFractionTotalAirDemand
+        Me.PneumaticAuxillariesConfig.PerDoorOpeningNI = other.PneumaticAuxillariesConfig.PerDoorOpeningNI
+        Me.PneumaticAuxillariesConfig.PerStopBrakeActuationNIperKG = other.PneumaticAuxillariesConfig.PerStopBrakeActuationNIperKG
+        Me.PneumaticAuxillariesConfig.SmartRegenFractionTotalAirDemand = other.PneumaticAuxillariesConfig.SmartRegenFractionTotalAirDemand
+        Me.PneumaticAuxillariesConfig.OverrunUtilisationForCompressionFraction = other.PneumaticAuxillariesConfig.OverrunUtilisationForCompressionFraction
+
+    End Sub
+    Private Sub ClonePneumaticsUserInputsConfig(other As AuxiliaryConfig)
+
+        Me.PneumaticUserInputsConfig.ActuationsMap = other.PneumaticUserInputsConfig.ActuationsMap
+        Me.PneumaticUserInputsConfig.AdBlueDosing = other.PneumaticUserInputsConfig.AdBlueDosing
+        Me.PneumaticUserInputsConfig.AirSuspensionControl = other.PneumaticUserInputsConfig.AirSuspensionControl
+        Me.PneumaticUserInputsConfig.CompressorGearEfficiency = other.PneumaticUserInputsConfig.CompressorGearEfficiency
+        Me.PneumaticUserInputsConfig.CompressorGearRatio = other.PneumaticUserInputsConfig.CompressorGearRatio
+        Me.PneumaticUserInputsConfig.CompressorMap = other.PneumaticUserInputsConfig.CompressorMap
+        Me.PneumaticUserInputsConfig.Doors = other.PneumaticUserInputsConfig.Doors
+        Me.PneumaticUserInputsConfig.KneelingHeightMillimeters = other.PneumaticUserInputsConfig.KneelingHeightMillimeters
+        Me.PneumaticUserInputsConfig.RetarderBrake = other.PneumaticUserInputsConfig.RetarderBrake
+        Me.PneumaticUserInputsConfig.SmartAirCompression = other.PneumaticUserInputsConfig.SmartAirCompression
+        Me.PneumaticUserInputsConfig.SmartRegeneration = other.PneumaticUserInputsConfig.SmartRegeneration
+
+
+    End Sub
+    Private Sub CloneHVAC(other As AuxiliaryConfig)
+
+        Me.HvacUserInputsConfig.SSMFilePath = other.HvacUserInputsConfig.SSMFilePath
+        Me.HvacUserInputsConfig.BusDatabasePath = other.HvacUserInputsConfig.BusDatabasePath
+        Me.HvacUserInputsConfig.SSMDisabled = other.HvacUserInputsConfig.SSMDisabled
+
+    End Sub
 
 #End Region
 
diff --git a/VECTOAux/VectoAuxiliaries/Electrics/ElectricalConsumer.vb b/VECTOAux/VectoAuxiliaries/Electrics/ElectricalConsumer.vb
index ccb1f8ba75..948cbcbe7a 100644
--- a/VECTOAux/VectoAuxiliaries/Electrics/ElectricalConsumer.vb
+++ b/VECTOAux/VectoAuxiliaries/Electrics/ElectricalConsumer.vb
@@ -1,4 +1,6 @@
-' Copyright 2015 European Union.
+Imports System.ComponentModel
+
+' Copyright 2015 European Union.
 ' Licensed under the EUPL (the 'Licence');
 '
 ' * You may not use this work except in compliance with the Licence.
@@ -18,37 +20,118 @@ Namespace Electrics
     Public Class ElectricalConsumer
         Implements IElectricalConsumer
 
-
-       'Calculated
-       Private Property AvgConsumptionAmps As Single Implements IElectricalConsumer.AvgConsumptionAmps
-
-       'Properties
-       Public Property BaseVehicle As Boolean Implements IElectricalConsumer.BaseVehicle
-       Public Property Category As String Implements IElectricalConsumer.Category
-       Public Property ConsumerName As String Implements IElectricalConsumer.ConsumerName
-       Public Property NominalConsumptionAmps As Single Implements IElectricalConsumer.NominalConsumptionAmps
-       Public Property NumberInActualVehicle As Integer Implements IElectricalConsumer.NumberInActualVehicle
-       Public Property PhaseIdle_TractionOn As Single Implements IElectricalConsumer.PhaseIdle_TractionOn
-       Public Property PowerNetVoltage As Single Implements IElectricalConsumer.PowerNetVoltage
-       Public Property Info As String Implements IElectricalConsumer.Info
-
-       'Public class outputs
-       Public Function TotalAvgConumptionAmps(Optional PhaseIdle_TractionOnBasedOnCycle As Single = 0.0) As Single Implements IElectricalConsumer.TotalAvgConumptionAmps
-
-           If ConsumerName = "Doors per Door" Then
-               Return PhaseIdle_TractionOnBasedOnCycle * NominalConsumptionAmps * NumberInActualVehicle
-           Else
-               Return PhaseIdle_TractionOn * NominalConsumptionAmps * NumberInActualVehicle
-           End If
+        'Fields
+        Private _BaseVehicle As Boolean
+        Private _Category As String
+        Private _ConsumerName As String
+        Private _NominalConsumptionAmps As Single
+        Private _NumberInActualVehicle As Integer
+        Private _PhaseIdle_TractionOn As Single
+        Private _PowerNetVoltage As Single
+        Private _Info As String
+
+        'Calculated
+        Private Property AvgConsumptionAmps As Single Implements IElectricalConsumer.AvgConsumptionAmps
+
+        'Properties
+        Public Property BaseVehicle As Boolean Implements IElectricalConsumer.BaseVehicle
+            Get
+                Return _BaseVehicle
+            End Get
+            Set(value As Boolean)
+                _BaseVehicle = value
+                NotifyPropertyChanged("BaseVehicle")
+            End Set
+        End Property
+
+        Public Property Category As String Implements IElectricalConsumer.Category
+            Get
+                Return _Category
+            End Get
+            Set(value As String)
+                _Category = value
+                NotifyPropertyChanged("Category")
+            End Set
+        End Property
+
+        Public Property ConsumerName As String Implements IElectricalConsumer.ConsumerName
+            Get
+                Return _ConsumerName
+            End Get
+            Set(value As String)
+                _ConsumerName = value
+                NotifyPropertyChanged("ConsumerName")
+            End Set
+        End Property
+
+        Public Property NominalConsumptionAmps As Single Implements IElectricalConsumer.NominalConsumptionAmps
+            Get
+                Return _NominalConsumptionAmps
+            End Get
+            Set(value As Single)
+                _NominalConsumptionAmps = value
+                NotifyPropertyChanged("NominalConsumptionAmps")
+            End Set
+        End Property
+
+        Public Property NumberInActualVehicle As Integer Implements IElectricalConsumer.NumberInActualVehicle
+            Get
+                Return _NumberInActualVehicle
+            End Get
+            Set(value As Integer)
+                _NumberInActualVehicle = value
+                NotifyPropertyChanged("NumberInActualVehicle")
+            End Set
+        End Property
+
+        Public Property PhaseIdle_TractionOn As Single Implements IElectricalConsumer.PhaseIdle_TractionOn
+            Get
+                Return _PhaseIdle_TractionOn
+            End Get
+            Set(value As Single)
+                _PhaseIdle_TractionOn = value
+                NotifyPropertyChanged("PhaseIdle_TractionOn")
+            End Set
+        End Property
+
+        Public Property PowerNetVoltage As Single Implements IElectricalConsumer.PowerNetVoltage
+            Get
+                Return _PowerNetVoltage
+            End Get
+            Set(value As Single)
+                _PowerNetVoltage = value
+                NotifyPropertyChanged("PowerNetVoltage")
+            End Set
+        End Property
+
+        Public Property Info As String Implements IElectricalConsumer.Info
+            Get
+                Return _Info
+            End Get
+            Set(value As String)
+                _Info = value
+                NotifyPropertyChanged("Info")
+            End Set
+        End Property
+
+
+        'Public class outputs
+        Public Function TotalAvgConumptionAmps(Optional PhaseIdle_TractionOnBasedOnCycle As Single = 0.0) As Single Implements IElectricalConsumer.TotalAvgConumptionAmps
+
+            If ConsumerName = "Doors per Door" Then
+                Return PhaseIdle_TractionOnBasedOnCycle * NominalConsumptionAmps * NumberInActualVehicle
+            Else
+                Return PhaseIdle_TractionOn * NominalConsumptionAmps * NumberInActualVehicle
+            End If
 
 
         End Function
-       Public Function TotalAvgConsumptionInWatts(Optional PhaseIdle_TractionOnBasedOnCycle As Single = 0.0) As Single Implements Electrics.IElectricalConsumer.TotalAvgConsumptionInWatts
+        Public Function TotalAvgConsumptionInWatts(Optional PhaseIdle_TractionOnBasedOnCycle As Single = 0.0) As Single Implements Electrics.IElectricalConsumer.TotalAvgConsumptionInWatts
             Return TotalAvgConumptionAmps(PhaseIdle_TractionOnBasedOnCycle) * PowerNetVoltage
-        End Function 
+        End Function
 
-       'Constructor
-       Public Sub New(BaseVehicle As Boolean, Category As String, ConsumerName As String, NominalConsumptionAmps As Single, PhaseIdle_TractionOn As Single, PowerNetVoltage As Single, numberInVehicle As Integer,info As string)
+        'Constructor
+        Public Sub New(BaseVehicle As Boolean, Category As String, ConsumerName As String, NominalConsumptionAmps As Single, PhaseIdle_TractionOn As Single, PowerNetVoltage As Single, numberInVehicle As Integer, info As String)
 
             'Illegal Value Check.
             If Category.Trim.Length = 0 Then Throw New ArgumentException("Category Name cannot be empty")
@@ -68,25 +151,31 @@ Namespace Electrics
             Me.NumberInActualVehicle = numberInVehicle
             Me.Info = info
 
-       End Sub
+        End Sub
+
+        'Comparison Overrides
+        Public Overrides Function Equals(obj As Object) As Boolean
 
-       'Comparison Overrides
-       Public Overrides Function Equals(obj As Object) As Boolean
+            Dim other As IElectricalConsumer = CType(obj, IElectricalConsumer)
 
-         Dim other As IElectricalConsumer = CType(obj, IElectricalConsumer)
-          
 
-             Return Me.ConsumerName=other.ConsumerName
+            Return Me.ConsumerName = other.ConsumerName
 
 
         End Function
-       <System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage>
+        <System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage>
         Public Overrides Function GetHashCode() As Integer
             Return 0
         End Function
-      
 
 
+        Public Event PropertyChanged As PropertyChangedEventHandler _
+            Implements INotifyPropertyChanged.PropertyChanged
+
+        Private Sub NotifyPropertyChanged(p As String)
+            RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(p))
+        End Sub
+
 
     End Class
 
diff --git a/VECTOAux/VectoAuxiliaries/Electrics/ElectricalConsumerList.vb b/VECTOAux/VectoAuxiliaries/Electrics/ElectricalConsumerList.vb
index 9fd97c799b..e73f5be3e2 100644
--- a/VECTOAux/VectoAuxiliaries/Electrics/ElectricalConsumerList.vb
+++ b/VECTOAux/VectoAuxiliaries/Electrics/ElectricalConsumerList.vb
@@ -86,7 +86,7 @@ End Sub
      c17 = CType(New ElectricalConsumer(False, "Lights", "Antifog rear lights LED bonus",                                                       -0.17, 1.00, _powernetVoltage,             1,""), IElectricalConsumer)
      c18 = CType(New ElectricalConsumer(False, "Lights", "Position lights LED bonus",                                                           -1.20, 1.00, _powernetVoltage,             1,""), IElectricalConsumer)
      c19 = CType(New ElectricalConsumer(False, "Lights", "Direction lights LED bonus",                                                          -0.30, 1.00, _powernetVoltage,             1,""), IElectricalConsumer)
-     c20 = CType(New ElectricalConsumer(False, "Lights", "Brake Lights",                                                                        -1.20, 1.00, _powernetVoltage,             1,""), IElectricalConsumer)
+            c20 = CType(New ElectricalConsumer(False, "Lights", "Brake Lights LED bonus", -1.2, 1.0, _powernetVoltage, 1, ""), IElectricalConsumer)
     
      items.Add(c1)
      items.Add(c2)
diff --git a/VECTOAux/VectoAuxiliaries/Electrics/IElectricalConsumer.vb b/VECTOAux/VectoAuxiliaries/Electrics/IElectricalConsumer.vb
index d57348e49a..6248566b2d 100644
--- a/VECTOAux/VectoAuxiliaries/Electrics/IElectricalConsumer.vb
+++ b/VECTOAux/VectoAuxiliaries/Electrics/IElectricalConsumer.vb
@@ -9,21 +9,24 @@
 '
 ' See the LICENSE.txt for the specific language governing permissions and limitations.
 
+Imports System.ComponentModel
+
 Namespace Electrics
 
     Public Interface IElectricalConsumer
+        Inherits INotifyPropertyChanged
 
-         Property Category As String
-         Property ConsumerName As String
-         Property BaseVehicle As Boolean
-         Property NominalConsumptionAmps As Single
-         Property PhaseIdle_TractionOn As Single
-         Property NumberInActualVehicle As Integer
-         Property PowerNetVoltage As Single
-         Property AvgConsumptionAmps As Single
-         Property Info As string
-         Function TotalAvgConumptionAmps(Optional PhaseIdle_TractionOnBasedOnCycle As Single = Nothing) As Single
-         Function TotalAvgConsumptionInWatts(Optional PhaseIdle_TractionOnBasedOnCycle As Single = 0.0) As Single
+        Property Category As String
+        Property ConsumerName As String
+        Property BaseVehicle As Boolean
+        Property NominalConsumptionAmps As Single
+        Property PhaseIdle_TractionOn As Single
+        Property NumberInActualVehicle As Integer
+        Property PowerNetVoltage As Single
+        Property AvgConsumptionAmps As Single
+        Property Info As String
+        Function TotalAvgConumptionAmps(Optional PhaseIdle_TractionOnBasedOnCycle As Single = Nothing) As Single
+        Function TotalAvgConsumptionInWatts(Optional PhaseIdle_TractionOnBasedOnCycle As Single = 0.0) As Single
 
     End Interface
 
diff --git a/VECTOAux/VectoAuxiliaries/Hvac/Bus.vb b/VECTOAux/VectoAuxiliaries/Hvac/Bus.vb
index 5a1139b820..3bcb764861 100644
--- a/VECTOAux/VectoAuxiliaries/Hvac/Bus.vb
+++ b/VECTOAux/VectoAuxiliaries/Hvac/Bus.vb
@@ -1,147 +1,195 @@
 Namespace Hvac
 
-   Public Class Bus
-    Implements IBus
-
-   
-      'Private Property Backing
-      private _model                    As String
-      private _floorType                As String
-      private _engineType               As String
-      private _lengthInMetres           As String
-      private _widthInMetres            As String
-      private _heightInMetres           As String
-      private _registeredPassengers     As Integer
-   
-      'Properties Set By construction only
-      Public Readonly Property Model                  As String Implements IBus.Model
-       Get
-        Return _model
-       End Get
-   End Property
-      Public Readonly Property FloorType              As String Implements IBus.FloorType
-       Get
-        Return _floorType
-       End Get
-   End Property
-      Public Readonly Property EngineType             As String  Implements IBus.EngineType
-       Get
-        Return _engineType
-       End Get
-   End Property
-      Public Readonly Property LengthInMetres         As Double Implements IBus.LengthInMetres
-       Get
-        Return _lengthInMetres
-       End Get
-   End Property
-      Public Readonly Property WidthInMetres          As Double Implements IBus.WidthInMetres
-       Get
-        Return _widthInMetres
-       End Get
-   End Property
-      Public Readonly Property HeightInMetres         As Double Implements IBus.HeightInMetres
-       Get
-        Return _heightInMetres
-       End Get
-   End Property
-      Public Readonly Property RegisteredPassengers   As integer Implements IBus.RegisteredPassengers
-       Get
-        Return _registeredPassengers
-       End Get
-   End Property
-     
-      'Caculated Property
-      Public Readonly Property AreaInMetresSquared As Double Implements IBus.AreaInMetresSquared
-       Get
-          Return Math.Round( 2*(LengthInMetres * WidthInMetres + WidthInMetres * HeightInMetres + LengthInMetres * HeightInMetres),1)
-       End Get
-      End Property
-      Public Readonly Property VolumneInMetresQubed As Double Implements IBus.VolumneInMetresQubed
-       Get
-          Return Math.Round(LengthInMetres * WidthInMetres * HeightInMetres  ,1)
-       End Get
-      End Property
-      
-      'Constructors
-      Public Sub new (_model                    As String,
-                      _floorType                As String,
-                      _engineType               As String,
-                      _lengthInMetres           As String,
-                      _widthInMetres            As String,
-                      _heightInMetres           As String,
-                      _registeredPassengers     As Integer)
-
-
-        'Validity checks.
-        If NOT ModelOK( _model )                     then Throw New ArgumentException("Model argument is invalid")
-        If NOT FloorTypeOK( _floorType )             then Throw New ArgumentException("Model argument is invalid")
-        If NOT EngineOK( _engineType )               then Throw New ArgumentException("EngineType argument is invalid")         
-        If NOT DimensionOK(_lengthInMetres)          then Throw New ArgumentException("Invalid Length") 
-        If NOT DimensionOK(_widthInMetres)           then Throw New ArgumentException("Invalid Width") 
-        If NOT DimensionOK( _heightInMetres)         then Throw New ArgumentException("Invalid Height") 
-        If NOT PassengersOK( _registeredPassengers ) then Throw New ArgumentException("Invalid Number Of Passengers") 
-
-
-        'Set Private Members
-        Me._model                       = _model
-        Me._floorType                   = _floorType
-        Me._engineType                  = _engineType
-        Me._lengthInMetres              = _lengthInMetres
-        Me._widthInMetres               = _widthInMetres
-        Me._heightInMetres              = _heightInMetres
-        Me._registeredPassengers        =_registeredPassengers              
-                                                   
-                                                  
-   end sub                                    
-                                                  
-      'Construction Validators Helpers                                     
-      Private Function ModelOK( ByVal model As String ) As Boolean
-       
-      model= model.ToLower
-
-      If model is Nothing orelse model.Trim.Length=0 then Return False
-   
-      
-      Return true
-
-   End Function 
-      Private Function FloorTypeOK( ByVal floorType As String ) As Boolean
-       
-      floorType= floorType.ToLower
-
-      If floorType is Nothing orelse floorType.Trim.Length=0 then Return False
-   
-      If floorType<> "raised floor" AndAlso floorType<> "low floor" AndAlso floorType <> "semi low floor" then Return False
-      
-      Return true
-
-   End Function
-      Private Function EngineOK( ByVal engine As String ) As Boolean
-       
-      engine= engine.ToLower
-
-      If engine is Nothing orelse engine.Trim.Length=0 then Return False
-   
-      If engine<> "diesel" AndAlso engine<> "gas" AndAlso engine <> "hybrid" then Return False
-      
-      Return true
-
-   End Function
-      Private Function DimensionOK( byval dimension as Double ) as boolean
-
-      Return dimension> 0.5
-
-   End Function
-      Private Function PassengersOK( ByVal registeredPassengers As integer) As Boolean
-
-     Return registeredPassengers>1 
-
-      
-   End Function
-   
-
-
-   End Class
+    Public Class Bus
+        Implements IBus
+
+        'Private Property Backing
+        Private _id As Integer
+        Private _model As String
+        Private _floorType As String
+        Private _engineType As String
+        Private _lengthInMetres As String
+        Private _widthInMetres As String
+        Private _heightInMetres As String
+        Private _registeredPassengers As Integer
+        Private _isDoubleDecker As Boolean
+
+        Public ReadOnly Property Id As Integer Implements IBus.Id
+            Get
+                Return _id
+            End Get
+        End Property
+
+        Public Property Model As String Implements IBus.Model
+            Get
+                Return _model
+            End Get
+            Set(value As String)
+                If Not ModelOK(value) Then Throw New ArgumentException("Model argument is invalid")
+                _model = value
+            End Set
+        End Property
+
+        Public Property FloorType As String Implements IBus.FloorType
+            Get
+                Return _floorType
+            End Get
+            Set(value As String)
+                If Not FloorTypeOK(value) Then Throw New ArgumentException("Model argument is invalid")
+                _floorType = value
+            End Set
+        End Property
+
+        Public Property EngineType As String Implements IBus.EngineType
+            Get
+                Return _engineType
+            End Get
+            Set(value As String)
+                If Not EngineOK(value) Then Throw New ArgumentException("EngineType argument is invalid")
+                _engineType = value
+            End Set
+        End Property
+
+        Public Property LengthInMetres As Double Implements IBus.LengthInMetres
+            Get
+                Return _lengthInMetres
+            End Get
+            Set(value As Double)
+                If Not DimensionOK(value) Then Throw New ArgumentException("Invalid Length")
+                _lengthInMetres = value
+            End Set
+        End Property
+
+        Public Property WidthInMetres As Double Implements IBus.WidthInMetres
+            Get
+                Return _widthInMetres
+            End Get
+            Set(value As Double)
+                If Not DimensionOK(value) Then Throw New ArgumentException("Invalid Width")
+                _widthInMetres = value
+            End Set
+        End Property
+
+        Public Property HeightInMetres As Double Implements IBus.HeightInMetres
+            Get
+                Return _heightInMetres
+            End Get
+            Set(value As Double)
+                If Not DimensionOK(value) Then Throw New ArgumentException("Invalid Height")
+                _heightInMetres = value
+            End Set
+        End Property
+
+        Public Property RegisteredPassengers As Integer Implements IBus.RegisteredPassengers
+            Get
+                Return _registeredPassengers
+            End Get
+            Set(value As Integer)
+                If Not PassengersOK(value) Then Throw New ArgumentException("Invalid Number Of Passengers")
+                _registeredPassengers = value
+            End Set
+        End Property
+
+        Public Property IsDoubleDecker As Boolean Implements IBus.IsDoubleDecker
+            Get
+                Return _isDoubleDecker
+            End Get
+            Set(ByVal value As Boolean)
+                _isDoubleDecker = value
+            End Set
+        End Property
+
+        'Constructors
+        Public Sub New(_id As Integer,
+                        _model As String,
+                        _floorType As String,
+                        _engineType As String,
+                        _lengthInMetres As String,
+                        _widthInMetres As String,
+                        _heightInMetres As String,
+                        _registeredPassengers As Integer,
+                        _doubleDecker As Boolean)
+
+
+            'Validity checks.
+            If Not ModelOK(_model) Then Throw New ArgumentException("Model argument is invalid")
+            If Not FloorTypeOK(_floorType) Then Throw New ArgumentException("Model argument is invalid")
+            If Not EngineOK(_engineType) Then Throw New ArgumentException("EngineType argument is invalid")
+            If Not DimensionOK(_lengthInMetres) Then Throw New ArgumentException("Invalid Length")
+            If Not DimensionOK(_widthInMetres) Then Throw New ArgumentException("Invalid Width")
+            If Not DimensionOK(_heightInMetres) Then Throw New ArgumentException("Invalid Height")
+            If Not PassengersOK(_registeredPassengers) Then Throw New ArgumentException("Invalid Number Of Passengers")
+
+
+            'Set Private Members
+            Me._id = _id
+            Me._model = _model
+            Me._floorType = _floorType
+            Me._engineType = _engineType
+            Me._lengthInMetres = _lengthInMetres
+            Me._widthInMetres = _widthInMetres
+            Me._heightInMetres = _heightInMetres
+            Me._registeredPassengers = _registeredPassengers
+            Me._isDoubleDecker = _doubleDecker
+
+        End Sub
+
+        'Construction Validators Helpers                                     
+        Private Function ModelOK(ByVal model As String) As Boolean
+
+            model = model.ToLower
+
+            If model Is Nothing OrElse model.Trim.Length = 0 Then Return False
+
+            Return True
+
+        End Function
+
+        Private Function FloorTypeOK(ByVal floorType As String) As Boolean
+
+            floorType = floorType.ToLower
+
+            If floorType Is Nothing OrElse floorType.Trim.Length = 0 Then Return False
+
+            If floorType <> "raised floor" AndAlso floorType <> "low floor" AndAlso floorType <> "semi low floor" Then Return False
+
+            Return True
+
+        End Function
+
+        Private Function EngineOK(ByVal engine As String) As Boolean
+
+            engine = engine.ToLower
+
+            If engine Is Nothing OrElse engine.Trim.Length = 0 Then Return False
+
+            If engine <> "diesel" AndAlso engine <> "gas" AndAlso engine <> "hybrid" Then Return False
+
+            Return True
+
+        End Function
+
+        Private Function DimensionOK(ByVal dimension As Double) As Boolean
+
+            Return dimension > 0.5
+
+        End Function
+
+        Private Function PassengersOK(ByVal registeredPassengers As Integer) As Boolean
+
+            Return registeredPassengers > 1
+
+
+        End Function
+
+        'To String function
+        Public Overrides Function ToString() As String
+
+            Return String.Format("{0},{1},{2},{3},{4},{5},{6},{7}", _model, _floorType, _engineType, _lengthInMetres, _widthInMetres, _heightInMetres, _registeredPassengers, _isDoubleDecker)
+
+        End Function
+
+    End Class
 
 
 End Namespace
diff --git a/VECTOAux/VectoAuxiliaries/Hvac/BusDatabase.vb b/VECTOAux/VectoAuxiliaries/Hvac/BusDatabase.vb
index a42d7a99cd..97f5c98fb9 100644
--- a/VECTOAux/VectoAuxiliaries/Hvac/BusDatabase.vb
+++ b/VECTOAux/VectoAuxiliaries/Hvac/BusDatabase.vb
@@ -1,99 +1,154 @@
 Imports System.IO
+Imports System.Text
 
 Namespace Hvac
 
 
-Public Class BusDatabase
-  Implements IBusDatabase
+    Public Class BusDatabase
+        Implements IBusDatabase
 
-  Private buses As New Dictionary(Of String, IBus)
-  Private selectListBuses As New List(Of IBus)
+        Private buses As New List(Of IBus)
+        Private selectListBuses As New List(Of IBus)
 
+        Public Function AddBus(bus As IBus) As Boolean Implements IBusDatabase.AddBus
 
-        Public Function GetBuses(busModel As String, optional AsSelectList As Boolean=false) As List(Of IBus) Implements IBusDatabase.GetBuses
+            Dim result As Boolean = True
 
-           If AsSelectList then
-            selectListBuses = New List(Of IBus)
-            selectListBuses = buses.Select( Function(x) x.Value).Where( Function(v) v.Model="" OrElse v.Model.ToLower.Contains( busModel.ToLower)).ToList()
-            selectListBuses.Insert(0, New Bus("<Select>","low floor","gas",1,1,1,2))
-            Return selectListBuses
+            Try
+                buses.Add(bus)
+            Catch ex As Exception
+                result = False
+            End Try
 
-           Else
-           
-            Return buses.Select( Function(x) x.Value).Where( Function(v) v.Model="" OrElse v.Model.ToLower.Contains( busModel.ToLower)).ToList()
+            Return result
+        End Function
+
+        Public Function GetBuses(busModel As String, Optional AsSelectList As Boolean = False) As List(Of IBus) Implements IBusDatabase.GetBuses
 
-           End If
+            If AsSelectList Then
+                selectListBuses = New List(Of IBus)
+                selectListBuses = buses.Where(Function(v) v.Model = "" OrElse v.Model.ToLower.Contains(busModel.ToLower)).ToList()
+                selectListBuses.Insert(0, New Bus(0, "<Select>", "low floor", "gas", 1, 1, 1, 2, False))
+                Return selectListBuses
+
+            Else
 
-            
+                Return buses.Where(Function(v) v.Model = "" OrElse v.Model.ToLower.Contains(busModel.ToLower)).ToList()
+
+            End If
 
         End Function
 
         Public Function Initialise(filepath As String) As Boolean Implements IBusDatabase.Initialise
 
-             Dim returnStatus As Boolean = True
+            Dim returnStatus As Boolean = True
 
-                If File.Exists(filepath) Then
+            If File.Exists(filepath) Then
                 Using sr As StreamReader = New StreamReader(filepath)
                     'get array og lines fron csv
                     Dim lines() As String = sr.ReadToEnd().Split(CType(Environment.NewLine, Char()), StringSplitOptions.RemoveEmptyEntries)
 
                     'Must have at least 2 entries in map to make it usable [dont forget the header row]
                     If (lines.Count() < 2) Then
-                         Return False
+                        Return False
                     End If
 
                     Dim firstline As Boolean = True
 
+                    Dim id As Integer = 1
+
                     For Each line As String In lines
                         If Not firstline Then
 
                             'split the line
                             Dim elements() As String = line.Split(New Char() {","}, StringSplitOptions.RemoveEmptyEntries)
-                            '3 entries per line required
-                            If (elements.Length <> 7) Then
+                            '7 or 8 entries per line required
+                            If (elements.Length <> 7 AndAlso elements.Length <> 8) Then
                                 Throw New ArgumentException("Incorrect number of values in csv file")
                             End If
-                            'add values to map
 
                             'Bus
                             Try
-                                Dim bus As New Bus(elements(0), _
+                                Dim bus As New Bus(id, _
+                                                   elements(0), _
                                                    elements(1), _
                                                    elements(2), _
                                                    elements(3), _
                                                    elements(4), _
                                                    elements(5), _
-                                                   elements(6))
+                                                   elements(6), _
+                                                   If(elements.Length = 8, Boolean.Parse(elements(7)), False))
 
-                                buses.Add(bus.Model,bus)
+                                buses.Add(bus)
 
                             Catch ex As Exception
-                               
-                               'Indicate problems
-                               returnStatus=false
 
-                            End Try
-
-                                            
-                                             
+                                'Indicate problems
+                                returnStatus = False
 
+                            End Try
 
+                            id = id + 1
                         Else
                             firstline = False
                         End If
                     Next line
                 End Using
-           
+
             Else
-               returnStatus=False
+                returnStatus = False
             End If
 
-           Return returnStatus
+            Return returnStatus
 
         End Function
 
+        Public Function UpdateBus(id As Integer, bus As IBus) As Boolean Implements IBusDatabase.UpdateBus
+
+            Dim result As Boolean = True
+
+            Try
+
+                Dim existingBus As IBus = buses.Single(Function(b) b.Id = id)
+
+                existingBus.Model = bus.Model
+                existingBus.RegisteredPassengers = bus.RegisteredPassengers
+                existingBus.FloorType = bus.FloorType
+                existingBus.LengthInMetres = bus.LengthInMetres
+                existingBus.WidthInMetres = bus.WidthInMetres
+                existingBus.HeightInMetres = bus.HeightInMetres
+                existingBus.IsDoubleDecker = bus.IsDoubleDecker
+
+            Catch ex As Exception
+                result = False
+            End Try
+
+            Return result
+
+        End Function
+
+        Public Function Save(filepath As String) As Boolean Implements IBusDatabase.Save
+
+            Dim result As Boolean = True
+            Dim output As New StringBuilder
+
+            Try
+                output.AppendLine("Bus Model,Type,engine Type,length in m,wide in m,height in m,registered passengers,double decker")
+
+                For Each bus As IBus In buses
+                    output.AppendLine(bus.ToString())
+                Next
+
+                File.WriteAllText(filepath, output.ToString())
+            Catch ex As Exception
+                result = False
+            End Try
+
+            Return result
+
+        End Function
 
-End Class
+    End Class
 
 
 
diff --git a/VECTOAux/VectoAuxiliaries/Hvac/EnvironmentalCondition.vb b/VECTOAux/VectoAuxiliaries/Hvac/EnvironmentalCondition.vb
new file mode 100644
index 0000000000..a4feb7cdb2
--- /dev/null
+++ b/VECTOAux/VectoAuxiliaries/Hvac/EnvironmentalCondition.vb
@@ -0,0 +1,36 @@
+Namespace Hvac
+
+    Public Class EnvironmentalCondition
+        Implements IEnvironmentalCondition
+
+        Private _temperature As Double
+        Private _solar As Double
+        Private _weight As Double
+
+        Public Sub New(temperature As Double, solar As Double, weight As Double)
+
+            _temperature = temperature
+            _solar = solar
+            _weight = weight
+
+        End Sub
+
+        Public Function GetTemperature() As Double Implements IEnvironmentalCondition.GetTemperature
+            Return _temperature
+        End Function
+
+        Public Function GetSolar() As Double Implements IEnvironmentalCondition.GetSolar
+            Return _solar
+        End Function
+
+        Public Function GetWeight() As Double Implements IEnvironmentalCondition.GetWeighting
+            Return _weight
+        End Function
+
+        Public Function GetNormalisedWeight(map As List(Of IEnvironmentalCondition)) As Double Implements IEnvironmentalCondition.GetNormalisedWeighting
+            Return _weight / map.Sum(Function(w) w.GetWeighting())
+        End Function
+
+    End Class
+
+End Namespace
\ No newline at end of file
diff --git a/VECTOAux/VectoAuxiliaries/Hvac/EnvironmentalConditionsMap.vb b/VECTOAux/VectoAuxiliaries/Hvac/EnvironmentalConditionsMap.vb
new file mode 100644
index 0000000000..488226447d
--- /dev/null
+++ b/VECTOAux/VectoAuxiliaries/Hvac/EnvironmentalConditionsMap.vb
@@ -0,0 +1,73 @@
+Imports System.IO
+
+Namespace Hvac
+
+    Public Class EnvironmentalConditionsMap
+        Implements IEnvironmentalConditionsMap
+
+        Private ReadOnly filePath As String
+
+        Private _map As New List(Of IEnvironmentalCondition)
+
+        Public Sub New(filepath As String)
+
+            Me.filePath = filepath
+
+            Initialise()
+
+        End Sub
+
+        Public Sub Initialise() Implements IEnvironmentalConditionsMap.Initialise
+
+            If (Not String.IsNullOrWhiteSpace(filePath)) Then
+                If File.Exists(filePath) Then
+                    Using sr As StreamReader = New StreamReader(filePath)
+
+                        'get array og lines fron csv
+                        Dim lines() As String = sr.ReadToEnd().Split(CType(Environment.NewLine, Char()), StringSplitOptions.RemoveEmptyEntries)
+
+                        'Must have at least 1 entries to make it usable [dont forget the header row]
+                        If (lines.Count() < 2) Then
+                            Throw New ArgumentException("Insufficient rows to build conditions")
+                        End If
+
+                        Dim firstline As Boolean = True
+
+                        For Each line As String In lines
+                            If Not firstline Then
+
+                                'split the line
+                                Dim elements() As String = line.Split(New Char() {","}, StringSplitOptions.RemoveEmptyEntries)
+
+                                '3 entries per line required
+                                If (elements.Length <> 4) Then
+                                    Throw New ArgumentException("Incorrect number of values in file")
+                                End If
+
+                                'Add environment condition
+                                Dim newCondition As EnvironmentalCondition = New EnvironmentalCondition(elements(1), elements(2), elements(3))
+
+                                _map.Add(newCondition)
+
+                            Else
+                                firstline = False
+                            End If
+                        Next line
+                    End Using
+
+                Else
+                    Throw New ArgumentException("File not found")
+                End If
+            End If
+
+        End Sub
+
+        Public Function GetEnvironmentalConditions() As List(Of IEnvironmentalCondition) Implements IEnvironmentalConditionsMap.GetEnvironmentalConditions
+
+            Return _map
+
+        End Function
+
+    End Class
+
+End Namespace
diff --git a/VECTOAux/VectoAuxiliaries/Hvac/HVACUserInputsConfig.vb b/VECTOAux/VectoAuxiliaries/Hvac/HVACUserInputsConfig.vb
index 9018b3bd94..8a8e55605d 100644
--- a/VECTOAux/VectoAuxiliaries/Hvac/HVACUserInputsConfig.vb
+++ b/VECTOAux/VectoAuxiliaries/Hvac/HVACUserInputsConfig.vb
@@ -15,28 +15,25 @@ Imports VectoAuxiliaries.Pneumatics
 
 Namespace Hvac
 
-Public Class HVACUserInputsConfig
-Implements IHVACUserInputsConfig
+    Public Class HVACUserInputsConfig
+        Implements IHVACUserInputsConfig
 
+        'Constructor
+        Public Sub New(ssmFilePath As String, busDatabasePath As String, isDisabled As Boolean)
 
-    'Constructor
-    Public Sub new (ssm As IHVACSteadyStateModel, ssmFilePath As string, busDatabasePath As string)
-
-           SteadyStateModel           = ssm
-           Me.SSMFilePath             = ssmFilePath
-           Me.BusDatabasePath         = busDatabasePath
-
+            Me.SSMFilePath = ssmFilePath
+            Me.BusDatabasePath = busDatabasePath
+            Me.SSMDisabled = isDisabled
 
         End Sub
 
-    'Implementation
-    Public Property SteadyStateModel As IHVACSteadyStateModel Implements IHVACUserInputsConfig.SteadyStateModel
+        Public Property SSMFilePath As String Implements IHVACUserInputsConfig.SSMFilePath
 
-    Public Property SSMFilePath As String Implements IHVACUserInputsConfig.SSMFilePath
+        Public Property BusDatabasePath As String Implements IHVACUserInputsConfig.BusDatabasePath
 
-    Public Property BusDatabasePath As String Implements IHVACUserInputsConfig.BusDatabasePath
+        Public Property SSMDisabled As Boolean Implements IHVACUserInputsConfig.SSMDisabled
 
-End Class
+    End Class
 
 End Namespace
 
diff --git a/VECTOAux/VectoAuxiliaries/Hvac/IBus.vb b/VECTOAux/VectoAuxiliaries/Hvac/IBus.vb
index c7afbfc986..3a9c3331ec 100644
--- a/VECTOAux/VectoAuxiliaries/Hvac/IBus.vb
+++ b/VECTOAux/VectoAuxiliaries/Hvac/IBus.vb
@@ -1,21 +1,20 @@
 
 Namespace Hvac
 
-  Public Interface IBus
-   
-        Readonly Property Model                  As String
-        Readonly Property FloorType              As String
-        Readonly Property EngineType             As String 
-        Readonly Property LengthInMetres         As Double
-        Readonly Property WidthInMetres          As Double
-        Readonly Property HeightInMetres         As Double
-        Readonly Property RegisteredPassengers   As integer
-  
-        Readonly Property AreaInMetresSquared    As Double
-        Readonly Property VolumneInMetresQubed   As Double
-     
-  
-  End Interface
+    Public Interface IBus
+
+        ReadOnly Property Id As Integer
+
+        Property Model As String
+        Property FloorType As String
+        Property EngineType As String
+        Property LengthInMetres As Double
+        Property WidthInMetres As Double
+        Property HeightInMetres As Double
+        Property RegisteredPassengers As Integer
+        Property IsDoubleDecker As Boolean
+
+    End Interface
 
 End Namespace
 
diff --git a/VECTOAux/VectoAuxiliaries/Hvac/IBusDatabase.vb b/VECTOAux/VectoAuxiliaries/Hvac/IBusDatabase.vb
index 189a51ba00..c3088e63dd 100644
--- a/VECTOAux/VectoAuxiliaries/Hvac/IBusDatabase.vb
+++ b/VECTOAux/VectoAuxiliaries/Hvac/IBusDatabase.vb
@@ -1,17 +1,17 @@
 Namespace Hvac
 
-Public Interface IBusDatabase
+    Public Interface IBusDatabase
 
+        Function AddBus(bus As IBus) As Boolean
 
-     Function  GetBuses( busModel as string, Optional AsSelectList As Boolean=false ) As List(of IBus )
+        Function GetBuses(busModel As String, Optional AsSelectList As Boolean = False) As List(Of IBus)
 
-     Function Initialise( busFileCSV As String ) As Boolean
+        Function Initialise(busFileCSV As String) As Boolean
 
-     
-End Interface
-
-
-End Namespace
+        Function UpdateBus(id As Integer, bus As IBus) As Boolean
 
+        Function Save(filepath As String) As Boolean
 
+    End Interface
 
+End Namespace
\ No newline at end of file
diff --git a/VECTOAux/VectoAuxiliaries/Hvac/IEnvironmentalCondition.vb b/VECTOAux/VectoAuxiliaries/Hvac/IEnvironmentalCondition.vb
new file mode 100644
index 0000000000..f23b94506f
--- /dev/null
+++ b/VECTOAux/VectoAuxiliaries/Hvac/IEnvironmentalCondition.vb
@@ -0,0 +1,10 @@
+Namespace Hvac
+    Public Interface IEnvironmentalCondition
+
+        Function GetTemperature() As Double
+        Function GetSolar() As Double
+        Function GetWeighting() As Double
+        Function GetNormalisedWeighting(map As List(Of IEnvironmentalCondition)) As Double
+
+    End Interface
+End Namespace
\ No newline at end of file
diff --git a/VECTOAux/VectoAuxiliaries/Hvac/IEnvironmentalConditionsMap.vb b/VECTOAux/VectoAuxiliaries/Hvac/IEnvironmentalConditionsMap.vb
new file mode 100644
index 0000000000..705a27077b
--- /dev/null
+++ b/VECTOAux/VectoAuxiliaries/Hvac/IEnvironmentalConditionsMap.vb
@@ -0,0 +1,11 @@
+Namespace Hvac
+
+    Public Interface IEnvironmentalConditionsMap
+
+        Sub Initialise()
+
+        Function GetEnvironmentalConditions() As List(Of IEnvironmentalCondition)
+
+    End Interface
+
+End Namespace
diff --git a/VECTOAux/VectoAuxiliaries/Hvac/IHVACUserInputsConfig.vb b/VECTOAux/VectoAuxiliaries/Hvac/IHVACUserInputsConfig.vb
index f2d6529206..f37642d95a 100644
--- a/VECTOAux/VectoAuxiliaries/Hvac/IHVACUserInputsConfig.vb
+++ b/VECTOAux/VectoAuxiliaries/Hvac/IHVACUserInputsConfig.vb
@@ -15,25 +15,22 @@ Imports VectoAuxiliaries.Hvac
 
 Namespace Hvac
 
-  Public Interface IHVACUserInputsConfig
-
-  ''' <summary>
-  ''' Contains HVACSteadyStateModel
-  ''' </summary>
-  ''' <value></value>
-  ''' <returns></returns>
-  ''' <remarks></remarks>
-  Property  SteadyStateModel As IHVACSteadyStateModel
-  ''' <summary>
-  ''' PathName of the Steady State Model File
-  ''' </summary>
-  ''' <value></value>
-  ''' <returns></returns>
-  ''' <remarks></remarks>
-  Property  SSMFilePath  As string
-  Property  BusDatabasePath As String
-
-End Interface
+    Public Interface IHVACUserInputsConfig
+
+        ' Property  SteadyStateModel As IHVACSteadyStateModel
+        ''' <summary>
+        ''' PathName of the Steady State Model File
+        ''' </summary>
+        ''' <value></value>
+        ''' <returns></returns>
+        ''' <remarks></remarks>
+        Property SSMFilePath As String
+
+        Property BusDatabasePath As String
+
+        Property SSMDisabled As Boolean
+
+    End Interface
 
 End Namespace
 
diff --git a/VECTOAux/VectoAuxiliaries/Hvac/ISSMCalculate.vb b/VECTOAux/VectoAuxiliaries/Hvac/ISSMCalculate.vb
index 32327190e6..b70ec8b5f2 100644
--- a/VECTOAux/VectoAuxiliaries/Hvac/ISSMCalculate.vb
+++ b/VECTOAux/VectoAuxiliaries/Hvac/ISSMCalculate.vb
@@ -1,63 +1,63 @@
 Namespace Hvac
 
-   Public Interface ISSMCalculate
-
-       Property Run1 As ISSMRun
-       Property Run2 As ISSMRun
-
-
-       ReadOnly Property ElectricalWBase As Single
-       ReadOnly Property MechanicalWBase As Single
-       ReadOnly Property FuelPerHBase As Single
-       
-       ReadOnly Property ElectricalWAdjusted As Single
-       ReadOnly Property MechanicalWBaseAdjusted As Single
-       ReadOnly Property FuelPerHBaseAdjusted As Single
-
-
-       'BaseValues
-       '- Heating
-       ReadOnly Property BaseHeatingW_Mechanical                   As Double 
-       ReadOnly Property BaseHeatingW_ElectricalCoolingHeating     As Double 
-       ReadOnly Property BaseHeatingW_ElectricalVentilation        As Double 
-       ReadOnly Property BaseHeatingW_FuelFiredHeating             As Double
-                                                                   
-       'Cooling                                                    
-       ReadOnly Property BaseCoolingW_Mechanical                   As Double 
-       ReadOnly Property BaseCoolingW_ElectricalCoolingHeating     As Double 
-       ReadOnly Property BaseCoolingW_ElectricalVentilation        As Double 
-       ReadOnly Property BaseCoolingW_FuelFiredHeating            As Double
-       
-       'Cooling
-       ReadOnly Property BaseVentilationW_Mechanical               As Double 
-       ReadOnly Property BaseVentilationW_ElectricalCoolingHeating As Double 
-       ReadOnly Property BaseVentilationW_ElectricalVentilation    As Double 
-       ReadOnly Property BaseVentilationW_FuelFiredHeating        As Double
-  
-       
-       'TechListBenefits
-       '- Heating
-       ReadOnly Property TechListAdjustedHeatingW_Mechanical                   As Double 
-       ReadOnly Property TechListAdjustedHeatingW_ElectricalCoolingHeating     As Double 
-       ReadOnly Property TechListAdjustedHeatingW_ElectricalVentilation        As Double 
-       ReadOnly Property TechListAdjustedHeatingW_FuelFiredHeating            As Double
-                                                                               
-       'Cooling          TechListAdjusted                                      
-       ReadOnly Property TechListAdjustedCoolingW_Mechanical                   As Double 
-       ReadOnly Property TechListAdjustedCoolingW_ElectricalCoolingHeating     As Double 
-       ReadOnly Property TechListAdjustedCoolingW_ElectricalVentilation        As Double 
-       ReadOnly Property TechListAdjustedCoolingW_FuelFiredHeating            As Double
-                        
-       'Cooling          TechListAdjusted
-       ReadOnly Property TechListAdjustedVentilationW_Mechanical               As Double 
-       ReadOnly Property TechListAdjustedVentilationW_ElectricalCoolingHeating As Double 
-       ReadOnly Property TechListAdjustedVentilationW_ElectricalVentilation    As Double 
-       ReadOnly Property TechListAdjustedVentilationW_FuelFiredHeating        As Double
-   
-   
-   End interface
-
-   
+    Public Interface ISSMCalculate
+
+        Property Run1 As ISSMRun
+        Property Run2 As ISSMRun
+
+
+        ReadOnly Property ElectricalWBase As Single
+        ReadOnly Property MechanicalWBase As Single
+        ReadOnly Property FuelPerHBase As Single
+
+        ReadOnly Property ElectricalWAdjusted As Single
+        ReadOnly Property MechanicalWBaseAdjusted As Single
+        ReadOnly Property FuelPerHBaseAdjusted As Single
+
+
+        'BaseValues
+        '- Heating
+        ReadOnly Property BaseHeatingW_Mechanical As Double
+        ReadOnly Property BaseHeatingW_ElectricalCoolingHeating As Double
+        ReadOnly Property BaseHeatingW_ElectricalVentilation As Double
+        ReadOnly Property BaseHeatingW_FuelFiredHeating As Double
+
+        'Cooling                                                    
+        ReadOnly Property BaseCoolingW_Mechanical As Double
+        ReadOnly Property BaseCoolingW_ElectricalCoolingHeating As Double
+        ReadOnly Property BaseCoolingW_ElectricalVentilation As Double
+        ReadOnly Property BaseCoolingW_FuelFiredHeating As Double
+
+        'Cooling
+        ReadOnly Property BaseVentilationW_Mechanical As Double
+        ReadOnly Property BaseVentilationW_ElectricalCoolingHeating As Double
+        ReadOnly Property BaseVentilationW_ElectricalVentilation As Double
+        ReadOnly Property BaseVentilationW_FuelFiredHeating As Double
+
+
+        'TechListBenefits
+        '- Heating
+        ReadOnly Property TechListAdjustedHeatingW_Mechanical As Double
+        ReadOnly Property TechListAdjustedHeatingW_ElectricalCoolingHeating As Double
+        ReadOnly Property TechListAdjustedHeatingW_ElectricalVentilation As Double
+        ReadOnly Property TechListAdjustedHeatingW_FuelFiredHeating As Double
+
+        'Cooling          TechListAdjusted                                      
+        ReadOnly Property TechListAdjustedCoolingW_Mechanical As Double
+        ReadOnly Property TechListAdjustedCoolingW_ElectricalCoolingHeating As Double
+        ReadOnly Property TechListAdjustedCoolingW_ElectricalVentilation As Double
+        ReadOnly Property TechListAdjustedCoolingW_FuelFiredHeating As Double
+
+        'Cooling          TechListAdjusted
+        ReadOnly Property TechListAdjustedVentilationW_Mechanical As Double
+        ReadOnly Property TechListAdjustedVentilationW_ElectricalCoolingHeating As Double
+        ReadOnly Property TechListAdjustedVentilationW_ElectricalVentilation As Double
+        ReadOnly Property TechListAdjustedVentilationW_FuelFiredHeating As Double
+
+
+    End Interface
+
+
 
 End Namespace
 
diff --git a/VECTOAux/VectoAuxiliaries/Hvac/ISSMGenInputs.vb b/VECTOAux/VectoAuxiliaries/Hvac/ISSMGenInputs.vb
index 5f6889c134..fb7aebbc94 100644
--- a/VECTOAux/VectoAuxiliaries/Hvac/ISSMGenInputs.vb
+++ b/VECTOAux/VectoAuxiliaries/Hvac/ISSMGenInputs.vb
@@ -1,71 +1,75 @@
 
 Namespace Hvac
 
-  Public Interface ISSMGenInputs
-  
-    'Bus Parameterisation	
-    Property BP_BusModel 	                                     As String	
-    Property BP_NumberOfPassengers		                         As Double	
-    Property BP_BusFloorType	                                 As string
-    Readonly Property BP_BusFloorSurfaceArea                     As Double
-    Property BP_BusSurfaceAreaM2                                 As Double
-    Readonly Property BP_BusWindowSurface                        As Double
-    Property BP_BusVolume                                        As Double                 
-    Property BP_BusLength                                        As Double
-    Property BP_BusWidth                                         As Double
-    					
-    'Boundary Conditions:			
-             Property BC_GFactor				                 As Double
-    Readonly Property BC_SolarClouding				             As Double
-    Readonly Property BC_HeatPerPassengerIntoCabinW	             As Double
-             Property BC_PassengerBoundaryTemperature            As Double
-             Property BC_PassengerDensityLowFloor                As Double
-             Property BC_PassengerDensitySemiLowFloor	         As Double
-             Property BC_PassengerDensityRaisedFloor	         As Double
-    Readonly Property BC_CalculatedPassengerNumber			     As Double
-    Readonly Property BC_UValues                                 As Double
-             Property BC_HeatingBoundaryTemperature	             As Double
-             Property BC_CoolingBoundaryTemperature              As Double
-             Property BC_HighVentilation                         As Double
-             Property BC_lowVentilation	                         As Double
-    Readonly Property BC_High                                    As Double
-    Readonly Property BC_Low	                                 As Double
-    Readonly Property BC_HighVentPowerW                          As Double
-    Readonly Property BC_LowVentPowerW                           As Double
-             Property BC_SpecificVentilationPower                As Double
-             Property BC_COP			                         As Double
-             Property BC_AuxHeaterEfficiency		             As Double
-             Property BC_GCVDieselOrHeatingOil                   As Double
-             Property BC_VolumicMassDieselOrHeatingOil	         As Double
-    Readonly Property BC_WindowAreaPerUnitBusLength	             As Double
-    Readonly Property BC_FrontRearWindowArea                     As Double
-             Property BC_MaxTemperatureDeltaForLowFloorBusses    As Double
-             Property BC_MaxPossibleBenefitFromTechnologyList	 As Double
-    					
-    'EnviromentalConditions				
-    Property EC_EnviromentalTemperature                          As Double
-    Property EC_Solar   	                                     As Double
-    					                                         
-    'AC-system				                                     
-    Property AC_InCabinRoomAC_System	                         As Boolean
-    Property AC_CompressorType			                         As String
-    Property AC_CompressorCapacitykW	                         As Double
-    					
-    'Ventilation				
-    Property VEN_VentilationOnDuringHeating				         As Boolean  
-    Property VEN_VentilationWhenBothHeatingAndACInactive		 As Boolean
-    Property VEN_VentilationDuringAC			                 As Boolean
-    Property VEN_VentilationFlowSettingWhenHeatingAndACInactive	 As String
-    Property VEN_VentilationDuringHeating			             As String
-    Property VEN_VentilationDuringCooling				         As String
-    					
-    'Aux. Heater				
-    Property AH_EngineWasteHeatkW	                             As Double
-    Property AH_FuelFiredHeaterkW                                As Double
-  
-  
-  End Interface
+    Public Interface ISSMGenInputs
 
+        'Bus Parameterisation	
+        Property BP_BusModel As String
+        Property BP_NumberOfPassengers As Double
+        Property BP_BusFloorType As String
+        Property BP_DoubleDecker As Boolean
+        Property BP_BusLength As Double
+        Property BP_BusWidth As Double
+        Property BP_BusHeight As Double
+
+        ReadOnly Property BP_BusFloorSurfaceArea As Double
+        ReadOnly Property BP_BusWindowSurface As Double
+        ReadOnly Property BP_BusSurfaceAreaM2 As Double
+        ReadOnly Property BP_BusVolume As Double
+
+        'Boundary Conditions:			
+        Property BC_GFactor As Double
+        ReadOnly Property BC_SolarClouding As Double
+        ReadOnly Property BC_HeatPerPassengerIntoCabinW As Double
+        Property BC_PassengerBoundaryTemperature As Double
+        Property BC_PassengerDensityLowFloor As Double
+        Property BC_PassengerDensitySemiLowFloor As Double
+        Property BC_PassengerDensityRaisedFloor As Double
+        ReadOnly Property BC_CalculatedPassengerNumber As Double
+        ReadOnly Property BC_UValues As Double
+        Property BC_HeatingBoundaryTemperature As Double
+        Property BC_CoolingBoundaryTemperature As Double
+        Property BC_HighVentilation As Double
+        Property BC_lowVentilation As Double
+        ReadOnly Property BC_High As Double
+        ReadOnly Property BC_Low As Double
+        ReadOnly Property BC_HighVentPowerW As Double
+        ReadOnly Property BC_LowVentPowerW As Double
+        Property BC_SpecificVentilationPower As Double
+        Property BC_COP As Double
+        Property BC_AuxHeaterEfficiency As Double
+        Property BC_GCVDieselOrHeatingOil As Double
+        Property BC_VolumicMassDieselOrHeatingOil As Double
+        ReadOnly Property BC_WindowAreaPerUnitBusLength As Double
+        ReadOnly Property BC_FrontRearWindowArea As Double
+        Property BC_MaxTemperatureDeltaForLowFloorBusses As Double
+        Property BC_MaxPossibleBenefitFromTechnologyList As Double
+
+        'EnviromentalConditions				
+        Property EC_EnviromentalTemperature As Double
+        Property EC_Solar As Double
+        ReadOnly Property EC_EnvironmentalConditionsMap As IEnvironmentalConditionsMap
+        Property EC_EnviromentalConditions_BatchFile As String
+        Property EC_EnviromentalConditions_BatchEnabled As Boolean
+
+        'AC-system				                                     
+        Property AC_InCabinRoomAC_System As Boolean
+        Property AC_CompressorType As String
+        Property AC_CompressorCapacitykW As Double
+
+        'Ventilation				
+        Property VEN_VentilationOnDuringHeating As Boolean
+        Property VEN_VentilationWhenBothHeatingAndACInactive As Boolean
+        Property VEN_VentilationDuringAC As Boolean
+        Property VEN_VentilationFlowSettingWhenHeatingAndACInactive As String
+        Property VEN_VentilationDuringHeating As String
+        Property VEN_VentilationDuringCooling As String
+
+        'Aux. Heater				
+        Property AH_EngineWasteHeatkW As Double
+        Property AH_FuelFiredHeaterkW As Double
+
+    End Interface
 
 End Namespace
 
diff --git a/VECTOAux/VectoAuxiliaries/Hvac/ISSMTOOL.vb b/VECTOAux/VectoAuxiliaries/Hvac/ISSMTOOL.vb
index 43ee2f4dbe..3759f65d87 100644
--- a/VECTOAux/VectoAuxiliaries/Hvac/ISSMTOOL.vb
+++ b/VECTOAux/VectoAuxiliaries/Hvac/ISSMTOOL.vb
@@ -3,41 +3,35 @@
 Public Interface ISSMTOOL
 
 
- Property GenInputs As ISSMGenInputs
- Property TechList As ISSMTechList
- Property Calculate As ISSMCalculate
+    Property GenInputs As ISSMGenInputs
+    Property TechList As ISSMTechList
+    Property Calculate As ISSMCalculate
+    Property SSMDisabled As Boolean
 
+    ReadOnly Property ElectricalWBase As Single
+    ReadOnly Property MechanicalWBase As Single
+    ReadOnly Property FuelPerHBase As Single
 
+    ReadOnly Property ElectricalWAdjusted As Single
+    ReadOnly Property MechanicalWBaseAdjusted As Single
+    ReadOnly Property FuelPerHBaseAdjusted As Single
 
-ReadOnly Property ElectricalWBase As Single
-ReadOnly Property MechanicalWBase As Single
-ReadOnly Property FuelPerHBase As Single
+    Sub Clone(from As ISSMTOOL)
 
-ReadOnly Property ElectricalWAdjusted As Single
-ReadOnly Property MechanicalWBaseAdjusted As Single
-ReadOnly Property FuelPerHBaseAdjusted As Single
+    Function Load(filePath As String) As Boolean
 
+    Function Save(filePath As String) As Boolean
 
-Sub Clone(from As ISSMTOOL)
-
-
-Function Load(filePath As String) As Boolean
-
-Function Save(filePath As String) As Boolean
-
-Function IsEqualTo(source As ISSMTOOL) As Boolean
-
-''' <summary>
-''' This alters the waste heat and returns an adjusted fueling value
-''' </summary>
-''' <param name="AverageUseableEngineWasteHeatKW"></param>
-''' <returns></returns>
-''' <remarks></remarks>
-Function FuelPerHBaseAsjusted( AverageUseableEngineWasteHeatKW As Single ) As Single
-
-
-Event Message(ByRef sender As Object, message As String, messageType As AdvancedAuxiliaryMessageType)
+    Function IsEqualTo(source As ISSMTOOL) As Boolean
 
+    ''' <summary>
+    ''' This alters the waste heat and returns an adjusted fueling value
+    ''' </summary>
+    ''' <param name="AverageUseableEngineWasteHeatKW"></param>
+    ''' <returns></returns>
+    ''' <remarks></remarks>
+    Function FuelPerHBaseAsjusted(AverageUseableEngineWasteHeatKW As Single) As Single
 
+    Event Message(ByRef sender As Object, message As String, messageType As AdvancedAuxiliaryMessageType)
 
 End Interface
diff --git a/VECTOAux/VectoAuxiliaries/Hvac/SSMCalculate.vb b/VECTOAux/VectoAuxiliaries/Hvac/SSMCalculate.vb
index e4fccdf523..24bd22a0ca 100644
--- a/VECTOAux/VectoAuxiliaries/Hvac/SSMCalculate.vb
+++ b/VECTOAux/VectoAuxiliaries/Hvac/SSMCalculate.vb
@@ -5,527 +5,667 @@ Imports VectoAuxiliaries.Hvac
 Namespace Hvac
 
 
-Public Class SSMCalculate
-  Implements ISSMCalculate
+    Public Class SSMCalculate
+        Implements ISSMCalculate
 
-   Private ssmTOOL As ISSMTOOL
-   Private Property Run1 As ISSMRun Implements ISSMCalculate.Run1
-   Private Property Run2 As ISSMRun Implements ISSMCalculate.Run2
+        Private ssmTOOL As ISSMTOOL
+        Private Property Run1 As ISSMRun Implements ISSMCalculate.Run1
+        Private Property Run2 As ISSMRun Implements ISSMCalculate.Run2
 
-   'Constructor
-   Sub New(ssmTool As ISSMTOOL)
+        'Constructor
+        Sub New(ssmTool As ISSMTOOL)
 
-     Me.ssmTOOL = ssmTool
-     Run1 = New SSMRun(Me.ssmTOOL, 1)
-     Run2 = New SSMRun(Me.ssmTOOL, 2)
+            Me.ssmTOOL = ssmTool
+            Run1 = New SSMRun(Me.ssmTOOL, 1)
+            Run2 = New SSMRun(Me.ssmTOOL, 2)
 
-   End Sub
+        End Sub
 
-   #Region "Main Outputs"
+#Region "Main Outputs"
 
-          'BASE RESULTS
-          Public ReadOnly Property ElectricalWBase As Single Implements ISSMCalculate.ElectricalWBase
+        'BASE RESULTS
+        Public ReadOnly Property ElectricalWBase As Single Implements ISSMCalculate.ElectricalWBase
             Get
-              '=(SUM(H84)/C33)+SUM(I83:I85)
-              
-              Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
-              
-              'Dim H84  As Double = BaseCoolingW_ElectricalCoolingHeating
-              'Dim C33  As Double = gen.BC_COP   
-              Dim BaseVentilation As Double = BaseHeatingW_ElectricalVentilation + BaseCoolingW_ElectricalVentilation + BaseVentilationW_ElectricalVentilation   ' SUM(I83:I85)        
-              
-              Return (BaseCoolingW_ElectricalCoolingHeating / gen.BC_COP) + BaseVentilation
 
-            End Get
-          End Property
-          Public ReadOnly Property MechanicalWBase As Single Implements ISSMCalculate.MechanicalWBase
-            Get
-              '=F84/C33
-             
-               Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
-             
-              'Dim F84 As Double = BaseCoolingW_Mechanical
-              'Dim C33  As Double = gen.BC_COP 
-             
-               Return BaseCoolingW_Mechanical / gen.BC_COP
-             
-              End Get
-          End Property
-          Public ReadOnly Property FuelLPerHBase As Single Implements ISSMCalculate.FuelPerHBase
-            Get
+                Dim ElectricalWBaseWeightedAverage As Single
+                Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
+                Dim EC_EnviromentalTemperatureBefore As Double = gen.EC_EnviromentalTemperature
+                Dim EC_SolarBefore As Double = gen.EC_Solar
+
+                If Not gen.EC_EnviromentalConditions_BatchEnabled Then
+                    ElectricalWBaseWeightedAverage = CalculateElectricalWBase(gen, gen.EC_EnviromentalTemperature, gen.EC_Solar, 1)
+                Else
+                    For Each envCondition As IEnvironmentalCondition In gen.EC_EnvironmentalConditionsMap.GetEnvironmentalConditions()
+                        ElectricalWBaseWeightedAverage += CalculateElectricalWBase(gen, envCondition.GetTemperature(), envCondition.GetSolar(), envCondition.GetNormalisedWeighting(gen.EC_EnvironmentalConditionsMap.GetEnvironmentalConditions()))
+                    Next
+                    gen.EC_EnviromentalTemperature = EC_EnviromentalTemperatureBefore
+                    gen.EC_Solar = EC_SolarBefore
+                End If
 
-               '=ABS((J83/1000)*(1/(C36*C35))/C34)
-             
-               Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
-               Dim J83 As Double = BaseHeatingW_FuelFiredHeating
-               Dim C34 As Double = gen.BC_AuxHeaterEfficiency
-               Dim C35 As Double = gen.BC_GCVDieselOrHeatingOil
-               Dim C36 As Double = gen.BC_VolumicMassDieselOrHeatingOil
-             
-               Return Math.Abs((BaseHeatingW_FuelFiredHeating / 1000) * (1 / (gen.BC_VolumicMassDieselOrHeatingOil * gen.BC_GCVDieselOrHeatingOil)) / gen.BC_AuxHeaterEfficiency)
+                Return ElectricalWBaseWeightedAverage
 
             End Get
         End Property
-                 
-          'ADJUSTED RESULTS
-          Public ReadOnly Property ElectricalWAdjusted As Single Implements ISSMCalculate.ElectricalWAdjusted
+        Public ReadOnly Property MechanicalWBase As Single Implements ISSMCalculate.MechanicalWBase
             Get
-              '=((H84*(1-H90))/C33)+(I83*(1-I89))+(I84*(1-I90))+(I85*(1-I91)) + IF('TECH LIST INPUT'!D36="electrical",-'TECH LIST INPUT'!R93*1000,0)
 
-               Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
-               Dim tl As ISSMTechList = ssmTOOL.TechList
+                Dim MechanicalWBaseWeightedAverage As Single
+                Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
+                Dim EC_EnviromentalTemperatureBefore As Double = gen.EC_EnviromentalTemperature
+                Dim EC_SolarBefore As Double = gen.EC_Solar
 
-               Dim cnt As Integer = tl.TechLines.Where(Function(f) f.LineType = TechLineType.DriverACElectrical).Count()
-               Dim DACElectrical As Boolean = tl.TechLines.Where(Function(f) f.LineType = TechLineType.DriverACElectrical AndAlso f.OnVehicle).Count() = 1
-               Dim AdjustedAddition As Double = If(Not DACElectrical, 0, -tl.CValueVariationKW * 1000)
+                If Not gen.EC_EnviromentalConditions_BatchEnabled Then
+                    MechanicalWBaseWeightedAverage = CalculateMechanicalWBase(gen, gen.EC_EnviromentalTemperature, gen.EC_Solar, 1)
+                Else
+                    For Each envCondition As IEnvironmentalCondition In gen.EC_EnvironmentalConditionsMap.GetEnvironmentalConditions()
+                        MechanicalWBaseWeightedAverage += CalculateMechanicalWBase(gen, envCondition.GetTemperature(), envCondition.GetSolar(), envCondition.GetNormalisedWeighting(gen.EC_EnvironmentalConditionsMap.GetEnvironmentalConditions()))
+                    Next
+                    gen.EC_EnviromentalTemperature = EC_EnviromentalTemperatureBefore
+                    gen.EC_Solar = EC_SolarBefore
+                End If
 
-              Dim H84  As Double = BaseCoolingW_ElectricalCoolingHeating
-              Dim H90  As Double = TechListAdjustedCoolingW_ElectricalCoolingHeating
-              Dim C33  As Double = gen.BC_COP 
+                Return MechanicalWBaseWeightedAverage
 
-              Dim I83  As Double = BaseHeatingW_ElectricalVentilation
-              Dim I84  As Double = BaseCoolingW_ElectricalVentilation
-              Dim I85  As Double = BaseVentilationW_ElectricalVentilation
-              Dim I89  As Double = TechListAdjustedHeatingW_ElectricalVentilation
-              Dim I90  As Double = TechListAdjustedCoolingW_ElectricalVentilation
-              Dim I91  As Double = TechListAdjustedVentilationW_ElectricalVentilation
+            End Get
+        End Property
+        Public ReadOnly Property FuelLPerHBase As Single Implements ISSMCalculate.FuelPerHBase
+            Get
 
+                Dim FuelLPerHBaseWeightedAverage As Single
+                Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
+                Dim EC_EnviromentalTemperatureBefore As Double = gen.EC_EnviromentalTemperature
+                Dim EC_SolarBefore As Double = gen.EC_Solar
 
-              Return ((H84*(1-H90))/C33)+(I83*(1-I89))+(I84*(1-I90))+(I85*(1-I91)) +
-                            AdjustedAddition
+                If Not gen.EC_EnviromentalConditions_BatchEnabled Then
+                    FuelLPerHBaseWeightedAverage = CalculateFuelLPerHBase(gen, gen.EC_EnviromentalTemperature, gen.EC_Solar, 1)
+                Else
+                    For Each envCondition As IEnvironmentalCondition In gen.EC_EnvironmentalConditionsMap.GetEnvironmentalConditions()
+                        FuelLPerHBaseWeightedAverage += CalculateFuelLPerHBase(gen, envCondition.GetTemperature(), envCondition.GetSolar(), envCondition.GetNormalisedWeighting(gen.EC_EnvironmentalConditionsMap.GetEnvironmentalConditions()))
+                    Next
+                    gen.EC_EnviromentalTemperature = EC_EnviromentalTemperatureBefore
+                    gen.EC_Solar = EC_SolarBefore
+                End If
+
+                Return FuelLPerHBaseWeightedAverage
 
             End Get
         End Property
-          Public ReadOnly Property MechanicalWBaseAdjusted As Single Implements ISSMCalculate.MechanicalWBaseAdjusted
+
+        'ADJUSTED RESULTS
+        Public ReadOnly Property ElectricalWAdjusted As Single Implements ISSMCalculate.ElectricalWAdjusted
             Get
+                Dim ElectricalWAdjustedAverage As Single
+                Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
+                Dim tl As ISSMTechList = ssmTOOL.TechList
+                Dim EC_EnviromentalTemperatureBefore As Double = gen.EC_EnviromentalTemperature
+                Dim EC_SolarBefore As Double = gen.EC_Solar
+
+                If Not gen.EC_EnviromentalConditions_BatchEnabled Then
+                    ElectricalWAdjustedAverage = CalculateElectricalWAdjusted(gen, tl, gen.EC_EnviromentalTemperature, gen.EC_Solar, 1)
+                Else
+                    For Each envCondition As IEnvironmentalCondition In gen.EC_EnvironmentalConditionsMap.GetEnvironmentalConditions()
+                        ElectricalWAdjustedAverage += CalculateElectricalWAdjusted(gen, tl, envCondition.GetTemperature(), envCondition.GetSolar(), envCondition.GetNormalisedWeighting(gen.EC_EnvironmentalConditionsMap.GetEnvironmentalConditions()))
+                    Next
+                    gen.EC_EnviromentalTemperature = EC_EnviromentalTemperatureBefore
+                    gen.EC_Solar = EC_SolarBefore
+                End If
 
-              '=(F84*(1-F90)/C33) + IF('TECH LIST INPUT'!D36="mechanical",-'TECH LIST INPUT'!R93*1000,0)
+                Return ElectricalWAdjustedAverage
 
-               Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
-               Dim tl As ISSMTechList = ssmTOOL.TechList
+            End Get
+        End Property
+        Public ReadOnly Property MechanicalWBaseAdjusted As Single Implements ISSMCalculate.MechanicalWBaseAdjusted
+            Get
 
-               Dim DACMechanical As Boolean = tl.TechLines.Where(Function(f) f.LineType = TechLineType.DriverACMechanical AndAlso f.OnVehicle).Count() = 1
-               Dim AdjustedAddition As Double = If(Not DACMechanical, 0, tl.CValueVariationKW * 1000)
+                Dim MechanicalWBaseAdjustedAverage As Single
+                Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
+                Dim tl As ISSMTechList = ssmTOOL.TechList
+                Dim EC_EnviromentalTemperatureBefore As Double = gen.EC_EnviromentalTemperature
+                Dim EC_SolarBefore As Double = gen.EC_Solar
 
-               'Dim F84 As Double  = BaseCoolingW_Mechanical
-               'Dim F90 As Double  = TechListAdjustedCoolingW_Mechanical
-               'Dim C33 As Double  = gen.BC_COP
+                If Not gen.EC_EnviromentalConditions_BatchEnabled Then
+                    MechanicalWBaseAdjustedAverage = CalculateMechanicalWBaseAdjusted(gen, tl, gen.EC_EnviromentalTemperature, gen.EC_Solar, 1)
+                Else
+                    For Each envCondition As IEnvironmentalCondition In gen.EC_EnvironmentalConditionsMap.GetEnvironmentalConditions()
+                        MechanicalWBaseAdjustedAverage += CalculateMechanicalWBaseAdjusted(gen, tl, envCondition.GetTemperature(), envCondition.GetSolar(), envCondition.GetNormalisedWeighting(gen.EC_EnvironmentalConditionsMap.GetEnvironmentalConditions()))
+                    Next
+                    gen.EC_EnviromentalTemperature = EC_EnviromentalTemperatureBefore
+                    gen.EC_Solar = EC_SolarBefore
+                End If
 
-               Return (BaseCoolingW_Mechanical * (1 - TechListAdjustedCoolingW_Mechanical) / gen.BC_COP) + AdjustedAddition
+                Return MechanicalWBaseAdjustedAverage
 
             End Get
 
         End Property
-          Public ReadOnly Property FuelLPerHBaseAdjusted As Single Implements ISSMCalculate.FuelPerHBaseAdjusted
+        Public ReadOnly Property FuelLPerHBaseAdjusted As Single Implements ISSMCalculate.FuelPerHBaseAdjusted
             Get
-            '=ABS((IF(AND(M79<0,M80<0),VLOOKUP(MAX(M79:M80),M79:P80,4),0)/1000)*(1/(C36*C35))/C34)
-
-             Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
-
-             Dim C34 As Double = gen.BC_AuxHeaterEfficiency
-             Dim C35 As Double = gen.BC_GCVDieselOrHeatingOil
-             Dim C36 As Double = gen.BC_VolumicMassDieselOrHeatingOil
-             Dim result As Double
+                Dim FuelLPerHBaseAdjustedAverage As Single
+                Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
+                Dim tl As ISSMTechList = ssmTOOL.TechList
+                Dim EC_EnviromentalTemperatureBefore As Double = gen.EC_EnviromentalTemperature
+                Dim EC_SolarBefore As Double = gen.EC_Solar
 
-             If Run1.TotalW < 0 AndAlso Run1.TotalW < 0 Then
-                 result = If(Run1.TotalW > Run2.TotalW, Run1.TechListAmendedFuelW, Run2.TechListAmendedFuelW) / 1000
+                If Not gen.EC_EnviromentalConditions_BatchEnabled Then
+                    FuelLPerHBaseAdjustedAverage = CalculateFuelLPerHBaseAdjusted(gen, tl, gen.EC_EnviromentalTemperature, gen.EC_Solar, 1)
                 Else
-                 result = 0
-             End If
+                    For Each envCondition As IEnvironmentalCondition In gen.EC_EnvironmentalConditionsMap.GetEnvironmentalConditions()
+                        FuelLPerHBaseAdjustedAverage += CalculateFuelLPerHBaseAdjusted(gen, tl, envCondition.GetTemperature(), envCondition.GetSolar(), envCondition.GetNormalisedWeighting(gen.EC_EnvironmentalConditionsMap.GetEnvironmentalConditions()))
+                    Next
+                    gen.EC_EnviromentalTemperature = EC_EnviromentalTemperatureBefore
+                    gen.EC_Solar = EC_SolarBefore
+                End If
 
-             Return Math.Abs(result * (1 / (gen.BC_VolumicMassDieselOrHeatingOil * gen.BC_GCVDieselOrHeatingOil)) / gen.BC_AuxHeaterEfficiency)
+                Return FuelLPerHBaseAdjustedAverage
 
             End Get
         End Property
-         
 
-        #End Region
-   
-   #Region "Staging Calculations"
+
+#End Region
+
+#Region "Staging Calculations"
 
         'Base Values
-          Public ReadOnly Property BaseHeatingW_Mechanical As Double Implements ISSMCalculate.BaseHeatingW_Mechanical
+        Public ReadOnly Property BaseHeatingW_Mechanical As Double Implements ISSMCalculate.BaseHeatingW_Mechanical
             Get
-              Return Nothing
+                Return Nothing
             End Get
-         End Property
-          Public ReadOnly Property BaseHeatingW_ElectricalCoolingHeating As Double Implements ISSMCalculate.BaseHeatingW_ElectricalCoolingHeating
+        End Property
+        Public ReadOnly Property BaseHeatingW_ElectricalCoolingHeating As Double Implements ISSMCalculate.BaseHeatingW_ElectricalCoolingHeating
             Get
-               Return Nothing
+                Return Nothing
             End Get
-          End Property
-          Public ReadOnly Property BaseHeatingW_ElectricalVentilation As Double Implements ISSMCalculate.BaseHeatingW_ElectricalVentilation
+        End Property
+        Public ReadOnly Property BaseHeatingW_ElectricalVentilation As Double Implements ISSMCalculate.BaseHeatingW_ElectricalVentilation
             Get
-              '=IF(AND(M79<0,M80<0),IF(AND(C52="yes",C56="high"),C30,IF(AND(C52="yes",C56="low"),C31,0)),0)
+                '=IF(AND(M79<0,M80<0),IF(AND(C52="yes",C56="high"),C30,IF(AND(C52="yes",C56="low"),C31,0)),0)
 
-               Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
+                Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
 
-              'Dim C30 = gen.BC_HighVentPowerW
-              'Dim C31 = gen.BC_LowVentPowerW
-              'Dim C52 = gen.VEN_VentilationONDuringHeating
-              'Dim C56 = gen.VEN_VentilationDuringHeating
-              'Dim M79 = Me.Run1.TotalW
-              'Dim M80 = Me.Run2.TotalW
+                'Dim C30 = gen.BC_HighVentPowerW
+                'Dim C31 = gen.BC_LowVentPowerW
+                'Dim C52 = gen.VEN_VentilationONDuringHeating
+                'Dim C56 = gen.VEN_VentilationDuringHeating
+                'Dim M79 = Me.Run1.TotalW
+                'Dim M80 = Me.Run2.TotalW
 
-              Dim res As Double
+                Dim res As Double
 
-              res = If(Run1.TotalW < 0 AndAlso Run2.TotalW < 0, _
-                      If(gen.VEN_VentilationOnDuringHeating AndAlso gen.VEN_VentilationDuringHeating = "high", _
+                res = If(Run1.TotalW < 0 AndAlso Run2.TotalW < 0, _
+                        If(gen.VEN_VentilationOnDuringHeating AndAlso gen.VEN_VentilationDuringHeating = "high", _
                                         gen.BC_HighVentPowerW, _
                                         If(gen.VEN_VentilationOnDuringHeating AndAlso gen.VEN_VentilationDuringHeating = "low", gen.BC_LowVentPowerW, 0)), 0)
 
 
-              Return res
+                Return res
 
             End Get
 
-          End Property
-          Public ReadOnly Property BaseHeatingW_FuelFiredHeating As Double Implements ISSMCalculate.BaseHeatingW_FuelFiredHeating
+        End Property
+        Public ReadOnly Property BaseHeatingW_FuelFiredHeating As Double Implements ISSMCalculate.BaseHeatingW_FuelFiredHeating
 
             Get
 
-               '=IF(AND(M79<0,M80<0),VLOOKUP(MAX(M79:M80),M79:O80,3),0)
+                '=IF(AND(M79<0,M80<0),VLOOKUP(MAX(M79:M80),M79:O80,3),0)
 
-               'Dim M79 = Me.Run1.TotalW
-               'Dim M80 = Me.Run2.TotalW
-               'VLOOKUP(MAX(M79:M80),M79:O80  => VLOOKUP ( lookupValue, tableArray, colIndex, rangeLookup )
+                'Dim M79 = Me.Run1.TotalW
+                'Dim M80 = Me.Run2.TotalW
+                'VLOOKUP(MAX(M79:M80),M79:O80  => VLOOKUP ( lookupValue, tableArray, colIndex, rangeLookup )
 
-               'If both Run TotalW values are >=0 then return FuelW from Run with largest TotalW value, else return 0
-               If (Run1.TotalW < 0 AndAlso Run2.TotalW < 0) Then
+                'If both Run TotalW values are >=0 then return FuelW from Run with largest TotalW value, else return 0
+                If (Run1.TotalW < 0 AndAlso Run2.TotalW < 0) Then
 
-                  Return If(Run1.TotalW > Run2.TotalW, Run1.FuelW, Run2.FuelW)
+                    Return If(Run1.TotalW > Run2.TotalW, Run1.FuelW, Run2.FuelW)
 
-               Else
+                Else
 
-                 Return 0
+                    Return 0
 
-               End If
+                End If
 
             End Get
 
-          End Property
-        
-          Public ReadOnly Property BaseCoolingW_Mechanical As Double Implements ISSMCalculate.BaseCoolingW_Mechanical
+        End Property
+
+        Public ReadOnly Property BaseCoolingW_Mechanical As Double Implements ISSMCalculate.BaseCoolingW_Mechanical
             Get
-               '=IF(C48="mechanical", IF(AND(M79>0,M80>0),MIN(M79:M80),0),0)
+                '=IF(C48="mechanical", IF(AND(M79>0,M80>0),MIN(M79:M80),0),0)
 
-               Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
+                Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
 
-              'Dim C48 = gen.AC_CompressorType 
-              'Dim M79 = Me.Run1.TotalW
-              'Dim M80 = Me.Run2.TotalW
+                'Dim C48 = gen.AC_CompressorType 
+                'Dim M79 = Me.Run1.TotalW
+                'Dim M80 = Me.Run2.TotalW
 
 
-              Return If(gen.AC_CompressorType.ToLower = "mechanical", If((Run1.TotalW > 0 AndAlso Run2.TotalW > 0), Math.Min(Run1.TotalW, Run2.TotalW), 0), 0)
+                Return If(gen.AC_CompressorType.ToLower = "mechanical", If((Run1.TotalW > 0 AndAlso Run2.TotalW > 0), Math.Min(Run1.TotalW, Run2.TotalW), 0), 0)
 
 
 
             End Get
-          End Property
-          Public ReadOnly Property BaseCoolingW_ElectricalCoolingHeating As Double Implements ISSMCalculate.BaseCoolingW_ElectricalCoolingHeating
+        End Property
+        Public ReadOnly Property BaseCoolingW_ElectricalCoolingHeating As Double Implements ISSMCalculate.BaseCoolingW_ElectricalCoolingHeating
             Get
-            '=IF(C48="mechanical",0,IF(AND(M79>0,M80>0),MIN(M79:M80),0))
+                '=IF(C48="mechanical",0,IF(AND(M79>0,M80>0),MIN(M79:M80),0))
 
-               Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
+                Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
 
-               'Dim C48 = gen.AC_CompressorType 
-               'Dim M79 = Me.Run1.TotalW
-               'Dim M80 = Me.Run2.TotalW
+                'Dim C48 = gen.AC_CompressorType 
+                'Dim M79 = Me.Run1.TotalW
+                'Dim M80 = Me.Run2.TotalW
 
-               Return If(gen.AC_CompressorType.ToLower = "mechanical", 0, If((Run1.TotalW > 0 AndAlso Run2.TotalW > 0), Math.Min(Run1.TotalW, Run2.TotalW), 0))
+                Return If(gen.AC_CompressorType.ToLower = "mechanical", 0, If((Run1.TotalW > 0 AndAlso Run2.TotalW > 0), Math.Min(Run1.TotalW, Run2.TotalW), 0))
 
             End Get
-          End Property
-          Public ReadOnly Property BaseCoolingW_ElectricalVentilation As Double Implements ISSMCalculate.BaseCoolingW_ElectricalVentilation
+        End Property
+        Public ReadOnly Property BaseCoolingW_ElectricalVentilation As Double Implements ISSMCalculate.BaseCoolingW_ElectricalVentilation
             Get
-             '=IF(AND(M79>0,M80>0),IF(AND(C54="yes",C57="high"),C30,IF(AND(C54="yes",C57="low"),C31,0)),0)
+                '=IF(AND(M79>0,M80>0),IF(AND(C54="yes",C57="high"),C30,IF(AND(C54="yes",C57="low"),C31,0)),0)
 
-               Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
+                Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
 
-               'Dim C30 = gen.BC_HighVentPowerW
-               'Dim C31 = gen.BC_LowVentPowerW
-               'Dim C54 = gen.VEN_VentilationDuringAC
-               'Dim C57 = gen.VEN_VentilationDuringCooling
-               'Dim M79 = Me.Run1.TotalW
-               'Dim M80 = Me.Run2.TotalW
+                'Dim C30 = gen.BC_HighVentPowerW
+                'Dim C31 = gen.BC_LowVentPowerW
+                'Dim C54 = gen.VEN_VentilationDuringAC
+                'Dim C57 = gen.VEN_VentilationDuringCooling
+                'Dim M79 = Me.Run1.TotalW
+                'Dim M80 = Me.Run2.TotalW
 
 
-               Return If(Run1.TotalW > 0 AndAlso Run2.TotalW > 0, _
-                           If(gen.VEN_VentilationDuringAC AndAlso gen.VEN_VentilationDuringCooling.ToLower = "high", gen.BC_HighVentPowerW, _
+                Return If(Run1.TotalW > 0 AndAlso Run2.TotalW > 0, _
+                            If(gen.VEN_VentilationDuringAC AndAlso gen.VEN_VentilationDuringCooling.ToLower = "high", gen.BC_HighVentPowerW, _
                                     If(gen.VEN_VentilationDuringAC AndAlso gen.VEN_VentilationDuringCooling.ToLower = "low", gen.BC_LowVentPowerW, 0)), 0)
 
 
             End Get
-          End Property
-          Public ReadOnly Property BaseCoolingW_FuelFiredHeating As Double Implements ISSMCalculate.BaseCoolingW_FuelFiredHeating
+        End Property
+        Public ReadOnly Property BaseCoolingW_FuelFiredHeating As Double Implements ISSMCalculate.BaseCoolingW_FuelFiredHeating
             Get
-               Return 0
+                Return 0
             End Get
         End Property
-        
-          Public ReadOnly Property BaseVentilationW_Mechanical As Double Implements ISSMCalculate.BaseVentilationW_Mechanical
+
+        Public ReadOnly Property BaseVentilationW_Mechanical As Double Implements ISSMCalculate.BaseVentilationW_Mechanical
             Get
-             Return Nothing
+                Return Nothing
             End Get
-          End Property
-          Public ReadOnly Property BaseVentilationW_ElectricalCoolingHeating As Double Implements ISSMCalculate.BaseVentilationW_ElectricalCoolingHeating
+        End Property
+        Public ReadOnly Property BaseVentilationW_ElectricalCoolingHeating As Double Implements ISSMCalculate.BaseVentilationW_ElectricalCoolingHeating
             Get
-              Return Nothing
+                Return Nothing
             End Get
-          End Property
-          Public ReadOnly Property BaseVentilationW_ElectricalVentilation As Double Implements ISSMCalculate.BaseVentilationW_ElectricalVentilation
+        End Property
+        Public ReadOnly Property BaseVentilationW_ElectricalVentilation As Double Implements ISSMCalculate.BaseVentilationW_ElectricalVentilation
             Get
-             '=IF(AND(M79>0,M80<0),IF(AND(C53="yes",C55="high"),C30,IF(AND(C53="yes",C55="low"),C31,0)),0)
+                '=IF(AND(M79>0,M80<0),IF(AND(C53="yes",C55="high"),C30,IF(AND(C53="yes",C55="low"),C31,0)),0)
 
-             Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
+                Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
 
-            'Dim C30 = gen.BC_HighVentPowerW
-            'Dim C31 = gen.BC_LowVentPowerW
-            'Dim C53 = gen.VEN_VentilationWhenBothHeatingAndACInactive
-            'Dim C55 = gen.VEN_VentilationFlowSettingWhenHeatingAndACInactive
-            'Dim M79 = Me.Run1.TotalW
-            'Dim M80 = Me.Run2.TotalW
+                'Dim C30 = gen.BC_HighVentPowerW
+                'Dim C31 = gen.BC_LowVentPowerW
+                'Dim C53 = gen.VEN_VentilationWhenBothHeatingAndACInactive
+                'Dim C55 = gen.VEN_VentilationFlowSettingWhenHeatingAndACInactive
+                'Dim M79 = Me.Run1.TotalW
+                'Dim M80 = Me.Run2.TotalW
 
 
-             Return If((Run1.TotalW > 0 AndAlso Run2.TotalW < 0), If(gen.VEN_VentilationWhenBothHeatingAndACInactive AndAlso gen.VEN_VentilationFlowSettingWhenHeatingAndACInactive.ToLower = "high", gen.BC_HighVentPowerW, _
-                               If(gen.VEN_VentilationWhenBothHeatingAndACInactive AndAlso gen.VEN_VentilationFlowSettingWhenHeatingAndACInactive.ToLower = "low", gen.BC_LowVentPowerW, 0)), 0)
+                Return If((Run1.TotalW > 0 AndAlso Run2.TotalW < 0), If(gen.VEN_VentilationWhenBothHeatingAndACInactive AndAlso gen.VEN_VentilationFlowSettingWhenHeatingAndACInactive.ToLower = "high", gen.BC_HighVentPowerW, _
+                                If(gen.VEN_VentilationWhenBothHeatingAndACInactive AndAlso gen.VEN_VentilationFlowSettingWhenHeatingAndACInactive.ToLower = "low", gen.BC_LowVentPowerW, 0)), 0)
 
             End Get
-          End Property
-          Public ReadOnly Property BaseVentilationW_FuelFiredHeating As Double Implements ISSMCalculate.BaseVentilationW_FuelFiredHeating
+        End Property
+        Public ReadOnly Property BaseVentilationW_FuelFiredHeating As Double Implements ISSMCalculate.BaseVentilationW_FuelFiredHeating
             Get
-             Return 0
+                Return 0
             End Get
-          End Property
-                
-          'Adjusted Values
-          Public ReadOnly Property TechListAdjustedHeatingW_Mechanical As Double Implements ISSMCalculate.TechListAdjustedHeatingW_Mechanical
+        End Property
+
+        'Adjusted Values
+        Public ReadOnly Property TechListAdjustedHeatingW_Mechanical As Double Implements ISSMCalculate.TechListAdjustedHeatingW_Mechanical
             Get
-             Return Nothing
+                Return Nothing
             End Get
-          End Property
-          Public ReadOnly Property TechListAdjustedHeatingW_ElectricalCoolingHeating As Double Implements ISSMCalculate.TechListAdjustedHeatingW_ElectricalCoolingHeating
+        End Property
+        Public ReadOnly Property TechListAdjustedHeatingW_ElectricalCoolingHeating As Double Implements ISSMCalculate.TechListAdjustedHeatingW_ElectricalCoolingHeating
             Get
-             Return Nothing
+                Return Nothing
             End Get
-          End Property
-          Public ReadOnly Property TechListAdjustedHeatingW_ElectricalVentilation As Double Implements ISSMCalculate.TechListAdjustedHeatingW_ElectricalVentilation
+        End Property
+        Public ReadOnly Property TechListAdjustedHeatingW_ElectricalVentilation As Double Implements ISSMCalculate.TechListAdjustedHeatingW_ElectricalVentilation
             Get
-            '=IF('TECH LIST INPUT'!O92>0,MIN('TECH LIST INPUT'!O92,C40),MAX('TECH LIST INPUT'!O92,-C40))
+                '=IF('TECH LIST INPUT'!O92>0,MIN('TECH LIST INPUT'!O92,C40),MAX('TECH LIST INPUT'!O92,-C40))
                 Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
                 Dim tl As ISSMTechList = ssmTOOL.TechList
 
-             'TECH LIST INPUT'!O92
-             'Dim C40 As Double   =  gen.BC_MaxPossibleBenefitFromTechnologyList
-             'Dim TLO92 As Double = tl.VHValueVariation
+                'TECH LIST INPUT'!O92
+                'Dim C40 As Double   =  gen.BC_MaxPossibleBenefitFromTechnologyList
+                'Dim TLO92 As Double = tl.VHValueVariation
 
 
-             Return If(tl.VHValueVariation > 0, Math.Min(tl.VHValueVariation, gen.BC_MaxPossibleBenefitFromTechnologyList), Math.Max(tl.VHValueVariation, -gen.BC_MaxPossibleBenefitFromTechnologyList))
+                Return If(tl.VHValueVariation > 0, Math.Min(tl.VHValueVariation, gen.BC_MaxPossibleBenefitFromTechnologyList), Math.Max(tl.VHValueVariation, -gen.BC_MaxPossibleBenefitFromTechnologyList))
 
             End Get
 
-          End Property
-          Public ReadOnly Property TechListAdjustedHeatingW_FuelFiredHeating As Double Implements ISSMCalculate.TechListAdjustedHeatingW_FuelFiredHeating
+        End Property
+        Public ReadOnly Property TechListAdjustedHeatingW_FuelFiredHeating As Double Implements ISSMCalculate.TechListAdjustedHeatingW_FuelFiredHeating
             Get
-            '=IF('TECH LIST INPUT'!N92>0,MIN('TECH LIST INPUT'!N92,C40),MAX('TECH LIST INPUT'!N92,-C40))
+                '=IF('TECH LIST INPUT'!N92>0,MIN('TECH LIST INPUT'!N92,C40),MAX('TECH LIST INPUT'!N92,-C40))
 
 
-              Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
-              Dim tl As ISSMTechList = ssmTOOL.TechList
+                Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
+                Dim tl As ISSMTechList = ssmTOOL.TechList
 
-             'TECH LIST INPUT'!N92
-             'Dim C40 As Double   =  gen.BC_MaxPossibleBenefitFromTechnologyList
-             'Dim TLN92 As Double =  tl.HValueVariation
+                'TECH LIST INPUT'!N92
+                'Dim C40 As Double   =  gen.BC_MaxPossibleBenefitFromTechnologyList
+                'Dim TLN92 As Double =  tl.HValueVariation
 
 
-             Return If(tl.HValueVariation > 0, Math.Min(tl.HValueVariation, gen.BC_MaxPossibleBenefitFromTechnologyList), Math.Max(tl.HValueVariation, -gen.BC_MaxPossibleBenefitFromTechnologyList))
+                Return If(tl.HValueVariation > 0, Math.Min(tl.HValueVariation, gen.BC_MaxPossibleBenefitFromTechnologyList), Math.Max(tl.HValueVariation, -gen.BC_MaxPossibleBenefitFromTechnologyList))
 
 
             End Get
 
-          End Property
-        
-          Public ReadOnly Property TechListAdjustedCoolingW_Mechanical As Double Implements ISSMCalculate.TechListAdjustedCoolingW_Mechanical
+        End Property
+
+        Public ReadOnly Property TechListAdjustedCoolingW_Mechanical As Double Implements ISSMCalculate.TechListAdjustedCoolingW_Mechanical
             Get
-              '=IF(IF(C48="mechanical",'TECH LIST INPUT'!R92,0)>0,MIN(IF(C48="mechanical",'TECH LIST INPUT'!R92,0),C40),MAX(IF(C48="mechanical",'TECH LIST INPUT'!R92,0),-C40))
+                '=IF(IF(C48="mechanical",'TECH LIST INPUT'!R92,0)>0,MIN(IF(C48="mechanical",'TECH LIST INPUT'!R92,0),C40),MAX(IF(C48="mechanical",'TECH LIST INPUT'!R92,0),-C40))
 
-              Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
-              Dim tl As ISSMTechList = ssmTOOL.TechList
-              Dim result As Double
-              'Dim TLR92 As Double =  tl.CValueVariation 'TECH LIST INPUT'!R92
-              'Dim C40 As Double   =  gen.BC_MaxPossibleBenefitFromTechnologyList
-              'Dim C48 As string   =  gen.AC_CompressorType
+                Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
+                Dim tl As ISSMTechList = ssmTOOL.TechList
+                Dim result As Double
+                'Dim TLR92 As Double =  tl.CValueVariation 'TECH LIST INPUT'!R92
+                'Dim C40 As Double   =  gen.BC_MaxPossibleBenefitFromTechnologyList
+                'Dim C48 As string   =  gen.AC_CompressorType
 
-              result = If(If(gen.AC_CompressorType.ToLower = "mechanical", tl.CValueVariation, 0) > 0, _
-                              Math.Min(If(gen.AC_CompressorType = "mechanical", tl.CValueVariation, 0), gen.BC_MaxPossibleBenefitFromTechnologyList), _
-                              Math.Max(If(gen.AC_CompressorType = "mechanical", tl.CValueVariation, 0), -gen.BC_MaxPossibleBenefitFromTechnologyList))
+                result = If(If(gen.AC_CompressorType.ToLower = "mechanical", tl.CValueVariation, 0) > 0, _
+                                Math.Min(If(gen.AC_CompressorType = "mechanical", tl.CValueVariation, 0), gen.BC_MaxPossibleBenefitFromTechnologyList), _
+                                Math.Max(If(gen.AC_CompressorType = "mechanical", tl.CValueVariation, 0), -gen.BC_MaxPossibleBenefitFromTechnologyList))
 
-              Return result
+                Return result
 
             End Get
-          End Property
-          Public ReadOnly Property TechListAdjustedCoolingW_ElectricalCoolingHeating As Double Implements ISSMCalculate.TechListAdjustedCoolingW_ElectricalCoolingHeating
+        End Property
+        Public ReadOnly Property TechListAdjustedCoolingW_ElectricalCoolingHeating As Double Implements ISSMCalculate.TechListAdjustedCoolingW_ElectricalCoolingHeating
             Get
-            '=IF(IF(C48="mechanical",0,'TECH LIST INPUT'!R92)>0,MIN(IF(C48="mechanical",0,'TECH LIST INPUT'!R92),C40),MAX(IF(C48="mechanical",0,'TECH LIST INPUT'!R92),-C40))
+                '=IF(IF(C48="mechanical",0,'TECH LIST INPUT'!R92)>0,MIN(IF(C48="mechanical",0,'TECH LIST INPUT'!R92),C40),MAX(IF(C48="mechanical",0,'TECH LIST INPUT'!R92),-C40))
 
 
-              Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
-              Dim tl As ISSMTechList = ssmTOOL.TechList
-              Dim result As Double
+                Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
+                Dim tl As ISSMTechList = ssmTOOL.TechList
+                Dim result As Double
 
-              'Dim TLR92 As Double =  tl.CValueVariation 'TECH LIST INPUT'!R92
-              'Dim C40 As Double   =  gen.BC_MaxPossibleBenefitFromTechnologyList
-              'Dim C48 As string   =  gen.AC_CompressorType
+                'Dim TLR92 As Double =  tl.CValueVariation 'TECH LIST INPUT'!R92
+                'Dim C40 As Double   =  gen.BC_MaxPossibleBenefitFromTechnologyList
+                'Dim C48 As string   =  gen.AC_CompressorType
 
-              result = If(If(gen.AC_CompressorType.ToLower = "mechanical", 0, tl.CValueVariation) > 0, _
+                result = If(If(gen.AC_CompressorType.ToLower = "mechanical", 0, tl.CValueVariation) > 0, _
                             Math.Min(If(gen.AC_CompressorType.ToLower = "mechanical", 0, tl.CValueVariation), gen.BC_MaxPossibleBenefitFromTechnologyList), _
                             Math.Max(If(gen.AC_CompressorType.ToLower = "mechanical", 0, tl.CValueVariation), -gen.BC_MaxPossibleBenefitFromTechnologyList))
 
-              Return result
+                Return result
 
             End Get
-          End Property
-          Public ReadOnly Property TechListAdjustedCoolingW_ElectricalVentilation As Double Implements ISSMCalculate.TechListAdjustedCoolingW_ElectricalVentilation
+        End Property
+        Public ReadOnly Property TechListAdjustedCoolingW_ElectricalVentilation As Double Implements ISSMCalculate.TechListAdjustedCoolingW_ElectricalVentilation
             Get
 
-              '=IF('TECH LIST INPUT'!Q92>0,MIN('TECH LIST INPUT'!Q92,C40),MAX('TECH LIST INPUT'!Q92,-C40))
+                '=IF('TECH LIST INPUT'!Q92>0,MIN('TECH LIST INPUT'!Q92,C40),MAX('TECH LIST INPUT'!Q92,-C40))
 
-              Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
-              Dim tl As ISSMTechList = ssmTOOL.TechList
+                Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
+                Dim tl As ISSMTechList = ssmTOOL.TechList
 
-              'Dim TLQ92 As Double =  tl.VCValueVariation'TECH LIST INPUT'!Q92
-              'Dim C40 As Double   =  gen.BC_MaxPossibleBenefitFromTechnologyList
+                'Dim TLQ92 As Double =  tl.VCValueVariation'TECH LIST INPUT'!Q92
+                'Dim C40 As Double   =  gen.BC_MaxPossibleBenefitFromTechnologyList
 
-               Return If(tl.VCValueVariation > 0, _
-                      Math.Min(tl.VCValueVariation, gen.BC_MaxPossibleBenefitFromTechnologyList), _
-                      Math.Max(tl.VCValueVariation, -gen.BC_MaxPossibleBenefitFromTechnologyList))
+                Return If(tl.VCValueVariation > 0, _
+                        Math.Min(tl.VCValueVariation, gen.BC_MaxPossibleBenefitFromTechnologyList), _
+                        Math.Max(tl.VCValueVariation, -gen.BC_MaxPossibleBenefitFromTechnologyList))
 
             End Get
-          End Property
-          Public ReadOnly Property TechListAdjustedCoolingW_FuelFiredHeating As Double Implements ISSMCalculate.TechListAdjustedCoolingW_FuelFiredHeating
+        End Property
+        Public ReadOnly Property TechListAdjustedCoolingW_FuelFiredHeating As Double Implements ISSMCalculate.TechListAdjustedCoolingW_FuelFiredHeating
             Get
-             Return 0
+                Return 0
             End Get
-          End Property
-        
-          Public ReadOnly Property TechListAdjustedVentilationW_Mechanical As Double Implements ISSMCalculate.TechListAdjustedVentilationW_Mechanical
+        End Property
+
+        Public ReadOnly Property TechListAdjustedVentilationW_Mechanical As Double Implements ISSMCalculate.TechListAdjustedVentilationW_Mechanical
             Get
-             Return Nothing
+                Return Nothing
             End Get
-          End Property
-          Public ReadOnly Property TechListAdjustedVentilationW_ElectricalCoolingHeating As Double Implements ISSMCalculate.TechListAdjustedVentilationW_ElectricalCoolingHeating
+        End Property
+        Public ReadOnly Property TechListAdjustedVentilationW_ElectricalCoolingHeating As Double Implements ISSMCalculate.TechListAdjustedVentilationW_ElectricalCoolingHeating
             Get
-             Return Nothing
+                Return Nothing
             End Get
-          End Property
-          Public ReadOnly Property TechListAdjustedVentilationW_ElectricalVentilation As Double Implements ISSMCalculate.TechListAdjustedVentilationW_ElectricalVentilation
+        End Property
+        Public ReadOnly Property TechListAdjustedVentilationW_ElectricalVentilation As Double Implements ISSMCalculate.TechListAdjustedVentilationW_ElectricalVentilation
             Get
-            '=IF('TECH LIST INPUT'!P92>0,MIN('TECH LIST INPUT'!P92,C40),MAX('TECH LIST INPUT'!P92,-C40))
+                '=IF('TECH LIST INPUT'!P92>0,MIN('TECH LIST INPUT'!P92,C40),MAX('TECH LIST INPUT'!P92,-C40))
 
-              Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
-              Dim tl As ISSMTechList = ssmTOOL.TechList
+                Dim gen As ISSMGenInputs = ssmTOOL.GenInputs
+                Dim tl As ISSMTechList = ssmTOOL.TechList
 
-              'Dim TLP92 As Double =  tl.VVValueVariation  'TECH LIST INPUT'!P92
-              'Dim C40 As Double   =  gen.BC_MaxPossibleBenefitFromTechnologyList
+                'Dim TLP92 As Double =  tl.VVValueVariation  'TECH LIST INPUT'!P92
+                'Dim C40 As Double   =  gen.BC_MaxPossibleBenefitFromTechnologyList
 
 
-              Return If(tl.VVValueVariation > 0, Math.Min(tl.VVValueVariation, gen.BC_MaxPossibleBenefitFromTechnologyList), Math.Max(tl.VVValueVariation, -gen.BC_MaxPossibleBenefitFromTechnologyList))
+                Return If(tl.VVValueVariation > 0, Math.Min(tl.VVValueVariation, gen.BC_MaxPossibleBenefitFromTechnologyList), Math.Max(tl.VVValueVariation, -gen.BC_MaxPossibleBenefitFromTechnologyList))
 
             End Get
-          End Property
-          Public ReadOnly Property TechListAdjustedVentilationW_FuelFiredHeating As Double Implements ISSMCalculate.TechListAdjustedVentilationW_FuelFiredHeating
+        End Property
+        Public ReadOnly Property TechListAdjustedVentilationW_FuelFiredHeating As Double Implements ISSMCalculate.TechListAdjustedVentilationW_FuelFiredHeating
             Get
-              Return 0
+                Return 0
             End Get
-          End Property
-
-         #End Region
-       
-   'Provides Diagnostic Information for the user which can be displayed on the form.
-  'Based on the inputs generated, can be used to cross reference the Excel Model with the
-  'Outputs generated here.
-   Public Overrides Function ToString() As String
-
-    Dim sb As New StringBuilder()   
-
-    sb.AppendLine("")
-    sb.AppendLine("TechList Detail")
-    sb.AppendLine("***********************")
-
-    Dim nameLength  As integer = 40
-    Dim catLength   As Integer = 15
-    Dim unitLength  As Integer = 15
-    Dim firstValuePos As Integer = nameLength + catLength + unitLength + 2
-    Dim cat As String
-    Dim name As String
-    Dim units As String
-
-    sb.AppendLine(String.Format( Space( firstValuePos) +  "H{0}VH{0}VV{0}VC{0}C{0}",vbtab ))
-
-
-    For Each  line As ITechListBenefitLine In ssmTOOL.TechList.TechLines
-
-       With line
-      
-          Dim extraNameSpaces, extraCatSpaces , extraUnitSpaces As Integer
-                    
-          extraNameSpaces =  nameLength -.BenefitName.Length
-          extraCatSpaces  = catLength    - .Category.Length
-          extraUnitSpaces = unitLength - .Units.Length
-         
-          cat=line.Category.Substring(0,Math.Min(line.Category.Length,catLength)) + Space( If(extraCatSpaces<0,0,extraCatSpaces)).Replace(" ",".")
-          name=line.BenefitName.Substring(0,Math.Min(line.BenefitName.Length,nameLength))  + Space(If(extraNameSpaces<0,0,extraNameSpaces)).Replace(" ",".")
-          units=line.Units.Substring(0,Math.Min(line.Units.Length,unitLength))  + Space(If(extraUnitSpaces<0,0,extraUnitSpaces)).Replace(" ",".")
-             
-           sb.AppendLine(String.Format( Units  + cat + name + " {0}{1}{0}{2}{0}{3}{0}{4}{0}{5}", vbtab , .H.ToString("0.000") , .VH.ToString("0.000"), .VV.ToString("0.000"), .VC.ToString("0.000"), .C.ToString("0.000")))
-         
-       End With
-
-       Next
-       
-       sb.AppendLine("")
-       sb.AppendLine("TechList Totals")
-       sb.AppendLine("***********************")
-       
-       With ssmTOOL.TechList
-       
-        sb.AppendLine( vbTab + vbTab + "H" +vbTab +   "VH" + vbTab  + "VV" + vbTab   + "VC" + vbTab   + "C")
-        sb.AppendLine(String.Format("Base Var %   {0}{1}{0}{2}{0}{3}{0}{4}{0}{5}", vbtab, .HValueVariation.ToString("0.000") , .VHValueVariation.ToString("0.000"), .VVValueVariation.ToString("0.000"), .VCValueVariation.ToString("0.000"), .CValueVariation.ToString("0.000")))
-        sb.AppendLine(String.Format("Base Var KW  {0}{1}{0}{2}{0}{3}{0}{4}{0}{5}", vbtab, .HValueVariationKW.ToString("0.000") , .VHValueVariationKW.ToString("0.000"), .VVValueVariationKW.ToString("0.000"), .VCValueVariationKW.ToString("0.000"), .CValueVariationKW.ToString("0.000")))
-       
-       End With
-
-
-
-       'Runs
-       sb.AppendLine( Run1.ToString())
-       sb.AppendLine( Run2.ToString())
-       
-       'Staging Calcs
-       sb.AppendLine("Staging Base Values")
-       sb.AppendLine("*******************")
-       sb.AppendLine( vbTab + vbTab + vbTab + "Mechanical" +vbTab +   "Elec Cool/Heat" + vbTab  + "Elec Vent" + vbTab    + "Fuel Fired Heating")
-       
-       sb.AppendLine(String.Format("Heating   {0}{1}{0}{2}{0}{3}{0}{4}",vbTab + vbtab, BaseHeatingW_Mechanical.ToString("0.00"), BaseHeatingW_ElectricalCoolingHeating.ToString("0.00"), BaseHeatingW_ElectricalVentilation.ToString("0.00"), BaseHeatingW_FuelFiredHeating.ToString("0.00") ))
-       sb.AppendLine(String.Format("Cooling   {0}{1}{0}{2}{0}{3}{0}{4}",vbTab + vbtab, BaseCoolingW_Mechanical.ToString("0.00"), BaseCoolingW_ElectricalCoolingHeating.ToString("0.00"), BaseCoolingW_ElectricalVentilation.ToString("0.00"), BaseCoolingW_FuelFiredHeating.ToString("0.00") ))
-       sb.AppendLine(String.Format("Ventilate {0}{1}{0}{2}{0}{3}{0}{4}",vbTab + vbtab, BaseVentilationW_Mechanical.ToString("0.00"), BaseVentilationW_ElectricalCoolingHeating.ToString("0.00"), BaseVentilationW_ElectricalVentilation.ToString("0.00"), BaseVentilationW_FuelFiredHeating.ToString("0.00") ))
-       
-       sb.AppendLine("")
-       sb.AppendLine("Staging Adjusted Values")
-       sb.AppendLine("***********************")
-       
-       sb.AppendLine(String.Format("Heating   {0}{1}{0}{2}{0}{3}{0}{4}",vbTab + vbtab, TechListAdjustedHeatingW_Mechanical.ToString("0.00"), TechListAdjustedHeatingW_ElectricalCoolingHeating.ToString("0.00"), TechListAdjustedHeatingW_ElectricalVentilation.ToString("0.00"), TechListAdjustedHeatingW_FuelFiredHeating.ToString("0.00") ))
-       sb.AppendLine(String.Format("Cooling   {0}{1}{0}{2}{0}{3}{0}{4}",vbTab + vbtab, TechListAdjustedCoolingW_Mechanical.ToString("0.00"), TechListAdjustedCoolingW_ElectricalCoolingHeating.ToString("0.00"), TechListAdjustedCoolingW_ElectricalVentilation.ToString("0.00"), TechListAdjustedCoolingW_FuelFiredHeating.ToString("0.00") ))
-       sb.AppendLine(String.Format("Ventilate {0}{1}{0}{2}{0}{3}{0}{4}",vbTab + vbtab, TechListAdjustedVentilationW_Mechanical.ToString("0.00"), TechListAdjustedVentilationW_ElectricalCoolingHeating.ToString("0.00"), TechListAdjustedVentilationW_ElectricalVentilation.ToString("0.00"), TechListAdjustedVentilationW_FuelFiredHeating.ToString("0.00") ))
-
-     
-
-       Return sb.ToString()
-
- End Function
-
-
-End Class
+        End Property
+
+#End Region
+
+        'Provides Diagnostic Information for the user which can be displayed on the form.
+        'Based on the inputs generated, can be used to cross reference the Excel Model with the
+        'Outputs generated here.
+        Public Overrides Function ToString() As String
+
+            Dim sb As New StringBuilder()
+
+            sb.AppendLine("")
+            sb.AppendLine("TechList Detail")
+            sb.AppendLine("***********************")
+
+            Dim nameLength As Integer = 40
+            Dim catLength As Integer = 15
+            Dim unitLength As Integer = 15
+            Dim firstValuePos As Integer = nameLength + catLength + unitLength + 2
+            Dim cat As String
+            Dim name As String
+            Dim units As String
+
+            sb.AppendLine(String.Format(Space(firstValuePos) + "H{0}VH{0}VV{0}VC{0}C{0}", vbtab))
+
+
+            For Each line As ITechListBenefitLine In ssmTOOL.TechList.TechLines
+
+                With line
+
+                    Dim extraNameSpaces, extraCatSpaces, extraUnitSpaces As Integer
+
+                    extraNameSpaces = nameLength - .BenefitName.Length
+                    extraCatSpaces = catLength - .Category.Length
+                    extraUnitSpaces = unitLength - .Units.Length
+
+                    cat = line.Category.Substring(0, Math.Min(line.Category.Length, catLength)) + Space(If(extraCatSpaces < 0, 0, extraCatSpaces)).Replace(" ", ".")
+                    name = line.BenefitName.Substring(0, Math.Min(line.BenefitName.Length, nameLength)) + Space(If(extraNameSpaces < 0, 0, extraNameSpaces)).Replace(" ", ".")
+                    units = line.Units.Substring(0, Math.Min(line.Units.Length, unitLength)) + Space(If(extraUnitSpaces < 0, 0, extraUnitSpaces)).Replace(" ", ".")
+
+                    sb.AppendLine(String.Format(Units + cat + name + " {0}{1}{0}{2}{0}{3}{0}{4}{0}{5}", vbtab, .H.ToString("0.000"), .VH.ToString("0.000"), .VV.ToString("0.000"), .VC.ToString("0.000"), .C.ToString("0.000")))
+
+                End With
+
+            Next
+
+            sb.AppendLine("")
+            sb.AppendLine("TechList Totals")
+            sb.AppendLine("***********************")
+
+            With ssmTOOL.TechList
+
+                sb.AppendLine(vbTab + vbTab + "H" + vbTab + "VH" + vbTab + "VV" + vbTab + "VC" + vbTab + "C")
+                sb.AppendLine(String.Format("Base Var %   {0}{1}{0}{2}{0}{3}{0}{4}{0}{5}", vbtab, .HValueVariation.ToString("0.000"), .VHValueVariation.ToString("0.000"), .VVValueVariation.ToString("0.000"), .VCValueVariation.ToString("0.000"), .CValueVariation.ToString("0.000")))
+                sb.AppendLine(String.Format("Base Var KW  {0}{1}{0}{2}{0}{3}{0}{4}{0}{5}", vbtab, .HValueVariationKW.ToString("0.000"), .VHValueVariationKW.ToString("0.000"), .VVValueVariationKW.ToString("0.000"), .VCValueVariationKW.ToString("0.000"), .CValueVariationKW.ToString("0.000")))
+
+            End With
+
+
+
+            'Runs
+            sb.AppendLine(Run1.ToString())
+            sb.AppendLine(Run2.ToString())
+
+            'Staging Calcs
+            sb.AppendLine("Staging Base Values")
+            sb.AppendLine("*******************")
+            sb.AppendLine(vbTab + vbTab + vbTab + "Mechanical" + vbTab + "Elec Cool/Heat" + vbTab + "Elec Vent" + vbTab + "Fuel Fired Heating")
+
+            sb.AppendLine(String.Format("Heating   {0}{1}{0}{2}{0}{3}{0}{4}", vbTab + vbtab, BaseHeatingW_Mechanical.ToString("0.00"), BaseHeatingW_ElectricalCoolingHeating.ToString("0.00"), BaseHeatingW_ElectricalVentilation.ToString("0.00"), BaseHeatingW_FuelFiredHeating.ToString("0.00")))
+            sb.AppendLine(String.Format("Cooling   {0}{1}{0}{2}{0}{3}{0}{4}", vbTab + vbtab, BaseCoolingW_Mechanical.ToString("0.00"), BaseCoolingW_ElectricalCoolingHeating.ToString("0.00"), BaseCoolingW_ElectricalVentilation.ToString("0.00"), BaseCoolingW_FuelFiredHeating.ToString("0.00")))
+            sb.AppendLine(String.Format("Ventilate {0}{1}{0}{2}{0}{3}{0}{4}", vbTab + vbtab, BaseVentilationW_Mechanical.ToString("0.00"), BaseVentilationW_ElectricalCoolingHeating.ToString("0.00"), BaseVentilationW_ElectricalVentilation.ToString("0.00"), BaseVentilationW_FuelFiredHeating.ToString("0.00")))
+
+            sb.AppendLine("")
+            sb.AppendLine("Staging Adjusted Values")
+            sb.AppendLine("***********************")
+
+            sb.AppendLine(String.Format("Heating   {0}{1}{0}{2}{0}{3}{0}{4}", vbTab + vbtab, TechListAdjustedHeatingW_Mechanical.ToString("0.00"), TechListAdjustedHeatingW_ElectricalCoolingHeating.ToString("0.00"), TechListAdjustedHeatingW_ElectricalVentilation.ToString("0.00"), TechListAdjustedHeatingW_FuelFiredHeating.ToString("0.00")))
+            sb.AppendLine(String.Format("Cooling   {0}{1}{0}{2}{0}{3}{0}{4}", vbTab + vbtab, TechListAdjustedCoolingW_Mechanical.ToString("0.00"), TechListAdjustedCoolingW_ElectricalCoolingHeating.ToString("0.00"), TechListAdjustedCoolingW_ElectricalVentilation.ToString("0.00"), TechListAdjustedCoolingW_FuelFiredHeating.ToString("0.00")))
+            sb.AppendLine(String.Format("Ventilate {0}{1}{0}{2}{0}{3}{0}{4}", vbTab + vbtab, TechListAdjustedVentilationW_Mechanical.ToString("0.00"), TechListAdjustedVentilationW_ElectricalCoolingHeating.ToString("0.00"), TechListAdjustedVentilationW_ElectricalVentilation.ToString("0.00"), TechListAdjustedVentilationW_FuelFiredHeating.ToString("0.00")))
+
+
+
+            Return sb.ToString()
+
+        End Function
+
+        Private Function CalculateElectricalWBase(genInputs As ISSMGenInputs, EnviromentalTemperature As Double, Solar As Double, Weight As Single) As Single
+
+            '=(SUM(H84)/C33)+SUM(I83:I85)
+
+            genInputs.EC_EnviromentalTemperature = EnviromentalTemperature
+            genInputs.EC_Solar = Solar
+
+            'Dim H84  As Double = BaseCoolingW_ElectricalCoolingHeating
+            'Dim C33  As Double = gen.BC_COP   
+            Dim BaseVentilation As Double = BaseHeatingW_ElectricalVentilation + BaseCoolingW_ElectricalVentilation + BaseVentilationW_ElectricalVentilation   ' SUM(I83:I85)  
+            Dim ElectricalWBaseCurrentResult As Double = (BaseCoolingW_ElectricalCoolingHeating / genInputs.BC_COP) + BaseVentilation
+
+            Return ElectricalWBaseCurrentResult * Weight
+
+        End Function
+
+        Private Function CalculateMechanicalWBase(genInputs As ISSMGenInputs, EnviromentalTemperature As Double, Solar As Double, Weight As Single) As Single
+
+            '=F84/C33
+
+            genInputs.EC_EnviromentalTemperature = EnviromentalTemperature
+            genInputs.EC_Solar = Solar
+
+            'Dim F84 As Double = BaseCoolingW_Mechanical
+            'Dim C33  As Double = gen.BC_COP 
+
+            Return (BaseCoolingW_Mechanical / genInputs.BC_COP) * Weight
+
+        End Function
+
+        Private Function CalculateFuelLPerHBase(genInputs As ISSMGenInputs, EnviromentalTemperature As Double, Solar As Double, Weight As Single) As Single
+
+            '=ABS((J83/1000)*(1/(C36*C35))/C34)
+
+            genInputs.EC_EnviromentalTemperature = EnviromentalTemperature
+            genInputs.EC_Solar = Solar
+
+            'Dim J83 As Double = BaseHeatingW_FuelFiredHeating
+            'Dim C34 As Double = genInputs.BC_AuxHeaterEfficiency
+            'Dim C35 As Double = genInputs.BC_GCVDieselOrHeatingOil
+            'Dim C36 As Double = genInputs.BC_VolumicMassDieselOrHeatingOil
+
+            Return (Math.Abs((BaseHeatingW_FuelFiredHeating / 1000) * (1 / (genInputs.BC_VolumicMassDieselOrHeatingOil * genInputs.BC_GCVDieselOrHeatingOil)) / genInputs.BC_AuxHeaterEfficiency)) * Weight
+
+        End Function
+
+        Private Function CalculateElectricalWAdjusted(genInputs As ISSMGenInputs, tecList As ISSMTechList, EnviromentalTemperature As Double, Solar As Double, Weight As Single) As Single
+
+            '=((H84*(1-H90))/C33)+(I83*(1-I89))+(I84*(1-I90))+(I85*(1-I91)) + IF('TECH LIST INPUT'!D36="electrical",-'TECH LIST INPUT'!R93*1000,0)
+
+            genInputs.EC_EnviromentalTemperature = EnviromentalTemperature
+            genInputs.EC_Solar = Solar
+
+            Dim cnt As Integer = tecList.TechLines.Where(Function(f) f.LineType = TechLineType.DriverACElectrical).Count()
+            Dim DACElectrical As Boolean = tecList.TechLines.Where(Function(f) f.LineType = TechLineType.DriverACElectrical AndAlso f.OnVehicle).Count() = 1
+            Dim AdjustedAddition As Double = If(Not DACElectrical, 0, -tecList.CValueVariationKW * 1000)
+
+            Dim H84 As Double = BaseCoolingW_ElectricalCoolingHeating
+            Dim H90 As Double = TechListAdjustedCoolingW_ElectricalCoolingHeating
+            Dim C33 As Double = genInputs.BC_COP
+
+            Dim I83 As Double = BaseHeatingW_ElectricalVentilation
+            Dim I84 As Double = BaseCoolingW_ElectricalVentilation
+            Dim I85 As Double = BaseVentilationW_ElectricalVentilation
+            Dim I89 As Double = TechListAdjustedHeatingW_ElectricalVentilation
+            Dim I90 As Double = TechListAdjustedCoolingW_ElectricalVentilation
+            Dim I91 As Double = TechListAdjustedVentilationW_ElectricalVentilation
+
+
+            Dim ElectricalWAdjusted As Single = ((H84 * (1 - H90)) / C33) + (I83 * (1 - I89)) + (I84 * (1 - I90)) + (I85 * (1 - I91)) + AdjustedAddition
+
+            Return ElectricalWAdjusted * Weight
+
+        End Function
+
+        Private Function CalculateMechanicalWBaseAdjusted(genInputs As ISSMGenInputs, tecList As ISSMTechList, EnviromentalTemperature As Double, Solar As Double, Weight As Single) As Single
+
+            '=(F84*(1-F90)/C33) + IF('TECH LIST INPUT'!D36="mechanical",-'TECH LIST INPUT'!R93*1000,0)
+
+            genInputs.EC_EnviromentalTemperature = EnviromentalTemperature
+            genInputs.EC_Solar = Solar
+
+            Dim DACMechanical As Boolean = tecList.TechLines.Where(Function(f) f.LineType = TechLineType.DriverACMechanical AndAlso f.OnVehicle).Count() = 1
+            Dim AdjustedAddition As Double = If(Not DACMechanical, 0, tecList.CValueVariationKW * 1000)
+
+            'Dim F84 As Double  = BaseCoolingW_Mechanical
+            'Dim F90 As Double  = TechListAdjustedCoolingW_Mechanical
+            'Dim C33 As Double  = gen.BC_COP
+
+            Dim MechanicalWBaseAdjusted As Single = (BaseCoolingW_Mechanical * (1 - TechListAdjustedCoolingW_Mechanical) / genInputs.BC_COP) + AdjustedAddition
+
+            Return MechanicalWBaseAdjusted * Weight
+
+        End Function
+
+        Private Function CalculateFuelLPerHBaseAdjusted(genInputs As ISSMGenInputs, tecList As ISSMTechList, EnviromentalTemperature As Double, Solar As Double, Weight As Single) As Single
+
+            '=ABS((IF(AND(M79<0,M80<0),VLOOKUP(MAX(M79:M80),M79:P80,4),0)/1000)*(1/(C36*C35))/C34)
+
+            genInputs.EC_EnviromentalTemperature = EnviromentalTemperature
+            genInputs.EC_Solar = Solar
+
+            Dim C34 As Double = genInputs.BC_AuxHeaterEfficiency
+            Dim C35 As Double = genInputs.BC_GCVDieselOrHeatingOil
+            Dim C36 As Double = genInputs.BC_VolumicMassDieselOrHeatingOil
+            Dim result As Double
+
+            If Run1.TotalW < 0 AndAlso Run1.TotalW < 0 Then
+                result = If(Run1.TotalW > Run2.TotalW, Run1.TechListAmendedFuelW, Run2.TechListAmendedFuelW) / 1000
+            Else
+                result = 0
+            End If
+
+            Dim FuelLPerHBaseAdjusted As Single = (Math.Abs(result * (1 / (genInputs.BC_VolumicMassDieselOrHeatingOil * genInputs.BC_GCVDieselOrHeatingOil)) / genInputs.BC_AuxHeaterEfficiency)) * Weight
+
+            Return FuelLPerHBaseAdjusted
+
+        End Function
+    End Class
 
 
 
diff --git a/VECTOAux/VectoAuxiliaries/Hvac/SSMGenInputs.vb b/VECTOAux/VectoAuxiliaries/Hvac/SSMGenInputs.vb
index 9c7fb41019..498767aa5d 100644
--- a/VECTOAux/VectoAuxiliaries/Hvac/SSMGenInputs.vb
+++ b/VECTOAux/VectoAuxiliaries/Hvac/SSMGenInputs.vb
@@ -1,291 +1,318 @@
-
+Imports System.IO
+
 Namespace Hvac
-  
-  'Used by SSMHVAC Class
-  Public Class SSMGenInputs
-    Implements ISSMGenInputs
-
-  
-  
-    'BUS Parameterisation
-    '********************
-     'C4/D4
-     Public Property BP_BusModel As String Implements ISSMGenInputs.BP_BusModel
-     'D5/C5
-      Public Property BP_NumberOfPassengers As Double Implements ISSMGenInputs.BP_NumberOfPassengers
-      'D6/C6
-      Public Property BP_BusFloorType As String Implements ISSMGenInputs.BP_BusFloorType
-      'D7/C7 - ( M/2 )
-      Public ReadOnly Property BP_BusFloorSurfaceArea As Double Implements ISSMGenInputs.BP_BusFloorSurfaceArea
-        Get
-
-          '=IF(AND(C6="low floor",C12<=2.55,C12>=2.5),(2.55*(C11-1.2)),((C11-1.2)*C12))
-          If BP_BusFloorType="low floor" AndAlso BP_BusWidth<=2.55 AndAlso BP_BusWidth>=2.5 then
-            Return Math.Round((2.55*(BP_BusLength-1.2)),6)
-          Else       
-           Return Math.Round(((BP_BusLength-1.2)*BP_BusWidth),6)
-          End If
-
-        End Get
-    End Property
-      'D8/C8 - ( M/2 )
-      Public Property BP_BusSurfaceAreaM2 As Double Implements ISSMGenInputs.BP_BusSurfaceAreaM2
-      'D9/C9 - ( M/2 )
-      Public ReadOnly Property BP_BusWindowSurface As Double Implements ISSMGenInputs.BP_BusWindowSurface
-        Get
-        '=(C37*C11)+C38
-         Return (BC_WindowAreaPerUnitBusLength*BP_BusLength)+BC_FrontRearWindowArea
-
-        End Get
-    End Property
-      'D10/C10 - ( M/3 )
-      Public Property BP_BusVolume As Double Implements ISSMGenInputs.BP_BusVolume
-      'D11/C11 - ( M )
-      Public Property BP_BusLength As Double Implements ISSMGenInputs.BP_BusLength
-      'D12/C12 - ( M )
-      Public Property BP_BusWidth As Double Implements ISSMGenInputs.BP_BusWidth
-  
-    'BOUNDRY CONDITIONS
-    '******************
-    'C15
-      Public             Property BC_GFactor As Double Implements ISSMGenInputs.BC_GFactor
-      'C16               
-      Public Readonly    Property BC_SolarClouding	 As Double Implements ISSMGenInputs.BC_SolarClouding
-        Get
-         '=IF(D6="low floor",0.65,IF(D6="semi low floor",0.8,0.8))
-         Return If( BP_BusFloorType="low floor",0.65,If(BP_BusFloorType="semi low floor",0.8,0.8))
-        End Get
-    End Property
-      'C17 -             Watts
-      Public  Readonly   Property BC_HeatPerPassengerIntoCabinW As Double Implements ISSMGenInputs.BC_HeatPerPassengerIntoCabinW
-        Get
-         '=IF(C43>C18,80,50)
-         Return If( EC_EnviromentalTemperature>BC_PassengerBoundaryTemperature,80,50)
-        End Get
-    End Property
-      'C18 -             Degrees Centegrade
-      Public             Property BC_PassengerBoundaryTemperature As Double Implements ISSMGenInputs.BC_PassengerBoundaryTemperature
-      'C19 -             Passenger/Metre Squared
-      Public             Property BC_PassengerDensityLowFloor As Double Implements ISSMGenInputs.BC_PassengerDensityLowFloor
-      'C20 -             Passenger/Metre Squared
-      Public             Property BC_PassengerDensitySemiLowFloor As Double Implements ISSMGenInputs.BC_PassengerDensitySemiLowFloor
-      'C21 -             Passenger/Metre Squared
-      Public             Property BC_PassengerDensityRaisedFloor As Double Implements ISSMGenInputs.BC_PassengerDensityRaisedFloor
-      'C22               
-      Public Readonly    Property BC_CalculatedPassengerNumber As Double Implements ISSMGenInputs.BC_CalculatedPassengerNumber
-        Get
-          '=IF(D6="low floor",C19,IF(D6="semi low floor",C20,C21))*D7
-          Return IF(BP_BusFloorType="low floor",BC_PassengerDensityLowFloor,IF(BP_BusFloorType="semi low floor",BC_PassengerDensitySemiLowFloor,BC_PassengerDensityRaisedFloor))*BP_BusFloorSurfaceArea
-        End Get
-    End Property
-      'C23               ( W/K/M3 )
-      Public Readonly    Property BC_UValues As Double Implements ISSMGenInputs.BC_UValues
-        Get
-          '=IF(D6="low floor",4,IF(D6="semi low floor",3.5,3))
-          Return IF(BP_BusFloorType="low floor",4,IF(BP_BusFloorType="semi low floor",3.5,3))
-
-        End Get
-    End Property
-      'C24 -             Degrees Centegrade
-      Public             Property BC_HeatingBoundaryTemperature As Double Implements ISSMGenInputs.BC_HeatingBoundaryTemperature
-      'C25 -             Degrees Centegrde
-      Public             Property BC_CoolingBoundaryTemperature As Double Implements ISSMGenInputs.BC_CoolingBoundaryTemperature
-      'C26 -             ( L/H )
-      Public             Property BC_HighVentilation As Double Implements ISSMGenInputs.BC_HighVentilation
-      'C27 -             ( L/H )
-      Public             Property BC_lowVentilation As Double Implements ISSMGenInputs.BC_lowVentilation
-      'C28  -            ( M3/H )
-      Public  Readonly   Property BC_High As Double Implements ISSMGenInputs.BC_High
-        Get
-          '=D10*C26
-          Return BP_BusVolume * BC_HighVentilation
-        End Get
-    End Property
-      'C29  -            ( M3/H )
-      Public Readonly    Property BC_Low As Double Implements ISSMGenInputs.BC_Low
-        Get
-          '=C27*D10
-          Return BP_BusVolume * BC_lowVentilation
-        End Get
-    End Property
-      'C30  -             Watts
-      Public Readonly    Property BC_HighVentPowerW As Double Implements ISSMGenInputs.BC_HighVentPowerW
-        Get
-          '=C28*C32
-          Return BC_High * BC_SpecificVentilationPower
-        End Get
-    End Property
-      'C31  -             Watts
-      Public Readonly     Property BC_LowVentPowerW As Double Implements ISSMGenInputs.BC_LowVentPowerW
-        Get
-         '=C29*C32
-         Return BC_Low * BC_SpecificVentilationPower
-        End Get
-    End Property
-      'C32  -             ( Wh/M3 )
-      Public             Property BC_SpecificVentilationPower As Double Implements ISSMGenInputs.BC_SpecificVentilationPower
-      'C33               
-      Public             Property BC_COP As Double Implements ISSMGenInputs.BC_COP
-      'C34               
-      Public             Property BC_AuxHeaterEfficiency As Double Implements ISSMGenInputs.BC_AuxHeaterEfficiency
-      'C35 -             ( KW/HKG )
-      Public             Property BC_GCVDieselOrHeatingOil As Double Implements ISSMGenInputs.BC_GCVDieselOrHeatingOil
-      'C36 -             ( KG/L )
-      Public             Property BC_VolumicMassDieselOrHeatingOil As Double Implements ISSMGenInputs.BC_VolumicMassDieselOrHeatingOil
-      'C37 -             ( M2/M )
-      Public  Readonly   Property BC_WindowAreaPerUnitBusLength As Double Implements ISSMGenInputs.BC_WindowAreaPerUnitBusLength
-        Get
-          'NOTE:This forumla always returns 1.5
-          '=IF(D6="low floor",1.5,IF(D6="semi low floor",1.5,1.5))
-          Return IF(BP_BusFloorType="low floor",1.5,IF(BP_BusFloorType="semi low floor",1.5,1.5))
-        End Get
-    End Property
-      'C38 -             ( M/2 )
-      Public Readonly    Property BC_FrontRearWindowArea As Double Implements ISSMGenInputs.BC_FrontRearWindowArea
-        Get
-        'NOTE: This formulae always return 5
-        '=IF(D6="low floor",5,IF(D6="semi low floor",5,5))
-        Return  If(BP_BusFloorType="low floor" ,5, If(BP_BusFloorType="low floor",5,5))
-        End Get
-    End Property
-      'C39 -             ( K )
-      Public             Property BC_MaxTemperatureDeltaForLowFloorBusses As Double Implements ISSMGenInputs.BC_MaxTemperatureDeltaForLowFloorBusses
-      'C40 -             ( Fraction )
-      Public Property BC_MaxPossibleBenefitFromTechnologyList As Double Implements ISSMGenInputs.BC_MaxPossibleBenefitFromTechnologyList
-  
-      'Environmental Conditions
-    '************************
-    'C43 - ( Degrees Centegrade )
-      Public Property EC_EnviromentalTemperature As Double Implements ISSMGenInputs.EC_EnviromentalTemperature
-      'C44 - ( W/M3 )
-      Public Property EC_Solar As Double Implements ISSMGenInputs.EC_Solar
-  
-  
-      'AC SYSTEM
-    '*********
-    'C47 - Boolean Yes/No
-      Public Property AC_InCabinRoomAC_System As Boolean Implements ISSMGenInputs.AC_InCabinRoomAC_System
-      'C48 - "mechanical/electrical
-      Public Property AC_CompressorType As String Implements ISSMGenInputs.AC_CompressorType
-      'C49 -  ( KW )
-      Public Property AC_CompressorCapacitykW As Double Implements ISSMGenInputs.AC_CompressorCapacitykW
-  
-  
-      'VENTILATION
-    '***********
-    'C52 - Boolean Yes/No
-      Public Property VEN_VentilationOnDuringHeating				         As Boolean  Implements ISSMGenInputs.VEN_VentilationOnDuringHeating 
-      'C53 - Boolean Yes/No
-       Property VEN_VentilationWhenBothHeatingAndACInactive		         As Boolean  Implements ISSMGenInputs.VEN_VentilationWhenBothHeatingAndACInactive
-      'C54 - Boolean Yes/No
-      Public Property VEN_VentilationDuringAC                              As Boolean Implements ISSMGenInputs.VEN_VentilationDuringAC
-      'C55 - String high/low
-      Public Property VEN_VentilationFlowSettingWhenHeatingAndACInactive   As String Implements ISSMGenInputs.VEN_VentilationFlowSettingWhenHeatingAndACInactive
-      'C56 - String high/low
-      Property VEN_VentilationDuringHeating			                     As String Implements ISSMGenInputs.VEN_VentilationDuringHeating
-      'C57 - String high/low                                               
-      Property VEN_VentilationDuringCooling				                 As String Implements ISSMGenInputs.VEN_VentilationDuringCooling
-  
-  
-      'AUX HEATER
-    '**********
-    'C60 - ( KW )
-      Public Property AH_EngineWasteHeatkW As Double Implements ISSMGenInputs.AH_EngineWasteHeatkW
-      'C61 - ( KW )
-      Public Property AH_FuelFiredHeaterkW As Double Implements ISSMGenInputs.AH_FuelFiredHeaterkW
-  
-  
-  
-      Sub new ( optional initialiseDefaults As Boolean = false)
-
-
-         If initialiseDefaults then SetDefaults
-
-
-
-    End Sub
-  
-      Private Sub SetDefaults()
-
-
-    'BUS Parameterisation
-    '********************
-     BP_BusModel = "DummyBus"
-     BP_NumberOfPassengers =47R
-     BP_BusFloorType ="raised floor"
-    'BP_BusFloorSurfaceArea  : Calculated
-     BP_BusSurfaceAreaM2 = 114.42325000R
-     'BP_BusWindowSurface    : Calculated
-     BP_BusVolume =61.81231875R
-     BP_BusLength = 10.655R
-     BP_BusWidth =2.55R
-
-    'BOUNDRY CONDITIONS
-    '******************
-
-     BC_GFactor                                     = 1.0R
-    'BC_SolarClouding As Double :Calculated
-    'BC_HeatPerPassengerIntoCabinW  :Calculated
-     BC_PassengerBoundaryTemperature                = 13R
-     BC_PassengerDensityLowFloor                    = 3.0R
-     BC_PassengerDensitySemiLowFloor                = 2.0R
-     BC_PassengerDensityRaisedFloor                 = 1.4R
-    'BC_CalculatedPassengerNumber  :Calculated
-    'BC_UValues :Calculated
-     BC_HeatingBoundaryTemperature                  = 20R
-     BC_CoolingBoundaryTemperature                  = 24R
-     BC_HighVentilation                             = 25R
-     BC_lowVentilation                              =  8R
-    'BC_High  :Calculated
-    'BC_Low  :Calculated
-    'BC_HighVentPowerW  :Calculated
-    'BC_LowVentPowerW  :Calculated
-     BC_SpecificVentilationPower                    = 0.6R
-     BC_COP                                         = 4.0R
-     BC_AuxHeaterEfficiency                         = 1.0R
-     BC_GCVDieselOrHeatingOil                       = 13.0R
-     BC_VolumicMassDieselOrHeatingOil               = 1.0R
-    'BC_WindowAreaPerUnitBusLength   :Calculated 
-    'BC_FrontRearWindowArea  :Calculated
-     BC_MaxTemperatureDeltaForLowFloorBusses        = 4.00R
-     BC_MaxPossibleBenefitFromTechnologyList        = 0.03R
-                                                   
-    'Environmental Conditions
-    '************************
-     EC_EnviromentalTemperature                     =  25.00R
-     EC_Solar                                       = 400.00R
-
-
-    'AC SYSTEM
-    '*********
-    AC_InCabinRoomAC_System                         = True
-    AC_CompressorType                               = "mechanical"
-    AC_CompressorCapacitykW                         = 18R
-
-
-    'VENTILATION
-    '***********
-    VEN_VentilationOnDuringHeating                        = True
-    VEN_VentilationWhenBothHeatingAndACInactive           = True
-    VEN_VentilationDuringAC                               = True
-    VEN_VentilationFlowSettingWhenHeatingAndACInactive    = "high"
-    VEN_VentilationDuringHeating                          = "high"
-    VEN_VentilationDuringCooling                          = "low"
-
-
-
-    'AUX HEATER
-    '**********
-    AH_EngineWasteHeatkW                                  =  2.0R
-    AH_FuelFiredHeaterkW                                  = 10.0R
-
-
-
-    End Sub
-  
-  
-     
-  End Class
+
+    'Used by SSMHVAC Class
+    Public Class SSMGenInputs
+        Implements ISSMGenInputs
+
+        Private _EC_EnviromentalConditions_BatchFile As String
+        Private _EC_EnvironmentalConditionsMap As IEnvironmentalConditionsMap
+
+        'BUS Parameterisation
+        '********************
+        'C4/D4
+        Public Property BP_BusModel As String Implements ISSMGenInputs.BP_BusModel
+        'C5/D5
+        Public Property BP_NumberOfPassengers As Double Implements ISSMGenInputs.BP_NumberOfPassengers
+        'C6/D6
+        Public Property BP_BusFloorType As String Implements ISSMGenInputs.BP_BusFloorType
+        'C10/D10
+        Public Property BP_DoubleDecker As Boolean Implements ISSMGenInputs.BP_DoubleDecker
+        'D12/C12 - ( M )
+        Public Property BP_BusLength As Double Implements ISSMGenInputs.BP_BusLength
+        'D13/C13 - ( M )
+        Public Property BP_BusWidth As Double Implements ISSMGenInputs.BP_BusWidth
+        'D14/C14 - ( M )
+        Public Property BP_BusHeight As Double Implements ISSMGenInputs.BP_BusHeight
+        'D7/C7 - ( M/2 )
+        Public ReadOnly Property BP_BusFloorSurfaceArea As Double Implements ISSMGenInputs.BP_BusFloorSurfaceArea
+            Get
+
+                '=IF(AND(C6="low floor",C13<=2.55,C13>=2.5),(2.55*(C12-1.2)),((C12-1.2)*C13))
+                If BP_BusFloorType = "low floor" AndAlso BP_BusWidth <= 2.55 AndAlso BP_BusWidth >= 2.5 Then
+                    Return Math.Round((2.55 * (BP_BusLength - 1.2)), 6)
+                Else
+                    Return Math.Round(((BP_BusLength - 1.2) * BP_BusWidth), 6)
+                End If
+
+            End Get
+        End Property
+        'D8/C8 - ( M/2 )
+        Public ReadOnly Property BP_BusSurfaceAreaM2 As Double Implements ISSMGenInputs.BP_BusSurfaceAreaM2
+            Get
+                '2 * (C12*C13 + C12*C14 + C13*C14)
+                Return (BP_BusLength * BP_BusWidth) + (BP_BusLength * BP_BusHeight) + (BP_BusWidth * BP_BusHeight)
+            End Get
+        End Property
+        'D9/C9 - ( M/2 )
+        Public ReadOnly Property BP_BusWindowSurface As Double Implements ISSMGenInputs.BP_BusWindowSurface
+            Get
+                '=(C40*C12)+C41
+                Return (BC_WindowAreaPerUnitBusLength * BP_BusLength) + BC_FrontRearWindowArea
+            End Get
+        End Property
+        'D11/C11 - ( M )
+        Public ReadOnly Property BP_BusVolume As Double Implements ISSMGenInputs.BP_BusVolume
+            Get
+                '=(C12*C13*C14)
+                Return (BP_BusLength * BP_BusWidth * BP_BusHeight)
+            End Get
+        End Property
+
+        'BOUNDRY CONDITIONS
+        '******************
+        'C15
+        Public Property BC_GFactor As Double Implements ISSMGenInputs.BC_GFactor
+        'C16               
+        Public ReadOnly Property BC_SolarClouding As Double Implements ISSMGenInputs.BC_SolarClouding
+            Get
+                '=IF(D6="low floor",0.65,IF(D6="semi low floor",0.8,0.8))
+                Return If(BP_BusFloorType = "low floor", 0.65, If(BP_BusFloorType = "semi low floor", 0.8, 0.8))
+            End Get
+        End Property
+        'C17 -             Watts
+        Public ReadOnly Property BC_HeatPerPassengerIntoCabinW As Double Implements ISSMGenInputs.BC_HeatPerPassengerIntoCabinW
+            Get
+                '=IF(C43>C18,80,50)
+                Return If(EC_EnviromentalTemperature > BC_PassengerBoundaryTemperature, 80, 50)
+            End Get
+        End Property
+        'C18 -             Degrees Centegrade
+        Public Property BC_PassengerBoundaryTemperature As Double Implements ISSMGenInputs.BC_PassengerBoundaryTemperature
+        'C19 -             Passenger/Metre Squared
+        Public Property BC_PassengerDensityLowFloor As Double Implements ISSMGenInputs.BC_PassengerDensityLowFloor
+        'C20 -             Passenger/Metre Squared
+        Public Property BC_PassengerDensitySemiLowFloor As Double Implements ISSMGenInputs.BC_PassengerDensitySemiLowFloor
+        'C21 -             Passenger/Metre Squared
+        Public Property BC_PassengerDensityRaisedFloor As Double Implements ISSMGenInputs.BC_PassengerDensityRaisedFloor
+        'C22               
+        Public ReadOnly Property BC_CalculatedPassengerNumber As Double Implements ISSMGenInputs.BC_CalculatedPassengerNumber
+            Get
+                '=IF(D6="low floor",C19,IF(D6="semi low floor",C20,C21))*D7
+                Return If(BP_BusFloorType = "low floor", BC_PassengerDensityLowFloor, If(BP_BusFloorType = "semi low floor", BC_PassengerDensitySemiLowFloor, BC_PassengerDensityRaisedFloor)) * BP_BusFloorSurfaceArea
+            End Get
+        End Property
+        'C23               ( W/K/M3 )
+        Public ReadOnly Property BC_UValues As Double Implements ISSMGenInputs.BC_UValues
+            Get
+                '=IF(D6="low floor",4,IF(D6="semi low floor",3.5,3))
+                Return If(BP_BusFloorType = "low floor", 4, If(BP_BusFloorType = "semi low floor", 3.5, 3))
+
+            End Get
+        End Property
+        'C24 -             Degrees Centegrade
+        Public Property BC_HeatingBoundaryTemperature As Double Implements ISSMGenInputs.BC_HeatingBoundaryTemperature
+        'C25 -             Degrees Centegrde
+        Public Property BC_CoolingBoundaryTemperature As Double Implements ISSMGenInputs.BC_CoolingBoundaryTemperature
+        'C26 -             ( L/H )
+        Public Property BC_HighVentilation As Double Implements ISSMGenInputs.BC_HighVentilation
+        'C27 -             ( L/H )
+        Public Property BC_lowVentilation As Double Implements ISSMGenInputs.BC_lowVentilation
+        'C28  -            ( M3/H )
+        Public ReadOnly Property BC_High As Double Implements ISSMGenInputs.BC_High
+            Get
+                '=D10*C26
+                Return BP_BusVolume * BC_HighVentilation
+            End Get
+        End Property
+        'C29  -            ( M3/H )
+        Public ReadOnly Property BC_Low As Double Implements ISSMGenInputs.BC_Low
+            Get
+                '=C27*D10
+                Return BP_BusVolume * BC_lowVentilation
+            End Get
+        End Property
+        'C30  -             Watts
+        Public ReadOnly Property BC_HighVentPowerW As Double Implements ISSMGenInputs.BC_HighVentPowerW
+            Get
+                '=C28*C32
+                Return BC_High * BC_SpecificVentilationPower
+            End Get
+        End Property
+        'C31  -             Watts
+        Public ReadOnly Property BC_LowVentPowerW As Double Implements ISSMGenInputs.BC_LowVentPowerW
+            Get
+                '=C29*C32
+                Return BC_Low * BC_SpecificVentilationPower
+            End Get
+        End Property
+        'C32  -             ( Wh/M3 )
+        Public Property BC_SpecificVentilationPower As Double Implements ISSMGenInputs.BC_SpecificVentilationPower
+        'C33               
+        Public Property BC_COP As Double Implements ISSMGenInputs.BC_COP
+        'C34               
+        Public Property BC_AuxHeaterEfficiency As Double Implements ISSMGenInputs.BC_AuxHeaterEfficiency
+        'C35 -             ( KW/HKG )
+        Public Property BC_GCVDieselOrHeatingOil As Double Implements ISSMGenInputs.BC_GCVDieselOrHeatingOil
+        'C36 -             ( KG/L )
+        Public Property BC_VolumicMassDieselOrHeatingOil As Double Implements ISSMGenInputs.BC_VolumicMassDieselOrHeatingOil
+        'C37 -             ( M2/M )
+        Public ReadOnly Property BC_WindowAreaPerUnitBusLength As Double Implements ISSMGenInputs.BC_WindowAreaPerUnitBusLength
+            Get
+                'NOTE:This forumla always returns 1.5
+                '=IF(D6="low floor",1.5,IF(D6="semi low floor",1.5,1.5))
+                Return If(BP_BusFloorType = "low floor", 1.5, If(BP_BusFloorType = "semi low floor", 1.5, 1.5))
+            End Get
+        End Property
+        'C38 -             ( M/2 )
+        Public ReadOnly Property BC_FrontRearWindowArea As Double Implements ISSMGenInputs.BC_FrontRearWindowArea
+            Get
+                'NOTE: This formulae always return 5
+                '=IF(D6="low floor",5,IF(D6="semi low floor",5,5))
+                Return If(BP_BusFloorType = "low floor", 5, If(BP_BusFloorType = "low floor", 5, 5))
+            End Get
+        End Property
+        'C39 -             ( K )
+        Public Property BC_MaxTemperatureDeltaForLowFloorBusses As Double Implements ISSMGenInputs.BC_MaxTemperatureDeltaForLowFloorBusses
+        'C40 -             ( Fraction )
+        Public Property BC_MaxPossibleBenefitFromTechnologyList As Double Implements ISSMGenInputs.BC_MaxPossibleBenefitFromTechnologyList
+
+        'Environmental Conditions
+        '************************
+        'C43 - ( Degrees Centegrade )
+        Public Property EC_EnviromentalTemperature As Double Implements ISSMGenInputs.EC_EnviromentalTemperature
+        'C44 - ( W/M3 )
+        Public Property EC_Solar As Double Implements ISSMGenInputs.EC_Solar
+        '( EC_EnviromentalTemperature and  EC_Solar) (Batch Mode)
+        Public ReadOnly Property EC_EnvironmentalConditionsMap As IEnvironmentalConditionsMap Implements ISSMGenInputs.EC_EnvironmentalConditionsMap
+            Get
+                Return _EC_EnvironmentalConditionsMap
+            End Get
+        End Property
+
+        Public Property EC_EnviromentalConditions_BatchFile As String Implements ISSMGenInputs.EC_EnviromentalConditions_BatchFile
+            Get
+                Return _EC_EnviromentalConditions_BatchFile
+            End Get
+            Set(value As String)
+                _EC_EnvironmentalConditionsMap = New EnvironmentalConditionsMap(value)
+                _EC_EnviromentalConditions_BatchFile = value
+            End Set
+        End Property
+
+        Public Property EC_EnviromentalConditions_BatchEnabled As Boolean Implements ISSMGenInputs.EC_EnviromentalConditions_BatchEnabled
+
+        'AC SYSTEM
+        '*********
+        'C47 - Boolean Yes/No
+        Public Property AC_InCabinRoomAC_System As Boolean Implements ISSMGenInputs.AC_InCabinRoomAC_System
+        'C48 - "mechanical/electrical
+        Public Property AC_CompressorType As String Implements ISSMGenInputs.AC_CompressorType
+        'C49 -  ( KW )
+        Public Property AC_CompressorCapacitykW As Double Implements ISSMGenInputs.AC_CompressorCapacitykW
+
+
+        'VENTILATION
+        '***********
+        'C52 - Boolean Yes/No
+        Public Property VEN_VentilationOnDuringHeating As Boolean Implements ISSMGenInputs.VEN_VentilationOnDuringHeating
+        'C53 - Boolean Yes/No
+        Property VEN_VentilationWhenBothHeatingAndACInactive As Boolean Implements ISSMGenInputs.VEN_VentilationWhenBothHeatingAndACInactive
+        'C54 - Boolean Yes/No
+        Public Property VEN_VentilationDuringAC As Boolean Implements ISSMGenInputs.VEN_VentilationDuringAC
+        'C55 - String high/low
+        Public Property VEN_VentilationFlowSettingWhenHeatingAndACInactive As String Implements ISSMGenInputs.VEN_VentilationFlowSettingWhenHeatingAndACInactive
+        'C56 - String high/low
+        Property VEN_VentilationDuringHeating As String Implements ISSMGenInputs.VEN_VentilationDuringHeating
+        'C57 - String high/low                                               
+        Property VEN_VentilationDuringCooling As String Implements ISSMGenInputs.VEN_VentilationDuringCooling
+
+
+        'AUX HEATER
+        '**********
+        'C60 - ( KW )
+        Public Property AH_EngineWasteHeatkW As Double Implements ISSMGenInputs.AH_EngineWasteHeatkW
+        'C61 - ( KW )
+        Public Property AH_FuelFiredHeaterkW As Double Implements ISSMGenInputs.AH_FuelFiredHeaterkW
+
+        Sub New(Optional initialiseDefaults As Boolean = False)
+
+            If initialiseDefaults Then SetDefaults()
+
+        End Sub
+
+        Private Sub SetDefaults()
+
+
+            'BUS Parameterisation
+            '********************
+            BP_BusModel = "DummyBus"
+            BP_NumberOfPassengers = 47.0R
+            BP_BusFloorType = "raised floor"
+            BP_DoubleDecker = False
+            BP_BusLength = 10.655R
+            BP_BusWidth = 2.55R
+            BP_BusHeight = 2.275R
+            'BP_BusFloorSurfaceArea  : Calculated
+            'BP_BusSurfaceAreaM2 : Calculated
+            'BP_BusWindowSurface    : Calculated
+            'BP_BusVolume : Calculated
+
+            'BOUNDRY CONDITIONS
+            '******************
+
+            BC_GFactor = 1.0R
+            'BC_SolarClouding As Double :Calculated
+            'BC_HeatPerPassengerIntoCabinW  :Calculated
+            BC_PassengerBoundaryTemperature = 13.0R
+            BC_PassengerDensityLowFloor = 3.0R
+            BC_PassengerDensitySemiLowFloor = 2.0R
+            BC_PassengerDensityRaisedFloor = 1.4R
+            'BC_CalculatedPassengerNumber  :Calculated
+            'BC_UValues :Calculated
+            BC_HeatingBoundaryTemperature = 20.0R
+            BC_CoolingBoundaryTemperature = 24.0R
+            BC_HighVentilation = 25.0R
+            BC_lowVentilation = 8.0R
+            'BC_High  :Calculated
+            'BC_Low  :Calculated
+            'BC_HighVentPowerW  :Calculated
+            'BC_LowVentPowerW  :Calculated
+            BC_SpecificVentilationPower = 0.6R
+            BC_COP = 4.0R
+            BC_AuxHeaterEfficiency = 1.0R
+            BC_GCVDieselOrHeatingOil = 13.0R
+            BC_VolumicMassDieselOrHeatingOil = 1.0R
+            'BC_WindowAreaPerUnitBusLength   :Calculated 
+            'BC_FrontRearWindowArea  :Calculated
+            BC_MaxTemperatureDeltaForLowFloorBusses = 4.0R
+            BC_MaxPossibleBenefitFromTechnologyList = 0.03R
+
+            'Environmental Conditions
+            '************************
+            EC_EnviromentalTemperature = 25.0R
+            EC_Solar = 400.0R
+            EC_EnviromentalConditions_BatchEnabled = False
+
+            'AC SYSTEM
+            '*********
+            AC_InCabinRoomAC_System = True
+            AC_CompressorType = "mechanical"
+            AC_CompressorCapacitykW = 18.0R
+
+
+            'VENTILATION
+            '***********
+            VEN_VentilationOnDuringHeating = True
+            VEN_VentilationWhenBothHeatingAndACInactive = True
+            VEN_VentilationDuringAC = True
+            VEN_VentilationFlowSettingWhenHeatingAndACInactive = "high"
+            VEN_VentilationDuringHeating = "high"
+            VEN_VentilationDuringCooling = "low"
+
+
+
+            'AUX HEATER
+            '**********
+            AH_EngineWasteHeatkW = 2.0R
+            AH_FuelFiredHeaterkW = 10.0R
+
+
+
+        End Sub
+
+    End Class
 
 End Namespace
 
diff --git a/VECTOAux/VectoAuxiliaries/Hvac/SSMTOOL.vb b/VECTOAux/VectoAuxiliaries/Hvac/SSMTOOL.vb
index 8a01d87348..bb13a784b9 100644
--- a/VECTOAux/VectoAuxiliaries/Hvac/SSMTOOL.vb
+++ b/VECTOAux/VectoAuxiliaries/Hvac/SSMTOOL.vb
@@ -7,294 +7,292 @@ Imports System.Text
 
 Namespace Hvac
 
-'Used by frmHVACTool
-'Replaces Spreadsheet model which does the same calculation
-'Version of which appears on the form title.
-Public Class SSMTOOL
-Implements ISSMTOOL
+    'Used by frmHVACTool
+    'Replaces Spreadsheet model which does the same calculation
+    'Version of which appears on the form title.
+    Public Class SSMTOOL
+        Implements ISSMTOOL
 
- 
- Private filePath As String
- Public Property GenInputs As ISSMGenInputs Implements ISSMTOOL.GenInputs
- Public Property TechList  As ISSMTechList  Implements ISSMTOOL.TechList
- Public Property Calculate As ISSMCalculate Implements ISSMTOOL.Calculate
+        Private filePath As String
+        Public Property GenInputs As ISSMGenInputs Implements ISSMTOOL.GenInputs
+        Public Property TechList As ISSMTechList Implements ISSMTOOL.TechList
+        Public Property Calculate As ISSMCalculate Implements ISSMTOOL.Calculate
+        Public Property SSMDisabled As Boolean Implements ISSMTOOL.SSMDisabled
 
- 'Repeat Warning Flags
- Private CompressorCapacityInsufficientWarned As Boolean 
- Private FuelFiredHeaterInsufficientWarned As Boolean
- 
+        'Repeat Warning Flags
+        Private CompressorCapacityInsufficientWarned As Boolean
+        Private FuelFiredHeaterInsufficientWarned As Boolean
 
- 'Base Values
- Public ReadOnly Property ElectricalWBase As Single Implements ISSMTOOL.ElectricalWBase
-    Get
-      Return  Calculate.ElectricalWBase
-    End Get
- End Property
- Public ReadOnly Property MechanicalWBase As Single Implements ISSMTOOL.MechanicalWBase
-    Get
-        Return  Calculate.MechanicalWBase
-    End Get
- End Property
- Public ReadOnly Property FuelPerHBase As Single Implements ISSMTOOL.FuelPerHBase
-    Get
-        Return Calculate.FuelPerHBase
-    End Get
- End Property
- 'Adjusted Values
- Public ReadOnly Property ElectricalWAdjusted As Single Implements ISSMTOOL.ElectricalWAdjusted
-   Get
-     Return Calculate.ElectricalWAdjusted
-   End Get
- End Property
- Public ReadOnly Property MechanicalWBaseAdjusted As Single Implements ISSMTOOL.MechanicalWBaseAdjusted
-    Get
-        Dim mechAdjusted As Single  = Calculate.MechanicalWBaseAdjusted
+        'Base Values
+        Public ReadOnly Property ElectricalWBase As Single Implements ISSMTOOL.ElectricalWBase
+            Get
+                Return If(SSMDisabled, 0, Calculate.ElectricalWBase)
+            End Get
+        End Property
+        Public ReadOnly Property MechanicalWBase As Single Implements ISSMTOOL.MechanicalWBase
+            Get
+                Return If(SSMDisabled, 0, Calculate.MechanicalWBase)
+            End Get
+        End Property
+        Public ReadOnly Property FuelPerHBase As Single Implements ISSMTOOL.FuelPerHBase
+            Get
+                Return If(SSMDisabled, 0, Calculate.FuelPerHBase)
+            End Get
+        End Property
+        'Adjusted Values
+        Public ReadOnly Property ElectricalWAdjusted As Single Implements ISSMTOOL.ElectricalWAdjusted
+            Get
+                Return If(SSMDisabled, 0, Calculate.ElectricalWAdjusted)
+            End Get
+        End Property
+        Public ReadOnly Property MechanicalWBaseAdjusted As Single Implements ISSMTOOL.MechanicalWBaseAdjusted
+            Get
+                Dim mechAdjusted As Single = If(SSMDisabled, 0, Calculate.MechanicalWBaseAdjusted)
 
+                If CompressorCapacityInsufficientWarned = False AndAlso (mechAdjusted) / (1000 * GenInputs.BC_COP) > GenInputs.AC_CompressorCapacitykW Then
 
-        If CompressorCapacityInsufficientWarned=False AndAlso (mechAdjusted)/(1000 * GenInputs.BC_COP)  > GenInputs.AC_CompressorCapacitykW then
+                    OnMessage(Me, "HVAC SSM :AC-Compressor Capacity unable to service cooling, run continues as if capacity was sufficient.", AdvancedAuxiliaryMessageType.Warning)
+                    CompressorCapacityInsufficientWarned = True
 
-         OnMessage( Me, "HVAC SSM :AC-Compressor Capacity unable to service cooling, run continues as if capacity was sufficient.",AdvancedAuxiliaryMessageType.Warning)
-         CompressorCapacityInsufficientWarned=true
+                End If
 
-        End If
 
+                Return mechAdjusted
 
-        Return mechAdjusted
+            End Get
+        End Property
+        Public ReadOnly Property FuelPerHBaseAdjusted As Single Implements ISSMTOOL.FuelPerHBaseAdjusted
+            Get
+                Return If(SSMDisabled, 0, Calculate.FuelPerHBaseAdjusted)
+            End Get
+        End Property
 
-     End Get
- End Property
- Public ReadOnly Property FuelPerHBaseAdjusted As Single Implements ISSMTOOL.FuelPerHBaseAdjusted
-    Get
-     Return Calculate.FuelPerHBaseAdjusted
-    End Get
- End Property
+        'Constructors
+        Sub New(filePath As String, Optional isDisabled As Boolean = False, Optional useTestValues As Boolean = False)
 
- 'Constructors
- Sub New()
+            Me.filePath = filePath
+            Me.SSMDisabled = isDisabled
 
+            GenInputs = New SSMGenInputs(useTestValues)
+            TechList = New SSMTechList(filePath, GenInputs)
 
- End Sub
- Sub New(filePath As String, Optional useTestValues As Boolean = false)
+            Calculate = New SSMCalculate(Me)
 
-   Me.filePath = filePath
-   genInputs = New SSMGenInputs(useTestValues)
-   TechList = New SSMTechList(filePath, genInputs)
+        End Sub
 
-   Calculate = New SSMCalculate( Me )
+        'Clone values from another object of same type
+        Public Sub Clone(from As ISSMTOOL) Implements ISSMTOOL.Clone
 
- End Sub
+            Dim feedback As String = String.Empty
 
- 'Clone values from another object of same type
- Public Sub Clone(from As ISSMTOOL) Implements ISSMTOOL.Clone
+            genInputs.InjectFrom(DirectCast(from, SSMTOOL).genInputs)
 
-     Dim feedback As String = String.Empty
+            TechList.Clear()
 
-     genInputs.InjectFrom(DirectCast(from, SSMTOOL).genInputs)
+            For Each line As TechListBenefitLine In DirectCast(from, SSMTOOL).TechList.TechLines
 
-     TechList.Clear()
+                Dim newLine As New TechListBenefitLine(Me.GenInputs)
+                newLine.InjectFrom()
+                newLine.InjectFrom(line)
+                TechList.Add(newLine, feedback)
 
-     For Each line As TechListBenefitLine In DirectCast(from, SSMTOOL).TechList.TechLines
+            Next
 
-         Dim newLine As New TechListBenefitLine(Me.GenInputs)
-         newLine.InjectFrom()
-         newLine.InjectFrom( line )
-         TechList.Add( newLine , feedback)
+        End Sub
 
-    Next
+        'Persistance Functions
+        Public Function Save(filePath As String) As Boolean Implements ISSMTOOL.Save
 
-  End Sub
 
- 'Persistance Functions
- Public Function Save(filePath As String) As Boolean Implements ISSMTOOL.Save
+            Dim returnValue As Boolean = True
+            Dim settings As JsonSerializerSettings = New JsonSerializerSettings()
+            settings.TypeNameHandling = TypeNameHandling.Objects
 
+            'JSON METHOD
+            Try
 
-   Dim returnValue As Boolean = True
-   Dim settings As JsonSerializerSettings = New JsonSerializerSettings()
-   settings.TypeNameHandling = TypeNameHandling.Objects
+                Dim output As String = JsonConvert.SerializeObject(Me, Formatting.Indented, settings)
 
-    'JSON METHOD
-    Try
+                File.WriteAllText(filePath, output)
 
-       Dim output As String = JsonConvert.SerializeObject(Me, Formatting.Indented, settings)
+            Catch ex As Exception
 
-       File.WriteAllText(filePath, output)
+                'Nothing to do except return false.
+                returnValue = False
 
-       Catch ex As Exception
+            End Try
 
-         'Nothing to do except return false.
-          returnValue = False
+            Return returnValue
 
-     End Try
+        End Function
+        Public Function Load(filePath As String) As Boolean Implements ISSMTOOL.Load
 
-   Return returnValue
+            Dim returnValue As Boolean = True
+            Dim settings As JsonSerializerSettings = New JsonSerializerSettings()
+            Dim tmpAux As SSMTOOL = New SSMTOOL(filePath)
 
-End Function
- Public Function Load(filePath As String) As Boolean Implements ISSMTOOL.Load
+            settings.TypeNameHandling = TypeNameHandling.Objects
 
-    Dim returnValue As Boolean = True
-    Dim settings As JsonSerializerSettings = New JsonSerializerSettings()
-    Dim tmpAux As SSMTOOL = New SSMTOOL(filePath)
+            'JSON METHOD
+            Try
 
-    settings.TypeNameHandling = TypeNameHandling.Objects
+                Dim output As String = File.ReadAllText(filePath)
 
-     'JSON METHOD
-     Try
 
-       Dim output As String = File.ReadAllText(filePath)
+                tmpAux = JsonConvert.DeserializeObject(Of SSMTOOL)(output, settings)
 
+                tmpAux.TechList.SetSSMGeneralInputs(tmpAux.genInputs)
 
-       tmpAux = JsonConvert.DeserializeObject(Of SSMTOOL)(output, settings)
+                For Each tll As TechListBenefitLine In tmpAux.TechList.TechLines
 
-       tmpAux.TechList.SetSSMGeneralInputs(tmpAux.genInputs)
+                    tll.inputSheet = tmpAux.genInputs
 
-       For Each tll As TechListBenefitLine In tmpAux.TechList.TechLines
+                Next
 
-         tll.inputSheet = tmpAux.genInputs
 
-       Next
+                'This is where we Assume values of loaded( Deserialized ) object.
+                Clone(tmpAux)
 
+            Catch ex As Exception
 
+                'Nothing to do except return false.
 
-       'This is where we Assume values of loaded( Deserialized ) object.
-       Clone(tmpAux)
+                returnValue = False
+            End Try
 
-      Catch ex As Exception
+            Return returnValue
 
-        'Nothing to do except return false.
+        End Function
 
-         returnValue = False
-      End Try
+        'Comparison
+        Public Function IsEqualTo(source As ISSMTOOL) As Boolean Implements ISSMTOOL.IsEqualTo
 
-    Return returnValue
+            'In this methods we only want to compare the non Static , non readonly public properties of 
+            'The class's General, User Inputs and  Tech Benefit members.
 
-End Function
+            Return compareGenUserInputs(source) AndAlso compareTechListBenefitLines(source)
 
- 'Comparison
- Public Function IsEqualTo(source As ISSMTOOL) As Boolean Implements ISSMTOOL.IsEqualTo
 
-  'In this methods we only want to compare the non Static , non readonly public properties of 
-  'The class's General, User Inputs and  Tech Benefit members.
+        End Function
+        Private Function compareGenUserInputs(source As ISSMTOOL) As Boolean
 
-   Return compareGenUserInputs(source) AndAlso compareTechListBenefitLines(source)
+            Dim src As SSMTOOL = DirectCast(source, SSMTOOL)
 
+            Dim returnValue As Boolean = True
 
- End Function
- Private Function compareGenUserInputs(source As ISSMTOOL) As Boolean
+            Dim properties As PropertyInfo() = Me.genInputs.GetType.GetProperties
 
-   Dim src As SSMTOOL = DirectCast(source, SSMTOOL)
+            For Each prop As PropertyInfo In properties
 
-   Dim returnValue As Boolean = True
+                'If Not prop.GetAccessors.IsReadOnly Then
+                If prop.CanWrite Then
+                    If prop.GetValue(Me.GenInputs, Nothing) <> prop.GetValue(src.GenInputs, Nothing) Then
+                        returnValue = False
+                    End If
 
-   Dim properties As PropertyInfo() = Me.genInputs.GetType.GetProperties
+                End If
 
-     For Each prop As PropertyInfo In properties
+            Next
 
-        If Not prop.GetAccessors.IsReadOnly Then
+            Return returnValue
 
-             If prop.GetValue(Me.genInputs, Nothing) <> prop.GetValue(src.genInputs, Nothing) Then
-                    returnValue = False
-             End If
+        End Function
+        Private Function compareTechListBenefitLines(source As ISSMTOOL) As Boolean
 
-        End If
 
-     Next
+            Dim src As SSMTOOL = DirectCast(source, SSMTOOL)
 
-   Return returnValue
+            'Equal numbers of lines check
+            If Me.TechList.TechLines.Count <> src.TechList.TechLines.Count Then Return False
 
- End Function
- Private Function compareTechListBenefitLines(source As ISSMTOOL) As Boolean
+            For Each tl As ITechListBenefitLine In Me.TechList.TechLines.OrderBy(Function(o) o.Category).ThenBy(Function(n) n.BenefitName)
 
+                'First Check line exists in other
+                If src.TechList.TechLines.Where(Function(w) w.BenefitName = tl.BenefitName AndAlso w.Category = tl.Category).Count <> 1 Then
 
-   Dim src As SSMTOOL = DirectCast(source, SSMTOOL)
+                    Return False
+                Else
 
-   'Equal numbers of lines check
-   If Me.TechList.TechLines.Count <> src.TechList.TechLines.Count Then Return False
+                    'check are equal
 
-     For Each tl As ITechListBenefitLine In Me.TechList.TechLines.OrderBy(Function(o) o.Category).ThenBy(Function(n) n.BenefitName)
+                    Dim testLine As ITechListBenefitLine = src.TechList.TechLines.First(Function(w) w.BenefitName = tl.BenefitName AndAlso w.Category = tl.Category)
 
-        'First Check line exists in other
-        If src.TechList.TechLines.Where(Function(w) w.BenefitName = tl.BenefitName AndAlso w.Category = tl.Category).Count <> 1 Then
+                    If Not testLine.IsEqualTo(tl) Then
+                        Return False
+                    End If
 
-         Return False
-        Else
+                End If
 
-         'check are equal
 
-          Dim testLine As ITechListBenefitLine = src.TechList.TechLines.First(Function(w) w.BenefitName = tl.BenefitName AndAlso w.Category = tl.Category)
+            Next
 
-           If Not testLine.IsEqualTo(tl) Then
-             Return False
-           End If
+            'All Looks OK
+            Return True
 
-        End If
+        End Function
 
+        'Overrides
+        Public Overrides Function ToString() As String
 
-     Next
 
-     'All Looks OK
-     Return True
+            Dim sb As New StringBuilder
 
- End Function
+            sb.AppendLine(Calculate.ToString())
 
- 'Overrides
- Public Overrides Function ToString() As String
-   
 
-     Dim sb As new StringBuilder 
+            Return sb.ToString()
 
-     sb.AppendLine( Calculate.ToString())
+        End Function
 
+        'Dynamicly Get Fuel having re-adjusted Engine Heat Waste, this was originally supposed to be Solid State. Late adjustment request 24/3/2015
+        Public Function FuelPerHBaseAsjusted(AverageUseableEngineWasteHeatKW As Single) As Single Implements ISSMTOOL.FuelPerHBaseAsjusted
 
-     Return sb.ToString()
+            If SSMDisabled Then
 
- End Function
+                Return 0
 
- 'Dynamicly Get Fuel having re-adjusted Engine Heat Waste, this was originally supposed to be Solid State. Late adjustment request 24/3/2015
- Public Function FuelPerHBaseAsjusted(AverageUseableEngineWasteHeatKW As Single) As Single Implements ISSMTOOL.FuelPerHBaseAsjusted
+            Else
 
-    'Set Engine Waste Heat
-     GenInputs.AH_EngineWasteHeatkW= AverageUseableEngineWasteHeatKW
-     Dim fba As Single = FuelPerHBaseAdjusted
-     
-     Dim FuelFiredWarning As Boolean = fba * GenInputs.BC_AuxHeaterEfficiency * GenInputs.BC_VolumicMassDieselOrHeatingOil *  GenInputs.BC_GCVDieselOrHeatingOil*1000 > _
-                    ( AverageUseableEngineWasteHeatKW +  GenInputs.AH_FuelFiredHeaterkW ) 
+                'Set Engine Waste Heat
+                GenInputs.AH_EngineWasteHeatkW = AverageUseableEngineWasteHeatKW
+                Dim fba As Single = FuelPerHBaseAdjusted
 
+                Dim FuelFiredWarning As Boolean = fba * GenInputs.BC_AuxHeaterEfficiency * GenInputs.BC_VolumicMassDieselOrHeatingOil * GenInputs.BC_GCVDieselOrHeatingOil * 1000 > _
+                            (AverageUseableEngineWasteHeatKW + GenInputs.AH_FuelFiredHeaterkW)
 
-     If Not FuelFiredHeaterInsufficientWarned AndAlso FuelFiredWarning then
 
-        FuelFiredHeaterInsufficientWarned=true
+                If Not FuelFiredHeaterInsufficientWarned AndAlso FuelFiredWarning Then
 
-        OnMessage(Me,“ HVAC SSM : Fuel fired heater insufficient for heating requirements, run continues assuming it was sufficient.” ,AdvancedAuxiliaryMessageType.Warning )
+                    FuelFiredHeaterInsufficientWarned = True
 
-     End If
+                    OnMessage(Me, " HVAC SSM : Fuel fired heater insufficient for heating requirements, run continues assuming it was sufficient.", AdvancedAuxiliaryMessageType.Warning)
 
+                End If
 
 
-     Return fba
 
- End Function
+                Return fba
 
- 'Events
- Public Event Message(ByRef sender As Object, message As String, messageType As AdvancedAuxiliaryMessageType) Implements ISSMTOOL.Message 
+            End If
 
- 'Raise Message Event.
- private Sub OnMessage(sender As Object, message As String, messageType As AdvancedAuxiliaryMessageType) 
-  
-  
-    If Not message is Nothing then
-  
-    RaiseEvent Message( Me, message, messageType)
-  
-    End If
-  
-  End Sub
+        End Function
 
+        'Events
+        Public Event Message(ByRef sender As Object, message As String, messageType As AdvancedAuxiliaryMessageType) Implements ISSMTOOL.Message
 
+        'Raise Message Event.
+        Private Sub OnMessage(sender As Object, message As String, messageType As AdvancedAuxiliaryMessageType)
 
-End Class
 
+            If Not message Is Nothing Then
 
-End Namespace
+                RaiseEvent Message(Me, message, messageType)
 
+            End If
 
+        End Sub
 
+    End Class
+
+
+End Namespace
\ No newline at end of file
diff --git a/VECTOAux/VectoAuxiliaries/UI/frmAuxiliaryConfig.Designer.vb b/VECTOAux/VectoAuxiliaries/UI/frmAuxiliaryConfig.Designer.vb
index a84b2b4561..51675037c7 100644
--- a/VECTOAux/VectoAuxiliaries/UI/frmAuxiliaryConfig.Designer.vb
+++ b/VECTOAux/VectoAuxiliaries/UI/frmAuxiliaryConfig.Designer.vb
@@ -136,22 +136,23 @@ Partial Class frmAuxiliaryConfig
         Me.CmFiles = New System.Windows.Forms.ContextMenuStrip(Me.components)
         Me.OpenWithToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
         Me.ShowInFolderToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
-        Me.pnlMain.SuspendLayout
-        Me.tabMain.SuspendLayout
-        Me.tabGeneralConfig.SuspendLayout
-        Me.tabElectricalConfig.SuspendLayout
-        CType(Me.gvResultsCardOverrun,System.ComponentModel.ISupportInitialize).BeginInit
-        CType(Me.gvResultsCardTraction,System.ComponentModel.ISupportInitialize).BeginInit
-        CType(Me.gvResultsCardIdle,System.ComponentModel.ISupportInitialize).BeginInit
-        CType(Me.gvElectricalConsumables,System.ComponentModel.ISupportInitialize).BeginInit
-        Me.tabPneumaticConfig.SuspendLayout
-        Me.pnlPneumaticsUserInput.SuspendLayout
-        Me.pnlPneumaticAuxillaries.SuspendLayout
-        Me.tabHVACConfig.SuspendLayout
-        Me.resultCardContextMenu.SuspendLayout
-        CType(Me.ErrorProvider,System.ComponentModel.ISupportInitialize).BeginInit
-        Me.CmFiles.SuspendLayout
-        Me.SuspendLayout
+        Me.chkDisableHVAC = New System.Windows.Forms.CheckBox()
+        Me.pnlMain.SuspendLayout()
+        Me.tabMain.SuspendLayout()
+        Me.tabGeneralConfig.SuspendLayout()
+        Me.tabElectricalConfig.SuspendLayout()
+        CType(Me.gvResultsCardOverrun, System.ComponentModel.ISupportInitialize).BeginInit()
+        CType(Me.gvResultsCardTraction, System.ComponentModel.ISupportInitialize).BeginInit()
+        CType(Me.gvResultsCardIdle, System.ComponentModel.ISupportInitialize).BeginInit()
+        CType(Me.gvElectricalConsumables, System.ComponentModel.ISupportInitialize).BeginInit()
+        Me.tabPneumaticConfig.SuspendLayout()
+        Me.pnlPneumaticsUserInput.SuspendLayout()
+        Me.pnlPneumaticAuxillaries.SuspendLayout()
+        Me.tabHVACConfig.SuspendLayout()
+        Me.resultCardContextMenu.SuspendLayout()
+        CType(Me.ErrorProvider, System.ComponentModel.ISupportInitialize).BeginInit()
+        Me.CmFiles.SuspendLayout()
+        Me.SuspendLayout()
         '
         'pnlMain
         '
@@ -171,7 +172,7 @@ Partial Class frmAuxiliaryConfig
         Me.btnCancel.Size = New System.Drawing.Size(75, 23)
         Me.btnCancel.TabIndex = 5
         Me.btnCancel.Text = "Cancel"
-        Me.btnCancel.UseVisualStyleBackColor = true
+        Me.btnCancel.UseVisualStyleBackColor = True
         '
         'btnSave
         '
@@ -180,7 +181,7 @@ Partial Class frmAuxiliaryConfig
         Me.btnSave.Size = New System.Drawing.Size(75, 23)
         Me.btnSave.TabIndex = 10
         Me.btnSave.Text = "Save"
-        Me.btnSave.UseVisualStyleBackColor = true
+        Me.btnSave.UseVisualStyleBackColor = True
         '
         'tabMain
         '
@@ -211,12 +212,12 @@ Partial Class frmAuxiliaryConfig
         Me.tabGeneralConfig.Size = New System.Drawing.Size(901, 587)
         Me.tabGeneralConfig.TabIndex = 0
         Me.tabGeneralConfig.Text = "General"
-        Me.tabGeneralConfig.UseVisualStyleBackColor = true
+        Me.tabGeneralConfig.UseVisualStyleBackColor = True
         '
         'Label1
         '
-        Me.Label1.AutoSize = true
-        Me.Label1.Font = New System.Drawing.Font("Microsoft Sans Serif", 14!, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        Me.Label1.AutoSize = True
+        Me.Label1.Font = New System.Drawing.Font("Microsoft Sans Serif", 14.0!, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         Me.Label1.ForeColor = System.Drawing.Color.Lime
         Me.Label1.Location = New System.Drawing.Point(82, 59)
         Me.Label1.Name = "Label1"
@@ -231,18 +232,18 @@ Partial Class frmAuxiliaryConfig
         Me.btnFuelMap.Size = New System.Drawing.Size(38, 23)
         Me.btnFuelMap.TabIndex = 9
         Me.btnFuelMap.Text = ". . . "
-        Me.btnFuelMap.UseVisualStyleBackColor = true
-        Me.btnFuelMap.Visible = false
+        Me.btnFuelMap.UseVisualStyleBackColor = True
+        Me.btnFuelMap.Visible = False
         '
         'lblFuelMap
         '
-        Me.lblFuelMap.AutoSize = true
+        Me.lblFuelMap.AutoSize = True
         Me.lblFuelMap.Location = New System.Drawing.Point(79, 205)
         Me.lblFuelMap.Name = "lblFuelMap"
         Me.lblFuelMap.Size = New System.Drawing.Size(51, 13)
         Me.lblFuelMap.TabIndex = 8
         Me.lblFuelMap.Text = "Fuel Map"
-        Me.lblFuelMap.Visible = false
+        Me.lblFuelMap.Visible = False
         '
         'txtFuelMap
         '
@@ -250,17 +251,17 @@ Partial Class frmAuxiliaryConfig
         Me.txtFuelMap.Name = "txtFuelMap"
         Me.txtFuelMap.Size = New System.Drawing.Size(649, 20)
         Me.txtFuelMap.TabIndex = 7
-        Me.txtFuelMap.Visible = false
+        Me.txtFuelMap.Visible = False
         '
         'cboCycle
         '
-        Me.cboCycle.FormattingEnabled = true
+        Me.cboCycle.FormattingEnabled = True
         Me.cboCycle.Items.AddRange(New Object() {"Urban", "Heavy urban", "Suburban", "Interurban", "Coach"})
         Me.cboCycle.Location = New System.Drawing.Point(136, 304)
         Me.cboCycle.Name = "cboCycle"
         Me.cboCycle.Size = New System.Drawing.Size(121, 21)
         Me.cboCycle.TabIndex = 6
-        Me.cboCycle.Visible = false
+        Me.cboCycle.Visible = False
         '
         'txtVehicleWeightKG
         '
@@ -268,7 +269,7 @@ Partial Class frmAuxiliaryConfig
         Me.txtVehicleWeightKG.Name = "txtVehicleWeightKG"
         Me.txtVehicleWeightKG.Size = New System.Drawing.Size(100, 20)
         Me.txtVehicleWeightKG.TabIndex = 2
-        Me.txtVehicleWeightKG.Visible = false
+        Me.txtVehicleWeightKG.Visible = False
         '
         'tabElectricalConfig
         '
@@ -298,16 +299,16 @@ Partial Class frmAuxiliaryConfig
         Me.tabElectricalConfig.Size = New System.Drawing.Size(901, 587)
         Me.tabElectricalConfig.TabIndex = 1
         Me.tabElectricalConfig.Text = "Electrics"
-        Me.tabElectricalConfig.UseVisualStyleBackColor = true
+        Me.tabElectricalConfig.UseVisualStyleBackColor = True
         '
         'btnAALTOpen
         '
-        Me.btnAALTOpen.Image = CType(resources.GetObject("btnAALTOpen.Image"),System.Drawing.Image)
+        Me.btnAALTOpen.Image = CType(resources.GetObject("btnAALTOpen.Image"), System.Drawing.Image)
         Me.btnAALTOpen.Location = New System.Drawing.Point(541, 43)
         Me.btnAALTOpen.Name = "btnAALTOpen"
         Me.btnAALTOpen.Size = New System.Drawing.Size(28, 20)
         Me.btnAALTOpen.TabIndex = 20
-        Me.btnAALTOpen.UseVisualStyleBackColor = true
+        Me.btnAALTOpen.UseVisualStyleBackColor = True
         '
         'btnAlternatorMapPath
         '
@@ -316,13 +317,13 @@ Partial Class frmAuxiliaryConfig
         Me.btnAlternatorMapPath.Size = New System.Drawing.Size(38, 20)
         Me.btnAlternatorMapPath.TabIndex = 19
         Me.btnAlternatorMapPath.Text = ". . ."
-        Me.btnAlternatorMapPath.UseVisualStyleBackColor = true
+        Me.btnAlternatorMapPath.UseVisualStyleBackColor = True
         '
         'gvResultsCardOverrun
         '
         DataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
         DataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control
-        DataGridViewCellStyle1.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        DataGridViewCellStyle1.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         DataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText
         DataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight
         DataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText
@@ -331,7 +332,7 @@ Partial Class frmAuxiliaryConfig
         Me.gvResultsCardOverrun.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize
         DataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
         DataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Window
-        DataGridViewCellStyle2.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        DataGridViewCellStyle2.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         DataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.ControlText
         DataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight
         DataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText
@@ -341,7 +342,7 @@ Partial Class frmAuxiliaryConfig
         Me.gvResultsCardOverrun.Name = "gvResultsCardOverrun"
         DataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
         DataGridViewCellStyle3.BackColor = System.Drawing.SystemColors.Control
-        DataGridViewCellStyle3.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        DataGridViewCellStyle3.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         DataGridViewCellStyle3.ForeColor = System.Drawing.SystemColors.WindowText
         DataGridViewCellStyle3.SelectionBackColor = System.Drawing.SystemColors.Highlight
         DataGridViewCellStyle3.SelectionForeColor = System.Drawing.SystemColors.HighlightText
@@ -354,7 +355,7 @@ Partial Class frmAuxiliaryConfig
         '
         DataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
         DataGridViewCellStyle4.BackColor = System.Drawing.SystemColors.Control
-        DataGridViewCellStyle4.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        DataGridViewCellStyle4.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         DataGridViewCellStyle4.ForeColor = System.Drawing.SystemColors.WindowText
         DataGridViewCellStyle4.SelectionBackColor = System.Drawing.SystemColors.Highlight
         DataGridViewCellStyle4.SelectionForeColor = System.Drawing.SystemColors.HighlightText
@@ -363,7 +364,7 @@ Partial Class frmAuxiliaryConfig
         Me.gvResultsCardTraction.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize
         DataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
         DataGridViewCellStyle5.BackColor = System.Drawing.SystemColors.Window
-        DataGridViewCellStyle5.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        DataGridViewCellStyle5.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         DataGridViewCellStyle5.ForeColor = System.Drawing.SystemColors.ControlText
         DataGridViewCellStyle5.SelectionBackColor = System.Drawing.SystemColors.Highlight
         DataGridViewCellStyle5.SelectionForeColor = System.Drawing.SystemColors.HighlightText
@@ -373,7 +374,7 @@ Partial Class frmAuxiliaryConfig
         Me.gvResultsCardTraction.Name = "gvResultsCardTraction"
         DataGridViewCellStyle6.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
         DataGridViewCellStyle6.BackColor = System.Drawing.SystemColors.Control
-        DataGridViewCellStyle6.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        DataGridViewCellStyle6.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         DataGridViewCellStyle6.ForeColor = System.Drawing.SystemColors.WindowText
         DataGridViewCellStyle6.SelectionBackColor = System.Drawing.SystemColors.Highlight
         DataGridViewCellStyle6.SelectionForeColor = System.Drawing.SystemColors.HighlightText
@@ -386,7 +387,7 @@ Partial Class frmAuxiliaryConfig
         '
         DataGridViewCellStyle7.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
         DataGridViewCellStyle7.BackColor = System.Drawing.SystemColors.Control
-        DataGridViewCellStyle7.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        DataGridViewCellStyle7.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         DataGridViewCellStyle7.ForeColor = System.Drawing.SystemColors.WindowText
         DataGridViewCellStyle7.SelectionBackColor = System.Drawing.SystemColors.Highlight
         DataGridViewCellStyle7.SelectionForeColor = System.Drawing.SystemColors.HighlightText
@@ -395,7 +396,7 @@ Partial Class frmAuxiliaryConfig
         Me.gvResultsCardIdle.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize
         DataGridViewCellStyle8.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
         DataGridViewCellStyle8.BackColor = System.Drawing.SystemColors.Window
-        DataGridViewCellStyle8.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        DataGridViewCellStyle8.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         DataGridViewCellStyle8.ForeColor = System.Drawing.SystemColors.ControlText
         DataGridViewCellStyle8.SelectionBackColor = System.Drawing.SystemColors.Highlight
         DataGridViewCellStyle8.SelectionForeColor = System.Drawing.SystemColors.HighlightText
@@ -405,7 +406,7 @@ Partial Class frmAuxiliaryConfig
         Me.gvResultsCardIdle.Name = "gvResultsCardIdle"
         DataGridViewCellStyle9.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
         DataGridViewCellStyle9.BackColor = System.Drawing.SystemColors.Control
-        DataGridViewCellStyle9.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        DataGridViewCellStyle9.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         DataGridViewCellStyle9.ForeColor = System.Drawing.SystemColors.WindowText
         DataGridViewCellStyle9.SelectionBackColor = System.Drawing.SystemColors.Highlight
         DataGridViewCellStyle9.SelectionForeColor = System.Drawing.SystemColors.HighlightText
@@ -416,7 +417,7 @@ Partial Class frmAuxiliaryConfig
         '
         'lblResultsOverrun
         '
-        Me.lblResultsOverrun.AutoSize = true
+        Me.lblResultsOverrun.AutoSize = True
         Me.lblResultsOverrun.Location = New System.Drawing.Point(610, 435)
         Me.lblResultsOverrun.Name = "lblResultsOverrun"
         Me.lblResultsOverrun.Size = New System.Drawing.Size(109, 13)
@@ -425,7 +426,7 @@ Partial Class frmAuxiliaryConfig
         '
         'lblResultsTractionOn
         '
-        Me.lblResultsTractionOn.AutoSize = true
+        Me.lblResultsTractionOn.AutoSize = True
         Me.lblResultsTractionOn.Location = New System.Drawing.Point(322, 435)
         Me.lblResultsTractionOn.Name = "lblResultsTractionOn"
         Me.lblResultsTractionOn.Size = New System.Drawing.Size(124, 13)
@@ -434,7 +435,7 @@ Partial Class frmAuxiliaryConfig
         '
         'lblResultsIdle
         '
-        Me.lblResultsIdle.AutoSize = true
+        Me.lblResultsIdle.AutoSize = True
         Me.lblResultsIdle.Location = New System.Drawing.Point(33, 435)
         Me.lblResultsIdle.Name = "lblResultsIdle"
         Me.lblResultsIdle.Size = New System.Drawing.Size(91, 13)
@@ -443,17 +444,17 @@ Partial Class frmAuxiliaryConfig
         '
         'chkSmartElectricals
         '
-        Me.chkSmartElectricals.AutoSize = true
+        Me.chkSmartElectricals.AutoSize = True
         Me.chkSmartElectricals.Location = New System.Drawing.Point(162, 132)
         Me.chkSmartElectricals.Name = "chkSmartElectricals"
         Me.chkSmartElectricals.Size = New System.Drawing.Size(96, 17)
         Me.chkSmartElectricals.TabIndex = 12
         Me.chkSmartElectricals.Text = "Smart Electrics"
-        Me.chkSmartElectricals.UseVisualStyleBackColor = true
+        Me.chkSmartElectricals.UseVisualStyleBackColor = True
         '
         'lblElectricalConsumables
         '
-        Me.lblElectricalConsumables.AutoSize = true
+        Me.lblElectricalConsumables.AutoSize = True
         Me.lblElectricalConsumables.Location = New System.Drawing.Point(34, 154)
         Me.lblElectricalConsumables.Name = "lblElectricalConsumables"
         Me.lblElectricalConsumables.Size = New System.Drawing.Size(116, 13)
@@ -464,7 +465,7 @@ Partial Class frmAuxiliaryConfig
         '
         DataGridViewCellStyle10.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
         DataGridViewCellStyle10.BackColor = System.Drawing.SystemColors.Control
-        DataGridViewCellStyle10.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        DataGridViewCellStyle10.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         DataGridViewCellStyle10.ForeColor = System.Drawing.SystemColors.WindowText
         DataGridViewCellStyle10.SelectionBackColor = System.Drawing.SystemColors.Highlight
         DataGridViewCellStyle10.SelectionForeColor = System.Drawing.SystemColors.HighlightText
@@ -473,7 +474,7 @@ Partial Class frmAuxiliaryConfig
         Me.gvElectricalConsumables.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize
         DataGridViewCellStyle11.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
         DataGridViewCellStyle11.BackColor = System.Drawing.SystemColors.Window
-        DataGridViewCellStyle11.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        DataGridViewCellStyle11.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         DataGridViewCellStyle11.ForeColor = System.Drawing.SystemColors.ControlText
         DataGridViewCellStyle11.SelectionBackColor = System.Drawing.SystemColors.Highlight
         DataGridViewCellStyle11.SelectionForeColor = System.Drawing.SystemColors.HighlightText
@@ -483,7 +484,7 @@ Partial Class frmAuxiliaryConfig
         Me.gvElectricalConsumables.Name = "gvElectricalConsumables"
         DataGridViewCellStyle12.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
         DataGridViewCellStyle12.BackColor = System.Drawing.SystemColors.Control
-        DataGridViewCellStyle12.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        DataGridViewCellStyle12.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         DataGridViewCellStyle12.ForeColor = System.Drawing.SystemColors.WindowText
         DataGridViewCellStyle12.SelectionBackColor = System.Drawing.SystemColors.Highlight
         DataGridViewCellStyle12.SelectionForeColor = System.Drawing.SystemColors.HighlightText
@@ -496,7 +497,7 @@ Partial Class frmAuxiliaryConfig
         '
         Me.txtDoorActuationTimeSeconds.Location = New System.Drawing.Point(162, 101)
         Me.txtDoorActuationTimeSeconds.Name = "txtDoorActuationTimeSeconds"
-        Me.txtDoorActuationTimeSeconds.ReadOnly = true
+        Me.txtDoorActuationTimeSeconds.ReadOnly = True
         Me.txtDoorActuationTimeSeconds.Size = New System.Drawing.Size(100, 20)
         Me.txtDoorActuationTimeSeconds.TabIndex = 9
         '
@@ -504,7 +505,7 @@ Partial Class frmAuxiliaryConfig
         '
         Me.txtAlternatorGearEfficiency.Location = New System.Drawing.Point(162, 71)
         Me.txtAlternatorGearEfficiency.Name = "txtAlternatorGearEfficiency"
-        Me.txtAlternatorGearEfficiency.ReadOnly = true
+        Me.txtAlternatorGearEfficiency.ReadOnly = True
         Me.txtAlternatorGearEfficiency.Size = New System.Drawing.Size(100, 20)
         Me.txtAlternatorGearEfficiency.TabIndex = 6
         '
@@ -519,13 +520,13 @@ Partial Class frmAuxiliaryConfig
         '
         Me.txtPowernetVoltage.Location = New System.Drawing.Point(162, 16)
         Me.txtPowernetVoltage.Name = "txtPowernetVoltage"
-        Me.txtPowernetVoltage.ReadOnly = true
+        Me.txtPowernetVoltage.ReadOnly = True
         Me.txtPowernetVoltage.Size = New System.Drawing.Size(100, 20)
         Me.txtPowernetVoltage.TabIndex = 2
         '
         'lblDoorActuationTimeSeconds
         '
-        Me.lblDoorActuationTimeSeconds.AutoSize = true
+        Me.lblDoorActuationTimeSeconds.AutoSize = True
         Me.lblDoorActuationTimeSeconds.Location = New System.Drawing.Point(30, 105)
         Me.lblDoorActuationTimeSeconds.Name = "lblDoorActuationTimeSeconds"
         Me.lblDoorActuationTimeSeconds.Size = New System.Drawing.Size(114, 13)
@@ -534,7 +535,7 @@ Partial Class frmAuxiliaryConfig
         '
         'lblAlternatorGearEfficiency
         '
-        Me.lblAlternatorGearEfficiency.AutoSize = true
+        Me.lblAlternatorGearEfficiency.AutoSize = True
         Me.lblAlternatorGearEfficiency.Location = New System.Drawing.Point(30, 75)
         Me.lblAlternatorGearEfficiency.Name = "lblAlternatorGearEfficiency"
         Me.lblAlternatorGearEfficiency.Size = New System.Drawing.Size(132, 13)
@@ -543,7 +544,7 @@ Partial Class frmAuxiliaryConfig
         '
         'lblAlternatormapPath
         '
-        Me.lblAlternatormapPath.AutoSize = true
+        Me.lblAlternatormapPath.AutoSize = True
         Me.lblAlternatormapPath.Location = New System.Drawing.Point(30, 47)
         Me.lblAlternatormapPath.Name = "lblAlternatormapPath"
         Me.lblAlternatormapPath.Size = New System.Drawing.Size(76, 13)
@@ -552,7 +553,7 @@ Partial Class frmAuxiliaryConfig
         '
         'lblPowerNetVoltage
         '
-        Me.lblPowerNetVoltage.AutoSize = true
+        Me.lblPowerNetVoltage.AutoSize = True
         Me.lblPowerNetVoltage.Location = New System.Drawing.Point(30, 20)
         Me.lblPowerNetVoltage.Name = "lblPowerNetVoltage"
         Me.lblPowerNetVoltage.Size = New System.Drawing.Size(91, 13)
@@ -568,7 +569,7 @@ Partial Class frmAuxiliaryConfig
         Me.tabPneumaticConfig.Size = New System.Drawing.Size(901, 587)
         Me.tabPneumaticConfig.TabIndex = 2
         Me.tabPneumaticConfig.Text = "Pneumatics"
-        Me.tabPneumaticConfig.UseVisualStyleBackColor = true
+        Me.tabPneumaticConfig.UseVisualStyleBackColor = True
         '
         'pnlPneumaticsUserInput
         '
@@ -603,21 +604,21 @@ Partial Class frmAuxiliaryConfig
         '
         'btnOpenAPAC
         '
-        Me.btnOpenAPAC.Image = CType(resources.GetObject("btnOpenAPAC.Image"),System.Drawing.Image)
+        Me.btnOpenAPAC.Image = CType(resources.GetObject("btnOpenAPAC.Image"), System.Drawing.Image)
         Me.btnOpenAPAC.Location = New System.Drawing.Point(456, 345)
         Me.btnOpenAPAC.Name = "btnOpenAPAC"
         Me.btnOpenAPAC.Size = New System.Drawing.Size(28, 20)
         Me.btnOpenAPAC.TabIndex = 54
-        Me.btnOpenAPAC.UseVisualStyleBackColor = true
+        Me.btnOpenAPAC.UseVisualStyleBackColor = True
         '
         'btnOpenACMP
         '
-        Me.btnOpenACMP.Image = CType(resources.GetObject("btnOpenACMP.Image"),System.Drawing.Image)
+        Me.btnOpenACMP.Image = CType(resources.GetObject("btnOpenACMP.Image"), System.Drawing.Image)
         Me.btnOpenACMP.Location = New System.Drawing.Point(456, 60)
         Me.btnOpenACMP.Name = "btnOpenACMP"
         Me.btnOpenACMP.Size = New System.Drawing.Size(28, 20)
         Me.btnOpenACMP.TabIndex = 53
-        Me.btnOpenACMP.UseVisualStyleBackColor = true
+        Me.btnOpenACMP.UseVisualStyleBackColor = True
         '
         'btnActuationsMap
         '
@@ -626,7 +627,7 @@ Partial Class frmAuxiliaryConfig
         Me.btnActuationsMap.Size = New System.Drawing.Size(35, 23)
         Me.btnActuationsMap.TabIndex = 21
         Me.btnActuationsMap.Text = ". . ."
-        Me.btnActuationsMap.UseVisualStyleBackColor = true
+        Me.btnActuationsMap.UseVisualStyleBackColor = True
         '
         'btnCompressorMap
         '
@@ -635,12 +636,12 @@ Partial Class frmAuxiliaryConfig
         Me.btnCompressorMap.Size = New System.Drawing.Size(35, 23)
         Me.btnCompressorMap.TabIndex = 13
         Me.btnCompressorMap.Text = ". . ."
-        Me.btnCompressorMap.UseVisualStyleBackColor = true
+        Me.btnCompressorMap.UseVisualStyleBackColor = True
         '
         'lblPneumaticsVariablesTitle
         '
-        Me.lblPneumaticsVariablesTitle.AutoSize = true
-        Me.lblPneumaticsVariablesTitle.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        Me.lblPneumaticsVariablesTitle.AutoSize = True
+        Me.lblPneumaticsVariablesTitle.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         Me.lblPneumaticsVariablesTitle.ForeColor = System.Drawing.SystemColors.MenuHighlight
         Me.lblPneumaticsVariablesTitle.Location = New System.Drawing.Point(20, 18)
         Me.lblPneumaticsVariablesTitle.Name = "lblPneumaticsVariablesTitle"
@@ -650,7 +651,7 @@ Partial Class frmAuxiliaryConfig
         '
         'lblActuationsMap
         '
-        Me.lblActuationsMap.AutoSize = true
+        Me.lblActuationsMap.AutoSize = True
         Me.lblActuationsMap.Location = New System.Drawing.Point(13, 348)
         Me.lblActuationsMap.Name = "lblActuationsMap"
         Me.lblActuationsMap.Size = New System.Drawing.Size(81, 13)
@@ -667,7 +668,7 @@ Partial Class frmAuxiliaryConfig
         Me.chkSmartAirCompression.Size = New System.Drawing.Size(153, 22)
         Me.chkSmartAirCompression.TabIndex = 23
         Me.chkSmartAirCompression.Text = "Smart Pneumatics"
-        Me.chkSmartAirCompression.UseVisualStyleBackColor = true
+        Me.chkSmartAirCompression.UseVisualStyleBackColor = True
         '
         'chkSmartRegeneration
         '
@@ -679,11 +680,11 @@ Partial Class frmAuxiliaryConfig
         Me.chkSmartRegeneration.Size = New System.Drawing.Size(153, 22)
         Me.chkSmartRegeneration.TabIndex = 24
         Me.chkSmartRegeneration.Text = "Smart Regeneration"
-        Me.chkSmartRegeneration.UseVisualStyleBackColor = true
+        Me.chkSmartRegeneration.UseVisualStyleBackColor = True
         '
         'lblAdBlueDosing
         '
-        Me.lblAdBlueDosing.AutoSize = true
+        Me.lblAdBlueDosing.AutoSize = True
         Me.lblAdBlueDosing.Location = New System.Drawing.Point(13, 184)
         Me.lblAdBlueDosing.Name = "lblAdBlueDosing"
         Me.lblAdBlueDosing.Size = New System.Drawing.Size(77, 13)
@@ -699,9 +700,9 @@ Partial Class frmAuxiliaryConfig
         Me.chkRetarderBrake.Name = "chkRetarderBrake"
         Me.chkRetarderBrake.Size = New System.Drawing.Size(153, 22)
         Me.chkRetarderBrake.TabIndex = 22
-        Me.chkRetarderBrake.TabStop = false
+        Me.chkRetarderBrake.TabStop = False
         Me.chkRetarderBrake.Text = "Retarder Brake"
-        Me.chkRetarderBrake.UseVisualStyleBackColor = true
+        Me.chkRetarderBrake.UseVisualStyleBackColor = True
         '
         'txtKneelingHeightMillimeters
         '
@@ -712,7 +713,7 @@ Partial Class frmAuxiliaryConfig
         '
         'lblAirSuspensionControl
         '
-        Me.lblAirSuspensionControl.AutoSize = true
+        Me.lblAirSuspensionControl.AutoSize = True
         Me.lblAirSuspensionControl.Location = New System.Drawing.Point(13, 225)
         Me.lblAirSuspensionControl.Name = "lblAirSuspensionControl"
         Me.lblAirSuspensionControl.Size = New System.Drawing.Size(113, 13)
@@ -721,7 +722,7 @@ Partial Class frmAuxiliaryConfig
         '
         'cboDoors
         '
-        Me.cboDoors.FormattingEnabled = true
+        Me.cboDoors.FormattingEnabled = True
         Me.cboDoors.Items.AddRange(New Object() {"<Select>", "Pneumatic", "Electric"})
         Me.cboDoors.Location = New System.Drawing.Point(156, 262)
         Me.cboDoors.Name = "cboDoors"
@@ -737,7 +738,7 @@ Partial Class frmAuxiliaryConfig
         '
         'lblCompressorGearEfficiency
         '
-        Me.lblCompressorGearEfficiency.AutoSize = true
+        Me.lblCompressorGearEfficiency.AutoSize = True
         Me.lblCompressorGearEfficiency.Location = New System.Drawing.Point(13, 142)
         Me.lblCompressorGearEfficiency.Name = "lblCompressorGearEfficiency"
         Me.lblCompressorGearEfficiency.Size = New System.Drawing.Size(137, 13)
@@ -754,7 +755,7 @@ Partial Class frmAuxiliaryConfig
         '
         'lblCompressorGearRatio
         '
-        Me.lblCompressorGearRatio.AutoSize = true
+        Me.lblCompressorGearRatio.AutoSize = True
         Me.lblCompressorGearRatio.Location = New System.Drawing.Point(13, 99)
         Me.lblCompressorGearRatio.Name = "lblCompressorGearRatio"
         Me.lblCompressorGearRatio.Size = New System.Drawing.Size(116, 13)
@@ -770,7 +771,7 @@ Partial Class frmAuxiliaryConfig
         '
         'lblCompressorMap
         '
-        Me.lblCompressorMap.AutoSize = true
+        Me.lblCompressorMap.AutoSize = True
         Me.lblCompressorMap.Location = New System.Drawing.Point(13, 60)
         Me.lblCompressorMap.Name = "lblCompressorMap"
         Me.lblCompressorMap.Size = New System.Drawing.Size(86, 13)
@@ -779,7 +780,7 @@ Partial Class frmAuxiliaryConfig
         '
         'cboAirSuspensionControl
         '
-        Me.cboAirSuspensionControl.FormattingEnabled = true
+        Me.cboAirSuspensionControl.FormattingEnabled = True
         Me.cboAirSuspensionControl.Items.AddRange(New Object() {"<Select>", "Mechanically", "Electrically"})
         Me.cboAirSuspensionControl.Location = New System.Drawing.Point(156, 220)
         Me.cboAirSuspensionControl.Name = "cboAirSuspensionControl"
@@ -788,7 +789,7 @@ Partial Class frmAuxiliaryConfig
         '
         'lblDoors
         '
-        Me.lblDoors.AutoSize = true
+        Me.lblDoors.AutoSize = True
         Me.lblDoors.Location = New System.Drawing.Point(13, 266)
         Me.lblDoors.Name = "lblDoors"
         Me.lblDoors.Size = New System.Drawing.Size(79, 13)
@@ -797,7 +798,7 @@ Partial Class frmAuxiliaryConfig
         '
         'cboAdBlueDosing
         '
-        Me.cboAdBlueDosing.FormattingEnabled = true
+        Me.cboAdBlueDosing.FormattingEnabled = True
         Me.cboAdBlueDosing.Items.AddRange(New Object() {"<Select>", "Pneumatic", "Electric"})
         Me.cboAdBlueDosing.Location = New System.Drawing.Point(156, 180)
         Me.cboAdBlueDosing.Name = "cboAdBlueDosing"
@@ -806,7 +807,7 @@ Partial Class frmAuxiliaryConfig
         '
         'lblKneelingHeightMillimeters
         '
-        Me.lblKneelingHeightMillimeters.AutoSize = true
+        Me.lblKneelingHeightMillimeters.AutoSize = True
         Me.lblKneelingHeightMillimeters.Location = New System.Drawing.Point(13, 308)
         Me.lblKneelingHeightMillimeters.Name = "lblKneelingHeightMillimeters"
         Me.lblKneelingHeightMillimeters.Size = New System.Drawing.Size(133, 13)
@@ -854,8 +855,8 @@ Partial Class frmAuxiliaryConfig
         '
         'lblPneumaticAuxillariesTitle
         '
-        Me.lblPneumaticAuxillariesTitle.AutoSize = true
-        Me.lblPneumaticAuxillariesTitle.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        Me.lblPneumaticAuxillariesTitle.AutoSize = True
+        Me.lblPneumaticAuxillariesTitle.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         Me.lblPneumaticAuxillariesTitle.ForeColor = System.Drawing.SystemColors.MenuHighlight
         Me.lblPneumaticAuxillariesTitle.Location = New System.Drawing.Point(23, 18)
         Me.lblPneumaticAuxillariesTitle.Name = "lblPneumaticAuxillariesTitle"
@@ -865,7 +866,7 @@ Partial Class frmAuxiliaryConfig
         '
         'lblAdBlueNIperMinute
         '
-        Me.lblAdBlueNIperMinute.AutoSize = true
+        Me.lblAdBlueNIperMinute.AutoSize = True
         Me.lblAdBlueNIperMinute.Location = New System.Drawing.Point(20, 60)
         Me.lblAdBlueNIperMinute.MinimumSize = New System.Drawing.Size(120, 0)
         Me.lblAdBlueNIperMinute.Name = "lblAdBlueNIperMinute"
@@ -875,7 +876,7 @@ Partial Class frmAuxiliaryConfig
         '
         'lblAirControlledSuspensionNIperMinute
         '
-        Me.lblAirControlledSuspensionNIperMinute.AutoSize = true
+        Me.lblAirControlledSuspensionNIperMinute.AutoSize = True
         Me.lblAirControlledSuspensionNIperMinute.Location = New System.Drawing.Point(20, 99)
         Me.lblAirControlledSuspensionNIperMinute.MinimumSize = New System.Drawing.Size(120, 0)
         Me.lblAirControlledSuspensionNIperMinute.Name = "lblAirControlledSuspensionNIperMinute"
@@ -885,7 +886,7 @@ Partial Class frmAuxiliaryConfig
         '
         'lblBrakingNoRetarderNIperKG
         '
-        Me.lblBrakingNoRetarderNIperKG.AutoSize = true
+        Me.lblBrakingNoRetarderNIperKG.AutoSize = True
         Me.lblBrakingNoRetarderNIperKG.Location = New System.Drawing.Point(20, 140)
         Me.lblBrakingNoRetarderNIperKG.MinimumSize = New System.Drawing.Size(120, 0)
         Me.lblBrakingNoRetarderNIperKG.Name = "lblBrakingNoRetarderNIperKG"
@@ -895,7 +896,7 @@ Partial Class frmAuxiliaryConfig
         '
         'lblBrakingWithRetarderNIperKG
         '
-        Me.lblBrakingWithRetarderNIperKG.AutoSize = true
+        Me.lblBrakingWithRetarderNIperKG.AutoSize = True
         Me.lblBrakingWithRetarderNIperKG.Location = New System.Drawing.Point(20, 183)
         Me.lblBrakingWithRetarderNIperKG.MinimumSize = New System.Drawing.Size(120, 0)
         Me.lblBrakingWithRetarderNIperKG.Name = "lblBrakingWithRetarderNIperKG"
@@ -905,7 +906,7 @@ Partial Class frmAuxiliaryConfig
         '
         'lblBreakingPerKneelingNIperKGinMM
         '
-        Me.lblBreakingPerKneelingNIperKGinMM.AutoSize = true
+        Me.lblBreakingPerKneelingNIperKGinMM.AutoSize = True
         Me.lblBreakingPerKneelingNIperKGinMM.Location = New System.Drawing.Point(20, 222)
         Me.lblBreakingPerKneelingNIperKGinMM.MinimumSize = New System.Drawing.Size(120, 0)
         Me.lblBreakingPerKneelingNIperKGinMM.Name = "lblBreakingPerKneelingNIperKGinMM"
@@ -915,7 +916,7 @@ Partial Class frmAuxiliaryConfig
         '
         'lblDeadVolBlowOutsPerLitresperHour
         '
-        Me.lblDeadVolBlowOutsPerLitresperHour.AutoSize = true
+        Me.lblDeadVolBlowOutsPerLitresperHour.AutoSize = True
         Me.lblDeadVolBlowOutsPerLitresperHour.Location = New System.Drawing.Point(20, 263)
         Me.lblDeadVolBlowOutsPerLitresperHour.MinimumSize = New System.Drawing.Size(120, 0)
         Me.lblDeadVolBlowOutsPerLitresperHour.Name = "lblDeadVolBlowOutsPerLitresperHour"
@@ -925,7 +926,7 @@ Partial Class frmAuxiliaryConfig
         '
         'lblDeadVolumeLitres
         '
-        Me.lblDeadVolumeLitres.AutoSize = true
+        Me.lblDeadVolumeLitres.AutoSize = True
         Me.lblDeadVolumeLitres.Location = New System.Drawing.Point(20, 303)
         Me.lblDeadVolumeLitres.MinimumSize = New System.Drawing.Size(120, 0)
         Me.lblDeadVolumeLitres.Name = "lblDeadVolumeLitres"
@@ -935,7 +936,7 @@ Partial Class frmAuxiliaryConfig
         '
         'lblNonSmartRegenFractionTotalAirDemand
         '
-        Me.lblNonSmartRegenFractionTotalAirDemand.AutoSize = true
+        Me.lblNonSmartRegenFractionTotalAirDemand.AutoSize = True
         Me.lblNonSmartRegenFractionTotalAirDemand.Location = New System.Drawing.Point(20, 346)
         Me.lblNonSmartRegenFractionTotalAirDemand.MinimumSize = New System.Drawing.Size(120, 0)
         Me.lblNonSmartRegenFractionTotalAirDemand.Name = "lblNonSmartRegenFractionTotalAirDemand"
@@ -945,7 +946,7 @@ Partial Class frmAuxiliaryConfig
         '
         'lblOverrunUtilisationForCompressionFraction
         '
-        Me.lblOverrunUtilisationForCompressionFraction.AutoSize = true
+        Me.lblOverrunUtilisationForCompressionFraction.AutoSize = True
         Me.lblOverrunUtilisationForCompressionFraction.Location = New System.Drawing.Point(20, 388)
         Me.lblOverrunUtilisationForCompressionFraction.MinimumSize = New System.Drawing.Size(120, 0)
         Me.lblOverrunUtilisationForCompressionFraction.Name = "lblOverrunUtilisationForCompressionFraction"
@@ -955,7 +956,7 @@ Partial Class frmAuxiliaryConfig
         '
         'lblPerDoorOpeningNI
         '
-        Me.lblPerDoorOpeningNI.AutoSize = true
+        Me.lblPerDoorOpeningNI.AutoSize = True
         Me.lblPerDoorOpeningNI.Location = New System.Drawing.Point(20, 427)
         Me.lblPerDoorOpeningNI.MinimumSize = New System.Drawing.Size(120, 0)
         Me.lblPerDoorOpeningNI.Name = "lblPerDoorOpeningNI"
@@ -965,7 +966,7 @@ Partial Class frmAuxiliaryConfig
         '
         'lblPerStopBrakeActuationNIperKG
         '
-        Me.lblPerStopBrakeActuationNIperKG.AutoSize = true
+        Me.lblPerStopBrakeActuationNIperKG.AutoSize = True
         Me.lblPerStopBrakeActuationNIperKG.Location = New System.Drawing.Point(20, 469)
         Me.lblPerStopBrakeActuationNIperKG.MinimumSize = New System.Drawing.Size(120, 0)
         Me.lblPerStopBrakeActuationNIperKG.Name = "lblPerStopBrakeActuationNIperKG"
@@ -975,7 +976,7 @@ Partial Class frmAuxiliaryConfig
         '
         'lblSmartRegenFractionTotalAirDemand
         '
-        Me.lblSmartRegenFractionTotalAirDemand.AutoSize = true
+        Me.lblSmartRegenFractionTotalAirDemand.AutoSize = True
         Me.lblSmartRegenFractionTotalAirDemand.Location = New System.Drawing.Point(20, 510)
         Me.lblSmartRegenFractionTotalAirDemand.MinimumSize = New System.Drawing.Size(120, 0)
         Me.lblSmartRegenFractionTotalAirDemand.Name = "lblSmartRegenFractionTotalAirDemand"
@@ -1069,6 +1070,7 @@ Partial Class frmAuxiliaryConfig
         '
         'tabHVACConfig
         '
+        Me.tabHVACConfig.Controls.Add(Me.chkDisableHVAC)
         Me.tabHVACConfig.Controls.Add(Me.btnOpenABDB)
         Me.tabHVACConfig.Controls.Add(Me.btnBusDatabaseSource)
         Me.tabHVACConfig.Controls.Add(Me.txtBusDatabaseFilePath)
@@ -1083,37 +1085,37 @@ Partial Class frmAuxiliaryConfig
         Me.tabHVACConfig.Size = New System.Drawing.Size(901, 587)
         Me.tabHVACConfig.TabIndex = 3
         Me.tabHVACConfig.Text = "HVAC"
-        Me.tabHVACConfig.UseVisualStyleBackColor = true
+        Me.tabHVACConfig.UseVisualStyleBackColor = True
         '
         'btnOpenABDB
         '
-        Me.btnOpenABDB.Image = CType(resources.GetObject("btnOpenABDB.Image"),System.Drawing.Image)
-        Me.btnOpenABDB.Location = New System.Drawing.Point(777, 138)
+        Me.btnOpenABDB.Image = CType(resources.GetObject("btnOpenABDB.Image"), System.Drawing.Image)
+        Me.btnOpenABDB.Location = New System.Drawing.Point(777, 161)
         Me.btnOpenABDB.Name = "btnOpenABDB"
         Me.btnOpenABDB.Size = New System.Drawing.Size(28, 20)
         Me.btnOpenABDB.TabIndex = 59
-        Me.btnOpenABDB.UseVisualStyleBackColor = true
+        Me.btnOpenABDB.UseVisualStyleBackColor = True
         '
         'btnBusDatabaseSource
         '
-        Me.btnBusDatabaseSource.Location = New System.Drawing.Point(712, 136)
+        Me.btnBusDatabaseSource.Location = New System.Drawing.Point(712, 159)
         Me.btnBusDatabaseSource.Name = "btnBusDatabaseSource"
         Me.btnBusDatabaseSource.Size = New System.Drawing.Size(45, 23)
         Me.btnBusDatabaseSource.TabIndex = 58
         Me.btnBusDatabaseSource.Text = ". . ."
-        Me.btnBusDatabaseSource.UseVisualStyleBackColor = true
+        Me.btnBusDatabaseSource.UseVisualStyleBackColor = True
         '
         'txtBusDatabaseFilePath
         '
-        Me.txtBusDatabaseFilePath.Location = New System.Drawing.Point(210, 138)
+        Me.txtBusDatabaseFilePath.Location = New System.Drawing.Point(210, 161)
         Me.txtBusDatabaseFilePath.Name = "txtBusDatabaseFilePath"
         Me.txtBusDatabaseFilePath.Size = New System.Drawing.Size(485, 20)
         Me.txtBusDatabaseFilePath.TabIndex = 57
         '
         'lblBusDatabaseFilePath
         '
-        Me.lblBusDatabaseFilePath.AutoSize = true
-        Me.lblBusDatabaseFilePath.Location = New System.Drawing.Point(31, 138)
+        Me.lblBusDatabaseFilePath.AutoSize = True
+        Me.lblBusDatabaseFilePath.Location = New System.Drawing.Point(31, 161)
         Me.lblBusDatabaseFilePath.Name = "lblBusDatabaseFilePath"
         Me.lblBusDatabaseFilePath.Size = New System.Drawing.Size(169, 13)
         Me.lblBusDatabaseFilePath.TabIndex = 56
@@ -1121,26 +1123,26 @@ Partial Class frmAuxiliaryConfig
         '
         'btnOpenAHSM
         '
-        Me.btnOpenAHSM.Image = CType(resources.GetObject("btnOpenAHSM.Image"),System.Drawing.Image)
-        Me.btnOpenAHSM.Location = New System.Drawing.Point(777, 83)
+        Me.btnOpenAHSM.Image = CType(resources.GetObject("btnOpenAHSM.Image"), System.Drawing.Image)
+        Me.btnOpenAHSM.Location = New System.Drawing.Point(777, 106)
         Me.btnOpenAHSM.Name = "btnOpenAHSM"
         Me.btnOpenAHSM.Size = New System.Drawing.Size(28, 20)
         Me.btnOpenAHSM.TabIndex = 55
-        Me.btnOpenAHSM.UseVisualStyleBackColor = true
+        Me.btnOpenAHSM.UseVisualStyleBackColor = True
         '
         'btnSSMBSource
         '
-        Me.btnSSMBSource.Location = New System.Drawing.Point(712, 82)
+        Me.btnSSMBSource.Location = New System.Drawing.Point(712, 105)
         Me.btnSSMBSource.Name = "btnSSMBSource"
         Me.btnSSMBSource.Size = New System.Drawing.Size(45, 23)
         Me.btnSSMBSource.TabIndex = 28
         Me.btnSSMBSource.Text = ". . ."
-        Me.btnSSMBSource.UseVisualStyleBackColor = true
+        Me.btnSSMBSource.UseVisualStyleBackColor = True
         '
         'lblSSMFilePath
         '
-        Me.lblSSMFilePath.AutoSize = true
-        Me.lblSSMFilePath.Location = New System.Drawing.Point(31, 88)
+        Me.lblSSMFilePath.AutoSize = True
+        Me.lblSSMFilePath.Location = New System.Drawing.Point(31, 111)
         Me.lblSSMFilePath.Name = "lblSSMFilePath"
         Me.lblSSMFilePath.Size = New System.Drawing.Size(171, 13)
         Me.lblSSMFilePath.TabIndex = 27
@@ -1148,15 +1150,15 @@ Partial Class frmAuxiliaryConfig
         '
         'txtSSMFilePath
         '
-        Me.txtSSMFilePath.Location = New System.Drawing.Point(210, 85)
+        Me.txtSSMFilePath.Location = New System.Drawing.Point(210, 108)
         Me.txtSSMFilePath.Name = "txtSSMFilePath"
         Me.txtSSMFilePath.Size = New System.Drawing.Size(485, 20)
         Me.txtSSMFilePath.TabIndex = 26
         '
         'lblHVACTitle
         '
-        Me.lblHVACTitle.AutoSize = true
-        Me.lblHVACTitle.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        Me.lblHVACTitle.AutoSize = True
+        Me.lblHVACTitle.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         Me.lblHVACTitle.ForeColor = System.Drawing.SystemColors.MenuHighlight
         Me.lblHVACTitle.Location = New System.Drawing.Point(31, 37)
         Me.lblHVACTitle.Name = "lblHVACTitle"
@@ -1202,6 +1204,16 @@ Partial Class frmAuxiliaryConfig
         Me.ShowInFolderToolStripMenuItem.Size = New System.Drawing.Size(152, 22)
         Me.ShowInFolderToolStripMenuItem.Text = "Open In Folder"
         '
+        'chkDisableHVAC
+        '
+        Me.chkDisableHVAC.AutoSize = True
+        Me.chkDisableHVAC.Location = New System.Drawing.Point(34, 73)
+        Me.chkDisableHVAC.Name = "chkDisableHVAC"
+        Me.chkDisableHVAC.Size = New System.Drawing.Size(131, 17)
+        Me.chkDisableHVAC.TabIndex = 61
+        Me.chkDisableHVAC.Text = "Disable HVAC Module"
+        Me.chkDisableHVAC.UseVisualStyleBackColor = True
+        '
         'frmAuxiliaryConfig
         '
         Me.AutoScaleDimensions = New System.Drawing.SizeF(6!, 13!)
@@ -1338,5 +1350,6 @@ End Sub
     Friend WithEvents btnBusDatabaseSource As System.Windows.Forms.Button
     Friend WithEvents txtBusDatabaseFilePath As System.Windows.Forms.TextBox
     Friend WithEvents lblBusDatabaseFilePath As System.Windows.Forms.Label
+    Friend WithEvents chkDisableHVAC As System.Windows.Forms.CheckBox
 
 End Class
diff --git a/VECTOAux/VectoAuxiliaries/UI/frmAuxiliaryConfig.resx b/VECTOAux/VectoAuxiliaries/UI/frmAuxiliaryConfig.resx
index 3790b0352d..b830c6d447 100644
--- a/VECTOAux/VectoAuxiliaries/UI/frmAuxiliaryConfig.resx
+++ b/VECTOAux/VectoAuxiliaries/UI/frmAuxiliaryConfig.resx
@@ -120,82 +120,82 @@
   <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
   <data name="btnAALTOpen.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
-        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAJcEhZcwAACwwAAAsMAT9AIsgAAAAGYktHRAD/AP8A/6C9p5MAAAAHdElNRQfdAw8KGzD/z7E3
-        AAACLElEQVQ4T2OgCggMDGQysg5n1zcPZjewDGU3tApjB/GNbWAYxA9ld3V1ZoFqQQX+4UVO+XVrFxU0
-        bN2QW7dpfVb1hvUZFevWp5evXZ9esR7I3rQ+v3b9yryS7mx3d1deqDYE8IpobUqsf/Dfp+DFf8+8Z//d
-        c578d8169N8l4+F/p/QHQPzwf2DBzf9xuYtOMfBaykO1IUBadmXFpTs//x+9+O3f0Qtf/4PwkfNfwPjw
-        uc//dx3/8n/e5u//KyY8uM0sX6vHYPOfEaoVAnJzc4v//fv//9ev3xj458/f/6/c/fM/tubR/6LmXVcU
-        9GKUoNoQICMjo/Tv37//v337hoI/ffr0/9WrN/8PnXn1P6ri5v+9J97c9g8IDTc1NUUNh6SkpIqfP3/+
-        //jxIxx/+PDh/6Mnr//vP/Hs/4qtD/8v2Pjs36MX//4fP/fiqbNHZCZUKwRER0dXf/ny5f/r16//v3nz
-        Boxfvnz1/+CJ+/+TGh7+d864/z+05Pb/DYf+/U+svX5PySQvFaoVAkJCQmrfv//w/8mTp/+fPn0Gx3fu
-        Pft/8NTL/zuPvvpfVL/6f9usu/cZJDKKOfTX8EG1QoAbMB5PXf74f8fhF/93HgFqQMI7DgMxkG7sXvc/
-        JqXmGqeIqTJUGwKoGET1BRXdfmOV9OidVSIWDBQPLLrzsrB69l4GRnbMWGDiNTJgkC4OY5BrjsWJQfKc
-        Gpa8vLzcUG1oQK6eiSAehICBAQCMzHS0MqOocgAAAABJRU5ErkJggg==
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
+        DAAACwwBP0AiyAAAAAd0SU1FB90DDwobMP/PsTcAAAIsSURBVDhPY6AKCAwMZDKyDmfXNw9mN7AMZTe0
+        CmMH8Y1tYBjED2V3dXVmgWpBBf7hRU75dWsXFTRs3ZBbt2l9VvWG9RkV69anl69dn16xHsjetD6/dv3K
+        vJLubHd3V16oNgTwimhtSqx/8N+n4MV/z7xn/91znvx3zXr03yXj4X+n9AdA/PB/YMHN/3G5i04x8FrK
+        Q7UhQFp2ZcWlOz//H7347d/RC1//g/CR81/A+PC5z/93Hf/yf97m7/8rJjy4zSxfq8dg858RqhUCcnNz
+        i//9+///16/fGPjnz9//r9z98z+25tH/ouZdVxT0YpSg2hAgIyOj9O/fv/+/ffuGgj99+vT/1as3/w+d
+        efU/quLm/70n3tz2DwgNNzU1RQ2HpKSkip8/f/7/+PEjHH/48OH/oyev/+8/8ez/iq0P/y/Y+Ozfoxf/
+        /h8/9+Kps0dkJlQrBERHR1d/+fLl/+vXr/+/efMGjF++fPX/4In7/5MaHv53zrj/P7Tk9v8Nh/79T6y9
+        fk/JJC8VqhUCQkJCat+///D/yZOn/58+fQbHd+49+3/w1Mv/O4+++l9Uv/p/26y79xkkMoo59NfwQbVC
+        gBswHk9d/vh/x+EX/3ceAWpAwjsOAzGQbuxe9z8mpeYap4ipMlQbAqgYRPUFFd1+Y5X06J1VIhYMFA8s
+        uvOysHr2XgZGdsxYYOI1MmCQLg5jkGuOxYlB8pwalry8vNxQbWhArp6JIB6EgIEBAIzMdLQyo6hyAAAA
+        AElFTkSuQmCC
 </value>
   </data>
   <data name="btnOpenAPAC.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
-        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAJcEhZcwAACwwAAAsMAT9AIsgAAAAGYktHRAD/AP8A/6C9p5MAAAAHdElNRQfdAw8KGzD/z7E3
-        AAACLElEQVQ4T2OgCggMDGQysg5n1zcPZjewDGU3tApjB/GNbWAYxA9ld3V1ZoFqQQX+4UVO+XVrFxU0
-        bN2QW7dpfVb1hvUZFevWp5evXZ9esR7I3rQ+v3b9yryS7mx3d1deqDYE8IpobUqsf/Dfp+DFf8+8Z//d
-        c578d8169N8l4+F/p/QHQPzwf2DBzf9xuYtOMfBaykO1IUBadmXFpTs//x+9+O3f0Qtf/4PwkfNfwPjw
-        uc//dx3/8n/e5u//KyY8uM0sX6vHYPOfEaoVAnJzc4v//fv//9ev3xj458/f/6/c/fM/tubR/6LmXVcU
-        9GKUoNoQICMjo/Tv37//v337hoI/ffr0/9WrN/8PnXn1P6ri5v+9J97c9g8IDTc1NUUNh6SkpIqfP3/+
-        //jxIxx/+PDh/6Mnr//vP/Hs/4qtD/8v2Pjs36MX//4fP/fiqbNHZCZUKwRER0dXf/ny5f/r16//v3nz
-        Boxfvnz1/+CJ+/+TGh7+d864/z+05Pb/DYf+/U+svX5PySQvFaoVAkJCQmrfv//w/8mTp/+fPn0Gx3fu
-        Pft/8NTL/zuPvvpfVL/6f9usu/cZJDKKOfTX8EG1QoAbMB5PXf74f8fhF/93HgFqQMI7DgMxkG7sXvc/
-        JqXmGqeIqTJUGwKoGET1BRXdfmOV9OidVSIWDBQPLLrzsrB69l4GRnbMWGDiNTJgkC4OY5BrjsWJQfKc
-        Gpa8vLzcUG1oQK6eiSAehICBAQCMzHS0MqOocgAAAABJRU5ErkJggg==
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
+        DAAACwwBP0AiyAAAAAd0SU1FB90DDwobMP/PsTcAAAIsSURBVDhPY6AKCAwMZDKyDmfXNw9mN7AMZTe0
+        CmMH8Y1tYBjED2V3dXVmgWpBBf7hRU75dWsXFTRs3ZBbt2l9VvWG9RkV69anl69dn16xHsjetD6/dv3K
+        vJLubHd3V16oNgTwimhtSqx/8N+n4MV/z7xn/91znvx3zXr03yXj4X+n9AdA/PB/YMHN/3G5i04x8FrK
+        Q7UhQFp2ZcWlOz//H7347d/RC1//g/CR81/A+PC5z/93Hf/yf97m7/8rJjy4zSxfq8dg858RqhUCcnNz
+        i//9+///16/fGPjnz9//r9z98z+25tH/ouZdVxT0YpSg2hAgIyOj9O/fv/+/ffuGgj99+vT/1as3/w+d
+        efU/quLm/70n3tz2DwgNNzU1RQ2HpKSkip8/f/7/+PEjHH/48OH/oyev/+8/8ez/iq0P/y/Y+Ozfoxf/
+        /h8/9+Kps0dkJlQrBERHR1d/+fLl/+vXr/+/efMGjF++fPX/4In7/5MaHv53zrj/P7Tk9v8Nh/79T6y9
+        fk/JJC8VqhUCQkJCat+///D/yZOn/58+fQbHd+49+3/w1Mv/O4+++l9Uv/p/26y79xkkMoo59NfwQbVC
+        gBswHk9d/vh/x+EX/3ceAWpAwjsOAzGQbuxe9z8mpeYap4ipMlQbAqgYRPUFFd1+Y5X06J1VIhYMFA8s
+        uvOysHr2XgZGdsxYYOI1MmCQLg5jkGuOxYlB8pwalry8vNxQbWhArp6JIB6EgIEBAIzMdLQyo6hyAAAA
+        AElFTkSuQmCC
 </value>
   </data>
   <data name="btnOpenACMP.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
-        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAJcEhZcwAACwwAAAsMAT9AIsgAAAAGYktHRAD/AP8A/6C9p5MAAAAHdElNRQfdAw8KGzD/z7E3
-        AAACLElEQVQ4T2OgCggMDGQysg5n1zcPZjewDGU3tApjB/GNbWAYxA9ld3V1ZoFqQQX+4UVO+XVrFxU0
-        bN2QW7dpfVb1hvUZFevWp5evXZ9esR7I3rQ+v3b9yryS7mx3d1deqDYE8IpobUqsf/Dfp+DFf8+8Z//d
-        c578d8169N8l4+F/p/QHQPzwf2DBzf9xuYtOMfBaykO1IUBadmXFpTs//x+9+O3f0Qtf/4PwkfNfwPjw
-        uc//dx3/8n/e5u//KyY8uM0sX6vHYPOfEaoVAnJzc4v//fv//9ev3xj458/f/6/c/fM/tubR/6LmXVcU
-        9GKUoNoQICMjo/Tv37//v337hoI/ffr0/9WrN/8PnXn1P6ri5v+9J97c9g8IDTc1NUUNh6SkpIqfP3/+
-        //jxIxx/+PDh/6Mnr//vP/Hs/4qtD/8v2Pjs36MX//4fP/fiqbNHZCZUKwRER0dXf/ny5f/r16//v3nz
-        Boxfvnz1/+CJ+/+TGh7+d864/z+05Pb/DYf+/U+svX5PySQvFaoVAkJCQmrfv//w/8mTp/+fPn0Gx3fu
-        Pft/8NTL/zuPvvpfVL/6f9usu/cZJDKKOfTX8EG1QoAbMB5PXf74f8fhF/93HgFqQMI7DgMxkG7sXvc/
-        JqXmGqeIqTJUGwKoGET1BRXdfmOV9OidVSIWDBQPLLrzsrB69l4GRnbMWGDiNTJgkC4OY5BrjsWJQfKc
-        Gpa8vLzcUG1oQK6eiSAehICBAQCMzHS0MqOocgAAAABJRU5ErkJggg==
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
+        DAAACwwBP0AiyAAAAAd0SU1FB90DDwobMP/PsTcAAAIsSURBVDhPY6AKCAwMZDKyDmfXNw9mN7AMZTe0
+        CmMH8Y1tYBjED2V3dXVmgWpBBf7hRU75dWsXFTRs3ZBbt2l9VvWG9RkV69anl69dn16xHsjetD6/dv3K
+        vJLubHd3V16oNgTwimhtSqx/8N+n4MV/z7xn/91znvx3zXr03yXj4X+n9AdA/PB/YMHN/3G5i04x8FrK
+        Q7UhQFp2ZcWlOz//H7347d/RC1//g/CR81/A+PC5z/93Hf/yf97m7/8rJjy4zSxfq8dg858RqhUCcnNz
+        i//9+///16/fGPjnz9//r9z98z+25tH/ouZdVxT0YpSg2hAgIyOj9O/fv/+/ffuGgj99+vT/1as3/w+d
+        efU/quLm/70n3tz2DwgNNzU1RQ2HpKSkip8/f/7/+PEjHH/48OH/oyev/+8/8ez/iq0P/y/Y+Ozfoxf/
+        /h8/9+Kps0dkJlQrBERHR1d/+fLl/+vXr/+/efMGjF++fPX/4In7/5MaHv53zrj/P7Tk9v8Nh/79T6y9
+        fk/JJC8VqhUCQkJCat+///D/yZOn/58+fQbHd+49+3/w1Mv/O4+++l9Uv/p/26y79xkkMoo59NfwQbVC
+        gBswHk9d/vh/x+EX/3ceAWpAwjsOAzGQbuxe9z8mpeYap4ipMlQbAqgYRPUFFd1+Y5X06J1VIhYMFA8s
+        uvOysHr2XgZGdsxYYOI1MmCQLg5jkGuOxYlB8pwalry8vNxQbWhArp6JIB6EgIEBAIzMdLQyo6hyAAAA
+        AElFTkSuQmCC
 </value>
   </data>
   <data name="btnOpenABDB.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
-        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAJcEhZcwAACwwAAAsMAT9AIsgAAAAGYktHRAD/AP8A/6C9p5MAAAAHdElNRQfdAw8KGzD/z7E3
-        AAACLElEQVQ4T2OgCggMDGQysg5n1zcPZjewDGU3tApjB/GNbWAYxA9ld3V1ZoFqQQX+4UVO+XVrFxU0
-        bN2QW7dpfVb1hvUZFevWp5evXZ9esR7I3rQ+v3b9yryS7mx3d1deqDYE8IpobUqsf/Dfp+DFf8+8Z//d
-        c578d8169N8l4+F/p/QHQPzwf2DBzf9xuYtOMfBaykO1IUBadmXFpTs//x+9+O3f0Qtf/4PwkfNfwPjw
-        uc//dx3/8n/e5u//KyY8uM0sX6vHYPOfEaoVAnJzc4v//fv//9ev3xj458/f/6/c/fM/tubR/6LmXVcU
-        9GKUoNoQICMjo/Tv37//v337hoI/ffr0/9WrN/8PnXn1P6ri5v+9J97c9g8IDTc1NUUNh6SkpIqfP3/+
-        //jxIxx/+PDh/6Mnr//vP/Hs/4qtD/8v2Pjs36MX//4fP/fiqbNHZCZUKwRER0dXf/ny5f/r16//v3nz
-        Boxfvnz1/+CJ+/+TGh7+d864/z+05Pb/DYf+/U+svX5PySQvFaoVAkJCQmrfv//w/8mTp/+fPn0Gx3fu
-        Pft/8NTL/zuPvvpfVL/6f9usu/cZJDKKOfTX8EG1QoAbMB5PXf74f8fhF/93HgFqQMI7DgMxkG7sXvc/
-        JqXmGqeIqTJUGwKoGET1BRXdfmOV9OidVSIWDBQPLLrzsrB69l4GRnbMWGDiNTJgkC4OY5BrjsWJQfKc
-        Gpa8vLzcUG1oQK6eiSAehICBAQCMzHS0MqOocgAAAABJRU5ErkJggg==
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
+        DAAACwwBP0AiyAAAAAd0SU1FB90DDwobMP/PsTcAAAIsSURBVDhPY6AKCAwMZDKyDmfXNw9mN7AMZTe0
+        CmMH8Y1tYBjED2V3dXVmgWpBBf7hRU75dWsXFTRs3ZBbt2l9VvWG9RkV69anl69dn16xHsjetD6/dv3K
+        vJLubHd3V16oNgTwimhtSqx/8N+n4MV/z7xn/91znvx3zXr03yXj4X+n9AdA/PB/YMHN/3G5i04x8FrK
+        Q7UhQFp2ZcWlOz//H7347d/RC1//g/CR81/A+PC5z/93Hf/yf97m7/8rJjy4zSxfq8dg858RqhUCcnNz
+        i//9+///16/fGPjnz9//r9z98z+25tH/ouZdVxT0YpSg2hAgIyOj9O/fv/+/ffuGgj99+vT/1as3/w+d
+        efU/quLm/70n3tz2DwgNNzU1RQ2HpKSkip8/f/7/+PEjHH/48OH/oyev/+8/8ez/iq0P/y/Y+Ozfoxf/
+        /h8/9+Kps0dkJlQrBERHR1d/+fLl/+vXr/+/efMGjF++fPX/4In7/5MaHv53zrj/P7Tk9v8Nh/79T6y9
+        fk/JJC8VqhUCQkJCat+///D/yZOn/58+fQbHd+49+3/w1Mv/O4+++l9Uv/p/26y79xkkMoo59NfwQbVC
+        gBswHk9d/vh/x+EX/3ceAWpAwjsOAzGQbuxe9z8mpeYap4ipMlQbAqgYRPUFFd1+Y5X06J1VIhYMFA8s
+        uvOysHr2XgZGdsxYYOI1MmCQLg5jkGuOxYlB8pwalry8vNxQbWhArp6JIB6EgIEBAIzMdLQyo6hyAAAA
+        AElFTkSuQmCC
 </value>
   </data>
   <data name="btnOpenAHSM.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
-        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAJcEhZcwAACwwAAAsMAT9AIsgAAAAGYktHRAD/AP8A/6C9p5MAAAAHdElNRQfdAw8KGzD/z7E3
-        AAACLElEQVQ4T2OgCggMDGQysg5n1zcPZjewDGU3tApjB/GNbWAYxA9ld3V1ZoFqQQX+4UVO+XVrFxU0
-        bN2QW7dpfVb1hvUZFevWp5evXZ9esR7I3rQ+v3b9yryS7mx3d1deqDYE8IpobUqsf/Dfp+DFf8+8Z//d
-        c578d8169N8l4+F/p/QHQPzwf2DBzf9xuYtOMfBaykO1IUBadmXFpTs//x+9+O3f0Qtf/4PwkfNfwPjw
-        uc//dx3/8n/e5u//KyY8uM0sX6vHYPOfEaoVAnJzc4v//fv//9ev3xj458/f/6/c/fM/tubR/6LmXVcU
-        9GKUoNoQICMjo/Tv37//v337hoI/ffr0/9WrN/8PnXn1P6ri5v+9J97c9g8IDTc1NUUNh6SkpIqfP3/+
-        //jxIxx/+PDh/6Mnr//vP/Hs/4qtD/8v2Pjs36MX//4fP/fiqbNHZCZUKwRER0dXf/ny5f/r16//v3nz
-        Boxfvnz1/+CJ+/+TGh7+d864/z+05Pb/DYf+/U+svX5PySQvFaoVAkJCQmrfv//w/8mTp/+fPn0Gx3fu
-        Pft/8NTL/zuPvvpfVL/6f9usu/cZJDKKOfTX8EG1QoAbMB5PXf74f8fhF/93HgFqQMI7DgMxkG7sXvc/
-        JqXmGqeIqTJUGwKoGET1BRXdfmOV9OidVSIWDBQPLLrzsrB69l4GRnbMWGDiNTJgkC4OY5BrjsWJQfKc
-        Gpa8vLzcUG1oQK6eiSAehICBAQCMzHS0MqOocgAAAABJRU5ErkJggg==
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
+        DAAACwwBP0AiyAAAAAd0SU1FB90DDwobMP/PsTcAAAIsSURBVDhPY6AKCAwMZDKyDmfXNw9mN7AMZTe0
+        CmMH8Y1tYBjED2V3dXVmgWpBBf7hRU75dWsXFTRs3ZBbt2l9VvWG9RkV69anl69dn16xHsjetD6/dv3K
+        vJLubHd3V16oNgTwimhtSqx/8N+n4MV/z7xn/91znvx3zXr03yXj4X+n9AdA/PB/YMHN/3G5i04x8FrK
+        Q7UhQFp2ZcWlOz//H7347d/RC1//g/CR81/A+PC5z/93Hf/yf97m7/8rJjy4zSxfq8dg858RqhUCcnNz
+        i//9+///16/fGPjnz9//r9z98z+25tH/ouZdVxT0YpSg2hAgIyOj9O/fv/+/ffuGgj99+vT/1as3/w+d
+        efU/quLm/70n3tz2DwgNNzU1RQ2HpKSkip8/f/7/+PEjHH/48OH/oyev/+8/8ez/iq0P/y/Y+Ozfoxf/
+        /h8/9+Kps0dkJlQrBERHR1d/+fLl/+vXr/+/efMGjF++fPX/4In7/5MaHv53zrj/P7Tk9v8Nh/79T6y9
+        fk/JJC8VqhUCQkJCat+///D/yZOn/58+fQbHd+49+3/w1Mv/O4+++l9Uv/p/26y79xkkMoo59NfwQbVC
+        gBswHk9d/vh/x+EX/3ceAWpAwjsOAzGQbuxe9z8mpeYap4ipMlQbAqgYRPUFFd1+Y5X06J1VIhYMFA8s
+        uvOysHr2XgZGdsxYYOI1MmCQLg5jkGuOxYlB8pwalry8vNxQbWhArp6JIB6EgIEBAIzMdLQyo6hyAAAA
+        AElFTkSuQmCC
 </value>
   </data>
   <metadata name="resultCardContextMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
diff --git a/VECTOAux/VectoAuxiliaries/UI/frmAuxiliaryConfig.vb b/VECTOAux/VectoAuxiliaries/UI/frmAuxiliaryConfig.vb
index 1caec1035c..24bcccf2cb 100644
--- a/VECTOAux/VectoAuxiliaries/UI/frmAuxiliaryConfig.vb
+++ b/VECTOAux/VectoAuxiliaries/UI/frmAuxiliaryConfig.vb
@@ -23,319 +23,310 @@ Public Class frmAuxiliaryConfig
 
 #Region "Fields"
 
-Public  auxConfig      As AuxiliaryConfig
-Public  originalConfig As AuxiliaryConfig ' required to test if the form is dirty
-Private TabColors As Dictionary(Of TabPage, Color) = New Dictionary(Of TabPage, Color)()
-Private processing As Boolean = False
-Private SecondsIntoCycle As Integer = 0
-Private vectoFile As String = ""
-Private vectoPath As String = ""
-Private auxFile As string
-Private cmFilesList As String()
-Private SaveClicked As Boolean
+    Public auxConfig As AuxiliaryConfig
+    Public originalConfig As AuxiliaryConfig ' required to test if the form is dirty
+    Private TabColors As Dictionary(Of TabPage, Color) = New Dictionary(Of TabPage, Color)()
+    Private processing As Boolean = False
+    Private SecondsIntoCycle As Integer = 0
+    Private vectoFile As String = ""
+    Private vectoPath As String = ""
+    Private auxFile As String
+    Private cmFilesList As String()
+    Private SaveClicked As Boolean
+    Private electricalConsumerBinding As New BindingList(Of IElectricalConsumer)
 
 
+#End Region
 
+    Private Function ValidateAuxFileName(filename As String) As Boolean
 
-#End Region
+        Dim message As String = String.Empty
 
-Private Function ValidateAuxFileName( filename As String ) As Boolean
+        If Not FilePathUtils.ValidateFilePath(filename, ".aaux", message) Then
+            MessageBox.Show(message)
+        End If
 
-       Dim message As String = String.Empty
+        Return True
 
-       If Not FilePathUtils.ValidateFilePath(filename,".aaux", message) then
-         MessageBox.Show ( message )
-       End If
+    End Function
 
-       Return true
+    'Constructor
+    Public Sub New(ByVal fileName As String, ByVal vectoFileName As String)
 
-End Function
 
-'Constructor
-Public Sub new( byval fileName As String, byval vectoFileName As String )
+        If Not ValidateAuxFileName(fileName) Then
+            Me.DialogResult = Windows.Forms.DialogResult.Abort
+            Me.Close()
+        End If
 
 
-        If  Not ValidateAuxFileName( fileName ) then
-          Me.DialogResult=Windows.Forms.DialogResult.Abort
-          Me.Close
-        End If          
+        Me.vectoFile = vectoFileName
+        Me.vectoPath = FilePathUtils.filePathOnly(vectoFileName)
 
+        ' This call is required by the designer.
+        InitializeComponent()
 
-    Me.vectoFile = vectoFileName
-    Me.vectoPath = FilePathUtils.filePathOnly( vectoFileName)
+        ' Add any initialization after the InitializeComponent() call.
+        auxFile = fileName
 
-    ' This call is required by the designer.
-    InitializeComponent()
-    
-    ' Add any initialization after the InitializeComponent() call.
-    auxFile = fileName
+        Try
 
-    Try
+            auxConfig = New AuxiliaryConfig(FilePathUtils.ResolveFilePath(vectoPath, auxFile))
+            originalConfig = New AuxiliaryConfig(FilePathUtils.ResolveFilePath(vectoPath, auxFile))
 
-     auxConfig = New AuxiliaryConfig( FilePathUtils.ResolveFilePath(vectoPath,auxFile) )
-     originalConfig = New AuxiliaryConfig(  FilePathUtils.ResolveFilePath(vectoPath,auxFile) )
+        Catch ex As Exception
 
-    Catch ex As Exception
+            MessageBox.Show("The filename you supplied {0} was invalid or could not be found ", fileName)
+            Me.DialogResult = Windows.Forms.DialogResult.Abort
+            Me.Close()
 
-     MessageBox.Show( "The filename you supplied {0} was invalid or could not be found ", fileName )
-     Me.DialogResult=Windows.Forms.DialogResult.Abort
-     Me.Close
+        End Try
 
-    End Try
 
 
-    
-End Sub
+    End Sub
 
-'Validation
+    'Validation
 #Region "Validation Helpers"
 
-Private Function ValidateSSMFile( filepath As String ) As Boolean
+    Public Function IsPostiveNumber(ByVal test As String) As Boolean
 
-   Dim ssmTool As ISSMTOOL = New SSMTOOL(filepath,False)
+        'Is this numeric sanity check.
+        If Not IsNumeric(test) Then Return False
 
-   Return  ssmTool.Load( filepath)
+        Dim number As Single
 
-End Function
+        If Not Single.TryParse(test, number) Then Return False
 
-Public Function IsPostiveNumber(ByVal test As String) As Boolean
+        If number <= 0 Then Return False
 
-     'Is this numeric sanity check.
-     If Not IsNumeric(test) Then Return False
 
-     Dim number As Single
+        Return True
 
-     If Not Single.TryParse(test, number) Then Return False
+    End Function
 
-     If number <= 0 Then Return False
+    Public Function IsZeroOrPostiveNumber(ByVal test As String) As Boolean
 
+        'Is this numeric sanity check.
+        If Not IsNumeric(test) Then Return False
 
-     Return True
+        Dim number As Single
 
-End Function
+        If Not Single.TryParse(test, number) Then Return False
 
-Public Function IsZeroOrPostiveNumber(ByVal test As String) As Boolean
+        If number < 0 Then Return False
 
-     'Is this numeric sanity check.
-     If Not IsNumeric(test) Then Return False
 
-     Dim number As Single
+        Return True
 
-     If Not Single.TryParse(test, number) Then Return False
+    End Function
 
-     If number < 0 Then Return False
+    Public Function IsNumberBetweenZeroandOne(test As String) As Boolean
 
+        'Is this numeric sanity check.
+        If Not IsNumeric(test) Then Return False
 
-     Return True
+        Dim number As Single
 
-End Function
+        If Not Single.TryParse(test, number) Then Return False
 
-Public Function IsNumberBetweenZeroandOne(test As String) As Boolean
+        If number < 0 OrElse number > 1 Then Return False
 
-     'Is this numeric sanity check.
-     If Not IsNumeric(test) Then Return False
+        Return True
 
-     Dim number As Single
+    End Function
 
-     If Not Single.TryParse(test, number) Then Return False
+    Public Function IsIntegerZeroOrPositiveNumber(test As String) As Boolean
 
-     If number < 0 OrElse number > 1 Then Return False
+        'Is this numeric sanity check.
+        If Not IsNumeric(test) Then Return False
 
-     Return True
+        'if not integer then return false
 
-End Function
+        Dim number As Integer
 
-Public Function IsIntegerZeroOrPositiveNumber(test As String) As Boolean
+        If Not Integer.TryParse(test, number) Then Return False
 
-     'Is this numeric sanity check.
-     If Not IsNumeric(test) Then Return False
+        If number < 0 Then Return False
 
-     'if not integer then return false
+        Return True
 
-     Dim number As Integer
 
-     If Not Integer.TryParse(test, number) Then Return False
+    End Function
 
-     If number < 0 Then Return False
+#End Region
+#Region "Validation Control"
 
-     Return True
 
+    '****** PNEUMATIC VALIDATION
+    Public Sub Validating_PneumaticHandler(sender As Object, e As CancelEventArgs) Handles txtAdBlueNIperMinute.Validating, txtBrakingWithRetarderNIperKG.Validating, txtBrakingNoRetarderNIperKG.Validating, txtAirControlledSuspensionNIperMinute.Validating, txtBreakingPerKneelingNIperKGinMM.Validating, txtSmartRegenFractionTotalAirDemand.Validating, txtPerStopBrakeActuationNIperKG.Validating, txtPerDoorOpeningNI.Validating, txtOverrunUtilisationForCompressionFraction.Validating, txtNonSmartRegenFractionTotalAirDemand.Validating, txtDeadVolumeLitres.Validating, txtDeadVolBlowOutsPerLitresperHour.Validating, txtKneelingHeightMillimeters.Validating, txtCompressorMap.Validating, txtCompressorGearRatio.Validating, txtCompressorGearEfficiency.Validating, txtActuationsMap.Validating, cboDoors.Validating, cboAirSuspensionControl.Validating, cboAdBlueDosing.Validating
 
-End Function
+        e.Cancel = Not Validate_Pneumatics()
 
-#End Region
-#Region "Validation Control"
+    End Sub
+    Public Function Validate_Pneumatics() As Boolean
+
+        Dim result As Boolean = True
+
+        'PNEUMATIC AUXILLARIES PART
+        '***************************
+
+
+        'AdBlue NI per Minute : txtAdBlueNIperMinute
+        If Not IsZeroOrPostiveNumber(txtAdBlueNIperMinute.Text) Then
+            ErrorProvider.SetError(txtAdBlueNIperMinute, "Please provide a non negative number.")
+            result = False
+        Else
+            ErrorProvider.SetError(txtAdBlueNIperMinute, String.Empty)
+        End If
 
+        'Overrun Utilisation For Compression Fraction : txtOverrunUtilisationForCompressionFraction
+        If Not IsNumberBetweenZeroandOne(txtOverrunUtilisationForCompressionFraction.Text) Then
+            ErrorProvider.SetError(txtOverrunUtilisationForCompressionFraction, "Please provide a non negative between 0 and 1.")
+            result = False
+        Else
+            ErrorProvider.SetError(txtOverrunUtilisationForCompressionFraction, String.Empty)
+        End If
+
+        'Braking With Retarder NI per KG : txtBrakingWithRetarderNIperKG
+        If Not IsZeroOrPostiveNumber(txtBrakingWithRetarderNIperKG.Text) Then
+            ErrorProvider.SetError(txtBrakingWithRetarderNIperKG, "Please provide a non negative number.")
+            result = False
+        Else
+            ErrorProvider.SetError(txtBrakingWithRetarderNIperKG, String.Empty)
+        End If
 
-'****** PNEUMATIC VALIDATION
-Public Sub Validating_PneumaticHandler(sender As Object, e As CancelEventArgs) Handles txtAdBlueNIperMinute.Validating, txtBrakingWithRetarderNIperKG.Validating, txtBrakingNoRetarderNIperKG.Validating, txtAirControlledSuspensionNIperMinute.Validating, txtBreakingPerKneelingNIperKGinMM.Validating, txtSmartRegenFractionTotalAirDemand.Validating, txtPerStopBrakeActuationNIperKG.Validating, txtPerDoorOpeningNI.Validating, txtOverrunUtilisationForCompressionFraction.Validating, txtNonSmartRegenFractionTotalAirDemand.Validating, txtDeadVolumeLitres.Validating, txtDeadVolBlowOutsPerLitresperHour.Validating, txtKneelingHeightMillimeters.Validating, txtCompressorMap.Validating, txtCompressorGearRatio.Validating, txtCompressorGearEfficiency.Validating, txtActuationsMap.Validating, cboDoors.Validating, cboAirSuspensionControl.Validating, cboAdBlueDosing.Validating
+        'Braking No Retarder NI per KG : txtBrakingNoRetarderNIperKG
+        If Not IsZeroOrPostiveNumber(txtBrakingNoRetarderNIperKG.Text) Then
+            ErrorProvider.SetError(txtBrakingNoRetarderNIperKG, "Please provide a non negative number.")
+            result = False
+        Else
+            ErrorProvider.SetError(txtBrakingNoRetarderNIperKG, String.Empty)
+        End If
 
-    e.Cancel = Not Validate_Pneumatics()
+        'Breaking Per Kneeling NI per KG in MM : txtBreakingPerKneelingNIperKGinMM
+        If Not IsZeroOrPostiveNumber(txtBreakingPerKneelingNIperKGinMM.Text) Then
+            ErrorProvider.SetError(txtBreakingPerKneelingNIperKGinMM, "Please provide a non negative number.")
+            result = False
+        Else
+            ErrorProvider.SetError(txtBreakingPerKneelingNIperKGinMM, String.Empty)
+        End If
 
-End Sub
-Public Function Validate_Pneumatics() As Boolean
+        'Per Door Opening NI : txtPerDoorOpeningNI
+        If Not IsZeroOrPostiveNumber(txtPerDoorOpeningNI.Text) Then
+            ErrorProvider.SetError(txtPerDoorOpeningNI, "Please provide a non negative number.")
+            result = False
+        Else
+            ErrorProvider.SetError(txtPerDoorOpeningNI, String.Empty)
+        End If
 
-       Dim result As Boolean = True
+        'Per Stop Brake Actuation NI per KG : txtPerStopBrakeActuationNIperKG
+        If Not IsZeroOrPostiveNumber(txtPerStopBrakeActuationNIperKG.Text) Then
+            ErrorProvider.SetError(txtPerStopBrakeActuationNIperKG, "Please provide a non negative number.")
+            result = False
+        Else
+            ErrorProvider.SetError(txtPerStopBrakeActuationNIperKG, String.Empty)
+        End If
 
-       'PNEUMATIC AUXILLARIES PART
-       '***************************
+        'Air Controlled Suspension NI per Minute : txtAirControlledSuspensionNIperMinute
+        If Not IsZeroOrPostiveNumber(txtAirControlledSuspensionNIperMinute.Text) Then
+            ErrorProvider.SetError(txtAirControlledSuspensionNIperMinute, "Please provide a non negative number.")
+            result = False
+        Else
+            ErrorProvider.SetError(txtAirControlledSuspensionNIperMinute, String.Empty)
+        End If
 
+        'Non Smart Regen Fraction Total Air Demand : txtNonSmartRegenFractionTotalAirDemand
+        If Not IsZeroOrPostiveNumber(txtNonSmartRegenFractionTotalAirDemand.Text) Then
+            ErrorProvider.SetError(txtNonSmartRegenFractionTotalAirDemand, "Please provide a non negative number.")
+            result = False
+        Else
+            ErrorProvider.SetError(txtNonSmartRegenFractionTotalAirDemand, String.Empty)
+        End If
 
-       'AdBlue NI per Minute : txtAdBlueNIperMinute
-       If Not IsZeroOrPostiveNumber(txtAdBlueNIperMinute.Text) Then
-         ErrorProvider.SetError(txtAdBlueNIperMinute, "Please provide a non negative number.")
-         result = False
-       Else
-          ErrorProvider.SetError(txtAdBlueNIperMinute, String.Empty)
-       End If
+        'Smart Regen Fraction Total Air Demand : txtSmartRegenFractionTotalAirDemand
+        If Not IsNumberBetweenZeroandOne(txtSmartRegenFractionTotalAirDemand.Text) Then
+            ErrorProvider.SetError(txtSmartRegenFractionTotalAirDemand, "Please provide a non negative between 0 and 1.")
+            result = False
+        Else
+            ErrorProvider.SetError(txtSmartRegenFractionTotalAirDemand, String.Empty)
+        End If
 
-       'Overrun Utilisation For Compression Fraction : txtOverrunUtilisationForCompressionFraction
-       If Not IsNumberBetweenZeroandOne(txtOverrunUtilisationForCompressionFraction.Text) Then
-         ErrorProvider.SetError(txtOverrunUtilisationForCompressionFraction, "Please provide a non negative between 0 and 1.")
-         result = False
-         Else
-         ErrorProvider.SetError(txtOverrunUtilisationForCompressionFraction, String.Empty)
-       End If
 
-       'Braking With Retarder NI per KG : txtBrakingWithRetarderNIperKG
-       If Not IsZeroOrPostiveNumber(txtBrakingWithRetarderNIperKG.Text) Then
-         ErrorProvider.SetError(txtBrakingWithRetarderNIperKG, "Please provide a non negative number.")
-         result = False
+        'Dead Volume Litres : txtDeadVolumeLitres
+        If Not IsZeroOrPostiveNumber(txtDeadVolumeLitres.Text) Then
+            ErrorProvider.SetError(txtDeadVolumeLitres, "Please provide a non negative number.")
+            result = False
         Else
-         ErrorProvider.SetError(txtBrakingWithRetarderNIperKG, String.Empty)
-       End If
-
-       'Braking No Retarder NI per KG : txtBrakingNoRetarderNIperKG
-       If Not IsZeroOrPostiveNumber(txtBrakingNoRetarderNIperKG.Text) Then
-         ErrorProvider.SetError(txtBrakingNoRetarderNIperKG, "Please provide a non negative number.")
-         result = False
-       Else
-         ErrorProvider.SetError(txtBrakingNoRetarderNIperKG, String.Empty)
-       End If
-
-       'Breaking Per Kneeling NI per KG in MM : txtBreakingPerKneelingNIperKGinMM
-       If Not IsZeroOrPostiveNumber(txtBreakingPerKneelingNIperKGinMM.Text) Then
-         ErrorProvider.SetError(txtBreakingPerKneelingNIperKGinMM, "Please provide a non negative number.")
-         result = False
-       Else
-         ErrorProvider.SetError(txtBreakingPerKneelingNIperKGinMM, String.Empty)
-       End If
-
-       'Per Door Opening NI : txtPerDoorOpeningNI
-       If Not IsZeroOrPostiveNumber(txtPerDoorOpeningNI.Text) Then
-         ErrorProvider.SetError(txtPerDoorOpeningNI, "Please provide a non negative number.")
-         result = False
-       Else
-         ErrorProvider.SetError(txtPerDoorOpeningNI, String.Empty)
-       End If
-
-       'Per Stop Brake Actuation NI per KG : txtPerStopBrakeActuationNIperKG
-       If Not IsZeroOrPostiveNumber(txtPerStopBrakeActuationNIperKG.Text) Then
-         ErrorProvider.SetError(txtPerStopBrakeActuationNIperKG, "Please provide a non negative number.")
-         result = False
-       Else
-         ErrorProvider.SetError(txtPerStopBrakeActuationNIperKG, String.Empty)
-       End If
-
-       'Air Controlled Suspension NI per Minute : txtAirControlledSuspensionNIperMinute
-       If Not IsZeroOrPostiveNumber(txtAirControlledSuspensionNIperMinute.Text) Then
-         ErrorProvider.SetError(txtAirControlledSuspensionNIperMinute, "Please provide a non negative number.")
-         result = False
-       Else
-         ErrorProvider.SetError(txtAirControlledSuspensionNIperMinute, String.Empty)
-       End If
-
-       'Non Smart Regen Fraction Total Air Demand : txtNonSmartRegenFractionTotalAirDemand
-       If Not IsZeroOrPostiveNumber(txtNonSmartRegenFractionTotalAirDemand.Text) Then
-         ErrorProvider.SetError(txtNonSmartRegenFractionTotalAirDemand, "Please provide a non negative number.")
-         result = False
-       Else
-         ErrorProvider.SetError(txtNonSmartRegenFractionTotalAirDemand, String.Empty)
-       End If
-
-       'Smart Regen Fraction Total Air Demand : txtSmartRegenFractionTotalAirDemand
-       If Not IsNumberBetweenZeroandOne(txtSmartRegenFractionTotalAirDemand.Text) Then
-         ErrorProvider.SetError(txtSmartRegenFractionTotalAirDemand, "Please provide a non negative between 0 and 1.")
-         result = False
-       Else
-         ErrorProvider.SetError(txtSmartRegenFractionTotalAirDemand, String.Empty)
-       End If
-
-
-       'Dead Volume Litres : txtDeadVolumeLitres
-       If Not IsZeroOrPostiveNumber(txtDeadVolumeLitres.Text) Then
-         ErrorProvider.SetError(txtDeadVolumeLitres, "Please provide a non negative number.")
-         result = False
-       Else
-         ErrorProvider.SetError(txtDeadVolumeLitres, String.Empty)
-       End If
-
-
-       'Dead Vol BlowOuts Per Litresper Hour : txtDeadVolBlowOutsPerLitresperHour
-       If Not IsZeroOrPostiveNumber(txtDeadVolBlowOutsPerLitresperHour.Text) Then
-         ErrorProvider.SetError(txtDeadVolBlowOutsPerLitresperHour, "Please provide a non negative number.")
-         result = False
+            ErrorProvider.SetError(txtDeadVolumeLitres, String.Empty)
+        End If
+
+
+        'Dead Vol BlowOuts Per Litresper Hour : txtDeadVolBlowOutsPerLitresperHour
+        If Not IsZeroOrPostiveNumber(txtDeadVolBlowOutsPerLitresperHour.Text) Then
+            ErrorProvider.SetError(txtDeadVolBlowOutsPerLitresperHour, "Please provide a non negative number.")
+            result = False
         Else
-         ErrorProvider.SetError(txtDeadVolBlowOutsPerLitresperHour, String.Empty)
-       End If
+            ErrorProvider.SetError(txtDeadVolBlowOutsPerLitresperHour, String.Empty)
+        End If
 
 
-       'USER CONFIG PART 
-       '*****************************************************************************************
+        'USER CONFIG PART 
+        '*****************************************************************************************
         'Compressor Map path : txtCompressorMap
         'Test for empty after trim
         If txtCompressorMap.Text.Trim.Length = 0 Then
-         ErrorProvider.SetError(txtCompressorMap, "Please enter the localtion of a valid compressor map.")
-         result = False
+            ErrorProvider.SetError(txtCompressorMap, "Please enter the localtion of a valid compressor map.")
+            result = False
         Else
-         ErrorProvider.SetError(txtCompressorMap, String.Empty)
+            ErrorProvider.SetError(txtCompressorMap, String.Empty)
         End If
         'Test File is valid
         Dim comp As CompressorMap
         Try
 
-        comp = New CompressorMap(FilePathUtils.ResolveFilePath( vectoPath,txtCompressorMap.Text))
-        comp.Initialise()
-         ErrorProvider.SetError(txtCompressorMap, String.Empty)
+            comp = New CompressorMap(FilePathUtils.ResolveFilePath(vectoPath, txtCompressorMap.Text))
+            comp.Initialise()
+            ErrorProvider.SetError(txtCompressorMap, String.Empty)
         Catch ex As Exception
-         ErrorProvider.SetError(txtCompressorMap, "Error : map is invalid or cannot be found, please select a Cvalid compressor map")
-         result = False
+            ErrorProvider.SetError(txtCompressorMap, "Error : map is invalid or cannot be found, please select a Cvalid compressor map")
+            result = False
         End Try
 
         'Compressor Gear Efficiency : txtCompressorGearEfficiency"
         If Not IsNumberBetweenZeroandOne(txtCompressorGearEfficiency.Text) Then
-          ErrorProvider.SetError(txtCompressorGearEfficiency, "Please enter a number between 0 and 1")
-          result = False
+            ErrorProvider.SetError(txtCompressorGearEfficiency, "Please enter a number between 0 and 1")
+            result = False
         Else
-          ErrorProvider.SetError(txtCompressorGearEfficiency, String.Empty)
+            ErrorProvider.SetError(txtCompressorGearEfficiency, String.Empty)
         End If
 
         'Compressor Gear Ratio : txtCompressorGearRatio
         If Not IsPostiveNumber(txtCompressorGearRatio.Text) Then
-          ErrorProvider.SetError(txtCompressorGearRatio, "Please enter a number greater than 0.")
-          result = False
+            ErrorProvider.SetError(txtCompressorGearRatio, "Please enter a number greater than 0.")
+            result = False
         Else
-          ErrorProvider.SetError(txtCompressorGearRatio, String.Empty)
+            ErrorProvider.SetError(txtCompressorGearRatio, String.Empty)
         End If
 
 
         'Actuations Map : txtActuationsMap
         If txtActuationsMap.Text.Trim.Length = 0 Then
-         ErrorProvider.SetError(txtActuationsMap, "Please enter the localtion of a valid Pneumatic Actuations map.")
-         result = False
+            ErrorProvider.SetError(txtActuationsMap, "Please enter the localtion of a valid Pneumatic Actuations map.")
+            result = False
         Else
-         ErrorProvider.SetError(txtActuationsMap, String.Empty)
+            ErrorProvider.SetError(txtActuationsMap, String.Empty)
         End If
         'Test File is valid
         Dim actuations As PneumaticActuationsMAP
         Try
 
-        actuations = New PneumaticActuationsMAP(FilePathUtils.ResolveFilePath( vectoPath,txtActuationsMap.Text))
-         actuations.Initialise()
-         ErrorProvider.SetError(txtActuationsMap, String.Empty)
+            actuations = New PneumaticActuationsMAP(FilePathUtils.ResolveFilePath(vectoPath, txtActuationsMap.Text))
+            actuations.Initialise()
+            ErrorProvider.SetError(txtActuationsMap, String.Empty)
         Catch ex As Exception
-         ErrorProvider.SetError(txtActuationsMap, "Error : Pneumatic Actuations map is invalid or cannot be found, please select a valid map")
-         result = False
+            ErrorProvider.SetError(txtActuationsMap, "Error : Pneumatic Actuations map is invalid or cannot be found, please select a valid map")
+            result = False
         End Try
 
 
@@ -348,34 +339,34 @@ Public Function Validate_Pneumatics() As Boolean
 
         'txtKneelingHeightMillimeters : txtKneelingHeightMillimeters
         If Not IsPostiveNumber(txtKneelingHeightMillimeters.Text) Then
-          ErrorProvider.SetError(txtKneelingHeightMillimeters, "Please enter a number greater than 0.")
-          result = False
+            ErrorProvider.SetError(txtKneelingHeightMillimeters, "Please enter a number greater than 0.")
+            result = False
         Else
-          ErrorProvider.SetError(txtKneelingHeightMillimeters, String.Empty)
+            ErrorProvider.SetError(txtKneelingHeightMillimeters, String.Empty)
         End If
 
         'cboAirSuspensionControl : cboAirSuspensionControl
         If cboAirSuspensionControl.SelectedIndex < 1 Then
-          ErrorProvider.SetError(cboAirSuspensionControl, "Please make a selection.")
-          result = False
+            ErrorProvider.SetError(cboAirSuspensionControl, "Please make a selection.")
+            result = False
         Else
-          ErrorProvider.SetError(cboAirSuspensionControl, String.Empty)
+            ErrorProvider.SetError(cboAirSuspensionControl, String.Empty)
         End If
 
         'cboAdBlueDosing : cboAdBlueDosing
         If cboAdBlueDosing.SelectedIndex < 1 Then
-          ErrorProvider.SetError(cboAdBlueDosing, "Please make a selection.")
-          result = False
+            ErrorProvider.SetError(cboAdBlueDosing, "Please make a selection.")
+            result = False
         Else
-          ErrorProvider.SetError(cboAdBlueDosing, String.Empty)
+            ErrorProvider.SetError(cboAdBlueDosing, String.Empty)
         End If
 
         'cboDoors : cboDoors
         If cboDoors.SelectedIndex < 1 Then
-          ErrorProvider.SetError(cboDoors, "Please make a selection.")
-          result = False
+            ErrorProvider.SetError(cboDoors, "Please make a selection.")
+            result = False
         Else
-          ErrorProvider.SetError(cboDoors, String.Empty)
+            ErrorProvider.SetError(cboDoors, String.Empty)
         End If
 
 
@@ -386,353 +377,342 @@ Public Function Validate_Pneumatics() As Boolean
 
 
 
-Return result
+        Return result
 
 
-End Function
+    End Function
 
-'*****  ELECTRICAL VALIDATION
-Public Sub Validating_ElectricsHandler(sender As Object, e As CancelEventArgs) Handles txtPowernetVoltage.Validating, txtAlternatorMapPath.Validating, txtAlternatorGearEfficiency.Validating, txtDoorActuationTimeSeconds.Validating
+    '*****  ELECTRICAL VALIDATION
+    Public Sub Validating_ElectricsHandler(sender As Object, e As CancelEventArgs) Handles txtPowernetVoltage.Validating, txtAlternatorMapPath.Validating, txtAlternatorGearEfficiency.Validating, txtDoorActuationTimeSeconds.Validating
 
-    e.Cancel = Not Validate_Electrics()
+        e.Cancel = Not Validate_Electrics()
 
-End Sub
-Public Function Validate_Electrics() As Boolean
+    End Sub
+    Public Function Validate_Electrics() As Boolean
 
-Dim result As Boolean = True
+        Dim result As Boolean = True
 
 
-       'Powernet Voltage : txtPowernetVoltage
-       If Not IsPostiveNumber(txtPowernetVoltage.Text) Then
-         ErrorProvider.SetError(txtPowernetVoltage, "Please provide a non negative number.")
-         result = False
-       Else
-          ErrorProvider.SetError(txtPowernetVoltage, String.Empty)
-       End If
+        'Powernet Voltage : txtPowernetVoltage
+        If Not IsPostiveNumber(txtPowernetVoltage.Text) Then
+            ErrorProvider.SetError(txtPowernetVoltage, "Please provide a non negative number.")
+            result = False
+        Else
+            ErrorProvider.SetError(txtPowernetVoltage, String.Empty)
+        End If
 
 
         'Alternator Map  path : txtAlternatorMapPath
         'Test for empty after trim
         If txtAlternatorMapPath.Text.Trim.Length = 0 Then
-         ErrorProvider.SetError(txtAlternatorMapPath, "Please enter the localtion of a valid alternator map.")
-         result = False
+            ErrorProvider.SetError(txtAlternatorMapPath, "Please enter the localtion of a valid alternator map.")
+            result = False
         Else
-         ErrorProvider.SetError(txtAlternatorMapPath, String.Empty)
+            ErrorProvider.SetError(txtAlternatorMapPath, String.Empty)
         End If
 
         'Test File is valid
         Dim alt As ICombinedAlternator
         Try
-        alt = New CombinedAlternator(FilePathUtils.ResolveFilePath( vectoPath,txtAlternatorMapPath.Text))
-         ErrorProvider.SetError(txtAlternatorMapPath, String.Empty)
+            alt = New CombinedAlternator(FilePathUtils.ResolveFilePath(vectoPath, txtAlternatorMapPath.Text))
+            ErrorProvider.SetError(txtAlternatorMapPath, String.Empty)
         Catch ex As Exception
-         ErrorProvider.SetError(txtAlternatorMapPath, "Error : map is invalid or cannot be found, please select a valid alternator map")
-         result = False
+            ErrorProvider.SetError(txtAlternatorMapPath, "Error : map is invalid or cannot be found, please select a valid alternator map")
+            result = False
         End Try
 
 
         'Alternator Gear Efficiency : txtAlternatorGearEfficiency
         If Not IsNumberBetweenZeroandOne(txtAlternatorGearEfficiency.Text) Then
-         ErrorProvider.SetError(txtAlternatorGearEfficiency, "Please enter a number between 0 an 1")
-         result = False
+            ErrorProvider.SetError(txtAlternatorGearEfficiency, "Please enter a number between 0 an 1")
+            result = False
         Else
-         ErrorProvider.SetError(txtAlternatorGearEfficiency, String.Empty)
+            ErrorProvider.SetError(txtAlternatorGearEfficiency, String.Empty)
         End If
 
 
-       'Door Action Time : txtDoorActuationTimeSeconds
-       If Not IsPostiveNumber(txtDoorActuationTimeSeconds.Text) Then
-         ErrorProvider.SetError(txtDoorActuationTimeSeconds, "Please provide a non negative number.")
-         result = False
-       Else
-          ErrorProvider.SetError(txtDoorActuationTimeSeconds, String.Empty)
-       End If
-
-
-               UpdateTabStatus("tabElectricalConfig", result)
-
-
-       Return result
-
+        'Door Action Time : txtDoorActuationTimeSeconds
+        If Not IsPostiveNumber(txtDoorActuationTimeSeconds.Text) Then
+            ErrorProvider.SetError(txtDoorActuationTimeSeconds, "Please provide a non negative number.")
+            result = False
+        Else
+            ErrorProvider.SetError(txtDoorActuationTimeSeconds, String.Empty)
+        End If
 
-End Function
 
-'****** HVAC VALIDATION
-Public Sub Validating_HVACHandler(sender As Object, e As CancelEventArgs) Handles    txtSSMFilePath.Validating, txtBusDatabaseFilePath.Validating
+        UpdateTabStatus("tabElectricalConfig", result)
 
-    e.Cancel = Not Validate_HVAC()
 
-End Sub
-Public Function Validate_HVAC() As Boolean
+        Return result
 
-Dim result As Boolean = True
-Dim message As String =""
 
+    End Function
 
-       ''HVAC Electrical Load Power Watts : txtHVACElectricalLoadPowerWatts
-       'If Not IsZeroOrPostiveNumber(txtHVACElectricalLoadPowerWatts.Text) Then
-       '  ErrorProvider.SetError(txtHVACElectricalLoadPowerWatts, "Please provide a non negative number.")
-       '  result = False
-       'Else
-       '   ErrorProvider.SetError(txtHVACElectricalLoadPowerWatts, String.Empty)
-       'End If
+    '****** HVAC VALIDATION
+    Public Sub Validating_HVACHandler(sender As Object, e As CancelEventArgs) Handles txtSSMFilePath.Validating, txtBusDatabaseFilePath.Validating
 
-       'HVAC Mechanical Load Power Watts : txtHVACMechanicalLoadPowerWatts
-       'If Not IsZeroOrPostiveNumber(txtHVACMechanicalLoadPowerWatts.Text) Then
-       '  ErrorProvider.SetError(txtHVACMechanicalLoadPowerWatts, "Please provide a non negative number.")
-       '  result = False
-       'Else
-       '   ErrorProvider.SetError(txtHVACMechanicalLoadPowerWatts, String.Empty)
-       'End If
+        e.Cancel = Not Validate_HVAC()
 
+    End Sub
+    Public Function Validate_HVAC() As Boolean
 
-       'HVAC Fuelling Litres Per Hour : txtHVACFuellingLitresPerHour
-       'If Not IsZeroOrPostiveNumber(txtHVACFuellingLitresPerHour.Text) Then
-       '  ErrorProvider.SetError(txtHVACFuellingLitresPerHour, "Please provide a non negative number.")
-       '  result = False
-       'Else
-       '   ErrorProvider.SetError(txtHVACFuellingLitresPerHour, String.Empty)
-       'End If
+        Dim result As Boolean = True
+        Dim message As String = ""
 
 
+        'Validate abdb -  Bus Database 
+        Dim abdbFile As String = FilePathUtils.ResolveFilePath(vectoPath, txtBusDatabaseFilePath.Text)
+        Dim bdb As New BusDatabase()
+        If bdb.Initialise(abdbFile) Then
+            ErrorProvider.SetError(txtBusDatabaseFilePath, String.Empty)
+        Else
+            result = False
+            ErrorProvider.SetError(Me.txtBusDatabaseFilePath, "Please choose a valid Steady State Model File (*.ABDB")
+        End If
 
-         'Validate abdb -  Bus Database 
-          Dim abdbFile As String  = FilePathUtils.ResolveFilePath(vectoPath,txtBusDatabaseFilePath.Text)
-          Dim bdb As New BusDatabase()
-          If   bdb.Initialise(abdbFile ) then
-               ErrorProvider.SetError(txtBusDatabaseFilePath, String.Empty)
-          Else
-              result=false
-              ErrorProvider.SetError(Me.txtBusDatabaseFilePath, "Please choose a vaid Steady State Model File (*.ABDB")
-         End If
 
+        'Try ahsm - HVac Steady State Model
+        Try
 
-       'Try ahsm - HVac Steady State Model
-       Try 
+            Dim ahsmFile As String = FilePathUtils.ResolveFilePath(vectoPath, txtSSMFilePath.Text)
+            Dim ssmTool As SSMTOOL = New SSMTOOL(ahsmFile, False)
 
-          Dim ahsmFile As String = FilePathUtils.ResolveFilePath(vectoPath,txtSSMFilePath.Text)
-          Dim ssmTool As SSMTOOL = New SSMTOOL( ahsmFile,False)
-          
-          If ssmTool.Load( ahsmFile ) then 
+            If ssmTool.Load(ahsmFile) Then
                 ErrorProvider.SetError(txtSSMFilePath, String.Empty)
-          Else
-                result=false
-                ErrorProvider.SetError(txtSSMFilePath, "Please choose a vaid Steady State Model File (*.AHSM")
-          End If
-           
-       Catch ex As Exception
-           'Just in case
-           ErrorProvider.SetError(txtSSMFilePath, "Please choose a vaid Steady State Model File (*.AHSM")
-           result = false
+            Else
+                result = False
+                ErrorProvider.SetError(txtSSMFilePath, "Please choose a valid Steady State Model File (*.AHSM")
+            End If
 
-       End Try
+        Catch ex As Exception
+            'Just in case
+            ErrorProvider.SetError(txtSSMFilePath, "Please choose a valid Steady State Model File (*.AHSM")
+            result = False
 
+        End Try
 
-       UpdateTabStatus("tabHVACConfig", result)
 
-   Return result
+        UpdateTabStatus("tabHVACConfig", result)
 
+        Return result
 
-End Function
 
+    End Function
 
-Public Function ValidateAll() As Boolean
 
-  If Validate_Pneumatics() = False OrElse Validate_Electrics() = False OrElse Validate_Pneumatics() = False Then
+    Public Function ValidateAll() As Boolean
 
-  Return False
+        If Validate_Pneumatics() = False OrElse Validate_Electrics() = False OrElse Validate_Pneumatics() = False Then
 
-  End If
+            Return False
 
-  Return True
+        End If
 
-End Function
+        Return True
 
-'*****  IMPUTS VALIDATION
+    End Function
+
+    '*****  IMPUTS VALIDATION
 
 #End Region
 
-'Form Controls & Events
-Private Sub Dashboard_Load(sender As Object, e As EventArgs) Handles MyBase.Load
+    'Form Controls & Events
+    Private Sub Dashboard_Load(sender As Object, e As EventArgs) Handles MyBase.Load
 
-  'Required for OwnerDraw, this is required in order to color the tabs when a validation error occurs to draw
-  'The attention of the user to the fact that attention is required on a particlar tab.
-  TabColors.Add(tabGeneralConfig, Control.DefaultBackColor)
-  TabColors.Add(tabElectricalConfig, Control.DefaultBackColor)
-  TabColors.Add(tabPneumaticConfig, Control.DefaultBackColor)
-  TabColors.Add(tabHVACConfig, Control.DefaultBackColor)
+        'Required for OwnerDraw, this is required in order to color the tabs when a validation error occurs to draw
+        'The attention of the user to the fact that attention is required on a particlar tab.
+        TabColors.Add(tabGeneralConfig, Control.DefaultBackColor)
+        TabColors.Add(tabElectricalConfig, Control.DefaultBackColor)
+        TabColors.Add(tabPneumaticConfig, Control.DefaultBackColor)
+        TabColors.Add(tabHVACConfig, Control.DefaultBackColor)
 
 
-  'This is here only for testing purposes, the actual cycle will be a result of Vecto input.
-  cboCycle.SelectedIndex = 0
+        'This is here only for testing purposes, the actual cycle will be a result of Vecto input.
+        cboCycle.SelectedIndex = 0
 
-  'General Setup of all controls 
-  SetupControls()
+        'General Setup of all controls 
+        SetupControls()
 
-  'Binding Values in Aux environment to the input controls on relevent tabs in the form.
-  CreateBindings()
+        'Binding Values in Aux environment to the input controls on relevent tabs in the form.
+        CreateBindings()
 
-  'This function is neccesary because binding does not occur when the page is invisible, so a track across all of them
-  'Is required in order to set the binding. This only needs to be done once at at setup time. after values are set in the
-  'Aux environment either by setting defaults of reading and setting from the Auxillaries persistance file.
-  EnsureBinding()
+        'This function is neccesary because binding does not occur when the page is invisible, so a track across all of them
+        'Is required in order to set the binding. This only needs to be done once at at setup time. after values are set in the
+        'Aux environment either by setting defaults of reading and setting from the Auxillaries persistance file.
+        EnsureBinding()
 
 
-  'Additional atatched events
-  'For Tab Coloring, this is the place where the background will get filled on the tab when attention is required.
-  AddHandler tabMain.DrawItem, New System.Windows.Forms.DrawItemEventHandler(AddressOf tabMain_DrawItem)
+        'Additional atatched events
+        'For Tab Coloring, this is the place where the background will get filled on the tab when attention is required.
+        AddHandler tabMain.DrawItem, New System.Windows.Forms.DrawItemEventHandler(AddressOf tabMain_DrawItem)
 
-  'Select Electric Tab
-  tabMain.SelectTab(tabMain.TabPages("tabElectricalConfig"))
+        'Select Electric Tab
+        tabMain.SelectTab(tabMain.TabPages("tabElectricalConfig"))
 
 
-  'Enabled  / Disables Smart Cards based on chkSmartElectrical
-  SetSmartCardEmabledStatus()
+        'Enabled  / Disables Smart Cards based on chkSmartElectrical
+        SetSmartCardEmabledStatus()
 
-  '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.
-  auxConfig.ElectricalUserInputsConfig.ElectricalConsumers.MergeInfoData()
+        '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.
+        auxConfig.ElectricalUserInputsConfig.ElectricalConsumers.MergeInfoData()
 
 
-End Sub
-Private Sub frmAuxiliaryConfig_FormClosing( sender As Object,  e As FormClosingEventArgs) Handles MyBase.FormClosing
+    End Sub
+    Private Sub frmAuxiliaryConfig_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
 
 
-  If Me.DialogResult=Windows.Forms.DialogResult.Cancel then return
+        If Me.DialogResult = Windows.Forms.DialogResult.Cancel Then Return
 
-  Dim result As DialogResult
+        Dim result As DialogResult
 
-  If  Not auxConfig.ConfigValuesAreTheSameAs( originalConfig )
+        If Not auxConfig.ConfigValuesAreTheSameAs(originalConfig) Then
 
-             result = (MessageBox.Show("Would you like to save changes before closing?","Save Changes", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question))
+            result = (MessageBox.Show("Would you like to save changes before closing?", "Save Changes", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question))
 
-            Select Case  result
-            
-                case DialogResult.Yes:
+            Select Case result
+
+                Case DialogResult.Yes
                     'save 
-                    If NOT SaveFile()    then
-                      e.Cancel=true
+                    If Not SaveFile() Then
+                        e.Cancel = True
                     End If
 
-                case DialogResult.No:
+                Case DialogResult.No
                     'just allow the form to close
                     'without saving
-                    Me.DialogResult=Windows.Forms.DialogResult.Cancel
+                    Me.DialogResult = Windows.Forms.DialogResult.Cancel
 
 
-                case DialogResult.Cancel:
+                Case DialogResult.Cancel
                     'cancel the close
-                    e.Cancel = true
-                    Me.DialogResult=Windows.Forms.DialogResult.Cancel
+                    e.Cancel = True
+                    Me.DialogResult = Windows.Forms.DialogResult.Cancel
+
 
+            End Select
 
-            end select
 
+        End If
 
-  End If
- 
 
-End Sub
+    End Sub
 #Region "GridHandlers"
 
-Private Sub gvElectricalConsumables_CellValidating(sender As Object, e As DataGridViewCellValidatingEventArgs) Handles gvElectricalConsumables.CellValidating
+    Private Sub gvElectricalConsumables_CellValidating(sender As Object, e As DataGridViewCellValidatingEventArgs) Handles gvElectricalConsumables.CellValidating
 
-   Dim column As DataGridViewColumn = gvElectricalConsumables.Columns(e.ColumnIndex)
-   Dim s As Single
+        Dim column As DataGridViewColumn = gvElectricalConsumables.Columns(e.ColumnIndex)
+        Dim s As Single
 
 
-   If e.ColumnIndex = -1 Then
+        If e.ColumnIndex = -1 Then
 
-   e.Cancel = True
-   Exit Sub
+            e.Cancel = True
+            Exit Sub
 
-   End If
+        End If
 
 
 
-   If column.ReadOnly Then Return
+        If column.ReadOnly Then Return
 
 
 
 
-    Select Case column.Name
+        Select Case column.Name
 
-     Case "NominalConsumptionAmps"
-           If Not IsNumeric(e.FormattedValue) Then
-             MessageBox.Show("This value must be numeric")
-             e.Cancel = True
-          End If
+            Case "NominalConsumptionAmps"
+                If Not IsNumeric(e.FormattedValue) Then
+                    MessageBox.Show("This value must be numeric")
+                    e.Cancel = True
+                End If
 
-     Case "NumberInActualVehicle"
-           If Not IsNumeric(e.FormattedValue) Then
-             MessageBox.Show("This value must be numeric")
-            e.Cancel = True
-          Else
-            s = Single.Parse(e.FormattedValue)
-           End If
-           If s Mod 1 > 0 OrElse s < 0 Then
-              MessageBox.Show("This value must be a positive whole number ( Integer ) ")
-             e.Cancel = True
-           End If
-
-           'SBrake Lights and Exterior Bulb
-            if e.RowIndex =14 OrElse e.RowIndex=19  then
+            Case "NumberInActualVehicle"
                 If Not IsNumeric(e.FormattedValue) Then
-                  MessageBox.Show("This value must be numeric")
-                  e.Cancel = True
+                    MessageBox.Show("This value must be numeric")
+                    e.Cancel = True
+                Else
+                    s = Single.Parse(e.FormattedValue)
                 End If
-                If  s <> 1 Then
-                   MessageBox.Show("This must be set 1")
-                   e.Cancel = True
+                If s Mod 1 > 0 OrElse s < 0 Then
+                    MessageBox.Show("This value must be a positive whole number ( Integer ) ")
+                    e.Cancel = True
+                End If
+
+                'Veh Electronics &Engine
+                If e.RowIndex = 1 Then
+                    If Not IsNumeric(e.FormattedValue) Then
+                        MessageBox.Show("This value must be numeric")
+                        e.Cancel = True
+                    End If
+
+                    If chkSmartElectricals.Checked AndAlso s <> 0 Then
+                        MessageBox.Show("This must be set to 0 in smart mode")
+                        e.Cancel = True
+                    ElseIf Not chkSmartElectricals.Checked AndAlso s <> 1 Then
+                        MessageBox.Show("This must be set to 1 in classic mode")
+                        e.Cancel = True
+                    End If
                 End If
-            End If
-           
-           'Bonus Bulbs
-           if e.RowIndex >=15 AndAlso e.RowIndex<=18  then
-                 
-           If Not IsNumeric(e.FormattedValue) Then
-             MessageBox.Show("This value must be numeric")
-             e.Cancel = True
-           End If
-           If s <> 0 AndAlso s <> 1 Then
-              MessageBox.Show("This must be set to 0 or 1")
-              e.Cancel = True
-           End If
 
-           End If
+                'Exterior Bulb
+                If e.RowIndex = 14 Then
+                    If Not IsNumeric(e.FormattedValue) Then
+                        MessageBox.Show("This value must be numeric")
+                        e.Cancel = True
+                    End If
+                    If s <> 1 Then
+                        MessageBox.Show("This must be set 1")
+                        e.Cancel = True
+                    End If
+                End If
 
+                'Bonus Bulbs
+                If e.RowIndex >= 15 AndAlso e.RowIndex <= 19 Then
 
-     Case "PhaseIdle_TractionOn"
-           If Not IsNumeric(e.FormattedValue) Then
-             MessageBox.Show("This value must be numeric")
-             e.Cancel = True
-           Else
-            s = Single.Parse(e.FormattedValue)
-           End If
-           If s < 0 OrElse s > 1 Then
-              MessageBox.Show("This must be a value between 0 and 1 ")
-              e.Cancel = True
-           End If
+                    If Not IsNumeric(e.FormattedValue) Then
+                        MessageBox.Show("This value must be numeric")
+                        e.Cancel = True
+                    End If
+                    If s <> 0 AndAlso s <> 1 Then
+                        MessageBox.Show("This must be set to 0 or 1")
+                        e.Cancel = True
+                    End If
 
-  
+                End If
 
 
-    End Select
+            Case "PhaseIdle_TractionOn"
+                If Not IsNumeric(e.FormattedValue) Then
+                    MessageBox.Show("This value must be numeric")
+                    e.Cancel = True
+                Else
+                    s = Single.Parse(e.FormattedValue)
+                End If
+                If s < 0 OrElse s > 1 Then
+                    MessageBox.Show("This must be a value between 0 and 1 ")
+                    e.Cancel = True
+                End If
 
-End Sub
-Private Sub SmartResult_CellValidating(sender As Object, e As DataGridViewCellValidatingEventArgs) Handles gvResultsCardIdle.CellValidating, gvResultsCardTraction.CellValidating, gvResultsCardOverrun.CellValidating
 
-   Dim column As DataGridViewColumn = gvElectricalConsumables.Columns(e.ColumnIndex)
 
-   If Not IsNumeric(e.FormattedValue) Then
-       MessageBox.Show("This value must be numeric")
-       e.Cancel = True
-   End If
 
-End Sub
-Private Sub resultCard_CellMouseUp(sender As Object, e As DataGridViewCellMouseEventArgs) Handles gvResultsCardIdle.CellMouseUp, gvResultsCardTraction.CellMouseUp, gvResultsCardOverrun.CellMouseUp
+        End Select
 
-      Dim dgv As DataGridView = CType(sender, DataGridView)
+    End Sub
+    Private Sub SmartResult_CellValidating(sender As Object, e As DataGridViewCellValidatingEventArgs) Handles gvResultsCardIdle.CellValidating, gvResultsCardTraction.CellValidating, gvResultsCardOverrun.CellValidating
+
+        Dim column As DataGridViewColumn = gvElectricalConsumables.Columns(e.ColumnIndex)
+
+        If Not IsNumeric(e.FormattedValue) Then
+            MessageBox.Show("This value must be numeric")
+            e.Cancel = True
+        End If
+
+    End Sub
+    Private Sub resultCard_CellMouseUp(sender As Object, e As DataGridViewCellMouseEventArgs) Handles gvResultsCardIdle.CellMouseUp, gvResultsCardTraction.CellMouseUp, gvResultsCardOverrun.CellMouseUp
+
+        Dim dgv As DataGridView = CType(sender, DataGridView)
 
 
         If e.Button = MouseButtons.Right Then
@@ -744,31 +724,31 @@ Private Sub resultCard_CellMouseUp(sender As Object, e As DataGridViewCellMouseE
 
 
     End Sub
-Private Sub resultCardContextMenu_ItemClicked(sender As Object, e As ToolStripItemClickedEventArgs) Handles resultCardContextMenu.ItemClicked
+    Private Sub resultCardContextMenu_ItemClicked(sender As Object, e As ToolStripItemClickedEventArgs) Handles resultCardContextMenu.ItemClicked
 
-      Dim menu As ContextMenuStrip = CType(sender, ContextMenuStrip)
+        Dim menu As ContextMenuStrip = CType(sender, ContextMenuStrip)
 
-      Dim grid As DataGridView = DirectCast(menu.SourceControl, DataGridView)
+        Dim grid As DataGridView = DirectCast(menu.SourceControl, DataGridView)
 
-      Select Case e.ClickedItem.Text
+        Select Case e.ClickedItem.Text
 
 
-      Case "Delete"
+            Case "Delete"
 
-         For Each selectedRow As DataGridViewRow In grid.SelectedRows
+                For Each selectedRow As DataGridViewRow In grid.SelectedRows
 
-            If Not selectedRow.IsNewRow Then
+                    If Not selectedRow.IsNewRow Then
 
-                grid.Rows.RemoveAt(selectedRow.Index)
+                        grid.Rows.RemoveAt(selectedRow.Index)
 
-            End If
+                    End If
 
-         Next
+                Next
 
-      Case "Insert"
+            Case "Insert"
 
 
-      End Select
+        End Select
 
 
 
@@ -778,458 +758,458 @@ Private Sub resultCardContextMenu_ItemClicked(sender As Object, e As ToolStripIt
 
 
 
-End Sub
-Private Sub gvElectricalConsumables_CellFormatting(sender As Object, e As DataGridViewCellFormattingEventArgs) Handles gvElectricalConsumables.CellFormatting
+    End Sub
+    Private Sub gvElectricalConsumables_CellFormatting(sender As Object, e As DataGridViewCellFormattingEventArgs) Handles gvElectricalConsumables.CellFormatting
 
-End Sub
-Private Sub gvElectricalConsumables_CellBeginEdit(sender As Object, e As DataGridViewCellCancelEventArgs) Handles gvElectricalConsumables.CellBeginEdit
+    End Sub
+    Private Sub gvElectricalConsumables_CellBeginEdit(sender As Object, e As DataGridViewCellCancelEventArgs) Handles gvElectricalConsumables.CellBeginEdit
 
-    If e.ColumnIndex = 4 AndAlso e.RowIndex = 0 Then
+        If e.ColumnIndex = 4 AndAlso e.RowIndex = 0 Then
 
-     MessageBox.Show("This cell is calculated and cannot be edited")
-     e.Cancel = True
+            MessageBox.Show("This cell is calculated and cannot be edited")
+            e.Cancel = True
 
-    End If
+        End If
 
 
-End Sub
+    End Sub
 
 #End Region
 #Region "Button Handlers"
 
-Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
-
+    Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
 
-   If  SaveFile() then
 
-      originalConfig.AssumeValuesOfOther( auxConfig)
-      Me.Close
+        If SaveFile() Then
 
+            originalConfig.AssumeValuesOfOther(auxConfig)
+            Me.Close()
 
-   End If
 
+        End If
 
 
-End Sub
-Private function SaveFile() As Boolean
 
-   Dim result As Boolean
+    End Sub
+    Private Function SaveFile() As Boolean
 
+        Dim result As Boolean
 
-   If Not ValidateAll then Return false
 
+        If Not ValidateAll Then Return False
 
-   result = auxConfig.Save(FilePathUtils.ResolveFilePath(vectoPath,auxFile))
 
-   If Not result then  MessageBox.Show(String.Format("Unable to Save the file '{0}'",auxFile) )
+        result = auxConfig.Save(FilePathUtils.ResolveFilePath(vectoPath, auxFile))
 
-   Return result
+        If Not result Then MessageBox.Show(String.Format("Unable to Save the file '{0}'", auxFile))
 
-End Function
-Private Function  LoadFile() As boolean
+        Return result
 
-  'JSON METHOD
-   Dim result As boolean
+    End Function
+    Private Function LoadFile() As Boolean
 
-  'Release existing databindings
-  UnbindAllControls(Me)
+        'JSON METHOD
+        Dim result As Boolean
 
-  result = auxConfig.Load( FilePathUtils.ResolveFilePath( vectoPath,auxFile))
+        'Release existing databindings
+        UnbindAllControls(Me)
 
-  If Not result then     
-     MessageBox.Show(String.Format("Unable to load the file '{0}'",auxFile) )
-   Else  
-    CreateBindings()
-  End If
+        result = auxConfig.Load(FilePathUtils.ResolveFilePath(vectoPath, auxFile))
 
-  Return result
+        If Not result Then
+            MessageBox.Show(String.Format("Unable to load the file '{0}'", auxFile))
+        Else
+            CreateBindings()
+        End If
 
-End function
-Private Sub btnFuelMap_Click(sender As Object, e As EventArgs) Handles btnFuelMap.Click
+        Return result
 
-               Dim fbAux As New cFileBrowser(True, False)
+    End Function
+    Private Sub btnFuelMap_Click(sender As Object, e As EventArgs) Handles btnFuelMap.Click
 
+        Dim fbAux As New cFileBrowser(True, False)
 
 
-              ' Dim vectoFile As String = "C:\Users\tb28\Source\Workspaces\VECTO\AuxillaryTestHarness\bin\Debug\vectopath.vecto"
-               Dim fname As String = fFILE(vectoFile, True)
 
-                fbAux.Extensions = New String() {"vmap"}
-              '  If fbAux.OpenDialog(fFileRepl(fname, fPATH(VECTOfile))) Then 
-               If fbAux.OpenDialog(fPATH(vectoFile)) Then
+        ' Dim vectoFile As String = "C:\Users\tb28\Source\Workspaces\VECTO\AuxillaryTestHarness\bin\Debug\vectopath.vecto"
+        Dim fname As String = fFILE(vectoFile, True)
 
-                 txtFuelMap.Text = fFileWoDir(fbAux.Files(0), fPATH(vectoFile))
+        fbAux.Extensions = New String() {"vmap"}
+        '  If fbAux.OpenDialog(fFileRepl(fname, fPATH(VECTOfile))) Then 
+        If fbAux.OpenDialog(fPATH(vectoFile)) Then
 
-                End If
+            txtFuelMap.Text = fFileWoDir(fbAux.Files(0), fPATH(vectoFile))
 
+        End If
 
-End Sub
-Private Sub btnAlternatorMapPath_Click(sender As Object, e As EventArgs) Handles btnAlternatorMapPath.Click
 
+    End Sub
+    Private Sub btnAlternatorMapPath_Click(sender As Object, e As EventArgs) Handles btnAlternatorMapPath.Click
 
 
-              ' Dim fbAux As New cFileBrowser(True, False)
 
+        ' Dim fbAux As New cFileBrowser(True, False)
 
 
-              '' Dim vectoFile As String = "C:\Users\tb28\Source\Workspaces\VECTO\AuxillaryTestHarness\bin\Debug\vectopath.vecto"
-              ' Dim fname As String = fFILE(vectoFile, True)
 
-              '  fbAux.Extensions = New String() {"AALT"}
-              '  If fbAux.OpenDialog(fPATH(vectoFile)) Then
+        '' Dim vectoFile As String = "C:\Users\tb28\Source\Workspaces\VECTO\AuxillaryTestHarness\bin\Debug\vectopath.vecto"
+        ' Dim fname As String = fFILE(vectoFile, True)
 
-              '   txtAlternatorMapPath.Text = fFileWoDir(fbAux.Files(0), fPATH(vectoFile))
+        '  fbAux.Extensions = New String() {"AALT"}
+        '  If fbAux.OpenDialog(fPATH(vectoFile)) Then
 
-              ' End If
+        '   txtAlternatorMapPath.Text = fFileWoDir(fbAux.Files(0), fPATH(vectoFile))
 
-              ' Validate_Electrics()
+        ' End If
 
-              ' 'Causes Binding to fire
-              ' txtAlternatorMapPath.Focus()
+        ' Validate_Electrics()
 
-              
-               Dim aauxFileValidated As Boolean = False
-               Dim fbAux As New cFileBrowser(True, False)
-               fbAux.Extensions = New String() {"AALT"}
-               Dim frm As frmCombinedAlternators  
+        ' 'Causes Binding to fire
+        ' txtAlternatorMapPath.Focus()
 
-               Dim suppliedAALTPath  As string = String.Empty
-               Dim absoluteAALTPath  As String = String.Empty
-               Dim message As String = String.Empty
-               Dim newFile As Boolean = false
 
-              
-               'Trim ssmPath
-               'suppliedAALTPath = txtAlternatorMapPath.Text.Trim
+        Dim aauxFileValidated As Boolean = False
+        Dim fbAux As New cFileBrowser(True, False)
+        fbAux.Extensions = New String() {"AALT"}
+        Dim frm As frmCombinedAlternators
 
+        Dim suppliedAALTPath As String = String.Empty
+        Dim absoluteAALTPath As String = String.Empty
+        Dim message As String = String.Empty
+        Dim newFile As Boolean = False
 
-                'Is Filename NOT supplied, try and obtain  it, still not supplied, then bail.
-                 If( txtAlternatorMapPath.Text.Length=0) then
-               
-                      newFile = true
-               
-                      If fbAux.CustomDialog(vectoPath,False,False, tFbExtMode.ForceExt,False,"") then
-                         If fbAux.Files.Count=0 then
-                               Return
-                          Else                     
-                               suppliedAALTPath = fbAux.Files(0)
-                         End If
-                      Else        
-                           'No file given in text box, not given in browser, so bail         
-                           return
-                      End If 
-               
-               Else                 
-                     suppliedAALTPath = txtAlternatorMapPath.Text
-               
-               End If
 
-               'Set Absolutes.
-               absoluteAALTPath = FilePathUtils.ResolveFilePath(fPATH(VECTOfile), suppliedAALTPath )
+        'Trim ssmPath
+        'suppliedAALTPath = txtAlternatorMapPath.Text.Trim
 
-               'Is supplied filename NOT valid. bail
-               if Not FilePathUtils.ValidateFilePath(absoluteAALTPath,".aalt",Message)  then                 
-                  MessageBox.Show( message)
-                  return
-               end if
 
+        'Is Filename NOT supplied, try and obtain  it, still not supplied, then bail.
+        If (txtAlternatorMapPath.Text.Length = 0) Then
 
-               'If file Exists, Check validity, else fire up a default SSM Config.
-               If  File.Exists( absoluteAALTPath ) then
-                     'is file valid Try ahsm - HVac Steady State Model
-                      try
-                          Dim aaltFile As String = FilePathUtils.ResolveFilePath(vectoPath, absoluteAALTPath)
-                          Dim combinedAlt As ICombinedAlternator = New CombinedAlternator(aaltFile)                                       
-                       Catch ex As Exception         
-                            MessageBox.Show("The supplied .AALT File was invalid, aborting.")
-                            return
-                       End Try
-                Else              
-                 newFile=true
+            newFile = True
 
+            If fbAux.CustomDialog(vectoPath, False, False, tFbExtMode.ForceExt, False, "") Then
+                If fbAux.Files.Count = 0 Then
+                    Return
+                Else
+                    suppliedAALTPath = fbAux.Files(0)
                 End If
+            Else
+                'No file given in text box, not given in browser, so bail         
+                Return
+            End If
 
+        Else
+            suppliedAALTPath = txtAlternatorMapPath.Text
 
+        End If
 
-             frm   = New frmCombinedAlternators( absoluteAALTPath, New COmbinedAlternatorSignals)
-                               
+        'Set Absolutes.
+        absoluteAALTPath = FilePathUtils.ResolveFilePath(fPATH(VECTOfile), suppliedAALTPath)
 
-               'If Dialog result is OK, then take action else bail
-               If frm.ShowDialog()   = Windows.Forms.DialogResult.OK then
+        'Is supplied filename NOT valid. bail
+        If Not FilePathUtils.ValidateFilePath(absoluteAALTPath, ".aalt", Message) Then
+            MessageBox.Show(message)
+            Return
+        End If
 
-                 If suppliedAALTPath.Contains(":\")  then
 
-                    txtAlternatorMapPath.Text= If( suppliedAALTPath.Contains(vectoPath),suppliedAALTPath.replace(vectoPath,""), suppliedAALTPath)  
+        'If file Exists, Check validity, else fire up a default SSM Config.
+        If File.Exists(absoluteAALTPath) Then
+            'is file valid Try ahsm - HVac Steady State Model
+            Try
+                Dim aaltFile As String = FilePathUtils.ResolveFilePath(vectoPath, absoluteAALTPath)
+                Dim combinedAlt As ICombinedAlternator = New CombinedAlternator(aaltFile)
+            Catch ex As Exception
+                MessageBox.Show("The supplied .AALT File was invalid, aborting.")
+                Return
+            End Try
+        Else
+            newFile = True
 
-                 else
-                    
-                    txtAlternatorMapPath.Text = fFileWoDir( suppliedAALTPath )
+        End If
 
-                 End If
 
-               Else          
-                   return
-               End If
 
+        frm = New frmCombinedAlternators(absoluteAALTPath, New COmbinedAlternatorSignals)
 
-               frm.Dispose()
 
+        'If Dialog result is OK, then take action else bail
+        If frm.ShowDialog() = Windows.Forms.DialogResult.OK Then
 
+            If suppliedAALTPath.Contains(":\") Then
 
-End Sub
-Private Sub btnCompressorMap_Click(sender As Object, e As EventArgs) Handles btnCompressorMap.Click
+                txtAlternatorMapPath.Text = If(suppliedAALTPath.Contains(vectoPath), suppliedAALTPath.replace(vectoPath, ""), suppliedAALTPath)
 
+            Else
 
-               Dim fbAux As New cFileBrowser(True, False)
+                txtAlternatorMapPath.Text = fFileWoDir(suppliedAALTPath)
 
+            End If
 
+        Else
+            Return
+        End If
 
-              ' Dim vectoFile As String = "C:\Users\tb28\Source\Workspaces\VECTO\AuxillaryTestHarness\bin\Debug\vectopath.vecto"
-               Dim fname As String = fFILE(vectoFile, True)
 
-                fbAux.Extensions = New String() {"ACMP"}
-                If fbAux.OpenDialog(fPATH(vectoFile)) Then
+        frm.Dispose()
 
-                 txtCompressorMap.Text = fFileWoDir(fbAux.Files(0), fPATH(vectoFile))
 
-               End If
 
-               Validate_Pneumatics()
+    End Sub
+    Private Sub btnCompressorMap_Click(sender As Object, e As EventArgs) Handles btnCompressorMap.Click
 
-               'Causes binding to fire
-               txtCompressorMap.Focus()
 
+        Dim fbAux As New cFileBrowser(True, False)
 
-End Sub
-Private Sub btnActuationsMap_Click(sender As Object, e As EventArgs) Handles btnActuationsMap.Click
 
-               Dim fbAux As New cFileBrowser(True, False)
 
-              ' Dim vectoFile As String = "C:\Users\tb28\Source\Workspaces\VECTO\AuxillaryTestHarness\bin\Debug\vectopath.vecto"
-               Dim fname As String = fFILE(vectoFile, True)
+        ' Dim vectoFile As String = "C:\Users\tb28\Source\Workspaces\VECTO\AuxillaryTestHarness\bin\Debug\vectopath.vecto"
+        Dim fname As String = fFILE(vectoFile, True)
 
-                fbAux.Extensions = New String() {"APAC"}
-                If fbAux.OpenDialog(fPATH(vectoFile)) Then
+        fbAux.Extensions = New String() {"ACMP"}
+        If fbAux.OpenDialog(fPATH(vectoFile)) Then
 
-                 txtActuationsMap.Text = fFileWoDir(fbAux.Files(0), fPATH(vectoFile))
+            txtCompressorMap.Text = fFileWoDir(fbAux.Files(0), fPATH(vectoFile))
 
-                End If
+        End If
+
+        Validate_Pneumatics()
 
-                Validate_Pneumatics()
+        'Causes binding to fire
+        txtCompressorMap.Focus()
+
+
+    End Sub
+    Private Sub btnActuationsMap_Click(sender As Object, e As EventArgs) Handles btnActuationsMap.Click
 
-                'Causes Binding to fire.
-                txtActuationsMap.Focus()
+        Dim fbAux As New cFileBrowser(True, False)
 
-End Sub
-Private Sub btnCancel_Click( sender As Object,  e As EventArgs) Handles btnCancel.Click
+        ' Dim vectoFile As String = "C:\Users\tb28\Source\Workspaces\VECTO\AuxillaryTestHarness\bin\Debug\vectopath.vecto"
+        Dim fname As String = fFILE(vectoFile, True)
 
+        fbAux.Extensions = New String() {"APAC"}
+        If fbAux.OpenDialog(fPATH(vectoFile)) Then
 
-  Me.DialogResult = Windows.Forms.DialogResult.Cancel
-  Me.Close()
+            txtActuationsMap.Text = fFileWoDir(fbAux.Files(0), fPATH(vectoFile))
 
+        End If
 
-End Sub
+        Validate_Pneumatics()
 
-Private Sub btnBusDatabaseSource_Click( sender As Object,  e As EventArgs) Handles btnBusDatabaseSource.Click
+        'Causes Binding to fire.
+        txtActuationsMap.Focus()
 
-               Dim fbAux As New cFileBrowser(True, False)
-               Dim ssmMap As Hvac.HVACSteadyStateModel
-               Dim message As String = String.Empty
+    End Sub
+    Private Sub btnCancel_Click(sender As Object, e As EventArgs) Handles btnCancel.Click
 
 
-               fbAux.Extensions = New String() {"abdb"}
+        Me.DialogResult = Windows.Forms.DialogResult.Cancel
+        Me.Close()
 
-               If fbAux.OpenDialog(fPATH(vectoFile)) Then
 
-                 txtBusDatabaseFilePath.Focus()
-                 txtBusDatabaseFilePath.Text = fFileWoDir(fbAux.Files(0), fPATH(vectoFile))
+    End Sub
 
-                 Dim busDB As New BusDatabase( )
-                 
-                 If  Not busDB.Initialise( FilePathUtils.ResolveFilePath(vectoPath,txtBusDatabaseFilePath.Text) )
+    Private Sub btnBusDatabaseSource_Click(sender As Object, e As EventArgs) Handles btnBusDatabaseSource.Click
 
-                      messagebox.Show("Unable to load")
+        Dim fbAux As New cFileBrowser(True, False)
+        Dim ssmMap As Hvac.HVACSteadyStateModel
+        Dim message As String = String.Empty
 
 
-                 End If
+        fbAux.Extensions = New String() {"abdb"}
 
+        If fbAux.OpenDialog(fPATH(vectoFile)) Then
 
-               End If
+            txtBusDatabaseFilePath.Focus()
+            txtBusDatabaseFilePath.Text = fFileWoDir(fbAux.Files(0), fPATH(vectoFile))
 
+            Dim busDB As New BusDatabase()
 
-End Sub
-Private Sub btnSSMBSource_Click( sender As Object,  e As EventArgs) Handles btnSSMBSource.Click
+            If Not busDB.Initialise(FilePathUtils.ResolveFilePath(vectoPath, txtBusDatabaseFilePath.Text)) Then
 
+                messagebox.Show("Unable to load")
 
-               Dim aauxFileValidated As Boolean = False
-               Dim fbAux As New cFileBrowser(True, False)
-              fbAux.Extensions = New String() {"AHSM"}
-               Dim frm As frmHVACTool  
 
-               Dim suppliedSSMPath  As string = String.Empty
-               Dim absoluteSSMPath  As String = String.Empty
-               Dim absoluteBusDatabasePath As string = String.Empty
-               Dim message As String = String.Empty
-               Dim newFile As Boolean = false
+            End If
 
-              
-               'Trim ssmPath
-               txtSSMFilePath.Text.Trim
 
+        End If
 
-                'Is Filename NOT supplied, try and obtain  it, still not supplied, then bail.
-                 If( txtSSMFilePath.Text.Length=0) then
-               
-                      newFile = true
-               
-                      If fbAux.CustomDialog(vectoPath,False,False, tFbExtMode.ForceExt,False,"") then
-                         If fbAux.Files.Count=0 then
-                               Return
-                          Else                     
-                               suppliedSSMPath = fbAux.Files(0)
-                         End If
-                      Else        
-                           'No file given in text box, not given in browser, so bail         
-                           return
-                      End If 
-               
-               Else                 
-                     suppliedSSMPath = txtSSMFilePath.Text
-               
-               End If
 
-               'Set Absolutes.
-               absoluteSSMPath = FilePathUtils.ResolveFilePath(fPATH(VECTOfile), suppliedSSMPath )
-               absoluteBusDatabasePath = FilePathUtils.ResolveFilePath(fPATH(VECTOfile),Me.txtBusDatabaseFilePath.Text )
+    End Sub
+    Private Sub btnSSMBSource_Click(sender As Object, e As EventArgs) Handles btnSSMBSource.Click
 
 
-               'Is supplied filename NOT valid. bail
-               if Not FilePathUtils.ValidateFilePath(absoluteSSMPath,".ahsm",Message)  then                 
-                  MessageBox.Show( message)
-                  return
-               end if
+        Dim aauxFileValidated As Boolean = False
+        Dim fbAux As New cFileBrowser(True, False)
+        fbAux.Extensions = New String() {"AHSM"}
+        Dim frm As frmHVACTool
 
+        Dim suppliedSSMPath As String = String.Empty
+        Dim absoluteSSMPath As String = String.Empty
+        Dim absoluteBusDatabasePath As String = String.Empty
+        Dim message As String = String.Empty
+        Dim newFile As Boolean = False
 
-               'If file Exists, Check validity, else fire up a default SSM Config.
-               If  File.Exists( absoluteSSMPath ) then
-                     'is file valid Try ahsm - HVac Steady State Model
-                      try
-                          Dim ahsmFile As String = FilePathUtils.ResolveFilePath(vectoPath, absoluteSSMPath)
-                          Dim ssmTool As SSMTOOL = New SSMTOOL( ahsmFile,False)                        
-                          ssmTool.Load( ahsmFile )                   
-                       Catch ex As Exception         
-                            MessageBox.Show("The supplied AHSM File was invalid, aborting.")
-                            return
-                       End Try
-                Else              
-                 newFile=true
 
-                End If
+        'Trim ssmPath
+        txtSSMFilePath.Text.Trim()
 
 
-                'If newFile then use Defaults
-                If newFile then
-                   frm   = New frmHVACTool(absoluteBusDatabasePath, absoluteSSMPath,True )
-                               
-                Else               
-                   frm   = New frmHVACTool(absoluteBusDatabasePath, absoluteSSMPath )
+        'Is Filename NOT supplied, try and obtain  it, still not supplied, then bail.
+        If (txtSSMFilePath.Text.Length = 0) Then
 
+            newFile = True
+
+            If fbAux.CustomDialog(vectoPath, False, False, tFbExtMode.ForceExt, False, "") Then
+                If fbAux.Files.Count = 0 Then
+                    Return
+                Else
+                    suppliedSSMPath = fbAux.Files(0)
                 End If
+            Else
+                'No file given in text box, not given in browser, so bail         
+                Return
+            End If
 
+        Else
+            suppliedSSMPath = txtSSMFilePath.Text
 
+        End If
 
+        'Set Absolutes.
+        absoluteSSMPath = FilePathUtils.ResolveFilePath(fPATH(VECTOfile), suppliedSSMPath)
+        absoluteBusDatabasePath = FilePathUtils.ResolveFilePath(fPATH(VECTOfile), Me.txtBusDatabaseFilePath.Text)
 
-               'If Dialog result is OK, then take action else bail
-               If frm.ShowDialog()   = Windows.Forms.DialogResult.OK then
 
-                 If suppliedSSMPath.Contains(":\")  then
+        'Is supplied filename NOT valid. bail
+        If Not FilePathUtils.ValidateFilePath(absoluteSSMPath, ".ahsm", Message) Then
+            MessageBox.Show(message)
+            Return
+        End If
 
-                    txtSSMFilePath.Text=  If( suppliedSSMPath.Contains( vectoPath), suppliedSSMPath.Replace( vectoPath,""), suppliedSSMPath)
 
-                 else
-                    
-                    txtSSMFilePath.Text = fFileWoDir( suppliedSSMPath )
+        'If file Exists, Check validity, else fire up a default SSM Config.
+        If File.Exists(absoluteSSMPath) Then
+            'is file valid Try ahsm - HVac Steady State Model
+            Try
+                Dim ahsmFile As String = FilePathUtils.ResolveFilePath(vectoPath, absoluteSSMPath)
+                Dim ssmTool As SSMTOOL = New SSMTOOL(ahsmFile, False)
+                ssmTool.Load(ahsmFile)
+            Catch ex As Exception
+                MessageBox.Show("The supplied AHSM File was invalid, aborting.")
+                Return
+            End Try
+        Else
+            newFile = True
 
-                 End If
+        End If
 
-               Else          
-                   return
-               End If
+
+        'If newFile then use Defaults
+        If newFile Then
+            frm = New frmHVACTool(absoluteBusDatabasePath, absoluteSSMPath, vectoFile, True)
+
+        Else
+            frm = New frmHVACTool(absoluteBusDatabasePath, absoluteSSMPath, vectoFile)
+
+        End If
 
 
-               frm.Dispose()
 
 
+        'If Dialog result is OK, then take action else bail
+        If frm.ShowDialog() = Windows.Forms.DialogResult.OK Then
 
-End Sub
+            If suppliedSSMPath.Contains(":\") Then
+
+                txtSSMFilePath.Text = If(suppliedSSMPath.Contains(vectoPath), suppliedSSMPath.Replace(vectoPath, ""), suppliedSSMPath)
+
+            Else
+
+                txtSSMFilePath.Text = fFileWoDir(suppliedSSMPath)
+
+            End If
+
+        Else
+            Return
+        End If
+
+
+        frm.Dispose()
+
+
+
+    End Sub
 
 
 
 
 #End Region
-Private Sub chkSmartElectricals_CheckedChanged( sender As Object,  e As EventArgs) Handles   chkSmartElectricals.CheckedChanged
+    Private Sub chkSmartElectricals_CheckedChanged(sender As Object, e As EventArgs) Handles chkSmartElectricals.CheckedChanged
 
-   SetSmartCardEmabledStatus()
+        SetSmartCardEmabledStatus()
 
-End Sub
+    End Sub
 #Region "File Viewer Button Events"
 
-Private Sub btnAALTOpen_Click( sender As Object,  e As EventArgs) Handles btnAALTOpen.Click
-
-        OpenFiles(fFileRepl(Me.txtAlternatorMapPath.Text, fPATH(VECTOfile)))    
-    
-End Sub
-Private Sub btnOpenACMP_Click( sender As Object,  e As EventArgs) Handles btnOpenACMP.Click
+    Private Sub btnAALTOpen_Click(sender As Object, e As EventArgs) Handles btnAALTOpen.Click
 
+        OpenFiles(fFileRepl(Me.txtAlternatorMapPath.Text, fPATH(VECTOfile)))
 
-         OpenFiles(fFileRepl(Me.txtCompressorMap.Text, fPATH(VECTOfile)))
+    End Sub
+    Private Sub btnOpenACMP_Click(sender As Object, e As EventArgs) Handles btnOpenACMP.Click
 
-End Sub
-Private Sub btnOpenAPAC_Click( sender As Object,  e As EventArgs) Handles btnOpenAPAC.Click
 
-          OpenFiles(fFileRepl(Me.txtActuationsMap.Text, fPATH(VECTOfile)))
+        OpenFiles(fFileRepl(Me.txtCompressorMap.Text, fPATH(VECTOfile)))
 
-End Sub
-Private Sub btnOpenAHSM_Click( sender As Object,  e As EventArgs) Handles btnOpenAHSM.Click
+    End Sub
+    Private Sub btnOpenAPAC_Click(sender As Object, e As EventArgs) Handles btnOpenAPAC.Click
 
-          OpenFiles(fFileRepl(Me.txtSSMFilePath.Text, fPATH(VECTOfile)))
+        OpenFiles(fFileRepl(Me.txtActuationsMap.Text, fPATH(VECTOfile)))
 
+    End Sub
+    Private Sub btnOpenAHSM_Click(sender As Object, e As EventArgs) Handles btnOpenAHSM.Click
 
-End Sub
-Private Sub btnOpenABDB_Click( sender As Object,  e As EventArgs) Handles btnOpenABDB.Click
+        OpenFiles(fFileRepl(Me.txtSSMFilePath.Text, fPATH(VECTOfile)))
 
 
-          OpenFiles(fFileRepl(Me.txtBusDatabaseFilePath.Text, fPATH(VECTOfile)))
+    End Sub
+    Private Sub btnOpenABDB_Click(sender As Object, e As EventArgs) Handles btnOpenABDB.Click
 
-End Sub
 
+        OpenFiles(fFileRepl(Me.txtBusDatabaseFilePath.Text, fPATH(VECTOfile)))
 
-#end region
+    End Sub
 
-'Overrides
-Protected Overrides Function ProcessCmdKey(ByRef msg As Message, keyData As Keys) As Boolean
 
-        If keyData = Keys.Enter AndAlso Me.AcceptButton Is Nothing Then
-        Dim box As TextBoxBase = CType(Me.ActiveControl, TextBoxBase)
+#End Region
 
-        If box Is Nothing OrElse Not box.Multiline Then
+    'Overrides
+    Protected Overrides Function ProcessCmdKey(ByRef msg As Message, keyData As Keys) As Boolean
 
-          Me.SelectNextControl(Me.ActiveControl, True, True, True, True)
-          Return True
+        If keyData = Keys.Enter AndAlso Me.AcceptButton Is Nothing Then
 
-       End If
+            If TypeOf (Me.ActiveControl) Is TextBoxBase Then
+                Dim box As TextBoxBase = CType(Me.ActiveControl, TextBoxBase)
 
-       End If
+                If box Is Nothing OrElse Not box.Multiline Then
 
+                    Me.SelectNextControl(Me.ActiveControl, True, True, True, True)
+                    Return True
 
-       Return MyBase.ProcessCmdKey(msg, keyData)
+                End If
+            End If
 
+        End If
 
+        Return MyBase.ProcessCmdKey(msg, keyData)
 
     End Function
 
-'Helpers
-Private Sub OpenFiles(ParamArray files() As String)
+    'Helpers
+    Private Sub OpenFiles(ParamArray files() As String)
 
         If files.Length = 0 Then Exit Sub
 
@@ -1239,260 +1219,260 @@ Private Sub OpenFiles(ParamArray files() As String)
 
         CmFiles.Show(Cursor.Position)
 
-End Sub
-Private Sub OpenWithToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles OpenWithToolStripMenuItem.Click
-    If Not FileOpenAlt(CmFilesList(0)) Then MsgBox("Failed to open file!")
-End Sub
-Private Sub ShowInFolderToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles ShowInFolderToolStripMenuItem.Click
-    If IO.File.Exists(CmFilesList(0)) Then
-        Try
-            System.Diagnostics.Process.Start("explorer", "/select,""" & CmFilesList(0) & "")
-        Catch ex As Exception
-            MsgBox("Failed to open file!")
-        End Try
-    Else
-        MsgBox("File not found!")
-    End If
-End Sub
+    End Sub
+    Private Sub OpenWithToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles OpenWithToolStripMenuItem.Click
+        If Not FileOpenAlt(CmFilesList(0)) Then MsgBox("Failed to open file!")
+    End Sub
+    Private Sub ShowInFolderToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles ShowInFolderToolStripMenuItem.Click
+        If IO.File.Exists(CmFilesList(0)) Then
+            Try
+                System.Diagnostics.Process.Start("explorer", "/select,""" & CmFilesList(0) & "")
+            Catch ex As Exception
+                MsgBox("Failed to open file!")
+            End Try
+        Else
+            MsgBox("File not found!")
+        End If
+    End Sub
 #Region "Tab Header Color Change"
 
-Private Sub UpdateTabStatus(pageName As String, resultGood As Boolean)
+    Private Sub UpdateTabStatus(pageName As String, resultGood As Boolean)
 
 
-       Dim page As TabPage = tabMain.TabPages(pageName)
+        Dim page As TabPage = tabMain.TabPages(pageName)
 
-           If Not resultGood Then
+        If Not resultGood Then
 
-       SetTabHeader(page, Color.Red)
+            SetTabHeader(page, Color.Red)
 
-       Else
-              SetTabHeader(page, Control.DefaultBackColor)
+        Else
+            SetTabHeader(page, Control.DefaultBackColor)
 
-       End If
+        End If
 
 
 
 
-End Sub
-Private Sub SetTabHeader(page As TabPage, color As Color)
+    End Sub
+    Private Sub SetTabHeader(page As TabPage, color As Color)
 
-    TabColors(page) = color
-    tabMain.Invalidate()
+        TabColors(page) = color
+        tabMain.Invalidate()
 
-End Sub
-Private Sub tabMain_DrawItem(sender As Object, e As DrawItemEventArgs)
+    End Sub
+    Private Sub tabMain_DrawItem(sender As Object, e As DrawItemEventArgs)
 
-    Dim br As Brush = New SolidBrush(TabColors(tabMain.TabPages(e.Index)))
+        Dim br As Brush = New SolidBrush(TabColors(tabMain.TabPages(e.Index)))
 
 
-    Using (br)
+        Using (br)
 
-        e.Graphics.FillRectangle(br, e.Bounds)
-        Dim sz As SizeF = e.Graphics.MeasureString(tabMain.TabPages(e.Index).Text, e.Font)
-        e.Graphics.DrawString(tabMain.TabPages(e.Index).Text, e.Font, Brushes.Black, e.Bounds.Left + (e.Bounds.Width - sz.Width) / 2, e.Bounds.Top + (e.Bounds.Height - sz.Height) / 2 + 1)
+            e.Graphics.FillRectangle(br, e.Bounds)
+            Dim sz As SizeF = e.Graphics.MeasureString(tabMain.TabPages(e.Index).Text, e.Font)
+            e.Graphics.DrawString(tabMain.TabPages(e.Index).Text, e.Font, Brushes.Black, e.Bounds.Left + (e.Bounds.Width - sz.Width) / 2, e.Bounds.Top + (e.Bounds.Height - sz.Height) / 2 + 1)
 
-        Dim rect As Rectangle = e.Bounds
-        rect.Offset(-1, -1)
-        rect.Inflate(1, 1)
-       ' e.Graphics.DrawRectangle(Pens.DarkGray, rect)
-        'e.DrawFocusRectangle()
+            Dim rect As Rectangle = e.Bounds
+            rect.Offset(-1, -1)
+            rect.Inflate(1, 1)
+            ' e.Graphics.DrawRectangle(Pens.DarkGray, rect)
+            'e.DrawFocusRectangle()
 
-    End Using
+        End Using
 
 
 
 
-End Sub
+    End Sub
 
 
 #End Region
-Public Sub UnbindAllControls(ByRef container As Control)
-  'Clear all of the controls within the container object
-  'If "Recurse" is true, then also clear controls within any sub-containers
-  Dim ctrl As Control = Nothing
+    Public Sub UnbindAllControls(ByRef container As Control)
+        'Clear all of the controls within the container object
+        'If "Recurse" is true, then also clear controls within any sub-containers
+        Dim ctrl As Control = Nothing
 
-  For Each ctrl In container.Controls
+        For Each ctrl In container.Controls
 
-           ctrl.DataBindings.Clear()
+            ctrl.DataBindings.Clear()
 
-           If ctrl.HasChildren Then
-              UnbindAllControls(ctrl)
-           End If
+            If ctrl.HasChildren Then
+                UnbindAllControls(ctrl)
+            End If
 
-  Next
+        Next
 
-End Sub
-Private Function GetSSMMAP( ByVal filePath As String , byref message As string) As Hvac.IHVACSteadyStateModel
+    End Sub
+    Private Function GetSSMMAP(ByVal filePath As String, ByRef message As String) As Hvac.IHVACSteadyStateModel
 
-      Dim ssmMap As New Hvac.HVACSteadyStateModel()
+        Dim ssmMap As New Hvac.HVACSteadyStateModel()
 
 
-      Try
+        Try
 
-       If  ssmMap.SetValuesFromMap(FilePathUtils.ResolveFilePath(vectoPath,txtSSMFilePath.Text), message) then
+            If ssmMap.SetValuesFromMap(FilePathUtils.ResolveFilePath(vectoPath, txtSSMFilePath.Text), message) Then
 
-         Return ssmMap  
+                Return ssmMap
 
-       End If
+            End If
 
-       catch ex As Exception
+        Catch ex As Exception
 
-       MessageBox.Show("Unable to retreive values from map")
-        
-      End Try
+            MessageBox.Show("Unable to retreive values from map")
+
+        End Try
 
         Return Nothing
 
-End Function
-Private Sub SetupControls()
-
+    End Function
+    Private Sub SetupControls()
+
+
+        Dim cIndex As Integer = 0
 
-      Dim cIndex As Integer = 0
+        gvElectricalConsumables.AutoGenerateColumns = False
 
-      gvElectricalConsumables.AutoGenerateColumns = False
+        'ElectricalConsumerGrid 
+        'Columns
+        cIndex = gvElectricalConsumables.Columns.Add("Category", "Category")
+        gvElectricalConsumables.Columns(cIndex).DataPropertyName = "Category"
+        gvElectricalConsumables.Columns(cIndex).MinimumWidth = 150
+        gvElectricalConsumables.Columns(cIndex).ReadOnly = True
+        gvElectricalConsumables.Columns(cIndex).HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
+        gvElectricalConsumables.Columns(cIndex).HeaderCell.Style.Padding = New Padding(1, 2, 1, 1)
 
-     'ElectricalConsumerGrid 
-     'Columns
-     cIndex = gvElectricalConsumables.Columns.Add("Category", "Category")
-     gvElectricalConsumables.Columns(cIndex).DataPropertyName = "Category"
-     gvElectricalConsumables.Columns(cIndex).MinimumWidth = 150
-     gvElectricalConsumables.Columns(cIndex).ReadOnly = True
-     gvElectricalConsumables.Columns(cIndex).HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
-     gvElectricalConsumables.Columns(cIndex).HeaderCell.Style.Padding = New Padding(1, 2, 1, 1)
+        cIndex = gvElectricalConsumables.Columns.Add("ConsumerName", "Name")
 
-     cIndex = gvElectricalConsumables.Columns.Add("ConsumerName", "Name")
+        gvElectricalConsumables.Columns(cIndex).DataPropertyName = "ConsumerName"
+        gvElectricalConsumables.Columns(cIndex).MinimumWidth = 308
+        gvElectricalConsumables.Columns(cIndex).ReadOnly = True
+        gvElectricalConsumables.Columns(cIndex).HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
+        gvElectricalConsumables.Columns(cIndex).HeaderCell.Style.Padding = New Padding(1, 2, 1, 1)
 
-     gvElectricalConsumables.Columns(cIndex).DataPropertyName = "ConsumerName"
-     gvElectricalConsumables.Columns(cIndex).MinimumWidth = 308
-     gvElectricalConsumables.Columns(cIndex).ReadOnly = True
-     gvElectricalConsumables.Columns(cIndex).HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
-     gvElectricalConsumables.Columns(cIndex).HeaderCell.Style.Padding = New Padding(1, 2, 1, 1)
+        Dim baseVehicle As New DataGridViewCheckBoxColumn(False)
+        baseVehicle.HeaderText = "Base Vehicle"
+        cIndex = gvElectricalConsumables.Columns.Add(baseVehicle)
+        gvElectricalConsumables.Columns(cIndex).DataPropertyName = "BaseVehicle"
+        gvElectricalConsumables.Columns(cIndex).Width = 75
+        gvElectricalConsumables.Columns(cIndex).Visible = False
+        gvElectricalConsumables.Columns(cIndex).HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
+        gvElectricalConsumables.Columns(cIndex).HeaderCell.Style.Padding = New Padding(1, 2, 1, 1)
+        gvElectricalConsumables.Columns(cIndex).HeaderCell.ToolTipText = "Energy included in the calculations of base vehicle"
 
-     Dim baseVehicle As New DataGridViewCheckBoxColumn(False)
-     baseVehicle.HeaderText = "Base Vehicle"
-     cIndex = gvElectricalConsumables.Columns.Add(baseVehicle)
-     gvElectricalConsumables.Columns(cIndex).DataPropertyName = "BaseVehicle"
-     gvElectricalConsumables.Columns(cIndex).Width = 75
-     gvElectricalConsumables.Columns(cIndex).Visible=false
-     gvElectricalConsumables.Columns(cIndex).HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
-     gvElectricalConsumables.Columns(cIndex).HeaderCell.Style.Padding = New Padding(1, 2, 1, 1)
-     gvElectricalConsumables.Columns(cIndex).HeaderCell.ToolTipText = "Energy included in the calculations of base vehicle"
+        cIndex = gvElectricalConsumables.Columns.Add("NominalConsumptionAmps", "Nominal Amps")
+        gvElectricalConsumables.Columns(cIndex).DataPropertyName = "NominalConsumptionAmps"
+        gvElectricalConsumables.Columns(cIndex).Width = 60
+        gvElectricalConsumables.Columns(cIndex).ReadOnly = True
+        gvElectricalConsumables.Columns(cIndex).DefaultCellStyle = New DataGridViewCellStyle() With {.BackColor = Color.LightGray}
+        gvElectricalConsumables.Columns(cIndex).HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
+        gvElectricalConsumables.Columns(cIndex).HeaderCell.Style.Padding = New Padding(1, 2, 1, 1)
+        gvElectricalConsumables.Columns(cIndex).HeaderCell.ToolTipText = "Nominal consumption in AMPS"
 
-     cIndex = gvElectricalConsumables.Columns.Add("NominalConsumptionAmps", "Nominal Amps")
-     gvElectricalConsumables.Columns(cIndex).DataPropertyName = "NominalConsumptionAmps"
-     gvElectricalConsumables.Columns(cIndex).Width = 60
-     gvElectricalConsumables.Columns(cIndex).ReadOnly=true
-     gvElectricalConsumables.Columns(cIndex).DefaultCellStyle= New DataGridViewCellStyle() with {.BackColor= Color.LightGray}
-     gvElectricalConsumables.Columns(cIndex).HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
-     gvElectricalConsumables.Columns(cIndex).HeaderCell.Style.Padding = New Padding(1, 2, 1, 1)
-     gvElectricalConsumables.Columns(cIndex).HeaderCell.ToolTipText = "Nominal consumption in AMPS"
+        cIndex = gvElectricalConsumables.Columns.Add("PhaseIdle_TractionOn", "PhaseIdle/ TractionOn")
+        gvElectricalConsumables.Columns(cIndex).DataPropertyName = "PhaseIdle_TractionOn"
+        gvElectricalConsumables.Columns(cIndex).Width = 60
+        gvElectricalConsumables.Columns(cIndex).ReadOnly = True
+        gvElectricalConsumables.Columns(cIndex).DefaultCellStyle = New DataGridViewCellStyle() With {.BackColor = Color.LightGray}
+        gvElectricalConsumables.Columns(cIndex).HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
+        gvElectricalConsumables.Columns(cIndex).HeaderCell.Style.Padding = New Padding(1, 2, 1, 1)
+        gvElectricalConsumables.Columns(cIndex).HeaderCell.ToolTipText = "Represents the amount of time (during engine fueling) as " & vbCrLf & "percentage that the consumer is active during the cycle."
 
-     cIndex = gvElectricalConsumables.Columns.Add("PhaseIdle_TractionOn", "PhaseIdle/ TractionOn")
-     gvElectricalConsumables.Columns(cIndex).DataPropertyName = "PhaseIdle_TractionOn"
-     gvElectricalConsumables.Columns(cIndex).Width = 60
-     gvElectricalConsumables.Columns(cIndex).ReadOnly=true
-     gvElectricalConsumables.Columns(cIndex).DefaultCellStyle= New DataGridViewCellStyle() with {.BackColor= Color.LightGray}
-     gvElectricalConsumables.Columns(cIndex).HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
-     gvElectricalConsumables.Columns(cIndex).HeaderCell.Style.Padding = New Padding(1, 2, 1, 1)
-     gvElectricalConsumables.Columns(cIndex).HeaderCell.ToolTipText = "Represents the amount of time (during engine fueling) as " & vbCrLf & "percentage that the consumer is active during the cycle."
+        cIndex = gvElectricalConsumables.Columns.Add("NumberInActualVehicle", "Num in Vehicle")
+        gvElectricalConsumables.Columns(cIndex).DataPropertyName = "NumberInActualVehicle"
+        gvElectricalConsumables.Columns(cIndex).Width = 55
+        gvElectricalConsumables.Columns(cIndex).HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
+        gvElectricalConsumables.Columns(cIndex).HeaderCell.Style.Padding = New Padding(1, 2, 1, 1)
+        gvElectricalConsumables.Columns(cIndex).HeaderCell.ToolTipText = "Number of consumables of this" & vbCrLf & "type installed on the vehicle."
 
-     cIndex = gvElectricalConsumables.Columns.Add("NumberInActualVehicle", "Num in Vehicle")
-     gvElectricalConsumables.Columns(cIndex).DataPropertyName = "NumberInActualVehicle"
-     gvElectricalConsumables.Columns(cIndex).Width = 55
-     gvElectricalConsumables.Columns(cIndex).HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
-     gvElectricalConsumables.Columns(cIndex).HeaderCell.Style.Padding = New Padding(1, 2, 1, 1)
-     gvElectricalConsumables.Columns(cIndex).HeaderCell.ToolTipText = "Number of consumables of this" & vbCrLf & "type installed on the vehicle."
 
+        'INFO COLUMN
+        cIndex = gvElectricalConsumables.Columns.Add("info", "Info")
+        '  cIndex = gvElectricalConsumables.Columns.Add( New ImageColumn())
 
-     'INFO COLUMN
-     cIndex = gvElectricalConsumables.Columns.Add("info","Info")
-    '  cIndex = gvElectricalConsumables.Columns.Add( New ImageColumn())
+        gvElectricalConsumables.Columns(cIndex).DataPropertyName = "Info"
+        gvElectricalConsumables.Columns(cIndex).Width = 120
+        gvElectricalConsumables.Columns(cIndex).HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
+        gvElectricalConsumables.Columns(cIndex).HeaderCell.Style.Padding = New Padding(1, 2, 1, 1)
+        gvElectricalConsumables.Columns(cIndex).HeaderCell.ToolTipText = "Further Information"
 
-     gvElectricalConsumables.Columns(cIndex).DataPropertyName = "Info"
-     gvElectricalConsumables.Columns(cIndex).Width = 120
-     gvElectricalConsumables.Columns(cIndex).HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
-     gvElectricalConsumables.Columns(cIndex).HeaderCell.Style.Padding = New Padding(1, 2, 1, 1)
-     gvElectricalConsumables.Columns(cIndex).HeaderCell.ToolTipText = "Further Information"
+        ' ResultCard Grids
 
-    ' ResultCard Grids
+        'IDLE
 
-     'IDLE
+        cIndex = gvResultsCardIdle.Columns.Add("Amps", "Amps")
+        gvResultsCardIdle.Columns(cIndex).DataPropertyName = "Amps"
+        gvResultsCardIdle.Columns(cIndex).Width = 65
 
-     cIndex = gvResultsCardIdle.Columns.Add("Amps", "Amps")
-     gvResultsCardIdle.Columns(cIndex).DataPropertyName = "Amps"
-     gvResultsCardIdle.Columns(cIndex).Width = 65
+        cIndex = gvResultsCardIdle.Columns.Add("SmartAmps", "SmartAmps")
+        gvResultsCardIdle.Columns(cIndex).DataPropertyName = "SmartAmps"
+        gvResultsCardIdle.Columns(cIndex).Width = 65
 
-     cIndex = gvResultsCardIdle.Columns.Add("SmartAmps", "SmartAmps")
-     gvResultsCardIdle.Columns(cIndex).DataPropertyName = "SmartAmps"
-     gvResultsCardIdle.Columns(cIndex).Width = 65
+        'TRACTION
+        cIndex = gvResultsCardTraction.Columns.Add("Amps", "Amps")
+        gvResultsCardTraction.Columns(cIndex).DataPropertyName = "Amps"
+        gvResultsCardTraction.Columns(cIndex).Width = 65
 
-     'TRACTION
-     cIndex = gvResultsCardTraction.Columns.Add("Amps", "Amps")
-     gvResultsCardTraction.Columns(cIndex).DataPropertyName = "Amps"
-     gvResultsCardTraction.Columns(cIndex).Width = 65
+        cIndex = gvResultsCardTraction.Columns.Add("SmartAmps", "SmartAmps")
+        gvResultsCardTraction.Columns(cIndex).DataPropertyName = "SmartAmps"
+        gvResultsCardTraction.Columns(cIndex).Width = 65
 
-     cIndex = gvResultsCardTraction.Columns.Add("SmartAmps", "SmartAmps")
-     gvResultsCardTraction.Columns(cIndex).DataPropertyName = "SmartAmps"
-     gvResultsCardTraction.Columns(cIndex).Width = 65
-
-     'OVERRUN
-     cIndex = gvResultsCardOverrun.Columns.Add("Amps", "Amps")
-     gvResultsCardOverrun.Columns(cIndex).DataPropertyName = "Amps"
-     gvResultsCardOverrun.Columns(cIndex).Width = 65
-
-     cIndex = gvResultsCardOverrun.Columns.Add("SmartAmps", "SmartAmps")
-     gvResultsCardOverrun.Columns(cIndex).DataPropertyName = "SmartAmps"
-     gvResultsCardOverrun.Columns(cIndex).Width = 65
+        'OVERRUN
+        cIndex = gvResultsCardOverrun.Columns.Add("Amps", "Amps")
+        gvResultsCardOverrun.Columns(cIndex).DataPropertyName = "Amps"
+        gvResultsCardOverrun.Columns(cIndex).Width = 65
 
+        cIndex = gvResultsCardOverrun.Columns.Add("SmartAmps", "SmartAmps")
+        gvResultsCardOverrun.Columns(cIndex).DataPropertyName = "SmartAmps"
+        gvResultsCardOverrun.Columns(cIndex).Width = 65
 
 
-
-End Sub
+
+
+    End Sub
 #Region "Binding Control"
 
-Private Sub CreateBindings()
+    Private Sub CreateBindings()
 
-     'auxConfig.Vecto Bindings
-     txtPowernetVoltage.DataBindings.Add("Text", auxConfig.ElectricalUserInputsConfig, "PowerNetVoltage")
-     'txtVehicleWeightKG.DataBindings.Add("Text", auxConfig.VectoInputs, "VehicleWeightKG")
-     'cboCycle.DataBindings.Add("Text", auxConfig.VectoInputs, "Cycle")
-     txtFuelMap.DataBindings.Add("Text", auxConfig.VectoInputs, "FuelMap")
+        'auxConfig.Vecto Bindings
+        txtPowernetVoltage.DataBindings.Add("Text", auxConfig.ElectricalUserInputsConfig, "PowerNetVoltage")
+        'txtVehicleWeightKG.DataBindings.Add("Text", auxConfig.VectoInputs, "VehicleWeightKG")
+        'cboCycle.DataBindings.Add("Text", auxConfig.VectoInputs, "Cycle")
+        txtFuelMap.DataBindings.Add("Text", auxConfig.VectoInputs, "FuelMap")
 
-     'Electricals General
-     txtAlternatorMapPath.DataBindings.Add("Text", auxConfig.ElectricalUserInputsConfig, "AlternatorMap")
-     txtAlternatorGearEfficiency.DataBindings.Add("Text", auxConfig.ElectricalUserInputsConfig, "AlternatorGearEfficiency")
-     txtDoorActuationTimeSeconds.DataBindings.Add("Text", auxConfig.ElectricalUserInputsConfig, "DoorActuationTimeSecond")
-     chkSmartElectricals.DataBindings.Add("Checked", auxConfig.ElectricalUserInputsConfig, "SmartElectrical", False, DataSourceUpdateMode.OnPropertyChanged)
+        'Electricals General
+        txtAlternatorMapPath.DataBindings.Add("Text", auxConfig.ElectricalUserInputsConfig, "AlternatorMap")
+        txtAlternatorGearEfficiency.DataBindings.Add("Text", auxConfig.ElectricalUserInputsConfig, "AlternatorGearEfficiency")
+        txtDoorActuationTimeSeconds.DataBindings.Add("Text", auxConfig.ElectricalUserInputsConfig, "DoorActuationTimeSecond")
+        chkSmartElectricals.DataBindings.Add("Checked", auxConfig.ElectricalUserInputsConfig, "SmartElectrical", False, DataSourceUpdateMode.OnPropertyChanged)
 
 
-     'Electrical ConsumablesGrid
-     Dim electricalConsumerBinding As New BindingList(Of IElectricalConsumer)(auxConfig.ElectricalUserInputsConfig.ElectricalConsumers.Items)
-     gvElectricalConsumables.DataSource = electricalConsumerBinding
+        'Electrical ConsumablesGrid
+        electricalConsumerBinding = New BindingList(Of IElectricalConsumer)(auxConfig.ElectricalUserInputsConfig.ElectricalConsumers.Items)
+        gvElectricalConsumables.DataSource = electricalConsumerBinding
 
 
 
-     'ResultCards
+        'ResultCards
 
-         'IDLE
-         Dim idleBinding as BindingList(Of SmartResult)
-         idleBinding = New BindingList(Of SmartResult)(auxConfig.ElectricalUserInputsConfig.ResultCardIdle.Results)
-         idleBinding.AllowNew = True
-         idleBinding.AllowRemove = True
-         gvResultsCardIdle.DataSource = idleBinding
+        'IDLE
+        Dim idleBinding As BindingList(Of SmartResult)
+        idleBinding = New BindingList(Of SmartResult)(auxConfig.ElectricalUserInputsConfig.ResultCardIdle.Results)
+        idleBinding.AllowNew = True
+        idleBinding.AllowRemove = True
+        gvResultsCardIdle.DataSource = idleBinding
 
-         'TRACTION
-         Dim tractionBinding As BindingList(Of SmartResult)
-         tractionBinding = New BindingList(Of SmartResult)(auxConfig.ElectricalUserInputsConfig.ResultCardTraction.Results)
-         tractionBinding.AllowNew = True
-         tractionBinding.AllowRemove = True
-         gvResultsCardTraction.DataSource = tractionBinding
+        'TRACTION
+        Dim tractionBinding As BindingList(Of SmartResult)
+        tractionBinding = New BindingList(Of SmartResult)(auxConfig.ElectricalUserInputsConfig.ResultCardTraction.Results)
+        tractionBinding.AllowNew = True
+        tractionBinding.AllowRemove = True
+        gvResultsCardTraction.DataSource = tractionBinding
 
-         'OVERRUN
-         Dim overrunBinding As BindingList(Of SmartResult)
-         overrunBinding = New BindingList(Of SmartResult)(auxConfig.ElectricalUserInputsConfig.ResultCardOverrun.Results)
-         overrunBinding.AllowNew = True
-         overrunBinding.AllowRemove = True
-         gvResultsCardOverrun.DataSource = overrunBinding
+        'OVERRUN
+        Dim overrunBinding As BindingList(Of SmartResult)
+        overrunBinding = New BindingList(Of SmartResult)(auxConfig.ElectricalUserInputsConfig.ResultCardOverrun.Results)
+        overrunBinding.AllowNew = True
+        overrunBinding.AllowRemove = True
+        gvResultsCardOverrun.DataSource = overrunBinding
 
 
         'Pneumatic Auxillaries Binding
@@ -1524,64 +1504,61 @@ Private Sub CreateBindings()
         cboAdBlueDosing.DataBindings.Add("Text", auxConfig.PneumaticUserInputsConfig, "AdBlueDosing")
         cboDoors.DataBindings.Add("Text", auxConfig.PneumaticUserInputsConfig, "Doors")
 
-        txtSSMFilePath.DataBindings.Add( "Text", auxConfig.HvacUserInputsConfig,"SSMFilePath")
-        txtBusDatabaseFilePath.DataBindings.Add("Text",auxConfig.HvacUserInputsConfig,"BusDatabasePath")
-
+        txtSSMFilePath.DataBindings.Add("Text", auxConfig.HvacUserInputsConfig, "SSMFilePath")
+        txtBusDatabaseFilePath.DataBindings.Add("Text", auxConfig.HvacUserInputsConfig, "BusDatabasePath")
+        chkDisableHVAC.DataBindings.Add("Checked", auxConfig.HvacUserInputsConfig, "SSMDisabled", False, DataSourceUpdateMode.OnPropertyChanged)
 
         SetSmartCardEmabledStatus()
 
-End Sub
+    End Sub
 
-Private Sub EnsureBinding()
+    Private Sub EnsureBinding()
         With tabMain
             Dim lastSelectedTabIndex As Integer = .SelectedIndex
             If lastSelectedTabIndex < 0 OrElse lastSelectedTabIndex > .TabCount Then lastSelectedTabIndex = 0
             For currentTab As Integer = 0 To .TabCount - 1
                 .SelectedIndex = currentTab
             Next
-                .SelectedIndex = 0
+            .SelectedIndex = 0
         End With
 
-   SetSmartCardEmabledStatus()
+        SetSmartCardEmabledStatus()
 
- End Sub
+    End Sub
 
 #End Region
-Protected sub SetSmartCardEmabledStatus( )
-
-    If chkSmartElectricals.Checked then 
-
-       gvResultsCardIdle.Enabled=True
-       gvResultsCardTraction.Enabled=True
-       gvResultsCardOverrun.Enabled=true
-
 
+    Protected Sub SetSmartCardEmabledStatus()
 
+        If chkSmartElectricals.Checked Then
 
-       gvResultsCardIdle.BackgroundColor=Color.Gray
-       gvResultsCardTraction.BackgroundColor=Color.Gray
-       gvResultsCardOverrun.BackgroundColor=Color.Gray
+            gvResultsCardIdle.Enabled = True
+            gvResultsCardTraction.Enabled = True
+            gvResultsCardOverrun.Enabled = True
 
+            gvResultsCardIdle.BackgroundColor = Color.Gray
+            gvResultsCardTraction.BackgroundColor = Color.Gray
+            gvResultsCardOverrun.BackgroundColor = Color.Gray
 
-    else
-
-       gvResultsCardIdle.Enabled=false
-       gvResultsCardTraction.Enabled=false
-       gvResultsCardOverrun.Enabled=false
-
+            electricalConsumerBinding.Single(Function(c) c.Category = "Veh Electronics &Engine").NumberInActualVehicle = 0
+        Else
 
-       gvResultsCardIdle.BackgroundColor=    Color.White
-       gvResultsCardTraction.BackgroundColor=Color.White
-       gvResultsCardOverrun.BackgroundColor= Color.White
+            gvResultsCardIdle.Enabled = False
+            gvResultsCardTraction.Enabled = False
+            gvResultsCardOverrun.Enabled = False
 
 
+            gvResultsCardIdle.BackgroundColor = Color.White
+            gvResultsCardTraction.BackgroundColor = Color.White
+            gvResultsCardOverrun.BackgroundColor = Color.White
 
-    End If
+            electricalConsumerBinding.Single(Function(c) c.Category = "Veh Electronics &Engine").NumberInActualVehicle = 1
+        End If
 
 
 
- End Sub
-Public Function FileOpenAlt(ByVal file As String) As Boolean
+    End Sub
+    Public Function FileOpenAlt(ByVal file As String) As Boolean
         Dim PSI As New ProcessStartInfo
 
         If Not IO.File.Exists(file) Then Return False
@@ -1597,6 +1574,29 @@ Public Function FileOpenAlt(ByVal file As String) As Boolean
 
     End Function
 
+    Private Sub chkDisableHVAC_CheckedChanged(sender As Object, e As EventArgs) Handles chkDisableHVAC.CheckedChanged
+
+        If chkDisableHVAC.Checked Then
+
+            txtSSMFilePath.ReadOnly = True
+            txtBusDatabaseFilePath.ReadOnly = True
+            btnSSMBSource.Enabled = False
+            btnBusDatabaseSource.Enabled = False
+            btnOpenAHSM.Enabled = False
+            btnOpenABDB.Enabled = False
 
+        Else
+
+            txtSSMFilePath.ReadOnly = False
+            txtBusDatabaseFilePath.ReadOnly = False
+            btnSSMBSource.Enabled = True
+            btnBusDatabaseSource.Enabled = True
+            btnOpenAHSM.Enabled = True
+            btnOpenABDB.Enabled = True
+
+        End If
+
+
+    End Sub
 
 End Class
\ No newline at end of file
diff --git a/VECTOAux/VectoAuxiliaries/UI/frmHVACTool.Designer.vb b/VECTOAux/VectoAuxiliaries/UI/frmHVACTool.Designer.vb
index 9c16722940..ce90b73de3 100644
--- a/VECTOAux/VectoAuxiliaries/UI/frmHVACTool.Designer.vb
+++ b/VECTOAux/VectoAuxiliaries/UI/frmHVACTool.Designer.vb
@@ -23,12 +23,42 @@ Partial Class frmHVACTool
     <System.Diagnostics.DebuggerStepThrough()> _
     Private Sub InitializeComponent()
         Me.components = New System.ComponentModel.Container()
+        Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmHVACTool))
         Me.tabMain = New System.Windows.Forms.TabControl()
         Me.tabGeneralInputsBP = New System.Windows.Forms.TabPage()
-        Me.GroupBox1 = New System.Windows.Forms.GroupBox()
+        Me.btnCancelBus = New System.Windows.Forms.Button()
+        Me.BusParamGroupEdit = New System.Windows.Forms.GroupBox()
+        Me.Label19 = New System.Windows.Forms.Label()
+        Me.chkEditIsDoubleDecker = New System.Windows.Forms.CheckBox()
+        Me.cmbEditEngineType = New System.Windows.Forms.ComboBox()
+        Me.cmbEditFloorType = New System.Windows.Forms.ComboBox()
+        Me.txtEditBusModel = New System.Windows.Forms.TextBox()
+        Me.Label7 = New System.Windows.Forms.Label()
+        Me.Label8 = New System.Windows.Forms.Label()
+        Me.Label9 = New System.Windows.Forms.Label()
+        Me.Label12 = New System.Windows.Forms.Label()
+        Me.Label14 = New System.Windows.Forms.Label()
+        Me.Label16 = New System.Windows.Forms.Label()
+        Me.txtEditBusHeight = New System.Windows.Forms.TextBox()
+        Me.txtEditBusWidth = New System.Windows.Forms.TextBox()
+        Me.txtEditBusLength = New System.Windows.Forms.TextBox()
+        Me.Label17 = New System.Windows.Forms.Label()
+        Me.Label18 = New System.Windows.Forms.Label()
+        Me.Label21 = New System.Windows.Forms.Label()
+        Me.txtEditBusPassengers = New System.Windows.Forms.TextBox()
+        Me.Label22 = New System.Windows.Forms.Label()
+        Me.btnEditBus = New System.Windows.Forms.Button()
+        Me.btnUpdateBusDatabase = New System.Windows.Forms.Button()
+        Me.btnNewBus = New System.Windows.Forms.Button()
+        Me.BusParamGroupModel = New System.Windows.Forms.GroupBox()
+        Me.Label15 = New System.Windows.Forms.Label()
+        Me.chkIsDoubleDecker = New System.Windows.Forms.CheckBox()
+        Me.cmbBusFloorType = New System.Windows.Forms.ComboBox()
+        Me.Label10 = New System.Windows.Forms.Label()
+        Me.txtBusHeight = New System.Windows.Forms.TextBox()
+        Me.Label11 = New System.Windows.Forms.Label()
         Me.txtBusModel = New System.Windows.Forms.TextBox()
         Me.lblBusModel = New System.Windows.Forms.Label()
-        Me.txtBusFloorType = New System.Windows.Forms.TextBox()
         Me.lblBusFloorType = New System.Windows.Forms.Label()
         Me.lblUnitsBW = New System.Windows.Forms.Label()
         Me.lblUnitsBSA = New System.Windows.Forms.Label()
@@ -128,11 +158,21 @@ Partial Class frmHVACTool
         Me.txtBC_SolarClouding = New System.Windows.Forms.TextBox()
         Me.lblSolarClouding = New System.Windows.Forms.Label()
         Me.tabGeneralInputsOther = New System.Windows.Forms.TabPage()
+        Me.grpEnvironmentConditions = New System.Windows.Forms.GroupBox()
+        Me.btnOpenAenv = New System.Windows.Forms.Button()
+        Me.btnEnvironmentConditionsSource = New System.Windows.Forms.Button()
+        Me.txtEC_EnvironmentConditionsFilePath = New System.Windows.Forms.TextBox()
+        Me.Label20 = New System.Windows.Forms.Label()
+        Me.chkEC_BatchMode = New System.Windows.Forms.CheckBox()
+        Me.Label23 = New System.Windows.Forms.Label()
+        Me.txtEC_EnviromentalTemperature = New System.Windows.Forms.TextBox()
+        Me.lbltxtEC_EnviromentalTemperature = New System.Windows.Forms.Label()
+        Me.txtEC_Solar = New System.Windows.Forms.TextBox()
+        Me.lbltxtEC_Solar = New System.Windows.Forms.Label()
+        Me.lblUnitstxtEC_EnviromentalTemperature = New System.Windows.Forms.Label()
+        Me.lblUnitstxtEC_Solar = New System.Windows.Forms.Label()
         Me.grpAuxHeater = New System.Windows.Forms.GroupBox()
         Me.lblUnitsAH_FuelFiredHeater = New System.Windows.Forms.Label()
-        Me.lblUnitstxtAHEngineWasteHeat = New System.Windows.Forms.Label()
-        Me.txtAH_EngineWasteHeatkW = New System.Windows.Forms.TextBox()
-        Me.lbltxtAH_EngineWasteHeatkW = New System.Windows.Forms.Label()
         Me.txtAH_FuelFiredHeaterkW = New System.Windows.Forms.TextBox()
         Me.lbltxtAH_FuelFiredHeaterkW = New System.Windows.Forms.Label()
         Me.grpVentilation = New System.Windows.Forms.GroupBox()
@@ -156,13 +196,6 @@ Partial Class frmHVACTool
         Me.lbltxtAC_CompressorCapacitykW = New System.Windows.Forms.Label()
         Me.lblUnitstxtAC_CompressorCapacitykW = New System.Windows.Forms.Label()
         Me.lblcboAC_CompressorType = New System.Windows.Forms.Label()
-        Me.grpEnvironmentConditions = New System.Windows.Forms.GroupBox()
-        Me.txtEC_EnviromentalTemperature = New System.Windows.Forms.TextBox()
-        Me.lbltxtEC_EnviromentalTemperature = New System.Windows.Forms.Label()
-        Me.txtEC_Solar = New System.Windows.Forms.TextBox()
-        Me.lbltxtEC_Solar = New System.Windows.Forms.Label()
-        Me.lblUnitstxtEC_EnviromentalTemperature = New System.Windows.Forms.Label()
-        Me.lblUnitstxtEC_Solar = New System.Windows.Forms.Label()
         Me.tabTechBenefits = New System.Windows.Forms.TabPage()
         Me.btnClearForm = New System.Windows.Forms.Button()
         Me.lblIndex = New System.Windows.Forms.Label()
@@ -204,38 +237,39 @@ Partial Class frmHVACTool
         Me.ToolTip1 = New System.Windows.Forms.ToolTip(Me.components)
         Me.Label1 = New System.Windows.Forms.Label()
         Me.Label4 = New System.Windows.Forms.Label()
-        Me.Label6 = New System.Windows.Forms.Label()
         Me.ErrorProvider1 = New System.Windows.Forms.ErrorProvider(Me.components)
         Me.btnSave = New System.Windows.Forms.Button()
         Me.btnCancel = New System.Windows.Forms.Button()
         Me.txtBasElectrical = New System.Windows.Forms.TextBox()
         Me.txtBaseMechanical = New System.Windows.Forms.TextBox()
-        Me.txtBaseFuel = New System.Windows.Forms.TextBox()
-        Me.txtAdjFuel = New System.Windows.Forms.TextBox()
         Me.txtAdjMechanical = New System.Windows.Forms.TextBox()
         Me.txtAdjElectrical = New System.Windows.Forms.TextBox()
         Me.Timer1 = New System.Windows.Forms.Timer(Me.components)
         Me.lblElectricalBaseW = New System.Windows.Forms.Label()
         Me.Label3 = New System.Windows.Forms.Label()
-        Me.Label5 = New System.Windows.Forms.Label()
-        Me.tabMain.SuspendLayout
-        Me.tabGeneralInputsBP.SuspendLayout
-        Me.GroupBox1.SuspendLayout
-        Me.tabGeneralInputsBC.SuspendLayout
-        Me.GroupBox2.SuspendLayout
-        Me.tabGeneralInputsOther.SuspendLayout
-        Me.grpAuxHeater.SuspendLayout
-        Me.grpVentilation.SuspendLayout
-        Me.grpACSystem.SuspendLayout
-        Me.grpEnvironmentConditions.SuspendLayout
-        Me.tabTechBenefits.SuspendLayout
-        Me.pnlRaisedFloorRow.SuspendLayout
-        Me.pnlSemiLowFloorRow.SuspendLayout
-        Me.pnlLowFloorRow.SuspendLayout
-        CType(Me.gvTechBenefitLines,System.ComponentModel.ISupportInitialize).BeginInit
-        Me.tabDiagnostics.SuspendLayout
-        CType(Me.ErrorProvider1,System.ComponentModel.ISupportInitialize).BeginInit
-        Me.SuspendLayout
+        Me.CMFiles = New System.Windows.Forms.ContextMenuStrip(Me.components)
+        Me.OpenWithToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
+        Me.ShowInFolderToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
+        Me.tabMain.SuspendLayout()
+        Me.tabGeneralInputsBP.SuspendLayout()
+        Me.BusParamGroupEdit.SuspendLayout()
+        Me.BusParamGroupModel.SuspendLayout()
+        Me.tabGeneralInputsBC.SuspendLayout()
+        Me.GroupBox2.SuspendLayout()
+        Me.tabGeneralInputsOther.SuspendLayout()
+        Me.grpEnvironmentConditions.SuspendLayout()
+        Me.grpAuxHeater.SuspendLayout()
+        Me.grpVentilation.SuspendLayout()
+        Me.grpACSystem.SuspendLayout()
+        Me.tabTechBenefits.SuspendLayout()
+        Me.pnlRaisedFloorRow.SuspendLayout()
+        Me.pnlSemiLowFloorRow.SuspendLayout()
+        Me.pnlLowFloorRow.SuspendLayout()
+        CType(Me.gvTechBenefitLines, System.ComponentModel.ISupportInitialize).BeginInit()
+        Me.tabDiagnostics.SuspendLayout()
+        CType(Me.ErrorProvider1, System.ComponentModel.ISupportInitialize).BeginInit()
+        Me.CMFiles.SuspendLayout()
+        Me.SuspendLayout()
         '
         'tabMain
         '
@@ -253,57 +287,389 @@ Partial Class frmHVACTool
         '
         'tabGeneralInputsBP
         '
-        Me.tabGeneralInputsBP.Controls.Add(Me.GroupBox1)
+        Me.tabGeneralInputsBP.Controls.Add(Me.btnCancelBus)
+        Me.tabGeneralInputsBP.Controls.Add(Me.BusParamGroupEdit)
+        Me.tabGeneralInputsBP.Controls.Add(Me.btnEditBus)
+        Me.tabGeneralInputsBP.Controls.Add(Me.btnUpdateBusDatabase)
+        Me.tabGeneralInputsBP.Controls.Add(Me.btnNewBus)
+        Me.tabGeneralInputsBP.Controls.Add(Me.BusParamGroupModel)
         Me.tabGeneralInputsBP.Controls.Add(Me.cboBuses)
-        Me.tabGeneralInputsBP.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        Me.tabGeneralInputsBP.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         Me.tabGeneralInputsBP.Location = New System.Drawing.Point(4, 22)
         Me.tabGeneralInputsBP.Name = "tabGeneralInputsBP"
         Me.tabGeneralInputsBP.Padding = New System.Windows.Forms.Padding(3)
         Me.tabGeneralInputsBP.Size = New System.Drawing.Size(937, 611)
         Me.tabGeneralInputsBP.TabIndex = 0
         Me.tabGeneralInputsBP.Text = " INP - BusParameters "
-        Me.tabGeneralInputsBP.UseVisualStyleBackColor = true
-        '
-        'GroupBox1
-        '
-        Me.GroupBox1.BackColor = System.Drawing.Color.Transparent
-        Me.GroupBox1.Controls.Add(Me.txtBusModel)
-        Me.GroupBox1.Controls.Add(Me.lblBusModel)
-        Me.GroupBox1.Controls.Add(Me.txtBusFloorType)
-        Me.GroupBox1.Controls.Add(Me.lblBusFloorType)
-        Me.GroupBox1.Controls.Add(Me.lblUnitsBW)
-        Me.GroupBox1.Controls.Add(Me.lblUnitsBSA)
-        Me.GroupBox1.Controls.Add(Me.lblUnitsBWSA)
-        Me.GroupBox1.Controls.Add(Me.lblUnitsBV)
-        Me.GroupBox1.Controls.Add(Me.lblUnitsBL)
-        Me.GroupBox1.Controls.Add(Me.lblUnitsBFSA)
-        Me.GroupBox1.Controls.Add(Me.txtBusWidth)
-        Me.GroupBox1.Controls.Add(Me.txtBusLength)
-        Me.GroupBox1.Controls.Add(Me.txtBusVolume)
-        Me.GroupBox1.Controls.Add(Me.lblBusVolume)
-        Me.GroupBox1.Controls.Add(Me.lblBusLength)
-        Me.GroupBox1.Controls.Add(Me.lblBusWidth)
-        Me.GroupBox1.Controls.Add(Me.txtBusWindowSurfaceArea)
-        Me.GroupBox1.Controls.Add(Me.lblBusWindowSurfaceArea)
-        Me.GroupBox1.Controls.Add(Me.txtBusSurfaceArea)
-        Me.GroupBox1.Controls.Add(Me.lblBusSurfaceArea)
-        Me.GroupBox1.Controls.Add(Me.txtBusFloorSurfaceArea)
-        Me.GroupBox1.Controls.Add(Me.lblBusFloorSurfaceArea)
-        Me.GroupBox1.Controls.Add(Me.txtRegisteredPassengers)
-        Me.GroupBox1.Controls.Add(Me.lblRegisteredPassengers)
-        Me.GroupBox1.FlatStyle = System.Windows.Forms.FlatStyle.Popup
-        Me.GroupBox1.Font = New System.Drawing.Font("Microsoft Sans Serif", 10!)
-        Me.GroupBox1.ForeColor = System.Drawing.SystemColors.MenuHighlight
-        Me.GroupBox1.Location = New System.Drawing.Point(34, 47)
-        Me.GroupBox1.Name = "GroupBox1"
-        Me.GroupBox1.Size = New System.Drawing.Size(416, 294)
-        Me.GroupBox1.TabIndex = 1
-        Me.GroupBox1.TabStop = false
-        Me.GroupBox1.Text = "Bus Parameterisation"
+        Me.tabGeneralInputsBP.UseVisualStyleBackColor = True
+        '
+        'btnCancelBus
+        '
+        Me.btnCancelBus.Enabled = False
+        Me.btnCancelBus.Location = New System.Drawing.Point(581, 22)
+        Me.btnCancelBus.Name = "btnCancelBus"
+        Me.btnCancelBus.Size = New System.Drawing.Size(74, 25)
+        Me.btnCancelBus.TabIndex = 13
+        Me.btnCancelBus.Text = "Cancel"
+        Me.btnCancelBus.UseVisualStyleBackColor = True
+        '
+        'BusParamGroupEdit
+        '
+        Me.BusParamGroupEdit.BackColor = System.Drawing.Color.Transparent
+        Me.BusParamGroupEdit.Controls.Add(Me.Label19)
+        Me.BusParamGroupEdit.Controls.Add(Me.chkEditIsDoubleDecker)
+        Me.BusParamGroupEdit.Controls.Add(Me.cmbEditEngineType)
+        Me.BusParamGroupEdit.Controls.Add(Me.cmbEditFloorType)
+        Me.BusParamGroupEdit.Controls.Add(Me.txtEditBusModel)
+        Me.BusParamGroupEdit.Controls.Add(Me.Label7)
+        Me.BusParamGroupEdit.Controls.Add(Me.Label8)
+        Me.BusParamGroupEdit.Controls.Add(Me.Label9)
+        Me.BusParamGroupEdit.Controls.Add(Me.Label12)
+        Me.BusParamGroupEdit.Controls.Add(Me.Label14)
+        Me.BusParamGroupEdit.Controls.Add(Me.Label16)
+        Me.BusParamGroupEdit.Controls.Add(Me.txtEditBusHeight)
+        Me.BusParamGroupEdit.Controls.Add(Me.txtEditBusWidth)
+        Me.BusParamGroupEdit.Controls.Add(Me.txtEditBusLength)
+        Me.BusParamGroupEdit.Controls.Add(Me.Label17)
+        Me.BusParamGroupEdit.Controls.Add(Me.Label18)
+        Me.BusParamGroupEdit.Controls.Add(Me.Label21)
+        Me.BusParamGroupEdit.Controls.Add(Me.txtEditBusPassengers)
+        Me.BusParamGroupEdit.Controls.Add(Me.Label22)
+        Me.BusParamGroupEdit.FlatStyle = System.Windows.Forms.FlatStyle.Popup
+        Me.BusParamGroupEdit.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!)
+        Me.BusParamGroupEdit.ForeColor = System.Drawing.SystemColors.MenuHighlight
+        Me.BusParamGroupEdit.Location = New System.Drawing.Point(30, 409)
+        Me.BusParamGroupEdit.Name = "BusParamGroupEdit"
+        Me.BusParamGroupEdit.Size = New System.Drawing.Size(625, 352)
+        Me.BusParamGroupEdit.TabIndex = 12
+        Me.BusParamGroupEdit.TabStop = False
+        Me.BusParamGroupEdit.Text = "Bus Parameterisation"
+        Me.BusParamGroupEdit.Visible = False
+        '
+        'Label19
+        '
+        Me.Label19.AutoSize = True
+        Me.Label19.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
+        Me.Label19.ForeColor = System.Drawing.Color.Black
+        Me.Label19.Location = New System.Drawing.Point(14, 151)
+        Me.Label19.Name = "Label19"
+        Me.Label19.Size = New System.Drawing.Size(101, 15)
+        Me.Label19.TabIndex = 33
+        Me.Label19.Text = "Is Double Decker"
+        '
+        'chkEditIsDoubleDecker
+        '
+        Me.chkEditIsDoubleDecker.AutoSize = True
+        Me.chkEditIsDoubleDecker.Location = New System.Drawing.Point(179, 151)
+        Me.chkEditIsDoubleDecker.Name = "chkEditIsDoubleDecker"
+        Me.chkEditIsDoubleDecker.Size = New System.Drawing.Size(15, 14)
+        Me.chkEditIsDoubleDecker.TabIndex = 32
+        Me.chkEditIsDoubleDecker.UseVisualStyleBackColor = True
+        '
+        'cmbEditEngineType
+        '
+        Me.cmbEditEngineType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
+        Me.cmbEditEngineType.FormattingEnabled = True
+        Me.cmbEditEngineType.Items.AddRange(New Object() {"diesel", "gas", "hybrid"})
+        Me.cmbEditEngineType.Location = New System.Drawing.Point(179, 118)
+        Me.cmbEditEngineType.Name = "cmbEditEngineType"
+        Me.cmbEditEngineType.Size = New System.Drawing.Size(208, 24)
+        Me.cmbEditEngineType.TabIndex = 28
+        '
+        'cmbEditFloorType
+        '
+        Me.cmbEditFloorType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
+        Me.cmbEditFloorType.FormattingEnabled = True
+        Me.cmbEditFloorType.Items.AddRange(New Object() {"raised floor", "low floor", "semi low floor"})
+        Me.cmbEditFloorType.Location = New System.Drawing.Point(179, 88)
+        Me.cmbEditFloorType.Name = "cmbEditFloorType"
+        Me.cmbEditFloorType.Size = New System.Drawing.Size(208, 24)
+        Me.cmbEditFloorType.TabIndex = 27
+        '
+        'txtEditBusModel
+        '
+        Me.txtEditBusModel.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
+        Me.txtEditBusModel.Location = New System.Drawing.Point(179, 30)
+        Me.txtEditBusModel.Name = "txtEditBusModel"
+        Me.txtEditBusModel.Size = New System.Drawing.Size(208, 21)
+        Me.txtEditBusModel.TabIndex = 25
+        '
+        'Label7
+        '
+        Me.Label7.AutoSize = True
+        Me.Label7.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
+        Me.Label7.ForeColor = System.Drawing.Color.Black
+        Me.Label7.Location = New System.Drawing.Point(14, 33)
+        Me.Label7.Name = "Label7"
+        Me.Label7.Size = New System.Drawing.Size(66, 15)
+        Me.Label7.TabIndex = 24
+        Me.Label7.Text = "Bus Model"
+        '
+        'Label8
+        '
+        Me.Label8.AutoSize = True
+        Me.Label8.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
+        Me.Label8.ForeColor = System.Drawing.Color.Black
+        Me.Label8.Location = New System.Drawing.Point(14, 88)
+        Me.Label8.Name = "Label8"
+        Me.Label8.Size = New System.Drawing.Size(88, 15)
+        Me.Label8.TabIndex = 22
+        Me.Label8.Text = "Bus Floor Type"
+        '
+        'Label9
+        '
+        Me.Label9.AutoSize = True
+        Me.Label9.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+        Me.Label9.Location = New System.Drawing.Point(296, 211)
+        Me.Label9.Name = "Label9"
+        Me.Label9.Size = New System.Drawing.Size(18, 15)
+        Me.Label9.TabIndex = 21
+        Me.Label9.Text = "m"
+        Me.ToolTip1.SetToolTip(Me.Label9, "Linear Metres")
+        '
+        'Label12
+        '
+        Me.Label12.AutoSize = True
+        Me.Label12.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+        Me.Label12.Location = New System.Drawing.Point(296, 235)
+        Me.Label12.Name = "Label12"
+        Me.Label12.Size = New System.Drawing.Size(18, 15)
+        Me.Label12.TabIndex = 18
+        Me.Label12.Text = "m"
+        Me.ToolTip1.SetToolTip(Me.Label12, "Metres Cubed")
+        '
+        'Label14
+        '
+        Me.Label14.AutoSize = True
+        Me.Label14.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+        Me.Label14.Location = New System.Drawing.Point(296, 180)
+        Me.Label14.Name = "Label14"
+        Me.Label14.Size = New System.Drawing.Size(18, 15)
+        Me.Label14.TabIndex = 17
+        Me.Label14.Text = "m"
+        Me.ToolTip1.SetToolTip(Me.Label14, "Linear Metres")
+        '
+        'Label16
+        '
+        Me.Label16.AutoSize = True
+        Me.Label16.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
+        Me.Label16.ForeColor = System.Drawing.Color.Black
+        Me.Label16.Location = New System.Drawing.Point(14, 238)
+        Me.Label16.Name = "Label16"
+        Me.Label16.Size = New System.Drawing.Size(67, 15)
+        Me.Label16.TabIndex = 12
+        Me.Label16.Text = "Bus Height"
+        '
+        'txtEditBusHeight
+        '
+        Me.txtEditBusHeight.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
+        Me.txtEditBusHeight.Location = New System.Drawing.Point(179, 235)
+        Me.txtEditBusHeight.Name = "txtEditBusHeight"
+        Me.txtEditBusHeight.Size = New System.Drawing.Size(97, 21)
+        Me.txtEditBusHeight.TabIndex = 31
+        '
+        'txtEditBusWidth
+        '
+        Me.txtEditBusWidth.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
+        Me.txtEditBusWidth.Location = New System.Drawing.Point(179, 208)
+        Me.txtEditBusWidth.Name = "txtEditBusWidth"
+        Me.txtEditBusWidth.Size = New System.Drawing.Size(97, 21)
+        Me.txtEditBusWidth.TabIndex = 30
+        '
+        'txtEditBusLength
+        '
+        Me.txtEditBusLength.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
+        Me.txtEditBusLength.Location = New System.Drawing.Point(179, 179)
+        Me.txtEditBusLength.Name = "txtEditBusLength"
+        Me.txtEditBusLength.Size = New System.Drawing.Size(97, 21)
+        Me.txtEditBusLength.TabIndex = 29
+        '
+        'Label17
+        '
+        Me.Label17.AutoSize = True
+        Me.Label17.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
+        Me.Label17.ForeColor = System.Drawing.Color.Black
+        Me.Label17.Location = New System.Drawing.Point(14, 182)
+        Me.Label17.Name = "Label17"
+        Me.Label17.Size = New System.Drawing.Size(72, 15)
+        Me.Label17.TabIndex = 11
+        Me.Label17.Text = "Bus  Length"
+        '
+        'Label18
+        '
+        Me.Label18.AutoSize = True
+        Me.Label18.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
+        Me.Label18.ForeColor = System.Drawing.Color.Black
+        Me.Label18.Location = New System.Drawing.Point(14, 211)
+        Me.Label18.Name = "Label18"
+        Me.Label18.Size = New System.Drawing.Size(65, 15)
+        Me.Label18.TabIndex = 10
+        Me.Label18.Text = "Bus  Width"
+        '
+        'Label21
+        '
+        Me.Label21.AutoSize = True
+        Me.Label21.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
+        Me.Label21.ForeColor = System.Drawing.Color.Black
+        Me.Label21.Location = New System.Drawing.Point(14, 120)
+        Me.Label21.Name = "Label21"
+        Me.Label21.Size = New System.Drawing.Size(99, 15)
+        Me.Label21.TabIndex = 4
+        Me.Label21.Text = "Bus Engine Type"
+        '
+        'txtEditBusPassengers
+        '
+        Me.txtEditBusPassengers.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
+        Me.txtEditBusPassengers.Location = New System.Drawing.Point(179, 59)
+        Me.txtEditBusPassengers.Name = "txtEditBusPassengers"
+        Me.txtEditBusPassengers.Size = New System.Drawing.Size(97, 21)
+        Me.txtEditBusPassengers.TabIndex = 26
+        '
+        'Label22
+        '
+        Me.Label22.AutoSize = True
+        Me.Label22.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
+        Me.Label22.ForeColor = System.Drawing.Color.Black
+        Me.Label22.Location = New System.Drawing.Point(14, 62)
+        Me.Label22.Name = "Label22"
+        Me.Label22.Size = New System.Drawing.Size(138, 15)
+        Me.Label22.TabIndex = 0
+        Me.Label22.Text = "Registered Passengers "
+        '
+        'btnEditBus
+        '
+        Me.btnEditBus.Enabled = False
+        Me.btnEditBus.Location = New System.Drawing.Point(421, 22)
+        Me.btnEditBus.Name = "btnEditBus"
+        Me.btnEditBus.Size = New System.Drawing.Size(74, 25)
+        Me.btnEditBus.TabIndex = 11
+        Me.btnEditBus.Text = "Edit"
+        Me.btnEditBus.UseVisualStyleBackColor = True
+        '
+        'btnUpdateBusDatabase
+        '
+        Me.btnUpdateBusDatabase.Enabled = False
+        Me.btnUpdateBusDatabase.Location = New System.Drawing.Point(294, 22)
+        Me.btnUpdateBusDatabase.Name = "btnUpdateBusDatabase"
+        Me.btnUpdateBusDatabase.Size = New System.Drawing.Size(123, 25)
+        Me.btnUpdateBusDatabase.TabIndex = 10
+        Me.btnUpdateBusDatabase.Text = "Save Bus Database"
+        Me.btnUpdateBusDatabase.UseVisualStyleBackColor = True
+        '
+        'btnNewBus
+        '
+        Me.btnNewBus.Location = New System.Drawing.Point(501, 22)
+        Me.btnNewBus.Name = "btnNewBus"
+        Me.btnNewBus.Size = New System.Drawing.Size(74, 25)
+        Me.btnNewBus.TabIndex = 9
+        Me.btnNewBus.Text = "New"
+        Me.btnNewBus.UseVisualStyleBackColor = True
+        '
+        'BusParamGroupModel
+        '
+        Me.BusParamGroupModel.BackColor = System.Drawing.Color.Transparent
+        Me.BusParamGroupModel.Controls.Add(Me.Label15)
+        Me.BusParamGroupModel.Controls.Add(Me.chkIsDoubleDecker)
+        Me.BusParamGroupModel.Controls.Add(Me.cmbBusFloorType)
+        Me.BusParamGroupModel.Controls.Add(Me.Label10)
+        Me.BusParamGroupModel.Controls.Add(Me.txtBusHeight)
+        Me.BusParamGroupModel.Controls.Add(Me.Label11)
+        Me.BusParamGroupModel.Controls.Add(Me.txtBusModel)
+        Me.BusParamGroupModel.Controls.Add(Me.lblBusModel)
+        Me.BusParamGroupModel.Controls.Add(Me.lblBusFloorType)
+        Me.BusParamGroupModel.Controls.Add(Me.lblUnitsBW)
+        Me.BusParamGroupModel.Controls.Add(Me.lblUnitsBSA)
+        Me.BusParamGroupModel.Controls.Add(Me.lblUnitsBWSA)
+        Me.BusParamGroupModel.Controls.Add(Me.lblUnitsBV)
+        Me.BusParamGroupModel.Controls.Add(Me.lblUnitsBL)
+        Me.BusParamGroupModel.Controls.Add(Me.lblUnitsBFSA)
+        Me.BusParamGroupModel.Controls.Add(Me.txtBusWidth)
+        Me.BusParamGroupModel.Controls.Add(Me.txtBusLength)
+        Me.BusParamGroupModel.Controls.Add(Me.txtBusVolume)
+        Me.BusParamGroupModel.Controls.Add(Me.lblBusVolume)
+        Me.BusParamGroupModel.Controls.Add(Me.lblBusLength)
+        Me.BusParamGroupModel.Controls.Add(Me.lblBusWidth)
+        Me.BusParamGroupModel.Controls.Add(Me.txtBusWindowSurfaceArea)
+        Me.BusParamGroupModel.Controls.Add(Me.lblBusWindowSurfaceArea)
+        Me.BusParamGroupModel.Controls.Add(Me.txtBusSurfaceArea)
+        Me.BusParamGroupModel.Controls.Add(Me.lblBusSurfaceArea)
+        Me.BusParamGroupModel.Controls.Add(Me.txtBusFloorSurfaceArea)
+        Me.BusParamGroupModel.Controls.Add(Me.lblBusFloorSurfaceArea)
+        Me.BusParamGroupModel.Controls.Add(Me.txtRegisteredPassengers)
+        Me.BusParamGroupModel.Controls.Add(Me.lblRegisteredPassengers)
+        Me.BusParamGroupModel.FlatStyle = System.Windows.Forms.FlatStyle.Popup
+        Me.BusParamGroupModel.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!)
+        Me.BusParamGroupModel.ForeColor = System.Drawing.SystemColors.MenuHighlight
+        Me.BusParamGroupModel.Location = New System.Drawing.Point(30, 51)
+        Me.BusParamGroupModel.Name = "BusParamGroupModel"
+        Me.BusParamGroupModel.Size = New System.Drawing.Size(625, 352)
+        Me.BusParamGroupModel.TabIndex = 8
+        Me.BusParamGroupModel.TabStop = False
+        Me.BusParamGroupModel.Text = "Bus Parameterisation"
+        '
+        'Label15
+        '
+        Me.Label15.AutoSize = True
+        Me.Label15.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
+        Me.Label15.ForeColor = System.Drawing.Color.Black
+        Me.Label15.Location = New System.Drawing.Point(14, 116)
+        Me.Label15.Name = "Label15"
+        Me.Label15.Size = New System.Drawing.Size(101, 15)
+        Me.Label15.TabIndex = 31
+        Me.Label15.Text = "Is Double Decker"
+        '
+        'chkIsDoubleDecker
+        '
+        Me.chkIsDoubleDecker.AutoSize = True
+        Me.chkIsDoubleDecker.Location = New System.Drawing.Point(179, 116)
+        Me.chkIsDoubleDecker.Name = "chkIsDoubleDecker"
+        Me.chkIsDoubleDecker.Size = New System.Drawing.Size(15, 14)
+        Me.chkIsDoubleDecker.TabIndex = 30
+        Me.chkIsDoubleDecker.UseVisualStyleBackColor = True
+        '
+        'cmbBusFloorType
+        '
+        Me.cmbBusFloorType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
+        Me.cmbBusFloorType.FormattingEnabled = True
+        Me.cmbBusFloorType.Items.AddRange(New Object() {"raised floor", "low floor", "semi low floor"})
+        Me.cmbBusFloorType.Location = New System.Drawing.Point(179, 85)
+        Me.cmbBusFloorType.Name = "cmbBusFloorType"
+        Me.cmbBusFloorType.Size = New System.Drawing.Size(208, 24)
+        Me.cmbBusFloorType.TabIndex = 29
+        '
+        'Label10
+        '
+        Me.Label10.AutoSize = True
+        Me.Label10.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+        Me.Label10.Location = New System.Drawing.Point(296, 201)
+        Me.Label10.Name = "Label10"
+        Me.Label10.Size = New System.Drawing.Size(18, 15)
+        Me.Label10.TabIndex = 28
+        Me.Label10.Text = "m"
+        Me.ToolTip1.SetToolTip(Me.Label10, "Linear Metres")
+        '
+        'txtBusHeight
+        '
+        Me.txtBusHeight.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
+        Me.txtBusHeight.Location = New System.Drawing.Point(179, 198)
+        Me.txtBusHeight.Name = "txtBusHeight"
+        Me.txtBusHeight.Size = New System.Drawing.Size(97, 21)
+        Me.txtBusHeight.TabIndex = 27
+        '
+        'Label11
+        '
+        Me.Label11.AutoSize = True
+        Me.Label11.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
+        Me.Label11.ForeColor = System.Drawing.Color.Black
+        Me.Label11.Location = New System.Drawing.Point(14, 201)
+        Me.Label11.Name = "Label11"
+        Me.Label11.Size = New System.Drawing.Size(70, 15)
+        Me.Label11.TabIndex = 26
+        Me.Label11.Text = "Bus  Height"
         '
         'txtBusModel
         '
-        Me.txtBusModel.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.txtBusModel.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.txtBusModel.Location = New System.Drawing.Point(179, 30)
         Me.txtBusModel.Name = "txtBusModel"
         Me.txtBusModel.Size = New System.Drawing.Size(208, 21)
@@ -311,8 +677,8 @@ Partial Class frmHVACTool
         '
         'lblBusModel
         '
-        Me.lblBusModel.AutoSize = true
-        Me.lblBusModel.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lblBusModel.AutoSize = True
+        Me.lblBusModel.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lblBusModel.ForeColor = System.Drawing.Color.Black
         Me.lblBusModel.Location = New System.Drawing.Point(14, 33)
         Me.lblBusModel.Name = "lblBusModel"
@@ -320,19 +686,10 @@ Partial Class frmHVACTool
         Me.lblBusModel.TabIndex = 24
         Me.lblBusModel.Text = "Bus Model"
         '
-        'txtBusFloorType
-        '
-        Me.txtBusFloorType.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
-        Me.txtBusFloorType.Location = New System.Drawing.Point(179, 90)
-        Me.txtBusFloorType.Name = "txtBusFloorType"
-        Me.txtBusFloorType.ReadOnly = true
-        Me.txtBusFloorType.Size = New System.Drawing.Size(97, 21)
-        Me.txtBusFloorType.TabIndex = 23
-        '
         'lblBusFloorType
         '
-        Me.lblBusFloorType.AutoSize = true
-        Me.lblBusFloorType.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lblBusFloorType.AutoSize = True
+        Me.lblBusFloorType.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lblBusFloorType.ForeColor = System.Drawing.Color.Black
         Me.lblBusFloorType.Location = New System.Drawing.Point(14, 88)
         Me.lblBusFloorType.Name = "lblBusFloorType"
@@ -342,9 +699,9 @@ Partial Class frmHVACTool
         '
         'lblUnitsBW
         '
-        Me.lblUnitsBW.AutoSize = true
-        Me.lblUnitsBW.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
-        Me.lblUnitsBW.Location = New System.Drawing.Point(296, 261)
+        Me.lblUnitsBW.AutoSize = True
+        Me.lblUnitsBW.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+        Me.lblUnitsBW.Location = New System.Drawing.Point(296, 171)
         Me.lblUnitsBW.Name = "lblUnitsBW"
         Me.lblUnitsBW.Size = New System.Drawing.Size(18, 15)
         Me.lblUnitsBW.TabIndex = 21
@@ -353,9 +710,9 @@ Partial Class frmHVACTool
         '
         'lblUnitsBSA
         '
-        Me.lblUnitsBSA.AutoSize = true
-        Me.lblUnitsBSA.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
-        Me.lblUnitsBSA.Location = New System.Drawing.Point(296, 146)
+        Me.lblUnitsBSA.AutoSize = True
+        Me.lblUnitsBSA.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+        Me.lblUnitsBSA.Location = New System.Drawing.Point(296, 287)
         Me.lblUnitsBSA.Name = "lblUnitsBSA"
         Me.lblUnitsBSA.Size = New System.Drawing.Size(31, 15)
         Me.lblUnitsBSA.TabIndex = 20
@@ -364,9 +721,9 @@ Partial Class frmHVACTool
         '
         'lblUnitsBWSA
         '
-        Me.lblUnitsBWSA.AutoSize = true
-        Me.lblUnitsBWSA.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
-        Me.lblUnitsBWSA.Location = New System.Drawing.Point(296, 175)
+        Me.lblUnitsBWSA.AutoSize = True
+        Me.lblUnitsBWSA.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+        Me.lblUnitsBWSA.Location = New System.Drawing.Point(296, 257)
         Me.lblUnitsBWSA.Name = "lblUnitsBWSA"
         Me.lblUnitsBWSA.Size = New System.Drawing.Size(31, 15)
         Me.lblUnitsBWSA.TabIndex = 19
@@ -375,9 +732,9 @@ Partial Class frmHVACTool
         '
         'lblUnitsBV
         '
-        Me.lblUnitsBV.AutoSize = true
-        Me.lblUnitsBV.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
-        Me.lblUnitsBV.Location = New System.Drawing.Point(296, 202)
+        Me.lblUnitsBV.AutoSize = True
+        Me.lblUnitsBV.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+        Me.lblUnitsBV.Location = New System.Drawing.Point(296, 313)
         Me.lblUnitsBV.Name = "lblUnitsBV"
         Me.lblUnitsBV.Size = New System.Drawing.Size(31, 15)
         Me.lblUnitsBV.TabIndex = 18
@@ -386,9 +743,9 @@ Partial Class frmHVACTool
         '
         'lblUnitsBL
         '
-        Me.lblUnitsBL.AutoSize = true
-        Me.lblUnitsBL.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
-        Me.lblUnitsBL.Location = New System.Drawing.Point(296, 230)
+        Me.lblUnitsBL.AutoSize = True
+        Me.lblUnitsBL.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+        Me.lblUnitsBL.Location = New System.Drawing.Point(296, 140)
         Me.lblUnitsBL.Name = "lblUnitsBL"
         Me.lblUnitsBL.Size = New System.Drawing.Size(18, 15)
         Me.lblUnitsBL.TabIndex = 17
@@ -397,9 +754,9 @@ Partial Class frmHVACTool
         '
         'lblUnitsBFSA
         '
-        Me.lblUnitsBFSA.AutoSize = true
-        Me.lblUnitsBFSA.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
-        Me.lblUnitsBFSA.Location = New System.Drawing.Point(296, 120)
+        Me.lblUnitsBFSA.AutoSize = True
+        Me.lblUnitsBFSA.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+        Me.lblUnitsBFSA.Location = New System.Drawing.Point(296, 230)
         Me.lblUnitsBFSA.Name = "lblUnitsBFSA"
         Me.lblUnitsBFSA.Size = New System.Drawing.Size(31, 15)
         Me.lblUnitsBFSA.TabIndex = 16
@@ -408,34 +765,35 @@ Partial Class frmHVACTool
         '
         'txtBusWidth
         '
-        Me.txtBusWidth.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
-        Me.txtBusWidth.Location = New System.Drawing.Point(179, 258)
+        Me.txtBusWidth.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
+        Me.txtBusWidth.Location = New System.Drawing.Point(179, 168)
         Me.txtBusWidth.Name = "txtBusWidth"
         Me.txtBusWidth.Size = New System.Drawing.Size(97, 21)
         Me.txtBusWidth.TabIndex = 15
         '
         'txtBusLength
         '
-        Me.txtBusLength.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
-        Me.txtBusLength.Location = New System.Drawing.Point(179, 229)
+        Me.txtBusLength.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
+        Me.txtBusLength.Location = New System.Drawing.Point(179, 139)
         Me.txtBusLength.Name = "txtBusLength"
         Me.txtBusLength.Size = New System.Drawing.Size(97, 21)
         Me.txtBusLength.TabIndex = 14
         '
         'txtBusVolume
         '
-        Me.txtBusVolume.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
-        Me.txtBusVolume.Location = New System.Drawing.Point(179, 202)
+        Me.txtBusVolume.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
+        Me.txtBusVolume.Location = New System.Drawing.Point(179, 313)
         Me.txtBusVolume.Name = "txtBusVolume"
+        Me.txtBusVolume.ReadOnly = True
         Me.txtBusVolume.Size = New System.Drawing.Size(97, 21)
         Me.txtBusVolume.TabIndex = 13
         '
         'lblBusVolume
         '
-        Me.lblBusVolume.AutoSize = true
-        Me.lblBusVolume.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lblBusVolume.AutoSize = True
+        Me.lblBusVolume.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lblBusVolume.ForeColor = System.Drawing.Color.Black
-        Me.lblBusVolume.Location = New System.Drawing.Point(14, 205)
+        Me.lblBusVolume.Location = New System.Drawing.Point(14, 316)
         Me.lblBusVolume.Name = "lblBusVolume"
         Me.lblBusVolume.Size = New System.Drawing.Size(73, 15)
         Me.lblBusVolume.TabIndex = 12
@@ -443,10 +801,10 @@ Partial Class frmHVACTool
         '
         'lblBusLength
         '
-        Me.lblBusLength.AutoSize = true
-        Me.lblBusLength.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lblBusLength.AutoSize = True
+        Me.lblBusLength.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lblBusLength.ForeColor = System.Drawing.Color.Black
-        Me.lblBusLength.Location = New System.Drawing.Point(14, 232)
+        Me.lblBusLength.Location = New System.Drawing.Point(14, 142)
         Me.lblBusLength.Name = "lblBusLength"
         Me.lblBusLength.Size = New System.Drawing.Size(72, 15)
         Me.lblBusLength.TabIndex = 11
@@ -454,10 +812,10 @@ Partial Class frmHVACTool
         '
         'lblBusWidth
         '
-        Me.lblBusWidth.AutoSize = true
-        Me.lblBusWidth.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lblBusWidth.AutoSize = True
+        Me.lblBusWidth.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lblBusWidth.ForeColor = System.Drawing.Color.Black
-        Me.lblBusWidth.Location = New System.Drawing.Point(14, 261)
+        Me.lblBusWidth.Location = New System.Drawing.Point(14, 171)
         Me.lblBusWidth.Name = "lblBusWidth"
         Me.lblBusWidth.Size = New System.Drawing.Size(65, 15)
         Me.lblBusWidth.TabIndex = 10
@@ -465,19 +823,19 @@ Partial Class frmHVACTool
         '
         'txtBusWindowSurfaceArea
         '
-        Me.txtBusWindowSurfaceArea.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
-        Me.txtBusWindowSurfaceArea.Location = New System.Drawing.Point(179, 173)
+        Me.txtBusWindowSurfaceArea.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
+        Me.txtBusWindowSurfaceArea.Location = New System.Drawing.Point(179, 255)
         Me.txtBusWindowSurfaceArea.Name = "txtBusWindowSurfaceArea"
-        Me.txtBusWindowSurfaceArea.ReadOnly = true
+        Me.txtBusWindowSurfaceArea.ReadOnly = True
         Me.txtBusWindowSurfaceArea.Size = New System.Drawing.Size(97, 21)
         Me.txtBusWindowSurfaceArea.TabIndex = 9
         '
         'lblBusWindowSurfaceArea
         '
-        Me.lblBusWindowSurfaceArea.AutoSize = true
-        Me.lblBusWindowSurfaceArea.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lblBusWindowSurfaceArea.AutoSize = True
+        Me.lblBusWindowSurfaceArea.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lblBusWindowSurfaceArea.ForeColor = System.Drawing.Color.Black
-        Me.lblBusWindowSurfaceArea.Location = New System.Drawing.Point(14, 176)
+        Me.lblBusWindowSurfaceArea.Location = New System.Drawing.Point(14, 258)
         Me.lblBusWindowSurfaceArea.Name = "lblBusWindowSurfaceArea"
         Me.lblBusWindowSurfaceArea.Size = New System.Drawing.Size(151, 15)
         Me.lblBusWindowSurfaceArea.TabIndex = 8
@@ -485,18 +843,19 @@ Partial Class frmHVACTool
         '
         'txtBusSurfaceArea
         '
-        Me.txtBusSurfaceArea.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
-        Me.txtBusSurfaceArea.Location = New System.Drawing.Point(179, 145)
+        Me.txtBusSurfaceArea.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
+        Me.txtBusSurfaceArea.Location = New System.Drawing.Point(179, 286)
         Me.txtBusSurfaceArea.Name = "txtBusSurfaceArea"
+        Me.txtBusSurfaceArea.ReadOnly = True
         Me.txtBusSurfaceArea.Size = New System.Drawing.Size(97, 21)
         Me.txtBusSurfaceArea.TabIndex = 7
         '
         'lblBusSurfaceArea
         '
-        Me.lblBusSurfaceArea.AutoSize = true
-        Me.lblBusSurfaceArea.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lblBusSurfaceArea.AutoSize = True
+        Me.lblBusSurfaceArea.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lblBusSurfaceArea.ForeColor = System.Drawing.Color.Black
-        Me.lblBusSurfaceArea.Location = New System.Drawing.Point(14, 148)
+        Me.lblBusSurfaceArea.Location = New System.Drawing.Point(14, 289)
         Me.lblBusSurfaceArea.Name = "lblBusSurfaceArea"
         Me.lblBusSurfaceArea.Size = New System.Drawing.Size(104, 15)
         Me.lblBusSurfaceArea.TabIndex = 6
@@ -504,19 +863,19 @@ Partial Class frmHVACTool
         '
         'txtBusFloorSurfaceArea
         '
-        Me.txtBusFloorSurfaceArea.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
-        Me.txtBusFloorSurfaceArea.Location = New System.Drawing.Point(179, 117)
+        Me.txtBusFloorSurfaceArea.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
+        Me.txtBusFloorSurfaceArea.Location = New System.Drawing.Point(179, 227)
         Me.txtBusFloorSurfaceArea.Name = "txtBusFloorSurfaceArea"
-        Me.txtBusFloorSurfaceArea.ReadOnly = true
+        Me.txtBusFloorSurfaceArea.ReadOnly = True
         Me.txtBusFloorSurfaceArea.Size = New System.Drawing.Size(97, 21)
         Me.txtBusFloorSurfaceArea.TabIndex = 5
         '
         'lblBusFloorSurfaceArea
         '
-        Me.lblBusFloorSurfaceArea.AutoSize = true
-        Me.lblBusFloorSurfaceArea.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lblBusFloorSurfaceArea.AutoSize = True
+        Me.lblBusFloorSurfaceArea.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lblBusFloorSurfaceArea.ForeColor = System.Drawing.Color.Black
-        Me.lblBusFloorSurfaceArea.Location = New System.Drawing.Point(14, 120)
+        Me.lblBusFloorSurfaceArea.Location = New System.Drawing.Point(14, 230)
         Me.lblBusFloorSurfaceArea.Name = "lblBusFloorSurfaceArea"
         Me.lblBusFloorSurfaceArea.Size = New System.Drawing.Size(132, 15)
         Me.lblBusFloorSurfaceArea.TabIndex = 4
@@ -524,7 +883,7 @@ Partial Class frmHVACTool
         '
         'txtRegisteredPassengers
         '
-        Me.txtRegisteredPassengers.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.txtRegisteredPassengers.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.txtRegisteredPassengers.Location = New System.Drawing.Point(179, 59)
         Me.txtRegisteredPassengers.Name = "txtRegisteredPassengers"
         Me.txtRegisteredPassengers.Size = New System.Drawing.Size(97, 21)
@@ -532,8 +891,8 @@ Partial Class frmHVACTool
         '
         'lblRegisteredPassengers
         '
-        Me.lblRegisteredPassengers.AutoSize = true
-        Me.lblRegisteredPassengers.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lblRegisteredPassengers.AutoSize = True
+        Me.lblRegisteredPassengers.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lblRegisteredPassengers.ForeColor = System.Drawing.Color.Black
         Me.lblRegisteredPassengers.Location = New System.Drawing.Point(14, 62)
         Me.lblRegisteredPassengers.Name = "lblRegisteredPassengers"
@@ -543,11 +902,11 @@ Partial Class frmHVACTool
         '
         'cboBuses
         '
-        Me.cboBuses.FormattingEnabled = true
-        Me.cboBuses.Location = New System.Drawing.Point(34, 16)
+        Me.cboBuses.FormattingEnabled = True
+        Me.cboBuses.Location = New System.Drawing.Point(30, 22)
         Me.cboBuses.Name = "cboBuses"
-        Me.cboBuses.Size = New System.Drawing.Size(361, 23)
-        Me.cboBuses.TabIndex = 0
+        Me.cboBuses.Size = New System.Drawing.Size(251, 23)
+        Me.cboBuses.TabIndex = 7
         '
         'tabGeneralInputsBC
         '
@@ -557,7 +916,7 @@ Partial Class frmHVACTool
         Me.tabGeneralInputsBC.Size = New System.Drawing.Size(937, 611)
         Me.tabGeneralInputsBC.TabIndex = 2
         Me.tabGeneralInputsBC.Text = " INP - Boundary Conditions "
-        Me.tabGeneralInputsBC.UseVisualStyleBackColor = true
+        Me.tabGeneralInputsBC.UseVisualStyleBackColor = True
         '
         'GroupBox2
         '
@@ -637,19 +996,19 @@ Partial Class frmHVACTool
         Me.GroupBox2.Controls.Add(Me.txtBC_SolarClouding)
         Me.GroupBox2.Controls.Add(Me.lblSolarClouding)
         Me.GroupBox2.FlatStyle = System.Windows.Forms.FlatStyle.Popup
-        Me.GroupBox2.Font = New System.Drawing.Font("Microsoft Sans Serif", 10!)
+        Me.GroupBox2.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!)
         Me.GroupBox2.ForeColor = System.Drawing.SystemColors.MenuHighlight
         Me.GroupBox2.Location = New System.Drawing.Point(34, 47)
         Me.GroupBox2.Name = "GroupBox2"
         Me.GroupBox2.Size = New System.Drawing.Size(890, 534)
         Me.GroupBox2.TabIndex = 27
-        Me.GroupBox2.TabStop = false
+        Me.GroupBox2.TabStop = False
         Me.GroupBox2.Text = "Boundary Conditions"
         '
         'lblUnitsBC_MaxPossibleBenefitFromTechnologyList
         '
-        Me.lblUnitsBC_MaxPossibleBenefitFromTechnologyList.AutoSize = true
-        Me.lblUnitsBC_MaxPossibleBenefitFromTechnologyList.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        Me.lblUnitsBC_MaxPossibleBenefitFromTechnologyList.AutoSize = True
+        Me.lblUnitsBC_MaxPossibleBenefitFromTechnologyList.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         Me.lblUnitsBC_MaxPossibleBenefitFromTechnologyList.Location = New System.Drawing.Point(783, 264)
         Me.lblUnitsBC_MaxPossibleBenefitFromTechnologyList.Name = "lblUnitsBC_MaxPossibleBenefitFromTechnologyList"
         Me.lblUnitsBC_MaxPossibleBenefitFromTechnologyList.Size = New System.Drawing.Size(51, 15)
@@ -659,7 +1018,7 @@ Partial Class frmHVACTool
         '
         'txtBC_MaxPossibleBenefitFromTechnologyList
         '
-        Me.txtBC_MaxPossibleBenefitFromTechnologyList.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.txtBC_MaxPossibleBenefitFromTechnologyList.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.txtBC_MaxPossibleBenefitFromTechnologyList.Location = New System.Drawing.Point(655, 261)
         Me.txtBC_MaxPossibleBenefitFromTechnologyList.Name = "txtBC_MaxPossibleBenefitFromTechnologyList"
         Me.txtBC_MaxPossibleBenefitFromTechnologyList.Size = New System.Drawing.Size(97, 21)
@@ -667,8 +1026,8 @@ Partial Class frmHVACTool
         '
         'lblBC_MaxPossibleBenefitFromTechnologyList
         '
-        Me.lblBC_MaxPossibleBenefitFromTechnologyList.AutoSize = true
-        Me.lblBC_MaxPossibleBenefitFromTechnologyList.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lblBC_MaxPossibleBenefitFromTechnologyList.AutoSize = True
+        Me.lblBC_MaxPossibleBenefitFromTechnologyList.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lblBC_MaxPossibleBenefitFromTechnologyList.ForeColor = System.Drawing.Color.Black
         Me.lblBC_MaxPossibleBenefitFromTechnologyList.Location = New System.Drawing.Point(448, 264)
         Me.lblBC_MaxPossibleBenefitFromTechnologyList.Name = "lblBC_MaxPossibleBenefitFromTechnologyList"
@@ -678,8 +1037,8 @@ Partial Class frmHVACTool
         '
         'lblUnitsBC_MaxTemperatureDeltaForLowFloorBusses
         '
-        Me.lblUnitsBC_MaxTemperatureDeltaForLowFloorBusses.AutoSize = true
-        Me.lblUnitsBC_MaxTemperatureDeltaForLowFloorBusses.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        Me.lblUnitsBC_MaxTemperatureDeltaForLowFloorBusses.AutoSize = True
+        Me.lblUnitsBC_MaxTemperatureDeltaForLowFloorBusses.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         Me.lblUnitsBC_MaxTemperatureDeltaForLowFloorBusses.Location = New System.Drawing.Point(783, 235)
         Me.lblUnitsBC_MaxTemperatureDeltaForLowFloorBusses.Name = "lblUnitsBC_MaxTemperatureDeltaForLowFloorBusses"
         Me.lblUnitsBC_MaxTemperatureDeltaForLowFloorBusses.Size = New System.Drawing.Size(15, 15)
@@ -689,7 +1048,7 @@ Partial Class frmHVACTool
         '
         'txtBC_MaxTemperatureDeltaForLowFloorBusses
         '
-        Me.txtBC_MaxTemperatureDeltaForLowFloorBusses.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.txtBC_MaxTemperatureDeltaForLowFloorBusses.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.txtBC_MaxTemperatureDeltaForLowFloorBusses.Location = New System.Drawing.Point(655, 232)
         Me.txtBC_MaxTemperatureDeltaForLowFloorBusses.Name = "txtBC_MaxTemperatureDeltaForLowFloorBusses"
         Me.txtBC_MaxTemperatureDeltaForLowFloorBusses.Size = New System.Drawing.Size(97, 21)
@@ -697,8 +1056,8 @@ Partial Class frmHVACTool
         '
         'lblBC_MaxTemperatureDeltaForLowFloorBusses
         '
-        Me.lblBC_MaxTemperatureDeltaForLowFloorBusses.AutoSize = true
-        Me.lblBC_MaxTemperatureDeltaForLowFloorBusses.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lblBC_MaxTemperatureDeltaForLowFloorBusses.AutoSize = True
+        Me.lblBC_MaxTemperatureDeltaForLowFloorBusses.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lblBC_MaxTemperatureDeltaForLowFloorBusses.ForeColor = System.Drawing.Color.Black
         Me.lblBC_MaxTemperatureDeltaForLowFloorBusses.Location = New System.Drawing.Point(448, 235)
         Me.lblBC_MaxTemperatureDeltaForLowFloorBusses.Name = "lblBC_MaxTemperatureDeltaForLowFloorBusses"
@@ -708,8 +1067,8 @@ Partial Class frmHVACTool
         '
         'lblUnitsBC_FrontRearWindowArea
         '
-        Me.lblUnitsBC_FrontRearWindowArea.AutoSize = true
-        Me.lblUnitsBC_FrontRearWindowArea.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        Me.lblUnitsBC_FrontRearWindowArea.AutoSize = True
+        Me.lblUnitsBC_FrontRearWindowArea.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         Me.lblUnitsBC_FrontRearWindowArea.Location = New System.Drawing.Point(783, 208)
         Me.lblUnitsBC_FrontRearWindowArea.Name = "lblUnitsBC_FrontRearWindowArea"
         Me.lblUnitsBC_FrontRearWindowArea.Size = New System.Drawing.Size(31, 15)
@@ -719,17 +1078,17 @@ Partial Class frmHVACTool
         '
         'txtBC_FrontRearWindowArea
         '
-        Me.txtBC_FrontRearWindowArea.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.txtBC_FrontRearWindowArea.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.txtBC_FrontRearWindowArea.Location = New System.Drawing.Point(655, 205)
         Me.txtBC_FrontRearWindowArea.Name = "txtBC_FrontRearWindowArea"
-        Me.txtBC_FrontRearWindowArea.ReadOnly = true
+        Me.txtBC_FrontRearWindowArea.ReadOnly = True
         Me.txtBC_FrontRearWindowArea.Size = New System.Drawing.Size(97, 21)
         Me.txtBC_FrontRearWindowArea.TabIndex = 68
         '
         'lblBC_FrontRearWindowArea
         '
-        Me.lblBC_FrontRearWindowArea.AutoSize = true
-        Me.lblBC_FrontRearWindowArea.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lblBC_FrontRearWindowArea.AutoSize = True
+        Me.lblBC_FrontRearWindowArea.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lblBC_FrontRearWindowArea.ForeColor = System.Drawing.Color.Black
         Me.lblBC_FrontRearWindowArea.Location = New System.Drawing.Point(448, 208)
         Me.lblBC_FrontRearWindowArea.Name = "lblBC_FrontRearWindowArea"
@@ -739,8 +1098,8 @@ Partial Class frmHVACTool
         '
         'lblUnitsBC_WindowAreaPerUnitBusLength
         '
-        Me.lblUnitsBC_WindowAreaPerUnitBusLength.AutoSize = true
-        Me.lblUnitsBC_WindowAreaPerUnitBusLength.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        Me.lblUnitsBC_WindowAreaPerUnitBusLength.AutoSize = True
+        Me.lblUnitsBC_WindowAreaPerUnitBusLength.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         Me.lblUnitsBC_WindowAreaPerUnitBusLength.Location = New System.Drawing.Point(783, 179)
         Me.lblUnitsBC_WindowAreaPerUnitBusLength.Name = "lblUnitsBC_WindowAreaPerUnitBusLength"
         Me.lblUnitsBC_WindowAreaPerUnitBusLength.Size = New System.Drawing.Size(38, 15)
@@ -750,17 +1109,17 @@ Partial Class frmHVACTool
         '
         'txtBC_WindowAreaPerUnitBusLength
         '
-        Me.txtBC_WindowAreaPerUnitBusLength.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.txtBC_WindowAreaPerUnitBusLength.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.txtBC_WindowAreaPerUnitBusLength.Location = New System.Drawing.Point(655, 176)
         Me.txtBC_WindowAreaPerUnitBusLength.Name = "txtBC_WindowAreaPerUnitBusLength"
-        Me.txtBC_WindowAreaPerUnitBusLength.ReadOnly = true
+        Me.txtBC_WindowAreaPerUnitBusLength.ReadOnly = True
         Me.txtBC_WindowAreaPerUnitBusLength.Size = New System.Drawing.Size(97, 21)
         Me.txtBC_WindowAreaPerUnitBusLength.TabIndex = 65
         '
         'lblBC_WindowAreaPerUnitBusLength
         '
-        Me.lblBC_WindowAreaPerUnitBusLength.AutoSize = true
-        Me.lblBC_WindowAreaPerUnitBusLength.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lblBC_WindowAreaPerUnitBusLength.AutoSize = True
+        Me.lblBC_WindowAreaPerUnitBusLength.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lblBC_WindowAreaPerUnitBusLength.ForeColor = System.Drawing.Color.Black
         Me.lblBC_WindowAreaPerUnitBusLength.Location = New System.Drawing.Point(448, 179)
         Me.lblBC_WindowAreaPerUnitBusLength.Name = "lblBC_WindowAreaPerUnitBusLength"
@@ -770,8 +1129,8 @@ Partial Class frmHVACTool
         '
         'lblUnitsBC_VolumicMassDieselOrHeatingOil
         '
-        Me.lblUnitsBC_VolumicMassDieselOrHeatingOil.AutoSize = true
-        Me.lblUnitsBC_VolumicMassDieselOrHeatingOil.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        Me.lblUnitsBC_VolumicMassDieselOrHeatingOil.AutoSize = True
+        Me.lblUnitsBC_VolumicMassDieselOrHeatingOil.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         Me.lblUnitsBC_VolumicMassDieselOrHeatingOil.Location = New System.Drawing.Point(783, 151)
         Me.lblUnitsBC_VolumicMassDieselOrHeatingOil.Name = "lblUnitsBC_VolumicMassDieselOrHeatingOil"
         Me.lblUnitsBC_VolumicMassDieselOrHeatingOil.Size = New System.Drawing.Size(28, 15)
@@ -781,7 +1140,7 @@ Partial Class frmHVACTool
         '
         'txtBC_VolumicMassDieselOrHeatingOil
         '
-        Me.txtBC_VolumicMassDieselOrHeatingOil.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.txtBC_VolumicMassDieselOrHeatingOil.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.txtBC_VolumicMassDieselOrHeatingOil.Location = New System.Drawing.Point(655, 148)
         Me.txtBC_VolumicMassDieselOrHeatingOil.Name = "txtBC_VolumicMassDieselOrHeatingOil"
         Me.txtBC_VolumicMassDieselOrHeatingOil.Size = New System.Drawing.Size(97, 21)
@@ -789,8 +1148,8 @@ Partial Class frmHVACTool
         '
         'lblBC_VolumicMassDieselOrHeatingOil
         '
-        Me.lblBC_VolumicMassDieselOrHeatingOil.AutoSize = true
-        Me.lblBC_VolumicMassDieselOrHeatingOil.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lblBC_VolumicMassDieselOrHeatingOil.AutoSize = True
+        Me.lblBC_VolumicMassDieselOrHeatingOil.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lblBC_VolumicMassDieselOrHeatingOil.ForeColor = System.Drawing.Color.Black
         Me.lblBC_VolumicMassDieselOrHeatingOil.Location = New System.Drawing.Point(448, 151)
         Me.lblBC_VolumicMassDieselOrHeatingOil.Name = "lblBC_VolumicMassDieselOrHeatingOil"
@@ -800,8 +1159,8 @@ Partial Class frmHVACTool
         '
         'lblUnitsBC_GCVDieselOrHeatingOil
         '
-        Me.lblUnitsBC_GCVDieselOrHeatingOil.AutoSize = true
-        Me.lblUnitsBC_GCVDieselOrHeatingOil.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        Me.lblUnitsBC_GCVDieselOrHeatingOil.AutoSize = True
+        Me.lblUnitsBC_GCVDieselOrHeatingOil.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         Me.lblUnitsBC_GCVDieselOrHeatingOil.Location = New System.Drawing.Point(783, 123)
         Me.lblUnitsBC_GCVDieselOrHeatingOil.Name = "lblUnitsBC_GCVDieselOrHeatingOil"
         Me.lblUnitsBC_GCVDieselOrHeatingOil.Size = New System.Drawing.Size(50, 15)
@@ -811,7 +1170,7 @@ Partial Class frmHVACTool
         '
         'txtBC_GCVDieselOrHeatingOil
         '
-        Me.txtBC_GCVDieselOrHeatingOil.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.txtBC_GCVDieselOrHeatingOil.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.txtBC_GCVDieselOrHeatingOil.Location = New System.Drawing.Point(655, 120)
         Me.txtBC_GCVDieselOrHeatingOil.Name = "txtBC_GCVDieselOrHeatingOil"
         Me.txtBC_GCVDieselOrHeatingOil.Size = New System.Drawing.Size(97, 21)
@@ -819,8 +1178,8 @@ Partial Class frmHVACTool
         '
         'lblBC_GCVDieselOrHeatingOil
         '
-        Me.lblBC_GCVDieselOrHeatingOil.AutoSize = true
-        Me.lblBC_GCVDieselOrHeatingOil.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lblBC_GCVDieselOrHeatingOil.AutoSize = True
+        Me.lblBC_GCVDieselOrHeatingOil.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lblBC_GCVDieselOrHeatingOil.ForeColor = System.Drawing.Color.Black
         Me.lblBC_GCVDieselOrHeatingOil.Location = New System.Drawing.Point(448, 123)
         Me.lblBC_GCVDieselOrHeatingOil.Name = "lblBC_GCVDieselOrHeatingOil"
@@ -830,7 +1189,7 @@ Partial Class frmHVACTool
         '
         'txtBC_AuxHeaterEfficiency
         '
-        Me.txtBC_AuxHeaterEfficiency.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.txtBC_AuxHeaterEfficiency.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.txtBC_AuxHeaterEfficiency.Location = New System.Drawing.Point(655, 90)
         Me.txtBC_AuxHeaterEfficiency.Name = "txtBC_AuxHeaterEfficiency"
         Me.txtBC_AuxHeaterEfficiency.Size = New System.Drawing.Size(97, 21)
@@ -838,8 +1197,8 @@ Partial Class frmHVACTool
         '
         'lblBC_AuxHeaterEfficiency
         '
-        Me.lblBC_AuxHeaterEfficiency.AutoSize = true
-        Me.lblBC_AuxHeaterEfficiency.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lblBC_AuxHeaterEfficiency.AutoSize = True
+        Me.lblBC_AuxHeaterEfficiency.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lblBC_AuxHeaterEfficiency.ForeColor = System.Drawing.Color.Black
         Me.lblBC_AuxHeaterEfficiency.Location = New System.Drawing.Point(448, 93)
         Me.lblBC_AuxHeaterEfficiency.Name = "lblBC_AuxHeaterEfficiency"
@@ -849,8 +1208,8 @@ Partial Class frmHVACTool
         '
         'lblUnitsBC_COP
         '
-        Me.lblUnitsBC_COP.AutoSize = true
-        Me.lblUnitsBC_COP.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        Me.lblUnitsBC_COP.AutoSize = True
+        Me.lblUnitsBC_COP.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         Me.lblUnitsBC_COP.Location = New System.Drawing.Point(783, 65)
         Me.lblUnitsBC_COP.Name = "lblUnitsBC_COP"
         Me.lblUnitsBC_COP.Size = New System.Drawing.Size(0, 15)
@@ -858,7 +1217,7 @@ Partial Class frmHVACTool
         '
         'txtBC_COP
         '
-        Me.txtBC_COP.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.txtBC_COP.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.txtBC_COP.Location = New System.Drawing.Point(655, 62)
         Me.txtBC_COP.Name = "txtBC_COP"
         Me.txtBC_COP.Size = New System.Drawing.Size(97, 21)
@@ -866,8 +1225,8 @@ Partial Class frmHVACTool
         '
         'lblBC_COP
         '
-        Me.lblBC_COP.AutoSize = true
-        Me.lblBC_COP.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lblBC_COP.AutoSize = True
+        Me.lblBC_COP.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lblBC_COP.ForeColor = System.Drawing.Color.Black
         Me.lblBC_COP.Location = New System.Drawing.Point(448, 65)
         Me.lblBC_COP.Name = "lblBC_COP"
@@ -877,8 +1236,8 @@ Partial Class frmHVACTool
         '
         'lblUnitsBC_SpecificVentilationPower
         '
-        Me.lblUnitsBC_SpecificVentilationPower.AutoSize = true
-        Me.lblUnitsBC_SpecificVentilationPower.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        Me.lblUnitsBC_SpecificVentilationPower.AutoSize = True
+        Me.lblUnitsBC_SpecificVentilationPower.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         Me.lblUnitsBC_SpecificVentilationPower.Location = New System.Drawing.Point(783, 36)
         Me.lblUnitsBC_SpecificVentilationPower.Name = "lblUnitsBC_SpecificVentilationPower"
         Me.lblUnitsBC_SpecificVentilationPower.Size = New System.Drawing.Size(52, 15)
@@ -888,7 +1247,7 @@ Partial Class frmHVACTool
         '
         'txtBC_SpecificVentilationPower
         '
-        Me.txtBC_SpecificVentilationPower.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.txtBC_SpecificVentilationPower.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.txtBC_SpecificVentilationPower.Location = New System.Drawing.Point(655, 33)
         Me.txtBC_SpecificVentilationPower.Name = "txtBC_SpecificVentilationPower"
         Me.txtBC_SpecificVentilationPower.Size = New System.Drawing.Size(97, 21)
@@ -896,8 +1255,8 @@ Partial Class frmHVACTool
         '
         'lvlBC_SpecificVentilationPower
         '
-        Me.lvlBC_SpecificVentilationPower.AutoSize = true
-        Me.lvlBC_SpecificVentilationPower.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lvlBC_SpecificVentilationPower.AutoSize = True
+        Me.lvlBC_SpecificVentilationPower.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lvlBC_SpecificVentilationPower.ForeColor = System.Drawing.Color.Black
         Me.lvlBC_SpecificVentilationPower.Location = New System.Drawing.Point(448, 36)
         Me.lvlBC_SpecificVentilationPower.Name = "lvlBC_SpecificVentilationPower"
@@ -907,8 +1266,8 @@ Partial Class frmHVACTool
         '
         'lblUnitsBC_LowVentPowerW
         '
-        Me.lblUnitsBC_LowVentPowerW.AutoSize = true
-        Me.lblUnitsBC_LowVentPowerW.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        Me.lblUnitsBC_LowVentPowerW.AutoSize = True
+        Me.lblUnitsBC_LowVentPowerW.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         Me.lblUnitsBC_LowVentPowerW.Location = New System.Drawing.Point(349, 487)
         Me.lblUnitsBC_LowVentPowerW.Name = "lblUnitsBC_LowVentPowerW"
         Me.lblUnitsBC_LowVentPowerW.Size = New System.Drawing.Size(18, 15)
@@ -918,17 +1277,17 @@ Partial Class frmHVACTool
         '
         'txtBC_LowVentPowerW
         '
-        Me.txtBC_LowVentPowerW.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.txtBC_LowVentPowerW.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.txtBC_LowVentPowerW.Location = New System.Drawing.Point(218, 484)
         Me.txtBC_LowVentPowerW.Name = "txtBC_LowVentPowerW"
-        Me.txtBC_LowVentPowerW.ReadOnly = true
+        Me.txtBC_LowVentPowerW.ReadOnly = True
         Me.txtBC_LowVentPowerW.Size = New System.Drawing.Size(97, 21)
         Me.txtBC_LowVentPowerW.TabIndex = 48
         '
         'lblBC_LowVentPowerW
         '
-        Me.lblBC_LowVentPowerW.AutoSize = true
-        Me.lblBC_LowVentPowerW.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lblBC_LowVentPowerW.AutoSize = True
+        Me.lblBC_LowVentPowerW.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lblBC_LowVentPowerW.ForeColor = System.Drawing.Color.Black
         Me.lblBC_LowVentPowerW.Location = New System.Drawing.Point(14, 487)
         Me.lblBC_LowVentPowerW.Name = "lblBC_LowVentPowerW"
@@ -938,8 +1297,8 @@ Partial Class frmHVACTool
         '
         'lblUnitsBC_HighVentPowerW
         '
-        Me.lblUnitsBC_HighVentPowerW.AutoSize = true
-        Me.lblUnitsBC_HighVentPowerW.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        Me.lblUnitsBC_HighVentPowerW.AutoSize = True
+        Me.lblUnitsBC_HighVentPowerW.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         Me.lblUnitsBC_HighVentPowerW.Location = New System.Drawing.Point(349, 459)
         Me.lblUnitsBC_HighVentPowerW.Name = "lblUnitsBC_HighVentPowerW"
         Me.lblUnitsBC_HighVentPowerW.Size = New System.Drawing.Size(18, 15)
@@ -949,17 +1308,17 @@ Partial Class frmHVACTool
         '
         'txtBC_HighVentPowerW
         '
-        Me.txtBC_HighVentPowerW.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.txtBC_HighVentPowerW.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.txtBC_HighVentPowerW.Location = New System.Drawing.Point(218, 456)
         Me.txtBC_HighVentPowerW.Name = "txtBC_HighVentPowerW"
-        Me.txtBC_HighVentPowerW.ReadOnly = true
+        Me.txtBC_HighVentPowerW.ReadOnly = True
         Me.txtBC_HighVentPowerW.Size = New System.Drawing.Size(97, 21)
         Me.txtBC_HighVentPowerW.TabIndex = 45
         '
         'lblBC_HighVentPowerW
         '
-        Me.lblBC_HighVentPowerW.AutoSize = true
-        Me.lblBC_HighVentPowerW.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lblBC_HighVentPowerW.AutoSize = True
+        Me.lblBC_HighVentPowerW.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lblBC_HighVentPowerW.ForeColor = System.Drawing.Color.Black
         Me.lblBC_HighVentPowerW.Location = New System.Drawing.Point(14, 459)
         Me.lblBC_HighVentPowerW.Name = "lblBC_HighVentPowerW"
@@ -969,8 +1328,8 @@ Partial Class frmHVACTool
         '
         'lblUnitsBC_Low
         '
-        Me.lblUnitsBC_Low.AutoSize = true
-        Me.lblUnitsBC_Low.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        Me.lblUnitsBC_Low.AutoSize = True
+        Me.lblUnitsBC_Low.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         Me.lblUnitsBC_Low.Location = New System.Drawing.Point(349, 430)
         Me.lblUnitsBC_Low.Name = "lblUnitsBC_Low"
         Me.lblUnitsBC_Low.Size = New System.Drawing.Size(43, 15)
@@ -980,17 +1339,17 @@ Partial Class frmHVACTool
         '
         'txtBC_Low
         '
-        Me.txtBC_Low.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.txtBC_Low.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.txtBC_Low.Location = New System.Drawing.Point(218, 427)
         Me.txtBC_Low.Name = "txtBC_Low"
-        Me.txtBC_Low.ReadOnly = true
+        Me.txtBC_Low.ReadOnly = True
         Me.txtBC_Low.Size = New System.Drawing.Size(97, 21)
         Me.txtBC_Low.TabIndex = 42
         '
         'lblBC_Low
         '
-        Me.lblBC_Low.AutoSize = true
-        Me.lblBC_Low.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lblBC_Low.AutoSize = True
+        Me.lblBC_Low.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lblBC_Low.ForeColor = System.Drawing.Color.Black
         Me.lblBC_Low.Location = New System.Drawing.Point(14, 430)
         Me.lblBC_Low.Name = "lblBC_Low"
@@ -1000,8 +1359,8 @@ Partial Class frmHVACTool
         '
         'lblUnitsBC_High
         '
-        Me.lblUnitsBC_High.AutoSize = true
-        Me.lblUnitsBC_High.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        Me.lblUnitsBC_High.AutoSize = True
+        Me.lblUnitsBC_High.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         Me.lblUnitsBC_High.Location = New System.Drawing.Point(349, 401)
         Me.lblUnitsBC_High.Name = "lblUnitsBC_High"
         Me.lblUnitsBC_High.Size = New System.Drawing.Size(43, 15)
@@ -1011,17 +1370,17 @@ Partial Class frmHVACTool
         '
         'txtBC_High
         '
-        Me.txtBC_High.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.txtBC_High.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.txtBC_High.Location = New System.Drawing.Point(218, 398)
         Me.txtBC_High.Name = "txtBC_High"
-        Me.txtBC_High.ReadOnly = true
+        Me.txtBC_High.ReadOnly = True
         Me.txtBC_High.Size = New System.Drawing.Size(97, 21)
         Me.txtBC_High.TabIndex = 39
         '
         'lblBC_High
         '
-        Me.lblBC_High.AutoSize = true
-        Me.lblBC_High.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lblBC_High.AutoSize = True
+        Me.lblBC_High.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lblBC_High.ForeColor = System.Drawing.Color.Black
         Me.lblBC_High.Location = New System.Drawing.Point(14, 401)
         Me.lblBC_High.Name = "lblBC_High"
@@ -1031,8 +1390,8 @@ Partial Class frmHVACTool
         '
         'lblUnitsBC_lowVentilation
         '
-        Me.lblUnitsBC_lowVentilation.AutoSize = true
-        Me.lblUnitsBC_lowVentilation.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        Me.lblUnitsBC_lowVentilation.AutoSize = True
+        Me.lblUnitsBC_lowVentilation.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         Me.lblUnitsBC_lowVentilation.Location = New System.Drawing.Point(349, 373)
         Me.lblUnitsBC_lowVentilation.Name = "lblUnitsBC_lowVentilation"
         Me.lblUnitsBC_lowVentilation.Size = New System.Drawing.Size(22, 15)
@@ -1042,7 +1401,7 @@ Partial Class frmHVACTool
         '
         'txtBC_lowVentilation
         '
-        Me.txtBC_lowVentilation.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.txtBC_lowVentilation.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.txtBC_lowVentilation.Location = New System.Drawing.Point(218, 370)
         Me.txtBC_lowVentilation.Name = "txtBC_lowVentilation"
         Me.txtBC_lowVentilation.Size = New System.Drawing.Size(97, 21)
@@ -1050,8 +1409,8 @@ Partial Class frmHVACTool
         '
         'lblBC_lowVentilation
         '
-        Me.lblBC_lowVentilation.AutoSize = true
-        Me.lblBC_lowVentilation.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lblBC_lowVentilation.AutoSize = True
+        Me.lblBC_lowVentilation.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lblBC_lowVentilation.ForeColor = System.Drawing.Color.Black
         Me.lblBC_lowVentilation.Location = New System.Drawing.Point(14, 373)
         Me.lblBC_lowVentilation.Name = "lblBC_lowVentilation"
@@ -1061,8 +1420,8 @@ Partial Class frmHVACTool
         '
         'lblUnitsBC_HighVentilation
         '
-        Me.lblUnitsBC_HighVentilation.AutoSize = true
-        Me.lblUnitsBC_HighVentilation.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        Me.lblUnitsBC_HighVentilation.AutoSize = True
+        Me.lblUnitsBC_HighVentilation.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         Me.lblUnitsBC_HighVentilation.Location = New System.Drawing.Point(349, 346)
         Me.lblUnitsBC_HighVentilation.Name = "lblUnitsBC_HighVentilation"
         Me.lblUnitsBC_HighVentilation.Size = New System.Drawing.Size(22, 15)
@@ -1072,7 +1431,7 @@ Partial Class frmHVACTool
         '
         'txtBC_HighVentilation
         '
-        Me.txtBC_HighVentilation.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.txtBC_HighVentilation.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.txtBC_HighVentilation.Location = New System.Drawing.Point(218, 343)
         Me.txtBC_HighVentilation.Name = "txtBC_HighVentilation"
         Me.txtBC_HighVentilation.Size = New System.Drawing.Size(97, 21)
@@ -1080,8 +1439,8 @@ Partial Class frmHVACTool
         '
         'lblBC_HighVentilation
         '
-        Me.lblBC_HighVentilation.AutoSize = true
-        Me.lblBC_HighVentilation.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lblBC_HighVentilation.AutoSize = True
+        Me.lblBC_HighVentilation.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lblBC_HighVentilation.ForeColor = System.Drawing.Color.Black
         Me.lblBC_HighVentilation.Location = New System.Drawing.Point(14, 346)
         Me.lblBC_HighVentilation.Name = "lblBC_HighVentilation"
@@ -1091,8 +1450,8 @@ Partial Class frmHVACTool
         '
         'lblUnitsBC_CoolingBoundaryTemperature
         '
-        Me.lblUnitsBC_CoolingBoundaryTemperature.AutoSize = true
-        Me.lblUnitsBC_CoolingBoundaryTemperature.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        Me.lblUnitsBC_CoolingBoundaryTemperature.AutoSize = True
+        Me.lblUnitsBC_CoolingBoundaryTemperature.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         Me.lblUnitsBC_CoolingBoundaryTemperature.Location = New System.Drawing.Point(349, 317)
         Me.lblUnitsBC_CoolingBoundaryTemperature.Name = "lblUnitsBC_CoolingBoundaryTemperature"
         Me.lblUnitsBC_CoolingBoundaryTemperature.Size = New System.Drawing.Size(22, 15)
@@ -1102,7 +1461,7 @@ Partial Class frmHVACTool
         '
         'txtBC_CoolingBoundaryTemperature
         '
-        Me.txtBC_CoolingBoundaryTemperature.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.txtBC_CoolingBoundaryTemperature.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.txtBC_CoolingBoundaryTemperature.Location = New System.Drawing.Point(218, 314)
         Me.txtBC_CoolingBoundaryTemperature.Name = "txtBC_CoolingBoundaryTemperature"
         Me.txtBC_CoolingBoundaryTemperature.Size = New System.Drawing.Size(97, 21)
@@ -1110,8 +1469,8 @@ Partial Class frmHVACTool
         '
         'lblBC_CoolingBoundaryTemperature
         '
-        Me.lblBC_CoolingBoundaryTemperature.AutoSize = true
-        Me.lblBC_CoolingBoundaryTemperature.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lblBC_CoolingBoundaryTemperature.AutoSize = True
+        Me.lblBC_CoolingBoundaryTemperature.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lblBC_CoolingBoundaryTemperature.ForeColor = System.Drawing.Color.Black
         Me.lblBC_CoolingBoundaryTemperature.Location = New System.Drawing.Point(14, 317)
         Me.lblBC_CoolingBoundaryTemperature.Name = "lblBC_CoolingBoundaryTemperature"
@@ -1121,8 +1480,8 @@ Partial Class frmHVACTool
         '
         'lblUnitsBC_HeatingBoundaryTemperature
         '
-        Me.lblUnitsBC_HeatingBoundaryTemperature.AutoSize = true
-        Me.lblUnitsBC_HeatingBoundaryTemperature.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        Me.lblUnitsBC_HeatingBoundaryTemperature.AutoSize = True
+        Me.lblUnitsBC_HeatingBoundaryTemperature.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         Me.lblUnitsBC_HeatingBoundaryTemperature.Location = New System.Drawing.Point(349, 289)
         Me.lblUnitsBC_HeatingBoundaryTemperature.Name = "lblUnitsBC_HeatingBoundaryTemperature"
         Me.lblUnitsBC_HeatingBoundaryTemperature.Size = New System.Drawing.Size(22, 15)
@@ -1132,7 +1491,7 @@ Partial Class frmHVACTool
         '
         'txtBC_HeatingBoundaryTemperature
         '
-        Me.txtBC_HeatingBoundaryTemperature.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.txtBC_HeatingBoundaryTemperature.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.txtBC_HeatingBoundaryTemperature.Location = New System.Drawing.Point(218, 286)
         Me.txtBC_HeatingBoundaryTemperature.Name = "txtBC_HeatingBoundaryTemperature"
         Me.txtBC_HeatingBoundaryTemperature.Size = New System.Drawing.Size(97, 21)
@@ -1140,8 +1499,8 @@ Partial Class frmHVACTool
         '
         'lblBC_HeatingBoundaryTemperature
         '
-        Me.lblBC_HeatingBoundaryTemperature.AutoSize = true
-        Me.lblBC_HeatingBoundaryTemperature.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lblBC_HeatingBoundaryTemperature.AutoSize = True
+        Me.lblBC_HeatingBoundaryTemperature.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lblBC_HeatingBoundaryTemperature.ForeColor = System.Drawing.Color.Black
         Me.lblBC_HeatingBoundaryTemperature.Location = New System.Drawing.Point(14, 289)
         Me.lblBC_HeatingBoundaryTemperature.Name = "lblBC_HeatingBoundaryTemperature"
@@ -1151,7 +1510,7 @@ Partial Class frmHVACTool
         '
         'txtBC_GFactor
         '
-        Me.txtBC_GFactor.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.txtBC_GFactor.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.txtBC_GFactor.Location = New System.Drawing.Point(220, 30)
         Me.txtBC_GFactor.Name = "txtBC_GFactor"
         Me.txtBC_GFactor.Size = New System.Drawing.Size(97, 21)
@@ -1159,8 +1518,8 @@ Partial Class frmHVACTool
         '
         'lblGFactor
         '
-        Me.lblGFactor.AutoSize = true
-        Me.lblGFactor.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lblGFactor.AutoSize = True
+        Me.lblGFactor.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lblGFactor.ForeColor = System.Drawing.Color.Black
         Me.lblGFactor.Location = New System.Drawing.Point(14, 33)
         Me.lblGFactor.Name = "lblGFactor"
@@ -1170,17 +1529,17 @@ Partial Class frmHVACTool
         '
         'txtBC_HeatPerPassengerIntoCabinW
         '
-        Me.txtBC_HeatPerPassengerIntoCabinW.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.txtBC_HeatPerPassengerIntoCabinW.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.txtBC_HeatPerPassengerIntoCabinW.Location = New System.Drawing.Point(218, 90)
         Me.txtBC_HeatPerPassengerIntoCabinW.Name = "txtBC_HeatPerPassengerIntoCabinW"
-        Me.txtBC_HeatPerPassengerIntoCabinW.ReadOnly = true
+        Me.txtBC_HeatPerPassengerIntoCabinW.ReadOnly = True
         Me.txtBC_HeatPerPassengerIntoCabinW.Size = New System.Drawing.Size(97, 21)
         Me.txtBC_HeatPerPassengerIntoCabinW.TabIndex = 23
         '
         'Label2
         '
-        Me.Label2.AutoSize = true
-        Me.Label2.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.Label2.AutoSize = True
+        Me.Label2.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.Label2.ForeColor = System.Drawing.Color.Black
         Me.Label2.Location = New System.Drawing.Point(14, 88)
         Me.Label2.Name = "Label2"
@@ -1190,8 +1549,8 @@ Partial Class frmHVACTool
         '
         'lblUnitsUValues
         '
-        Me.lblUnitsUValues.AutoSize = true
-        Me.lblUnitsUValues.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        Me.lblUnitsUValues.AutoSize = True
+        Me.lblUnitsUValues.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         Me.lblUnitsUValues.Location = New System.Drawing.Point(349, 261)
         Me.lblUnitsUValues.Name = "lblUnitsUValues"
         Me.lblUnitsUValues.Size = New System.Drawing.Size(66, 15)
@@ -1201,8 +1560,8 @@ Partial Class frmHVACTool
         '
         'lblUnitsPassengerBoundaryTemp
         '
-        Me.lblUnitsPassengerBoundaryTemp.AutoSize = true
-        Me.lblUnitsPassengerBoundaryTemp.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        Me.lblUnitsPassengerBoundaryTemp.AutoSize = True
+        Me.lblUnitsPassengerBoundaryTemp.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         Me.lblUnitsPassengerBoundaryTemp.Location = New System.Drawing.Point(349, 123)
         Me.lblUnitsPassengerBoundaryTemp.Name = "lblUnitsPassengerBoundaryTemp"
         Me.lblUnitsPassengerBoundaryTemp.Size = New System.Drawing.Size(22, 15)
@@ -1212,8 +1571,8 @@ Partial Class frmHVACTool
         '
         'lblUnitsPGRDensitySemiLowFloor
         '
-        Me.lblUnitsPGRDensitySemiLowFloor.AutoSize = true
-        Me.lblUnitsPGRDensitySemiLowFloor.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        Me.lblUnitsPGRDensitySemiLowFloor.AutoSize = True
+        Me.lblUnitsPGRDensitySemiLowFloor.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         Me.lblUnitsPGRDensitySemiLowFloor.Location = New System.Drawing.Point(349, 175)
         Me.lblUnitsPGRDensitySemiLowFloor.Name = "lblUnitsPGRDensitySemiLowFloor"
         Me.lblUnitsPGRDensitySemiLowFloor.Size = New System.Drawing.Size(61, 15)
@@ -1223,8 +1582,8 @@ Partial Class frmHVACTool
         '
         'lblUnitsPassenderDensityLowFloor
         '
-        Me.lblUnitsPassenderDensityLowFloor.AutoSize = true
-        Me.lblUnitsPassenderDensityLowFloor.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        Me.lblUnitsPassenderDensityLowFloor.AutoSize = True
+        Me.lblUnitsPassenderDensityLowFloor.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         Me.lblUnitsPassenderDensityLowFloor.Location = New System.Drawing.Point(349, 148)
         Me.lblUnitsPassenderDensityLowFloor.Name = "lblUnitsPassenderDensityLowFloor"
         Me.lblUnitsPassenderDensityLowFloor.Size = New System.Drawing.Size(61, 15)
@@ -1234,8 +1593,8 @@ Partial Class frmHVACTool
         '
         'lblUnitsBC_PassengerDensityRaisedFloor
         '
-        Me.lblUnitsBC_PassengerDensityRaisedFloor.AutoSize = true
-        Me.lblUnitsBC_PassengerDensityRaisedFloor.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        Me.lblUnitsBC_PassengerDensityRaisedFloor.AutoSize = True
+        Me.lblUnitsBC_PassengerDensityRaisedFloor.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         Me.lblUnitsBC_PassengerDensityRaisedFloor.Location = New System.Drawing.Point(349, 206)
         Me.lblUnitsBC_PassengerDensityRaisedFloor.Name = "lblUnitsBC_PassengerDensityRaisedFloor"
         Me.lblUnitsBC_PassengerDensityRaisedFloor.Size = New System.Drawing.Size(61, 15)
@@ -1245,8 +1604,8 @@ Partial Class frmHVACTool
         '
         'lblHeatPerPassengerIntoCabinW
         '
-        Me.lblHeatPerPassengerIntoCabinW.AutoSize = true
-        Me.lblHeatPerPassengerIntoCabinW.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        Me.lblHeatPerPassengerIntoCabinW.AutoSize = True
+        Me.lblHeatPerPassengerIntoCabinW.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         Me.lblHeatPerPassengerIntoCabinW.Location = New System.Drawing.Point(349, 93)
         Me.lblHeatPerPassengerIntoCabinW.Name = "lblHeatPerPassengerIntoCabinW"
         Me.lblHeatPerPassengerIntoCabinW.Size = New System.Drawing.Size(18, 15)
@@ -1256,25 +1615,25 @@ Partial Class frmHVACTool
         '
         'txtBC_UValues
         '
-        Me.txtBC_UValues.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.txtBC_UValues.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.txtBC_UValues.Location = New System.Drawing.Point(218, 258)
         Me.txtBC_UValues.Name = "txtBC_UValues"
-        Me.txtBC_UValues.ReadOnly = true
+        Me.txtBC_UValues.ReadOnly = True
         Me.txtBC_UValues.Size = New System.Drawing.Size(97, 21)
         Me.txtBC_UValues.TabIndex = 15
         '
         'txtBC_CalculatedPassengerNumber
         '
-        Me.txtBC_CalculatedPassengerNumber.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.txtBC_CalculatedPassengerNumber.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.txtBC_CalculatedPassengerNumber.Location = New System.Drawing.Point(218, 229)
         Me.txtBC_CalculatedPassengerNumber.Name = "txtBC_CalculatedPassengerNumber"
-        Me.txtBC_CalculatedPassengerNumber.ReadOnly = true
+        Me.txtBC_CalculatedPassengerNumber.ReadOnly = True
         Me.txtBC_CalculatedPassengerNumber.Size = New System.Drawing.Size(97, 21)
         Me.txtBC_CalculatedPassengerNumber.TabIndex = 14
         '
         'txtBC_PassengerDensityRaisedFloor
         '
-        Me.txtBC_PassengerDensityRaisedFloor.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.txtBC_PassengerDensityRaisedFloor.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.txtBC_PassengerDensityRaisedFloor.Location = New System.Drawing.Point(218, 202)
         Me.txtBC_PassengerDensityRaisedFloor.Name = "txtBC_PassengerDensityRaisedFloor"
         Me.txtBC_PassengerDensityRaisedFloor.Size = New System.Drawing.Size(97, 21)
@@ -1282,8 +1641,8 @@ Partial Class frmHVACTool
         '
         'lblBC_PassengerDensityRaisedFloor
         '
-        Me.lblBC_PassengerDensityRaisedFloor.AutoSize = true
-        Me.lblBC_PassengerDensityRaisedFloor.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lblBC_PassengerDensityRaisedFloor.AutoSize = True
+        Me.lblBC_PassengerDensityRaisedFloor.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lblBC_PassengerDensityRaisedFloor.ForeColor = System.Drawing.Color.Black
         Me.lblBC_PassengerDensityRaisedFloor.Location = New System.Drawing.Point(14, 205)
         Me.lblBC_PassengerDensityRaisedFloor.Name = "lblBC_PassengerDensityRaisedFloor"
@@ -1293,8 +1652,8 @@ Partial Class frmHVACTool
         '
         'lblBC_CalculatedPassengerNumber
         '
-        Me.lblBC_CalculatedPassengerNumber.AutoSize = true
-        Me.lblBC_CalculatedPassengerNumber.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lblBC_CalculatedPassengerNumber.AutoSize = True
+        Me.lblBC_CalculatedPassengerNumber.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lblBC_CalculatedPassengerNumber.ForeColor = System.Drawing.Color.Black
         Me.lblBC_CalculatedPassengerNumber.Location = New System.Drawing.Point(14, 232)
         Me.lblBC_CalculatedPassengerNumber.Name = "lblBC_CalculatedPassengerNumber"
@@ -1304,8 +1663,8 @@ Partial Class frmHVACTool
         '
         'lblBC_UValues
         '
-        Me.lblBC_UValues.AutoSize = true
-        Me.lblBC_UValues.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lblBC_UValues.AutoSize = True
+        Me.lblBC_UValues.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lblBC_UValues.ForeColor = System.Drawing.Color.Black
         Me.lblBC_UValues.Location = New System.Drawing.Point(14, 261)
         Me.lblBC_UValues.Name = "lblBC_UValues"
@@ -1315,7 +1674,7 @@ Partial Class frmHVACTool
         '
         'txtBC_PassengerDensitySemiLowFloor
         '
-        Me.txtBC_PassengerDensitySemiLowFloor.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.txtBC_PassengerDensitySemiLowFloor.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.txtBC_PassengerDensitySemiLowFloor.Location = New System.Drawing.Point(218, 173)
         Me.txtBC_PassengerDensitySemiLowFloor.Name = "txtBC_PassengerDensitySemiLowFloor"
         Me.txtBC_PassengerDensitySemiLowFloor.Size = New System.Drawing.Size(97, 21)
@@ -1323,8 +1682,8 @@ Partial Class frmHVACTool
         '
         'lblBC_PassengerDensitySemiLowFloor
         '
-        Me.lblBC_PassengerDensitySemiLowFloor.AutoSize = true
-        Me.lblBC_PassengerDensitySemiLowFloor.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lblBC_PassengerDensitySemiLowFloor.AutoSize = True
+        Me.lblBC_PassengerDensitySemiLowFloor.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lblBC_PassengerDensitySemiLowFloor.ForeColor = System.Drawing.Color.Black
         Me.lblBC_PassengerDensitySemiLowFloor.Location = New System.Drawing.Point(14, 176)
         Me.lblBC_PassengerDensitySemiLowFloor.Name = "lblBC_PassengerDensitySemiLowFloor"
@@ -1334,7 +1693,7 @@ Partial Class frmHVACTool
         '
         'txtBC_PassengerDensityLowFloor
         '
-        Me.txtBC_PassengerDensityLowFloor.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.txtBC_PassengerDensityLowFloor.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.txtBC_PassengerDensityLowFloor.Location = New System.Drawing.Point(218, 145)
         Me.txtBC_PassengerDensityLowFloor.Name = "txtBC_PassengerDensityLowFloor"
         Me.txtBC_PassengerDensityLowFloor.Size = New System.Drawing.Size(97, 21)
@@ -1342,8 +1701,8 @@ Partial Class frmHVACTool
         '
         'Label13
         '
-        Me.Label13.AutoSize = true
-        Me.Label13.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.Label13.AutoSize = True
+        Me.Label13.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.Label13.ForeColor = System.Drawing.Color.Black
         Me.Label13.Location = New System.Drawing.Point(14, 148)
         Me.Label13.Name = "Label13"
@@ -1353,7 +1712,7 @@ Partial Class frmHVACTool
         '
         'txtBC_PassengerBoundaryTemperature
         '
-        Me.txtBC_PassengerBoundaryTemperature.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.txtBC_PassengerBoundaryTemperature.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.txtBC_PassengerBoundaryTemperature.Location = New System.Drawing.Point(218, 117)
         Me.txtBC_PassengerBoundaryTemperature.Name = "txtBC_PassengerBoundaryTemperature"
         Me.txtBC_PassengerBoundaryTemperature.Size = New System.Drawing.Size(97, 21)
@@ -1361,8 +1720,8 @@ Partial Class frmHVACTool
         '
         'lblPassengerBoundaryTemp
         '
-        Me.lblPassengerBoundaryTemp.AutoSize = true
-        Me.lblPassengerBoundaryTemp.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lblPassengerBoundaryTemp.AutoSize = True
+        Me.lblPassengerBoundaryTemp.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lblPassengerBoundaryTemp.ForeColor = System.Drawing.Color.Black
         Me.lblPassengerBoundaryTemp.Location = New System.Drawing.Point(14, 120)
         Me.lblPassengerBoundaryTemp.Name = "lblPassengerBoundaryTemp"
@@ -1372,17 +1731,17 @@ Partial Class frmHVACTool
         '
         'txtBC_SolarClouding
         '
-        Me.txtBC_SolarClouding.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.txtBC_SolarClouding.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.txtBC_SolarClouding.Location = New System.Drawing.Point(218, 59)
         Me.txtBC_SolarClouding.Name = "txtBC_SolarClouding"
-        Me.txtBC_SolarClouding.ReadOnly = true
+        Me.txtBC_SolarClouding.ReadOnly = True
         Me.txtBC_SolarClouding.Size = New System.Drawing.Size(97, 21)
         Me.txtBC_SolarClouding.TabIndex = 1
         '
         'lblSolarClouding
         '
-        Me.lblSolarClouding.AutoSize = true
-        Me.lblSolarClouding.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lblSolarClouding.AutoSize = True
+        Me.lblSolarClouding.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lblSolarClouding.ForeColor = System.Drawing.Color.Black
         Me.lblSolarClouding.Location = New System.Drawing.Point(14, 62)
         Me.lblSolarClouding.Name = "lblSolarClouding"
@@ -1392,91 +1751,200 @@ Partial Class frmHVACTool
         '
         'tabGeneralInputsOther
         '
+        Me.tabGeneralInputsOther.Controls.Add(Me.grpEnvironmentConditions)
         Me.tabGeneralInputsOther.Controls.Add(Me.grpAuxHeater)
         Me.tabGeneralInputsOther.Controls.Add(Me.grpVentilation)
         Me.tabGeneralInputsOther.Controls.Add(Me.grpACSystem)
-        Me.tabGeneralInputsOther.Controls.Add(Me.grpEnvironmentConditions)
         Me.tabGeneralInputsOther.Location = New System.Drawing.Point(4, 22)
         Me.tabGeneralInputsOther.Name = "tabGeneralInputsOther"
         Me.tabGeneralInputsOther.Size = New System.Drawing.Size(937, 611)
         Me.tabGeneralInputsOther.TabIndex = 3
         Me.tabGeneralInputsOther.Text = " INP - Other "
-        Me.tabGeneralInputsOther.UseVisualStyleBackColor = true
+        Me.tabGeneralInputsOther.UseVisualStyleBackColor = True
+        '
+        'grpEnvironmentConditions
+        '
+        Me.grpEnvironmentConditions.BackColor = System.Drawing.Color.Transparent
+        Me.grpEnvironmentConditions.Controls.Add(Me.btnOpenAenv)
+        Me.grpEnvironmentConditions.Controls.Add(Me.btnEnvironmentConditionsSource)
+        Me.grpEnvironmentConditions.Controls.Add(Me.txtEC_EnvironmentConditionsFilePath)
+        Me.grpEnvironmentConditions.Controls.Add(Me.Label20)
+        Me.grpEnvironmentConditions.Controls.Add(Me.chkEC_BatchMode)
+        Me.grpEnvironmentConditions.Controls.Add(Me.Label23)
+        Me.grpEnvironmentConditions.Controls.Add(Me.txtEC_EnviromentalTemperature)
+        Me.grpEnvironmentConditions.Controls.Add(Me.lbltxtEC_EnviromentalTemperature)
+        Me.grpEnvironmentConditions.Controls.Add(Me.txtEC_Solar)
+        Me.grpEnvironmentConditions.Controls.Add(Me.lbltxtEC_Solar)
+        Me.grpEnvironmentConditions.Controls.Add(Me.lblUnitstxtEC_EnviromentalTemperature)
+        Me.grpEnvironmentConditions.Controls.Add(Me.lblUnitstxtEC_Solar)
+        Me.grpEnvironmentConditions.FlatStyle = System.Windows.Forms.FlatStyle.Popup
+        Me.grpEnvironmentConditions.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!)
+        Me.grpEnvironmentConditions.ForeColor = System.Drawing.SystemColors.MenuHighlight
+        Me.grpEnvironmentConditions.Location = New System.Drawing.Point(34, 36)
+        Me.grpEnvironmentConditions.Name = "grpEnvironmentConditions"
+        Me.grpEnvironmentConditions.Size = New System.Drawing.Size(868, 158)
+        Me.grpEnvironmentConditions.TabIndex = 33
+        Me.grpEnvironmentConditions.TabStop = False
+        Me.grpEnvironmentConditions.Text = "Environmental Conditions"
+        '
+        'btnOpenAenv
+        '
+        Me.btnOpenAenv.Image = CType(resources.GetObject("btnOpenAenv.Image"), System.Drawing.Image)
+        Me.btnOpenAenv.Location = New System.Drawing.Point(783, 126)
+        Me.btnOpenAenv.Name = "btnOpenAenv"
+        Me.btnOpenAenv.Size = New System.Drawing.Size(28, 20)
+        Me.btnOpenAenv.TabIndex = 62
+        Me.btnOpenAenv.UseVisualStyleBackColor = True
+        '
+        'btnEnvironmentConditionsSource
+        '
+        Me.btnEnvironmentConditionsSource.Location = New System.Drawing.Point(721, 123)
+        Me.btnEnvironmentConditionsSource.Name = "btnEnvironmentConditionsSource"
+        Me.btnEnvironmentConditionsSource.Size = New System.Drawing.Size(45, 23)
+        Me.btnEnvironmentConditionsSource.TabIndex = 61
+        Me.btnEnvironmentConditionsSource.Text = ". . ."
+        Me.btnEnvironmentConditionsSource.UseVisualStyleBackColor = True
+        '
+        'txtEC_EnvironmentConditionsFilePath
+        '
+        Me.txtEC_EnvironmentConditionsFilePath.Location = New System.Drawing.Point(216, 123)
+        Me.txtEC_EnvironmentConditionsFilePath.Name = "txtEC_EnvironmentConditionsFilePath"
+        Me.txtEC_EnvironmentConditionsFilePath.Size = New System.Drawing.Size(487, 23)
+        Me.txtEC_EnvironmentConditionsFilePath.TabIndex = 60
+        '
+        'Label20
+        '
+        Me.Label20.AutoSize = True
+        Me.Label20.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
+        Me.Label20.ForeColor = System.Drawing.Color.Black
+        Me.Label20.Location = New System.Drawing.Point(14, 126)
+        Me.Label20.Name = "Label20"
+        Me.Label20.Size = New System.Drawing.Size(174, 15)
+        Me.Label20.TabIndex = 28
+        Me.Label20.Text = "Enviromental Batch Conditions"
+        '
+        'chkEC_BatchMode
+        '
+        Me.chkEC_BatchMode.AutoSize = True
+        Me.chkEC_BatchMode.Location = New System.Drawing.Point(216, 91)
+        Me.chkEC_BatchMode.Name = "chkEC_BatchMode"
+        Me.chkEC_BatchMode.Size = New System.Drawing.Size(31, 21)
+        Me.chkEC_BatchMode.TabIndex = 27
+        Me.chkEC_BatchMode.Text = " "
+        Me.chkEC_BatchMode.UseVisualStyleBackColor = True
+        '
+        'Label23
+        '
+        Me.Label23.AutoSize = True
+        Me.Label23.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
+        Me.Label23.ForeColor = System.Drawing.Color.Black
+        Me.Label23.Location = New System.Drawing.Point(14, 97)
+        Me.Label23.Name = "Label23"
+        Me.Label23.Size = New System.Drawing.Size(73, 15)
+        Me.Label23.TabIndex = 27
+        Me.Label23.Text = "Batch Mode"
+        '
+        'txtEC_EnviromentalTemperature
+        '
+        Me.txtEC_EnviromentalTemperature.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
+        Me.txtEC_EnviromentalTemperature.Location = New System.Drawing.Point(215, 34)
+        Me.txtEC_EnviromentalTemperature.Name = "txtEC_EnviromentalTemperature"
+        Me.txtEC_EnviromentalTemperature.Size = New System.Drawing.Size(101, 21)
+        Me.txtEC_EnviromentalTemperature.TabIndex = 25
+        '
+        'lbltxtEC_EnviromentalTemperature
+        '
+        Me.lbltxtEC_EnviromentalTemperature.AutoSize = True
+        Me.lbltxtEC_EnviromentalTemperature.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
+        Me.lbltxtEC_EnviromentalTemperature.ForeColor = System.Drawing.Color.Black
+        Me.lbltxtEC_EnviromentalTemperature.Location = New System.Drawing.Point(13, 37)
+        Me.lbltxtEC_EnviromentalTemperature.Name = "lbltxtEC_EnviromentalTemperature"
+        Me.lbltxtEC_EnviromentalTemperature.Size = New System.Drawing.Size(153, 15)
+        Me.lbltxtEC_EnviromentalTemperature.TabIndex = 24
+        Me.lbltxtEC_EnviromentalTemperature.Text = "Enviromental Temperature"
+        '
+        'txtEC_Solar
+        '
+        Me.txtEC_Solar.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
+        Me.txtEC_Solar.Location = New System.Drawing.Point(215, 63)
+        Me.txtEC_Solar.Name = "txtEC_Solar"
+        Me.txtEC_Solar.Size = New System.Drawing.Size(101, 21)
+        Me.txtEC_Solar.TabIndex = 1
+        '
+        'lbltxtEC_Solar
+        '
+        Me.lbltxtEC_Solar.AutoSize = True
+        Me.lbltxtEC_Solar.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
+        Me.lbltxtEC_Solar.ForeColor = System.Drawing.Color.Black
+        Me.lbltxtEC_Solar.Location = New System.Drawing.Point(13, 66)
+        Me.lbltxtEC_Solar.Name = "lbltxtEC_Solar"
+        Me.lbltxtEC_Solar.Size = New System.Drawing.Size(36, 15)
+        Me.lbltxtEC_Solar.TabIndex = 0
+        Me.lbltxtEC_Solar.Text = "Solar"
+        '
+        'lblUnitstxtEC_EnviromentalTemperature
+        '
+        Me.lblUnitstxtEC_EnviromentalTemperature.AutoSize = True
+        Me.lblUnitstxtEC_EnviromentalTemperature.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+        Me.lblUnitstxtEC_EnviromentalTemperature.Location = New System.Drawing.Point(347, 37)
+        Me.lblUnitstxtEC_EnviromentalTemperature.Name = "lblUnitstxtEC_EnviromentalTemperature"
+        Me.lblUnitstxtEC_EnviromentalTemperature.Size = New System.Drawing.Size(22, 15)
+        Me.lblUnitstxtEC_EnviromentalTemperature.TabIndex = 16
+        Me.lblUnitstxtEC_EnviromentalTemperature.Text = "oC"
+        Me.ToolTip1.SetToolTip(Me.lblUnitstxtEC_EnviromentalTemperature, "Degrees Centigrade")
+        '
+        'lblUnitstxtEC_Solar
+        '
+        Me.lblUnitstxtEC_Solar.AutoSize = True
+        Me.lblUnitstxtEC_Solar.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+        Me.lblUnitstxtEC_Solar.Location = New System.Drawing.Point(347, 63)
+        Me.lblUnitstxtEC_Solar.Name = "lblUnitstxtEC_Solar"
+        Me.lblUnitstxtEC_Solar.Size = New System.Drawing.Size(45, 15)
+        Me.lblUnitstxtEC_Solar.TabIndex = 26
+        Me.lblUnitstxtEC_Solar.Text = "W/m^3"
+        Me.ToolTip1.SetToolTip(Me.lblUnitstxtEC_Solar, "Watts/Metre Cubed")
         '
         'grpAuxHeater
         '
         Me.grpAuxHeater.BackColor = System.Drawing.Color.Transparent
         Me.grpAuxHeater.Controls.Add(Me.lblUnitsAH_FuelFiredHeater)
-        Me.grpAuxHeater.Controls.Add(Me.lblUnitstxtAHEngineWasteHeat)
-        Me.grpAuxHeater.Controls.Add(Me.txtAH_EngineWasteHeatkW)
-        Me.grpAuxHeater.Controls.Add(Me.lbltxtAH_EngineWasteHeatkW)
         Me.grpAuxHeater.Controls.Add(Me.txtAH_FuelFiredHeaterkW)
         Me.grpAuxHeater.Controls.Add(Me.lbltxtAH_FuelFiredHeaterkW)
         Me.grpAuxHeater.FlatStyle = System.Windows.Forms.FlatStyle.Popup
-        Me.grpAuxHeater.Font = New System.Drawing.Font("Microsoft Sans Serif", 10!)
+        Me.grpAuxHeater.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!)
         Me.grpAuxHeater.ForeColor = System.Drawing.SystemColors.MenuHighlight
-        Me.grpAuxHeater.Location = New System.Drawing.Point(34, 512)
+        Me.grpAuxHeater.Location = New System.Drawing.Point(474, 209)
         Me.grpAuxHeater.Name = "grpAuxHeater"
-        Me.grpAuxHeater.Size = New System.Drawing.Size(409, 96)
+        Me.grpAuxHeater.Size = New System.Drawing.Size(409, 77)
         Me.grpAuxHeater.TabIndex = 32
-        Me.grpAuxHeater.TabStop = false
+        Me.grpAuxHeater.TabStop = False
         Me.grpAuxHeater.Text = "Aux Heater"
         '
         'lblUnitsAH_FuelFiredHeater
         '
-        Me.lblUnitsAH_FuelFiredHeater.AutoSize = true
-        Me.lblUnitsAH_FuelFiredHeater.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
-        Me.lblUnitsAH_FuelFiredHeater.Location = New System.Drawing.Point(352, 62)
+        Me.lblUnitsAH_FuelFiredHeater.AutoSize = True
+        Me.lblUnitsAH_FuelFiredHeater.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+        Me.lblUnitsAH_FuelFiredHeater.Location = New System.Drawing.Point(360, 36)
         Me.lblUnitsAH_FuelFiredHeater.Name = "lblUnitsAH_FuelFiredHeater"
         Me.lblUnitsAH_FuelFiredHeater.Size = New System.Drawing.Size(24, 15)
         Me.lblUnitsAH_FuelFiredHeater.TabIndex = 27
         Me.lblUnitsAH_FuelFiredHeater.Text = "Kw"
         Me.ToolTip1.SetToolTip(Me.lblUnitsAH_FuelFiredHeater, "Kilo Watts")
         '
-        'lblUnitstxtAHEngineWasteHeat
-        '
-        Me.lblUnitstxtAHEngineWasteHeat.AutoSize = true
-        Me.lblUnitstxtAHEngineWasteHeat.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
-        Me.lblUnitstxtAHEngineWasteHeat.Location = New System.Drawing.Point(352, 33)
-        Me.lblUnitstxtAHEngineWasteHeat.Name = "lblUnitstxtAHEngineWasteHeat"
-        Me.lblUnitstxtAHEngineWasteHeat.Size = New System.Drawing.Size(24, 15)
-        Me.lblUnitstxtAHEngineWasteHeat.TabIndex = 26
-        Me.lblUnitstxtAHEngineWasteHeat.Text = "Kw"
-        Me.ToolTip1.SetToolTip(Me.lblUnitstxtAHEngineWasteHeat, "Kilo Watts")
-        '
-        'txtAH_EngineWasteHeatkW
-        '
-        Me.txtAH_EngineWasteHeatkW.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
-        Me.txtAH_EngineWasteHeatkW.Location = New System.Drawing.Point(220, 30)
-        Me.txtAH_EngineWasteHeatkW.Name = "txtAH_EngineWasteHeatkW"
-        Me.txtAH_EngineWasteHeatkW.Size = New System.Drawing.Size(97, 21)
-        Me.txtAH_EngineWasteHeatkW.TabIndex = 25
-        '
-        'lbltxtAH_EngineWasteHeatkW
-        '
-        Me.lbltxtAH_EngineWasteHeatkW.AutoSize = true
-        Me.lbltxtAH_EngineWasteHeatkW.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
-        Me.lbltxtAH_EngineWasteHeatkW.ForeColor = System.Drawing.Color.Black
-        Me.lbltxtAH_EngineWasteHeatkW.Location = New System.Drawing.Point(14, 33)
-        Me.lbltxtAH_EngineWasteHeatkW.Name = "lbltxtAH_EngineWasteHeatkW"
-        Me.lbltxtAH_EngineWasteHeatkW.Size = New System.Drawing.Size(112, 15)
-        Me.lbltxtAH_EngineWasteHeatkW.TabIndex = 24
-        Me.lbltxtAH_EngineWasteHeatkW.Text = "Engine Waste Heat"
-        '
         'txtAH_FuelFiredHeaterkW
         '
-        Me.txtAH_FuelFiredHeaterkW.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
-        Me.txtAH_FuelFiredHeaterkW.Location = New System.Drawing.Point(218, 59)
+        Me.txtAH_FuelFiredHeaterkW.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
+        Me.txtAH_FuelFiredHeaterkW.Location = New System.Drawing.Point(226, 33)
         Me.txtAH_FuelFiredHeaterkW.Name = "txtAH_FuelFiredHeaterkW"
         Me.txtAH_FuelFiredHeaterkW.Size = New System.Drawing.Size(97, 21)
         Me.txtAH_FuelFiredHeaterkW.TabIndex = 1
         '
         'lbltxtAH_FuelFiredHeaterkW
         '
-        Me.lbltxtAH_FuelFiredHeaterkW.AutoSize = true
-        Me.lbltxtAH_FuelFiredHeaterkW.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lbltxtAH_FuelFiredHeaterkW.AutoSize = True
+        Me.lbltxtAH_FuelFiredHeaterkW.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lbltxtAH_FuelFiredHeaterkW.ForeColor = System.Drawing.Color.Black
-        Me.lbltxtAH_FuelFiredHeaterkW.Location = New System.Drawing.Point(14, 62)
+        Me.lbltxtAH_FuelFiredHeaterkW.Location = New System.Drawing.Point(22, 36)
         Me.lbltxtAH_FuelFiredHeaterkW.Name = "lbltxtAH_FuelFiredHeaterkW"
         Me.lbltxtAH_FuelFiredHeaterkW.Size = New System.Drawing.Size(102, 15)
         Me.lbltxtAH_FuelFiredHeaterkW.TabIndex = 0
@@ -1498,18 +1966,18 @@ Partial Class frmHVACTool
         Me.grpVentilation.Controls.Add(Me.lblchkVEN_VentilationDuringAC)
         Me.grpVentilation.Controls.Add(Me.lblchkVEN_VentilationWhenBothHeatingAndACInactive)
         Me.grpVentilation.FlatStyle = System.Windows.Forms.FlatStyle.Popup
-        Me.grpVentilation.Font = New System.Drawing.Font("Microsoft Sans Serif", 10!)
+        Me.grpVentilation.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!)
         Me.grpVentilation.ForeColor = System.Drawing.SystemColors.MenuHighlight
-        Me.grpVentilation.Location = New System.Drawing.Point(34, 290)
+        Me.grpVentilation.Location = New System.Drawing.Point(34, 350)
         Me.grpVentilation.Name = "grpVentilation"
         Me.grpVentilation.Size = New System.Drawing.Size(409, 216)
         Me.grpVentilation.TabIndex = 31
-        Me.grpVentilation.TabStop = false
+        Me.grpVentilation.TabStop = False
         Me.grpVentilation.Text = "Ventilation"
         '
         'cboVEN_VentilationDuringCooling
         '
-        Me.cboVEN_VentilationDuringCooling.FormattingEnabled = true
+        Me.cboVEN_VentilationDuringCooling.FormattingEnabled = True
         Me.cboVEN_VentilationDuringCooling.Items.AddRange(New Object() {"High", "Low"})
         Me.cboVEN_VentilationDuringCooling.Location = New System.Drawing.Point(216, 182)
         Me.cboVEN_VentilationDuringCooling.Name = "cboVEN_VentilationDuringCooling"
@@ -1518,7 +1986,7 @@ Partial Class frmHVACTool
         '
         'cboVEN_VentilationDuringHeating
         '
-        Me.cboVEN_VentilationDuringHeating.FormattingEnabled = true
+        Me.cboVEN_VentilationDuringHeating.FormattingEnabled = True
         Me.cboVEN_VentilationDuringHeating.Items.AddRange(New Object() {"High", "Low"})
         Me.cboVEN_VentilationDuringHeating.Location = New System.Drawing.Point(216, 150)
         Me.cboVEN_VentilationDuringHeating.Name = "cboVEN_VentilationDuringHeating"
@@ -1527,7 +1995,7 @@ Partial Class frmHVACTool
         '
         'cboVEN_VentilationFlowSettingWhenHeatingAndACInactive
         '
-        Me.cboVEN_VentilationFlowSettingWhenHeatingAndACInactive.FormattingEnabled = true
+        Me.cboVEN_VentilationFlowSettingWhenHeatingAndACInactive.FormattingEnabled = True
         Me.cboVEN_VentilationFlowSettingWhenHeatingAndACInactive.Items.AddRange(New Object() {"High", "Low"})
         Me.cboVEN_VentilationFlowSettingWhenHeatingAndACInactive.Location = New System.Drawing.Point(216, 117)
         Me.cboVEN_VentilationFlowSettingWhenHeatingAndACInactive.Name = "cboVEN_VentilationFlowSettingWhenHeatingAndACInactive"
@@ -1536,38 +2004,38 @@ Partial Class frmHVACTool
         '
         'chkVEN_VentilationDuringAC
         '
-        Me.chkVEN_VentilationDuringAC.AutoSize = true
+        Me.chkVEN_VentilationDuringAC.AutoSize = True
         Me.chkVEN_VentilationDuringAC.Location = New System.Drawing.Point(278, 85)
         Me.chkVEN_VentilationDuringAC.Name = "chkVEN_VentilationDuringAC"
         Me.chkVEN_VentilationDuringAC.Size = New System.Drawing.Size(31, 21)
         Me.chkVEN_VentilationDuringAC.TabIndex = 36
         Me.chkVEN_VentilationDuringAC.Text = " "
-        Me.chkVEN_VentilationDuringAC.UseVisualStyleBackColor = true
+        Me.chkVEN_VentilationDuringAC.UseVisualStyleBackColor = True
         '
         'chkVEN_VentilationWhenBothHeatingAndACInactive
         '
-        Me.chkVEN_VentilationWhenBothHeatingAndACInactive.AutoSize = true
+        Me.chkVEN_VentilationWhenBothHeatingAndACInactive.AutoSize = True
         Me.chkVEN_VentilationWhenBothHeatingAndACInactive.Location = New System.Drawing.Point(278, 61)
         Me.chkVEN_VentilationWhenBothHeatingAndACInactive.Name = "chkVEN_VentilationWhenBothHeatingAndACInactive"
         Me.chkVEN_VentilationWhenBothHeatingAndACInactive.Size = New System.Drawing.Size(31, 21)
         Me.chkVEN_VentilationWhenBothHeatingAndACInactive.TabIndex = 35
         Me.chkVEN_VentilationWhenBothHeatingAndACInactive.Text = " "
-        Me.chkVEN_VentilationWhenBothHeatingAndACInactive.UseVisualStyleBackColor = true
+        Me.chkVEN_VentilationWhenBothHeatingAndACInactive.UseVisualStyleBackColor = True
         '
         'chkVEN_VentilationOnDuringHeating
         '
-        Me.chkVEN_VentilationOnDuringHeating.AutoSize = true
+        Me.chkVEN_VentilationOnDuringHeating.AutoSize = True
         Me.chkVEN_VentilationOnDuringHeating.Location = New System.Drawing.Point(279, 33)
         Me.chkVEN_VentilationOnDuringHeating.Name = "chkVEN_VentilationOnDuringHeating"
         Me.chkVEN_VentilationOnDuringHeating.Size = New System.Drawing.Size(31, 21)
         Me.chkVEN_VentilationOnDuringHeating.TabIndex = 34
         Me.chkVEN_VentilationOnDuringHeating.Text = " "
-        Me.chkVEN_VentilationOnDuringHeating.UseVisualStyleBackColor = true
+        Me.chkVEN_VentilationOnDuringHeating.UseVisualStyleBackColor = True
         '
         'lblcboVEN_VentilationDuringCooling
         '
-        Me.lblcboVEN_VentilationDuringCooling.AutoSize = true
-        Me.lblcboVEN_VentilationDuringCooling.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lblcboVEN_VentilationDuringCooling.AutoSize = True
+        Me.lblcboVEN_VentilationDuringCooling.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lblcboVEN_VentilationDuringCooling.ForeColor = System.Drawing.Color.Black
         Me.lblcboVEN_VentilationDuringCooling.Location = New System.Drawing.Point(13, 184)
         Me.lblcboVEN_VentilationDuringCooling.Name = "lblcboVEN_VentilationDuringCooling"
@@ -1577,8 +2045,8 @@ Partial Class frmHVACTool
         '
         'lblcboVEN_VentilationDuringHeating
         '
-        Me.lblcboVEN_VentilationDuringHeating.AutoSize = true
-        Me.lblcboVEN_VentilationDuringHeating.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lblcboVEN_VentilationDuringHeating.AutoSize = True
+        Me.lblcboVEN_VentilationDuringHeating.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lblcboVEN_VentilationDuringHeating.ForeColor = System.Drawing.Color.Black
         Me.lblcboVEN_VentilationDuringHeating.Location = New System.Drawing.Point(14, 152)
         Me.lblcboVEN_VentilationDuringHeating.Name = "lblcboVEN_VentilationDuringHeating"
@@ -1588,8 +2056,8 @@ Partial Class frmHVACTool
         '
         'lblcboVEN_VentilationFlowSettingWhenHeatingAndACInactive
         '
-        Me.lblcboVEN_VentilationFlowSettingWhenHeatingAndACInactive.AutoSize = true
-        Me.lblcboVEN_VentilationFlowSettingWhenHeatingAndACInactive.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lblcboVEN_VentilationFlowSettingWhenHeatingAndACInactive.AutoSize = True
+        Me.lblcboVEN_VentilationFlowSettingWhenHeatingAndACInactive.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lblcboVEN_VentilationFlowSettingWhenHeatingAndACInactive.ForeColor = System.Drawing.Color.Black
         Me.lblcboVEN_VentilationFlowSettingWhenHeatingAndACInactive.Location = New System.Drawing.Point(14, 115)
         Me.lblcboVEN_VentilationFlowSettingWhenHeatingAndACInactive.MaximumSize = New System.Drawing.Size(210, 0)
@@ -1600,8 +2068,8 @@ Partial Class frmHVACTool
         '
         'lblchkVEN_VentilationOnDuringHeating
         '
-        Me.lblchkVEN_VentilationOnDuringHeating.AutoSize = true
-        Me.lblchkVEN_VentilationOnDuringHeating.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lblchkVEN_VentilationOnDuringHeating.AutoSize = True
+        Me.lblchkVEN_VentilationOnDuringHeating.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lblchkVEN_VentilationOnDuringHeating.ForeColor = System.Drawing.Color.Black
         Me.lblchkVEN_VentilationOnDuringHeating.Location = New System.Drawing.Point(14, 33)
         Me.lblchkVEN_VentilationOnDuringHeating.Name = "lblchkVEN_VentilationOnDuringHeating"
@@ -1611,8 +2079,8 @@ Partial Class frmHVACTool
         '
         'lblchkVEN_VentilationDuringAC
         '
-        Me.lblchkVEN_VentilationDuringAC.AutoSize = true
-        Me.lblchkVEN_VentilationDuringAC.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lblchkVEN_VentilationDuringAC.AutoSize = True
+        Me.lblchkVEN_VentilationDuringAC.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lblchkVEN_VentilationDuringAC.ForeColor = System.Drawing.Color.Black
         Me.lblchkVEN_VentilationDuringAC.Location = New System.Drawing.Point(14, 88)
         Me.lblchkVEN_VentilationDuringAC.Name = "lblchkVEN_VentilationDuringAC"
@@ -1622,8 +2090,8 @@ Partial Class frmHVACTool
         '
         'lblchkVEN_VentilationWhenBothHeatingAndACInactive
         '
-        Me.lblchkVEN_VentilationWhenBothHeatingAndACInactive.AutoSize = true
-        Me.lblchkVEN_VentilationWhenBothHeatingAndACInactive.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lblchkVEN_VentilationWhenBothHeatingAndACInactive.AutoSize = True
+        Me.lblchkVEN_VentilationWhenBothHeatingAndACInactive.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lblchkVEN_VentilationWhenBothHeatingAndACInactive.ForeColor = System.Drawing.Color.Black
         Me.lblchkVEN_VentilationWhenBothHeatingAndACInactive.Location = New System.Drawing.Point(14, 62)
         Me.lblchkVEN_VentilationWhenBothHeatingAndACInactive.Name = "lblchkVEN_VentilationWhenBothHeatingAndACInactive"
@@ -1642,18 +2110,18 @@ Partial Class frmHVACTool
         Me.grpACSystem.Controls.Add(Me.lblUnitstxtAC_CompressorCapacitykW)
         Me.grpACSystem.Controls.Add(Me.lblcboAC_CompressorType)
         Me.grpACSystem.FlatStyle = System.Windows.Forms.FlatStyle.Popup
-        Me.grpACSystem.Font = New System.Drawing.Font("Microsoft Sans Serif", 10!)
+        Me.grpACSystem.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!)
         Me.grpACSystem.ForeColor = System.Drawing.SystemColors.MenuHighlight
-        Me.grpACSystem.Location = New System.Drawing.Point(34, 149)
+        Me.grpACSystem.Location = New System.Drawing.Point(34, 209)
         Me.grpACSystem.Name = "grpACSystem"
         Me.grpACSystem.Size = New System.Drawing.Size(409, 135)
         Me.grpACSystem.TabIndex = 30
-        Me.grpACSystem.TabStop = false
+        Me.grpACSystem.TabStop = False
         Me.grpACSystem.Text = "AC-System"
         '
         'cboAC_CompressorType
         '
-        Me.cboAC_CompressorType.FormattingEnabled = true
+        Me.cboAC_CompressorType.FormattingEnabled = True
         Me.cboAC_CompressorType.Items.AddRange(New Object() {"Mechanical", "Electrical"})
         Me.cboAC_CompressorType.Location = New System.Drawing.Point(217, 62)
         Me.cboAC_CompressorType.Name = "cboAC_CompressorType"
@@ -1662,18 +2130,18 @@ Partial Class frmHVACTool
         '
         'chkAC_InCabinRoomAC_System
         '
-        Me.chkAC_InCabinRoomAC_System.AutoSize = true
+        Me.chkAC_InCabinRoomAC_System.AutoSize = True
         Me.chkAC_InCabinRoomAC_System.Location = New System.Drawing.Point(220, 33)
         Me.chkAC_InCabinRoomAC_System.Name = "chkAC_InCabinRoomAC_System"
         Me.chkAC_InCabinRoomAC_System.Size = New System.Drawing.Size(31, 21)
         Me.chkAC_InCabinRoomAC_System.TabIndex = 25
         Me.chkAC_InCabinRoomAC_System.Text = " "
-        Me.chkAC_InCabinRoomAC_System.UseVisualStyleBackColor = true
+        Me.chkAC_InCabinRoomAC_System.UseVisualStyleBackColor = True
         '
         'lblChkAC_InCabinRoomAC_System
         '
-        Me.lblChkAC_InCabinRoomAC_System.AutoSize = true
-        Me.lblChkAC_InCabinRoomAC_System.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lblChkAC_InCabinRoomAC_System.AutoSize = True
+        Me.lblChkAC_InCabinRoomAC_System.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lblChkAC_InCabinRoomAC_System.ForeColor = System.Drawing.Color.Black
         Me.lblChkAC_InCabinRoomAC_System.Location = New System.Drawing.Point(14, 33)
         Me.lblChkAC_InCabinRoomAC_System.Name = "lblChkAC_InCabinRoomAC_System"
@@ -1683,7 +2151,7 @@ Partial Class frmHVACTool
         '
         'txtAC_CompressorCapacitykW
         '
-        Me.txtAC_CompressorCapacitykW.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.txtAC_CompressorCapacitykW.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.txtAC_CompressorCapacitykW.Location = New System.Drawing.Point(218, 92)
         Me.txtAC_CompressorCapacitykW.Name = "txtAC_CompressorCapacitykW"
         Me.txtAC_CompressorCapacitykW.Size = New System.Drawing.Size(99, 21)
@@ -1691,8 +2159,8 @@ Partial Class frmHVACTool
         '
         'lbltxtAC_CompressorCapacitykW
         '
-        Me.lbltxtAC_CompressorCapacitykW.AutoSize = true
-        Me.lbltxtAC_CompressorCapacitykW.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lbltxtAC_CompressorCapacitykW.AutoSize = True
+        Me.lbltxtAC_CompressorCapacitykW.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lbltxtAC_CompressorCapacitykW.ForeColor = System.Drawing.Color.Black
         Me.lbltxtAC_CompressorCapacitykW.Location = New System.Drawing.Point(14, 91)
         Me.lbltxtAC_CompressorCapacitykW.Name = "lbltxtAC_CompressorCapacitykW"
@@ -1702,8 +2170,8 @@ Partial Class frmHVACTool
         '
         'lblUnitstxtAC_CompressorCapacitykW
         '
-        Me.lblUnitstxtAC_CompressorCapacitykW.AutoSize = true
-        Me.lblUnitstxtAC_CompressorCapacitykW.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        Me.lblUnitstxtAC_CompressorCapacitykW.AutoSize = True
+        Me.lblUnitstxtAC_CompressorCapacitykW.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         Me.lblUnitstxtAC_CompressorCapacitykW.Location = New System.Drawing.Point(352, 99)
         Me.lblUnitstxtAC_CompressorCapacitykW.Name = "lblUnitstxtAC_CompressorCapacitykW"
         Me.lblUnitstxtAC_CompressorCapacitykW.Size = New System.Drawing.Size(24, 15)
@@ -1713,8 +2181,8 @@ Partial Class frmHVACTool
         '
         'lblcboAC_CompressorType
         '
-        Me.lblcboAC_CompressorType.AutoSize = true
-        Me.lblcboAC_CompressorType.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
+        Me.lblcboAC_CompressorType.AutoSize = True
+        Me.lblcboAC_CompressorType.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!)
         Me.lblcboAC_CompressorType.ForeColor = System.Drawing.Color.Black
         Me.lblcboAC_CompressorType.Location = New System.Drawing.Point(14, 62)
         Me.lblcboAC_CompressorType.Name = "lblcboAC_CompressorType"
@@ -1722,88 +2190,9 @@ Partial Class frmHVACTool
         Me.lblcboAC_CompressorType.TabIndex = 0
         Me.lblcboAC_CompressorType.Text = "AC-Compressor Type"
         '
-        'grpEnvironmentConditions
-        '
-        Me.grpEnvironmentConditions.BackColor = System.Drawing.Color.Transparent
-        Me.grpEnvironmentConditions.Controls.Add(Me.txtEC_EnviromentalTemperature)
-        Me.grpEnvironmentConditions.Controls.Add(Me.lbltxtEC_EnviromentalTemperature)
-        Me.grpEnvironmentConditions.Controls.Add(Me.txtEC_Solar)
-        Me.grpEnvironmentConditions.Controls.Add(Me.lbltxtEC_Solar)
-        Me.grpEnvironmentConditions.Controls.Add(Me.lblUnitstxtEC_EnviromentalTemperature)
-        Me.grpEnvironmentConditions.Controls.Add(Me.lblUnitstxtEC_Solar)
-        Me.grpEnvironmentConditions.FlatStyle = System.Windows.Forms.FlatStyle.Popup
-        Me.grpEnvironmentConditions.Font = New System.Drawing.Font("Microsoft Sans Serif", 10!)
-        Me.grpEnvironmentConditions.ForeColor = System.Drawing.SystemColors.MenuHighlight
-        Me.grpEnvironmentConditions.Location = New System.Drawing.Point(34, 47)
-        Me.grpEnvironmentConditions.Name = "grpEnvironmentConditions"
-        Me.grpEnvironmentConditions.Size = New System.Drawing.Size(409, 96)
-        Me.grpEnvironmentConditions.TabIndex = 29
-        Me.grpEnvironmentConditions.TabStop = false
-        Me.grpEnvironmentConditions.Text = "Environmental Conditions"
-        '
-        'txtEC_EnviromentalTemperature
-        '
-        Me.txtEC_EnviromentalTemperature.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
-        Me.txtEC_EnviromentalTemperature.Location = New System.Drawing.Point(220, 30)
-        Me.txtEC_EnviromentalTemperature.Name = "txtEC_EnviromentalTemperature"
-        Me.txtEC_EnviromentalTemperature.Size = New System.Drawing.Size(97, 21)
-        Me.txtEC_EnviromentalTemperature.TabIndex = 25
-        '
-        'lbltxtEC_EnviromentalTemperature
-        '
-        Me.lbltxtEC_EnviromentalTemperature.AutoSize = true
-        Me.lbltxtEC_EnviromentalTemperature.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
-        Me.lbltxtEC_EnviromentalTemperature.ForeColor = System.Drawing.Color.Black
-        Me.lbltxtEC_EnviromentalTemperature.Location = New System.Drawing.Point(14, 33)
-        Me.lbltxtEC_EnviromentalTemperature.Name = "lbltxtEC_EnviromentalTemperature"
-        Me.lbltxtEC_EnviromentalTemperature.Size = New System.Drawing.Size(153, 15)
-        Me.lbltxtEC_EnviromentalTemperature.TabIndex = 24
-        Me.lbltxtEC_EnviromentalTemperature.Text = "Enviromental Temperature"
-        '
-        'txtEC_Solar
-        '
-        Me.txtEC_Solar.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
-        Me.txtEC_Solar.Location = New System.Drawing.Point(218, 59)
-        Me.txtEC_Solar.Name = "txtEC_Solar"
-        Me.txtEC_Solar.Size = New System.Drawing.Size(97, 21)
-        Me.txtEC_Solar.TabIndex = 1
-        '
-        'lbltxtEC_Solar
-        '
-        Me.lbltxtEC_Solar.AutoSize = true
-        Me.lbltxtEC_Solar.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!)
-        Me.lbltxtEC_Solar.ForeColor = System.Drawing.Color.Black
-        Me.lbltxtEC_Solar.Location = New System.Drawing.Point(14, 62)
-        Me.lbltxtEC_Solar.Name = "lbltxtEC_Solar"
-        Me.lbltxtEC_Solar.Size = New System.Drawing.Size(36, 15)
-        Me.lbltxtEC_Solar.TabIndex = 0
-        Me.lbltxtEC_Solar.Text = "Solar"
-        '
-        'lblUnitstxtEC_EnviromentalTemperature
-        '
-        Me.lblUnitstxtEC_EnviromentalTemperature.AutoSize = true
-        Me.lblUnitstxtEC_EnviromentalTemperature.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
-        Me.lblUnitstxtEC_EnviromentalTemperature.Location = New System.Drawing.Point(348, 33)
-        Me.lblUnitstxtEC_EnviromentalTemperature.Name = "lblUnitstxtEC_EnviromentalTemperature"
-        Me.lblUnitstxtEC_EnviromentalTemperature.Size = New System.Drawing.Size(22, 15)
-        Me.lblUnitstxtEC_EnviromentalTemperature.TabIndex = 16
-        Me.lblUnitstxtEC_EnviromentalTemperature.Text = "oC"
-        Me.ToolTip1.SetToolTip(Me.lblUnitstxtEC_EnviromentalTemperature, "Degrees Centigrade")
-        '
-        'lblUnitstxtEC_Solar
-        '
-        Me.lblUnitstxtEC_Solar.AutoSize = true
-        Me.lblUnitstxtEC_Solar.Font = New System.Drawing.Font("Microsoft Sans Serif", 9!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
-        Me.lblUnitstxtEC_Solar.Location = New System.Drawing.Point(348, 59)
-        Me.lblUnitstxtEC_Solar.Name = "lblUnitstxtEC_Solar"
-        Me.lblUnitstxtEC_Solar.Size = New System.Drawing.Size(45, 15)
-        Me.lblUnitstxtEC_Solar.TabIndex = 26
-        Me.lblUnitstxtEC_Solar.Text = "W/m^3"
-        Me.ToolTip1.SetToolTip(Me.lblUnitstxtEC_Solar, "Watts/Metre Cubed")
-        '
         'tabTechBenefits
         '
-        Me.tabTechBenefits.CausesValidation = false
+        Me.tabTechBenefits.CausesValidation = False
         Me.tabTechBenefits.Controls.Add(Me.btnClearForm)
         Me.tabTechBenefits.Controls.Add(Me.lblIndex)
         Me.tabTechBenefits.Controls.Add(Me.txtIndex)
@@ -1833,7 +2222,7 @@ Partial Class frmHVACTool
         Me.tabTechBenefits.Size = New System.Drawing.Size(937, 611)
         Me.tabTechBenefits.TabIndex = 5
         Me.tabTechBenefits.Text = " Tech List Input "
-        Me.tabTechBenefits.UseVisualStyleBackColor = true
+        Me.tabTechBenefits.UseVisualStyleBackColor = True
         '
         'btnClearForm
         '
@@ -1842,11 +2231,11 @@ Partial Class frmHVACTool
         Me.btnClearForm.Size = New System.Drawing.Size(75, 23)
         Me.btnClearForm.TabIndex = 34
         Me.btnClearForm.Text = "Clear Form"
-        Me.btnClearForm.UseVisualStyleBackColor = true
+        Me.btnClearForm.UseVisualStyleBackColor = True
         '
         'lblIndex
         '
-        Me.lblIndex.AutoSize = true
+        Me.lblIndex.AutoSize = True
         Me.lblIndex.Location = New System.Drawing.Point(29, 18)
         Me.lblIndex.Name = "lblIndex"
         Me.lblIndex.Size = New System.Drawing.Size(33, 13)
@@ -1857,7 +2246,7 @@ Partial Class frmHVACTool
         '
         Me.txtIndex.Location = New System.Drawing.Point(81, 15)
         Me.txtIndex.Name = "txtIndex"
-        Me.txtIndex.ReadOnly = true
+        Me.txtIndex.ReadOnly = True
         Me.txtIndex.Size = New System.Drawing.Size(58, 20)
         Me.txtIndex.TabIndex = 32
         '
@@ -1868,11 +2257,11 @@ Partial Class frmHVACTool
         Me.btnUpdate.Size = New System.Drawing.Size(75, 23)
         Me.btnUpdate.TabIndex = 25
         Me.btnUpdate.Text = "Update/Add"
-        Me.btnUpdate.UseVisualStyleBackColor = true
+        Me.btnUpdate.UseVisualStyleBackColor = True
         '
         'lblLineType
         '
-        Me.lblLineType.AutoSize = true
+        Me.lblLineType.AutoSize = True
         Me.lblLineType.Location = New System.Drawing.Point(415, 74)
         Me.lblLineType.Name = "lblLineType"
         Me.lblLineType.Size = New System.Drawing.Size(51, 13)
@@ -1881,17 +2270,17 @@ Partial Class frmHVACTool
         '
         'chkActiveVC
         '
-        Me.chkActiveVC.AutoSize = true
+        Me.chkActiveVC.AutoSize = True
         Me.chkActiveVC.Location = New System.Drawing.Point(490, 173)
         Me.chkActiveVC.Name = "chkActiveVC"
         Me.chkActiveVC.Size = New System.Drawing.Size(73, 17)
         Me.chkActiveVC.TabIndex = 16
         Me.chkActiveVC.Text = "Active VC"
-        Me.chkActiveVC.UseVisualStyleBackColor = true
+        Me.chkActiveVC.UseVisualStyleBackColor = True
         '
         'lblCoolingColumn
         '
-        Me.lblCoolingColumn.AutoSize = true
+        Me.lblCoolingColumn.AutoSize = True
         Me.lblCoolingColumn.Location = New System.Drawing.Point(316, 100)
         Me.lblCoolingColumn.Name = "lblCoolingColumn"
         Me.lblCoolingColumn.Size = New System.Drawing.Size(42, 13)
@@ -1900,13 +2289,13 @@ Partial Class frmHVACTool
         '
         'chkActiveVV
         '
-        Me.chkActiveVV.AutoSize = true
+        Me.chkActiveVV.AutoSize = True
         Me.chkActiveVV.Location = New System.Drawing.Point(490, 145)
         Me.chkActiveVV.Name = "chkActiveVV"
         Me.chkActiveVV.Size = New System.Drawing.Size(73, 17)
         Me.chkActiveVV.TabIndex = 15
         Me.chkActiveVV.Text = "Active VV"
-        Me.chkActiveVV.UseVisualStyleBackColor = true
+        Me.chkActiveVV.UseVisualStyleBackColor = True
         '
         'txtBenefitName
         '
@@ -1917,17 +2306,17 @@ Partial Class frmHVACTool
         '
         'chkActiveVH
         '
-        Me.chkActiveVH.AutoSize = true
+        Me.chkActiveVH.AutoSize = True
         Me.chkActiveVH.Location = New System.Drawing.Point(490, 117)
         Me.chkActiveVH.Name = "chkActiveVH"
         Me.chkActiveVH.Size = New System.Drawing.Size(74, 17)
         Me.chkActiveVH.TabIndex = 14
         Me.chkActiveVH.Text = "Active VH"
-        Me.chkActiveVH.UseVisualStyleBackColor = true
+        Me.chkActiveVH.UseVisualStyleBackColor = True
         '
         'lblBenefitName
         '
-        Me.lblBenefitName.AutoSize = true
+        Me.lblBenefitName.AutoSize = True
         Me.lblBenefitName.Location = New System.Drawing.Point(411, 44)
         Me.lblBenefitName.Name = "lblBenefitName"
         Me.lblBenefitName.Size = New System.Drawing.Size(71, 13)
@@ -1936,17 +2325,17 @@ Partial Class frmHVACTool
         '
         'chkOnVehicle
         '
-        Me.chkOnVehicle.AutoSize = true
+        Me.chkOnVehicle.AutoSize = True
         Me.chkOnVehicle.Location = New System.Drawing.Point(490, 202)
         Me.chkOnVehicle.Name = "chkOnVehicle"
         Me.chkOnVehicle.Size = New System.Drawing.Size(78, 17)
         Me.chkOnVehicle.TabIndex = 17
         Me.chkOnVehicle.Text = "On Vehicle"
-        Me.chkOnVehicle.UseVisualStyleBackColor = true
+        Me.chkOnVehicle.UseVisualStyleBackColor = True
         '
         'lblVentelationColumn
         '
-        Me.lblVentelationColumn.AutoSize = true
+        Me.lblVentelationColumn.AutoSize = True
         Me.lblVentelationColumn.Location = New System.Drawing.Point(215, 100)
         Me.lblVentelationColumn.Name = "lblVentelationColumn"
         Me.lblVentelationColumn.Size = New System.Drawing.Size(56, 13)
@@ -1955,7 +2344,7 @@ Partial Class frmHVACTool
         '
         'lblHeatingColumn
         '
-        Me.lblHeatingColumn.AutoSize = true
+        Me.lblHeatingColumn.AutoSize = True
         Me.lblHeatingColumn.Location = New System.Drawing.Point(122, 100)
         Me.lblHeatingColumn.Name = "lblHeatingColumn"
         Me.lblHeatingColumn.Size = New System.Drawing.Size(44, 13)
@@ -1966,7 +2355,7 @@ Partial Class frmHVACTool
         '
         Me.cboLineType.AutoCompleteCustomSource.AddRange(New String() {"Normal", "Active Ventelation"})
         Me.cboLineType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
-        Me.cboLineType.FormattingEnabled = true
+        Me.cboLineType.FormattingEnabled = True
         Me.cboLineType.Items.AddRange(New Object() {"Normal", "ActiveVentilation"})
         Me.cboLineType.Location = New System.Drawing.Point(488, 71)
         Me.cboLineType.Name = "cboLineType"
@@ -2010,7 +2399,7 @@ Partial Class frmHVACTool
         '
         'lblRaisedFloorRow
         '
-        Me.lblRaisedFloorRow.AutoSize = true
+        Me.lblRaisedFloorRow.AutoSize = True
         Me.lblRaisedFloorRow.Location = New System.Drawing.Point(3, 9)
         Me.lblRaisedFloorRow.Name = "lblRaisedFloorRow"
         Me.lblRaisedFloorRow.Size = New System.Drawing.Size(66, 13)
@@ -2054,7 +2443,7 @@ Partial Class frmHVACTool
         '
         'lblSemiLowFloorRow
         '
-        Me.lblSemiLowFloorRow.AutoSize = true
+        Me.lblSemiLowFloorRow.AutoSize = True
         Me.lblSemiLowFloorRow.Location = New System.Drawing.Point(3, 9)
         Me.lblSemiLowFloorRow.Name = "lblSemiLowFloorRow"
         Me.lblSemiLowFloorRow.Size = New System.Drawing.Size(79, 13)
@@ -2098,7 +2487,7 @@ Partial Class frmHVACTool
         '
         'lblLowFloorRow
         '
-        Me.lblLowFloorRow.AutoSize = true
+        Me.lblLowFloorRow.AutoSize = True
         Me.lblLowFloorRow.Location = New System.Drawing.Point(7, 9)
         Me.lblLowFloorRow.Name = "lblLowFloorRow"
         Me.lblLowFloorRow.Size = New System.Drawing.Size(53, 13)
@@ -2107,7 +2496,7 @@ Partial Class frmHVACTool
         '
         'lblCategory
         '
-        Me.lblCategory.AutoSize = true
+        Me.lblCategory.AutoSize = True
         Me.lblCategory.Location = New System.Drawing.Point(26, 71)
         Me.lblCategory.Name = "lblCategory"
         Me.lblCategory.Size = New System.Drawing.Size(49, 13)
@@ -2116,7 +2505,7 @@ Partial Class frmHVACTool
         '
         'cboCategory
         '
-        Me.cboCategory.FormattingEnabled = true
+        Me.cboCategory.FormattingEnabled = True
         Me.cboCategory.Location = New System.Drawing.Point(81, 71)
         Me.cboCategory.Name = "cboCategory"
         Me.cboCategory.Size = New System.Drawing.Size(324, 21)
@@ -2133,7 +2522,7 @@ Partial Class frmHVACTool
         '
         'lblUnits
         '
-        Me.lblUnits.AutoSize = true
+        Me.lblUnits.AutoSize = True
         Me.lblUnits.Location = New System.Drawing.Point(26, 44)
         Me.lblUnits.Name = "lblUnits"
         Me.lblUnits.Size = New System.Drawing.Size(31, 13)
@@ -2144,7 +2533,7 @@ Partial Class frmHVACTool
         '
         Me.cboUnits.AutoCompleteCustomSource.AddRange(New String() {"Fraction"})
         Me.cboUnits.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
-        Me.cboUnits.FormattingEnabled = true
+        Me.cboUnits.FormattingEnabled = True
         Me.cboUnits.Items.AddRange(New Object() {"Fraction"})
         Me.cboUnits.Location = New System.Drawing.Point(81, 44)
         Me.cboUnits.Name = "cboUnits"
@@ -2159,24 +2548,24 @@ Partial Class frmHVACTool
         Me.tabDiagnostics.Size = New System.Drawing.Size(937, 611)
         Me.tabDiagnostics.TabIndex = 6
         Me.tabDiagnostics.Text = "Diagnostics"
-        Me.tabDiagnostics.UseVisualStyleBackColor = true
+        Me.tabDiagnostics.UseVisualStyleBackColor = True
         '
         'txtDiagnostics
         '
-        Me.txtDiagnostics.Font = New System.Drawing.Font("Courier New", 8!)
+        Me.txtDiagnostics.Font = New System.Drawing.Font("Courier New", 8.0!)
         Me.txtDiagnostics.Location = New System.Drawing.Point(22, 17)
-        Me.txtDiagnostics.Multiline = true
+        Me.txtDiagnostics.Multiline = True
         Me.txtDiagnostics.Name = "txtDiagnostics"
         Me.txtDiagnostics.ScrollBars = System.Windows.Forms.ScrollBars.Both
         Me.txtDiagnostics.Size = New System.Drawing.Size(877, 584)
         Me.txtDiagnostics.TabIndex = 0
-        Me.txtDiagnostics.WordWrap = false
+        Me.txtDiagnostics.WordWrap = False
         '
         'Label1
         '
-        Me.Label1.AutoSize = true
+        Me.Label1.AutoSize = True
         Me.Label1.ForeColor = System.Drawing.SystemColors.MenuHighlight
-        Me.Label1.Location = New System.Drawing.Point(748, 11)
+        Me.Label1.Location = New System.Drawing.Point(746, 30)
         Me.Label1.Name = "Label1"
         Me.Label1.Size = New System.Drawing.Size(82, 13)
         Me.Label1.TabIndex = 10
@@ -2185,26 +2574,15 @@ Partial Class frmHVACTool
         '
         'Label4
         '
-        Me.Label4.AutoSize = true
+        Me.Label4.AutoSize = True
         Me.Label4.ForeColor = System.Drawing.SystemColors.MenuHighlight
-        Me.Label4.Location = New System.Drawing.Point(748, 38)
+        Me.Label4.Location = New System.Drawing.Point(746, 57)
         Me.Label4.Name = "Label4"
         Me.Label4.Size = New System.Drawing.Size(94, 13)
         Me.Label4.TabIndex = 12
         Me.Label4.Text = "Mechanical Adj W"
         Me.ToolTip1.SetToolTip(Me.Label4, "Mechanical W - Tech List Adjusted")
         '
-        'Label6
-        '
-        Me.Label6.AutoSize = true
-        Me.Label6.ForeColor = System.Drawing.SystemColors.MenuHighlight
-        Me.Label6.Location = New System.Drawing.Point(748, 62)
-        Me.Label6.Name = "Label6"
-        Me.Label6.Size = New System.Drawing.Size(61, 13)
-        Me.Label6.TabIndex = 14
-        Me.Label6.Text = "Fuel l/h Adj"
-        Me.ToolTip1.SetToolTip(Me.Label6, "Fuel l/h Tech List Adjusted")
-        '
         'ErrorProvider1
         '
         Me.ErrorProvider1.ContainerControl = Me
@@ -2216,7 +2594,7 @@ Partial Class frmHVACTool
         Me.btnSave.Size = New System.Drawing.Size(75, 23)
         Me.btnSave.TabIndex = 1
         Me.btnSave.Text = "Save"
-        Me.btnSave.UseVisualStyleBackColor = true
+        Me.btnSave.UseVisualStyleBackColor = True
         '
         'btnCancel
         '
@@ -2225,46 +2603,32 @@ Partial Class frmHVACTool
         Me.btnCancel.Size = New System.Drawing.Size(75, 23)
         Me.btnCancel.TabIndex = 2
         Me.btnCancel.Text = "Cancel"
-        Me.btnCancel.UseVisualStyleBackColor = true
+        Me.btnCancel.UseVisualStyleBackColor = True
         '
         'txtBasElectrical
         '
-        Me.txtBasElectrical.Location = New System.Drawing.Point(636, 7)
+        Me.txtBasElectrical.Location = New System.Drawing.Point(634, 26)
         Me.txtBasElectrical.Name = "txtBasElectrical"
         Me.txtBasElectrical.Size = New System.Drawing.Size(100, 20)
         Me.txtBasElectrical.TabIndex = 3
         '
         'txtBaseMechanical
         '
-        Me.txtBaseMechanical.Location = New System.Drawing.Point(636, 34)
+        Me.txtBaseMechanical.Location = New System.Drawing.Point(634, 53)
         Me.txtBaseMechanical.Name = "txtBaseMechanical"
         Me.txtBaseMechanical.Size = New System.Drawing.Size(100, 20)
         Me.txtBaseMechanical.TabIndex = 4
         '
-        'txtBaseFuel
-        '
-        Me.txtBaseFuel.Location = New System.Drawing.Point(637, 62)
-        Me.txtBaseFuel.Name = "txtBaseFuel"
-        Me.txtBaseFuel.Size = New System.Drawing.Size(98, 20)
-        Me.txtBaseFuel.TabIndex = 5
-        '
-        'txtAdjFuel
-        '
-        Me.txtAdjFuel.Location = New System.Drawing.Point(850, 62)
-        Me.txtAdjFuel.Name = "txtAdjFuel"
-        Me.txtAdjFuel.Size = New System.Drawing.Size(98, 20)
-        Me.txtAdjFuel.TabIndex = 8
-        '
         'txtAdjMechanical
         '
-        Me.txtAdjMechanical.Location = New System.Drawing.Point(849, 34)
+        Me.txtAdjMechanical.Location = New System.Drawing.Point(847, 53)
         Me.txtAdjMechanical.Name = "txtAdjMechanical"
         Me.txtAdjMechanical.Size = New System.Drawing.Size(100, 20)
         Me.txtAdjMechanical.TabIndex = 7
         '
         'txtAdjElectrical
         '
-        Me.txtAdjElectrical.Location = New System.Drawing.Point(849, 7)
+        Me.txtAdjElectrical.Location = New System.Drawing.Point(847, 26)
         Me.txtAdjElectrical.Name = "txtAdjElectrical"
         Me.txtAdjElectrical.Size = New System.Drawing.Size(100, 20)
         Me.txtAdjElectrical.TabIndex = 6
@@ -2275,9 +2639,9 @@ Partial Class frmHVACTool
         '
         'lblElectricalBaseW
         '
-        Me.lblElectricalBaseW.AutoSize = true
+        Me.lblElectricalBaseW.AutoSize = True
         Me.lblElectricalBaseW.ForeColor = System.Drawing.SystemColors.MenuHighlight
-        Me.lblElectricalBaseW.Location = New System.Drawing.Point(530, 11)
+        Me.lblElectricalBaseW.Location = New System.Drawing.Point(528, 30)
         Me.lblElectricalBaseW.Name = "lblElectricalBaseW"
         Me.lblElectricalBaseW.Size = New System.Drawing.Size(91, 13)
         Me.lblElectricalBaseW.TabIndex = 9
@@ -2285,112 +2649,93 @@ Partial Class frmHVACTool
         '
         'Label3
         '
-        Me.Label3.AutoSize = true
+        Me.Label3.AutoSize = True
         Me.Label3.ForeColor = System.Drawing.SystemColors.MenuHighlight
-        Me.Label3.Location = New System.Drawing.Point(530, 38)
+        Me.Label3.Location = New System.Drawing.Point(528, 57)
         Me.Label3.Name = "Label3"
         Me.Label3.Size = New System.Drawing.Size(103, 13)
         Me.Label3.TabIndex = 11
         Me.Label3.Text = "Mechanical Base W"
         '
-        'Label5
+        'CMFiles
+        '
+        Me.CMFiles.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.OpenWithToolStripMenuItem, Me.ShowInFolderToolStripMenuItem})
+        Me.CMFiles.Name = "CMFiles"
+        Me.CMFiles.Size = New System.Drawing.Size(177, 48)
         '
-        Me.Label5.AutoSize = true
-        Me.Label5.ForeColor = System.Drawing.SystemColors.MenuHighlight
-        Me.Label5.Location = New System.Drawing.Point(530, 65)
-        Me.Label5.Name = "Label5"
-        Me.Label5.Size = New System.Drawing.Size(70, 13)
-        Me.Label5.TabIndex = 13
-        Me.Label5.Text = "Fuel l/h Base"
+        'OpenWithToolStripMenuItem
+        '
+        Me.OpenWithToolStripMenuItem.Name = "OpenWithToolStripMenuItem"
+        Me.OpenWithToolStripMenuItem.Size = New System.Drawing.Size(176, 22)
+        Me.OpenWithToolStripMenuItem.Text = "Open with notepad"
+        '
+        'ShowInFolderToolStripMenuItem
+        '
+        Me.ShowInFolderToolStripMenuItem.Name = "ShowInFolderToolStripMenuItem"
+        Me.ShowInFolderToolStripMenuItem.Size = New System.Drawing.Size(176, 22)
+        Me.ShowInFolderToolStripMenuItem.Text = "Open in Folder"
         '
         'frmHVACTool
         '
-        Me.AutoScaleDimensions = New System.Drawing.SizeF(6!, 13!)
+        Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
         Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
         Me.AutoValidate = System.Windows.Forms.AutoValidate.EnableAllowFocusChange
         Me.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch
         Me.ClientSize = New System.Drawing.Size(965, 766)
-        Me.Controls.Add(Me.Label6)
-        Me.Controls.Add(Me.Label5)
         Me.Controls.Add(Me.Label4)
         Me.Controls.Add(Me.Label3)
         Me.Controls.Add(Me.Label1)
         Me.Controls.Add(Me.lblElectricalBaseW)
-        Me.Controls.Add(Me.txtAdjFuel)
         Me.Controls.Add(Me.txtAdjMechanical)
         Me.Controls.Add(Me.txtAdjElectrical)
-        Me.Controls.Add(Me.txtBaseFuel)
         Me.Controls.Add(Me.txtBaseMechanical)
         Me.Controls.Add(Me.txtBasElectrical)
         Me.Controls.Add(Me.btnCancel)
         Me.Controls.Add(Me.btnSave)
         Me.Controls.Add(Me.tabMain)
         Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle
-        Me.MaximizeBox = false
+        Me.MaximizeBox = False
         Me.Name = "frmHVACTool"
         Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent
         Me.Text = "SSM HVAC Model V01 ( Excel Model V04 )"
-        Me.tabMain.ResumeLayout(false)
-        Me.tabGeneralInputsBP.ResumeLayout(false)
-        Me.GroupBox1.ResumeLayout(false)
-        Me.GroupBox1.PerformLayout
-        Me.tabGeneralInputsBC.ResumeLayout(false)
-        Me.GroupBox2.ResumeLayout(false)
-        Me.GroupBox2.PerformLayout
-        Me.tabGeneralInputsOther.ResumeLayout(false)
-        Me.grpAuxHeater.ResumeLayout(false)
-        Me.grpAuxHeater.PerformLayout
-        Me.grpVentilation.ResumeLayout(false)
-        Me.grpVentilation.PerformLayout
-        Me.grpACSystem.ResumeLayout(false)
-        Me.grpACSystem.PerformLayout
-        Me.grpEnvironmentConditions.ResumeLayout(false)
-        Me.grpEnvironmentConditions.PerformLayout
-        Me.tabTechBenefits.ResumeLayout(false)
-        Me.tabTechBenefits.PerformLayout
-        Me.pnlRaisedFloorRow.ResumeLayout(false)
-        Me.pnlRaisedFloorRow.PerformLayout
-        Me.pnlSemiLowFloorRow.ResumeLayout(false)
-        Me.pnlSemiLowFloorRow.PerformLayout
-        Me.pnlLowFloorRow.ResumeLayout(false)
-        Me.pnlLowFloorRow.PerformLayout
-        CType(Me.gvTechBenefitLines,System.ComponentModel.ISupportInitialize).EndInit
-        Me.tabDiagnostics.ResumeLayout(false)
-        Me.tabDiagnostics.PerformLayout
-        CType(Me.ErrorProvider1,System.ComponentModel.ISupportInitialize).EndInit
-        Me.ResumeLayout(false)
+        Me.tabMain.ResumeLayout(False)
+        Me.tabGeneralInputsBP.ResumeLayout(False)
+        Me.BusParamGroupEdit.ResumeLayout(False)
+        Me.BusParamGroupEdit.PerformLayout()
+        Me.BusParamGroupModel.ResumeLayout(False)
+        Me.BusParamGroupModel.PerformLayout()
+        Me.tabGeneralInputsBC.ResumeLayout(False)
+        Me.GroupBox2.ResumeLayout(False)
+        Me.GroupBox2.PerformLayout()
+        Me.tabGeneralInputsOther.ResumeLayout(False)
+        Me.grpEnvironmentConditions.ResumeLayout(False)
+        Me.grpEnvironmentConditions.PerformLayout()
+        Me.grpAuxHeater.ResumeLayout(False)
+        Me.grpAuxHeater.PerformLayout()
+        Me.grpVentilation.ResumeLayout(False)
+        Me.grpVentilation.PerformLayout()
+        Me.grpACSystem.ResumeLayout(False)
+        Me.grpACSystem.PerformLayout()
+        Me.tabTechBenefits.ResumeLayout(False)
+        Me.tabTechBenefits.PerformLayout()
+        Me.pnlRaisedFloorRow.ResumeLayout(False)
+        Me.pnlRaisedFloorRow.PerformLayout()
+        Me.pnlSemiLowFloorRow.ResumeLayout(False)
+        Me.pnlSemiLowFloorRow.PerformLayout()
+        Me.pnlLowFloorRow.ResumeLayout(False)
+        Me.pnlLowFloorRow.PerformLayout()
+        CType(Me.gvTechBenefitLines, System.ComponentModel.ISupportInitialize).EndInit()
+        Me.tabDiagnostics.ResumeLayout(False)
+        Me.tabDiagnostics.PerformLayout()
+        CType(Me.ErrorProvider1, System.ComponentModel.ISupportInitialize).EndInit()
+        Me.CMFiles.ResumeLayout(False)
+        Me.ResumeLayout(False)
         Me.PerformLayout
 
 End Sub
     Friend WithEvents tabMain As System.Windows.Forms.TabControl
     Friend WithEvents tabGeneralInputsBP As System.Windows.Forms.TabPage
-    Friend WithEvents cboBuses As System.Windows.Forms.ComboBox
-    Friend WithEvents GroupBox1 As System.Windows.Forms.GroupBox
-    Friend WithEvents lblBusVolume As System.Windows.Forms.Label
-    Friend WithEvents lblBusLength As System.Windows.Forms.Label
-    Friend WithEvents lblBusWidth As System.Windows.Forms.Label
-    Friend WithEvents txtBusWindowSurfaceArea As System.Windows.Forms.TextBox
-    Friend WithEvents lblBusWindowSurfaceArea As System.Windows.Forms.Label
-    Friend WithEvents txtBusSurfaceArea As System.Windows.Forms.TextBox
-    Friend WithEvents lblBusSurfaceArea As System.Windows.Forms.Label
-    Friend WithEvents txtBusFloorSurfaceArea As System.Windows.Forms.TextBox
-    Friend WithEvents lblBusFloorSurfaceArea As System.Windows.Forms.Label
-    Friend WithEvents txtRegisteredPassengers As System.Windows.Forms.TextBox
-    Friend WithEvents lblRegisteredPassengers As System.Windows.Forms.Label
-    Friend WithEvents txtBusVolume As System.Windows.Forms.TextBox
-    Friend WithEvents txtBusWidth As System.Windows.Forms.TextBox
-    Friend WithEvents txtBusLength As System.Windows.Forms.TextBox
-    Friend WithEvents lblUnitsBW As System.Windows.Forms.Label
-    Friend WithEvents lblUnitsBSA As System.Windows.Forms.Label
-    Friend WithEvents lblUnitsBWSA As System.Windows.Forms.Label
-    Friend WithEvents lblUnitsBV As System.Windows.Forms.Label
-    Friend WithEvents lblUnitsBL As System.Windows.Forms.Label
-    Friend WithEvents lblUnitsBFSA As System.Windows.Forms.Label
     Friend WithEvents ToolTip1 As System.Windows.Forms.ToolTip
-    Friend WithEvents txtBusFloorType As System.Windows.Forms.TextBox
-    Friend WithEvents lblBusFloorType As System.Windows.Forms.Label
-    Friend WithEvents txtBusModel As System.Windows.Forms.TextBox
-    Friend WithEvents lblBusModel As System.Windows.Forms.Label
     Friend WithEvents ErrorProvider1 As System.Windows.Forms.ErrorProvider
     Friend WithEvents tabGeneralInputsBC As System.Windows.Forms.TabPage
     Friend WithEvents GroupBox2 As System.Windows.Forms.GroupBox
@@ -2470,8 +2815,6 @@ End Sub
     Friend WithEvents lblBC_WindowAreaPerUnitBusLength As System.Windows.Forms.Label
     Friend WithEvents tabGeneralInputsOther As System.Windows.Forms.TabPage
     Friend WithEvents grpAuxHeater As System.Windows.Forms.GroupBox
-    Friend WithEvents txtAH_EngineWasteHeatkW As System.Windows.Forms.TextBox
-    Friend WithEvents lbltxtAH_EngineWasteHeatkW As System.Windows.Forms.Label
     Friend WithEvents txtAH_FuelFiredHeaterkW As System.Windows.Forms.TextBox
     Friend WithEvents lbltxtAH_FuelFiredHeaterkW As System.Windows.Forms.Label
     Friend WithEvents grpVentilation As System.Windows.Forms.GroupBox
@@ -2495,13 +2838,6 @@ End Sub
     Friend WithEvents lbltxtAC_CompressorCapacitykW As System.Windows.Forms.Label
     Friend WithEvents lblUnitstxtAC_CompressorCapacitykW As System.Windows.Forms.Label
     Friend WithEvents lblcboAC_CompressorType As System.Windows.Forms.Label
-    Friend WithEvents grpEnvironmentConditions As System.Windows.Forms.GroupBox
-    Friend WithEvents txtEC_EnviromentalTemperature As System.Windows.Forms.TextBox
-    Friend WithEvents lbltxtEC_EnviromentalTemperature As System.Windows.Forms.Label
-    Friend WithEvents txtEC_Solar As System.Windows.Forms.TextBox
-    Friend WithEvents lbltxtEC_Solar As System.Windows.Forms.Label
-    Friend WithEvents lblUnitstxtEC_EnviromentalTemperature As System.Windows.Forms.Label
-    Friend WithEvents lblUnitstxtEC_Solar As System.Windows.Forms.Label
     Friend WithEvents tabTechBenefits As System.Windows.Forms.TabPage
     Friend WithEvents gvTechBenefitLines As System.Windows.Forms.DataGridView
     Friend WithEvents lblCategory As System.Windows.Forms.Label
@@ -2540,21 +2876,87 @@ End Sub
     Friend WithEvents btnCancel As System.Windows.Forms.Button
     Friend WithEvents btnSave As System.Windows.Forms.Button
     Friend WithEvents btnClearForm As System.Windows.Forms.Button
-    Friend WithEvents txtAdjFuel As System.Windows.Forms.TextBox
     Friend WithEvents txtAdjMechanical As System.Windows.Forms.TextBox
     Friend WithEvents txtAdjElectrical As System.Windows.Forms.TextBox
-    Friend WithEvents txtBaseFuel As System.Windows.Forms.TextBox
     Friend WithEvents txtBaseMechanical As System.Windows.Forms.TextBox
     Friend WithEvents txtBasElectrical As System.Windows.Forms.TextBox
     Friend WithEvents Timer1 As System.Windows.Forms.Timer
     Friend WithEvents tabDiagnostics As System.Windows.Forms.TabPage
     Friend WithEvents txtDiagnostics As System.Windows.Forms.TextBox
     Friend WithEvents lblUnitsAH_FuelFiredHeater As System.Windows.Forms.Label
-    Friend WithEvents lblUnitstxtAHEngineWasteHeat As System.Windows.Forms.Label
-    Friend WithEvents Label6 As System.Windows.Forms.Label
-    Friend WithEvents Label5 As System.Windows.Forms.Label
     Friend WithEvents Label4 As System.Windows.Forms.Label
     Friend WithEvents Label3 As System.Windows.Forms.Label
     Friend WithEvents Label1 As System.Windows.Forms.Label
     Friend WithEvents lblElectricalBaseW As System.Windows.Forms.Label
+    Friend WithEvents btnCancelBus As System.Windows.Forms.Button
+    Friend WithEvents BusParamGroupEdit As System.Windows.Forms.GroupBox
+    Friend WithEvents Label19 As System.Windows.Forms.Label
+    Friend WithEvents chkEditIsDoubleDecker As System.Windows.Forms.CheckBox
+    Friend WithEvents cmbEditEngineType As System.Windows.Forms.ComboBox
+    Friend WithEvents cmbEditFloorType As System.Windows.Forms.ComboBox
+    Friend WithEvents txtEditBusModel As System.Windows.Forms.TextBox
+    Friend WithEvents Label7 As System.Windows.Forms.Label
+    Friend WithEvents Label8 As System.Windows.Forms.Label
+    Friend WithEvents Label9 As System.Windows.Forms.Label
+    Friend WithEvents Label12 As System.Windows.Forms.Label
+    Friend WithEvents Label14 As System.Windows.Forms.Label
+    Friend WithEvents Label16 As System.Windows.Forms.Label
+    Friend WithEvents txtEditBusHeight As System.Windows.Forms.TextBox
+    Friend WithEvents txtEditBusWidth As System.Windows.Forms.TextBox
+    Friend WithEvents txtEditBusLength As System.Windows.Forms.TextBox
+    Friend WithEvents Label17 As System.Windows.Forms.Label
+    Friend WithEvents Label18 As System.Windows.Forms.Label
+    Friend WithEvents Label21 As System.Windows.Forms.Label
+    Friend WithEvents txtEditBusPassengers As System.Windows.Forms.TextBox
+    Friend WithEvents Label22 As System.Windows.Forms.Label
+    Friend WithEvents btnEditBus As System.Windows.Forms.Button
+    Friend WithEvents btnUpdateBusDatabase As System.Windows.Forms.Button
+    Friend WithEvents btnNewBus As System.Windows.Forms.Button
+    Friend WithEvents BusParamGroupModel As System.Windows.Forms.GroupBox
+    Friend WithEvents Label15 As System.Windows.Forms.Label
+    Friend WithEvents chkIsDoubleDecker As System.Windows.Forms.CheckBox
+    Friend WithEvents cmbBusFloorType As System.Windows.Forms.ComboBox
+    Friend WithEvents Label10 As System.Windows.Forms.Label
+    Friend WithEvents txtBusHeight As System.Windows.Forms.TextBox
+    Friend WithEvents Label11 As System.Windows.Forms.Label
+    Friend WithEvents txtBusModel As System.Windows.Forms.TextBox
+    Friend WithEvents lblBusModel As System.Windows.Forms.Label
+    Friend WithEvents lblBusFloorType As System.Windows.Forms.Label
+    Friend WithEvents lblUnitsBW As System.Windows.Forms.Label
+    Friend WithEvents lblUnitsBSA As System.Windows.Forms.Label
+    Friend WithEvents lblUnitsBWSA As System.Windows.Forms.Label
+    Friend WithEvents lblUnitsBV As System.Windows.Forms.Label
+    Friend WithEvents lblUnitsBL As System.Windows.Forms.Label
+    Friend WithEvents lblUnitsBFSA As System.Windows.Forms.Label
+    Friend WithEvents txtBusWidth As System.Windows.Forms.TextBox
+    Friend WithEvents txtBusLength As System.Windows.Forms.TextBox
+    Friend WithEvents txtBusVolume As System.Windows.Forms.TextBox
+    Friend WithEvents lblBusVolume As System.Windows.Forms.Label
+    Friend WithEvents lblBusLength As System.Windows.Forms.Label
+    Friend WithEvents lblBusWidth As System.Windows.Forms.Label
+    Friend WithEvents txtBusWindowSurfaceArea As System.Windows.Forms.TextBox
+    Friend WithEvents lblBusWindowSurfaceArea As System.Windows.Forms.Label
+    Friend WithEvents txtBusSurfaceArea As System.Windows.Forms.TextBox
+    Friend WithEvents lblBusSurfaceArea As System.Windows.Forms.Label
+    Friend WithEvents txtBusFloorSurfaceArea As System.Windows.Forms.TextBox
+    Friend WithEvents lblBusFloorSurfaceArea As System.Windows.Forms.Label
+    Friend WithEvents txtRegisteredPassengers As System.Windows.Forms.TextBox
+    Friend WithEvents lblRegisteredPassengers As System.Windows.Forms.Label
+    Friend WithEvents cboBuses As System.Windows.Forms.ComboBox
+    Friend WithEvents grpEnvironmentConditions As System.Windows.Forms.GroupBox
+    Friend WithEvents btnOpenAenv As System.Windows.Forms.Button
+    Friend WithEvents btnEnvironmentConditionsSource As System.Windows.Forms.Button
+    Friend WithEvents txtEC_EnvironmentConditionsFilePath As System.Windows.Forms.TextBox
+    Friend WithEvents Label20 As System.Windows.Forms.Label
+    Friend WithEvents chkEC_BatchMode As System.Windows.Forms.CheckBox
+    Friend WithEvents Label23 As System.Windows.Forms.Label
+    Friend WithEvents txtEC_EnviromentalTemperature As System.Windows.Forms.TextBox
+    Friend WithEvents lbltxtEC_EnviromentalTemperature As System.Windows.Forms.Label
+    Friend WithEvents txtEC_Solar As System.Windows.Forms.TextBox
+    Friend WithEvents lbltxtEC_Solar As System.Windows.Forms.Label
+    Friend WithEvents lblUnitstxtEC_EnviromentalTemperature As System.Windows.Forms.Label
+    Friend WithEvents lblUnitstxtEC_Solar As System.Windows.Forms.Label
+    Friend WithEvents CMFiles As System.Windows.Forms.ContextMenuStrip
+    Friend WithEvents OpenWithToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
+    Friend WithEvents ShowInFolderToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
 End Class
diff --git a/VECTOAux/VectoAuxiliaries/UI/frmHVACTool.resx b/VECTOAux/VectoAuxiliaries/UI/frmHVACTool.resx
index aa44697951..5ac719b01a 100644
--- a/VECTOAux/VectoAuxiliaries/UI/frmHVACTool.resx
+++ b/VECTOAux/VectoAuxiliaries/UI/frmHVACTool.resx
@@ -120,6 +120,23 @@
   <metadata name="ToolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>17, 17</value>
   </metadata>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="btnOpenAenv.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
+        DAAACwwBP0AiyAAAAAd0SU1FB90DDwobMP/PsTcAAAIsSURBVDhPY6AKCAwMZDKyDmfXNw9mN7AMZTe0
+        CmMH8Y1tYBjED2V3dXVmgWpBBf7hRU75dWsXFTRs3ZBbt2l9VvWG9RkV69anl69dn16xHsjetD6/dv3K
+        vJLubHd3V16oNgTwimhtSqx/8N+n4MV/z7xn/91znvx3zXr03yXj4X+n9AdA/PB/YMHN/3G5i04x8FrK
+        Q7UhQFp2ZcWlOz//H7347d/RC1//g/CR81/A+PC5z/93Hf/yf97m7/8rJjy4zSxfq8dg858RqhUCcnNz
+        i//9+///16/fGPjnz9//r9z98z+25tH/ouZdVxT0YpSg2hAgIyOj9O/fv/+/ffuGgj99+vT/1as3/w+d
+        efU/quLm/70n3tz2DwgNNzU1RQ2HpKSkip8/f/7/+PEjHH/48OH/oyev/+8/8ez/iq0P/y/Y+Ozfoxf/
+        /h8/9+Kps0dkJlQrBERHR1d/+fLl/+vXr/+/efMGjF++fPX/4In7/5MaHv53zrj/P7Tk9v8Nh/79T6y9
+        fk/JJC8VqhUCQkJCat+///D/yZOn/58+fQbHd+49+3/w1Mv/O4+++l9Uv/p/26y79xkkMoo59NfwQbVC
+        gBswHk9d/vh/x+EX/3ceAWpAwjsOAzGQbuxe9z8mpeYap4ipMlQbAqgYRPUFFd1+Y5X06J1VIhYMFA8s
+        uvOysHr2XgZGdsxYYOI1MmCQLg5jkGuOxYlB8pwalry8vNxQbWhArp6JIB6EgIEBAIzMdLQyo6hyAAAA
+        AElFTkSuQmCC
+</value>
+  </data>
   <metadata name="ErrorProvider1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>116, 17</value>
   </metadata>
@@ -129,4 +146,7 @@
   <metadata name="Timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>246, 17</value>
   </metadata>
+  <metadata name="CMFiles.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>429, 17</value>
+  </metadata>
 </root>
\ No newline at end of file
diff --git a/VECTOAux/VectoAuxiliaries/UI/frmHVACTool.vb b/VECTOAux/VectoAuxiliaries/UI/frmHVACTool.vb
index 8e36048ca6..87fe63ed57 100644
--- a/VECTOAux/VectoAuxiliaries/UI/frmHVACTool.vb
+++ b/VECTOAux/VectoAuxiliaries/UI/frmHVACTool.vb
@@ -5,418 +5,471 @@ Imports System.Drawing
 
 Public Class frmHVACTool
 
-  'Fields
-  Private captureDiagnostics As Boolean 
-  Private busDatabasePath As String
-  Private ahsmFilePath As String
-  Private buses As IBusDatabase
-  Private ssmTOOL As SSMTOOL
-  Private originalssmTOOL As SSMTOOL
-  Private TabColors As Dictionary(Of TabPage, Color) = New Dictionary(Of TabPage, Color)()
-  Private editTechLine As ITechListBenefitLine = New TechListBenefitLine(Nothing)
-  Private gvTechListBinding As BindingList(Of ITechListBenefitLine)
-  Private DefaultCategories As String() = {"Cooling","Heating","Insulation","Ventiliation"}
-  Private vectoFile As String = String.Empty
-  Private vectoPath As String = String.Empty
-  Private UserHitCancel As Boolean = false
-  Private UserHitSave As Boolean = false
+    'Fields
+    Private captureDiagnostics As Boolean
+    Private busDatabasePath As String
+    Private ahsmFilePath As String
+    Private buses As IBusDatabase
+    Private ssmTOOL As SSMTOOL
+    Private originalssmTOOL As SSMTOOL
+    Private TabColors As Dictionary(Of TabPage, Color) = New Dictionary(Of TabPage, Color)()
+    Private editTechLine As ITechListBenefitLine = New TechListBenefitLine(Nothing)
+    Private gvTechListBinding As BindingList(Of ITechListBenefitLine)
+    Private DefaultCategories As String() = {"Cooling", "Heating", "Insulation", "Ventiliation"}
+    Private vectoFile As String = String.Empty
+    Private UserHitCancel As Boolean = False
+    Private UserHitSave As Boolean = False
+    Private IsAddingBus As Boolean = False
+    Private IsUpdatingBus As Boolean = False
+    Private busesList As BindingList(Of IBus)
+
+    'Helpers
+    Public Sub UpdateButtonText()
+
+        If txtIndex.Text = String.Empty Then
+            btnUpdate.Text = "Add"
+        Else
+            btnUpdate.Text = "Update"
+        End If
 
+    End Sub
+    Private Function ValidateSSMTOOLFileName(filename As String) As Boolean
 
+        Dim message As String = String.Empty
 
-  'Helpers
-  public  Sub  UpdateButtonText()
+        If Not FilePathUtils.ValidateFilePath(filename, ".ahsm", message) Then
+            MessageBox.Show(message)
+        End If
 
-    If txtIndex.Text=String.Empty then
-          btnUpdate.Text = "Add"
-      Else     
-          btnUpdate.Text = "Update"
-      End if
+        Return True
 
-  end sub
-  Private Function ValidateSSMTOOLFileName( filename As String ) As Boolean
+    End Function
+    Private Sub BindGrid()
 
-       Dim message As String = String.Empty
+        Dim gvTechListBinding As New BindingList(Of ITechListBenefitLine)(ssmTOOL.TechList.TechLines.OrderBy(Function(o) o.Category).ThenBy(Function(t) t.BenefitName).ToList())
+        Me.gvTechBenefitLines.DataSource = gvTechListBinding
 
-       If Not FilePathUtils.ValidateFilePath(filename,".ahsm", message) then
-         MessageBox.Show ( message )
-       End If
+    End Sub
+    Private Function GetCategories() As List(Of String)
 
-       Return true
+        If Not ssmTOOL Is Nothing AndAlso Not ssmTOOL.TechList Is Nothing AndAlso ssmTOOL.TechList.TechLines.Count > 0 Then
 
-End Function
-  Private sub BindGrid(  )
+            'Fuse Lists          
+            Dim fusedList As List(Of String) = DefaultCategories.ToList()
 
-      Dim gvTechListBinding As New BindingList(Of ITechListBenefitLine)(ssmTOOL.TechList.TechLines.OrderBy( Function(o) o.Category).ThenBy( Function(t) t.BenefitName).ToList())
-      Me.gvTechBenefitLines.DataSource = gvTechListBinding
+            For Each s As String In ssmTOOL.TechList.TechLines.Select(Function(sel) sel.Category)
 
-  End Sub
-  Private function GetCategories( ) As List(Of String)
+                If Not fusedList.Contains(s) Then
+                    fusedList.Add(s)
+                End If
 
-     If Not ssmTOOL is Nothing AndAlso Not ssmTOOL.TechList is Nothing AndAlso ssmTOOL.TechList.TechLines.Count>0
+            Next
 
-        'Fuse Lists          
-        Dim fusedList As  List(Of String ) = DefaultCategories.ToList()
-        
-        For Each s As String In ssmTOOL.TechList.TechLines.Select( Function(sel) sel.Category)
+            Return fusedList.OrderBy(Function(o) o.ToString()).ToList()
 
-          If Not fusedList.Contains(s) then
-           fusedList.Add(s)
-          End If
+        Else
+
+            Return New List(Of String)(DefaultCategories)
 
-        Next
-          
-          Return fusedList.OrderBy( Function(o) o.ToString()).ToList()
+        End If
 
-     Else
 
-          Return New List(Of String)(DefaultCategories)
+    End Function
 
-     End If
+    'Constructors
+    Public Sub New(busDatabasePath As String, ahsmFilePath As String, vectoFilePath As String, Optional useDefaults As Boolean = False)
 
+        ' This call is required by the designer.
+        InitializeComponent()
 
-  End Function
+        vectoFile = vectoFilePath
 
-  'Constructors
-  Public Sub New(busDatabasePath As String, ahsmFilePath As String , optional useDefaults As Boolean = false)
+        'Add any initialization after the InitializeComponent() call.
 
-    ' This call is required by the designer.
-    InitializeComponent()
 
-    'Add any initialization after the InitializeComponent() call.
+        Me.busDatabasePath = busDatabasePath
+        Me.ahsmFilePath = ahsmFilePath
 
 
-    Me.busDatabasePath = busDatabasePath
-    Me.ahsmFilePath = ahsmFilePath
 
-    
+        ssmTOOL = New SSMTOOL(ahsmFilePath, useDefaults)
+        originalssmTOOL = New SSMTOOL(ahsmFilePath, useDefaults)
+
+        If ssmTOOL.Load(ahsmFilePath) AndAlso originalssmTOOL.Load(ahsmFilePath) Then
+            Timer1.Enabled = True
+        Else
 
-    ssmTOOL = New SSMTOOL(ahsmFilePath,useDefaults)
-    originalssmTOOL = New SSMTOOL( ahsmFilePath, useDefaults)
+            MessageBox.Show("The file format for the Steady State Model (.AHSM) was corrupted or is an alpha version. Please refer to the documentation or help to discover more.")
+            Timer1.Enabled = False
 
-    If  ssmTOOL.Load(ahsmFilePath) ANdAlso  originalssmTOOL.Load( ahsmFilePath) then
-      Timer1.Enabled=true
-    Else
-    
-      MessageBox.Show("The file format for the Steady State Model (.AHSM) was corrupted or is an alpha version. Please refer to the documentation or help to discover more.")
-      Timer1.Enabled=false
+        End If
 
-    end if
+        setupBuses()
+        setupControls()
+        setupBindings()
 
-     setupBuses()
-     setupControls()
-     setupBindings()  
 
+    End Sub
 
-End Sub
+    'Setup Methods
+    Private Sub setupBuses()
 
-  'Setup Methods
-  Private Sub setupBuses()
+        'Setup Buses
+        buses = New BusDatabase()
+        If Not buses.Initialise(busDatabasePath) Then
+            MessageBox.Show("Problems initialising the Bus Database, some buses may not appear")
+        End If
 
-    'Setup Buses
-    buses = New BusDatabase()
-    If Not buses.Initialise(busDatabasePath) Then
-      MessageBox.Show("Problems initialising the Bus Database, some buses may not appear")
-    End If
+        busesList = New BindingList(Of IBus)(buses.GetBuses(String.Empty, True))
 
-    cboBuses.DataSource = buses.GetBuses(String.Empty, True)
-    cboBuses.DisplayMember = "Model"
+        cboBuses.DataSource = busesList
+        cboBuses.DisplayMember = "Model"
+    End Sub
+    Private Sub setupControls()
+
+        'gvTechBenefitLines
+        gvTechBenefitLines.AutoGenerateColumns = False
+
+        Dim cIndex As Integer
+
+        'Column - Category
+        cIndex = gvTechBenefitLines.Columns.Add("Category", "Category")
+        gvTechBenefitLines.Columns(cIndex).DataPropertyName = "Category"
+        gvTechBenefitLines.Columns(cIndex).Width = 70
+        gvTechBenefitLines.Columns(cIndex).ReadOnly = True
+        gvTechBenefitLines.Columns(cIndex).HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
+        gvTechBenefitLines.Columns(cIndex).HeaderCell.Style.Padding = New Padding(1, 2, 1, 1)
+
+        'Column - BenefitName
+        cIndex = gvTechBenefitLines.Columns.Add("BenefitName", "BenefitName")
+        gvTechBenefitLines.Columns(cIndex).DataPropertyName = "BenefitName"
+        gvTechBenefitLines.Columns(cIndex).Width = 330
+        gvTechBenefitLines.Columns(cIndex).ReadOnly = True
+        gvTechBenefitLines.Columns(cIndex).HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
+        gvTechBenefitLines.Columns(cIndex).HeaderCell.Style.Padding = New Padding(1, 2, 1, 1)
+
+        'Column - H
+        cIndex = gvTechBenefitLines.Columns.Add("H", "H")
+        gvTechBenefitLines.Columns(cIndex).DataPropertyName = "H"
+        gvTechBenefitLines.Columns(cIndex).Width = 60
+        gvTechBenefitLines.Columns(cIndex).ReadOnly = True
+        gvTechBenefitLines.Columns(cIndex).HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
+        gvTechBenefitLines.Columns(cIndex).HeaderCell.Style.Padding = New Padding(1, 2, 1, 1)
+
+        'Column - VH
+        cIndex = gvTechBenefitLines.Columns.Add("VH", "VH")
+        gvTechBenefitLines.Columns(cIndex).DataPropertyName = "VH"
+        gvTechBenefitLines.Columns(cIndex).Width = 60
+        gvTechBenefitLines.Columns(cIndex).ReadOnly = True
+        gvTechBenefitLines.Columns(cIndex).HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
+        gvTechBenefitLines.Columns(cIndex).HeaderCell.Style.Padding = New Padding(1, 2, 1, 1)
+
+
+        'Column - VV
+        cIndex = gvTechBenefitLines.Columns.Add("VV", "VV")
+        gvTechBenefitLines.Columns(cIndex).DataPropertyName = "VV"
+        gvTechBenefitLines.Columns(cIndex).Width = 60
+        gvTechBenefitLines.Columns(cIndex).ReadOnly = True
+        gvTechBenefitLines.Columns(cIndex).HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
+        gvTechBenefitLines.Columns(cIndex).HeaderCell.Style.Padding = New Padding(1, 2, 1, 1)
+
+        'Column - VC
+        cIndex = gvTechBenefitLines.Columns.Add("VC", "VC")
+        gvTechBenefitLines.Columns(cIndex).DataPropertyName = "VC"
+        gvTechBenefitLines.Columns(cIndex).Width = 60
+        gvTechBenefitLines.Columns(cIndex).ReadOnly = True
+        gvTechBenefitLines.Columns(cIndex).HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
+        gvTechBenefitLines.Columns(cIndex).HeaderCell.Style.Padding = New Padding(1, 2, 1, 1)
+
+        'Column - C
+        cIndex = gvTechBenefitLines.Columns.Add("C", "C")
+        gvTechBenefitLines.Columns(cIndex).DataPropertyName = "C"
+        gvTechBenefitLines.Columns(cIndex).Width = 60
+        gvTechBenefitLines.Columns(cIndex).ReadOnly = True
+        gvTechBenefitLines.Columns(cIndex).HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
+        gvTechBenefitLines.Columns(cIndex).HeaderCell.Style.Padding = New Padding(1, 2, 1, 1)
+
+        'Column - OnVehicle
+
+        Dim onV As New DataGridViewCheckBoxColumn()
+
+        cIndex = gvTechBenefitLines.Columns.Add(onV)
+        gvTechBenefitLines.Columns(cIndex).Name = "OnVehicle"
+        gvTechBenefitLines.Columns(cIndex).DataPropertyName = "OnVehicle"
+        gvTechBenefitLines.Columns(cIndex).Width = 60
+        gvTechBenefitLines.Columns(cIndex).ReadOnly = True
+        gvTechBenefitLines.Columns(cIndex).HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
+        gvTechBenefitLines.Columns(cIndex).HeaderCell.Style.Padding = New Padding(1, 2, 1, 1)
+
+
+        Dim deleteColumn As New DeleteColumn
+        With deleteColumn
+            .HeaderText = ""
+            .ToolTipText = "Delete this row"
+            .Name = "Delete"
+            .Width = 20
+            .DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
+        End With
+        gvTechBenefitLines.Columns.Add(deleteColumn)
 
-End Sub
-  Private Sub setupControls()
+        'Techlist Edit Panel
+        cboCategory.DataSource = GetCategories()
+        cboUnits.DataSource = {"Fraction"}
+        cboLineType.DataSource = {"Normal", "ActiveVentilation"}
 
-     'gvTechBenefitLines
-     gvTechBenefitLines.AutoGenerateColumns=false
+        txtEC_EnvironmentConditionsFilePath.Tag = ssmTOOL.GenInputs.EC_EnviromentalConditions_BatchFile
+        txtEC_EnvironmentConditionsFilePath.Text = fFileWoDir(ssmTOOL.GenInputs.EC_EnviromentalConditions_BatchFile, fPATH(vectoFile))
+        txtEC_EnvironmentConditionsFilePath.ReadOnly = True
+        btnEnvironmentConditionsSource.Enabled = False
+        btnOpenAenv.Enabled = False
 
-     Dim cIndex As Integer
+        btnNewBus.Tag = "New"
+        btnEditBus.Tag = "Edit"
 
-     'Column - Category
-     cIndex = gvTechBenefitLines.Columns.Add("Category", "Category")
-     gvTechBenefitLines.Columns(cIndex).DataPropertyName = "Category"
-     gvTechBenefitLines.Columns(cIndex).Width = 70
-     gvTechBenefitLines.Columns(cIndex).ReadOnly = True
-     gvTechBenefitLines.Columns(cIndex).HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
-     gvTechBenefitLines.Columns(cIndex).HeaderCell.Style.Padding = New Padding(1, 2, 1, 1)
+        BusParamGroupEdit.Location = New Point(30, 51)
+    End Sub
+    Private Sub setupBindings()
 
-     'Column - BenefitName
-     cIndex = gvTechBenefitLines.Columns.Add("BenefitName", "BenefitName")
-     gvTechBenefitLines.Columns(cIndex).DataPropertyName = "BenefitName"
-     gvTechBenefitLines.Columns(cIndex).Width = 330
-     gvTechBenefitLines.Columns(cIndex).ReadOnly = True
-     gvTechBenefitLines.Columns(cIndex).HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
-     gvTechBenefitLines.Columns(cIndex).HeaderCell.Style.Padding = New Padding(1, 2, 1, 1)
-
-     'Column - H
-     cIndex = gvTechBenefitLines.Columns.Add("H", "H")
-     gvTechBenefitLines.Columns(cIndex).DataPropertyName = "H"
-     gvTechBenefitLines.Columns(cIndex).Width = 60
-     gvTechBenefitLines.Columns(cIndex).ReadOnly = True
-     gvTechBenefitLines.Columns(cIndex).HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
-     gvTechBenefitLines.Columns(cIndex).HeaderCell.Style.Padding = New Padding(1, 2, 1, 1)
-
-     'Column - VH
-     cIndex = gvTechBenefitLines.Columns.Add("VH", "VH")
-     gvTechBenefitLines.Columns(cIndex).DataPropertyName = "VH"
-     gvTechBenefitLines.Columns(cIndex).Width = 60
-     gvTechBenefitLines.Columns(cIndex).ReadOnly = True
-     gvTechBenefitLines.Columns(cIndex).HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
-     gvTechBenefitLines.Columns(cIndex).HeaderCell.Style.Padding = New Padding(1, 2, 1, 1)
-
-
-     'Column - VV
-     cIndex = gvTechBenefitLines.Columns.Add("VV", "VV")
-     gvTechBenefitLines.Columns(cIndex).DataPropertyName = "VV"
-     gvTechBenefitLines.Columns(cIndex).Width = 60
-     gvTechBenefitLines.Columns(cIndex).ReadOnly = True
-     gvTechBenefitLines.Columns(cIndex).HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
-     gvTechBenefitLines.Columns(cIndex).HeaderCell.Style.Padding = New Padding(1, 2, 1, 1)
-
-     'Column - VC
-     cIndex = gvTechBenefitLines.Columns.Add("VC", "VC")
-     gvTechBenefitLines.Columns(cIndex).DataPropertyName = "VC"
-     gvTechBenefitLines.Columns(cIndex).Width = 60
-     gvTechBenefitLines.Columns(cIndex).ReadOnly = True
-     gvTechBenefitLines.Columns(cIndex).HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
-     gvTechBenefitLines.Columns(cIndex).HeaderCell.Style.Padding = New Padding(1, 2, 1, 1)
-
-     'Column - C
-     cIndex = gvTechBenefitLines.Columns.Add("C", "C")
-     gvTechBenefitLines.Columns(cIndex).DataPropertyName = "C"
-     gvTechBenefitLines.Columns(cIndex).Width = 60
-     gvTechBenefitLines.Columns(cIndex).ReadOnly = True
-     gvTechBenefitLines.Columns(cIndex).HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
-     gvTechBenefitLines.Columns(cIndex).HeaderCell.Style.Padding = New Padding(1, 2, 1, 1)
-
-     'Column - OnVehicle
-
-     Dim onV As New DataGridViewCheckBoxColumn()
-
-     cIndex = gvTechBenefitLines.Columns.Add(onV)
-     gvTechBenefitLines.Columns(cIndex).Name ="OnVehicle"
-     gvTechBenefitLines.Columns(cIndex).DataPropertyName = "OnVehicle"
-     gvTechBenefitLines.Columns(cIndex).Width = 60
-     gvTechBenefitLines.Columns(cIndex).ReadOnly = True
-     gvTechBenefitLines.Columns(cIndex).HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
-     gvTechBenefitLines.Columns(cIndex).HeaderCell.Style.Padding = New Padding(1, 2, 1, 1)
-
-
-     Dim deleteColumn As New DeleteColumn
-     With deleteColumn
-       .HeaderText=""
-       .ToolTipText="Delete this row"
-       .Name="Delete"
-       .Width=20
-       .DefaultCellStyle.Alignment= DataGridViewContentAlignment.MiddleCenter
-     end with
-     gvTechBenefitLines.Columns.Add(deleteColumn)
-
-     'Techlist Edit Panel
-     cboCategory.DataSource= GetCategories()
-     cboUnits.DataSource= {"Fraction"}
-     cboLineType.DataSource={"Normal","ActiveVentilation"}
-
-
-  End Sub
-  Private Sub setupBindings()
-
-  UpdateButtonText()
-
-  'TechBenefitLines
-   BindGrid()
-
-  'Bus Parameterisation
-  txtBusModel.DataBindings.Add("Text", ssmTOOL.genInputs, "BP_BusModel")
-  txtRegisteredPassengers.DataBindings.Add("Text", ssmTOOL.genInputs, "BP_NumberOfPassengers")
-  txtBusFloorType.DataBindings.Add("Text", ssmTOOL.genInputs, "BP_BusFloorType")
-  txtBusFloorSurfaceArea.DataBindings.Add("Text", ssmTOOL.genInputs, "BP_BusFloorSurfaceArea")
-  txtBusSurfaceArea.DataBindings.Add("Text", ssmTOOL.genInputs, "BP_BusSurfaceAreaM2")
-  txtBusWindowSurfaceArea.DataBindings.Add("Text", ssmTOOL.genInputs, "BP_BusWindowSurface")
-  txtBusVolume.DataBindings.Add("Text", ssmTOOL.genInputs, "BP_BusVolume")
-  txtBusLength.DataBindings.Add("Text", ssmTOOL.genInputs, "BP_BusLength")
-  txtBusWidth.DataBindings.Add("Text", ssmTOOL.genInputs, "BP_BusWidth")
-
-  'Boundary Conditions
-  txtBC_GFactor				                .DataBindings.Add("Text",ssmTool.genInputs,"BC_GFactor"				                 )   
-  txtBC_SolarClouding				        .DataBindings.Add("Text",ssmTool.genInputs,"BC_SolarClouding"				         ) 
-  txtBC_HeatPerPassengerIntoCabinW	        .DataBindings.Add("Text",ssmTool.genInputs,"BC_HeatPerPassengerIntoCabinW"	         )
-  txtBC_PassengerBoundaryTemperature        .DataBindings.Add("Text",ssmTool.genInputs,"BC_PassengerBoundaryTemperature"         )
-  txtBC_PassengerDensityLowFloor            .DataBindings.Add("Text",ssmTool.genInputs,"BC_PassengerDensityLowFloor"             )
-  txtBC_PassengerDensitySemiLowFloor	    .DataBindings.Add("Text",ssmTool.genInputs,"BC_PassengerDensitySemiLowFloor"	     ) 
-  txtBC_PassengerDensityRaisedFloor	        .DataBindings.Add("Text",ssmTool.genInputs,"BC_PassengerDensityRaisedFloor"	         )   
-  txtBC_CalculatedPassengerNumber	        .DataBindings.Add("Text",ssmTool.genInputs,"BC_CalculatedPassengerNumber"	         ) 
-  txtBC_UValues                             .DataBindings.Add("Text",ssmTool.genInputs,"BC_UValues"                              )
-  txtBC_HeatingBoundaryTemperature	        .DataBindings.Add("Text",ssmTool.genInputs,"BC_HeatingBoundaryTemperature"	         )
-  txtBC_CoolingBoundaryTemperature          .DataBindings.Add("Text",ssmTool.genInputs,"BC_CoolingBoundaryTemperature"           )
-  txtBC_HighVentilation                     .DataBindings.Add("Text",ssmTool.genInputs,"BC_HighVentilation"                      )
-  txtBC_lowVentilation	                    .DataBindings.Add("Text",ssmTool.genInputs,"BC_lowVentilation"	                     )
-  txtBC_High                                .DataBindings.Add("Text",ssmTool.genInputs,"BC_High"                                 )
-  txtBC_Low	                                .DataBindings.Add("Text",ssmTool.genInputs,"BC_Low"	                                 )   
-  txtBC_HighVentPowerW                      .DataBindings.Add("Text",ssmTool.genInputs,"BC_HighVentPowerW"                       )
-  txtBC_LowVentPowerW                       .DataBindings.Add("Text",ssmTool.genInputs,"BC_LowVentPowerW"                        )
-  txtBC_SpecificVentilationPower            .DataBindings.Add("Text",ssmTool.genInputs,"BC_SpecificVentilationPower"             )
-  txtBC_COP			                        .DataBindings.Add("Text",ssmTool.genInputs,"BC_COP"			                         )   
-  txtBC_AuxHeaterEfficiency		            .DataBindings.Add("Text",ssmTool.genInputs,"BC_AuxHeaterEfficiency"		             )   
-  txtBC_GCVDieselOrHeatingOil               .DataBindings.Add("Text",ssmTool.genInputs,"BC_GCVDieselOrHeatingOil"                )
-  txtBC_VolumicMassDieselOrHeatingOil	    .DataBindings.Add("Text",ssmTool.genInputs,"BC_VolumicMassDieselOrHeatingOil"	     ) 
-  txtBC_WindowAreaPerUnitBusLength	        .DataBindings.Add("Text",ssmTool.genInputs,"BC_WindowAreaPerUnitBusLength"	         )
-  txtBC_FrontRearWindowArea                 .DataBindings.Add("Text",ssmTool.genInputs,"BC_FrontRearWindowArea"                  )
-  txtBC_MaxTemperatureDeltaForLowFloorBusses.DataBindings.Add("Text",ssmTool.genInputs,"BC_MaxTemperatureDeltaForLowFloorBusses" )
-  txtBC_MaxPossibleBenefitFromTechnologyList.DataBindings.Add("Text",ssmTool.genInputs,"BC_MaxPossibleBenefitFromTechnologyList" )
-
-  'General Inputs Other   
-  'EnviromentalConditions	        		
-  txtEC_EnviromentalTemperature                         .DataBindings.Add("Text",ssmTool.genInputs,"EC_EnviromentalTemperature"                         )
-  txtEC_Solar   	                                    .DataBindings.Add("Text",ssmTool.genInputs,"EC_Solar"                                           ) 	                                         			                                     
-
-  'AC-system	
-  chkAC_InCabinRoomAC_System	                        .DataBindings.Add("Checked",ssmTool.genInputs,"AC_InCabinRoomAC_System"	                        ,False,DataSourceUpdateMode.OnPropertyChanged)
-  cboAC_CompressorType			                        .DataBindings.Add("Text",ssmTool.genInputs,"AC_CompressorType"		                            ,False,DataSourceUpdateMode.OnPropertyChanged)
-  txtAC_CompressorCapacitykW                            .DataBindings.Add("Text",ssmTool.genInputs,"AC_CompressorCapacitykW"	                        ) 				
-
-  'Ventilation	
-  chkVEN_VentilationOnDuringHeating				        .DataBindings.Add("Checked",ssmTool.genInputs,"VEN_VentilationOnDuringHeating"				    ,False,DataSourceUpdateMode.OnPropertyChanged) 
-  chkVEN_VentilationWhenBothHeatingAndACInactive		.DataBindings.Add("Checked",ssmTool.genInputs,"VEN_VentilationWhenBothHeatingAndACInactive"	    ,False,DataSourceUpdateMode.OnPropertyChanged) 
-  chkVEN_VentilationDuringAC			                .DataBindings.Add("Checked",ssmTool.genInputs,"VEN_VentilationDuringAC"			                ,False,DataSourceUpdateMode.OnPropertyChanged) 
-  cboVEN_VentilationFlowSettingWhenHeatingAndACInactive .DataBindings.Add("Text",ssmTool.genInputs,"VEN_VentilationFlowSettingWhenHeatingAndACInactive" )
-  cboVEN_VentilationDuringHeating			            .DataBindings.Add("Text",ssmTool.genInputs,"VEN_VentilationDuringHeating"			            )
-  cboVEN_VentilationDuringCooling				        .DataBindings.Add("Text",ssmTool.genInputs,"VEN_VentilationDuringCooling"				        ) 					
-
-  'Aux. Heater  
-  txtAH_EngineWasteHeatkW	                            .DataBindings.Add("Text",ssmTool.genInputs,"AH_EngineWasteHeatkW"	                            )
-  txtAH_FuelFiredHeaterkW                               .DataBindings.Add("Text",ssmTool.genInputs,"AH_FuelFiredHeaterkW"                               )
-
-
-End Sub
-
-  'GeneralInputControlEvents
-  Private Sub cboBuses_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboBuses.SelectedIndexChanged
-
-  If cboBuses.SelectedIndex > 0 Then
-
-
-      Dim bus As IBus = DirectCast(cboBuses.SelectedItem, IBus)
-
-      txtBusModel.Text = bus.Model
-      txtRegisteredPassengers.Text = bus.RegisteredPassengers
-      txtBusFloorType.Text = bus.FloorType
-      'ssmTOOL.genInputs.BP_BusFloorSurfaceArea Calculated
-      txtBusSurfaceArea.Text = bus.AreaInMetresSquared
-      'ssmTOOL.genInputs.BP_BusWindowSurface Calculated
-      txtBusVolume.Text = bus.VolumneInMetresQubed
-      txtBusLength.Text = bus.LengthInMetres
-      txtBusWidth.Text = bus.WidthInMetres
-
-      ssmTOOL.GenInputs.BP_BusModel = bus.Model
-      ssmTOOL.GenInputs.BP_NumberOfPassengers= bus.RegisteredPassengers
-      ssmTOOL.GenInputs.BP_BusFloorType = bus.FloorType
-      ssmTOOL.GenInputs.BP_BusSurfaceAreaM2= bus.AreaInMetresSquared
-      ssmTOOL.GenInputs.BP_BusVolume = bus.VolumneInMetresQubed
-      ssmTOOL.GenInputs.BP_BusLength = bus.LengthInMetres
-      ssmTOOL.GenInputs.BP_BusWidth = bus.WidthInMetres
-
-
-      txtBusFloorSurfaceArea.Text= ssmTOOL.GenInputs.BP_BusFloorSurfaceArea
-      txtBusWindowSurfaceArea.text  = ssmTOOL.GenInputs.BP_BusWindowSurface
-
-     ' txtBusWidth.Refresh
-
-
-      'txtRegisteredPassengers.Focus()
-      'txtBusModel.focus()
-      'txtRegisteredPassengers.Focus()
-      'txtBusFloorType.focus()
-      'txtBusSurfaceArea.focus()
-      'txtBusVolume.focus()
-      'txtBusLength.focus()
-      'txtBusWidth.Focus()
-      'txtRegisteredPassengers.Focus()
-
-
-
-
-  End If
-
-
-End Sub
-
-  'Validators
-  Public Sub Validating_GeneralInputsBP(sender As Object, e As CancelEventArgs) Handles txtRegisteredPassengers.Validating, txtBusWidth.Validating, txtBusVolume.Validating, txtBusSurfaceArea.Validating, txtBusModel.Validating, txtBusLength.Validating, txtBusFloorSurfaceArea.Validating, txtBC_PassengerBoundaryTemperature.Validated
+        UpdateButtonText()
 
-    e.Cancel = Not Validate_GeneralInputsBP()
+        'TechBenefitLines
+        BindGrid()
 
-  End Sub
-  Public Sub Validating_GeneralInputsBC(sender As Object, e As CancelEventArgs) Handles  txtBC_GFactor.Validating, txtBC_VolumicMassDieselOrHeatingOil.Validating, txtBC_SpecificVentilationPower.Validating, txtBC_PassengerDensitySemiLowFloor.Validating, txtBC_PassengerDensityRaisedFloor.Validating, txtBC_PassengerDensityLowFloor.Validating, txtBC_MaxTemperatureDeltaForLowFloorBusses.Validating, txtBC_MaxPossibleBenefitFromTechnologyList.Validating, txtBC_lowVentilation.Validating, txtBC_HighVentilation.Validating, txtBC_HeatingBoundaryTemperature.Validating, txtBC_GCVDieselOrHeatingOil.Validating, txtBC_COP.Validating, txtBC_CoolingBoundaryTemperature.Validating, txtBC_AuxHeaterEfficiency.Validating
+        'Bus Parameterisation
+        txtBusModel.DataBindings.Add("Text", ssmTOOL.GenInputs, "BP_BusModel", False, DataSourceUpdateMode.OnPropertyChanged)
+        txtRegisteredPassengers.DataBindings.Add("Text", ssmTOOL.GenInputs, "BP_NumberOfPassengers", False, DataSourceUpdateMode.OnPropertyChanged)
+        cmbBusFloorType.DataBindings.Add("Text", ssmTOOL.GenInputs, "BP_BusFloorType", False, DataSourceUpdateMode.OnPropertyChanged)
+        chkIsDoubleDecker.DataBindings.Add("Checked", ssmTOOL.GenInputs, "BP_DoubleDecker", False, DataSourceUpdateMode.OnPropertyChanged)
+        txtBusLength.DataBindings.Add("Text", ssmTOOL.GenInputs, "BP_BusLength")
+        txtBusWidth.DataBindings.Add("Text", ssmTOOL.GenInputs, "BP_BusWidth")
+        txtBusHeight.DataBindings.Add("Text", ssmTOOL.GenInputs, "BP_BusHeight")
+
+        txtBusFloorSurfaceArea.DataBindings.Add("Text", ssmTOOL.GenInputs, "BP_BusFloorSurfaceArea", False, DataSourceUpdateMode.OnPropertyChanged)
+        txtBusWindowSurfaceArea.DataBindings.Add("Text", ssmTOOL.GenInputs, "BP_BusWindowSurface")
+        txtBusSurfaceArea.DataBindings.Add("Text", ssmTOOL.GenInputs, "BP_BusSurfaceAreaM2")
+        txtBusVolume.DataBindings.Add("Text", ssmTOOL.GenInputs, "BP_BusVolume")
+
+        'Boundary Conditions
+        txtBC_GFactor.DataBindings.Add("Text", ssmTool.genInputs, "BC_GFactor")
+        txtBC_SolarClouding.DataBindings.Add("Text", ssmTool.genInputs, "BC_SolarClouding")
+        txtBC_HeatPerPassengerIntoCabinW.DataBindings.Add("Text", ssmTool.genInputs, "BC_HeatPerPassengerIntoCabinW")
+        txtBC_PassengerBoundaryTemperature.DataBindings.Add("Text", ssmTool.genInputs, "BC_PassengerBoundaryTemperature")
+        txtBC_PassengerDensityLowFloor.DataBindings.Add("Text", ssmTool.genInputs, "BC_PassengerDensityLowFloor")
+        txtBC_PassengerDensitySemiLowFloor.DataBindings.Add("Text", ssmTool.genInputs, "BC_PassengerDensitySemiLowFloor")
+        txtBC_PassengerDensityRaisedFloor.DataBindings.Add("Text", ssmTool.genInputs, "BC_PassengerDensityRaisedFloor")
+        txtBC_CalculatedPassengerNumber.DataBindings.Add("Text", ssmTool.genInputs, "BC_CalculatedPassengerNumber")
+        txtBC_UValues.DataBindings.Add("Text", ssmTool.genInputs, "BC_UValues")
+        txtBC_HeatingBoundaryTemperature.DataBindings.Add("Text", ssmTool.genInputs, "BC_HeatingBoundaryTemperature")
+        txtBC_CoolingBoundaryTemperature.DataBindings.Add("Text", ssmTool.genInputs, "BC_CoolingBoundaryTemperature")
+        txtBC_HighVentilation.DataBindings.Add("Text", ssmTool.genInputs, "BC_HighVentilation")
+        txtBC_lowVentilation.DataBindings.Add("Text", ssmTool.genInputs, "BC_lowVentilation")
+        txtBC_High.DataBindings.Add("Text", ssmTool.genInputs, "BC_High")
+        txtBC_Low.DataBindings.Add("Text", ssmTool.genInputs, "BC_Low")
+        txtBC_HighVentPowerW.DataBindings.Add("Text", ssmTool.genInputs, "BC_HighVentPowerW")
+        txtBC_LowVentPowerW.DataBindings.Add("Text", ssmTool.genInputs, "BC_LowVentPowerW")
+        txtBC_SpecificVentilationPower.DataBindings.Add("Text", ssmTool.genInputs, "BC_SpecificVentilationPower")
+        txtBC_COP.DataBindings.Add("Text", ssmTool.genInputs, "BC_COP")
+        txtBC_AuxHeaterEfficiency.DataBindings.Add("Text", ssmTool.genInputs, "BC_AuxHeaterEfficiency")
+        txtBC_GCVDieselOrHeatingOil.DataBindings.Add("Text", ssmTool.genInputs, "BC_GCVDieselOrHeatingOil")
+        txtBC_VolumicMassDieselOrHeatingOil.DataBindings.Add("Text", ssmTool.genInputs, "BC_VolumicMassDieselOrHeatingOil")
+        txtBC_WindowAreaPerUnitBusLength.DataBindings.Add("Text", ssmTool.genInputs, "BC_WindowAreaPerUnitBusLength")
+        txtBC_FrontRearWindowArea.DataBindings.Add("Text", ssmTool.genInputs, "BC_FrontRearWindowArea")
+        txtBC_MaxTemperatureDeltaForLowFloorBusses.DataBindings.Add("Text", ssmTool.genInputs, "BC_MaxTemperatureDeltaForLowFloorBusses")
+        txtBC_MaxPossibleBenefitFromTechnologyList.DataBindings.Add("Text", ssmTOOL.GenInputs, "BC_MaxPossibleBenefitFromTechnologyList")
+
+        'General Inputs Other   
+        'EnviromentalConditions	        		
+        txtEC_EnviromentalTemperature.DataBindings.Add("Text", ssmTool.genInputs, "EC_EnviromentalTemperature")
+        txtEC_Solar.DataBindings.Add("Text", ssmTOOL.GenInputs, "EC_Solar")
+        chkEC_BatchMode.DataBindings.Add("Checked", ssmTOOL.GenInputs, "EC_EnviromentalConditions_BatchEnabled", False, DataSourceUpdateMode.OnPropertyChanged)
+
+        'AC-system	
+        chkAC_InCabinRoomAC_System.DataBindings.Add("Checked", ssmTool.genInputs, "AC_InCabinRoomAC_System", False, DataSourceUpdateMode.OnPropertyChanged)
+        cboAC_CompressorType.DataBindings.Add("Text", ssmTool.genInputs, "AC_CompressorType", False, DataSourceUpdateMode.OnPropertyChanged)
+        txtAC_CompressorCapacitykW.DataBindings.Add("Text", ssmTool.genInputs, "AC_CompressorCapacitykW")
+
+        'Ventilation	
+        chkVEN_VentilationOnDuringHeating.DataBindings.Add("Checked", ssmTool.genInputs, "VEN_VentilationOnDuringHeating", False, DataSourceUpdateMode.OnPropertyChanged)
+        chkVEN_VentilationWhenBothHeatingAndACInactive.DataBindings.Add("Checked", ssmTool.genInputs, "VEN_VentilationWhenBothHeatingAndACInactive", False, DataSourceUpdateMode.OnPropertyChanged)
+        chkVEN_VentilationDuringAC.DataBindings.Add("Checked", ssmTool.genInputs, "VEN_VentilationDuringAC", False, DataSourceUpdateMode.OnPropertyChanged)
+        cboVEN_VentilationFlowSettingWhenHeatingAndACInactive.DataBindings.Add("Text", ssmTool.genInputs, "VEN_VentilationFlowSettingWhenHeatingAndACInactive")
+        cboVEN_VentilationDuringHeating.DataBindings.Add("Text", ssmTool.genInputs, "VEN_VentilationDuringHeating")
+        cboVEN_VentilationDuringCooling.DataBindings.Add("Text", ssmTool.genInputs, "VEN_VentilationDuringCooling")
+
+        'Aux. Heater  
+        txtAH_FuelFiredHeaterkW.DataBindings.Add("Text", ssmTOOL.GenInputs, "AH_FuelFiredHeaterkW")
 
-    e.Cancel = Not Validate_GeneralInputsBC()
 
-  End Sub   
-  Public Sub Validating_GeneralInputsOther(sender As Object, e As CancelEventArgs) Handles txtEC_Solar.Validating, txtEC_EnviromentalTemperature.Validating, txtAH_FuelFiredHeaterkW.Validating, txtAH_EngineWasteHeatkW.Validating, txtAC_CompressorCapacitykW.Validating 
+    End Sub
 
-    e.Cancel = Not Validate_GeneralInputsOther()
+    'GeneralInputControlEvents
+    Private Sub cboBuses_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboBuses.SelectedIndexChanged
 
-  End Sub
-  Public Function Validate_GeneralInputsBP() As Boolean
+        If cboBuses.SelectedIndex > 0 Then
 
-       Dim result As Boolean = True
+            Dim bus As IBus = DirectCast(cboBuses.SelectedItem, IBus)
 
-       'BUS PARAMETERISATION
-       '********************
+            ssmTOOL.GenInputs.BP_BusModel = bus.Model
+            ssmTOOL.GenInputs.BP_NumberOfPassengers = bus.RegisteredPassengers
+            ssmTOOL.GenInputs.BP_BusFloorType = bus.FloorType
+            ssmTOOL.GenInputs.BP_DoubleDecker = bus.IsDoubleDecker
+            ssmTOOL.GenInputs.BP_BusLength = bus.LengthInMetres
+            ssmTOOL.GenInputs.BP_BusWidth = bus.WidthInMetres
+            ssmTOOL.GenInputs.BP_BusHeight = bus.HeightInMetres
 
-      'txtBusModel
-       If txtBusModel.Text.Trim.Length = 0 Then
-         ErrorProvider1.SetError(txtBusModel, "Please enter a bus model")
-         result = False
-       Else
-          ErrorProvider1.SetError(txtBusModel, String.Empty)
-       End If
+            txtBusModel.Text = bus.Model
+            txtRegisteredPassengers.Text = bus.RegisteredPassengers
+            cmbBusFloorType.Text = bus.FloorType
+            txtBusLength.Text = bus.LengthInMetres
+            txtBusWidth.Text = bus.WidthInMetres
+            txtBusHeight.Text = bus.HeightInMetres
+            chkIsDoubleDecker.Checked = bus.IsDoubleDecker
 
+            txtBusFloorSurfaceArea.Text = ssmTOOL.GenInputs.BP_BusFloorSurfaceArea
+            txtBusWindowSurfaceArea.Text = ssmTOOL.GenInputs.BP_BusWindowSurface
+            txtBusSurfaceArea.Text = ssmTOOL.GenInputs.BP_BusSurfaceAreaM2
+            txtBusVolume.Text = ssmTOOL.GenInputs.BP_BusVolume
 
-       'txtRegisteredPassengers
-       If Not IsZeroOrPostiveNumber(txtRegisteredPassengers.Text) Then
-         ErrorProvider1.SetError(txtRegisteredPassengers, "Please enter an integer of zero or higher ( Bus : Number of Passengers )")
-         result = False
-       Else
-        ErrorProvider1.SetError(txtRegisteredPassengers, String.Empty)
-       End If
+            btnEditBus.Enabled = True
 
-      'txtBusWidth
-       If Not IsPostiveNumber(txtBusWidth.Text) Then
-         ErrorProvider1.SetError(txtBusWidth, "Please enter a positive number ( BusWidth : linear metres )")
-         result = False
-       Else
-        ErrorProvider1.SetError(txtBusWidth, String.Empty)
-       End If
+        Else
+            btnEditBus.Enabled = False
+        End If
+
+
+    End Sub
+
+    'Validators
+    Public Sub Validating_GeneralInputsBP(sender As Object, e As CancelEventArgs) Handles txtRegisteredPassengers.Validating, txtBusWidth.Validating, txtBusHeight.Validating, txtBusLength.Validating, txtBusModel.Validating
+
+        e.Cancel = Not Validate_GeneralInputsBP()
+
+    End Sub
+    Public Sub Validating_GeneralInputsBC(sender As Object, e As CancelEventArgs) Handles txtBC_GFactor.Validating, txtBC_VolumicMassDieselOrHeatingOil.Validating, txtBC_SpecificVentilationPower.Validating, txtBC_PassengerDensitySemiLowFloor.Validating, txtBC_PassengerDensityRaisedFloor.Validating, txtBC_PassengerDensityLowFloor.Validating, txtBC_MaxTemperatureDeltaForLowFloorBusses.Validating, txtBC_MaxPossibleBenefitFromTechnologyList.Validating, txtBC_lowVentilation.Validating, txtBC_HighVentilation.Validating, txtBC_HeatingBoundaryTemperature.Validating, txtBC_GCVDieselOrHeatingOil.Validating, txtBC_COP.Validating, txtBC_CoolingBoundaryTemperature.Validating, txtBC_AuxHeaterEfficiency.Validating, txtBC_PassengerBoundaryTemperature.Validating
+
+        e.Cancel = Not Validate_GeneralInputsBC()
+
+    End Sub
+    Public Sub Validating_GeneralInputsOther(sender As Object, e As CancelEventArgs) Handles txtEC_Solar.Validating, txtEC_EnviromentalTemperature.Validating, txtAH_FuelFiredHeaterkW.Validating, txtAC_CompressorCapacitykW.Validating, txtEC_EnvironmentConditionsFilePath.Validating
+
+        e.Cancel = Not Validate_GeneralInputsOther()
+
+    End Sub
+    Public Function Validate_GeneralInputsBP() As Boolean
+
+        Dim result As Boolean = True
+
+        'BUS PARAMETERISATION
+        '********************
+
+        'txtBusModel
+        If txtBusModel.Text.Trim.Length = 0 Then
+            ErrorProvider1.SetError(txtBusModel, "Please enter a bus model")
+            result = False
+        Else
+            ErrorProvider1.SetError(txtBusModel, String.Empty)
+        End If
+
+
+        'txtRegisteredPassengers
+        If Not IsNumberGreaterThanOne(txtRegisteredPassengers.Text) Then
+            ErrorProvider1.SetError(txtRegisteredPassengers, "Please enter an integer of one or higher ( Bus : Number of Passengers )")
+            result = False
+        Else
+            ErrorProvider1.SetError(txtRegisteredPassengers, String.Empty)
+        End If
 
-        'txtBusVolume
-        If Not IsPostiveNumber(txtBusVolume.Text) Then
-         ErrorProvider1.SetError(txtBusVolume, "Please enter a positive number ( BusVolume : cubic metres )")
-         result = False
+        'txtBusWidth
+        If Not IsPostiveNumber(txtBusWidth.Text) Then
+            ErrorProvider1.SetError(txtBusWidth, "Please enter a positive number ( BusWidth : linear metres )")
+            result = False
         Else
-         ErrorProvider1.SetError(txtBusVolume, String.Empty)
+            ErrorProvider1.SetError(txtBusWidth, String.Empty)
         End If
 
-        'txtBusSurfaceArea
-        If Not IsPostiveNumber(txtBusSurfaceArea.Text) Then
-         ErrorProvider1.SetError(txtBusSurfaceArea, "Please enter a positive number ( BusSurfaceArea : square metres )")
-         result = False
+        'txtBusHeight
+        If Not IsPostiveNumber(txtBusHeight.Text) Then
+            ErrorProvider1.SetError(txtBusHeight, "Please enter a positive number ( BusHeight : linear metres )")
+            result = False
         Else
-         ErrorProvider1.SetError(txtBusSurfaceArea, String.Empty)
+            ErrorProvider1.SetError(txtBusHeight, String.Empty)
         End If
 
         'txtBusLength
         If Not IsPostiveNumber(txtBusLength.Text) Then
-         ErrorProvider1.SetError(txtBusLength, "Please enter a positive number ( BusLength : linear metres )")
-         result = False
+            ErrorProvider1.SetError(txtBusLength, "Please enter a positive number ( BusLength : linear metres )")
+            result = False
+        Else
+            ErrorProvider1.SetError(txtBusLength, String.Empty)
+        End If
+
+        'Set Tab Color
+        UpdateTabStatus("tabGeneralInputsBP", result)
+
+        Return result
+
+    End Function
+    Public Function Validate_GeneralInputsBPEdit() As Boolean
+
+        Dim result As Boolean = True
+
+        'BUS PARAMETERISATION
+        '********************
+
+        'txtBusModel
+        If txtEditBusModel.Text.Trim.Length = 0 Then
+            ErrorProvider1.SetError(txtEditBusModel, "Please enter a bus model")
+            result = False
+        Else
+            ErrorProvider1.SetError(txtEditBusModel, String.Empty)
+        End If
+
+        'cmbEditFloorType
+        If cmbEditFloorType.Text.Trim.Length = 0 Then
+            ErrorProvider1.SetError(cmbEditFloorType, "Please select a floor type")
+            result = False
         Else
-         ErrorProvider1.SetError(txtBusLength, String.Empty)
+            ErrorProvider1.SetError(cmbEditFloorType, String.Empty)
         End If
 
+        'cmbEditEngineType
+        If cmbEditEngineType.Text.Trim.Length = 0 Then
+            ErrorProvider1.SetError(cmbEditEngineType, "Please select an engine type")
+            result = False
+        Else
+            ErrorProvider1.SetError(cmbEditEngineType, String.Empty)
+        End If
 
-        'txtBusFloorSurfaceArea 
-        If Not IsPostiveNumber(txtBusFloorSurfaceArea.Text) Then
-         ErrorProvider1.SetError(txtBusFloorSurfaceArea, "Please enter a positive number ( BusFloorSurfaceArea : square metres )")
-         result = False
+        'txtRegisteredPassengers
+        If Not IsNumberGreaterThanOne(txtEditBusPassengers.Text) Then
+            ErrorProvider1.SetError(txtEditBusPassengers, "Please enter an integer of one or higher ( Bus : Number of Passengers )")
+            result = False
         Else
-         ErrorProvider1.SetError(txtBusFloorSurfaceArea, String.Empty)
+            ErrorProvider1.SetError(txtEditBusPassengers, String.Empty)
+        End If
+
+        'txtBusLength
+        If Not IsPostiveNumber(txtEditBusLength.Text) Then
+            ErrorProvider1.SetError(txtEditBusLength, "Please enter a positive number ( Buslength : linear metres )")
+            result = False
+        Else
+            ErrorProvider1.SetError(txtEditBusLength, String.Empty)
+        End If
+
+        'txtBusWidth
+        If Not IsPostiveNumber(txtEditBusWidth.Text) Then
+            ErrorProvider1.SetError(txtEditBusWidth, "Please enter a positive number ( BusWidth : linear metres )")
+            result = False
+        Else
+            ErrorProvider1.SetError(txtEditBusWidth, String.Empty)
+        End If
+
+        'txtBusHeight
+        If Not IsPostiveNumber(txtEditBusHeight.Text) Then
+            ErrorProvider1.SetError(txtEditBusHeight, "Please enter a positive number ( BusHeight : linear metres )")
+            result = False
+        Else
+            ErrorProvider1.SetError(txtEditBusHeight, String.Empty)
         End If
 
         'Set Tab Color
@@ -424,274 +477,301 @@ End Sub
 
         Return result
 
-End Function
-  Public Function Validate_GeneralInputsBC() As Boolean
+    End Function
+    Public Function Validate_GeneralInputsBC() As Boolean
 
-         Dim result As Boolean = True
+        Dim result As Boolean = True
 
         'BOUNDARY CONDITIONS
         '*******************
 
-         'txtBC_GFactor		
-         IsTextBoxNumber(txtBC_GFactor,"Please enter a number ( GFactor )",result) 
+        'txtBC_GFactor		
+        IsTextBoxNumber(txtBC_GFactor, "Please enter a number ( GFactor )", result)
         'BC_SolarClouding				      : Calculated    
         'BC_HeatPerPassengerIntoCabinW	      : Calculated             
         'txtBC_PassengerBoundaryTemperature    
-         IsTextBoxNumber(txtBC_PassengerBoundaryTemperature,"Please enter a number ( Passenger Boundary Temperature )",result)
+        IsTextBoxNumber(txtBC_PassengerBoundaryTemperature, "Please enter a number ( Passenger Boundary Temperature )", result)
         'txtBC_PassengerDensityLowFloor   
-         IsTextBoxNumber(txtBC_PassengerDensityLowFloor,"Please enter a number ( Passenger Density Low Floor )",result)
+        IsTextBoxNumber(txtBC_PassengerDensityLowFloor, "Please enter a number ( Passenger Density Low Floor )", result)
         'txtBC_PassengerDensitySemiLowFloor	 
-         IsTextBoxNumber(txtBC_PassengerDensitySemiLowFloor,"Please enter a number ( Passenger Density Semi Low Floor )",result)
+        IsTextBoxNumber(txtBC_PassengerDensitySemiLowFloor, "Please enter a number ( Passenger Density Semi Low Floor )", result)
         'txtBC_PassengerDensityRaisedFloor	
-         IsTextBoxNumber(txtBC_PassengerDensityRaisedFloor,"Please enter a number ( Passenger Density Raised Floor )",result)
+        IsTextBoxNumber(txtBC_PassengerDensityRaisedFloor, "Please enter a number ( Passenger Density Raised Floor )", result)
         'txtBC_CalculatedPassengerNumber	: Calculated          
         'txtBC_UValues                      : Calculated                            
         'txtBC_HeatingBoundaryTemperature	
-         IsTextBoxNumber(txtBC_HeatingBoundaryTemperature,"Please enter a number ( Heating Boundary Temperature )",result)             
+        IsTextBoxNumber(txtBC_HeatingBoundaryTemperature, "Please enter a number ( Heating Boundary Temperature )", result)
         'txtBC_CoolingBoundaryTemperature 
-         IsTextBoxNumber(txtBC_CoolingBoundaryTemperature,"Please enter a number ( Cooling Boundary Temperature )",result)                 
+        IsTextBoxNumber(txtBC_CoolingBoundaryTemperature, "Please enter a number ( Cooling Boundary Temperature )", result)
         'txtBC_HighVentilation    
-         IsTextBoxNumber(txtBC_HighVentilation,"Please enter a number ( High Ventilation )",result)                    
+        IsTextBoxNumber(txtBC_HighVentilation, "Please enter a number ( High Ventilation )", result)
         'txtBC_lowVentilation	
-         IsTextBoxNumber(txtBC_lowVentilation,"Please enter a number ( Low Ventilation )",result)                  
+        IsTextBoxNumber(txtBC_lowVentilation, "Please enter a number ( Low Ventilation )", result)
         'txtBC_High             : Calculated                                     
         'txtBC_Low	            : Calculated                                
         'txtBC_HighVentPowerW   : Calculated                  
         'txtBC_LowVentPowerW    : Calculated                           
         'txtBC_SpecificVentilationPower 
-         IsTextBoxNumber(txtBC_SpecificVentilationPower,"Please enter a number ( Specific Ventilation Power )",result)                       
+        IsTextBoxNumber(txtBC_SpecificVentilationPower, "Please enter a number ( Specific Ventilation Power )", result)
         'txtBC_COP	
-         IsTextBoxNumber(txtBC_COP,"Please enter a number ( COP )",result)       		                      
+        IsTextBoxNumber(txtBC_COP, "Please enter a number ( COP )", result)
         'txtBC_AuxHeaterEfficiency		
-         IsTextBoxNumber(txtBC_AuxHeaterEfficiency,"Please enter a number ( Aux Heater Efficiency )",result)                    
+        IsTextBoxNumber(txtBC_AuxHeaterEfficiency, "Please enter a number ( Aux Heater Efficiency )", result)
         'txtBC_GCVDieselOrHeatingOil   
-         IsTextBoxNumber(txtBC_GCVDieselOrHeatingOil,"Please enter a number ( GCV Diesel Or Heating Oil )",result)                      
+        IsTextBoxNumber(txtBC_GCVDieselOrHeatingOil, "Please enter a number ( GCV Diesel Or Heating Oil )", result)
         'txtBC_VolumicMassDieselOrHeatingOil	
-         IsTextBoxNumber(txtBC_VolumicMassDieselOrHeatingOil,"Please enter a number ( Volumic Mass Diesel Or Heating Oil )",result)                   
+        IsTextBoxNumber(txtBC_VolumicMassDieselOrHeatingOil, "Please enter a number ( Volumic Mass Diesel Or Heating Oil )", result)
         'txtBC_WindowAreaPerUnitBusLength	     : Calculated 
         'txtBC_FrontRearWindowArea               : Calculated                      
         'txtBC_MaxTemperatureDeltaForLowFloorBusses
-         IsTextBoxNumber(txtBC_MaxTemperatureDeltaForLowFloorBusses,"Please enter a number ( Max Temp Delta For Low Floor Busses )",result)   
+        IsTextBoxNumber(txtBC_MaxTemperatureDeltaForLowFloorBusses, "Please enter a number ( Max Temp Delta For Low Floor Busses )", result)
         'txtBC_MaxPossibleBenefitFromTechnologyList
-         IsTextBoxNumber(txtBC_MaxPossibleBenefitFromTechnologyList,"Please enter a number ( Max Benefit From Technology List )",result)   
+        IsTextBoxNumber(txtBC_MaxPossibleBenefitFromTechnologyList, "Please enter a number ( Max Benefit From Technology List )", result)
 
         'Set Tab Color
         UpdateTabStatus("tabGeneralInputsBC", result)
 
         Return result
 
-  End Function
-  Public Function Validate_GeneralInputsOther() as Boolean
-
-      Dim result As Boolean = true
-
-    'EnviromentalConditions				
-     IsTextBoxNumber(txtEC_EnviromentalTemperature,"Please enter a number (Environmental Temperature)",result)                  
-    'txtEC_Solar   	                                  
-     IsTextBoxNumber(txtEC_Solar,"Please enter a number (Solar)",result) 
-         					                                         
-    ''AC-system				                                     
-    'chkAC_InCabinRoomAC_System	     : Selection                  
-    'cboAC_CompressorType			 : Selection                
-    'txtAC_CompressorCapacitykW	 
-     IsTextBoxNumber(txtAC_CompressorCapacitykW,"Please enter a number ( Compressor Capacity )",result)                      
-    					
-    ''Ventilation				
-    'chkVEN_VentilationOnDuringHeating				          : Selection
-    'chkVEN_VentilationWhenBothHeatingAndACInactive		      : Selection
-    'chkVEN_VentilationDuringAC			                      : Selection
-    'cboVEN_VentilationFlowSettingWhenHeatingAndACInactive    : Selection
-    'cboVEN_VentilationDuringHeating			              : Selection
-    'cboVEN_VentilationDuringCooling				          : Selection
-    					
-    ''Aux. Heater				
-    ' txtAH_EngineWasteHeatkW	
-     IsTextBoxNumber(txtAH_EngineWasteHeatkW,"Please enter a number ( Engine waste heat )",result)                                                          
-    'txtAH_FuelFiredHeaterkW  
-     IsTextBoxNumber(txtAH_FuelFiredHeaterkW,"Please enter a number ( Fuel fired heater )",result)
-    
-     'Set Tab Color
-     UpdateTabStatus("tabGeneralInputsOther", result)
-
-     Return result                             
-
-  End Function
-  Public Sub Validating_TechLineEdit(sender As Object, e As CancelEventArgs) 'Handles txtSemiLowFloorV.Validating, txtSemiLowFloorH.Validating, txtSemiLowFloorC.Validating, txtRaisedFloorV.Validating, txtRaisedFloorH.Validating, txtRaisedFloorC.Validating, txtLowFloorV.Validating, txtLowFloorH.Validating, txtLowFloorC.Validating, txtBenefitName.Validating, chkOnVehicle.Validating, chkActiveVV.Validating, chkActiveVH.Validating, chkActiveVC.Validating, cboUnits.Validating, cboLineType.Validating, cboCategory.Validating
-
-    e.Cancel = Not Validate_TechLineEdit()
-
-  End Sub
-  Public Function Validate_TechLineEdit() As Boolean
-
-     Dim result As Boolean = True
-     
-      IsEmptyString(cboCategory.Text      ,cboCategory     ,"Please enter a valid category"                       ,result)
-      IsEmptyString(txtBenefitName.Text   ,txtBenefitName  ,"Please enter a valid Benefit Name"                   ,result)
-      IsEmptyString(cboUnits.Text         ,cboUnits        ,"Please enter valid units"                            ,result)
-      IsEmptyString(cboLineType.Text      , cboLineType    ,"Please enter a valid line type"                      ,result)
-      IsTextBoxNumber(txtLowFloorH                         ,"Please enter a valid number for this floor variable" ,result)
-      IsTextBoxNumber(txtLowFloorV                         ,"Please enter a valid number for this floor variable" ,result)
-      IsTextBoxNumber(txtLowFloorC                         ,"Please enter a valid number for this floor variable" ,result)
-      IsTextBoxNumber(txtSemiLowFloorH                     ,"Please enter a valid number for this floor variable" ,result)
-      IsTextBoxNumber(txtSemiLowFloorV                     ,"Please enter a valid number for this floor variable" ,result)
-      IsTextBoxNumber(txtSemiLowFloorC                     ,"Please enter a valid number for this floor variable" ,result)
-      IsTextBoxNumber(txtRaisedFloorH                      ,"Please enter a valid number for this floor variable" ,result)
-      IsTextBoxNumber(txtRaisedFloorV                      ,"Please enter a valid number for this floor variable" ,result)
-      IsTextBoxNumber(txtRaisedFloorC                      ,"Please enter a valid number for this floor variable" ,result)
-
-       
-     Return result
-  
-  End Function
-
-  'Validation Helpers
-  Private Sub IsTextBoxNumber( control As TextBox, errorProviderMessage As String , ByRef result As Boolean) 
-
-      If Not IsNumeric(control.Text) Then
-         ErrorProvider1.SetError(control, errorProviderMessage)
-         result =  False
+    End Function
+    Public Function Validate_GeneralInputsOther() As Boolean
+
+        Dim result As Boolean = True
+
+        If (Not chkEC_BatchMode.Checked) Then
+            'EnviromentalConditions				
+            IsTextBoxNumber(txtEC_EnviromentalTemperature, "Please enter a number (Environmental Temperature)", result)
+            'txtEC_Solar   	                                  
+            IsTextBoxNumber(txtEC_Solar, "Please enter a number (Solar)", result)
+        End If
+
+
+        ''AC-system				                                     
+        'chkAC_InCabinRoomAC_System	     : Selection                  
+        'cboAC_CompressorType			 : Selection                
+        'txtAC_CompressorCapacitykW	 
+        IsTextBoxNumber(txtAC_CompressorCapacitykW, "Please enter a number ( Compressor Capacity )", result)
+
+        ''Ventilation				
+        'chkVEN_VentilationOnDuringHeating				          : Selection
+        'chkVEN_VentilationWhenBothHeatingAndACInactive		      : Selection
+        'chkVEN_VentilationDuringAC			                      : Selection
+        'cboVEN_VentilationFlowSettingWhenHeatingAndACInactive    : Selection
+        'cboVEN_VentilationDuringHeating			              : Selection
+        'cboVEN_VentilationDuringCooling				          : Selection
+
+        ''Aux. Heater				
+        'txtAH_FuelFiredHeaterkW  
+        IsTextBoxNumber(txtAH_FuelFiredHeaterkW, "Please enter a number ( Fuel fired heater )", result)
+
+        Try
+            Dim environmentalConditionsMap As IEnvironmentalConditionsMap = New EnvironmentalConditionsMap(txtEC_EnvironmentConditionsFilePath.Tag)
+            ErrorProvider1.SetError(txtEC_EnvironmentConditionsFilePath, String.Empty)
+            ssmTOOL.GenInputs.EC_EnviromentalConditions_BatchFile = txtEC_EnvironmentConditionsFilePath.Tag
+        Catch ex As Exception
+            ErrorProvider1.SetError(txtEC_EnvironmentConditionsFilePath, "Error : The environment conditions file is invalid or cannot be found, please select a valid aenv file.")
+            result = False
+        End Try
+
+        'Set Tab Color
+        UpdateTabStatus("tabGeneralInputsOther", result)
+
+        Return result
+
+    End Function
+    Public Sub Validating_TechLineEdit(sender As Object, e As CancelEventArgs) 'Handles txtSemiLowFloorV.Validating, txtSemiLowFloorH.Validating, txtSemiLowFloorC.Validating, txtRaisedFloorV.Validating, txtRaisedFloorH.Validating, txtRaisedFloorC.Validating, txtLowFloorV.Validating, txtLowFloorH.Validating, txtLowFloorC.Validating, txtBenefitName.Validating, chkOnVehicle.Validating, chkActiveVV.Validating, chkActiveVH.Validating, chkActiveVC.Validating, cboUnits.Validating, cboLineType.Validating, cboCategory.Validating
+
+        e.Cancel = Not Validate_TechLineEdit()
+
+    End Sub
+    Public Function Validate_TechLineEdit() As Boolean
+
+        Dim result As Boolean = True
+
+        IsEmptyString(cboCategory.Text, cboCategory, "Please enter a valid category", result)
+        IsEmptyString(txtBenefitName.Text, txtBenefitName, "Please enter a valid Benefit Name", result)
+        IsEmptyString(cboUnits.Text, cboUnits, "Please enter valid units", result)
+        IsEmptyString(cboLineType.Text, cboLineType, "Please enter a valid line type", result)
+        IsTextBoxNumber(txtLowFloorH, "Please enter a valid number for this floor variable", result)
+        IsTextBoxNumber(txtLowFloorV, "Please enter a valid number for this floor variable", result)
+        IsTextBoxNumber(txtLowFloorC, "Please enter a valid number for this floor variable", result)
+        IsTextBoxNumber(txtSemiLowFloorH, "Please enter a valid number for this floor variable", result)
+        IsTextBoxNumber(txtSemiLowFloorV, "Please enter a valid number for this floor variable", result)
+        IsTextBoxNumber(txtSemiLowFloorC, "Please enter a valid number for this floor variable", result)
+        IsTextBoxNumber(txtRaisedFloorH, "Please enter a valid number for this floor variable", result)
+        IsTextBoxNumber(txtRaisedFloorV, "Please enter a valid number for this floor variable", result)
+        IsTextBoxNumber(txtRaisedFloorC, "Please enter a valid number for this floor variable", result)
+
+
+        Return result
+
+    End Function
+
+    'Validation Helpers
+    Private Sub IsTextBoxNumber(control As TextBox, errorProviderMessage As String, ByRef result As Boolean)
+
+        If Not IsNumeric(control.Text) Then
+            ErrorProvider1.SetError(control, errorProviderMessage)
+            result = False
         Else
-         ErrorProvider1.SetError(control, String.Empty)
+            ErrorProvider1.SetError(control, String.Empty)
 
-        End If 
+        End If
 
-  End sub
-  Private Sub IsEmptyString( text as  String, control As control, errorProviderMessage As String , ByRef result As Boolean) 
+    End Sub
+    Private Sub IsEmptyString(text As String, control As Control, errorProviderMessage As String, ByRef result As Boolean)
 
-      If String.IsNullOrEmpty( text ) Then
-         ErrorProvider1.SetError(control, errorProviderMessage)
-         result =  False
+        If String.IsNullOrEmpty(text) Then
+            ErrorProvider1.SetError(control, errorProviderMessage)
+            result = False
         Else
-         ErrorProvider1.SetError(control, String.Empty)
+            ErrorProvider1.SetError(control, String.Empty)
+
+        End If
+
+    End Sub
+    Private Function IsPostiveInteger(ByVal test As String) As Boolean
 
-        End If 
+        'Is this numeric sanity check.
+        If Not IsNumeric(test) Then Return False
 
-  End sub
-  Private Function IsPostiveInteger(ByVal test As String) As Boolean
+        Dim number As Single
 
-     'Is this numeric sanity check.
-     If Not IsNumeric(test) Then Return False
+        If Not Integer.TryParse(test, number) Then Return False
 
-     Dim number As Single
+        If number <= 0 Then Return False
 
-     If Not Integer.TryParse(test, number) Then Return False
 
-     If number <= 0 Then Return False
+        Return True
 
+    End Function
+    Private Function IsPostiveNumber(ByVal test As String) As Boolean
 
-     Return True
+        'Is this numeric sanity check.
+        If Not IsNumeric(test) Then Return False
 
-End Function
-  Private Function IsPostiveNumber(ByVal test As String) As Boolean
+        Dim number As Single
 
-     'Is this numeric sanity check.
-     If Not IsNumeric(test) Then Return False
+        If Not Double.TryParse(test, number) Then Return False
 
-     Dim number As Single
+        If number <= 0 Then Return False
 
-     If Not Double.TryParse(test, number) Then Return False
 
-     If number <= 0 Then Return False
+        Return True
 
+    End Function
+    Private Function IsNumberGreaterThanOne(ByVal test As String) As Boolean
 
-     Return True
+        'Is this numeric sanity check.
+        If Not IsNumeric(test) Then Return False
 
-End Function
-  Private Function IsZeroOrPostiveNumber(ByVal test As String) As Boolean
+        Dim number As Single
 
-     'Is this numeric sanity check.
-     If Not IsNumeric(test) Then Return False
+        If Not Double.TryParse(test, number) Then Return False
 
-     Dim number As Single
+        If number <= 1 Then Return False
 
-     If Not Double.TryParse(test, number) Then Return False
 
-     If number < 0 Then Return False
+        Return True
 
+    End Function
+    Private Function IsZeroOrPostiveNumber(ByVal test As String) As Boolean
 
-     Return True
+        'Is this numeric sanity check.
+        If Not IsNumeric(test) Then Return False
 
-End Function
-  Private Function IsNumberBetweenZeroandOne(test As String) As Boolean
+        Dim number As Single
 
-     'Is this numeric sanity check.
-     If Not IsNumeric(test) Then Return False
+        If Not Double.TryParse(test, number) Then Return False
 
-     Dim number As Single
+        If number < 0 Then Return False
 
-     If Not Double.TryParse(test, number) Then Return False
 
-     If number < 0 OrElse number > 1 Then Return False
+        Return True
 
-     Return True
+    End Function
+    Private Function IsNumberBetweenZeroandOne(test As String) As Boolean
 
-End Function
-  Private Function IsIntegerZeroOrPositiveNumber(test As String) As Boolean
+        'Is this numeric sanity check.
+        If Not IsNumeric(test) Then Return False
 
-     'Is this numeric sanity check.
-     If Not IsNumeric(test) Then Return False
+        Dim number As Single
 
-     'if not integer then return false
+        If Not Double.TryParse(test, number) Then Return False
 
-     Dim number As Integer
+        If number < 0 OrElse number > 1 Then Return False
 
-     If Not Integer.TryParse(test, number) Then Return False
+        Return True
 
-     If number < 0 Then Return False
+    End Function
+    Private Function IsIntegerZeroOrPositiveNumber(test As String) As Boolean
 
-     Return True
+        'Is this numeric sanity check.
+        If Not IsNumeric(test) Then Return False
 
+        'if not integer then return false
 
-End Function
-  Private Function ValidateAll() as boolean
+        Dim number As Integer
 
-     Return Validate_GeneralInputsBC AndAlso 
-            Validate_GeneralInputsBP  AndAlso 
-            Validate_GeneralInputsOther
+        If Not Integer.TryParse(test, number) Then Return False
 
+        If number < 0 Then Return False
 
-  End Function
+        Return True
+
+
+    End Function
+    Private Function ValidateAll() As Boolean
+
+        Return Not IsAddingBus AndAlso
+                Not IsUpdatingBus AndAlso
+                Validate_GeneralInputsBC() AndAlso
+                Validate_GeneralInputsBP() AndAlso
+                Validate_GeneralInputsOther()
+
+
+    End Function
+
+    'Tab Colors
+    Private Sub UpdateTabStatus(pageName As String, resultGood As Boolean)
+
+        Dim page As TabPage = tabMain.TabPages(pageName)
+
+        If Not resultGood Then
+
+            SetTabHeader(page, Color.Red)
+
+        Else
+            SetTabHeader(page, Control.DefaultBackColor)
 
-  'Tab Colors
-  Private Sub UpdateTabStatus(pageName As String, resultGood As Boolean)
-  
-         Dim page As TabPage = tabMain.TabPages(pageName)
-  
-             If Not resultGood Then
-  
-                SetTabHeader(page, Color.Red)
-              
-         Else
-                SetTabHeader(page, Control.DefaultBackColor)
-  
-         End If
-  
-  End Sub
-  Private Sub SetTabHeader(page As TabPage, color As Color)
-  
-      TabColors(page) = color
-      tabMain.Invalidate()
-  
-  End Sub
-  Private Sub tabMain_DrawItem(sender As Object, e As DrawItemEventArgs)
-  
-      Dim br As Brush = New SolidBrush(TabColors(tabMain.TabPages(e.Index)))
-    
-      Using (br)
-  
-          e.Graphics.FillRectangle(br, e.Bounds)
-          Dim sz As SizeF = e.Graphics.MeasureString(tabMain.TabPages(e.Index).Text, e.Font)
-          e.Graphics.DrawString(tabMain.TabPages(e.Index).Text, e.Font, Brushes.Black, e.Bounds.Left + (e.Bounds.Width - sz.Width) / 2, e.Bounds.Top + (e.Bounds.Height - sz.Height) / 2 + 1)
-  
-          Dim rect As Rectangle = e.Bounds
-          rect.Offset(-1, -1)
-          rect.Inflate(1, 1)
-  
-  
-      End Using
-  
-  End Sub
-  Private Sub EnsureBinding()
+        End If
+
+    End Sub
+    Private Sub SetTabHeader(page As TabPage, color As Color)
+
+        TabColors(page) = color
+        tabMain.Invalidate()
+
+    End Sub
+    Private Sub tabMain_DrawItem(sender As Object, e As DrawItemEventArgs)
+
+        Dim br As Brush = New SolidBrush(TabColors(tabMain.TabPages(e.Index)))
+
+        Using (br)
+
+            e.Graphics.FillRectangle(br, e.Bounds)
+            Dim sz As SizeF = e.Graphics.MeasureString(tabMain.TabPages(e.Index).Text, e.Font)
+            e.Graphics.DrawString(tabMain.TabPages(e.Index).Text, e.Font, Brushes.Black, e.Bounds.Left + (e.Bounds.Width - sz.Width) / 2, e.Bounds.Top + (e.Bounds.Height - sz.Height) / 2 + 1)
+
+            Dim rect As Rectangle = e.Bounds
+            rect.Offset(-1, -1)
+            rect.Inflate(1, 1)
+
+
+        End Using
+
+    End Sub
+    Private Sub EnsureBinding()
         With tabMain
             Dim lastSelectedTabIndex As Integer = .SelectedIndex
             If lastSelectedTabIndex < 0 OrElse lastSelectedTabIndex > .TabCount Then lastSelectedTabIndex = 0
@@ -702,384 +782,611 @@ End Function
         End With
     End Sub
 
-  'Form/Control Events
-  Private Sub frmHVACTool_Load( sender As Object,  e As EventArgs) Handles MyBase.Load
-
-    'Required for OwnerDraw, this is required in order to color the tabs when a validation error occurs to draw
-    'The attention of the user to the fact that attention is required on a particlar tab.
-    TabColors.Add(tabGeneralInputsBP, Control.DefaultBackColor)
-    TabColors.Add(tabGeneralInputsBC, Control.DefaultBackColor)
-    TabColors.Add(tabGeneralInputsOther, Control.DefaultBackColor)
-    TabColors.Add(tabTechBenefits, Control.DefaultBackColor)
-    TabColors.Add(tabDiagnostics, Control.DefaultBackColor)
-
-    EnsureBinding()
-
-    'Additional atatched events
-    'For Tab Coloring, this is the place where the background will get filled on the tab when attention is required.
-    AddHandler tabMain.DrawItem, New System.Windows.Forms.DrawItemEventHandler(AddressOf tabMain_DrawItem)
-
-    gvTechBenefitLines.ClearSelection()
-
-    Dim r As DialogResult = Me.DialogResult
- 
-  End Sub
-  Private Sub frmHVACTool_FormClosing( sender As Object,  e As FormClosingEventArgs) Handles MyBase.FormClosing
-  
-
-     Dim result As DialogResult
-
-     'If UserHitCancel then bail
-     If UserHitCancel then 
-        DialogResult= Windows.Forms.DialogResult.Cancel
-        UserHitCancel=false
-        return
-     End If
-
-     'UserHitSave
-     If UserHitSave then 
-        DialogResult= Windows.Forms.DialogResult.Cancel
-        If NOT ssmTOOL.Save(ahsmFilePath)   then
-              MessageBox.Show("Unable to save file, aborting.")
-              e.Cancel=true
-         End If
-        DialogResult= Windows.Forms.DialogResult.OK
-        UserHitSave=false
-        return
-     End If
-
-
-    'This must be a close box event. If nothing changed, then bail, otherwise ask user if they wanna save
-    If  Not ssmTOOL.IsEqualTo( originalssmTOOL ) 
-  
-         result = (MessageBox.Show("Would you like to save changes before closing?","Save Changes", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question))
-
-
-              Select Case  result
-              
-                  case DialogResult.Yes:
-                      'save 
-
-                      If NOT ssmTOOL.Save(ahsmFilePath)   then
-                        e.Cancel=true
-                      End If
-  
-                  case DialogResult.No:
-                      'just allow the form to close
-                      'without saving
-                      Me.DialogResult=Windows.Forms.DialogResult.Cancel
-
-  
-  
-                  case DialogResult.Cancel:
-                      'cancel the close
-                      e.Cancel = true
-                      Me.DialogResult=Windows.Forms.DialogResult.Cancel
-
-  
-              end select
-  
-    End If
-  
-    UserHitCancel=false
-    UserHitSave=false
-  
-  End Sub
-
-  'Grid Events
-  Private Sub gvTechBenefitLines_DoubleClick( sender As Object,  e As EventArgs) Handles gvTechBenefitLines.DoubleClick
-  
-      If  gvTechBenefitLines.SelectedCells.Count<1 then Return
-      
-  
-       Dim row As Integer = gvTechBenefitLines.SelectedCells(0).OwningRow.Index
-  
-       Dim benefitName , category , units As String
-       benefitName = gvTechBenefitLines.Rows(row).Cells("BenefitName").Value
-       category = gvTechBenefitLines.Rows(row).Cells("Category").Value
-
-      
-       editTechLine = ssmTOOL.TechList.TechLines.First( Function(f) f.BenefitName=benefitName AndAlso f.Category=category)
-  
-      If editTechLine.Units.ToLower = "kw" then
-
-       ClearEditPanel
-       MessageBox.Show("KW Unit types not supported, any KW Units in list are for test purposes only")
-       return
-
-      End If
-
-
-       FillTechLineEditPanel( row )
-  
-       UpdateButtonText()
-  
-  
-  
-  End Sub  
-  Private Sub gvTechBenefitLines_CellClick( sender As Object,  e As DataGridViewCellEventArgs) Handles gvTechBenefitLines.CellClick
-  
-     If e.ColumnIndex<0 OrElse e.RowIndex<0 then Return
-  
-  
-     If gvTechBenefitLines.Columns( e.ColumnIndex).Name="Delete" OrElse gvTechBenefitLines.Columns( e.ColumnIndex).Name="OnVehicle" then
-  
-        Dim benefit As String = gvTechBenefitLines.Rows( e.RowIndex).Cells(1).Value
-        Dim category As String = gvTechBenefitLines.Rows( e.RowIndex).Cells(0).Value
+    'Form/Control Events
+    Private Sub frmHVACTool_Load(sender As Object, e As EventArgs) Handles MyBase.Load
+
+        'Required for OwnerDraw, this is required in order to color the tabs when a validation error occurs to draw
+        'The attention of the user to the fact that attention is required on a particlar tab.
+        TabColors.Add(tabGeneralInputsBP, Control.DefaultBackColor)
+        TabColors.Add(tabGeneralInputsBC, Control.DefaultBackColor)
+        TabColors.Add(tabGeneralInputsOther, Control.DefaultBackColor)
+        TabColors.Add(tabTechBenefits, Control.DefaultBackColor)
+        TabColors.Add(tabDiagnostics, Control.DefaultBackColor)
+
+        EnsureBinding()
+
+        'Additional atatched events
+        'For Tab Coloring, this is the place where the background will get filled on the tab when attention is required.
+        AddHandler tabMain.DrawItem, New System.Windows.Forms.DrawItemEventHandler(AddressOf tabMain_DrawItem)
+
+        gvTechBenefitLines.ClearSelection()
+
+        Dim r As DialogResult = Me.DialogResult
+
+    End Sub
+    Private Sub frmHVACTool_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
+
+
+        Dim result As DialogResult
+
+        'If UserHitCancel then bail
+        If UserHitCancel Then
+            DialogResult = Windows.Forms.DialogResult.Cancel
+            UserHitCancel = False
+            Return
+        End If
+
+        'UserHitSave
+        If UserHitSave Then
+            DialogResult = Windows.Forms.DialogResult.Cancel
+            If Not ssmTOOL.Save(ahsmFilePath) Then
+                MessageBox.Show("Unable to save file, aborting.")
+                e.Cancel = True
+            End If
+            DialogResult = Windows.Forms.DialogResult.OK
+            UserHitSave = False
+            Return
+        End If
+
+
+        'This must be a close box event. If nothing changed, then bail, otherwise ask user if they wanna save
+        If Not ssmTOOL.IsEqualTo(originalssmTOOL) Then
+
+            result = (MessageBox.Show("Would you like to save changes before closing?", "Save Changes", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question))
+
+
+            Select Case result
+
+                Case DialogResult.Yes
+                    'save 
+
+                    If Not ssmTOOL.Save(ahsmFilePath) Then
+                        e.Cancel = True
+                    End If
+
+                Case DialogResult.No
+                    'just allow the form to close
+                    'without saving
+                    Me.DialogResult = Windows.Forms.DialogResult.Cancel
+
+
+
+                Case DialogResult.Cancel
+                    'cancel the close
+                    e.Cancel = True
+                    Me.DialogResult = Windows.Forms.DialogResult.Cancel
+
+
+            End Select
+
+        End If
+
+        UserHitCancel = False
+        UserHitSave = False
+
+    End Sub
+
+    'Grid Events
+    Private Sub gvTechBenefitLines_DoubleClick(sender As Object, e As EventArgs) Handles gvTechBenefitLines.DoubleClick
+
+        If gvTechBenefitLines.SelectedCells.Count < 1 Then Return
+
+
+        Dim row As Integer = gvTechBenefitLines.SelectedCells(0).OwningRow.Index
+
+        Dim benefitName, category, units As String
+        benefitName = gvTechBenefitLines.Rows(row).Cells("BenefitName").Value
+        category = gvTechBenefitLines.Rows(row).Cells("Category").Value
+
+
+        editTechLine = ssmTOOL.TechList.TechLines.First(Function(f) f.BenefitName = benefitName AndAlso f.Category = category)
+
+        If editTechLine.Units.ToLower = "kw" Then
+
+            ClearEditPanel()
+            MessageBox.Show("KW Unit types not supported, any KW Units in list are for test purposes only")
+            Return
+
+        End If
+
+
+        FillTechLineEditPanel(row)
+
+        UpdateButtonText()
+
+
+
+    End Sub
+    Private Sub gvTechBenefitLines_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles gvTechBenefitLines.CellClick
+
+        If e.ColumnIndex < 0 OrElse e.RowIndex < 0 Then Return
+
+
+        If gvTechBenefitLines.Columns(e.ColumnIndex).Name = "Delete" OrElse gvTechBenefitLines.Columns(e.ColumnIndex).Name = "OnVehicle" Then
+
+            Dim benefit As String = gvTechBenefitLines.Rows(e.RowIndex).Cells(1).Value
+            Dim category As String = gvTechBenefitLines.Rows(e.RowIndex).Cells(0).Value
+            Dim feedback As String = String.Empty
+
+
+            Select Case gvTechBenefitLines.Columns(e.ColumnIndex).Name
+
+
+                Case "Delete"
+                    Dim dr As DialogResult = MessageBox.Show(String.Format("Do you want to delete benefit '{0}' ?", benefit), "", MessageBoxButtons.YesNo)
+                    If dr = Windows.Forms.DialogResult.Yes Then
+                        If ssmTOOL.TechList.Delete(New TechListBenefitLine With {.BenefitName = benefit, .Category = category}, feedback) Then
+                            BindGrid()
+                        End If
+                    End If
+
+                Case "OnVehicle"
+                    Dim onVehicle As Boolean = Not gvTechBenefitLines.Rows(e.RowIndex).Cells(e.ColumnIndex).Value
+
+                    Dim fi As TechListBenefitLine = ssmTOOL.TechList.TechLines.Find(Function(f) (f.Category = category) AndAlso f.BenefitName = benefit)
+                    fi.OnVehicle = onVehicle
+                    ' ssmTOOL.TechList.TechLines.First( Function(x)  x.BenefitName= benefit AndAlso x.Category=category).OnVehicle=onVehicle  
+                    ' BindGrid 
+                    gvTechBenefitLines.Refresh()
+
+
+
+            End Select
+
+
+
+        End If
+
+    End Sub
+    Private Sub gvTechBenefitLines_CurrentCellDirtyStateChanged(sender As Object, e As EventArgs) Handles gvTechBenefitLines.CurrentCellDirtyStateChanged
+
+
+
+        If gvTechBenefitLines.IsCurrentCellDirty Then
+            gvTechBenefitLines.CommitEdit(DataGridViewDataErrorContexts.Commit)
+        End If
+
+
+
+    End Sub
+
+    'Button Event Handlers
+    Private Sub btnUpdate_Click(sender As Object, e As EventArgs) Handles btnUpdate.Click
+
         Dim feedback As String = String.Empty
-  
-
-        Select gvTechBenefitLines.Columns( e.ColumnIndex).Name
-
-
-        Case "Delete"
-           Dim dr As DialogResult = MessageBox.Show(String.Format("Do you want to delete benefit '{0}' ?", benefit),"", MessageBoxButtons.YesNo)
-           If dr= Windows.Forms.DialogResult.Yes then       
-            If  ssmTOOL.TechList.Delete( New TechListBenefitLine With {.BenefitName= benefit, .Category=category}, feedback) then 
-              BindGrid 
-            End If 
-           End If
-
-        Case "OnVehicle"
-           Dim onVehicle as Boolean = NOT gvTechBenefitLines.Rows( e.RowIndex).Cells( e.ColumnIndex).Value
-           
-           Dim fi As TechListBenefitLine = ssmTOOL.TechList.TechLines.Find( Function(f) (f.Category= Category) AndAlso f.BenefitName= Benefit )
-           fi.OnVehicle= onVehicle
-          ' ssmTOOL.TechList.TechLines.First( Function(x)  x.BenefitName= benefit AndAlso x.Category=category).OnVehicle=onVehicle  
-          ' BindGrid 
-           gvTechBenefitLines.Refresh
-          
-
-
-        End Select
-
-
-   
-     End If
-  
-End Sub
-  Private Sub gvTechBenefitLines_CurrentCellDirtyStateChanged( sender As Object,  e As EventArgs) Handles gvTechBenefitLines.CurrentCellDirtyStateChanged
-  
- 
-  
-       If gvTechBenefitLines.IsCurrentCellDirty Then
-              gvTechBenefitLines.CommitEdit(DataGridViewDataErrorContexts.Commit)
-          End If
-
-
-          
-  End Sub
-
-  'Button Event Handlers
-  Private Sub btnUpdate_Click( sender As Object,  e As EventArgs) Handles btnUpdate.Click
-   
-    Dim feedback As String = String.Empty
-  
-    If NOT Validate_TechLineEdit() then Return
-    
-    If txtIndex.Text.Trim.Length=0 then 
-    'This is an Add
-     If Not ssmTOOL.TechList.Add( GetTechLineFromPanel(), feedback) then
-       MessageBox.Show( feedback )
-       Else
-     
 
-        BindGrid()
+        If Not Validate_TechLineEdit() Then Return
+
+        If txtIndex.Text.Trim.Length = 0 Then
+            'This is an Add
+            If Not ssmTOOL.TechList.Add(GetTechLineFromPanel(), feedback) Then
+                MessageBox.Show(feedback)
+            Else
+
+
+                BindGrid()
+
+                'find new row
+                Dim ol As List(Of ITechListBenefitLine) = ssmTOOL.TechList.TechLines.OrderBy(Function(x) x.Category).ThenBy(Function(tb) tb.BenefitName).ToList()
+                Dim item As ITechListBenefitLine = ol.First(Function(x) x.Category = GetTechLineFromPanel().Category AndAlso x.BenefitName = GetTechLineFromPanel().BenefitName)
+                Dim idx As Integer = ol.IndexOf(item)
+
+                gvTechBenefitLines.FirstDisplayedScrollingRowIndex = idx
+
+                cboCategory.DataSource = GetCategories()
+
+                UpdateButtonText()
+
+            End If
+
+        Else
+            'This is an update
+            If Not ssmTOOL.TechList.Modify(editTechLine, GetTechLineFromPanel(), feedback) Then
+                MessageBox.Show(feedback)
+            Else
+                gvTechBenefitLines.Refresh()
+                ClearEditPanel()
+                UpdateButtonText()
+
+            End If
+
+        End If
+
+    End Sub
+    Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
+
+        If Not ValidateAll() Then Return
 
-        'find new row
-        Dim ol As List(Of ITechListBenefitLine) =  ssmTOOL.TechList.TechLines.OrderBy( Function(x) x.Category ).ThenBy( Function(tb) tb.BenefitName).ToList()
-        Dim item As ITechListBenefitLine = ol.First( Function(x) x.Category=GetTechLineFromPanel().Category AndAlso  x.BenefitName= GetTechLineFromPanel().BenefitName)
-        Dim idx As integer = ol.IndexOf( item )
- 
-        gvTechBenefitLines.FirstDisplayedScrollingRowIndex = idx
+        UserHitSave = True
 
-        cboCategory.DataSource= GetCategories()
-  
+        Me.DialogResult = Windows.Forms.DialogResult.OK
+        Me.Close()
+
+    End Sub
+    Private Sub btnClearForm_Click(sender As Object, e As EventArgs) Handles btnClearForm.Click
+
+        ClearEditPanel()
         UpdateButtonText()
-  
-     End if
-  
-    Else
-    'This is an update
-      If Not ssmTOOL.TechList.Modify( editTechLine, GetTechLineFromPanel() , feedback) then
-          MessageBox.Show( feedback )
-       Else
-         gvTechBenefitLines.Refresh()
-         ClearEditPanel()
-         UpdateButtonText()
-        
-      End If
-  
-    End If
-  
-  End Sub
-  Private Sub btnSave_Click( sender As Object,  e As EventArgs) Handles btnSave.Click
-    
-    If Not ValidateAll then Return 
-
-
-
-        UserHitSave=true
-
-        Me.DialogResult=Windows.Forms.DialogResult.OK
-        Me.Close
-       
-
-    '  End If
-  
-  End Sub
-  Private Sub btnClearForm_Click( sender As Object,  e As EventArgs) Handles btnClearForm.Click
-  
-    ClearEditPanel()
-    UpdateButtonText()
-  
-  
-  End Sub
-  Private Sub btnCancel_Click( sender As Object,  e As EventArgs) Handles btnCancel.Click
-  
-     UserHitCancel=True
-     Me.Close
-
-
-  End Sub
-
-  'TechList Helpers
-  Private Sub FillTechLineEditPanel( index As Integer)
-
-     Dim techline As ITechListBenefitLine
-     Dim benefitName , category As String
-     benefitName = gvTechBenefitLines.Rows(index).Cells("BenefitName").Value
-     category = gvTechBenefitLines.Rows(index).Cells("Category").Value
-
-     techline = ssmTOOL.TechList.TechLines.First( Function(f) f.BenefitName=benefitName AndAlso f.Category=category)
-
-     txtIndex.Text=index
-     cboCategory.Text= techline.Category
-     txtBenefitName.Text=techline.BenefitName
-     cboUnits.Text = techline.Units
-     cboLineType.Text = If( techline.LineType=0, "Normal","ActiveVentilation")
-     txtLowFloorH    .Text = techline.LowFloorH
-     txtLowFloorV    .Text = techline.LowFloorV    
-     txtLowFloorC    .Text = techline.LowFloorC    
-     txtSemiLowFloorH.Text = techline.SemiLowFloorH
-     txtSemiLowFloorV.Text = techline.SemiLowFloorV
-     txtSemiLowFloorC.Text = techline.SemiLowFloorC
-     txtRaisedFloorH .Text = techline.RaisedFloorH 
-     txtRaisedFloorV .Text = techline.RaisedFloorV 
-     txtRaisedFloorC .Text = techline.RaisedFloorC 
-     chkActiveVH.Checked   = techline.ActiveVH
-     chkActiveVV.Checked   = techline.ActiveVV
-     chkActiveVC.Checked   = techline.ActiveVC
-     chkOnVehicle.Checked  = techline.OnVehicle
-
-                        
-
-  End Sub
-  private function GetTechLineFromPanel() as ITechListBenefitLine
-  
-    Dim tl As ITechListBenefitLine  = New TechListBenefitLine( ssmTOOL.genInputs)
-     
-  
-    tl.Category      = StrConv(cboCategory.Text, vbProperCase)
-    tl.BenefitName   = txtBenefitName.Text
-    tl.Units         = cboUnits.Text
-    tl.LineType      = If( cboLineType.Text= "Normal",0,3)
-    tl.LowFloorH     = txtLowFloorH      .Text
-    tl.LowFloorV     = txtLowFloorV      .Text
-    tl.LowFloorC     = txtLowFloorC      .Text
-    tl.SemiLowFloorH = txtSemiLowFloorH  .Text
-    tl.SemiLowFloorV = txtSemiLowFloorV  .Text
-    tl.SemiLowFloorC = txtSemiLowFloorC  .Text
-    tl.RaisedFloorH  = txtRaisedFloorH   .Text
-    tl.RaisedFloorV  = txtRaisedFloorV   .Text
-    tl.RaisedFloorC  = txtRaisedFloorC   .Text
-    tl.ActiveVH      = chkActiveVH       .Checked
-    tl.ActiveVV      = chkActiveVV       .Checked
-    tl.ActiveVC      = chkActiveVC       .Checked
-    tl.OnVehicle     = chkOnVehicle      .Checked
-  
-  
-    Return tl
-  
-  End Function
-  Private Sub ClearEditPanel()
-  
-    txtIndex.Text                     = String.Empty
-    cboCategory.SelectedIndex=0
-    txtBenefitName.Text               = String.Empty
-    cboUnits.SelectedIndex=0                
-    cboLineType.SelectedIndex=0
-    txtLowFloorH      .Text           = String.Empty
-    txtLowFloorV      .Text           = String.Empty
-    txtLowFloorC      .Text           = String.Empty
-    txtSemiLowFloorH  .Text           = String.Empty
-    txtSemiLowFloorV  .Text           = String.Empty
-    txtSemiLowFloorC  .Text           = String.Empty
-    txtRaisedFloorH   .Text           = String.Empty
-    txtRaisedFloorV   .Text           = String.Empty
-    txtRaisedFloorC   .Text           = String.Empty
-    chkActiveVH       .Checked        = False
-    chkActiveVV       .Checked        = False
-    chkActiveVC       .Checked        = False
-    chkOnVehicle      .Checked        = False
-  
-  End Sub
-
-  'Tab Events
-  Private Sub tabMain_SelectedIndexChanged( sender As Object,  e As EventArgs) Handles tabMain.SelectedIndexChanged
-  
-    If tabMain.SelectedIndex=4 then
-     captureDiagnostics = true  
-    End If
-  
-  End Sub
-
-  'Timer Events
-  Private Sub Timer1_Tick( sender As Object,  e As EventArgs) Handles Timer1.Tick
-  
-      'Enables the user to instantly see the results of the configuration changes
-      'on the top right hand side of the form where it displays the main outputs.
-      'The same information is also displayed in the Diagnostics tab where staging
-      'results are also available, this is mainly used for testing but could also
-      'be used as supporting documentation.
-
-      try
-
-      If Not ssmTOOL is nothing then
-  
-          txtBasElectrical.Text = ssmTOOL.ElectricalWBase
-          txtBaseMechanical.Text = ssmTOOL.MechanicalWBase
-          txtBaseFuel.Text = ssmTOOL.FuelPerHBase
-          
-          txtAdjElectrical.Text = ssmTOOL.ElectricalWAdjusted
-          txtAdjMechanical.Text = ssmTOOL.MechanicalWBaseAdjusted
-          txtAdjFuel.Text = ssmTOOL.FuelPerHBaseAdjusted
-          
-            If captureDiagnostics then
-          
-              txtDiagnostics.Text = ssmTOOL.ToString()
-          
-              captureDiagnostics=false
-              
+
+
+    End Sub
+    Private Sub btnCancel_Click(sender As Object, e As EventArgs) Handles btnCancel.Click
+
+        UserHitCancel = True
+        Me.Close()
+
+
+    End Sub
+    Private Sub btnNewBus_Click(sender As Object, e As EventArgs) Handles btnNewBus.Click
+
+        If btnNewBus.Tag = "New" Then
+
+            IsAddingBus = True
+
+            cboBuses.Enabled = False
+            btnUpdateBusDatabase.Enabled = False
+            btnEditBus.Enabled = False
+            btnCancelBus.Enabled = True
+
+            btnNewBus.Text = "Add"
+            btnNewBus.Tag = "Add"
+
+            BusParamGroupModel.Visible = False
+            BusParamGroupEdit.Visible = True
+
+        ElseIf btnNewBus.Tag = "Add" Then
+
+            If Validate_GeneralInputsBPEdit() Then
+                Dim newBus As IBus = New Bus(busesList.Count + 1, txtEditBusModel.Text, cmbEditFloorType.Text, cmbEditEngineType.Text, txtEditBusLength.Text, txtEditBusWidth.Text, txtEditBusHeight.Text, Convert.ToInt32(txtEditBusPassengers.Text), chkEditIsDoubleDecker.Checked)
+
+                buses.AddBus(newBus)
+                busesList.Add(newBus)
+
+                cboBuses.Enabled = True
+                btnUpdateBusDatabase.Enabled = True
+                btnEditBus.Enabled = True
+                btnCancelBus.Enabled = False
+
+                BusParamGroupModel.Visible = True
+                BusParamGroupEdit.Visible = False
+
+                btnNewBus.Text = "New"
+                btnNewBus.Tag = "New"
+
+                cboBuses.SelectedIndex = busesList.Count - 1
+
+                IsAddingBus = False
             End If
- 
-      End If 
 
-      Catch Ex As SystemException
+        End If
+    End Sub
+    Private Sub btnUpdateBusDatabase_Click(sender As Object, e As EventArgs) Handles btnUpdateBusDatabase.Click
+
+        If buses.Save(busDatabasePath) Then
+            MessageBox.Show("Buses database file saved successfully")
+        Else
+            MessageBox.Show("Failed to save buses database file")
+        End If
+
+    End Sub
+    Private Sub btnEditBus_Click(sender As Object, e As EventArgs) Handles btnEditBus.Click
+
+        If cboBuses.SelectedIndex > 0 Then
+
+            If btnEditBus.Tag = "Edit" Then
+
+                IsUpdatingBus = True
+
+                cboBuses.Enabled = False
+                btnUpdateBusDatabase.Enabled = False
+                btnNewBus.Enabled = False
+                btnCancelBus.Enabled = True
+
+                btnEditBus.Text = "Save"
+                btnEditBus.Tag = "Save"
+
+                BusParamGroupModel.Visible = False
+                BusParamGroupEdit.Visible = True
+
+                Dim bus As IBus = DirectCast(cboBuses.SelectedItem, IBus)
 
-        MessageBox.Show( "An unexpected error occured during the timer click recalculation.")
+                txtEditBusModel.Text = bus.Model
+                cmbEditFloorType.Text = bus.FloorType
+                cmbEditEngineType.Text = bus.EngineType
+                txtEditBusLength.Text = bus.LengthInMetres
+                txtEditBusWidth.Text = bus.WidthInMetres
+                txtEditBusHeight.Text = bus.HeightInMetres
+                txtEditBusPassengers.Text = bus.RegisteredPassengers
 
-      End Try
+            ElseIf btnEditBus.Tag = "Save" Then
 
+                If Validate_GeneralInputsBPEdit() Then
 
+                    Dim bus As IBus = DirectCast(cboBuses.SelectedItem, IBus)
 
+                    bus.Model = txtEditBusModel.Text
+                    bus.FloorType = cmbEditFloorType.Text
+                    bus.EngineType = cmbEditEngineType.Text
+                    bus.LengthInMetres = txtEditBusLength.Text
+                    bus.WidthInMetres = txtEditBusWidth.Text
+                    bus.HeightInMetres = txtEditBusHeight.Text
+                    bus.RegisteredPassengers = txtEditBusPassengers.Text
+                    bus.IsDoubleDecker = chkEditIsDoubleDecker.Checked
 
+                    buses.UpdateBus(bus.Id, bus)
 
- 
-  End Sub
+                    cboBuses.Enabled = True
+                    btnUpdateBusDatabase.Enabled = True
+                    btnNewBus.Enabled = True
+                    btnCancelBus.Enabled = False
 
+                    BusParamGroupModel.Visible = True
+                    BusParamGroupEdit.Visible = False
 
-  
+                    btnEditBus.Text = "Edit"
+                    btnEditBus.Tag = "Edit"
 
+                    Dim currentIndex As Integer = cboBuses.SelectedIndex
+                    cboBuses.SelectedIndex = 0
+                    cboBuses.SelectedIndex = currentIndex
 
+                    IsUpdatingBus = False
+                End If
+
+            End If
+
+        End If
+
+    End Sub
+    Private Sub btnCancelBus_Click(sender As Object, e As EventArgs) Handles btnCancelBus.Click
+
+        IsUpdatingBus = False
+        IsAddingBus = False
+
+        cboBuses.Enabled = True
+        btnUpdateBusDatabase.Enabled = True
+        btnNewBus.Enabled = True
+        btnCancelBus.Enabled = False
+
+        If cboBuses.SelectedIndex > 0 Then
+            btnEditBus.Enabled = True
+        End If
+
+        btnEditBus.Text = "Edit"
+        btnEditBus.Tag = "Edit"
+
+        btnNewBus.Text = "New"
+        btnNewBus.Tag = "New"
+
+        txtEditBusModel.Text = String.Empty
+        cmbEditFloorType.Text = String.Empty
+        cmbEditEngineType.Text = String.Empty
+        txtEditBusLength.Text = String.Empty
+        txtEditBusWidth.Text = String.Empty
+        txtEditBusHeight.Text = String.Empty
+        txtEditBusPassengers.Text = String.Empty
+        chkEditIsDoubleDecker.Checked = False
+
+        BusParamGroupModel.Visible = True
+        BusParamGroupEdit.Visible = False
+
+    End Sub
+
+    'TechList Helpers
+    Private Sub FillTechLineEditPanel(index As Integer)
+
+        Dim techline As ITechListBenefitLine
+        Dim benefitName, category As String
+        benefitName = gvTechBenefitLines.Rows(index).Cells("BenefitName").Value
+        category = gvTechBenefitLines.Rows(index).Cells("Category").Value
+
+        techline = ssmTOOL.TechList.TechLines.First(Function(f) f.BenefitName = benefitName AndAlso f.Category = category)
+
+        txtIndex.Text = index
+        cboCategory.Text = techline.Category
+        txtBenefitName.Text = techline.BenefitName
+        cboUnits.Text = techline.Units
+        cboLineType.Text = If(techline.LineType = 0, "Normal", "ActiveVentilation")
+        txtLowFloorH.Text = techline.LowFloorH
+        txtLowFloorV.Text = techline.LowFloorV
+        txtLowFloorC.Text = techline.LowFloorC
+        txtSemiLowFloorH.Text = techline.SemiLowFloorH
+        txtSemiLowFloorV.Text = techline.SemiLowFloorV
+        txtSemiLowFloorC.Text = techline.SemiLowFloorC
+        txtRaisedFloorH.Text = techline.RaisedFloorH
+        txtRaisedFloorV.Text = techline.RaisedFloorV
+        txtRaisedFloorC.Text = techline.RaisedFloorC
+        chkActiveVH.Checked = techline.ActiveVH
+        chkActiveVV.Checked = techline.ActiveVV
+        chkActiveVC.Checked = techline.ActiveVC
+        chkOnVehicle.Checked = techline.OnVehicle
+
+
+
+    End Sub
+    Private Function GetTechLineFromPanel() As ITechListBenefitLine
+
+        Dim tl As ITechListBenefitLine = New TechListBenefitLine(ssmTOOL.GenInputs)
+
+
+        tl.Category = StrConv(cboCategory.Text, vbProperCase)
+        tl.BenefitName = txtBenefitName.Text
+        tl.Units = cboUnits.Text
+        tl.LineType = If(cboLineType.Text = "Normal", 0, 3)
+        tl.LowFloorH = txtLowFloorH.Text
+        tl.LowFloorV = txtLowFloorV.Text
+        tl.LowFloorC = txtLowFloorC.Text
+        tl.SemiLowFloorH = txtSemiLowFloorH.Text
+        tl.SemiLowFloorV = txtSemiLowFloorV.Text
+        tl.SemiLowFloorC = txtSemiLowFloorC.Text
+        tl.RaisedFloorH = txtRaisedFloorH.Text
+        tl.RaisedFloorV = txtRaisedFloorV.Text
+        tl.RaisedFloorC = txtRaisedFloorC.Text
+        tl.ActiveVH = chkActiveVH.Checked
+        tl.ActiveVV = chkActiveVV.Checked
+        tl.ActiveVC = chkActiveVC.Checked
+        tl.OnVehicle = chkOnVehicle.Checked
+
+
+        Return tl
+
+    End Function
+    Private Sub ClearEditPanel()
+
+        txtIndex.Text = String.Empty
+        cboCategory.SelectedIndex = 0
+        txtBenefitName.Text = String.Empty
+        cboUnits.SelectedIndex = 0
+        cboLineType.SelectedIndex = 0
+        txtLowFloorH.Text = String.Empty
+        txtLowFloorV.Text = String.Empty
+        txtLowFloorC.Text = String.Empty
+        txtSemiLowFloorH.Text = String.Empty
+        txtSemiLowFloorV.Text = String.Empty
+        txtSemiLowFloorC.Text = String.Empty
+        txtRaisedFloorH.Text = String.Empty
+        txtRaisedFloorV.Text = String.Empty
+        txtRaisedFloorC.Text = String.Empty
+        chkActiveVH.Checked = False
+        chkActiveVV.Checked = False
+        chkActiveVC.Checked = False
+        chkOnVehicle.Checked = False
+
+    End Sub
+
+    'Tab Events
+    Private Sub tabMain_SelectedIndexChanged(sender As Object, e As EventArgs) Handles tabMain.SelectedIndexChanged
+
+        If tabMain.SelectedIndex = 4 Then
+            captureDiagnostics = True
+        End If
+
+    End Sub
+
+    'Timer Events
+    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
+
+        'Enables the user to instantly see the results of the configuration changes
+        'on the top right hand side of the form where it displays the main outputs.
+        'The same information is also displayed in the Diagnostics tab where staging
+        'results are also available, this is mainly used for testing but could also
+        'be used as supporting documentation.
+
+        Try
+
+            If Not ssmTOOL Is Nothing Then
+
+                txtBasElectrical.Text = ssmTOOL.ElectricalWBase
+                txtBaseMechanical.Text = ssmTOOL.MechanicalWBase
+
+                txtAdjElectrical.Text = ssmTOOL.ElectricalWAdjusted
+                txtAdjMechanical.Text = ssmTOOL.MechanicalWBaseAdjusted
+
+                If captureDiagnostics Then
+
+                    txtDiagnostics.Text = ssmTOOL.ToString()
+
+                    captureDiagnostics = False
+
+                End If
+
+            End If
+
+        Catch Ex As SystemException
+
+            MessageBox.Show("An unexpected error occured during the timer click recalculation.")
+
+        End Try
+
+
+
+
+
+
+    End Sub
+
+    Private Sub btnEnvironmentConditionsSource_Click(sender As Object, e As EventArgs) Handles btnEnvironmentConditionsSource.Click
+
+        Dim ecFileBrowser As New cFileBrowser(True, False)
+
+        ecFileBrowser.Extensions = New String() {"aenv"}
+
+        If ecFileBrowser.OpenDialog(fPATH(vectoFile)) Then
+
+            txtEC_EnvironmentConditionsFilePath.Tag = ecFileBrowser.Files(0)
+            txtEC_EnvironmentConditionsFilePath.Text = fFileWoDir(ecFileBrowser.Files(0), fPATH(vectoFile))
+
+            txtEC_EnvironmentConditionsFilePath.Focus()
+            txtAH_FuelFiredHeaterkW.Focus()
+
+        End If
+
+
+    End Sub
+
+    Private Sub chkEC_BatchMode_CheckedChanged(sender As Object, e As EventArgs) Handles chkEC_BatchMode.CheckedChanged
+
+        If (chkEC_BatchMode.Checked) Then
+            txtEC_EnviromentalTemperature.ReadOnly = True
+            txtEC_Solar.ReadOnly = True
+            txtEC_EnvironmentConditionsFilePath.ReadOnly = False
+            btnEnvironmentConditionsSource.Enabled = True
+            btnOpenAenv.Enabled = True
+        Else
+            txtEC_EnviromentalTemperature.ReadOnly = False
+            txtEC_Solar.ReadOnly = False
+            txtEC_EnvironmentConditionsFilePath.ReadOnly = True
+            btnEnvironmentConditionsSource.Enabled = False
+            btnOpenAenv.Enabled = False
+        End If
+
+    End Sub
+
+    ' File Helpers
+    Private cmFilesList As String()
+
+    Private Sub btnOpenECDB_Click(sender As Object, e As EventArgs) Handles btnOpenAenv.Click
+        OpenFiles(fFileRepl(Me.txtEC_EnvironmentConditionsFilePath.Text, fPATH(vectoFile)))
+    End Sub
+
+    Public Function FileOpenAlt(ByVal file As String) As Boolean
+        Dim PSI As New ProcessStartInfo
+
+        If Not IO.File.Exists(file) Then Return False
+
+        PSI.FileName = "notepad.exe"
+        PSI.Arguments = ChrW(34) & file & ChrW(34)
+        Try
+            Process.Start(PSI)
+            Return True
+        Catch ex As Exception
+            Return False
+        End Try
+
+    End Function
+
+    Private Sub OpenFiles(ParamArray files() As String)
+
+        If files.Length = 0 Then Exit Sub
+
+        cmFilesList = files
+
+        CMFiles.Show(Cursor.Position)
+
+    End Sub
+
+    Private Sub OpenWithToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles OpenWithToolStripMenuItem.Click
+        If Not FileOpenAlt(cmFilesList(0)) Then MsgBox("Failed to open file!")
+    End Sub
+    Private Sub ShowInFolderToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles ShowInFolderToolStripMenuItem.Click
+        If IO.File.Exists(cmFilesList(0)) Then
+            Try
+                System.Diagnostics.Process.Start("explorer", "/select,""" & cmFilesList(0) & "")
+            Catch ex As Exception
+                MsgBox("Failed to open file!")
+            End Try
+        Else
+            MsgBox("File not found!")
+        End If
+    End Sub
 End Class
diff --git a/VECTOAux/VectoAuxiliaries/VectoAuxiliaries.vbproj b/VECTOAux/VectoAuxiliaries/VectoAuxiliaries.vbproj
index e3a76bf50d..966357be22 100644
--- a/VECTOAux/VectoAuxiliaries/VectoAuxiliaries.vbproj
+++ b/VECTOAux/VectoAuxiliaries/VectoAuxiliaries.vbproj
@@ -137,12 +137,16 @@
     <Compile Include="Hvac\BusEngineType.vb" />
     <Compile Include="Hvac\DeleteCell.vb" />
     <Compile Include="Hvac\DeleteColumn.vb" />
+    <Compile Include="Hvac\EnvironmentalCondition.vb" />
+    <Compile Include="Hvac\EnvironmentalConditionsMap.vb" />
     <Compile Include="Hvac\HVACConstants.vb" />
     <Compile Include="Electrics\IElectricalConsumerList.vb" />
     <Compile Include="Hvac\HVACSteadyStateModel.vb" />
     <Compile Include="Hvac\HVACUserInputsConfig.vb" />
     <Compile Include="Hvac\IBus.vb" />
     <Compile Include="Hvac\IBusDatabase.vb" />
+    <Compile Include="Hvac\IEnvironmentalCondition.vb" />
+    <Compile Include="Hvac\IEnvironmentalConditionsMap.vb" />
     <Compile Include="Hvac\IHVACConstants.vb" />
     <Compile Include="Hvac\IHVACSteadyStateModel.vb" />
     <Compile Include="Hvac\IHVACUserInputsConfig.vb" />
diff --git a/VECTOAux/VectoAuxiliariesTests/Mocks/ElectricalConsumerMock.vb b/VECTOAux/VectoAuxiliariesTests/Mocks/ElectricalConsumerMock.vb
index b096d7531d..9fbc700242 100644
--- a/VECTOAux/VectoAuxiliariesTests/Mocks/ElectricalConsumerMock.vb
+++ b/VECTOAux/VectoAuxiliariesTests/Mocks/ElectricalConsumerMock.vb
@@ -1,12 +1,11 @@
 Imports VectoAuxiliaries.Electrics
+Imports System.ComponentModel
 
 Namespace Mocks
 
     Public Class ElectricalConsumerMock
         Implements IElectricalConsumer
 
-
-
         Public Property AvgConsumptionAmps As Single Implements IElectricalConsumer.AvgConsumptionAmps
 
         Public Property BaseVehicle As Boolean Implements IElectricalConsumer.BaseVehicle
@@ -24,8 +23,7 @@ Namespace Mocks
         Public Property PowerNetVoltage As Single Implements IElectricalConsumer.PowerNetVoltage
 
         Public Function TotalAvgConumptionAmps(Optional PhaseIdle_TractionOnBasedOnCycle As Single = 0.0) As Single Implements IElectricalConsumer.TotalAvgConumptionAmps
-         Return 9
-
+            Return 9
         End Function
 
 
@@ -36,7 +34,15 @@ Namespace Mocks
         End Function
 
 
-                Public Property Info As String Implements IElectricalConsumer.Info
-        End Class
+        Public Property Info As String Implements IElectricalConsumer.Info
+
+        Public Event PropertyChanged As PropertyChangedEventHandler _
+            Implements INotifyPropertyChanged.PropertyChanged
+
+        Private Sub NotifyPropertyChanged(p As String)
+            RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(p))
+        End Sub
+
+    End Class
 
 End Namespace
diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/BusDatabaseTests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/BusDatabaseTests.vb
index 571ec0c81c..6b207bcce9 100644
--- a/VECTOAux/VectoAuxiliariesTests/UnitTests/BusDatabaseTests.vb
+++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/BusDatabaseTests.vb
@@ -23,207 +23,204 @@ Private Const INVALIDPASSEMGERSMAP = "TestFiles\testBusDatabaseInvalidPassengers
 <Test()>
 Public Sub BusCreateTest()
 
-  Dim target As IBus = New Bus("IVECO - Arway Intercity 10.6m","raised floor","diesel",10.655,2.550,2.275,47)
+            Dim target As IBus = New Bus(1, "IVECO - Arway Intercity 10.6m", "raised floor", "diesel", 10.655, 2.55, 2.275, 47, False)
 
 
-  Assert.IsNotNull( target )
+            Assert.IsNotNull(target)
 
-  Assert.AreEqual("IVECO - Arway Intercity 10.6m", target.Model)
-  Assert.AreEqual("raised floor", target.FloorType)
-  Assert.AreEqual("diesel", target.EngineType)
+            Assert.AreEqual("IVECO - Arway Intercity 10.6m", target.Model)
+            Assert.AreEqual("raised floor", target.FloorType)
+            Assert.AreEqual("diesel", target.EngineType)
 
-  Assert.AreEqual(114.4r, target.AreaInMetresSquared)
-  Assert.AreEqual(61.8r, target.VolumneInMetresQubed)
+        End Sub
 
-End Sub
+        <Test()> _
+        <ExpectedException("System.ArgumentException")>
+        Public Sub IllegalFloorTypeTest()
 
-<Test()> _
-<ExpectedException("System.ArgumentException")>
-Public Sub IllegalFloorTypeTest()
+            Dim target As IBus = New Bus(2, "", "raised floor", "diesel", 10.655, 2.55, 2.275, 47, False)
 
-  Dim target As IBus = New Bus("","raised floor","diesel",10.655,2.550,2.275,47)
+        End Sub
 
-End Sub
+        <Test()> _
+        <ExpectedException("System.ArgumentException")>
+        Public Sub IllegalModelTest()
 
-<Test()> _
-<ExpectedException("System.ArgumentException")>
-Public Sub IllegalModelTest()
+            Dim target As IBus = New Bus(3, "ABC", "raised", "diesel", 10.655, 2.55, 2.275, 47, False)
 
-  Dim target As IBus = New Bus("ABC","raised","diesel",10.655,2.550,2.275,47)
+        End Sub
 
-End Sub
+        <Test()> _
+        <ExpectedException("System.ArgumentException")>
+        Public Sub IllegalEngineTypeTest()
 
-<Test()> _
-<ExpectedException("System.ArgumentException")>
-Public Sub IllegalEngineTypeTest()
+            Dim target As IBus = New Bus(4, "ABC", "raised floor", "vapour", 10.655, 2.55, 2.275, 47, False)
 
-  Dim target As IBus = New Bus("ABC","raised floor","vapour",10.655,2.550,2.275,47)
+        End Sub
 
-End Sub
+        <Test()> _
+        <ExpectedException("System.ArgumentException")>
+        Public Sub IllegalWidthTest()
 
-<Test()> _
-<ExpectedException("System.ArgumentException")>
-Public Sub IllegalWidthTest()
+            Dim target As IBus = New Bus(5, "IVECO - Arway Intercity 10.6m", "raised floor", "diesel", 10.655, 0, 2.275, 47, False)
 
-  Dim target As IBus = New Bus("IVECO - Arway Intercity 10.6m","raised floor","diesel",10.655,0,2.275,47)
+        End Sub
 
-End Sub
+        <Test()> _
+        <ExpectedException("System.ArgumentException")>
+        Public Sub IllegalHeightTest()
 
-<Test()> _
-<ExpectedException("System.ArgumentException")>
-Public Sub IllegalHeightTest()
+            Dim target As IBus = New Bus(6, "IVECO - Arway Intercity 10.6m", "raised floor", "diesel", 10.655, 2.55, 0, 47, False)
 
-  Dim target As IBus = New Bus("IVECO - Arway Intercity 10.6m","raised floor","diesel",10.655,2.550,0,47)
+        End Sub
 
-End Sub
+        <Test()> _
+        <ExpectedException("System.ArgumentException")>
+        Public Sub IllegalLengthTest()
 
-<Test()> _
-<ExpectedException("System.ArgumentException")>
-Public Sub IllegalLengthTest()
+            Dim target As IBus = New Bus(7, "IVECO - Arway Intercity 10.6m", "raised floor", "diesel", 0, 2.55, 2.275, 47, False)
 
-  Dim target As IBus = New Bus("IVECO - Arway Intercity 10.6m","raised floor","diesel",0,2.550,2.275,47)
+        End Sub
 
-End Sub
+        <Test()> _
+        <ExpectedException("System.ArgumentException")>
+        Public Sub IllegalPassengersTest()
 
-<Test()> _
-<ExpectedException("System.ArgumentException")>
-Public Sub IllegalPassengersTest()
+            Dim target As IBus = New Bus(8, "IVECO - Arway Intercity 10.6m", "raised floor", "diesel", 10.655, 2.55, 2.275, 1, False)
 
-  Dim target As IBus = New Bus("IVECO - Arway Intercity 10.6m","raised floor","diesel",10.655,2.550,2.275,1)
+        End Sub
 
-End Sub
+        <Test()>
+        Public Sub InitialiseFromCSVGoodDataTest()
 
-<Test()>
-Public Sub InitialiseFromCSVGoodDataTest()
-
-   Dim target As  IBusDatabase = new BusDatabase()
+            Dim target As IBusDatabase = New BusDatabase()
 
-   Dim result As Boolean = target.Initialise( GOODMAP )
+            Dim result As Boolean = target.Initialise(GOODMAP)
 
-    Assert.IsTrue(result)
+            Assert.IsTrue(result)
 
-End Sub
+        End Sub
 
-<Test()>
-Public Sub InitialiseFromCSVNotEnoughRowsTest()
+        <Test()>
+        Public Sub InitialiseFromCSVNotEnoughRowsTest()
 
 
-   Dim target As  IBusDatabase = new BusDatabase()
+            Dim target As IBusDatabase = New BusDatabase()
 
-   Dim result As Boolean = target.Initialise( INSUFFICIENTROWSMAP )
+            Dim result As Boolean = target.Initialise(INSUFFICIENTROWSMAP)
 
-    Assert.IsFalse(result)
+            Assert.IsFalse(result)
 
 
-End Sub
+        End Sub
 
-<Test()>
-Public Sub InitialiseFromCSVInvalidLengthTest()
+        <Test()>
+        Public Sub InitialiseFromCSVInvalidLengthTest()
 
-     Dim target As  IBusDatabase = new BusDatabase()
+            Dim target As IBusDatabase = New BusDatabase()
 
-   Dim result As Boolean = target.Initialise( INVALIDLENGTHMAP )
+            Dim result As Boolean = target.Initialise(INVALIDLENGTHMAP)
 
-    Assert.IsFalse(result)
+            Assert.IsFalse(result)
 
-End Sub
+        End Sub
 
-<Test()>
-Public Sub InitialiseFromCSVInvalidWidthTest()
+        <Test()>
+        Public Sub InitialiseFromCSVInvalidWidthTest()
 
-   Dim target As  IBusDatabase = new BusDatabase()
+            Dim target As IBusDatabase = New BusDatabase()
 
-   Dim result As Boolean = target.Initialise( INVALIDWIDTHMAP )
+            Dim result As Boolean = target.Initialise(INVALIDWIDTHMAP)
 
-    Assert.IsFalse(result)
+            Assert.IsFalse(result)
 
-End Sub
+        End Sub
 
-<Test()>
-Public Sub InitialiseFromCSVInvalidHeightTest()
+        <Test()>
+        Public Sub InitialiseFromCSVInvalidHeightTest()
 
-     Dim target As  IBusDatabase = new BusDatabase()
+            Dim target As IBusDatabase = New BusDatabase()
 
-   Dim result As Boolean = target.Initialise( INVALIDHEIGHTMAP )
+            Dim result As Boolean = target.Initialise(INVALIDHEIGHTMAP)
 
-    Assert.IsFalse(result)
+            Assert.IsFalse(result)
 
-End Sub
+        End Sub
 
-<Test()>
-Public Sub InitialiseFromCSVInvalidPassengersTest()
+        <Test()>
+        Public Sub InitialiseFromCSVInvalidPassengersTest()
 
-     Dim target As  IBusDatabase = new BusDatabase()
+            Dim target As IBusDatabase = New BusDatabase()
 
-     Dim result As Boolean = target.Initialise( INVALIDPASSEMGERSMAP )
+            Dim result As Boolean = target.Initialise(INVALIDPASSEMGERSMAP)
 
-    Assert.IsFalse(result)
+            Assert.IsFalse(result)
 
-End Sub
+        End Sub
 
-<Test()>
-Public Sub InitialiseFromCSVDuplicatesTest()
+        <Test()>
+        Public Sub InitialiseFromCSVDuplicatesTest()
 
-     Dim target As  IBusDatabase = new BusDatabase()
+            Dim target As IBusDatabase = New BusDatabase()
 
-     Dim result As Boolean = target.Initialise( DUPLICATES )
+            Dim result As Boolean = target.Initialise(DUPLICATES)
 
-    Assert.IsFalse(result)
+            Assert.IsFalse(result)
 
-End Sub
+        End Sub
 
-<Test()>
-Public Sub FindBusTest()
+        <Test()>
+        Public Sub FindBusTest()
 
-   Dim target As  IBusDatabase = new BusDatabase()
-   Dim result As Boolean = target.Initialise( GOODMAP )
-   Assert.IsTrue(result)
+            Dim target As IBusDatabase = New BusDatabase()
+            Dim result As Boolean = target.Initialise(GOODMAP)
+            Assert.IsTrue(result)
 
-   Dim busList  = target.GetBuses("IVECO - Crossway Intercity 10.6m")
+            Dim busList = target.GetBuses("IVECO - Crossway Intercity 10.6m")
 
-   Assert.AreEqual(1, busList.Count())
+            Assert.AreEqual(1, busList.Count())
 
-End Sub
+        End Sub
 
-<Test()>
-Public Sub FindMultipleBusesTest()
+        <Test()>
+        Public Sub FindMultipleBusesTest()
 
-   Dim target As  IBusDatabase = new BusDatabase()
-   Dim result As Boolean = target.Initialise( GOODMAP )
-   Assert.IsTrue(result)
+            Dim target As IBusDatabase = New BusDatabase()
+            Dim result As Boolean = target.Initialise(GOODMAP)
+            Assert.IsTrue(result)
 
-   Dim busList  = target.GetBuses("IVECO")
+            Dim busList = target.GetBuses("IVECO")
 
-   Assert.AreEqual(28, busList.Count())
+            Assert.AreEqual(28, busList.Count())
 
-End Sub
+        End Sub
 
-<Test()>
-Public Sub FindAllBusesTest()
+        <Test()>
+        Public Sub FindAllBusesTest()
 
-   Dim target As  IBusDatabase = new BusDatabase()
-   Dim result As Boolean = target.Initialise( GOODMAP )
-   Assert.IsTrue(result)
+            Dim target As IBusDatabase = New BusDatabase()
+            Dim result As Boolean = target.Initialise(GOODMAP)
+            Assert.IsTrue(result)
 
-   Dim busList  = target.GetBuses("")
+            Dim busList = target.GetBuses("")
 
-   Assert.AreEqual(158, busList.Count())
+            Assert.AreEqual(158, busList.Count())
 
 
-End Sub
+        End Sub
 
-<Test()>
-Public Sub FindNonExistantBus()
+        <Test()>
+        Public Sub FindNonExistantBus()
 
-   Dim target As  IBusDatabase = new BusDatabase()
-   Dim result As Boolean = target.Initialise( GOODMAP )
-   Assert.IsTrue(result)
+            Dim target As IBusDatabase = New BusDatabase()
+            Dim result As Boolean = target.Initialise(GOODMAP)
+            Assert.IsTrue(result)
 
-   Dim busList  = target.GetBuses("ZQZQZQ111ZQZQZQ")
+            Dim busList = target.GetBuses("ZQZQZQ111ZQZQZQ")
 
-   Assert.AreEqual(0, busList.Count())
+            Assert.AreEqual(0, busList.Count())
 
-End Sub
+        End Sub
 
 
 
diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/M14Tests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/M14Tests.vb
index aa0bc4eaf6..47f48d77a4 100644
--- a/VECTOAux/VectoAuxiliariesTests/UnitTests/M14Tests.vb
+++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/M14Tests.vb
@@ -18,6 +18,7 @@ public class SSMToolMock
 
 
         Public Property Calculate As ISSMCalculate Implements ISSMTOOL.Calculate
+        Public Property SSMDisabled As Boolean Implements ISSMTOOL.SSMDisabled
 
         Public Sub Clone(from As ISSMTOOL) Implements ISSMTOOL.Clone
 
-- 
GitLab