diff --git a/VECTOAux/VectoAuxiliaries/AuxiliaryConfig.vb b/VECTOAux/VectoAuxiliaries/AuxiliaryConfig.vb
index 8e0faf92115e14912b277a436daad83d6618de94..fb0f23eb0fb8b1f40cdd2ae37da425a283c15048 100644
--- a/VECTOAux/VectoAuxiliaries/AuxiliaryConfig.vb
+++ b/VECTOAux/VectoAuxiliaries/AuxiliaryConfig.vb
@@ -298,10 +298,11 @@ Public Function Load(  auxFile As String  ) As Boolean  Implements IAuxiliaryCon
       
      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 ) 
+      AssumeValuesOfOther( tmpAux ) 
    
     Catch ex as Exception
     
diff --git a/VECTOAux/VectoAuxiliaries/Hvac/ISSMTOOL.vb b/VECTOAux/VectoAuxiliaries/Hvac/ISSMTOOL.vb
index 255621f2e995a6455725a86750acf2729e7c1655..13ecf0dac5af6f72917f0f817cc091c4c2a6f7cc 100644
--- a/VECTOAux/VectoAuxiliaries/Hvac/ISSMTOOL.vb
+++ b/VECTOAux/VectoAuxiliaries/Hvac/ISSMTOOL.vb
@@ -10,8 +10,12 @@ ReadOnly Property MechanicalWBaseAdjusted As Single
 ReadOnly Property FuelLPerHBaseAdjusted   As Single
 
 
+Sub Clone( from As ISSMTOOL )
 
 
+Function Load(filePath As String)  As Boolean
+
+Function Save(filePath As String) As Boolean  
 
 
 
diff --git a/VECTOAux/VectoAuxiliaries/Hvac/SSMTOOL.vb b/VECTOAux/VectoAuxiliaries/Hvac/SSMTOOL.vb
index 9c89c6b72854a08e6b6890288103e47663f3387f..643b1eacfb776b42e52de93fa40676658dd372d2 100644
--- a/VECTOAux/VectoAuxiliaries/Hvac/SSMTOOL.vb
+++ b/VECTOAux/VectoAuxiliaries/Hvac/SSMTOOL.vb
@@ -1,71 +1,148 @@
-Namespace Hvac
+Imports Omu.ValueInjecter
+Imports VectoAuxiliaries.Hvac
+Imports Newtonsoft.Json
+Imports System.IO
+
+Namespace Hvac
+
 
 
 Public Class SSMTOOL
 Implements ISSMTOOL
 
 
+ Private filePath As String
+ Public genInputs As ISSMGenInputs
+ Public techList  As ISSMTechList
 
 
-
-        Public ReadOnly Property ElectricalWAdjusted As Single Implements ISSMTOOL.ElectricalWAdjusted
+       Public ReadOnly Property ElectricalWAdjusted As Single Implements ISSMTOOL.ElectricalWAdjusted
             Get
 
             End Get
         End Property
-        Public ReadOnly Property ElectricalWBase As Single Implements ISSMTOOL.ElectricalWBase
+       Public ReadOnly Property ElectricalWBase As Single Implements ISSMTOOL.ElectricalWBase
             Get
 
             End Get
         End Property
-        Public ReadOnly Property FuelLPerHBase As Single Implements ISSMTOOL.FuelLPerHBase
+       Public ReadOnly Property FuelLPerHBase As Single Implements ISSMTOOL.FuelLPerHBase
             Get
 
             End Get
         End Property
 
-        Public ReadOnly Property FuelLPerHBaseAdjusted As Single Implements ISSMTOOL.FuelLPerHBaseAdjusted
+       Public ReadOnly Property FuelLPerHBaseAdjusted As Single Implements ISSMTOOL.FuelLPerHBaseAdjusted
             Get
 
             End Get
         End Property
-        Public ReadOnly Property MechanicalWBase As Single Implements ISSMTOOL.MechanicalWBase
+       Public ReadOnly Property MechanicalWBase As Single Implements ISSMTOOL.MechanicalWBase
             Get
 
             End Get
         End Property
-        Public ReadOnly Property MechanicalWBaseAdjusted As Single Implements ISSMTOOL.MechanicalWBaseAdjusted
+       Public ReadOnly Property MechanicalWBaseAdjusted As Single Implements ISSMTOOL.MechanicalWBaseAdjusted
             Get
 
             End Get
         End Property
 
 
+       Sub New()
+
 
 
+       End Sub
 
+       Sub New(filePath As String)
 
-       Sub new ( )
+         Me.filePath = filePath
 
+         genInputs = New SSMGenInputs(True)
+         techList = New SSMTechList(filePath, genInputs)
 
 
        End Sub
 
