diff --git a/VECTO/GUI/IHPCForm.vb b/VECTO/GUI/IHPCForm.vb
index 3e7404fc653ee46ed2f1567ef664718076c6109e..2807748e52373a9fb76bdc69e1227f6554b2682f 100644
--- a/VECTO/GUI/IHPCForm.vb
+++ b/VECTO/GUI/IHPCForm.vb
@@ -1,4 +1,5 @@
 Imports System.IO
+Imports TUGraz.VECTO.Input_Files
 Imports TUGraz.VectoCommon.InputData
 Imports TUGraz.VectoCommon.Utils
 Imports TUGraz.VectoCore.InputData.FileIO.JSON
@@ -18,11 +19,11 @@ Public Class IHPCForm
 
     Public Sub ReadIHPCFile(file As String)
         Dim ihpcData = JSONInputDataFactory.ReadIHPCEngineeringInputData(file, True)
-
+        _ihpcFilePath = file
         tbModel.Text = ihpcData.Model
         tbInertia.Text = ihpcData.Inertia.ToGUIFormat()
         tbThermalOverload.Text = ihpcData.OverloadRecoveryFactor.ToGUIFormat()
-        tbDragCurve.Text = ihpcData.DragCurve.Source
+        tbDragCurve.Text = GetRelativePath(ihpcData.DragCurve.Source, Path.GetDirectoryName(_ihpcFilePath))
 
         SetVoltageLevelLow(ihpcData.VoltageLevels.First()) 
         SetVoltageLevelHigh(ihpcData.VoltageLevels.Last())
@@ -39,7 +40,7 @@ Public Class IHPCForm
         tbOverloadTime1.Text = voltageLevel.OverloadTime.ToGUIFormat()
         tbOverloadTorque1.Text = voltageLevel.OverloadTorque.ToGUIFormat()
         tbOverloadTorqueSpeed1.Text = voltageLevel.OverloadTestSpeed.AsRPM.ToGUIFormat()
-        tbFLCurve1.Text = voltageLevel.FullLoadCurve.Source
+        tbFLCurve1.Text = GetRelativePath(voltageLevel.FullLoadCurve.Source, path.GetDirectoryName(_ihpcFilePath))
         SetPowerMapEntries(_lvPowerMap1, voltageLevel.PowerMap)
 
     End Sub
@@ -52,7 +53,7 @@ Public Class IHPCForm
         tbOverloadTime2.Text = voltageLevel.OverloadTime.ToGUIFormat()
         tbOverloadTorque2.Text = voltageLevel.OverloadTorque.ToGUIFormat()
         tbOverloadTorqueSpeed2.Text = voltageLevel.OverloadTestSpeed.AsRPM.ToGUIFormat()
-        tbFLCurve2.Text = voltageLevel.FullLoadCurve.Source
+        tbFLCurve2.Text = GetRelativePath(voltageLevel.FullLoadCurve.Source, Path.GetDirectoryName(_ihpcFilePath))
         SetPowerMapEntries(_lvPowerMap2, voltageLevel.PowerMap)
 
     End Sub
@@ -67,7 +68,7 @@ Public Class IHPCForm
     Private Function CreateListViewItem(axleNumber As Integer, filepath As String) As ListViewItem
         Dim retVal As New ListViewItem
         retVal.SubItems(0).Text = axleNumber.ToGUIFormat()
-        retVal.SubItems.Add(filepath)
+        retVal.SubItems.Add(GetRelativePath(filepath, Path.GetDirectoryName(_ihpcFilePath)))
         Return retVal
     End Function
     
@@ -116,20 +117,20 @@ Public Class IHPCForm
 #Region "Events"
 
     Private Sub btDragCurve_Click(sender As Object, e As EventArgs) Handles btDragCurve.Click
