From 85f24ced41beab063ea5cf23f8f143a8222b5605 Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Fri, 3 Jun 2022 15:59:26 +0200
Subject: [PATCH] adding missing implementation, bugfixes saving IEPC-E Jobs

---
 VECTO/GUI/IEPCForm.Designer.vb                | 271 +++++++++--------
 VECTO/GUI/IEPCForm.vb                         |  38 ++-
 VECTO/GUI/IEPCInputDialog.vb                  |  12 +-
 VECTO/GUI/VectoJobForm.vb                     |   8 +-
 VECTO/GUI/VehicleForm.vb                      |  73 +++--
 VECTO/Input Files/IEPCInputData.vb            |  30 +-
 VECTO/Input Files/VectoJob.vb                 |  22 +-
 VECTO/Input Files/Vehicle.vb                  | 284 ++++++++++--------
 .../InputData/FileIO/JSON/JSONVehicleData.cs  |   2 +
 .../EngineeringModeVectoRunDataFactory.cs     |   3 +-
 .../OutputData/FileIO/JSONFileWriter.cs       | 162 +++++++++-
 11 files changed, 578 insertions(+), 327 deletions(-)

diff --git a/VECTO/GUI/IEPCForm.Designer.vb b/VECTO/GUI/IEPCForm.Designer.vb
index 3be9c340e4..9c5b42f476 100644
--- a/VECTO/GUI/IEPCForm.Designer.vb
+++ b/VECTO/GUI/IEPCForm.Designer.vb
@@ -178,7 +178,7 @@ Partial Class IEPCForm
         '
         Me.btFLCurveFile1.Anchor = System.Windows.Forms.AnchorStyles.None
         Me.btFLCurveFile1.Image = CType(resources.GetObject("btFLCurveFile1.Image"),System.Drawing.Image)
-        Me.btFLCurveFile1.Location = New System.Drawing.Point(573, 1)
+        Me.btFLCurveFile1.Location = New System.Drawing.Point(630, 1)
         Me.btFLCurveFile1.Margin = New System.Windows.Forms.Padding(0)
         Me.btFLCurveFile1.Name = "btFLCurveFile1"
         Me.btFLCurveFile1.Size = New System.Drawing.Size(36, 37)
@@ -188,10 +188,10 @@ Partial Class IEPCForm
         'tbThermalOverload
         '
         Me.tbThermalOverload.Anchor = System.Windows.Forms.AnchorStyles.Left
-        Me.tbThermalOverload.Location = New System.Drawing.Point(237, 5)
+        Me.tbThermalOverload.Location = New System.Drawing.Point(317, 5)
         Me.tbThermalOverload.Margin = New System.Windows.Forms.Padding(45, 5, 4, 5)
         Me.tbThermalOverload.Name = "tbThermalOverload"
-        Me.tbThermalOverload.Size = New System.Drawing.Size(82, 20)
+        Me.tbThermalOverload.Size = New System.Drawing.Size(82, 26)
         Me.tbThermalOverload.TabIndex = 3
         '
         'Label52
@@ -201,7 +201,7 @@ Partial Class IEPCForm
         Me.Label52.Location = New System.Drawing.Point(4, 8)
         Me.Label52.Margin = New System.Windows.Forms.Padding(4, 0, 15, 0)
         Me.Label52.Name = "Label52"
-        Me.Label52.Size = New System.Drawing.Size(173, 13)
+        Me.Label52.Size = New System.Drawing.Size(253, 20)
         Me.Label52.TabIndex = 50
         Me.Label52.Text = "Thermal Overload Recovery Factor"
         '
@@ -212,7 +212,7 @@ Partial Class IEPCForm
         Me.Label48.Location = New System.Drawing.Point(4, 8)
         Me.Label48.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
         Me.Label48.Name = "Label48"
-        Me.Label48.Size = New System.Drawing.Size(207, 13)
+        Me.Label48.Size = New System.Drawing.Size(304, 20)
         Me.Label48.TabIndex = 48
         Me.Label48.Text = "Nr of Design Type Wheel Motor Measured"
         '
@@ -220,10 +220,10 @@ Partial Class IEPCForm
         '
         Me.tbNumberOfDesignTypeWheelMotor.Anchor = System.Windows.Forms.AnchorStyles.Left
         Me.tbNumberOfDesignTypeWheelMotor.Enabled = false
-        Me.tbNumberOfDesignTypeWheelMotor.Location = New System.Drawing.Point(219, 5)
+        Me.tbNumberOfDesignTypeWheelMotor.Location = New System.Drawing.Point(316, 5)
         Me.tbNumberOfDesignTypeWheelMotor.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.tbNumberOfDesignTypeWheelMotor.Name = "tbNumberOfDesignTypeWheelMotor"
-        Me.tbNumberOfDesignTypeWheelMotor.Size = New System.Drawing.Size(43, 20)
+        Me.tbNumberOfDesignTypeWheelMotor.Size = New System.Drawing.Size(43, 26)
         Me.tbNumberOfDesignTypeWheelMotor.TabIndex = 5
         '
         'Label51
@@ -233,17 +233,17 @@ Partial Class IEPCForm
         Me.Label51.Location = New System.Drawing.Point(4, 8)
         Me.Label51.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
         Me.Label51.Name = "Label51"
-        Me.Label51.Size = New System.Drawing.Size(36, 13)
+        Me.Label51.Size = New System.Drawing.Size(54, 20)
         Me.Label51.TabIndex = 45
         Me.Label51.Text = "Inertia"
         '
         'tbInertia
         '
         Me.tbInertia.Anchor = System.Windows.Forms.AnchorStyles.Left
-        Me.tbInertia.Location = New System.Drawing.Point(48, 5)
+        Me.tbInertia.Location = New System.Drawing.Point(66, 5)
         Me.tbInertia.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.tbInertia.Name = "tbInertia"
-        Me.tbInertia.Size = New System.Drawing.Size(84, 20)
+        Me.tbInertia.Size = New System.Drawing.Size(84, 26)
         Me.tbInertia.TabIndex = 2
         '
         'Label49
@@ -253,17 +253,17 @@ Partial Class IEPCForm
         Me.Label49.Location = New System.Drawing.Point(4, 8)
         Me.Label49.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
         Me.Label49.Name = "Label49"
-        Me.Label49.Size = New System.Drawing.Size(36, 13)
+        Me.Label49.Size = New System.Drawing.Size(52, 20)
         Me.Label49.TabIndex = 43
         Me.Label49.Text = "Model"
         '
         'tbModel
         '
         Me.tbModel.Anchor = System.Windows.Forms.AnchorStyles.Left
-        Me.tbModel.Location = New System.Drawing.Point(48, 5)
+        Me.tbModel.Location = New System.Drawing.Point(64, 5)
         Me.tbModel.Margin = New System.Windows.Forms.Padding(4, 5, 0, 5)
         Me.tbModel.Name = "tbModel"
-        Me.tbModel.Size = New System.Drawing.Size(289, 20)
+        Me.tbModel.Size = New System.Drawing.Size(289, 26)
         Me.tbModel.TabIndex = 1
         '
         'tcVoltageLevels
@@ -309,26 +309,26 @@ Partial Class IEPCForm
         '
         Me.Label44.Anchor = System.Windows.Forms.AnchorStyles.None
         Me.Label44.AutoSize = true
-        Me.Label44.Location = New System.Drawing.Point(21, 13)
+        Me.Label44.Location = New System.Drawing.Point(21, 9)
         Me.Label44.Margin = New System.Windows.Forms.Padding(21, 0, 0, 0)
         Me.Label44.Name = "Label44"
-        Me.Label44.Size = New System.Drawing.Size(125, 13)
+        Me.Label44.Size = New System.Drawing.Size(182, 20)
         Me.Label44.TabIndex = 59
         Me.Label44.Text = "Full Load Curve (.viepcp)"
         '
         'tbFLCurve1
         '
         Me.tbFLCurve1.Anchor = System.Windows.Forms.AnchorStyles.None
-        Me.tbFLCurve1.Location = New System.Drawing.Point(150, 9)
+        Me.tbFLCurve1.Location = New System.Drawing.Point(207, 6)
         Me.tbFLCurve1.Margin = New System.Windows.Forms.Padding(4, 5, 9, 5)
         Me.tbFLCurve1.Name = "tbFLCurve1"
-        Me.tbFLCurve1.Size = New System.Drawing.Size(414, 20)
+        Me.tbFLCurve1.Size = New System.Drawing.Size(414, 26)
         Me.tbFLCurve1.TabIndex = 14
         '
         'btShowFLCurve1
         '
         Me.btShowFLCurve1.Image = Global.TUGraz.VECTO.My.Resources.Resources.application_export_icon_small
-        Me.btShowFLCurve1.Location = New System.Drawing.Point(609, 2)
+        Me.btShowFLCurve1.Location = New System.Drawing.Point(666, 2)
         Me.btShowFLCurve1.Margin = New System.Windows.Forms.Padding(0, 2, 0, 0)
         Me.btShowFLCurve1.Name = "btShowFLCurve1"
         Me.btShowFLCurve1.Size = New System.Drawing.Size(36, 37)
@@ -378,10 +378,10 @@ Partial Class IEPCForm
         '
         Me.Label11.Anchor = System.Windows.Forms.AnchorStyles.None
         Me.Label11.AutoSize = true
-        Me.Label11.Location = New System.Drawing.Point(311, 56)
+        Me.Label11.Location = New System.Drawing.Point(305, 53)
         Me.Label11.Margin = New System.Windows.Forms.Padding(0)
         Me.Label11.Name = "Label11"
-        Me.Label11.Size = New System.Drawing.Size(29, 13)
+        Me.Label11.Size = New System.Drawing.Size(41, 20)
         Me.Label11.TabIndex = 63
         Me.Label11.Text = "[Nm]"
         '
@@ -389,10 +389,10 @@ Partial Class IEPCForm
         '
         Me.Label4.Anchor = System.Windows.Forms.AnchorStyles.None
         Me.Label4.AutoSize = true
-        Me.Label4.Location = New System.Drawing.Point(315, 14)
+        Me.Label4.Location = New System.Drawing.Point(311, 11)
         Me.Label4.Margin = New System.Windows.Forms.Padding(0)
         Me.Label4.Name = "Label4"
-        Me.Label4.Size = New System.Drawing.Size(20, 13)
+        Me.Label4.Size = New System.Drawing.Size(28, 20)
         Me.Label4.TabIndex = 62
         Me.Label4.Text = "[V]"
         '
@@ -400,10 +400,10 @@ Partial Class IEPCForm
         '
         Me.Label13.Anchor = System.Windows.Forms.AnchorStyles.None
         Me.Label13.AutoSize = true
-        Me.Label13.Location = New System.Drawing.Point(640, 14)
+        Me.Label13.Location = New System.Drawing.Point(634, 11)
         Me.Label13.Margin = New System.Windows.Forms.Padding(0)
         Me.Label13.Name = "Label13"
-        Me.Label13.Size = New System.Drawing.Size(30, 13)
+        Me.Label13.Size = New System.Drawing.Size(42, 20)
         Me.Label13.TabIndex = 65
         Me.Label13.Text = "[sec]"
         '
@@ -411,10 +411,10 @@ Partial Class IEPCForm
         '
         Me.Label43.Anchor = System.Windows.Forms.AnchorStyles.Right
         Me.Label43.AutoSize = true
-        Me.Label43.Location = New System.Drawing.Point(460, 14)
+        Me.Label43.Location = New System.Drawing.Point(426, 11)
         Me.Label43.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
         Me.Label43.Name = "Label43"
-        Me.Label43.Size = New System.Drawing.Size(76, 13)
+        Me.Label43.Size = New System.Drawing.Size(110, 20)
         Me.Label43.TabIndex = 11
         Me.Label43.Text = "Overload Time"
         '
@@ -422,39 +422,39 @@ Partial Class IEPCForm
         '
         Me.Label37.Anchor = System.Windows.Forms.AnchorStyles.Right
         Me.Label37.AutoSize = true
-        Me.Label37.Location = New System.Drawing.Point(163, 14)
+        Me.Label37.Location = New System.Drawing.Point(142, 11)
         Me.Label37.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
         Me.Label37.Name = "Label37"
-        Me.Label37.Size = New System.Drawing.Size(43, 13)
+        Me.Label37.Size = New System.Drawing.Size(64, 20)
         Me.Label37.TabIndex = 1
         Me.Label37.Text = "Voltage"
         '
         'tbOverloadTime1
         '
         Me.tbOverloadTime1.Anchor = System.Windows.Forms.AnchorStyles.None
-        Me.tbOverloadTime1.Location = New System.Drawing.Point(545, 11)
+        Me.tbOverloadTime1.Location = New System.Drawing.Point(545, 8)
         Me.tbOverloadTime1.Margin = New System.Windows.Forms.Padding(0)
         Me.tbOverloadTime1.Name = "tbOverloadTime1"
-        Me.tbOverloadTime1.Size = New System.Drawing.Size(82, 20)
+        Me.tbOverloadTime1.Size = New System.Drawing.Size(82, 26)
         Me.tbOverloadTime1.TabIndex = 11
         '
         'tbVoltage1
         '
         Me.tbVoltage1.Anchor = System.Windows.Forms.AnchorStyles.None
-        Me.tbVoltage1.Location = New System.Drawing.Point(215, 11)
+        Me.tbVoltage1.Location = New System.Drawing.Point(215, 8)
         Me.tbVoltage1.Margin = New System.Windows.Forms.Padding(0)
         Me.tbVoltage1.Name = "tbVoltage1"
-        Me.tbVoltage1.Size = New System.Drawing.Size(82, 20)
+        Me.tbVoltage1.Size = New System.Drawing.Size(82, 26)
         Me.tbVoltage1.TabIndex = 8
         '
         'Label39
         '
         Me.Label39.Anchor = System.Windows.Forms.AnchorStyles.Right
         Me.Label39.AutoSize = true
-        Me.Label39.Location = New System.Drawing.Point(109, 56)
+        Me.Label39.Location = New System.Drawing.Point(62, 53)
         Me.Label39.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
         Me.Label39.Name = "Label39"
-        Me.Label39.Size = New System.Drawing.Size(97, 13)
+        Me.Label39.Size = New System.Drawing.Size(144, 20)
         Me.Label39.TabIndex = 3
         Me.Label39.Text = "Continuous Torque"
         '
@@ -462,39 +462,39 @@ Partial Class IEPCForm
         '
         Me.Label1.Anchor = System.Windows.Forms.AnchorStyles.Right
         Me.Label1.AutoSize = true
-        Me.Label1.Location = New System.Drawing.Point(75, 98)
+        Me.Label1.Location = New System.Drawing.Point(11, 95)
         Me.Label1.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
         Me.Label1.Name = "Label1"
-        Me.Label1.Size = New System.Drawing.Size(131, 13)
+        Me.Label1.Size = New System.Drawing.Size(195, 20)
         Me.Label1.TabIndex = 6
         Me.Label1.Text = "Continuous Torque Speed"
         '
         'tbContinousTorque1
         '
         Me.tbContinousTorque1.Anchor = System.Windows.Forms.AnchorStyles.None