-       Sub New ( StoredFilePath As string)
 
+       Public Sub Clone(from As ISSMTOOL) Implements ISSMTOOL.Clone
 
+          Dim feedback As String = String.Empty
 
-       End Sub
+          genInputs.InjectFrom(DirectCast(from, SSMTOOL).genInputs)
 
-       Private Sub SetDefaults()
+          techList.InjectFrom(DirectCast(from, SSMTOOL).techList)
+          techList.Clear()
 
+          For Each line As TechListBenefitLine In DirectCast(from, SSMTOOL).techList.TechLines
 
+              Dim newLine As ITechListBenefitLine = New TechListBenefitLine(Me.genInputs)
+              newLine.InjectFrom(line)
+              techList.Add(newLine, feedback)
 
+          Next
 
        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 output As String = JsonConvert.SerializeObject(Me, Formatting.Indented, settings)
+
+      File.WriteAllText(filePath, output)
+
+      Catch ex As Exception
+
+        'TODO:Do something meaningfull here perhaps logging
+         returnValue = False
+
+    End Try
+
+  Return returnValue
+
+End Function
+Public Function Load(filePath As String) As Boolean Implements ISSMTOOL.Load
+
+  Dim returnValue As Boolean = True
+  Dim settings As JsonSerializerSettings = New JsonSerializerSettings()
+  Dim tmpAux As SSMTOOL = New SSMTOOL()
+
+  settings.TypeNameHandling = TypeNameHandling.Objects
+
+   'JSON METHOD
+   Try
+
+     Dim output As String = File.ReadAllText(filePath)
+
+
+     tmpAux = JsonConvert.DeserializeObject(Of SSMTOOL)(output, settings)
+
+     'This is where we Assume values of loaded( Deserialized ) object.
+     Clone(tmpAux)
+
+    Catch ex As Exception
+
+      'TODO:Do something meaningfull here perhaps logging
+
+       returnValue = False
+    End Try
+
+  Return returnValue
+
+End Function
+
+
+
 End Class
 
 
diff --git a/VECTOAux/VectoAuxiliaries/Hvac/TechListBenefitLine.vb b/VECTOAux/VectoAuxiliaries/Hvac/TechListBenefitLine.vb
index 527063c0c42f0768749be739152762c9180cbca9..feb865ba7d092a4ba90bc57ee56440d417e56371 100644
--- a/VECTOAux/VectoAuxiliaries/Hvac/TechListBenefitLine.vb
+++ b/VECTOAux/VectoAuxiliaries/Hvac/TechListBenefitLine.vb
@@ -232,15 +232,17 @@ End Sub
              op1.ActiveVC        = op2.ActiveVC        AndAlso _
              op1.ActiveVH        = op2.ActiveVH        AndAlso _
              op1.ActiveVV        = op2.ActiveVV        AndAlso _
-             op1.H               = op2.H               AndAlso _
              op1.LineType        = op2.LineType        AndAlso _
+             op1.LowFloorC       = op2.LowFloorC       AndAlso _
              op1.LowFloorV       = op2.LowFloorV       AndAlso _
+             op1.LowFloorH       = op2.LowFloorH       AndAlso _
              op1.SemiLowFloorC   = op2.SemiLowFloorC   AndAlso _
              op1.SemiLowFloorH   = op2.SemiLowFloorH   AndAlso _
              op1.SemiLowFloorV   = op2.SemiLowFloorV   AndAlso _
              op1.RaisedFloorC    = op2.RaisedFloorC    AndAlso _
              op1.RaisedFloorH    = op2.RaisedFloorH    AndAlso _
              op1.RaisedFloorV    = op2.RaisedFloorV    AndAlso _
+             op1.OnVehicle       = op2.OnVehicle       AndAlso _
              op1.Units           = op2.Units ) then
 
           Return True
@@ -253,23 +255,24 @@ End Sub
 
 
 End Operator