-        If IHPCDragCurveFileBrowser.OpenDialog(FileRepl(tbDragCurve.Text, GetPath(_dragCurveFilePath)))
-            _tbDragCurve.Text = GetFilenameWithoutDirectory(IHPCDragCurveFileBrowser.Files(0), GetPath(_dragCurveFilePath))
+        If IHPCDragCurveFileBrowser.OpenDialog(FileRepl(tbDragCurve.Text, GetPath(_ihpcFilePath)))
+            _tbDragCurve.Text = GetFilenameWithoutDirectory(IHPCDragCurveFileBrowser.Files(0), GetPath(_ihpcFilePath))
         End If
     End Sub
     
     Private Sub btFLCurveFile1_Click(sender As Object, e As EventArgs) Handles btFLCurveFile1.Click
-        If IHPCFullLoadCurveFileBrowser.OpenDialog(FileRepl(tbFLCurve1.Text, GetPath(_flCurveFilePath1)))
-            _tbFLCurve1.Text = GetFilenameWithoutDirectory(IHPCFullLoadCurveFileBrowser.Files(0), GetPath(_flCurveFilePath1))
+        If IHPCFullLoadCurveFileBrowser.OpenDialog(FileRepl(tbFLCurve1.Text, GetPath(_ihpcFilePath)))
+            _tbFLCurve1.Text = GetFilenameWithoutDirectory(IHPCFullLoadCurveFileBrowser.Files(0), GetPath(_ihpcFilePath))
         End If
     End Sub
     
     Private Sub btFLCurveFile2_Click(sender As Object, e As EventArgs) Handles btFLCurveFile2.Click
-        If IHPCFullLoadCurveFileBrowser.OpenDialog(FileRepl(tbFLCurve2.Text, GetPath(_flCurveFilePath2)))
-            _tbFLCurve2.Text = GetFilenameWithoutDirectory(IHPCFullLoadCurveFileBrowser.Files(0), GetPath(_flCurveFilePath2))
+        If IHPCFullLoadCurveFileBrowser.OpenDialog(FileRepl(tbFLCurve2.Text, GetPath(_ihpcFilePath)))
+            _tbFLCurve2.Text = GetFilenameWithoutDirectory(IHPCFullLoadCurveFileBrowser.Files(0), GetPath(_ihpcFilePath))
         End If
     End Sub
 
@@ -184,6 +185,7 @@ Public Class IHPCForm
         IHPCPowerMapInputDialog.tbGear.Text = entry.SubItems(0).Text
         IHPCPowerMapInputDialog.tbInputFile.Text = entry.SubItems(1).Text
         IHPCPowerMapInputDialog.tbGear.Focus()
+        IHPCPowerMapInputDialog.IHPCPath = GetPath(_ihpcFilePath)
 
         If IHPCPowerMapInputDialog.ShowDialog() = DialogResult.OK Then
             entry.SubItems(0).Text = IHPCPowerMapInputDialog.tbGear.Text
@@ -275,7 +277,7 @@ Public Class IHPCForm
     End Function
 
     Private Function SaveIHPCToFile(ByVal ihpcFilePath As String) As Boolean
-        Dim ihpcInputData = New IHPCInputData
+        Dim ihpcInputData = New IHPCInputData(ihpcFilePath)
 
         ihpcInputData.SetCommonEntries(tbModel.Text, tbInertia.Text, tbDragCurve.Text, tbThermalOverload.Text)
         ihpcInputData.SetVoltageLevelEntries(tbVoltage1.Text, tbContinuousTorque1.Text, tbContinuousTorqueSpeed1.Text,
@@ -286,7 +288,7 @@ Public Class IHPCForm
                                              tbFLCurve2.Text, lvPowerMap2)
 
 
-        If Not ihpcInputData.SaveFile(ihpcFilePath) Then
+        If Not ihpcInputData.SaveFile() Then
             MsgBox("Cannot save to " & ihpcFilePath, MsgBoxStyle.Critical)
             Return False
         End If
@@ -355,7 +357,9 @@ Public Class IHPCForm
     End Function
 
     Private Function ValidateDragCurve() As Boolean