-        Me.tbContinousTorque1.Location = New System.Drawing.Point(215, 53)
+        Me.tbContinousTorque1.Location = New System.Drawing.Point(215, 50)
         Me.tbContinousTorque1.Margin = New System.Windows.Forms.Padding(0)
         Me.tbContinousTorque1.Name = "tbContinousTorque1"
-        Me.tbContinousTorque1.Size = New System.Drawing.Size(82, 20)
+        Me.tbContinousTorque1.Size = New System.Drawing.Size(82, 26)
         Me.tbContinousTorque1.TabIndex = 9
         '
         'tbContinousTorqueSpeed1
         '
         Me.tbContinousTorqueSpeed1.Anchor = System.Windows.Forms.AnchorStyles.None
-        Me.tbContinousTorqueSpeed1.Location = New System.Drawing.Point(215, 95)
+        Me.tbContinousTorqueSpeed1.Location = New System.Drawing.Point(215, 92)
         Me.tbContinousTorqueSpeed1.Margin = New System.Windows.Forms.Padding(0)
         Me.tbContinousTorqueSpeed1.Name = "tbContinousTorqueSpeed1"
-        Me.tbContinousTorqueSpeed1.Size = New System.Drawing.Size(82, 20)
+        Me.tbContinousTorqueSpeed1.Size = New System.Drawing.Size(82, 26)
         Me.tbContinousTorqueSpeed1.TabIndex = 10
         '
         'Label15
         '
         Me.Label15.Anchor = System.Windows.Forms.AnchorStyles.None
         Me.Label15.AutoSize = true
-        Me.Label15.Location = New System.Drawing.Point(310, 98)
+        Me.Label15.Location = New System.Drawing.Point(303, 95)
         Me.Label15.Margin = New System.Windows.Forms.Padding(0)
         Me.Label15.Name = "Label15"
-        Me.Label15.Size = New System.Drawing.Size(30, 13)
+        Me.Label15.Size = New System.Drawing.Size(44, 20)
         Me.Label15.TabIndex = 67
         Me.Label15.Text = "[rpm]"
         '
@@ -502,10 +502,10 @@ Partial Class IEPCForm
         '
         Me.Label42.Anchor = System.Windows.Forms.AnchorStyles.Right
         Me.Label42.AutoSize = true
-        Me.Label42.Location = New System.Drawing.Point(415, 98)
+        Me.Label42.Location = New System.Drawing.Point(359, 95)
         Me.Label42.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
         Me.Label42.Name = "Label42"
-        Me.Label42.Size = New System.Drawing.Size(121, 13)
+        Me.Label42.Size = New System.Drawing.Size(177, 20)
         Me.Label42.TabIndex = 9
         Me.Label42.Text = "Overload Torque Speed"
         '
@@ -513,50 +513,50 @@ Partial Class IEPCForm
         '
         Me.Label14.Anchor = System.Windows.Forms.AnchorStyles.None
         Me.Label14.AutoSize = true
-        Me.Label14.Location = New System.Drawing.Point(640, 98)
+        Me.Label14.Location = New System.Drawing.Point(633, 95)
         Me.Label14.Margin = New System.Windows.Forms.Padding(0)
         Me.Label14.Name = "Label14"
-        Me.Label14.Size = New System.Drawing.Size(30, 13)
+        Me.Label14.Size = New System.Drawing.Size(44, 20)
         Me.Label14.TabIndex = 66
         Me.Label14.Text = "[rpm]"
         '
         'tboverloadTorqueSpeed1
         '
         Me.tboverloadTorqueSpeed1.Anchor = System.Windows.Forms.AnchorStyles.None
-        Me.tboverloadTorqueSpeed1.Location = New System.Drawing.Point(545, 95)
+        Me.tboverloadTorqueSpeed1.Location = New System.Drawing.Point(545, 92)
         Me.tboverloadTorqueSpeed1.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.tboverloadTorqueSpeed1.Name = "tboverloadTorqueSpeed1"
-        Me.tboverloadTorqueSpeed1.Size = New System.Drawing.Size(82, 20)
+        Me.tboverloadTorqueSpeed1.Size = New System.Drawing.Size(82, 26)
         Me.tboverloadTorqueSpeed1.TabIndex = 13
         '
         'Label41
         '
         Me.Label41.Anchor = System.Windows.Forms.AnchorStyles.Right
         Me.Label41.AutoSize = true
-        Me.Label41.Location = New System.Drawing.Point(449, 56)
+        Me.Label41.Location = New System.Drawing.Point(410, 53)
         Me.Label41.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
         Me.Label41.Name = "Label41"
-        Me.Label41.Size = New System.Drawing.Size(87, 13)
+        Me.Label41.Size = New System.Drawing.Size(126, 20)
         Me.Label41.TabIndex = 7
         Me.Label41.Text = "Overload Torque"
         '
         'tbOverloadTorque1
         '
         Me.tbOverloadTorque1.Anchor = System.Windows.Forms.AnchorStyles.None
-        Me.tbOverloadTorque1.Location = New System.Drawing.Point(545, 53)
+        Me.tbOverloadTorque1.Location = New System.Drawing.Point(545, 50)
         Me.tbOverloadTorque1.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.tbOverloadTorque1.Name = "tbOverloadTorque1"
-        Me.tbOverloadTorque1.Size = New System.Drawing.Size(82, 20)
+        Me.tbOverloadTorque1.Size = New System.Drawing.Size(82, 26)
         Me.tbOverloadTorque1.TabIndex = 12
         '
         'Label12
         '
         Me.Label12.Anchor = System.Windows.Forms.AnchorStyles.None
         Me.Label12.AutoSize = true
-        Me.Label12.Location = New System.Drawing.Point(641, 56)
+        Me.Label12.Location = New System.Drawing.Point(635, 53)
         Me.Label12.Margin = New System.Windows.Forms.Padding(0)
         Me.Label12.Name = "Label12"
-        Me.Label12.Size = New System.Drawing.Size(29, 13)
+        Me.Label12.Size = New System.Drawing.Size(41, 20)
         Me.Label12.TabIndex = 64
         Me.Label12.Text = "[Nm]"
         '
@@ -595,10 +595,10 @@ Partial Class IEPCForm
         '
         Me.Label47.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right),System.Windows.Forms.AnchorStyles)
         Me.Label47.AutoSize = true
-        Me.Label47.Location = New System.Drawing.Point(338, 195)
+        Me.Label47.Location = New System.Drawing.Point(286, 195)
         Me.Label47.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
         Me.Label47.Name = "Label47"
-        Me.Label47.Size = New System.Drawing.Size(106, 13)
+        Me.Label47.Size = New System.Drawing.Size(158, 20)
         Me.Label47.TabIndex = 6
         Me.Label47.Text = "(Double-Click to Edit)"
         '
@@ -681,10 +681,10 @@ Partial Class IEPCForm
         '
         Me.Label5.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right),System.Windows.Forms.AnchorStyles)
         Me.Label5.AutoSize = true
-        Me.Label5.Location = New System.Drawing.Point(338, 195)
+        Me.Label5.Location = New System.Drawing.Point(286, 195)
         Me.Label5.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
         Me.Label5.Name = "Label5"
-        Me.Label5.Size = New System.Drawing.Size(106, 13)
+        Me.Label5.Size = New System.Drawing.Size(158, 20)
         Me.Label5.TabIndex = 6
         Me.Label5.Text = "(Double-Click to Edit)"
         '
@@ -734,27 +734,27 @@ Partial Class IEPCForm
         '
         Me.Label28.Anchor = System.Windows.Forms.AnchorStyles.None
         Me.Label28.AutoSize = true
-        Me.Label28.Location = New System.Drawing.Point(21, 13)
+        Me.Label28.Location = New System.Drawing.Point(21, 9)
         Me.Label28.Margin = New System.Windows.Forms.Padding(21, 0, 0, 0)
         Me.Label28.Name = "Label28"
-        Me.Label28.Size = New System.Drawing.Size(125, 13)
+        Me.Label28.Size = New System.Drawing.Size(182, 20)
         Me.Label28.TabIndex = 59
         Me.Label28.Text = "Full Load Curve (.viepcp)"
         '
         'tbFLCurve2
         '
         Me.tbFLCurve2.Anchor = System.Windows.Forms.AnchorStyles.None
-        Me.tbFLCurve2.Location = New System.Drawing.Point(150, 9)
+        Me.tbFLCurve2.Location = New System.Drawing.Point(207, 6)
         Me.tbFLCurve2.Margin = New System.Windows.Forms.Padding(4, 5, 9, 5)
         Me.tbFLCurve2.Name = "tbFLCurve2"
-        Me.tbFLCurve2.Size = New System.Drawing.Size(414, 20)
+        Me.tbFLCurve2.Size = New System.Drawing.Size(414, 26)
         Me.tbFLCurve2.TabIndex = 23
         '
         'btFLCurveFile2
         '
         Me.btFLCurveFile2.Anchor = System.Windows.Forms.AnchorStyles.None
         Me.btFLCurveFile2.Image = CType(resources.GetObject("btFLCurveFile2.Image"),System.Drawing.Image)
-        Me.btFLCurveFile2.Location = New System.Drawing.Point(573, 1)
+        Me.btFLCurveFile2.Location = New System.Drawing.Point(630, 1)
         Me.btFLCurveFile2.Margin = New System.Windows.Forms.Padding(0)
         Me.btFLCurveFile2.Name = "btFLCurveFile2"
         Me.btFLCurveFile2.Size = New System.Drawing.Size(36, 37)
@@ -764,7 +764,7 @@ Partial Class IEPCForm
         'btShowFLCurve2
         '
         Me.btShowFLCurve2.Image = Global.TUGraz.VECTO.My.Resources.Resources.application_export_icon_small
-        Me.btShowFLCurve2.Location = New System.Drawing.Point(609, 2)
+        Me.btShowFLCurve2.Location = New System.Drawing.Point(666, 2)
         Me.btShowFLCurve2.Margin = New System.Windows.Forms.Padding(0, 2, 0, 0)
         Me.btShowFLCurve2.Name = "btShowFLCurve2"
         Me.btShowFLCurve2.Size = New System.Drawing.Size(36, 37)
@@ -815,10 +815,10 @@ Partial Class IEPCForm
         '
         Me.Label17.Anchor = System.Windows.Forms.AnchorStyles.None
         Me.Label17.AutoSize = true
-        Me.Label17.Location = New System.Drawing.Point(311, 56)
+        Me.Label17.Location = New System.Drawing.Point(305, 53)
         Me.Label17.Margin = New System.Windows.Forms.Padding(0)
         Me.Label17.Name = "Label17"
-        Me.Label17.Size = New System.Drawing.Size(29, 13)
+        Me.Label17.Size = New System.Drawing.Size(41, 20)
         Me.Label17.TabIndex = 63
         Me.Label17.Text = "[Nm]"
         '
@@ -826,10 +826,10 @@ Partial Class IEPCForm
         '
         Me.Label18.Anchor = System.Windows.Forms.AnchorStyles.None
         Me.Label18.AutoSize = true
-        Me.Label18.Location = New System.Drawing.Point(315, 14)
+        Me.Label18.Location = New System.Drawing.Point(311, 11)
         Me.Label18.Margin = New System.Windows.Forms.Padding(0)
         Me.Label18.Name = "Label18"
-        Me.Label18.Size = New System.Drawing.Size(20, 13)
+        Me.Label18.Size = New System.Drawing.Size(28, 20)
         Me.Label18.TabIndex = 62
         Me.Label18.Text = "[V]"
         '
@@ -837,10 +837,10 @@ Partial Class IEPCForm
         '
         Me.Label26.Anchor = System.Windows.Forms.AnchorStyles.None
         Me.Label26.AutoSize = true
-        Me.Label26.Location = New System.Drawing.Point(640, 14)
+        Me.Label26.Location = New System.Drawing.Point(634, 11)
         Me.Label26.Margin = New System.Windows.Forms.Padding(0)
         Me.Label26.Name = "Label26"
-        Me.Label26.Size = New System.Drawing.Size(30, 13)
+        Me.Label26.Size = New System.Drawing.Size(42, 20)
         Me.Label26.TabIndex = 65
         Me.Label26.Text = "[sec]"
         '
@@ -848,50 +848,50 @@ Partial Class IEPCForm
         '
         Me.Label19.Anchor = System.Windows.Forms.AnchorStyles.Right
         Me.Label19.AutoSize = true
-        Me.Label19.Location = New System.Drawing.Point(163, 14)
+        Me.Label19.Location = New System.Drawing.Point(142, 11)
         Me.Label19.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
         Me.Label19.Name = "Label19"
-        Me.Label19.Size = New System.Drawing.Size(43, 13)
+        Me.Label19.Size = New System.Drawing.Size(64, 20)
         Me.Label19.TabIndex = 1
         Me.Label19.Text = "Voltage"
         '
         'tbOverloadTime2
         '
         Me.tbOverloadTime2.Anchor = System.Windows.Forms.AnchorStyles.None
-        Me.tbOverloadTime2.Location = New System.Drawing.Point(545, 11)
+        Me.tbOverloadTime2.Location = New System.Drawing.Point(545, 8)
         Me.tbOverloadTime2.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.tbOverloadTime2.Name = "tbOverloadTime2"
-        Me.tbOverloadTime2.Size = New System.Drawing.Size(82, 20)
+        Me.tbOverloadTime2.Size = New System.Drawing.Size(82, 26)
         Me.tbOverloadTime2.TabIndex = 20
         '
         'Label24
         '
         Me.Label24.Anchor = System.Windows.Forms.AnchorStyles.Right
         Me.Label24.AutoSize = true
-        Me.Label24.Location = New System.Drawing.Point(460, 14)
+        Me.Label24.Location = New System.Drawing.Point(426, 11)
         Me.Label24.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
         Me.Label24.Name = "Label24"
-        Me.Label24.Size = New System.Drawing.Size(76, 13)
+        Me.Label24.Size = New System.Drawing.Size(110, 20)
         Me.Label24.TabIndex = 11
         Me.Label24.Text = "Overload Time"
         '
         'tbVoltage2
         '
         Me.tbVoltage2.Anchor = System.Windows.Forms.AnchorStyles.None
-        Me.tbVoltage2.Location = New System.Drawing.Point(215, 11)
+        Me.tbVoltage2.Location = New System.Drawing.Point(215, 8)
         Me.tbVoltage2.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.tbVoltage2.Name = "tbVoltage2"
-        Me.tbVoltage2.Size = New System.Drawing.Size(82, 20)
+        Me.tbVoltage2.Size = New System.Drawing.Size(82, 26)
         Me.tbVoltage2.TabIndex = 17
         '
         'Label20
         '
         Me.Label20.Anchor = System.Windows.Forms.AnchorStyles.Right
         Me.Label20.AutoSize = true