-
  Public Shared Operator <> (ByVal op1 as TechListBenefitLine, ByVal op2 as TechListBenefitLine) As Boolean
 
         If ( op1.Category        <> op2.Category        OrElse _
              op1.BenefitName     <> op2.BenefitName     OrElse _
              op1.ActiveVC        <> op2.ActiveVC        OrElse _
              op1.ActiveVH        <> op2.ActiveVH        OrElse _
-             op1.ActiveVV        <> op2.ActiveVV        OrElse _
-             op1.H               <> op2.H               OrElse _
+             op1.ActiveVV        <> op2.ActiveVV        OrElse _           
              op1.LineType        <> op2.LineType        OrElse _
+             op1.LowFloorC       <> op2.LowFloorC       OrElse _
              op1.LowFloorV       <> op2.LowFloorV       OrElse _
+             op1.LowFloorH       <> op2.LowFloorH       OrElse _
              op1.SemiLowFloorC   <> op2.SemiLowFloorC   OrElse _
              op1.SemiLowFloorH   <> op2.SemiLowFloorH   OrElse _
              op1.SemiLowFloorV   <> op2.SemiLowFloorV   OrElse _
              op1.RaisedFloorC    <> op2.RaisedFloorC    OrElse _
              op1.RaisedFloorH    <> op2.RaisedFloorH    OrElse _
              op1.RaisedFloorV    <> op2.RaisedFloorV    OrElse _
+             op1.OnVehicle       <> op2.OnVehicle       OrElse _
              op1.Units           <> op2.Units ) then
 
           Return True
@@ -283,13 +286,13 @@ End Operator
 
 End Operator
 
-
+ 
  Public Sub CloneFrom(source As ITechListBenefitLine) Implements ITechListBenefitLine.CloneFrom
 
 
-     Me.Units         = source.Units        
-     Me.Category      = source.Category     
-     Me.BenefitName   = source.BenefitName  
+     Me.Units          = source.Units        
+     Me.Category       = source.Category     
+     Me.BenefitName    = source.BenefitName  
      Me.LowFloorH      = source.LowFloorH 
      Me.LowFloorV      = source.LowFloorV
      Me.LowFloorC      = source.LowFloorC      
@@ -302,23 +305,20 @@ End Operator
      Me.RaisedFloorV   = source.RaisedFloorV  
      Me.RaisedFloorC   = source.RaisedFloorC  
 
-     Me.OnVehicle     = source.OnVehicle    
-     Me.ActiveVH      = source.ActiveVH     
-     Me.ActiveVV      = source.ActiveVV     
-     Me.ActiveVC      = source.ActiveVC     
-     Me.LineType      = source.LineType     
+     Me.OnVehicle      = source.OnVehicle    
+     Me.ActiveVH       = source.ActiveVH     
+     Me.ActiveVV       = source.ActiveVV     
+     Me.ActiveVC       = source.ActiveVC     
+     Me.LineType       = source.LineType     
 
 
  End Sub
+ Public Function IsEqualTo(source As ITechListBenefitLine) As boolean Implements ITechListBenefitLine.IsEqualTo
 
+      Return If(Me=source,True,False)
+      
 
-
-        Public Function IsEqualTo(source As ITechListBenefitLine) As boolean Implements ITechListBenefitLine.IsEqualTo
-
-          Return Me=source
-          
-
-        End Function
+    End Function
 
 
 
diff --git a/VECTOAux/VectoAuxiliaries/VectoAuxiliaries.vbproj b/VECTOAux/VectoAuxiliaries/VectoAuxiliaries.vbproj
index e35fcc5c31bd9919ebbd996a6509c9911e1c8c8f..a867030c68e5363abf5da08b34eb62dfc77bb3fb 100644
--- a/VECTOAux/VectoAuxiliaries/VectoAuxiliaries.vbproj
+++ b/VECTOAux/VectoAuxiliaries/VectoAuxiliaries.vbproj
@@ -56,6 +56,9 @@
       <SpecificVersion>False</SpecificVersion>
       <HintPath>bin\Debug\Newtonsoft.Json.dll</HintPath>
     </Reference>
+    <Reference Include="Omu.ValueInjecter">
+      <HintPath>..\..\packages\valueinjecter.2.3.3\lib\net35\Omu.ValueInjecter.dll</HintPath>
+    </Reference>
     <Reference Include="SpreadsheetLight, Version=3.4.4.0, Culture=neutral, PublicKeyToken=32fbb46dc1730c57, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
       <HintPath>3rdPartyLibraries\SpreadsheetLight.dll</HintPath>
diff --git a/VECTOAux/VectoAuxiliaries/packages.config b/VECTOAux/VectoAuxiliaries/packages.config
index 6f5b1e06a3cce86c7880219342a2c724cb3778a2..a7d552e47c7e264d5d35ff3563717de6b4b294bf 100644
--- a/VECTOAux/VectoAuxiliaries/packages.config
+++ b/VECTOAux/VectoAuxiliaries/packages.config
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <packages>
   <package id="Newtonsoft.Json" version="6.0.6" targetFramework="net40" />
+  <package id="valueinjecter" version="2.3.3" targetFramework="net40" />
 </packages>
\ No newline at end of file
diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/SSMTOOLTests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/SSMTOOLTests.vb
index e6fdc95496a6433d93852d5940cea9d29183ab19..5abca22f90b82a82ce2c29442e3f9f7306c5a134 100644
--- a/VECTOAux/VectoAuxiliariesTests/UnitTests/SSMTOOLTests.vb
+++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/SSMTOOLTests.vb
@@ -426,6 +426,132 @@ End Sub
 
   End Sub
  