-        If Not File.Exists(tbDragCurve.Text) Then
+        dim tmp = new SubPath()
+		tmp.Init(GetPath(_ihpcFilePath), tbDragCurve.Text)
+        If Not File.Exists(tmp.FullPath) Then
             ShowErrorMessageBox("No valid Drag Curve file path given", tbDragCurve, False)
             Return False
         End If
@@ -418,7 +422,9 @@ Public Class IHPCForm
     End Function
     
     Private Function ValidateFullLoadCurve(tb As TextBox) As Boolean
-        If Not File.Exists(tb.Text) Then
+        dim tmp = new SubPath()
+        tmp.Init(GetPath(_ihpcFilePath), tb.Text)
+        If Not File.Exists(tmp.FullPath) Then
             ShowErrorMessageBox("No valid Full Load Curve file path given", tb, False)
             Return False
         End If
diff --git a/VECTO/GUI/IHPCPowerMapInputDialog.vb b/VECTO/GUI/IHPCPowerMapInputDialog.vb
index 9a002155b8dfe00bb25e599dc7d57ac874821210..5dcd9d6958fa61d15a51893a55a7910619f31b46 100644
--- a/VECTO/GUI/IHPCPowerMapInputDialog.vb
+++ b/VECTO/GUI/IHPCPowerMapInputDialog.vb
@@ -1,8 +1,10 @@
 Imports System.IO
+Imports TUGraz.VECTO.Input_Files
 
 Public Class IHPCPowerMapInputDialog
     
     Private _inputFilePath As String
+    Public IHPCPath As String
 
     public Sub Clear()
         _tbGear.Text = ""
@@ -34,7 +36,9 @@ Public Class IHPCPowerMapInputDialog
             Return
         End If
 
-        If Not File.Exists(tbInputFile.Text) Then
+        Dim tmp As SubPath = New SubPath()
+        tmp.Init(IHPCPath, tbInputFile.Text)
+        If Not File.Exists(tmp.FullPath) Then
             MsgBox("Invalid input no valid file path given")
             _tbInputFile.Focus()
             Return
@@ -57,8 +61,8 @@ Public Class IHPCPowerMapInputDialog
     End Sub
 
     Private Sub btAddFilePath_Click(sender As Object, e As EventArgs) Handles btAddFilePath.Click
-        If IHPCPowerMapFileBrowser.OpenDialog(FileRepl(tbInputFile.Text, GetPath(_inputFilePath)))
-            tbInputFile.Text = GetFilenameWithoutDirectory(IHPCPowerMapFileBrowser.Files(0), GetPath(_inputFilePath))
+        If IHPCPowerMapFileBrowser.OpenDialog(FileRepl(tbInputFile.Text, IHPCPath))
+            tbInputFile.Text = GetFilenameWithoutDirectory(IHPCPowerMapFileBrowser.Files(0),IHPCPath)
         End If
     End Sub
 
diff --git a/VECTO/GUI/VectoJobForm.vb b/VECTO/GUI/VectoJobForm.vb
index 15b78f808295e9190919150a5ea6931078f6bcdf..667589cdfe467474ae01c3f2e037ce2ce5d13569 100644
--- a/VECTO/GUI/VectoJobForm.vb
+++ b/VECTO/GUI/VectoJobForm.vb
@@ -1063,11 +1063,12 @@ Public Class VectoJobForm
                 pnShiftParams.Enabled = True
                 gbEngineStopStart.Visible = False
             Case VectoSimulationJobType.IHPC
-                pnEngine.Enabled = False
+                pnEngine.Enabled = True
                 pnGearbox.Enabled = True
-                GrAuxMech.Enabled = False
+                GrAuxMech.Enabled = True
                 pnShiftParams.Enabled = True
                 gbEngineStopStart.Visible = False
+                pnHybridStrategy.Enabled = true
             Case VectoSimulationJobType.IEPC_E
                 pnEngine.Enabled = False
                 pnGearbox.Enabled = True