-        Me.Label20.Location = New System.Drawing.Point(109, 56)
+        Me.Label20.Location = New System.Drawing.Point(62, 53)
         Me.Label20.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
         Me.Label20.Name = "Label20"
-        Me.Label20.Size = New System.Drawing.Size(97, 13)
+        Me.Label20.Size = New System.Drawing.Size(144, 20)
         Me.Label20.TabIndex = 3
         Me.Label20.Text = "Continuous Torque"
         '
@@ -899,39 +899,39 @@ Partial Class IEPCForm
         '
         Me.Label21.Anchor = System.Windows.Forms.AnchorStyles.Right
         Me.Label21.AutoSize = true
-        Me.Label21.Location = New System.Drawing.Point(75, 98)
+        Me.Label21.Location = New System.Drawing.Point(11, 95)
         Me.Label21.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
         Me.Label21.Name = "Label21"
-        Me.Label21.Size = New System.Drawing.Size(131, 13)
+        Me.Label21.Size = New System.Drawing.Size(195, 20)
         Me.Label21.TabIndex = 6
         Me.Label21.Text = "Continuous Torque Speed"
         '
         'tbContinousTorque2
         '
         Me.tbContinousTorque2.Anchor = System.Windows.Forms.AnchorStyles.None
-        Me.tbContinousTorque2.Location = New System.Drawing.Point(215, 53)
+        Me.tbContinousTorque2.Location = New System.Drawing.Point(215, 50)
         Me.tbContinousTorque2.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.tbContinousTorque2.Name = "tbContinousTorque2"
-        Me.tbContinousTorque2.Size = New System.Drawing.Size(82, 20)
+        Me.tbContinousTorque2.Size = New System.Drawing.Size(82, 26)
         Me.tbContinousTorque2.TabIndex = 18
         '
         'tbContinousTorqueSpeed2
         '
         Me.tbContinousTorqueSpeed2.Anchor = System.Windows.Forms.AnchorStyles.None
-        Me.tbContinousTorqueSpeed2.Location = New System.Drawing.Point(215, 95)
+        Me.tbContinousTorqueSpeed2.Location = New System.Drawing.Point(215, 92)
         Me.tbContinousTorqueSpeed2.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.tbContinousTorqueSpeed2.Name = "tbContinousTorqueSpeed2"
-        Me.tbContinousTorqueSpeed2.Size = New System.Drawing.Size(82, 20)
+        Me.tbContinousTorqueSpeed2.Size = New System.Drawing.Size(82, 26)
         Me.tbContinousTorqueSpeed2.TabIndex = 19
         '
         'Label27
         '
         Me.Label27.Anchor = System.Windows.Forms.AnchorStyles.None
         Me.Label27.AutoSize = true
-        Me.Label27.Location = New System.Drawing.Point(310, 98)
+        Me.Label27.Location = New System.Drawing.Point(303, 95)
         Me.Label27.Margin = New System.Windows.Forms.Padding(0)
         Me.Label27.Name = "Label27"
-        Me.Label27.Size = New System.Drawing.Size(30, 13)
+        Me.Label27.Size = New System.Drawing.Size(44, 20)
         Me.Label27.TabIndex = 67
         Me.Label27.Text = "[rpm]"
         '
@@ -939,30 +939,30 @@ Partial Class IEPCForm
         '
         Me.Label23.Anchor = System.Windows.Forms.AnchorStyles.Right
         Me.Label23.AutoSize = true
-        Me.Label23.Location = New System.Drawing.Point(415, 98)
+        Me.Label23.Location = New System.Drawing.Point(359, 95)
         Me.Label23.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
         Me.Label23.Name = "Label23"
-        Me.Label23.Size = New System.Drawing.Size(121, 13)
+        Me.Label23.Size = New System.Drawing.Size(177, 20)
         Me.Label23.TabIndex = 9
         Me.Label23.Text = "Overload Torque Speed"
         '
         'tbOverloadTorqueSpeed2
         '
         Me.tbOverloadTorqueSpeed2.Anchor = System.Windows.Forms.AnchorStyles.None
-        Me.tbOverloadTorqueSpeed2.Location = New System.Drawing.Point(545, 95)
+        Me.tbOverloadTorqueSpeed2.Location = New System.Drawing.Point(545, 92)
         Me.tbOverloadTorqueSpeed2.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.tbOverloadTorqueSpeed2.Name = "tbOverloadTorqueSpeed2"
-        Me.tbOverloadTorqueSpeed2.Size = New System.Drawing.Size(82, 20)
+        Me.tbOverloadTorqueSpeed2.Size = New System.Drawing.Size(82, 26)
         Me.tbOverloadTorqueSpeed2.TabIndex = 22
         '
         'Label25
         '
         Me.Label25.Anchor = System.Windows.Forms.AnchorStyles.None
         Me.Label25.AutoSize = true
-        Me.Label25.Location = New System.Drawing.Point(640, 98)
+        Me.Label25.Location = New System.Drawing.Point(633, 95)
         Me.Label25.Margin = New System.Windows.Forms.Padding(0)
         Me.Label25.Name = "Label25"
-        Me.Label25.Size = New System.Drawing.Size(30, 13)
+        Me.Label25.Size = New System.Drawing.Size(44, 20)
         Me.Label25.TabIndex = 66
         Me.Label25.Text = "[rpm]"
         '
@@ -970,30 +970,30 @@ Partial Class IEPCForm
         '
         Me.Label22.Anchor = System.Windows.Forms.AnchorStyles.Right
         Me.Label22.AutoSize = true
-        Me.Label22.Location = New System.Drawing.Point(449, 56)
+        Me.Label22.Location = New System.Drawing.Point(410, 53)
         Me.Label22.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
         Me.Label22.Name = "Label22"
-        Me.Label22.Size = New System.Drawing.Size(87, 13)
+        Me.Label22.Size = New System.Drawing.Size(126, 20)
         Me.Label22.TabIndex = 7
         Me.Label22.Text = "Overload Torque"
         '
         'tbOverloadTorque2
         '
         Me.tbOverloadTorque2.Anchor = System.Windows.Forms.AnchorStyles.None
-        Me.tbOverloadTorque2.Location = New System.Drawing.Point(545, 53)
+        Me.tbOverloadTorque2.Location = New System.Drawing.Point(545, 50)
         Me.tbOverloadTorque2.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.tbOverloadTorque2.Name = "tbOverloadTorque2"
-        Me.tbOverloadTorque2.Size = New System.Drawing.Size(82, 20)
+        Me.tbOverloadTorque2.Size = New System.Drawing.Size(82, 26)
         Me.tbOverloadTorque2.TabIndex = 21
         '
         'Label16
         '
         Me.Label16.Anchor = System.Windows.Forms.AnchorStyles.None
         Me.Label16.AutoSize = true
-        Me.Label16.Location = New System.Drawing.Point(641, 56)
+        Me.Label16.Location = New System.Drawing.Point(635, 53)
         Me.Label16.Margin = New System.Windows.Forms.Padding(0)
         Me.Label16.Name = "Label16"
-        Me.Label16.Size = New System.Drawing.Size(29, 13)
+        Me.Label16.Size = New System.Drawing.Size(41, 20)
         Me.Label16.TabIndex = 64
         Me.Label16.Text = "[Nm]"
         '
@@ -1004,18 +1004,18 @@ Partial Class IEPCForm
         Me.Label3.Location = New System.Drawing.Point(4, 9)
         Me.Label3.Margin = New System.Windows.Forms.Padding(4, 9, 9, 9)
         Me.Label3.Name = "Label3"
-        Me.Label3.Size = New System.Drawing.Size(87, 9)
+        Me.Label3.Size = New System.Drawing.Size(191, 20)
         Me.Label3.TabIndex = 54
         Me.Label3.Text = "Design Type Wheel Motor"
         '
         'cbDesignTypeWheelMotor
         '
-        Me.cbDesignTypeWheelMotor.Anchor = System.Windows.Forms.AnchorStyles.None
+        Me.cbDesignTypeWheelMotor.Anchor = System.Windows.Forms.AnchorStyles.Right
         Me.cbDesignTypeWheelMotor.AutoSize = true
-        Me.cbDesignTypeWheelMotor.Location = New System.Drawing.Point(96, 6)
-        Me.cbDesignTypeWheelMotor.Margin = New System.Windows.Forms.Padding(0, 9, 4, 9)
+        Me.cbDesignTypeWheelMotor.Location = New System.Drawing.Point(274, 9)
+        Me.cbDesignTypeWheelMotor.Margin = New System.Windows.Forms.Padding(70, 9, 4, 9)
         Me.cbDesignTypeWheelMotor.Name = "cbDesignTypeWheelMotor"
-        Me.cbDesignTypeWheelMotor.Size = New System.Drawing.Size(15, 14)
+        Me.cbDesignTypeWheelMotor.Size = New System.Drawing.Size(22, 21)
         Me.cbDesignTypeWheelMotor.TabIndex = 4
         Me.cbDesignTypeWheelMotor.UseVisualStyleBackColor = true
         '
@@ -1026,7 +1026,7 @@ Partial Class IEPCForm
         Me.Label2.Location = New System.Drawing.Point(4, 9)
         Me.Label2.Margin = New System.Windows.Forms.Padding(4, 9, 9, 9)
         Me.Label2.Name = "Label2"
-        Me.Label2.Size = New System.Drawing.Size(101, 13)
+        Me.Label2.Size = New System.Drawing.Size(151, 20)
         Me.Label2.TabIndex = 53
         Me.Label2.Text = "Differential Included"
         '
@@ -1034,10 +1034,10 @@ Partial Class IEPCForm
         '
         Me.cbDifferentialIncluded.Anchor = System.Windows.Forms.AnchorStyles.Right
         Me.cbDifferentialIncluded.AutoSize = true
-        Me.cbDifferentialIncluded.Location = New System.Drawing.Point(234, 9)
+        Me.cbDifferentialIncluded.Location = New System.Drawing.Point(284, 9)
         Me.cbDifferentialIncluded.Margin = New System.Windows.Forms.Padding(120, 9, 4, 9)
         Me.cbDifferentialIncluded.Name = "cbDifferentialIncluded"
-        Me.cbDifferentialIncluded.Size = New System.Drawing.Size(15, 14)
+        Me.cbDifferentialIncluded.Size = New System.Drawing.Size(22, 21)
         Me.cbDifferentialIncluded.TabIndex = 6
         Me.cbDifferentialIncluded.UseVisualStyleBackColor = true
         '
@@ -1106,10 +1106,10 @@ Partial Class IEPCForm
         '
         Me.Label6.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right),System.Windows.Forms.AnchorStyles)
         Me.Label6.AutoSize = true
-        Me.Label6.Location = New System.Drawing.Point(340, 192)
+        Me.Label6.Location = New System.Drawing.Point(288, 192)
         Me.Label6.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
         Me.Label6.Name = "Label6"
-        Me.Label6.Size = New System.Drawing.Size(106, 13)
+        Me.Label6.Size = New System.Drawing.Size(158, 20)
         Me.Label6.TabIndex = 6
         Me.Label6.Text = "(Double-Click to Edit)"
         '
@@ -1243,10 +1243,10 @@ Partial Class IEPCForm
         '
         Me.Label7.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right),System.Windows.Forms.AnchorStyles)
         Me.Label7.AutoSize = true
-        Me.Label7.Location = New System.Drawing.Point(340, 192)
+        Me.Label7.Location = New System.Drawing.Point(288, 192)
         Me.Label7.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
         Me.Label7.Name = "Label7"
-        Me.Label7.Size = New System.Drawing.Size(106, 13)
+        Me.Label7.Size = New System.Drawing.Size(158, 20)
         Me.Label7.TabIndex = 6
         Me.Label7.Text = "(Double-Click to Edit)"
         '
@@ -1257,8 +1257,7 @@ Partial Class IEPCForm
         Me.ToolStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ToolStripBtNew, Me.ToolStripBtOpen, Me.ToolStripBtSave, Me.ToolStripBtSaveAs, Me.ToolStripSeparator3, Me.ToolStripBtSendTo, Me.ToolStripSeparator1, Me.ToolStripButton1})
         Me.ToolStrip1.Location = New System.Drawing.Point(0, 0)
         Me.ToolStrip1.Name = "ToolStrip1"
-        Me.ToolStrip1.Padding = New System.Windows.Forms.Padding(0, 0, 2, 0)
-        Me.ToolStrip1.Size = New System.Drawing.Size(1296, 31)
+        Me.ToolStrip1.Size = New System.Drawing.Size(1296, 38)
         Me.ToolStrip1.TabIndex = 63
         Me.ToolStrip1.Text = "ToolStrip1"
         '
@@ -1268,7 +1267,7 @@ Partial Class IEPCForm
         Me.ToolStripBtNew.Image = Global.TUGraz.VECTO.My.Resources.Resources.blue_document_icon
         Me.ToolStripBtNew.ImageTransparentColor = System.Drawing.Color.Magenta
         Me.ToolStripBtNew.Name = "ToolStripBtNew"
-        Me.ToolStripBtNew.Size = New System.Drawing.Size(28, 28)
+        Me.ToolStripBtNew.Size = New System.Drawing.Size(34, 28)
         Me.ToolStripBtNew.Text = "ToolStripButton1"
         Me.ToolStripBtNew.ToolTipText = "New"
         '
@@ -1278,7 +1277,7 @@ Partial Class IEPCForm
         Me.ToolStripBtOpen.Image = Global.TUGraz.VECTO.My.Resources.Resources.Open_icon
         Me.ToolStripBtOpen.ImageTransparentColor = System.Drawing.Color.Magenta
         Me.ToolStripBtOpen.Name = "ToolStripBtOpen"
-        Me.ToolStripBtOpen.Size = New System.Drawing.Size(28, 28)
+        Me.ToolStripBtOpen.Size = New System.Drawing.Size(34, 28)
         Me.ToolStripBtOpen.Text = "ToolStripButton1"
         Me.ToolStripBtOpen.ToolTipText = "Open..."
         '
@@ -1288,7 +1287,7 @@ Partial Class IEPCForm
         Me.ToolStripBtSave.Image = Global.TUGraz.VECTO.My.Resources.Resources.Actions_document_save_icon
         Me.ToolStripBtSave.ImageTransparentColor = System.Drawing.Color.Magenta
         Me.ToolStripBtSave.Name = "ToolStripBtSave"
-        Me.ToolStripBtSave.Size = New System.Drawing.Size(28, 28)
+        Me.ToolStripBtSave.Size = New System.Drawing.Size(34, 28)
         Me.ToolStripBtSave.Text = "ToolStripButton1"
         Me.ToolStripBtSave.ToolTipText = "Save"
         '
@@ -1298,14 +1297,14 @@ Partial Class IEPCForm
         Me.ToolStripBtSaveAs.Image = Global.TUGraz.VECTO.My.Resources.Resources.Actions_document_save_as_icon
         Me.ToolStripBtSaveAs.ImageTransparentColor = System.Drawing.Color.Magenta
         Me.ToolStripBtSaveAs.Name = "ToolStripBtSaveAs"