+   'TechListLineTests
+   <Test()>
+   Public Sub Instantiate_NewTechListLine()
+
+    Dim gen As ISSMGenInputs = New SSMGenInputs(true)
+
+    Dim ttl As ITechListBenefitLine = New TechListBenefitLine( gen)
+
+    Assert.IsNotNull( ttl )
+
+
+   End Sub
+   <Test()>
+   Public Sub TechBenefitLineCompareAsEqual()
+
+    Dim gen As ISSMGenInputs = New SSMGenInputs(true)
+
+    Dim ttl1 As ITechListBenefitLine = New TechListBenefitLine( gen)
+    Dim ttl2 As ITechListBenefitLine = New TechListBenefitLine( gen)
+
+    Assert.IsTrue( ttl1.IsEqualTo(ttl2) )
+
+
+   End Sub
+   <Test()> _
+    <TestCase("Category"         )> _
+    <TestCase("BenefitName"      )> _
+    <TestCase("ActiveVC"         )> _
+    <TestCase("ActiveVH"         )> _
+    <TestCase("ActiveVV"         )> _
+    <TestCase("LineType"         )> _
+    <TestCase("LowFloorC"        )> _
+    <TestCase("LowFloorV"        )> _
+    <TestCase("LowFloorH"        )> _
+    <TestCase("SemiLowFloorC"    )> _
+    <TestCase("SemiLowFloorH"    )> _
+    <TestCase("SemiLowFloorV"    )> _
+    <TestCase("RaisedFloorC"     )> _
+    <TestCase("RaisedFloorH"     )> _
+    <TestCase("RaisedFloorV"     )> _
+    <TestCase("Units"            )> _
+    <TestCase("OnVehicle"        )> _
+   Public Sub TechBenefitLineCompareAsUnequal( prop As string)
+
+    Dim gen As ISSMGenInputs = New SSMGenInputs(true)
+
+    Dim ttl1 As ITechListBenefitLine = New TechListBenefitLine( gen)
+    Dim ttl2 As ITechListBenefitLine = New TechListBenefitLine( gen)
+
+    Select Case prop
+
+
+           Case "Category"     
+                ttl2.Category="NOT"
+           Case "BenefitName"  
+                ttl2.BenefitName="NOT"
+           Case "ActiveVC"    
+                ttl2.ActiveVC=True
+           Case "ActiveVH"    
+                ttl2.ActiveVH=True
+           Case "ActiveVV"    
+                ttl2.ActiveVV=True
+           Case "LineType"    
+                ttl2.LineType = TechLineType.HVCActiveSelection
+           Case "LowFloorC"   
+                ttl2.LowFloorC=1
+           Case "LowFloorV"  
+                ttl2.LowFloorV=1
+           Case "LowFloorH"   
+                ttl2.LowFloorH=1
+           Case "SemiLowFloorC" 
+                ttl2.SemiLowFloorC=1
+           Case "SemiLowFloorH" 
+                ttl2.SemiLowFloorH=1
+           Case "SemiLowFloorV" 
+                ttl2.SemiLowFloorH=1
+           Case "RaisedFloorC" 
+                 ttl2.RaisedFloorC=1
+           Case "RaisedFloorH"  
+                 ttl2.RaisedFloorH=1
+           Case "RaisedFloorV" 
+                 ttl2.RaisedFloorV=1
+           Case "Units"
+                 ttl2.Units ="NONE"
+           Case "OnVehicle"
+                 ttl2.OnVehicle =True
+
+    End Select
+
+ 
+    Assert.IsFalse(ttl1.IsEqualTo(ttl2) )
+
+
+   End Sub
+
+
+  'SSMTOOL Persistance
+  <Test()>
+  Public Sub SaveAndRetreiveTest()
+
+         const  filePath as string  = "SSMTOOLTestSaveRetreive.json"
+
+         Dim gen As ISSMGenInputs = New SSMGenInputs(true)
+
+         Dim saved As new SSMTOOL
+ 
+
+
+         Dim target As SSMTOOL = New SSMTOOL(filePath )
+
+         target.Save(filePath)
+
+         'change something
+         target.genInputs.BP_BusLength=202.202
+
+         Assert.AreEqual(  target.genInputs.BP_BusLength,202.202)
+
+         'Retreive
+         target.Load( filePath )
+        
+         Assert.AreEqual(  target.genInputs.BP_BusLength,10.655)         
+
+
+  End Sub
+
+
  End Class
 
 End Namespace