diff --git a/VECTO/GUI/VehicleForm.vb b/VECTO/GUI/VehicleForm.vb
index 476cba239928b4327e75aa7e1f1e8261257a110a..8a61e13b6fcb19f7c1b4472a2c8c9b606834a64d 100644
--- a/VECTO/GUI/VehicleForm.vb
+++ b/VECTO/GUI/VehicleForm.vb
@@ -814,7 +814,8 @@ Public Class VehicleForm
 		veh.RetarderRatio = TbRtRatio.Text.ToDouble(0)
 		veh.RetarderLossMapFile.Init(GetPath(file), TbRtPath.Text)
 
-		If (VehicleType = VectoSimulationJobType.ConventionalVehicle OrElse VehicleType = VectoSimulationJobType.ParallelHybridVehicle OrElse VehicleType = VectoSimulationJobType.SerialHybridVehicle) Then
+		If (VehicleType = VectoSimulationJobType.ConventionalVehicle OrElse VehicleType = VectoSimulationJobType.ParallelHybridVehicle _
+            OrElse VehicleType = VectoSimulationJobType.SerialHybridVehicle OrElse VehicleType = VectoSimulationJobType.IHPC) Then
 			veh.VehicleidlingSpeed = _tbVehIdlingSpeed.Text.ToDouble(0).RPMtoRad()
 
 			veh.AngledriveType = CType(cbAngledriveType.SelectedValue, AngledriveType)
@@ -876,10 +877,22 @@ Public Class VehicleForm
 			    If (veh.ElectricMotorPosition = PowertrainPosition.HybridP2_5) Then
 				    veh.ElectricMotorPerGearRatios = lvRatioPerGear.Items.Cast(Of ListViewItem).Select(Function(item) item.SubItems(RatiosPerGearTbl.Ratio).Text.ToDouble(0)).ToArray()
 			    End If
+				
 		    end if
 			if (VehicleType = VectoSimulationJobType.IEPC_S OrElse VehicleType = VectoSimulationJobType.IEPC_E) Then
 				veh.IEPCFile.Init(GetPath(file), tbIEPCFilePath.Text)
 			End If
+		    if (VehicleType = VectoSimulationJobType.IHPC) Then
+		        If (tbIHPCFilePath.Text = "") Then
+		            MsgBox("IHPC File is required.")
+		            tcVehicleComponents.SelectedTab = tbIHPC
+		            tbIHPCFilePath.Focus()
+		        End If
+		        veh.ElectricMotorFile.Init(GetPath(file), tbIHPCFilePath.Text)
+		        veh.ElectricMotorPosition = PowertrainPosition.IHPC
+		        veh.ElectricMotorCount = 1
+		        veh.ElectricMotorRatio = 1
+		    End If
 		End If
 
 		If (VehicleType = VectoSimulationJobType.SerialHybridVehicle OrElse VehicleType = VectoSimulationJobType.IEPC_S) Then
diff --git a/VECTO/Input Files/IHPCInputData.vb b/VECTO/Input Files/IHPCInputData.vb
index 80eef70e03bd75ef399b52a1cd49083d3d6cf283..69f24a0f6175b4c3854aaecff61c52406f5adbb2 100644
--- a/VECTO/Input Files/IHPCInputData.vb	
+++ b/VECTO/Input Files/IHPCInputData.vb	
@@ -1,4 +1,5 @@
 Imports System.IO
+Imports TUGraz.VECTO.Input_Files
 Imports TUGraz.VectoCommon.Exceptions
 Imports TUGraz.VectoCommon.InputData
 Imports TUGraz.VectoCommon.Models
@@ -17,16 +18,15 @@ Public Class IHPCInputData
     Private _overloadRecoveryFactor As Double
     private _filePath As String
 
-    Public Sub New ()
+    Public Sub New (file As String)
         _voltageLevels = New List(Of IElectricMotorVoltageLevel)()
+        _filePath = file
     End Sub
 
-    Public Function SaveFile(filePath As String) As Boolean
-        _filePath = filePath
-
+    Public Function SaveFile() As Boolean
         Try
             Dim writer = New JSONFileWriter()