-        Me.ToolStripBtSaveAs.Size = New System.Drawing.Size(28, 28)
+        Me.ToolStripBtSaveAs.Size = New System.Drawing.Size(34, 28)
         Me.ToolStripBtSaveAs.Text = "ToolStripButton1"
         Me.ToolStripBtSaveAs.ToolTipText = "Save As..."
         '
         'ToolStripSeparator3
         '
         Me.ToolStripSeparator3.Name = "ToolStripSeparator3"
-        Me.ToolStripSeparator3.Size = New System.Drawing.Size(6, 31)
+        Me.ToolStripSeparator3.Size = New System.Drawing.Size(6, 33)
         '
         'ToolStripBtSendTo
         '
@@ -1313,14 +1312,14 @@ Partial Class IEPCForm
         Me.ToolStripBtSendTo.Image = Global.TUGraz.VECTO.My.Resources.Resources.export_icon
         Me.ToolStripBtSendTo.ImageTransparentColor = System.Drawing.Color.Magenta
         Me.ToolStripBtSendTo.Name = "ToolStripBtSendTo"
-        Me.ToolStripBtSendTo.Size = New System.Drawing.Size(28, 28)
+        Me.ToolStripBtSendTo.Size = New System.Drawing.Size(34, 28)
         Me.ToolStripBtSendTo.Text = "Send to Vehicle Editor"
         Me.ToolStripBtSendTo.ToolTipText = "Send to Vehicle Editor"
         '
         'ToolStripSeparator1
         '
         Me.ToolStripSeparator1.Name = "ToolStripSeparator1"
-        Me.ToolStripSeparator1.Size = New System.Drawing.Size(6, 31)
+        Me.ToolStripSeparator1.Size = New System.Drawing.Size(6, 33)
         '
         'ToolStripButton1
         '
@@ -1328,7 +1327,7 @@ Partial Class IEPCForm
         Me.ToolStripButton1.Image = Global.TUGraz.VECTO.My.Resources.Resources.Help_icon
         Me.ToolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta
         Me.ToolStripButton1.Name = "ToolStripButton1"
-        Me.ToolStripButton1.Size = New System.Drawing.Size(28, 28)
+        Me.ToolStripButton1.Size = New System.Drawing.Size(34, 28)
         Me.ToolStripButton1.Text = "Help"
         '
         'PictureBox1
@@ -1336,7 +1335,7 @@ Partial Class IEPCForm
         Me.PictureBox1.BackColor = System.Drawing.Color.White
         Me.PictureBox1.Dock = System.Windows.Forms.DockStyle.Top
         Me.PictureBox1.Image = Global.TUGraz.VECTO.My.Resources.Resources.VECTO_Mainform
-        Me.PictureBox1.Location = New System.Drawing.Point(0, 31)
+        Me.PictureBox1.Location = New System.Drawing.Point(0, 38)
         Me.PictureBox1.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.PictureBox1.Name = "PictureBox1"
         Me.PictureBox1.Size = New System.Drawing.Size(1296, 62)
@@ -1352,7 +1351,7 @@ Partial Class IEPCForm
         Me.lblTitle.Location = New System.Drawing.Point(171, 55)
         Me.lblTitle.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
         Me.lblTitle.Name = "lblTitle"
-        Me.lblTitle.Size = New System.Drawing.Size(68, 29)
+        Me.lblTitle.Size = New System.Drawing.Size(100, 40)
         Me.lblTitle.TabIndex = 65
         Me.lblTitle.Text = "IEPC"
         '
@@ -1415,10 +1414,10 @@ Partial Class IEPCForm
         '
         Me.Label9.Anchor = System.Windows.Forms.AnchorStyles.None
         Me.Label9.AutoSize = true
-        Me.Label9.Location = New System.Drawing.Point(270, 8)
+        Me.Label9.Location = New System.Drawing.Point(367, 8)
         Me.Label9.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
         Me.Label9.Name = "Label9"
-        Me.Label9.Size = New System.Drawing.Size(16, 13)
+        Me.Label9.Size = New System.Drawing.Size(22, 20)
         Me.Label9.TabIndex = 66
         Me.Label9.Text = "[-]"
         '
@@ -1437,10 +1436,10 @@ Partial Class IEPCForm
         '
         Me.lblinertiaUnit.Anchor = System.Windows.Forms.AnchorStyles.None
         Me.lblinertiaUnit.AutoSize = true
-        Me.lblinertiaUnit.Location = New System.Drawing.Point(140, 8)
+        Me.lblinertiaUnit.Location = New System.Drawing.Point(158, 8)
         Me.lblinertiaUnit.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
         Me.lblinertiaUnit.Name = "lblinertiaUnit"
-        Me.lblinertiaUnit.Size = New System.Drawing.Size(36, 13)
+        Me.lblinertiaUnit.Size = New System.Drawing.Size(52, 20)
         Me.lblinertiaUnit.TabIndex = 64
         Me.lblinertiaUnit.Text = "[kgm²]"
         '
@@ -1469,10 +1468,10 @@ Partial Class IEPCForm
         '
         Me.Label10.Anchor = System.Windows.Forms.AnchorStyles.None
         Me.Label10.AutoSize = true
-        Me.Label10.Location = New System.Drawing.Point(327, 8)
+        Me.Label10.Location = New System.Drawing.Point(407, 8)
         Me.Label10.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
         Me.Label10.Name = "Label10"
-        Me.Label10.Size = New System.Drawing.Size(16, 13)
+        Me.Label10.Size = New System.Drawing.Size(22, 20)
         Me.Label10.TabIndex = 67
         Me.Label10.Text = "[-]"
         '
@@ -1480,10 +1479,10 @@ Partial Class IEPCForm
         '
         Me.StatusStrip1.ImageScalingSize = New System.Drawing.Size(24, 24)
         Me.StatusStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.LbStatus})
-        Me.StatusStrip1.Location = New System.Drawing.Point(0, 915)
+        Me.StatusStrip1.Location = New System.Drawing.Point(0, 905)
         Me.StatusStrip1.Name = "StatusStrip1"
         Me.StatusStrip1.Padding = New System.Windows.Forms.Padding(2, 0, 21, 0)
-        Me.StatusStrip1.Size = New System.Drawing.Size(1296, 22)
+        Me.StatusStrip1.Size = New System.Drawing.Size(1296, 32)
         Me.StatusStrip1.SizingGrip = false
         Me.StatusStrip1.TabIndex = 74
         Me.StatusStrip1.Text = "StatusStrip1"
@@ -1491,7 +1490,7 @@ Partial Class IEPCForm
         'LbStatus
         '
         Me.LbStatus.Name = "LbStatus"
-        Me.LbStatus.Size = New System.Drawing.Size(39, 17)
+        Me.LbStatus.Size = New System.Drawing.Size(60, 25)
         Me.LbStatus.Text = "Status"
         '
         'CmOpenFile
@@ -1499,18 +1498,18 @@ Partial Class IEPCForm
         Me.CmOpenFile.ImageScalingSize = New System.Drawing.Size(24, 24)
         Me.CmOpenFile.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.OpenWithToolStripMenuItem, Me.ShowInFolderToolStripMenuItem})
         Me.CmOpenFile.Name = "CmOpenFile"
-        Me.CmOpenFile.Size = New System.Drawing.Size(153, 48)
+        Me.CmOpenFile.Size = New System.Drawing.Size(203, 68)
         '
         'OpenWithToolStripMenuItem
         '
         Me.OpenWithToolStripMenuItem.Name = "OpenWithToolStripMenuItem"
-        Me.OpenWithToolStripMenuItem.Size = New System.Drawing.Size(152, 22)
+        Me.OpenWithToolStripMenuItem.Size = New System.Drawing.Size(202, 32)
         Me.OpenWithToolStripMenuItem.Text = "Open with ..."
         '
         'ShowInFolderToolStripMenuItem
         '
         Me.ShowInFolderToolStripMenuItem.Name = "ShowInFolderToolStripMenuItem"
-        Me.ShowInFolderToolStripMenuItem.Size = New System.Drawing.Size(152, 22)
+        Me.ShowInFolderToolStripMenuItem.Size = New System.Drawing.Size(202, 32)
         Me.ShowInFolderToolStripMenuItem.Text = "Show in Folder"
         '
         'IEPCForm
diff --git a/VECTO/GUI/IEPCForm.vb b/VECTO/GUI/IEPCForm.vb
index 3cd291fedb..200e23663e 100644
--- a/VECTO/GUI/IEPCForm.vb
+++ b/VECTO/GUI/IEPCForm.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
@@ -27,7 +28,7 @@ Public Class IEPCForm
 
 	Public Sub ReadIEPCFile(file As String)
 		Dim inputData = JSONInputDataFactory.ReadIEPCEngineeringInputData(file, True)
-
+	    _iepcFilePath = file
 		tbModel.Text = inputData.Model
 		tbInertia.Text = inputData.Inertia.ToGUIFormat()
 		cbDifferentialIncluded.Checked = inputData.DifferentialIncluded
@@ -41,7 +42,7 @@ Public Class IEPCForm
 		SetSecondaryVoltageLevel(voltageLevel)
 		SetGearEntries(inputData.Gears)
 		SetDragEntries(inputData.DragCurves)
-		_iepcFilePath = file
+		
 
 		LbStatus.Text = ""
 		_changed = False
@@ -54,7 +55,7 @@ Public Class IEPCForm
 		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(_iepcFilePath))
 		SetPowerMapEntries(_lvPowerMap1, voltageLevel.PowerMap)
 	End Sub
 
@@ -65,7 +66,7 @@ Public Class IEPCForm
 		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(_iepcFilePath))
 		SetPowerMapEntries(_lvPowerMap2, voltageLevel.PowerMap)
 	End Sub
 
@@ -91,10 +92,12 @@ Public Class IEPCForm
 	End Sub
 
 	Private Function CreateListViewItem(axleNumber As Integer, filepath As String) As ListViewItem
-		Dim retVal As New ListViewItem
+	    Dim basePath As String = Path.GetDirectoryName(_iepcFilePath)
+	    Dim retVal As New ListViewItem
 		retVal.SubItems(0).Text = axleNumber.ToGUIFormat()
-		retVal.SubItems.Add(filepath)
-		Return retVal
+        retVal.SubItems.Add(GetRelativePath(filepath, basePath))
+        'retVal.SubItems.Add(filepath)
+        Return retVal
 	End Function
 
 	Private Function CreateListViewItem(ratio As Double, outputShaftTorque As NewtonMeter, outputShaftSpeed As PerSecond) As ListViewItem
@@ -242,6 +245,7 @@ Public Class IEPCForm
 		dialog.tbGear.Text = entry.SubItems(0).Text
 		dialog.tbInputFile.Text = entry.SubItems(1).Text
 		dialog.tbGear.Focus()
+		dialog.IEPCPath = GetPath(_iepcFilePath)
 
 		If dialog.ShowDialog() = DialogResult.OK Then
 			entry.SubItems(0).Text = dialog.tbGear.Text
@@ -251,14 +255,14 @@ Public Class IEPCForm
 	End Sub
 
 	Private Sub btFLCurveFile1_Click(sender As Object, e As EventArgs) Handles btFLCurveFile1.Click
-		If IEPCFLCFileBrowser.OpenDialog(FileRepl(tbFLCurve1.Text, GetPath(_flcFilePath1))) Then
-			tbFLCurve1.Text = GetFilenameWithoutDirectory(IEPCFLCFileBrowser.Files(0), GetPath(_flcFilePath1))
+		If IEPCFLCFileBrowser.OpenDialog(FileRepl(tbFLCurve1.Text, GetPath(_iepcFilePath))) Then
+			tbFLCurve1.Text = GetFilenameWithoutDirectory(IEPCFLCFileBrowser.Files(0), GetPath(_iepcFilePath))
 		End If
 	End Sub
 
 	Private Sub btFLCurveFile2_Click(sender As Object, e As EventArgs) Handles btFLCurveFile2.Click
-		If IEPCFLCFileBrowser.OpenDialog(FileRepl(tbFLCurve2.Text, GetPath(_flcFilePath2))) Then
-			tbFLCurve2.Text = GetFilenameWithoutDirectory(IEPCFLCFileBrowser.Files(0), GetPath(_flcFilePath2))
+		If IEPCFLCFileBrowser.OpenDialog(FileRepl(tbFLCurve2.Text, GetPath(_iepcFilePath))) Then
+			tbFLCurve2.Text = GetFilenameWithoutDirectory(IEPCFLCFileBrowser.Files(0), GetPath(_iepcFilePath))
 		End If
 	End Sub
 
@@ -398,7 +402,7 @@ Public Class IEPCForm
 	End Function
 	
 	Private Function SaveIEPCToFile(ByVal file As String) As Boolean