-            writer.SaveIHPC(Me, filePath, Cfg.DeclMode)
+            writer.SaveIHPC(Me, _filePath, Cfg.DeclMode)
         Catch ex As Exception
             MsgBox("Failed to write IHPC file: " + ex.Message)
             Return False
@@ -39,10 +39,12 @@ Public Class IHPCInputData
                                 thermalOverloadRecoverFactor As String )
         _model = model
         _inertia = inertia.ToDouble().SI(Of KilogramSquareMeter)
-        If Not File.Exists(dragCurveFilePath) Then 
+        Dim tmp as SubPath = new SubPath()
+        tmp.Init(GetPath(_filePath), dragCurveFilePath)
+        If Not File.Exists(tmp.FullPath) Then 
             Throw New VectoException("Drag Curve is missing or invalid")
         Else
-            _dragCurve = VectoCSVFile.Read(dragCurveFilePath)
+            _dragCurve = VectoCSVFile.Read(tmp.FullPath)
         End If
 
         _overloadRecoveryFactor = thermalOverloadRecoverFactor.ToDouble()
@@ -60,10 +62,12 @@ Public Class IHPCInputData
         level.OverloadTime = overloadTime.ToDouble().SI(Of Second)
         level.OverloadTorque = overloadTorque.ToDouble().SI(Of NewtonMeter)
         level.OverloadTestSpeed = overloadTorqueSpeed.ToDouble().RPMtoRad()
-        If Not File.Exists(fullLoadCurve) Then 
+        Dim tmp as SubPath = new SubPath()
+        tmp.Init(GetPath(_filePath), fullLoadCurve)
+        If Not File.Exists(tmp.FullPath) Then 
             Throw New VectoException("Full-Load Curve is missing or invalid")
         Else
-            level.FullLoadCurve = VectoCSVFile.Read(fullLoadCurve)
+            level.FullLoadCurve = VectoCSVFile.Read(tmp.FullPath)
         End If
         level.PowerMap = GetPowerMap(powerMap)
         
@@ -77,11 +81,12 @@ Public Class IHPCInputData
         For Each entry As ListViewItem In powerMap.Items
             Dim currentEntry = New JSONElectricMotorPowerMap
             currentEntry.Gear = entry.SubItems(0).Text.ToInt()
-            
-            If Not File.Exists(entry.SubItems(1).Text) Then
+            Dim tmp as SubPath = new SubPath()
+            tmp.Init(GetPath(_filePath), entry.SubItems(1).Text)
+            If Not File.Exists(tmp.FullPath) Then
                 Throw New VectoException("Power Map is missing or invalid")
             Else 
-                currentEntry.PowerMap = VectoCSVFile.Read(entry.SubItems(1).Text)
+                currentEntry.PowerMap = VectoCSVFile.Read(tmp.FullPath)
             End If
             powerMaps.Add(currentEntry)
         Next
diff --git a/VECTO/Input Files/Vehicle.vb b/VECTO/Input Files/Vehicle.vb
index 680773de38b272112a026148e044850c2ad836df..2b4958e2cea1d8973fc5181f72d56c251177dc54 100644
--- a/VECTO/Input Files/Vehicle.vb	
+++ b/VECTO/Input Files/Vehicle.vb	
@@ -1080,7 +1080,10 @@ Public Class ElectricMachinesWrapper
 	Public ReadOnly Property Entries As IList(Of ElectricMachineEntry(Of IElectricMotorDeclarationInputData)) Implements IElectricMachinesDeclarationInputData.Entries
 		Get
 			Dim retval As IList(Of ElectricMachineEntry(Of IElectricMotorDeclarationInputData)) = New List(Of ElectricMachineEntry(Of IElectricMotorDeclarationInputData))