-		Dim iepc = New IEPCInputData 
+		Dim iepc = New IEPCInputData(file)
 
 		iepc.SetCommonEntries(tbModel.Text, tbInertia.Text, cbDesignTypeWheelMotor.Checked, 
 							  tbNumberOfDesignTypeWheelMotor.Text, cbDifferentialIncluded.Checked,
@@ -416,7 +420,7 @@ Public Class IEPCForm
 		iepc.SetDragCurveEntries(lvDragCurve)
 
 
-		If Not iepc.SaveFile(file) Then
+		If Not iepc.SaveFile Then
 			MsgBox("Cannot save to " & file, MsgBoxStyle.Critical)
 			Return False
 		End If
@@ -584,7 +588,9 @@ Public Class IEPCForm
 	End Function
 
 	Private Function ValidateFullLoadCurve1() As Boolean
-		If Not File.Exists(tbFLCurve1.Text) Then
+		dim tmp = new SubPath()
+		tmp.Init(GetPath(_iepcFilePath), tbFLCurve1.Text)
+		If Not File.Exists(tmp.FullPath) Then
 			ShowErrorMessageBox("No valid file path given", tbFLCurve1, False)
 			Return False
 		End If
@@ -599,7 +605,9 @@ Public Class IEPCForm
 	End Function
 
 	Private Function ValidateFullLoadCurve2() As Boolean
-		If Not File.Exists(tbFLCurve2.Text) Then
+	    dim tmp = new SubPath()
+	    tmp.Init(GetPath(_iepcFilePath), tbFLCurve2.Text)
+		If Not File.Exists(tmp.FullPath) Then
 			ShowErrorMessageBox("Invalid input no valid file path given", tbFLCurve2, False)
 			Return False
 		End If
diff --git a/VECTO/GUI/IEPCInputDialog.vb b/VECTO/GUI/IEPCInputDialog.vb
index 3cbd2c4db0..6999080fa5 100644
--- a/VECTO/GUI/IEPCInputDialog.vb
+++ b/VECTO/GUI/IEPCInputDialog.vb
@@ -1,4 +1,5 @@
 Imports System.IO
+Imports TUGraz.VECTO.Input_Files
 
 Public Enum IEPCDialogType
 	DragCurveDialog
@@ -10,6 +11,7 @@ Public Class IEPCInputDialog
 	Private ReadOnly _dialogType As IEPCDialogType
 	Private _dragCurveFilePath As String
 	Private _powerMapFilePath As String
+	Public IEPCPath As String
 
 	Public Sub New(dialogType As IEPCDialogType)
 
@@ -51,7 +53,9 @@ Public Class IEPCInputDialog
 			Return
 		End If
 
-		If Not File.Exists(tbInputFile.Text) Then
+		Dim tmp As SubPath = New SubPath()
+		tmp.Init(IEPCPath, tbInputFile.Text)
+		If Not File.Exists(tmp.FullPath) Then
 			MsgBox("Invalid input no valid file path given")
 			_tbInputFile.Focus()
 			Return
@@ -86,15 +90,15 @@ Public Class IEPCInputDialog
 			Case IEPCDialogType.DragCurveDialog
 				SelectInputFileDialog(IEPCDragFileBrowser, _dragCurveFilePath)
 			Case IEPCDialogType.PowerMapDialog
-				SelectInputFileDialog(IEPCDragFileBrowser, _powerMapFilePath)
+				SelectInputFileDialog(IEPCPowerMapFileBrowser, _powerMapFilePath)
 		End Select
 	End Sub
 
 #End Region
 
 	Private Sub SelectInputFileDialog(fileBrowser As FileBrowser, filePath As String )
-		If fileBrowser.OpenDialog(FileRepl(tbInputFile.Text, GetPath(filePath))) Then
-			tbInputFile.Text = GetFilenameWithoutDirectory(fileBrowser.Files(0), GetPath(filePath))
+		If fileBrowser.OpenDialog(FileRepl(tbInputFile.Text, IEPCPath)) Then
+			tbInputFile.Text = GetFilenameWithoutDirectory(fileBrowser.Files(0), IEPCPath)
 		End If
 	End Sub
 	
diff --git a/VECTO/GUI/VectoJobForm.vb b/VECTO/GUI/VectoJobForm.vb
index aa723c3532..a5dd446079 100644
--- a/VECTO/GUI/VectoJobForm.vb
+++ b/VECTO/GUI/VectoJobForm.vb
@@ -476,7 +476,7 @@ Public Class VectoJobForm
         UpdateEnabledControls()
         'Files -----------------------------
         TbVEH.Text = GetRelativePath(inputData.JobInputData.Vehicle.DataSource.SourceFile, _basePath)
-		If (JobType <> VectoSimulationJobType.BatteryElectricVehicle) Then
+		If (JobType <> VectoSimulationJobType.BatteryElectricVehicle AndAlso JobType <> VectoSimulationJobType.IEPC_E) Then
 			TbENG.Text = GetRelativePath(inputData.JobInputData.Vehicle.Components.EngineInputData.DataSource.SourceFile, _basePath)
 		Else
 			TbENG.Text = ""
@@ -538,7 +538,11 @@ Public Class VectoJobForm
             Dim sb As ICycleData
             For Each sb In vectoJob.Cycles
                 Dim lv0 As ListViewItem = New ListViewItem
-                lv0.Text = GetRelativePath(sb.CycleData.Source, Path.GetDirectoryName(Path.GetFullPath(file))) 'sb.Name
+                if (sb.CycleData.SourceType = DataSourceType.Embedded) Then
+                    lv0.Text = sb.Name
+                else 
+                    lv0.Text = GetRelativePath(sb.CycleData.Source, Path.GetDirectoryName(Path.GetFullPath(file))) 'sb.Name
+                End If
                 LvCycles.Items.Add(lv0)
             Next
         Catch ex As Exception
diff --git a/VECTO/GUI/VehicleForm.vb b/VECTO/GUI/VehicleForm.vb
index 9b70d09124..ef9a269edc 100644
--- a/VECTO/GUI/VehicleForm.vb
+++ b/VECTO/GUI/VehicleForm.vb
@@ -449,13 +449,14 @@ Public Class VehicleForm
 		tbAngledriveLossMapPath.Text =
 			If(angledrive.LossMap Is Nothing, "", GetRelativePath(angledrive.LossMap.Source, basePath))
 
-		If (vehicle.VehicleType = VectoSimulationJobType.BatteryElectricVehicle OrElse vehicle.VehicleType = VectoSimulationJobType.ParallelHybridVehicle OrElse vehicle.VehicleType = VectoSimulationJobType.SerialHybridVehicle) Then
+		If (vehicle.VehicleType <> VectoSimulationJobType.ConventionalVehicle AndAlso vehicle.VehicleType <> VectoSimulationJobType.EngineOnlySimulation) Then
 			lvREESSPacks.Items.Clear()
 			For Each entry As IElectricStorageEngineeringInputData In vehicle.Components.ElectricStorage.ElectricStorageElements.OrderBy(Function(x) x.StringId)
 				lvREESSPacks.Items.Add(CreateREESSPackListViewItem(GetRelativePath(entry.REESSPack.DataSource.SourceFile, basePath), entry.Count, entry.StringId))
 			Next
 			tbInitialSoC.Text = (vehicle.InitialSOC * 100).ToGUIFormat()
 
+			if (vehicle.VehicleType = VectoSimulationJobType.ParallelHybridVehicle OrElse vehicle.VehicleType = VectoSimulationJobType.BatteryElectricVehicle OrElse vehicle.VehicleType = VectoSimulationJobType.SerialHybridVehicle) then
 			Dim em As ElectricMachineEntry(Of IElectricMotorEngineeringInputData) = vehicle.Components.ElectricMachines.Entries.First(Function(x) x.Position <> PowertrainPosition.GEN)
 			tbElectricMotor.Text = GetRelativePath(em.ElectricMachine.DataSource.SourceFile, basePath)
 			tbEmCount.Text = em.Count.ToGUIFormat()
@@ -473,7 +474,16 @@ Public Class VehicleForm
 					gear += 1
 				Next
 			End If
+            end If
+			if vehicle.VehicleType = VectoSimulationJobType.IEPC_E OrElse vehicle.VehicleType = VectoSimulationJobType.IHPC Then
+				Dim iepc = vehicle.Components.IEPCEngineeringInputData
+				tbIEPCFilePath.Text = GetRelativePath(iepc.DataSource.SourceFile, basePath)
+			End If
 
+			if vehicle.VehicleType = VectoSimulationJobType.IHPC Then
+				Dim ihpc = vehicle.Components.ElectricMachines.Entries.First(Function(x) x.Position = PowertrainPosition.IHPC)
+				tbIHPCFilePath.Text = GetRelativePath(ihpc.ElectricMachine.DataSource.SourceFile, basePath)
+			End If
 		End If
 
 		If (vehicle.VehicleType = VectoSimulationJobType.SerialHybridVehicle) Then
@@ -831,40 +841,48 @@ Public Class VehicleForm
 		    veh.PtoLossMap.Init(GetPath(file), tbPTOLossMap.Text)
 		End If
 
-		If (VehicleType = VectoSimulationJobType.ParallelHybridVehicle OrElse VehicleType = VectoSimulationJobType.BatteryElectricVehicle OrElse VehicleType = VectoSimulationJobType.SerialHybridVehicle) Then
+		'If (VehicleType = VectoSimulationJobType.ParallelHybridVehicle OrElse VehicleType = VectoSimulationJobType.BatteryElectricVehicle OrElse VehicleType = VectoSimulationJobType.SerialHybridVehicle) Then
+		If (VehicleType <> VectoSimulationJobType.ConventionalVehicle andalso VehicleType <> VectoSimulationJobType.EngineOnlySimulation)
 			For Each reess As ListViewItem In lvREESSPacks.Items
 				veh.ReessPacks.Add(Tuple.Create(reess.SubItems(REESPackTbl.ReessFile).Text, reess.SubItems(REESPackTbl.Count).Text.ToInt(), reess.SubItems(REESPackTbl.StringId).Text.ToInt()))
 			Next
 			veh.InitialSOC = tbInitialSoC.Text.ToDouble(80) / 100.0
 
-			If tbElectricMotor.Text = "" Then
-				MsgBox("Electric Motor File is required.")
-				tcVehicleComponents.SelectedTab = tpElectricMachine
-				tbElectricMotor.Focus()
-				Return False
-			End If
-
-			veh.ElectricMotorFile.Init(GetPath(file), tbElectricMotor.Text)
-			veh.ElectricMotorPosition = CType(cbEmPos.SelectedValue, PowertrainPosition)
-			veh.ElectricMotorCount = tbEmCount.Text.ToInt(1)
-			veh.ElectricMotorRatio = tbRatioEm.Text.ToDouble(1)
-			'veh.ElectricMotorMechEff = tbEmADCLossMap.Text.ToDouble()
-
-			If tbEmADCLossMap.Text = "" Then
-				MsgBox("Loss Map EM ADC is required.")
-				tcVehicleComponents.SelectedTab = tpElectricMachine
-				tbEmADCLossMap.Focus()
-				Return False
-			End If
-
-
-			veh.ElectricMotorMechLossMap.Init(GetPath(file), tbEmADCLossMap.Text)
-			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()
+			
+
+		    If (VehicleType = VectoSimulationJobType.ParallelHybridVehicle OrElse 
+                VehicleType = VectoSimulationJobType.BatteryElectricVehicle OrElse 
+                VehicleType = VectoSimulationJobType.SerialHybridVehicle) Then
+			    
+		        If tbElectricMotor.Text = "" Then
+		            MsgBox("Electric Motor File is required.")
+		            tcVehicleComponents.SelectedTab = tpElectricMachine
+		            tbElectricMotor.Focus()
+		            Return False
+		        End If
+		        veh.ElectricMotorFile.Init(GetPath(file), tbElectricMotor.Text)
+			    veh.ElectricMotorPosition = CType(cbEmPos.SelectedValue, PowertrainPosition)
+			    veh.ElectricMotorCount = tbEmCount.Text.ToInt(1)
+			    veh.ElectricMotorRatio = tbRatioEm.Text.ToDouble(1)
+			    'veh.ElectricMotorMechEff = tbEmADCLossMap.Text.ToDouble()
+			    If tbEmADCLossMap.Text = "" Then
+				    MsgBox("Loss Map EM ADC is required.")
+				    tcVehicleComponents.SelectedTab = tpElectricMachine
+				    tbEmADCLossMap.Focus()
+				    Return False
+			    End If
+
+			    veh.ElectricMotorMechLossMap.Init(GetPath(file), tbEmADCLossMap.Text)
+			    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
 		End If
 
-		If (VehicleType = VectoSimulationJobType.SerialHybridVehicle) Then
+		If (VehicleType = VectoSimulationJobType.SerialHybridVehicle OrElse VehicleType = VectoSimulationJobType.IEPC_S) Then
 			If tbGenSetEM.Text = "" Then
 				MsgBox("Generator File is required.")
 				tcVehicleComponents.SelectedTab = tpGensetComponents
@@ -885,6 +903,7 @@ Public Class VehicleForm
 			veh.GenSetMechLossMap.Init(GetPath(file), tbGenSetADC.Text)
 		End If
 
+
 		If (VehicleType = VectoSimulationJobType.ParallelHybridVehicle) AndAlso Not String.IsNullOrWhiteSpace(tbEmTorqueLimits.Text) Then
 			veh.EmTorqueLimitsFile.Init(GetPath(file), tbEmTorqueLimits.Text)
 		End If
diff --git a/VECTO/Input Files/IEPCInputData.vb b/VECTO/Input Files/IEPCInputData.vb
index 3457bf1912..1ac648e0f2 100644
--- a/VECTO/Input Files/IEPCInputData.vb	
+++ b/VECTO/Input Files/IEPCInputData.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
@@ -22,16 +23,15 @@ Public Class IEPCInputData
     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.SaveIEPC(Me, filePath, Cfg.DeclMode)
+            writer.SaveIEPC(Me, _filePath, Cfg.DeclMode)
         Catch ex As Exception
             MsgBox("Failed to write IEPC file: " + ex.Message)
             Return False
@@ -64,10 +64,12 @@ Public Class IEPCInputData
         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)
         
@@ -80,11 +82,12 @@ Public Class IEPCInputData
         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
@@ -118,11 +121,12 @@ Public Class IEPCInputData
         For Each entry As ListViewItem In dragCurveListView.Items
             Dim currentEntry = New DragCurveEntry
             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("Drag Curve is missing or invalid")
             Else 
-                currentEntry.DragCurve = VectoCSVFile.Read(entry.SubItems(1).Text)
+                currentEntry.DragCurve = VectoCSVFile.Read(tmp.FullPath)
             End If
             _dragCurves.Add(currentEntry)
         Next
diff --git a/VECTO/Input Files/VectoJob.vb b/VECTO/Input Files/VectoJob.vb
index 43fb7e27f3..8b54f3b752 100644
--- a/VECTO/Input Files/VectoJob.vb	
+++ b/VECTO/Input Files/VectoJob.vb	
@@ -132,8 +132,15 @@ Public Class VectoJob
     End Sub
 
     Public Function SaveFile() As Boolean
+        dim emPos As PowertrainPosition? = Nothing
+        if (IEngineeringJobInputData_Vehicle?.VehicleType <> VectoSimulationJobType.ConventionalVehicle) then
+            if (IEngineeringJobInputData_Vehicle.VehicleType <> VectoSimulationJobType.IEPC_E) Then
+                emPos =  IEngineeringJobInputData_Vehicle?.Components.ElectricMachines?.Entries.FirstOrDefault()?.Position
+            End If
+        end if
+
         Dim validationResults As IList(Of ValidationResult) =
-                Validate(If(Cfg.DeclMode, ExecutionMode.Declaration, ExecutionMode.Engineering), JobType, IEngineeringJobInputData_Vehicle?.Components.ElectricMachines?.Entries.FirstOrDefault()?.Position, Nothing, False)
+                Validate(If(Cfg.DeclMode, ExecutionMode.Declaration, ExecutionMode.Engineering), JobType, emPos, Nothing, False)
 
         If validationResults.Count > 0 Then
             Dim messages As IEnumerable(Of String) =
@@ -521,7 +528,7 @@ Public Class VectoJob
         If vectoJob.JobType.IsOneOf(VectoSimulationJobType.BatteryElectricVehicle, VectoSimulationJobType.ParallelHybridVehicle, VectoSimulationJobType.SerialHybridVehicle) _
            AndAlso (vehicleInputData.Components.ElectricMachines Is Nothing OrElse vehicleInputData.Components.ElectricMachines.Entries.Count = 0) Then _
             result.Add(New ValidationResult("Electric machine is missing in vehicle"))
-        If Not vectoJob.JobType = VectoSimulationJobType.BatteryElectricVehicle AndAlso engineInputData Is Nothing Then _
+        If Not (vectoJob.JobType = VectoSimulationJobType.BatteryElectricVehicle OrElse vectoJob.JobType = VectoSimulationJobType.IEPC_E) AndAlso engineInputData Is Nothing Then _
             result.Add(New ValidationResult("Engine File is missing or invalid"))
         If (vectoJob.JobType = VectoSimulationJobType.ConventionalVehicle OrElse vectoJob.JobType = VectoSimulationJobType.ParallelHybridVehicle) _
              AndAlso gearboxInputData Is Nothing Then _