-			If (Vehicle.VehicleType = VectoSimulationJobType.BatteryElectricVehicle OrElse Vehicle.VehicleType = VectoSimulationJobType.ParallelHybridVehicle OrElse Vehicle.VehicleType = VectoSimulationJobType.SerialHybridVehicle) Then 
+			If (Vehicle.VehicleType = VectoSimulationJobType.BatteryElectricVehicle OrElse 
+                Vehicle.VehicleType = VectoSimulationJobType.ParallelHybridVehicle OrElse 
+                Vehicle.VehicleType = VectoSimulationJobType.SerialHybridVehicle OrElse 
+                Vehicle.VehicleType = VectoSimulationJobType.IHPC) Then 
 
 				retval.Add(New ElectricMachineEntry(Of IElectricMotorDeclarationInputData) With {
 					.ElectricMachine = new ElectricMachineWrapper(Vehicle.ElectricMotorFile),
@@ -1108,11 +1111,15 @@ Public Class ElectricMachinesWrapper
 		Get
 			Dim retval As IList(Of ElectricMachineEntry(Of IElectricMotorEngineeringInputData)) =  New List(Of ElectricMachineEntry(Of IElectricMotorEngineeringInputData))
 			
-			If (Vehicle.VehicleType = VectoSimulationJobType.BatteryElectricVehicle OrElse Vehicle.VehicleType = VectoSimulationJobType.ParallelHybridVehicle OrElse Vehicle.VehicleType = VectoSimulationJobType.SerialHybridVehicle) Then 
+			If (Vehicle.VehicleType = VectoSimulationJobType.BatteryElectricVehicle OrElse 
+                Vehicle.VehicleType = VectoSimulationJobType.ParallelHybridVehicle OrElse 
+                Vehicle.VehicleType = VectoSimulationJobType.SerialHybridVehicle OrElse 
+                Vehicle.VehicleType = VectoSimulationJobType.IHPC) Then 
+
 				retval.Add(New ElectricMachineEntry(Of IElectricMotorEngineeringInputData) With {
 					.ElectricMachine = new ElectricMachineWrapper(Vehicle.ElectricMotorFile),
 					.MechanicalTransmissionEfficiency = If(IsNumeric(Vehicle.ElectricMotorMechLossMap.OriginalPath), Vehicle.ElectricMotorMechLossMap.OriginalPath.ToDouble(), double.NaN), 
-					.MechanicalTransmissionLossMap = If(IsNumeric(Vehicle.ElectricMotorMechLossMap.OriginalPath), Nothing, VectoCSVFile.Read(Vehicle.ElectricMotorMechLossMap.FullPath)),
+					.MechanicalTransmissionLossMap = If(IsNumeric(Vehicle.ElectricMotorMechLossMap.OriginalPath) OrElse String.IsNullOrWhiteSpace(Vehicle.ElectricMotorMechLossMap.OriginalPath), Nothing, VectoCSVFile.Read(Vehicle.ElectricMotorMechLossMap.FullPath)),
 					.Position = Vehicle.ElectricMotorPosition, 
 					.RatioADC = Vehicle.ElectricMotorRatio, 
 					.RatioPerGear = Vehicle.ElectricMotorPerGearRatios,
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs
index 344bbdeb6500c9cff2604a6e34d40991b06b6f29..570e232cbe3bf8db691f0df70057d1c9ebbc53ec 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs
@@ -936,9 +936,11 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 				averageVoltage = (voltageLevels.Min(x => x.Voltage) + voltageLevels.Max(x => x.Voltage)) / 2.0;
 			}
 
-			var lossMap = adcLossMap != null
-				? TransmissionLossMapReader.CreateEmADCLossMap(adcLossMap, ratio, "EM ADC LossMap")
-				: TransmissionLossMapReader.CreateEmADCLossMap(efficiency, ratio, "EM ADC LossMap Eff");
+			var lossMap = powertrainPosition == PowertrainPosition.IHPC
+				? TransmissionLossMapReader.CreateEmADCLossMap(1.0, 1.0, "EM ADC IHPC LossMap Eff")
+				: adcLossMap != null
+					? TransmissionLossMapReader.CreateEmADCLossMap(adcLossMap, ratio, "EM ADC LossMap")
+					: TransmissionLossMapReader.CreateEmADCLossMap(efficiency, ratio, "EM ADC LossMap Eff");
 
 			var retVal = new ElectricMotorData() {
 				EfficiencyData = new VoltageLevelData() { VoltageLevels = voltageLevels},
diff --git a/VectoCore/VectoCore/OutputData/FileIO/JSONFileWriter.cs b/VectoCore/VectoCore/OutputData/FileIO/JSONFileWriter.cs
index 713229a00598760c86c405ddf1742705ce4645ad..e58dd595b2a3d46e2c6808463a337e28624c34ad 100644
--- a/VectoCore/VectoCore/OutputData/FileIO/JSONFileWriter.cs
+++ b/VectoCore/VectoCore/OutputData/FileIO/JSONFileWriter.cs
@@ -36,7 +36,7 @@ public class JSONFileWriter : IOutputFileWriter
 	private const int SHEVVectoJobFormatVersion = 11;
 
 	private const int IEPCVectoJobFormatVersion = 12;
-
+	private const int IHPCVectoJobFormatVersion = 13;
 	#endregion
 
 
@@ -387,6 +387,7 @@ public class JSONFileWriter : IOutputFileWriter
 				break;
 			case VectoSimulationJobType.ParallelHybridVehicle:
 			case VectoSimulationJobType.SerialHybridVehicle:
+			case VectoSimulationJobType.IHPC:
 				SaveHybridVehicle(vehicle, airdrag, retarder, pto, angledrive, filename, DeclMode);
 				break;
 			case VectoSimulationJobType.BatteryElectricVehicle:
@@ -572,7 +573,7 @@ public class JSONFileWriter : IOutputFileWriter
 		}
 
 		body.Add("InitialSoC", vehicle.InitialSOC * 100);
-		body.Add("PowertrainConfiguration", vehicle.VehicleType == VectoSimulationJobType.SerialHybridVehicle ? "SerialHybrid" : "ParallelHybrid");
+		body.Add("PowertrainConfiguration", vehicle.VehicleType == VectoSimulationJobType.SerialHybridVehicle ? "SerialHybrid" : vehicle.VehicleType == VectoSimulationJobType.IHPC ? "IHPC":  "ParallelHybrid");
 		body.Add("ElectricMotors", GetElectricMotors(vehicle, basePath));
 		body.Add("Batteries", GetBattery(vehicle, basePath));
 
@@ -710,6 +711,9 @@ public class JSONFileWriter : IOutputFileWriter
 			case VectoSimulationJobType.IEPC_S:
 				SaveIEPCEJob(input, filename, DeclMode);
 				break;
+			case VectoSimulationJobType.IHPC:
+				SaveIHPCJob(input, filename, DeclMode);
+				break;
 			case VectoSimulationJobType.EngineOnlySimulation:
 				SaveEngineOnlyJob(input, filename, DeclMode);
 				break;
@@ -718,12 +722,21 @@ public class JSONFileWriter : IOutputFileWriter
 		}
 	}
 
-	
+	private void SaveIHPCJob(IEngineeringInputDataProvider input, string filename, bool declMode)
+	{
+		DoSaveParallelHybridJob(input, filename, declMode, IHPCVectoJobFormatVersion);
+	}
 
 	private void SaveParallelHybridJob(IEngineeringInputDataProvider input, string filename, bool declMode)
+	{
+		DoSaveParallelHybridJob(input, filename, declMode, PHEVVectoJobFormatVersion);
+	}
+
+	private void DoSaveParallelHybridJob(IEngineeringInputDataProvider input, string filename, bool declMode,
+		int versionNumber)
 	{
 		var basePath = Path.GetDirectoryName(filename);
-		var header = GetHeader(PHEVVectoJobFormatVersion);
+		var header = GetHeader(versionNumber);
 		var body = new Dictionary<string, object>();
 		// SavedInDeclMode = Cfg.DeclMode
 		var job = input.JobInputData;