@@ -557,7 +564,7 @@ Public Class VectoJob
                 If vehicleInputData.SavedInDeclarationMode Then
                     result.Add(New ValidationResult("Vehicle File is not in Engineering Mode"))
                 End If
-                If Not vectoJob.JobType = VectoSimulationJobType.BatteryElectricVehicle AndAlso engineInputData.SavedInDeclarationMode Then
+                If Not (vectoJob.JobType = VectoSimulationJobType.BatteryElectricVehicle OrElse vectoJob.JobType = VectoSimulationJobType.IEPC_E) AndAlso engineInputData.SavedInDeclarationMode Then
                     result.Add(New ValidationResult("Engine File is not in Engineering Mode"))
                 End If
                 If Not vectoJob.JobType = VectoSimulationJobType.BatteryElectricVehicle _ 
@@ -578,8 +585,13 @@ Public Class VectoJob
                 End If
             End If
 
-
-            result = jobData.Validate(If(Cfg.DeclMode, ExecutionMode.Declaration, ExecutionMode.Engineering), vehicleInputData.VehicleType, vehicleInputData.Components.ElectricMachines?.Entries.FirstOrDefault()?.Position, If(jobData.GearboxData?.Type, GearboxType.NoGearbox), False)
+            dim emPos As PowertrainPosition? = Nothing
+            if (vehicleInputData?.VehicleType <> VectoSimulationJobType.ConventionalVehicle) then
+                if (vehicleInputData.VehicleType <> VectoSimulationJobType.IEPC_E) Then
+                    emPos =  vehicleInputData?.Components.ElectricMachines?.Entries.FirstOrDefault()?.Position
+                End If
+            end if
+            result = jobData.Validate(If(Cfg.DeclMode, ExecutionMode.Declaration, ExecutionMode.Engineering), vehicleInputData.VehicleType, empos, If(jobData.GearboxData?.Type, GearboxType.NoGearbox), False)
             If result.Any() Then
                 Return _
                     New ValidationResult("Vecto Job Configuration is invalid. ", result.Select(Function(r) r.ErrorMessage).ToList())
diff --git a/VECTO/Input Files/Vehicle.vb b/VECTO/Input Files/Vehicle.vb
index fb819abec2..44f8c6919e 100644
--- a/VECTO/Input Files/Vehicle.vb	
+++ b/VECTO/Input Files/Vehicle.vb	
@@ -47,8 +47,8 @@ Public Class Vehicle
 	<ValidateObject> Public RetarderType As RetarderType
 	Public RetarderRatio As Double = 0
 	Public ReadOnly RetarderLossMapFile As SubPath
-    Public ReadOnly EmTorqueLimitsFile As SubPath
-    public ReadOnly PropulsionTorqueFile as SubPath
+	Public ReadOnly EmTorqueLimitsFile As SubPath
+	public ReadOnly PropulsionTorqueFile as SubPath
 
 	Public DynamicTyreRadius As Double
 	Public ReadOnly Axles As List(Of AxleInputData)
@@ -67,7 +67,7 @@ Public Class Vehicle
 	Public PtoType As String
 	Public ReadOnly PtoLossMap As SubPath
 	Public ReadOnly PtoCycleStandstill As SubPath
-    Public ReadOnly PtoCycleDriving As SubPath
+	Public ReadOnly PtoCycleDriving As SubPath
 	Public torqueLimitsList As List(Of ITorqueLimitInputData)
 	Public VehicleidlingSpeed As PerSecond
 	Public legClass As LegislativeClass
@@ -80,43 +80,45 @@ Public Class Vehicle
 	Public VehicleTankSystem As TankSystem?
 
 	Public ReadOnly ElectricMotorFile As SubPath
-    Public ReadOnly GenSetEMFile As SubPath
+	Public ReadOnly GenSetEMFile As SubPath
 
 	public ReadOnly ReessPacks As List(Of Tuple(Of String, Integer, Integer))
 
-    Public ElectricMotorPosition As PowertrainPosition
+	Public ElectricMotorPosition As PowertrainPosition
 	Public ElectricMotorCount As Integer
 	Public ElectricMotorRatio As Double
-    'Public ElectricMotorMechEff As Double
-    Public ElectricMotorMechLossMap As SubPath
-    Public GenSetMechLossMap As SubPath
-
-    Public GenSetPosition As PowertrainPosition
-    Public GenSetCount As Integer
-    Public GenSetRatio As Double
-    'Public ElectricMotorMechEff As Double
-    Public GenSetLossMap As SubPath
-
-    public GearDuringPTODrive As UInteger?
-    Public EngineSpeedDuringPTODrive As PerSecond
-    Public ElectricMotorPerGearRatios As Double()
-
-	Public Sub New()
+	'Public ElectricMotorMechEff As Double
+	Public ElectricMotorMechLossMap As SubPath
+	Public GenSetMechLossMap As SubPath
+
+	Public GenSetPosition As PowertrainPosition
+	Public GenSetCount As Integer
+	Public GenSetRatio As Double
+	'Public ElectricMotorMechEff As Double
+	Public GenSetLossMap As SubPath
+
+	public GearDuringPTODrive As UInteger?
+	Public EngineSpeedDuringPTODrive As PerSecond
+	Public ElectricMotorPerGearRatios As Double()
+    Public IEPCFile As SubPath
+
+    Public Sub New()
 		_path = ""
 		_filePath = ""
 		CrossWindCorrectionFile = New SubPath
 
 		RetarderLossMapFile = New SubPath
 		AngledriveLossMapFile = New SubPath()
-        EmTorqueLimitsFile = new SubPath()
-        PropulsionTorqueFile = New SubPath()
+		EmTorqueLimitsFile = new SubPath()
+		PropulsionTorqueFile = New SubPath()
+		IEPCFile = new SubPath()
 
 		Axles = New List(Of AxleInputData)
 		torqueLimitsList = New List(Of ITorqueLimitInputData)
 		ReessPacks = new List(Of Tuple(Of String,Integer,Integer))
-	    PtoLossMap = New SubPath()
+		PtoLossMap = New SubPath()
 		PtoCycleStandstill = New SubPath()
-        PtoCycleDriving = new SubPath()
+		PtoCycleDriving = new SubPath()
 		ElectricMotorFile = New SubPath()
 		ElectricMotorMechLossMap = new SubPath()
 		GenSetEMFile = new SubPath()
@@ -226,7 +228,7 @@ Public Class Vehicle
 		RetarderLossMapFile.Clear()
 		AngledriveLossMapFile.Clear()
 		EmTorqueLimitsFile.Clear()
-	    PropulsionTorqueFile.Clear()
+		PropulsionTorqueFile.Clear()
 
 		AngledriveType = AngledriveType.None
 		AngledriveLossMapFile.Clear()
@@ -235,7 +237,7 @@ Public Class Vehicle
 		PtoType = PTOTransmission.NoPTO
 		PtoLossMap.Clear()
 		PtoCycleStandstill.Clear()
-	    PtoCycleDriving.Clear()
+		PtoCycleDriving.Clear()
 
 		Axles.Clear()
 		VehicleCategory = VehicleCategory.RigidTruck
@@ -787,9 +789,17 @@ Public Class Vehicle
 		End Get
 	End Property
 
-    Public ReadOnly Property IEPCEngineeringInputData As IIEPCEngineeringInputData Implements IVehicleComponentsEngineering.IEPCEngineeringInputData
+	Public ReadOnly Property IEPCEngineeringInputData As IIEPCEngineeringInputData Implements IVehicleComponentsEngineering.IEPCEngineeringInputData
+	get
+		Return new IEPCWrapper(me)
+	End Get
+	End Property
 
-    Public ReadOnly Property IEPC As IIEPCDeclarationInputData Implements IVehicleComponentsDeclaration.IEPC
+	Public ReadOnly Property IEPC As IIEPCDeclarationInputData Implements IVehicleComponentsDeclaration.IEPC
+	get
+		return IEPCEngineeringInputData
+	End Get
+	End Property
 
 	Public ReadOnly Property BusAuxiliaries As IBusAuxiliariesDeclarationData Implements IVehicleComponentsDeclaration.BusAuxiliaries
 
@@ -825,21 +835,21 @@ Public Class Vehicle
 		End Get
 	End Property
 
-    Public ReadOnly Property PTO_DriveGear As GearshiftPosition Implements IVehicleEngineeringInputData.PTO_DriveGear
-    get
-            return If(gearDuringPTODrive.HasValue, new GearshiftPosition(GearDuringPTODrive.Value), Nothing)
-    End Get
+	Public ReadOnly Property PTO_DriveGear As GearshiftPosition Implements IVehicleEngineeringInputData.PTO_DriveGear
+	get
+			return If(gearDuringPTODrive.HasValue, new GearshiftPosition(GearDuringPTODrive.Value), Nothing)
+	End Get
 end Property
 
-    Public Property InitialSOC As Double Implements IVehicleEngineeringInputData.InitialSOC
-    Public Property VehicleType As VectoSimulationJobType Implements IVehicleEngineeringInputData.VehicleType
+	Public Property InitialSOC As Double Implements IVehicleEngineeringInputData.InitialSOC
+	Public Property VehicleType As VectoSimulationJobType Implements IVehicleEngineeringInputData.VehicleType
 
 
-    Public ReadOnly Property PTO_DriveEngineSpeed As PerSecond Implements IVehicleEngineeringInputData.PTO_DriveEngineSpeed
-    get
-            Return EngineSpeedDuringPTODrive
-    End Get
-    End Property
+	Public ReadOnly Property PTO_DriveEngineSpeed As PerSecond Implements IVehicleEngineeringInputData.PTO_DriveEngineSpeed
+	get
+			Return EngineSpeedDuringPTODrive
+	End Get
+	End Property
 
 	Public ReadOnly Property ZeroEmissionVehicle As Boolean Implements IVehicleDeclarationInputData.ZeroEmissionVehicle
 		Get
@@ -871,9 +881,9 @@ end Property
 		End Get
 	End Property
 
-    Public ReadOnly Property ExemptedTechnology As String Implements IVehicleDeclarationInputData.ExemptedTechnology
+	Public ReadOnly Property ExemptedTechnology As String Implements IVehicleDeclarationInputData.ExemptedTechnology
 
-    Public ReadOnly Property RegisteredClass As RegistrationClass? Implements IVehicleDeclarationInputData.RegisteredClass
+	Public ReadOnly Property RegisteredClass As RegistrationClass? Implements IVehicleDeclarationInputData.RegisteredClass
 	Public ReadOnly Property NumberPassengerSeatsUpperDeck As Integer? Implements IVehicleDeclarationInputData.NumberPassengerSeatsUpperDeck
 	Public ReadOnly Property NumberPassengerSeatsLowerDeck As Integer? Implements IVehicleDeclarationInputData.NumberPassengerSeatsLowerDeck
 	Public ReadOnly Property NumberPassengersStandingLowerDeck As Integer? Implements IVehicleDeclarationInputData.NumberPassengersStandingLowerDeck
@@ -915,12 +925,12 @@ end Property
 		End Get
 	End Property
 
-    Public ReadOnly Property NumSteeredAxles As Integer? Implements IAxlesDeclarationInputData.NumSteeredAxles
+	Public ReadOnly Property NumSteeredAxles As Integer? Implements IAxlesDeclarationInputData.NumSteeredAxles
 	get
 		return nothing
 	End Get
-    End Property
-    Public ReadOnly Property XMLSource As XmlNode Implements IAdvancedDriverAssistantSystemDeclarationInputData.XMLSource
+	End Property
+	Public ReadOnly Property XMLSource As XmlNode Implements IAdvancedDriverAssistantSystemDeclarationInputData.XMLSource
 	Public ReadOnly Property VehicleTypeApprovalNumber As String Implements IVehicleDeclarationInputData.VehicleTypeApprovalNumber
 	Public ReadOnly Property ArchitectureID As ArchitectureID Implements IVehicleDeclarationInputData.ArchitectureID
 	Public ReadOnly Property OvcHev As Boolean Implements IVehicleDeclarationInputData.OvcHev
@@ -944,42 +954,80 @@ end Property
 	Public ReadOnly Property IAxlesDeclarationInputData_XMLSource As XmlNode Implements IAxlesDeclarationInputData.XMLSource
 End Class
 
+Public Class IEPCWrapper
+	Implements IIEPCEngineeringInputData
+
+	Private _vehicle As Vehicle
+
+	Public Sub New(vehicle As Vehicle)
+		_vehicle = vehicle
+	End Sub
+
+    Public ReadOnly Property DataSource As DataSource Implements IComponentInputData.DataSource
+	get
+	    Dim retVal As DataSource = New DataSource()
+	    retVal.SourceType = DataSourceType.JSONFile
+	    retVal.SourceFile = _vehicle.IEPCFile.FullPath
+	    Return retVal
+	End Get
+    End Property
+    Public ReadOnly Property SavedInDeclarationMode As Boolean Implements IComponentInputData.SavedInDeclarationMode
+    Public ReadOnly Property Manufacturer As String Implements IComponentInputData.Manufacturer
+    Public ReadOnly Property Model As String Implements IComponentInputData.Model
+    Public ReadOnly Property [Date] As Date Implements IComponentInputData.[Date]
+    Public ReadOnly Property AppVersion As String Implements IComponentInputData.AppVersion
+    Public ReadOnly Property CertificationMethod As CertificationMethod Implements IComponentInputData.CertificationMethod
+    Public ReadOnly Property CertificationNumber As String Implements IComponentInputData.CertificationNumber
+    Public ReadOnly Property DigestValue As DigestData Implements IComponentInputData.DigestValue
+    Public ReadOnly Property ElectricMachineType As ElectricMachineType Implements IIEPCDeclarationInputData.ElectricMachineType
+    Public ReadOnly Property R85RatedPower As Watt Implements IIEPCDeclarationInputData.R85RatedPower
+    Public ReadOnly Property Inertia As KilogramSquareMeter Implements IIEPCDeclarationInputData.Inertia
+    Public ReadOnly Property DifferentialIncluded As Boolean Implements IIEPCDeclarationInputData.DifferentialIncluded
+    Public ReadOnly Property DesignTypeWheelMotor As Boolean Implements IIEPCDeclarationInputData.DesignTypeWheelMotor
+    Public ReadOnly Property NrOfDesignTypeWheelMotorMeasured As Integer? Implements IIEPCDeclarationInputData.NrOfDesignTypeWheelMotorMeasured
+    Public ReadOnly Property Gears As IList(Of IGearEntry) Implements IIEPCDeclarationInputData.Gears
+    Public ReadOnly Property VoltageLevels As IList(Of IElectricMotorVoltageLevel) Implements IIEPCDeclarationInputData.VoltageLevels
+    Public ReadOnly Property DragCurves As IList(Of IDragCurve) Implements IIEPCDeclarationInputData.DragCurves
+    Public ReadOnly Property Conditioning As TableData Implements IIEPCDeclarationInputData.Conditioning
+    Public ReadOnly Property OverloadRecoveryFactor As Double Implements IIEPCEngineeringInputData.OverloadRecoveryFactor
+End Class
+
 Public Class ElectricStorageSystemWrapper
-    Implements IElectricStorageSystemEngineeringInputData
+	Implements IElectricStorageSystemEngineeringInputData
 
-    Private _vehicle As Vehicle
+	Private _vehicle As Vehicle
 
-    Public Sub New(vehicle As Vehicle)
-        _vehicle = vehicle    
-    End Sub
+	Public Sub New(vehicle As Vehicle)
+		_vehicle = vehicle    
+	End Sub
 
-    Public ReadOnly Property ElectricStorageElements As IList(Of IElectricStorageDeclarationInputData) Implements IElectricStorageSystemDeclarationInputData.ElectricStorageElements
+	Public ReadOnly Property ElectricStorageElements As IList(Of IElectricStorageDeclarationInputData) Implements IElectricStorageSystemDeclarationInputData.ElectricStorageElements
 	get
 			return _vehicle.ReessPacks.Select(Function(x) new ElectricStorageWrapper(x, GetPath(_vehicle.FilePath))).Cast(of IElectricStorageDeclarationInputData) .toList()
 	End Get
-    End Property
-    Public ReadOnly Property IElectricStorageSystemEngineeringInputData_ElectricStorageElements As IList(Of IElectricStorageEngineeringInputData) Implements IElectricStorageSystemEngineeringInputData.ElectricStorageElements
+	End Property
+	Public ReadOnly Property IElectricStorageSystemEngineeringInputData_ElectricStorageElements As IList(Of IElectricStorageEngineeringInputData) Implements IElectricStorageSystemEngineeringInputData.ElectricStorageElements
 	get
-	    return _vehicle.ReessPacks.Select(Function(x) new ElectricStorageWrapper(x, GetPath(_vehicle.FilePath))).cast(of IElectricStorageEngineeringInputData).toList()
+		return _vehicle.ReessPacks.Select(Function(x) new ElectricStorageWrapper(x, GetPath(_vehicle.FilePath))).cast(of IElectricStorageEngineeringInputData).toList()
 	End Get
-    End Property
+	End Property
 End Class
 
 Public Class ElectricStorageWrapper
 	Implements IElectricStorageEngineeringInputData, IBatteryPackEngineeringInputData
 
-    Public Property BatteryFile As SubPath
+	Public Property BatteryFile As SubPath
 
-    Public Sub New(veh As Tuple(Of String,Integer,Integer), filePath As String)
+	Public Sub New(veh As Tuple(Of String,Integer,Integer), filePath As String)
 		count = veh.Item2
 		StringId = veh.Item3
-        BatteryFile = New SubPath
-        BatteryFile.Init(filePath, veh.Item1)
+		BatteryFile = New SubPath
+		BatteryFile.Init(filePath, veh.Item1)
 	End Sub
 
 
 
-    Public ReadOnly Property REESSPack As IREESSPackInputData Implements IElectricStorageEngineeringInputData.REESSPack
+	Public ReadOnly Property REESSPack As IREESSPackInputData Implements IElectricStorageEngineeringInputData.REESSPack
 		Get
 			Return Me
 		End Get
@@ -988,9 +1036,9 @@ Public Class ElectricStorageWrapper
 	Public ReadOnly Property Count As Integer Implements IElectricStorageEngineeringInputData.Count
 		
 
-    Public ReadOnly Property StringId As Integer Implements IElectricStorageDeclarationInputData.StringId
+	Public ReadOnly Property StringId As Integer Implements IElectricStorageDeclarationInputData.StringId
 
-    Public ReadOnly Property DataSource As DataSource Implements IComponentInputData.DataSource
+	Public ReadOnly Property DataSource As DataSource Implements IComponentInputData.DataSource
 		Get
 			Dim retVal As DataSource = New DataSource()
 			retVal.SourceType = DataSourceType.JSONFile
@@ -1034,47 +1082,47 @@ Public Class ElectricMachinesWrapper
 			Dim retval As IList(Of ElectricMachineEntry(Of IElectricMotorDeclarationInputData)) = New List(Of ElectricMachineEntry(Of IElectricMotorDeclarationInputData))(New ElectricMachineEntry(Of IElectricMotorDeclarationInputData)() {
 			New ElectricMachineEntry(Of IElectricMotorDeclarationInputData) 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)),
-                    .Position = Vehicle.ElectricMotorPosition, 
-                    .RatioADC = Vehicle.ElectricMotorRatio, 
-				    .RatioPerGear = vehicle.ElectricMotorPerGearRatios,
-                    .Count = Vehicle.ElectricMotorCount}})
+					.MechanicalTransmissionEfficiency = If(IsNumeric(Vehicle.ElectricMotorMechLossMap.OriginalPath), Vehicle.ElectricMotorMechLossMap.OriginalPath.ToDouble(), double.NaN), 
+					.MechanicalTransmissionLossMap = If(IsNumeric(Vehicle.ElectricMotorMechLossMap.OriginalPath), Nothing, VectoCSVFile.Read(Vehicle.ElectricMotorMechLossMap.FullPath)),
+					.Position = Vehicle.ElectricMotorPosition, 
+					.RatioADC = Vehicle.ElectricMotorRatio, 
+					.RatioPerGear = vehicle.ElectricMotorPerGearRatios,
+					.Count = Vehicle.ElectricMotorCount}})
 
 			if (Vehicle.VehicleType = VectoSimulationJobType.SerialHybridVehicle) Then
 				retval.Add(New ElectricMachineEntry(Of IElectricMotorDeclarationInputData) With {
-                              .ElectricMachine = new ElectricMachineWrapper(Vehicle.GenSetEMFile),
-                              .MechanicalTransmissionEfficiency = If(IsNumeric(Vehicle.GenSetMechLossMap.OriginalPath), Vehicle.GenSetMechLossMap.OriginalPath.ToDouble(), double.NaN), 
-                              .MechanicalTransmissionLossMap = If(IsNumeric(Vehicle.GenSetMechLossMap.OriginalPath), Nothing,VectoCSVFile.Read(Vehicle.GenSetMechLossMap.FullPath)),
-                              .Position = PowertrainPosition.GEN, 
-                              .RatioADC = Vehicle.GenSetRatio, 
-                              .Count = Vehicle.GenSetCount})
+							  .ElectricMachine = new ElectricMachineWrapper(Vehicle.GenSetEMFile),
+							  .MechanicalTransmissionEfficiency = If(IsNumeric(Vehicle.GenSetMechLossMap.OriginalPath), Vehicle.GenSetMechLossMap.OriginalPath.ToDouble(), double.NaN), 
+							  .MechanicalTransmissionLossMap = If(IsNumeric(Vehicle.GenSetMechLossMap.OriginalPath), Nothing,VectoCSVFile.Read(Vehicle.GenSetMechLossMap.FullPath)),
+							  .Position = PowertrainPosition.GEN, 
+							  .RatioADC = Vehicle.GenSetRatio, 
+							  .Count = Vehicle.GenSetCount})
 			End If
 			Return retval
 		End Get
 	End Property
 	Public ReadOnly Property IElectricMachinesEngineeringInputData_Entries As IList(Of ElectricMachineEntry(Of IElectricMotorEngineeringInputData)) Implements IElectricMachinesEngineeringInputData.Entries
 		Get
-		    Dim retval As IList(Of ElectricMachineEntry(Of IElectricMotorEngineeringInputData)) =  New List(Of ElectricMachineEntry(Of IElectricMotorEngineeringInputData))(New ElectricMachineEntry(Of IElectricMotorEngineeringInputData)() {
+			Dim retval As IList(Of ElectricMachineEntry(Of IElectricMotorEngineeringInputData)) =  New List(Of ElectricMachineEntry(Of IElectricMotorEngineeringInputData))(New ElectricMachineEntry(Of IElectricMotorEngineeringInputData)() {
 			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)),
-                    .Position = Vehicle.ElectricMotorPosition, 
-                    .RatioADC = Vehicle.ElectricMotorRatio, 
-				    .RatioPerGear = Vehicle.ElectricMotorPerGearRatios,
-                    .Count = Vehicle.ElectricMotorCount}})
-
-		    if (Vehicle.VehicleType = VectoSimulationJobType.SerialHybridVehicle) Then
-		        retval.Add(New ElectricMachineEntry(Of IElectricMotorEngineeringInputData) With {
-                              .ElectricMachine = new ElectricMachineWrapper(Vehicle.GenSetEMFile),
-                              .MechanicalTransmissionEfficiency = If(IsNumeric(Vehicle.GenSetMechLossMap.OriginalPath), Vehicle.GenSetMechLossMap.OriginalPath.ToDouble(), double.NaN), 
-                              .MechanicalTransmissionLossMap = If(IsNumeric(Vehicle.GenSetMechLossMap.OriginalPath), Nothing,VectoCSVFile.Read(Vehicle.GenSetMechLossMap.FullPath)),
-                              .Position = PowertrainPosition.GEN, 
-                              .RatioADC = Vehicle.GenSetRatio, 
-                              .Count = Vehicle.GenSetCount})
-		    End If
-		    Return retval
+					.MechanicalTransmissionEfficiency = If(IsNumeric(Vehicle.ElectricMotorMechLossMap.OriginalPath), Vehicle.ElectricMotorMechLossMap.OriginalPath.ToDouble(), double.NaN), 
+					.MechanicalTransmissionLossMap = If(IsNumeric(Vehicle.ElectricMotorMechLossMap.OriginalPath), Nothing, VectoCSVFile.Read(Vehicle.ElectricMotorMechLossMap.FullPath)),
+					.Position = Vehicle.ElectricMotorPosition, 
+					.RatioADC = Vehicle.ElectricMotorRatio, 
+					.RatioPerGear = Vehicle.ElectricMotorPerGearRatios,
+					.Count = Vehicle.ElectricMotorCount}})
+
+			if (Vehicle.VehicleType = VectoSimulationJobType.SerialHybridVehicle) Then
+				retval.Add(New ElectricMachineEntry(Of IElectricMotorEngineeringInputData) With {
+							  .ElectricMachine = new ElectricMachineWrapper(Vehicle.GenSetEMFile),
+							  .MechanicalTransmissionEfficiency = If(IsNumeric(Vehicle.GenSetMechLossMap.OriginalPath), Vehicle.GenSetMechLossMap.OriginalPath.ToDouble(), double.NaN), 
+							  .MechanicalTransmissionLossMap = If(IsNumeric(Vehicle.GenSetMechLossMap.OriginalPath), Nothing,VectoCSVFile.Read(Vehicle.GenSetMechLossMap.FullPath)),
+							  .Position = PowertrainPosition.GEN, 
+							  .RatioADC = Vehicle.GenSetRatio, 
+							  .Count = Vehicle.GenSetCount})
+			End If
+			Return retval
 		End Get
 	End Property
 
@@ -1082,36 +1130,36 @@ Public Class ElectricMachinesWrapper
 End Class
 
 Public Class ElectricMachineWrapper
-    Implements  IElectricMotorEngineeringInputData
+	Implements  IElectricMotorEngineeringInputData
 
-    Private EMFile As SubPath
+	Private EMFile As SubPath
 
-    Public Sub New(em As SubPath)
+	Public Sub New(em As SubPath)
 		EMFile = em
-    End Sub
+	End Sub
 
-    Public ReadOnly Property DataSource As DataSource Implements IComponentInputData.DataSource
-        Get
-            Return New DataSource() With {
-                                .SourceFile = EMFile.FullPath}
-        End Get
-    End Property
-    Public ReadOnly Property SavedInDeclarationMode As Boolean Implements IComponentInputData.SavedInDeclarationMode
-    Public ReadOnly Property Manufacturer As String Implements IComponentInputData.Manufacturer
-    Public ReadOnly Property Model As String Implements IComponentInputData.Model
-    Public ReadOnly Property [Date] As Date Implements IComponentInputData.[Date]
-    Public ReadOnly Property AppVersion As String Implements IComponentInputData.AppVersion
-    Public ReadOnly Property CertificationMethod As CertificationMethod Implements IComponentInputData.CertificationMethod
-    Public ReadOnly Property CertificationNumber As String Implements IComponentInputData.CertificationNumber
-    Public ReadOnly Property DigestValue As DigestData Implements IComponentInputData.DigestValue
+	Public ReadOnly Property DataSource As DataSource Implements IComponentInputData.DataSource
+		Get
+			Return New DataSource() With {
+								.SourceFile = EMFile.FullPath}
+		End Get
+	End Property
+	Public ReadOnly Property SavedInDeclarationMode As Boolean Implements IComponentInputData.SavedInDeclarationMode
+	Public ReadOnly Property Manufacturer As String Implements IComponentInputData.Manufacturer
+	Public ReadOnly Property Model As String Implements IComponentInputData.Model
+	Public ReadOnly Property [Date] As Date Implements IComponentInputData.[Date]
+	Public ReadOnly Property AppVersion As String Implements IComponentInputData.AppVersion
+	Public ReadOnly Property CertificationMethod As CertificationMethod Implements IComponentInputData.CertificationMethod
+	Public ReadOnly Property CertificationNumber As String Implements IComponentInputData.CertificationNumber
+	Public ReadOnly Property DigestValue As DigestData Implements IComponentInputData.DigestValue
 
-    Public ReadOnly Property VoltageLevels As IList(Of IElectricMotorVoltageLevel) Implements IElectricMotorDeclarationInputData.VoltageLevels
-    Public ReadOnly Property ElectricMachineType As ElectricMachineType Implements IElectricMotorDeclarationInputData.ElectricMachineType
-    Public ReadOnly Property R85RatedPower As Watt Implements IElectricMotorDeclarationInputData.R85RatedPower
-    Public ReadOnly Property Inertia As KilogramSquareMeter Implements IElectricMotorDeclarationInputData.Inertia
-    Public ReadOnly Property DcDcConverterIncluded As Boolean Implements IElectricMotorDeclarationInputData.DcDcConverterIncluded
-    Public ReadOnly Property IHPCType As String Implements IElectricMotorDeclarationInputData.IHPCType
-    Public ReadOnly Property DragCurve As TableData Implements IElectricMotorDeclarationInputData.DragCurve
-    Public ReadOnly Property Conditioning As TableData Implements IElectricMotorDeclarationInputData.Conditioning
-    Public ReadOnly Property OverloadRecoveryFactor As Double Implements IElectricMotorEngineeringInputData.OverloadRecoveryFactor
+	Public ReadOnly Property VoltageLevels As IList(Of IElectricMotorVoltageLevel) Implements IElectricMotorDeclarationInputData.VoltageLevels
+	Public ReadOnly Property ElectricMachineType As ElectricMachineType Implements IElectricMotorDeclarationInputData.ElectricMachineType
+	Public ReadOnly Property R85RatedPower As Watt Implements IElectricMotorDeclarationInputData.R85RatedPower
+	Public ReadOnly Property Inertia As KilogramSquareMeter Implements IElectricMotorDeclarationInputData.Inertia
+	Public ReadOnly Property DcDcConverterIncluded As Boolean Implements IElectricMotorDeclarationInputData.DcDcConverterIncluded
+	Public ReadOnly Property IHPCType As String Implements IElectricMotorDeclarationInputData.IHPCType
+	Public ReadOnly Property DragCurve As TableData Implements IElectricMotorDeclarationInputData.DragCurve
+	Public ReadOnly Property Conditioning As TableData Implements IElectricMotorDeclarationInputData.Conditioning
+	Public ReadOnly Property OverloadRecoveryFactor As Double Implements IElectricMotorEngineeringInputData.OverloadRecoveryFactor
 End Class
\ No newline at end of file
diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs
index 90ccb2b255..fa51f7d3a9 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs
@@ -98,7 +98,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 					case "ParallelHybrid": return VectoSimulationJobType.ParallelHybridVehicle;
 					case "BatteryElectric": return VectoSimulationJobType.BatteryElectricVehicle;
 					case "SerialHybrid": return VectoSimulationJobType.SerialHybridVehicle;
+					case "IEPC_E":
 					case "IEPC": return VectoSimulationJobType.IEPC_E;
+					case "IEPC_S":
 					case "IEPC-S": return VectoSimulationJobType.IEPC_S;
 					case "IHPC": return VectoSimulationJobType.IHPC;
 					default: throw new VectoException("Invalid parameter value {0}", Body.GetEx<String>("PowertrainConfiguration"));
diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringModeVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringModeVectoRunDataFactory.cs
index e3ac366d41..da4e2d0104 100644
--- a/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringModeVectoRunDataFactory.cs
+++ b/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringModeVectoRunDataFactory.cs
@@ -439,7 +439,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
 			var retarderData = axleGearRequired
 				? dao.CreateRetarderData(vehicle.Components.RetarderInputData, powertrainPosition)
 				: new RetarderData() {
-					Type = RetarderType.LossesIncludedInTransmission
+					Type = RetarderType.LossesIncludedInTransmission,
+					Ratio = 1.0
 				};
 
 			var gearshiftParams = dao.CreateGearshiftData(GearboxType.APTN,
diff --git a/VectoCore/VectoCore/OutputData/FileIO/JSONFileWriter.cs b/VectoCore/VectoCore/OutputData/FileIO/JSONFileWriter.cs
index bc54aeafc0..0176438a7d 100644
--- a/VectoCore/VectoCore/OutputData/FileIO/JSONFileWriter.cs
+++ b/VectoCore/VectoCore/OutputData/FileIO/JSONFileWriter.cs
@@ -23,6 +23,7 @@ public class JSONFileWriter : IOutputFileWriter
 	public const int VehicleFormatVersion = 8;
 	public const int BusVehicleFormatVersion = 9;
 	public const int HEV_BEVVehicleFormatVersion = 10;
+	public const int IEPCVehicleFormatVersion = 11;
 
 	#endregion
 
@@ -34,6 +35,8 @@ public class JSONFileWriter : IOutputFileWriter
 	private const int BEVVectoJobFormatVersion = 9;
 	private const int SHEVVectoJobFormatVersion = 11;
 
+	private const int IEPCVectoJobFormatVersion = 12;
+
 	#endregion
 
 
@@ -391,12 +394,16 @@ public class JSONFileWriter : IOutputFileWriter
 				break;
 			case VectoSimulationJobType.EngineOnlySimulation:
 				break;
+			case VectoSimulationJobType.IEPC_E:
+			case VectoSimulationJobType.IEPC_S:
+				SaveIEPCVehicle(vehicle, airdrag, retarder, pto, angledrive, filename, DeclMode);
+				break;
 			default:
 				throw new ArgumentOutOfRangeException();
 		}
 	}
 
-
+	
 	public void SaveConventionalVehicle(
 		IVehicleEngineeringInputData vehicle, IAirdragEngineeringInputData airdrag, IRetarderInputData retarder,
 		IPTOTransmissionInputData pto, IAngledriveInputData angledrive, string filename, bool DeclMode)
@@ -607,6 +614,45 @@ public class JSONFileWriter : IOutputFileWriter
 		WriteFile(header, body, filename);
 	}
 
+	private void SaveIEPCVehicle(IVehicleEngineeringInputData vehicle, IAirdragEngineeringInputData airdrag,
+		IRetarderInputData retarder, IPTOTransmissionInputData pto, IAngledriveInputData angledrive, string filename,
+		bool DeclMode)
+	{
+		var basePath = Path.GetDirectoryName(filename);
+		var header = GetHeader(IEPCVehicleFormatVersion);
+		var retarderOut = GetRetarderOut(retarder, basePath);
+
+		var ptoOut = GetPTOOut(pto, basePath);
+
+		//var angledriveOut = GetAngledriveOut(angledrive, basePath);
+
+		//var torqueLimits = GetTorqueLimits(vehicle);
+
+		var electricMotorsOut = vehicle.VehicleType == VectoSimulationJobType.IEPC_S ? GetElectricMotors(vehicle, basePath) : null;
+		var battery = GetBattery(vehicle, basePath);
+		var body = GetVehicle(vehicle, airdrag, DeclMode, basePath);
+		body.Add("InitialSoC", vehicle.InitialSOC * 100);
+		body.Add("PowertrainConfiguration", vehicle.VehicleType.ToString());
+		body.Add("IEPC", vehicle.Components.IEPCEngineeringInputData.DataSource.SourceFile);
+		if (electricMotorsOut != null) {
+			body.Add("ElectricMotors", electricMotorsOut);
+		}
+
+		body.Add("Batteries", battery);
+
+		//body.Add("IdlingSpeed", vehicle.EngineIdleSpeed.AsRPM);
+		if (retarder.Type != RetarderType.None)
+			body.Add("Retarder", retarderOut);
+		//body.Add("Angledrive", angledriveOut);
+		body.Add("PTO", ptoOut);
+		//body.Add("TorqueLimits", torqueLimits);
+
+		if ((vehicle.TankSystem.HasValue))
+			body["TankSystem"] = vehicle.TankSystem.Value.ToString();
+
+		WriteFile(header, body, filename);
+	}
+
 	private Dictionary<string, object>[] GetBattery(IVehicleEngineeringInputData vehicle, string basePath) =>
 		vehicle.Components.ElectricStorage.ElectricStorageElements.Select(
 			entry => new Dictionary<string, object> {
@@ -658,6 +704,9 @@ public class JSONFileWriter : IOutputFileWriter
 			case VectoSimulationJobType.BatteryElectricVehicle:
 				SaveBatteryElectricJob(input, filename, DeclMode);
 				break;
+			case VectoSimulationJobType.IEPC_E:
+				SaveIEPCEJob(input, filename, DeclMode);
+				break;
 			case VectoSimulationJobType.EngineOnlySimulation:
 				SaveEngineOnlyJob(input, filename, DeclMode);
 				break;
@@ -666,6 +715,8 @@ public class JSONFileWriter : IOutputFileWriter
 		}
 	}
 
+	
+
 	private void SaveParallelHybridJob(IEngineeringInputDataProvider input, string filename, bool declMode)
 	{
 		var basePath = Path.GetDirectoryName(filename);
@@ -787,7 +838,7 @@ public class JSONFileWriter : IOutputFileWriter
 
 		// Cycles
 		if (!job.SavedInDeclarationMode)
-			body.Add("Cycles", job.Cycles.Select(x => GetRelativePath(x.CycleData.Source, Path.GetDirectoryName(filename))).ToArray());
+			body.Add("Cycles", GetCycles(job, filename));
 
 		WriteFile(header, body, filename);
 	}
@@ -921,13 +972,11 @@ public class JSONFileWriter : IOutputFileWriter
 		// Cycles
 		if (!job.SavedInDeclarationMode)
 			body.Add(
-				"Cycles", job.Cycles.Select(x => GetRelativePath(x.CycleData.Source, Path.GetDirectoryName(filename))).ToArray());
+				"Cycles", GetCycles(job, filename));
 
 		WriteFile(header, body, filename);
 	}
 
-
-
 	public void SaveBatteryElectricJob(IEngineeringInputDataProvider input, string filename, bool DeclMode)
 	{
 		var basePath = Path.GetDirectoryName(filename);
@@ -1064,11 +1113,112 @@ public class JSONFileWriter : IOutputFileWriter
 
 		// Cycles
 		if (!job.SavedInDeclarationMode)
-			body.Add("Cycles", job.Cycles.Select(x => GetRelativePath(x.CycleData.Source, Path.GetDirectoryName(filename))).ToArray());
+			body.Add("Cycles", GetCycles(job, filename));
+
+		WriteFile(header, body, filename);
+	}
+
+	private void SaveIEPCEJob(IEngineeringInputDataProvider input, string filename, bool declMode)
+	{
+		var basePath = Path.GetDirectoryName(filename);
+
+		// Header
+		var header = GetHeader(IEPCVectoJobFormatVersion);
+
+		// Body
+		var body = new Dictionary<string, object>();
+
+		// SavedInDeclMode = Cfg.DeclMode
+
+		var job = input.JobInputData;
+
+		body.Add("SavedInDeclMode", job.SavedInDeclarationMode);
+		//body.Add("EngineOnlyMode", job.JobType);
+
+		// Main Files
+		body.Add("VehicleFile", GetRelativePath(job.Vehicle.DataSource.SourceFile, basePath));
+		if (input.JobInputData.Vehicle.Components.GearboxInputData != null) {
+			body.Add("GearboxFile",
+				GetRelativePath(input.JobInputData.Vehicle.Components.GearboxInputData.DataSource.SourceFile, basePath));
+			if (input.DriverInputData.GearshiftInputData != null) {
+				body.Add("TCU", GetRelativePath(input.DriverInputData.GearshiftInputData.Source, basePath));
+			}
+		}
+		body.Add("Padd_electric", input.JobInputData.Vehicle.Components.AuxiliaryInputData.Auxiliaries.ElectricPowerDemand.Value());
+
+		if (!job.SavedInDeclarationMode && job.Vehicle is IVehicleEngineeringInputData engVehicle) {
+			var aux = engVehicle.Components.AuxiliaryInputData;
+			if (aux.BusAuxiliariesData != null) {
+				body.Add("BusAux",
+					GetRelativePath(job.Vehicle.Components.AuxiliaryInputData.BusAuxiliariesData.DataSource.SourceFile,
+						basePath));
+			}
+		}
+		
+		var driver = input.DriverInputData;
+
+		if (!job.SavedInDeclarationMode) {
+			body.Add("VACC", GetRelativePath(driver.AccelerationCurve.AccelerationCurve.Source, basePath));
+			body.Add("EngineStopStartAtVehicleStopThreshold", driver.EngineStopStartData.ActivationDelay.Value());
+			body.Add("EngineStopStartMaxOffTimespan", driver.EngineStopStartData.MaxEngineOffTimespan.Value());
+			body.Add("EngineStopStartUtilityFactor", driver.EngineStopStartData.UtilityFactorStandstill);
+			body.Add("EngineStopStartUtilityFactorDriving", driver.EngineStopStartData.UtilityFactorDriving);
+
+			body.Add("EcoRollMinSpeed", driver.EcoRollData.MinSpeed.AsKmph);
+			body.Add("EcoRollActivationDelay", driver.EcoRollData.ActivationDelay.Value());
+			body.Add("EcoRollUnderspeedThreshold", driver.EcoRollData.UnderspeedThreshold.AsKmph);
+
+			body.Add("EcoRollMaxAcceleration", driver.EcoRollData.AccelerationUpperLimit.Value());
+			body.Add("PCCEnableSpeed", driver.PCCData.PCCEnabledSpeed.AsKmph);
+			body.Add("PCCMinSpeed", driver.PCCData.MinSpeed.AsKmph);
+			body.Add("PCCUnderspeed", driver.PCCData.Underspeed.AsKmph);
+			body.Add("PCCOverSpeed", driver.PCCData.OverspeedUseCase3.AsKmph);
+			body.Add("PCCPreviewDistanceUC1", driver.PCCData.PreviewDistanceUseCase1.Value());
+			body.Add("PCCPreviewDistanceUC2", driver.PCCData.PreviewDistanceUseCase2.Value());
+
+		}
+
+		if (!job.SavedInDeclarationMode) {
+			var dfTargetSpeed = driver.Lookahead.CoastingDecisionFactorTargetSpeedLookup != null &&
+								File.Exists(driver.Lookahead.CoastingDecisionFactorTargetSpeedLookup.Source)
+				? GetRelativePath(driver.Lookahead.CoastingDecisionFactorTargetSpeedLookup.Source, basePath)
+				: "";
+			var dfVelocityDrop = driver.Lookahead.CoastingDecisionFactorVelocityDropLookup != null &&
+								File.Exists(driver.Lookahead.CoastingDecisionFactorVelocityDropLookup.Source)
+				? GetRelativePath(driver.Lookahead.CoastingDecisionFactorVelocityDropLookup.Source, basePath)
+				: "";
+			body.Add("LAC", new Dictionary<string, object> {
+				{ "Enabled", driver.Lookahead.Enabled },
+				{ "PreviewDistanceFactor", driver.Lookahead.LookaheadDistanceFactor },
+				{ "DF_offset", driver.Lookahead.CoastingDecisionFactorOffset },
+				{ "DF_scaling", driver.Lookahead.CoastingDecisionFactorScaling },
+				{ "DF_targetSpeedLookup", dfTargetSpeed },
+				{ "Df_velocityDropLookup", dfVelocityDrop },
+				{ "MinSpeed", driver.Lookahead.MinSpeed.AsKmph }
+			});
+		}
+
+		// Overspeed / EcoRoll
+		var overspeedDic = new Dictionary<string, object> {
+			{ "Mode", driver.OverSpeedData.Enabled ? "Overspeed" : "Off" },
+			{ "MinSpeed", driver.OverSpeedData.MinSpeed.AsKmph },
+			{ "OverSpeed", driver.OverSpeedData.OverSpeed.AsKmph }
+		};
+
+		body.Add("OverSpeedEcoRoll", overspeedDic);
+
+		// Cycles
+		if (!job.SavedInDeclarationMode)
+			body.Add("Cycles", GetCycles(job, filename));
 
 		WriteFile(header, body, filename);
 	}
 
+	private string[] GetCycles(IEngineeringJobInputData job, string filename)
+	{
+		return job.Cycles.Select(x => x.CycleData.SourceType == DataSourceType.Embedded ? x.Name : GetRelativePath(x.CycleData.Source, Path.GetDirectoryName(filename))).ToArray();
+	}
+
 	public void SaveEngineOnlyJob(IEngineeringInputDataProvider input, string filename, bool DeclMode)
 	{
 		var basePath = Path.GetDirectoryName(filename);
-- 
GitLab