diff --git a/VECTO/GUI/ElectricMotorForm.Designer.vb b/VECTO/GUI/ElectricMotorForm.Designer.vb
index a978334f88ba8d214aa0cdd166abfb25240ad6ba..787eda5c704162d2e97bb52640985ff27f3fec1f 100644
--- a/VECTO/GUI/ElectricMotorForm.Designer.vb
+++ b/VECTO/GUI/ElectricMotorForm.Designer.vb
@@ -60,10 +60,6 @@ Partial Class ElectricMotorForm
         Me.OpenWithToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
         Me.ShowInFolderToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
         Me.pnInertia = New System.Windows.Forms.Panel()
-        Me.tbDragTorqueHi = New System.Windows.Forms.TextBox()
-        Me.lblDragTorqueHi = New System.Windows.Forms.Label()
-        Me.btnBrowseDragCurveHi = New System.Windows.Forms.Button()
-        Me.btnDragCurveOpenHi = New System.Windows.Forms.Button()
         Me.btnEmMapOpenHi = New System.Windows.Forms.Button()
         Me.btnBrowseEmMapHi = New System.Windows.Forms.Button()
         Me.lblPowerMapHi = New System.Windows.Forms.Label()
@@ -163,20 +159,20 @@ Partial Class ElectricMotorForm
         '
         Me.ButCancel.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right),System.Windows.Forms.AnchorStyles)
         Me.ButCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel
-        Me.ButCancel.Location = New System.Drawing.Point(811, 574)
+        Me.ButCancel.Location = New System.Drawing.Point(839, 567)
         Me.ButCancel.Name = "ButCancel"
         Me.ButCancel.Size = New System.Drawing.Size(75, 23)
-        Me.ButCancel.TabIndex = 11
+        Me.ButCancel.TabIndex = 99
         Me.ButCancel.Text = "Cancel"
         Me.ButCancel.UseVisualStyleBackColor = true
         '
         'ButOK
         '
         Me.ButOK.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right),System.Windows.Forms.AnchorStyles)
-        Me.ButOK.Location = New System.Drawing.Point(730, 574)
+        Me.ButOK.Location = New System.Drawing.Point(758, 567)
         Me.ButOK.Name = "ButOK"
         Me.ButOK.Size = New System.Drawing.Size(75, 23)
-        Me.ButOK.TabIndex = 10
+        Me.ButOK.TabIndex = 98
         Me.ButOK.Text = "Save"
         Me.ButOK.UseVisualStyleBackColor = true
         '
@@ -188,7 +184,7 @@ Partial Class ElectricMotorForm
         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(898, 31)
+        Me.ToolStrip1.Size = New System.Drawing.Size(926, 31)
         Me.ToolStrip1.TabIndex = 30
         Me.ToolStrip1.Text = "ToolStrip1"
         '
@@ -265,9 +261,9 @@ Partial Class ElectricMotorForm
         '
         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, 599)
+        Me.StatusStrip1.Location = New System.Drawing.Point(0, 592)
         Me.StatusStrip1.Name = "StatusStrip1"
-        Me.StatusStrip1.Size = New System.Drawing.Size(898, 22)
+        Me.StatusStrip1.Size = New System.Drawing.Size(926, 22)
         Me.StatusStrip1.SizingGrip = false
         Me.StatusStrip1.TabIndex = 37
         Me.StatusStrip1.Text = "StatusStrip1"
@@ -333,44 +329,10 @@ Partial Class ElectricMotorForm
         Me.pnInertia.Size = New System.Drawing.Size(221, 30)
         Me.pnInertia.TabIndex = 1
         '
-        'tbDragTorqueHi
-        '
-        Me.tbDragTorqueHi.Location = New System.Drawing.Point(6, 103)
-        Me.tbDragTorqueHi.Name = "tbDragTorqueHi"
-        Me.tbDragTorqueHi.Size = New System.Drawing.Size(406, 20)
-        Me.tbDragTorqueHi.TabIndex = 4
-        '
-        'lblDragTorqueHi
-        '
-        Me.lblDragTorqueHi.AutoSize = true
-        Me.lblDragTorqueHi.Location = New System.Drawing.Point(6, 87)
-        Me.lblDragTorqueHi.Name = "lblDragTorqueHi"
-        Me.lblDragTorqueHi.Size = New System.Drawing.Size(98, 13)
-        Me.lblDragTorqueHi.TabIndex = 38
-        Me.lblDragTorqueHi.Text = "Drag Torque Curve"
-        '
-        'btnBrowseDragCurveHi
-        '
-        Me.btnBrowseDragCurveHi.Image = Global.TUGraz.VECTO.My.Resources.Resources.Open_icon
-        Me.btnBrowseDragCurveHi.Location = New System.Drawing.Point(420, 100)
-        Me.btnBrowseDragCurveHi.Name = "btnBrowseDragCurveHi"
-        Me.btnBrowseDragCurveHi.Size = New System.Drawing.Size(24, 24)
-        Me.btnBrowseDragCurveHi.TabIndex = 5
-        Me.btnBrowseDragCurveHi.UseVisualStyleBackColor = true
-        '
-        'btnDragCurveOpenHi
-        '
-        Me.btnDragCurveOpenHi.Image = Global.TUGraz.VECTO.My.Resources.Resources.application_export_icon_small
-        Me.btnDragCurveOpenHi.Location = New System.Drawing.Point(443, 100)
-        Me.btnDragCurveOpenHi.Name = "btnDragCurveOpenHi"
-        Me.btnDragCurveOpenHi.Size = New System.Drawing.Size(24, 24)
-        Me.btnDragCurveOpenHi.TabIndex = 6
-        Me.btnDragCurveOpenHi.UseVisualStyleBackColor = true
-        '
         'btnEmMapOpenHi
         '
         Me.btnEmMapOpenHi.Image = Global.TUGraz.VECTO.My.Resources.Resources.application_export_icon_small
-        Me.btnEmMapOpenHi.Location = New System.Drawing.Point(443, 141)
+        Me.btnEmMapOpenHi.Location = New System.Drawing.Point(443, 102)
         Me.btnEmMapOpenHi.Name = "btnEmMapOpenHi"
         Me.btnEmMapOpenHi.Size = New System.Drawing.Size(24, 24)
         Me.btnEmMapOpenHi.TabIndex = 9
@@ -379,7 +341,7 @@ Partial Class ElectricMotorForm
         'btnBrowseEmMapHi
         '
         Me.btnBrowseEmMapHi.Image = Global.TUGraz.VECTO.My.Resources.Resources.Open_icon
-        Me.btnBrowseEmMapHi.Location = New System.Drawing.Point(420, 141)
+        Me.btnBrowseEmMapHi.Location = New System.Drawing.Point(420, 102)
         Me.btnBrowseEmMapHi.Name = "btnBrowseEmMapHi"
         Me.btnBrowseEmMapHi.Size = New System.Drawing.Size(24, 24)
         Me.btnBrowseEmMapHi.TabIndex = 8
@@ -388,7 +350,7 @@ Partial Class ElectricMotorForm
         'lblPowerMapHi
         '
         Me.lblPowerMapHi.AutoSize = true
-        Me.lblPowerMapHi.Location = New System.Drawing.Point(6, 128)
+        Me.lblPowerMapHi.Location = New System.Drawing.Point(6, 89)
         Me.lblPowerMapHi.Name = "lblPowerMapHi"
         Me.lblPowerMapHi.Size = New System.Drawing.Size(163, 13)
         Me.lblPowerMapHi.TabIndex = 43
@@ -396,7 +358,7 @@ Partial Class ElectricMotorForm
         '
         'tbMapHi
         '
-        Me.tbMapHi.Location = New System.Drawing.Point(6, 144)
+        Me.tbMapHi.Location = New System.Drawing.Point(6, 105)
         Me.tbMapHi.Name = "tbMapHi"
         Me.tbMapHi.Size = New System.Drawing.Size(406, 20)
         Me.tbMapHi.TabIndex = 7
@@ -440,7 +402,7 @@ Partial Class ElectricMotorForm
         Me.lblTitle.AutoSize = true
         Me.lblTitle.BackColor = System.Drawing.Color.White
         Me.lblTitle.Font = New System.Drawing.Font("Microsoft Sans Serif", 18!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
-        Me.lblTitle.Location = New System.Drawing.Point(84, 34)
+        Me.lblTitle.Location = New System.Drawing.Point(115, 34)
         Me.lblTitle.Name = "lblTitle"
         Me.lblTitle.Size = New System.Drawing.Size(190, 29)
         Me.lblTitle.TabIndex = 48
@@ -672,10 +634,6 @@ Partial Class ElectricMotorForm
         Me.gbVoltageLevelHi.Controls.Add(Me.lblVoltageHiUnit)
         Me.gbVoltageLevelHi.Controls.Add(Me.tbVoltageHi)
         Me.gbVoltageLevelHi.Controls.Add(Me.lblMaxTorqueHi)
-        Me.gbVoltageLevelHi.Controls.Add(Me.tbDragTorqueHi)
-        Me.gbVoltageLevelHi.Controls.Add(Me.lblDragTorqueHi)
-        Me.gbVoltageLevelHi.Controls.Add(Me.btnBrowseDragCurveHi)
-        Me.gbVoltageLevelHi.Controls.Add(Me.btnDragCurveOpenHi)
         Me.gbVoltageLevelHi.Controls.Add(Me.tbMapHi)
         Me.gbVoltageLevelHi.Controls.Add(Me.lblPowerMapHi)
         Me.gbVoltageLevelHi.Controls.Add(Me.btnBrowseEmMapHi)
@@ -683,9 +641,9 @@ Partial Class ElectricMotorForm
         Me.gbVoltageLevelHi.Controls.Add(Me.tbMaxTorqueHi)
         Me.gbVoltageLevelHi.Controls.Add(Me.btnMaxTorqueCurveOpenHi)
         Me.gbVoltageLevelHi.Controls.Add(Me.btnBrowseMaxTorqueHi)
-        Me.gbVoltageLevelHi.Location = New System.Drawing.Point(12, 418)
+        Me.gbVoltageLevelHi.Location = New System.Drawing.Point(12, 382)
         Me.gbVoltageLevelHi.Name = "gbVoltageLevelHi"
-        Me.gbVoltageLevelHi.Size = New System.Drawing.Size(482, 170)
+        Me.gbVoltageLevelHi.Size = New System.Drawing.Size(482, 136)
         Me.gbVoltageLevelHi.TabIndex = 9
         Me.gbVoltageLevelHi.TabStop = false
         Me.gbVoltageLevelHi.Text = "Voltage Level High"
@@ -721,10 +679,6 @@ Partial Class ElectricMotorForm
         Me.gbVoltageLevelLow.Controls.Add(Me.lblVoltageLowUnit)
         Me.gbVoltageLevelLow.Controls.Add(Me.tbVoltageLow)
         Me.gbVoltageLevelLow.Controls.Add(Me.lblMaxTorqueLow)
-        Me.gbVoltageLevelLow.Controls.Add(Me.tbDragTorqueLow)
-        Me.gbVoltageLevelLow.Controls.Add(Me.lblDragTorqueLow)
-        Me.gbVoltageLevelLow.Controls.Add(Me.btnBrowseDragCurveLow)
-        Me.gbVoltageLevelLow.Controls.Add(Me.btnDragCurveOpenLow)
         Me.gbVoltageLevelLow.Controls.Add(Me.tbMapLow)
         Me.gbVoltageLevelLow.Controls.Add(Me.lblPowerMapLow)
         Me.gbVoltageLevelLow.Controls.Add(Me.btnBrowseEmMapLow)
@@ -734,7 +688,7 @@ Partial Class ElectricMotorForm
         Me.gbVoltageLevelLow.Controls.Add(Me.btnBrowseMaxTorqueLow)
         Me.gbVoltageLevelLow.Location = New System.Drawing.Point(12, 242)
         Me.gbVoltageLevelLow.Name = "gbVoltageLevelLow"
-        Me.gbVoltageLevelLow.Size = New System.Drawing.Size(482, 170)
+        Me.gbVoltageLevelLow.Size = New System.Drawing.Size(482, 134)
         Me.gbVoltageLevelLow.TabIndex = 8
         Me.gbVoltageLevelLow.TabStop = false
         Me.gbVoltageLevelLow.Text = "Voltage Level Low"
@@ -775,15 +729,15 @@ Partial Class ElectricMotorForm
         '
         'tbDragTorqueLow
         '
-        Me.tbDragTorqueLow.Location = New System.Drawing.Point(6, 103)
+        Me.tbDragTorqueLow.Location = New System.Drawing.Point(19, 543)
         Me.tbDragTorqueLow.Name = "tbDragTorqueLow"
         Me.tbDragTorqueLow.Size = New System.Drawing.Size(406, 20)
-        Me.tbDragTorqueLow.TabIndex = 4
+        Me.tbDragTorqueLow.TabIndex = 10
         '
         'lblDragTorqueLow
         '
         Me.lblDragTorqueLow.AutoSize = true
-        Me.lblDragTorqueLow.Location = New System.Drawing.Point(6, 87)
+        Me.lblDragTorqueLow.Location = New System.Drawing.Point(19, 527)
         Me.lblDragTorqueLow.Name = "lblDragTorqueLow"
         Me.lblDragTorqueLow.Size = New System.Drawing.Size(98, 13)
         Me.lblDragTorqueLow.TabIndex = 38
@@ -792,24 +746,24 @@ Partial Class ElectricMotorForm
         'btnBrowseDragCurveLow
         '
         Me.btnBrowseDragCurveLow.Image = Global.TUGraz.VECTO.My.Resources.Resources.Open_icon
-        Me.btnBrowseDragCurveLow.Location = New System.Drawing.Point(420, 100)
+        Me.btnBrowseDragCurveLow.Location = New System.Drawing.Point(433, 540)
         Me.btnBrowseDragCurveLow.Name = "btnBrowseDragCurveLow"
         Me.btnBrowseDragCurveLow.Size = New System.Drawing.Size(24, 24)
-        Me.btnBrowseDragCurveLow.TabIndex = 5
+        Me.btnBrowseDragCurveLow.TabIndex = 11
         Me.btnBrowseDragCurveLow.UseVisualStyleBackColor = true
         '
         'btnDragCurveOpenLow
         '
         Me.btnDragCurveOpenLow.Image = Global.TUGraz.VECTO.My.Resources.Resources.application_export_icon_small
-        Me.btnDragCurveOpenLow.Location = New System.Drawing.Point(443, 100)
+        Me.btnDragCurveOpenLow.Location = New System.Drawing.Point(456, 540)
         Me.btnDragCurveOpenLow.Name = "btnDragCurveOpenLow"
         Me.btnDragCurveOpenLow.Size = New System.Drawing.Size(24, 24)
-        Me.btnDragCurveOpenLow.TabIndex = 6
+        Me.btnDragCurveOpenLow.TabIndex = 12
         Me.btnDragCurveOpenLow.UseVisualStyleBackColor = true
         '
         'tbMapLow
         '
-        Me.tbMapLow.Location = New System.Drawing.Point(6, 144)
+        Me.tbMapLow.Location = New System.Drawing.Point(6, 104)
         Me.tbMapLow.Name = "tbMapLow"
         Me.tbMapLow.Size = New System.Drawing.Size(406, 20)
         Me.tbMapLow.TabIndex = 7
@@ -817,7 +771,7 @@ Partial Class ElectricMotorForm
         'lblPowerMapLow
         '
         Me.lblPowerMapLow.AutoSize = true
-        Me.lblPowerMapLow.Location = New System.Drawing.Point(6, 128)
+        Me.lblPowerMapLow.Location = New System.Drawing.Point(6, 88)
         Me.lblPowerMapLow.Name = "lblPowerMapLow"
         Me.lblPowerMapLow.Size = New System.Drawing.Size(163, 13)
         Me.lblPowerMapLow.TabIndex = 43
@@ -826,7 +780,7 @@ Partial Class ElectricMotorForm
         'btnBrowseEmMapLow
         '
         Me.btnBrowseEmMapLow.Image = Global.TUGraz.VECTO.My.Resources.Resources.Open_icon
-        Me.btnBrowseEmMapLow.Location = New System.Drawing.Point(420, 141)
+        Me.btnBrowseEmMapLow.Location = New System.Drawing.Point(420, 101)
         Me.btnBrowseEmMapLow.Name = "btnBrowseEmMapLow"
         Me.btnBrowseEmMapLow.Size = New System.Drawing.Size(24, 24)
         Me.btnBrowseEmMapLow.TabIndex = 8
@@ -835,7 +789,7 @@ Partial Class ElectricMotorForm
         'btnEmMapOpenLow
         '
         Me.btnEmMapOpenLow.Image = Global.TUGraz.VECTO.My.Resources.Resources.application_export_icon_small
-        Me.btnEmMapOpenLow.Location = New System.Drawing.Point(443, 141)
+        Me.btnEmMapOpenLow.Location = New System.Drawing.Point(443, 101)
         Me.btnEmMapOpenLow.Name = "btnEmMapOpenLow"
         Me.btnEmMapOpenLow.Size = New System.Drawing.Size(24, 24)
         Me.btnEmMapOpenLow.TabIndex = 9
@@ -872,12 +826,16 @@ Partial Class ElectricMotorForm
         Me.AutoScaleDimensions = New System.Drawing.SizeF(6!, 13!)
         Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
         Me.CancelButton = Me.ButCancel
-        Me.ClientSize = New System.Drawing.Size(898, 621)
+        Me.ClientSize = New System.Drawing.Size(926, 614)
         Me.Controls.Add(Me.gbVoltageLevelLow)
         Me.Controls.Add(Me.gbVoltageLevelHi)
         Me.Controls.Add(Me.Panel6)
+        Me.Controls.Add(Me.tbDragTorqueLow)
+        Me.Controls.Add(Me.lblDragTorqueLow)
         Me.Controls.Add(Me.pnOverloadTq)
+        Me.Controls.Add(Me.btnBrowseDragCurveLow)
         Me.Controls.Add(Me.Panel4)
+        Me.Controls.Add(Me.btnDragCurveOpenLow)
         Me.Controls.Add(Me.Panel3)
         Me.Controls.Add(Me.Panel2)
         Me.Controls.Add(Me.Panel1)
@@ -950,10 +908,6 @@ End Sub
     Friend WithEvents OpenWithToolStripMenuItem As ToolStripMenuItem
     Friend WithEvents ShowInFolderToolStripMenuItem As ToolStripMenuItem
     Friend WithEvents pnInertia As Panel
-    Friend WithEvents tbDragTorqueHi As TextBox
-    Friend WithEvents lblDragTorqueHi As Label
-    Friend WithEvents btnBrowseDragCurveHi As Button
-    Friend WithEvents btnDragCurveOpenHi As Button
     Friend WithEvents btnEmMapOpenHi As Button
     Friend WithEvents btnBrowseEmMapHi As Button
     Friend WithEvents lblPowerMapHi As Label
diff --git a/VECTO/GUI/ElectricMotorForm.vb b/VECTO/GUI/ElectricMotorForm.vb
index e2e982126fee3127c60b74b036541b2a25715bdc..b1b93a450f00c8f1ec7c889dbe0afca779676ef4 100644
--- a/VECTO/GUI/ElectricMotorForm.vb
+++ b/VECTO/GUI/ElectricMotorForm.vb
@@ -133,7 +133,6 @@ Public Class ElectricMotorForm
         tbMakeModel.Text = ""
         tbInertia.Text = ""
         tbMapHi.Text = ""
-        tbDragTorqueHi.Text = ""
         tbMaxTorqueHi.Text = ""
 
         DeclInit()
@@ -180,16 +179,17 @@ Public Class ElectricMotorForm
         tbRatedSpeed.Text = engine.ContinuousTorqueSpeed.AsRPM.ToGUIFormat()
         tbOverloadRecoveryFactor.Text = engine.OverloadRecoveryFactor.ToGUIFormat()
 
+        tbDragTorqueLow.Text = GetRelativePath(engine.DragCurve.Source, basePath)
+
         Dim voltageLevelHigh As IElectricMotorVoltageLevel = engine.VoltageLevels.MaxBy(function(level) level.VoltageLevel.Value())
 
-        tbDragTorqueHi.Text = GetRelativePath(voltageLevelHigh.DragCurve.Source, basePath)
         tbMaxTorqueHi.Text = GetRelativePath(voltageLevelHigh.FullLoadCurve.Source, basePath)
         tbMapHi.Text = GetRelativePath(voltageLevelHigh.EfficiencyMap.Source, basePath)
         tbVoltageHi.Text = voltageLevelHigh.VoltageLevel.Value().ToGUIFormat()
 
         Dim voltageLevelLow As IElectricMotorVoltageLevel = engine.VoltageLevels.MinBy(function(level) level.VoltageLevel.Value())
 
-        tbDragTorqueLow.Text = GetRelativePath(voltageLevelLow.DragCurve.Source, basePath)
+        
         tbMaxTorqueLow.Text = GetRelativePath(voltageLevelLow.FullLoadCurve.Source, basePath)
         tbMapLow.Text = GetRelativePath(voltageLevelLow.EfficiencyMap.Source, basePath)
         tbVoltageLow.Text = voltageLevelLow.VoltageLevel.Value().ToGUIFormat()
@@ -236,12 +236,11 @@ Public Class ElectricMotorForm
         em.OverloadRecoveryFactor = tbOverloadRecoveryFactor.Text.ToDouble(0)
 
         em.PathMaxTorqueLow = tbMaxTorqueLow.Text
-        em.PathDragLow = tbDragTorqueLow.Text
+        em.PathDrag = tbDragTorqueLow.Text
         em.PathMapLow = tbMapLow.Text
         em.VoltageLevelLow = tbVoltageLow.Text.ToDouble(0)
 
         em.PathMaxTorqueHi = tbMaxTorqueHi.Text
-        em.PathDragHi = tbDragTorqueHi.Text
         em.PathMapHi = tbMapHi.Text
         em.VoltageLevelHigh = tbVoltageHi.Text.ToDouble(0)
 
@@ -304,7 +303,7 @@ Public Class ElectricMotorForm
     End Sub
 
     Private Sub DataChangedUpdatePic(sender As Object, e As EventArgs) _
-        Handles tbDragTorqueHi.TextChanged, tbMaxTorqueLow.TextChanged, tbMaxTorqueHi.TextChanged, tbDragTorqueLow.TextChanged
+        Handles  tbMaxTorqueLow.TextChanged, tbMaxTorqueHi.TextChanged, tbDragTorqueLow.TextChanged
         UpdatePic()
         Change()
     End Sub
@@ -335,7 +334,7 @@ Public Class ElectricMotorForm
 
         Try
             Dim fldFile As String =
-                    If(Not String.IsNullOrWhiteSpace(_emFile), Path.Combine(Path.GetDirectoryName(_emFile), tbMaxTorqueHi.Text), tbDragTorqueHi.Text)
+                    If(Not String.IsNullOrWhiteSpace(_emFile), Path.Combine(Path.GetDirectoryName(_emFile), tbMaxTorqueHi.Text), tbDragTorqueLow.Text)
             If File.Exists(fldFile) Then _
                 fullLoadCurve = ElectricFullLoadCurveReader.Create(VectoCSVFile.Read(fldFile), 1)
         Catch ex As Exception
@@ -350,7 +349,7 @@ Public Class ElectricMotorForm
 
         Try
             Dim dragFile As String =
-                    If(Not String.IsNullOrWhiteSpace(_emFile), Path.Combine(Path.GetDirectoryName(_emFile), tbDragTorqueHi.Text), tbMapHi.Text)
+                    If(Not String.IsNullOrWhiteSpace(_emFile), Path.Combine(Path.GetDirectoryName(_emFile), tbDragTorqueLow.Text), tbMapHi.Text)
             If File.Exists(dragFile) Then dragCurve = ElectricMotorDragCurveReader.Create(VectoCSVFile.Read(dragFile), 1)
         Catch ex As Exception
         End Try
@@ -371,7 +370,7 @@ Public Class ElectricMotorForm
             series.ChartType = SeriesChartType.FastLine
             series.BorderWidth = 2
             series.Color = Color.DarkBlue
-            series.Name = "Max drive torque (" & tbDragTorqueHi.Text & ")"
+            series.Name = "Max drive torque (" & tbDragTorqueLow.Text & ")"
             chart.Series.Add(series)
 
             series = New Series
@@ -495,9 +494,6 @@ Public Class ElectricMotorForm
         CreateNewFile(tbMaxTorqueHi)
     End Sub
 
-    Private Sub btnDragCurveOpen_Click(sender As Object, e As EventArgs) Handles btnDragCurveOpenHi.Click
-        CreateNewFile(tbDragTorqueHi)
-    End Sub
 
     Private Sub btnEmMapOpen_Click(sender As Object, e As EventArgs) Handles btnEmMapOpenHi.Click
         CreateNewFile(tbMapHi)
@@ -519,11 +515,7 @@ Public Class ElectricMotorForm
         SelectFile(ElectricMachineMaxTorqueFileBrowser, tbMaxTorqueHi)
     End Sub
 
-    Private Sub btnBrowseDragCurve_Click(sender As Object, e As EventArgs) Handles btnBrowseDragCurveHi.Click
-        SelectFile(ElectricMachineDragTorqueFileBrowser, tbDragTorqueHi)
-    End Sub
-
-    Private Sub btnBrowseEmMap_Click(sender As Object, e As EventArgs) Handles btnBrowseEmMapHi.Click
+   Private Sub btnBrowseEmMap_Click(sender As Object, e As EventArgs) Handles btnBrowseEmMapHi.Click
         SelectFile(ElectricMachineEfficiencyMapFileBrowser, tbMapHi)
     End Sub
 
diff --git a/VECTO/GUI/MainForm.Designer.vb b/VECTO/GUI/MainForm.Designer.vb
index 12282beb5883bffc81a8fb7b04d211f9e5c6aa1f..883e66e0d823092a94c6834335e9c47b944d5c6d 100644
--- a/VECTO/GUI/MainForm.Designer.vb
+++ b/VECTO/GUI/MainForm.Designer.vb
@@ -443,9 +443,9 @@ Partial Class MainForm
         Me.Label2.AutoSize = true
         Me.Label2.Location = New System.Drawing.Point(7, 19)
         Me.Label2.Name = "Label2"
-        Me.Label2.Size = New System.Drawing.Size(84, 13)
+        Me.Label2.Size = New System.Drawing.Size(61, 13)
         Me.Label2.TabIndex = 1
-        Me.Label2.Text = "Output Directory"
+        Me.Label2.Text = "Min Speed:"
         '
         'GroupBox4
         '
@@ -730,80 +730,80 @@ Partial Class MainForm
         '
         Me.GENEditorToolStripMenuItem1.Image = Global.TUGraz.VECTO.My.Resources.Resources.F_VECTO
         Me.GENEditorToolStripMenuItem1.Name = "GENEditorToolStripMenuItem1"
-        Me.GENEditorToolStripMenuItem1.Size = New System.Drawing.Size(262, 30)
+        Me.GENEditorToolStripMenuItem1.Size = New System.Drawing.Size(254, 22)
         Me.GENEditorToolStripMenuItem1.Text = "Job Editor - Conventional Vehicle"
         '
         'JobEditorParallelHybridVehicleToolStripMenuItem
         '
         Me.JobEditorParallelHybridVehicleToolStripMenuItem.Image = Global.TUGraz.VECTO.My.Resources.Resources.F_VECTO
         Me.JobEditorParallelHybridVehicleToolStripMenuItem.Name = "JobEditorParallelHybridVehicleToolStripMenuItem"
-        Me.JobEditorParallelHybridVehicleToolStripMenuItem.Size = New System.Drawing.Size(262, 30)
+        Me.JobEditorParallelHybridVehicleToolStripMenuItem.Size = New System.Drawing.Size(254, 22)
         Me.JobEditorParallelHybridVehicleToolStripMenuItem.Text = "Job Editor - Parallel Hybrid Vehicle"
         '
         'JobEditorBatteryElectricVehicleToolStripMenuItem
         '
         Me.JobEditorBatteryElectricVehicleToolStripMenuItem.Image = Global.TUGraz.VECTO.My.Resources.Resources.F_VECTO
         Me.JobEditorBatteryElectricVehicleToolStripMenuItem.Name = "JobEditorBatteryElectricVehicleToolStripMenuItem"
-        Me.JobEditorBatteryElectricVehicleToolStripMenuItem.Size = New System.Drawing.Size(262, 30)
+        Me.JobEditorBatteryElectricVehicleToolStripMenuItem.Size = New System.Drawing.Size(254, 22)
         Me.JobEditorBatteryElectricVehicleToolStripMenuItem.Text = "JobEditor - Battery Electric Vehicle"
         '
         'JobEditorEngineOnlyModeToolStripMenuItem
         '
         Me.JobEditorEngineOnlyModeToolStripMenuItem.Image = Global.TUGraz.VECTO.My.Resources.Resources.F_VECTO
         Me.JobEditorEngineOnlyModeToolStripMenuItem.Name = "JobEditorEngineOnlyModeToolStripMenuItem"
-        Me.JobEditorEngineOnlyModeToolStripMenuItem.Size = New System.Drawing.Size(262, 30)
+        Me.JobEditorEngineOnlyModeToolStripMenuItem.Size = New System.Drawing.Size(254, 22)
         Me.JobEditorEngineOnlyModeToolStripMenuItem.Text = "Job Editor - Engine Only Mode"
         '
         'EPTPJobEditorToolStripMenuItem
         '
         Me.EPTPJobEditorToolStripMenuItem.Image = Global.TUGraz.VECTO.My.Resources.Resources.F_VECTO
         Me.EPTPJobEditorToolStripMenuItem.Name = "EPTPJobEditorToolStripMenuItem"
-        Me.EPTPJobEditorToolStripMenuItem.Size = New System.Drawing.Size(262, 30)
+        Me.EPTPJobEditorToolStripMenuItem.Size = New System.Drawing.Size(254, 22)
         Me.EPTPJobEditorToolStripMenuItem.Text = "VTP Job Editor"
         '
         'VEHEditorToolStripMenuItem
         '
         Me.VEHEditorToolStripMenuItem.Image = Global.TUGraz.VECTO.My.Resources.Resources.F_VEH
         Me.VEHEditorToolStripMenuItem.Name = "VEHEditorToolStripMenuItem"
-        Me.VEHEditorToolStripMenuItem.Size = New System.Drawing.Size(262, 30)
+        Me.VEHEditorToolStripMenuItem.Size = New System.Drawing.Size(254, 22)
         Me.VEHEditorToolStripMenuItem.Text = "Vehicle Editor"
         '
         'EngineEditorToolStripMenuItem
         '
         Me.EngineEditorToolStripMenuItem.Image = Global.TUGraz.VECTO.My.Resources.Resources.F_ENG
         Me.EngineEditorToolStripMenuItem.Name = "EngineEditorToolStripMenuItem"
-        Me.EngineEditorToolStripMenuItem.Size = New System.Drawing.Size(262, 30)
+        Me.EngineEditorToolStripMenuItem.Size = New System.Drawing.Size(254, 22)
         Me.EngineEditorToolStripMenuItem.Text = "Engine Editor"
         '
         'GearboxEditorToolStripMenuItem
         '
         Me.GearboxEditorToolStripMenuItem.Image = Global.TUGraz.VECTO.My.Resources.Resources.F_GBX
         Me.GearboxEditorToolStripMenuItem.Name = "GearboxEditorToolStripMenuItem"
-        Me.GearboxEditorToolStripMenuItem.Size = New System.Drawing.Size(262, 30)
+        Me.GearboxEditorToolStripMenuItem.Size = New System.Drawing.Size(254, 22)
         Me.GearboxEditorToolStripMenuItem.Text = "Gearbox Editor"
         '
         'GraphToolStripMenuItem
         '
         Me.GraphToolStripMenuItem.Image = Global.TUGraz.VECTO.My.Resources.Resources.F_Graph
         Me.GraphToolStripMenuItem.Name = "GraphToolStripMenuItem"
-        Me.GraphToolStripMenuItem.Size = New System.Drawing.Size(262, 30)
+        Me.GraphToolStripMenuItem.Size = New System.Drawing.Size(254, 22)
         Me.GraphToolStripMenuItem.Text = "Graph"
         '
         'ToolStripSeparator6
         '
         Me.ToolStripSeparator6.Name = "ToolStripSeparator6"
-        Me.ToolStripSeparator6.Size = New System.Drawing.Size(259, 6)
+        Me.ToolStripSeparator6.Size = New System.Drawing.Size(251, 6)
         '
         'OpenLogToolStripMenuItem
         '
         Me.OpenLogToolStripMenuItem.Name = "OpenLogToolStripMenuItem"
-        Me.OpenLogToolStripMenuItem.Size = New System.Drawing.Size(262, 30)
+        Me.OpenLogToolStripMenuItem.Size = New System.Drawing.Size(254, 22)
         Me.OpenLogToolStripMenuItem.Text = "Open Log"
         '
         'SettingsToolStripMenuItem
         '
         Me.SettingsToolStripMenuItem.Name = "SettingsToolStripMenuItem"
-        Me.SettingsToolStripMenuItem.Size = New System.Drawing.Size(262, 30)
+        Me.SettingsToolStripMenuItem.Size = New System.Drawing.Size(254, 22)
         Me.SettingsToolStripMenuItem.Text = "Settings"
         '
         'ToolStripDrDnBtInfo
diff --git a/VECTO/Input Files/ElectricMachine.vb b/VECTO/Input Files/ElectricMachine.vb
index 72740e0b4baef10958552e0971d3baf1ccd6041d..6c0136cbb970ff63155f44a665944de5f825acac 100644
--- a/VECTO/Input Files/ElectricMachine.vb	
+++ b/VECTO/Input Files/ElectricMachine.vb	
@@ -17,12 +17,11 @@ Public Class ElectricMachine
 
     public VoltageLevelLow As Double
     Private ReadOnly _fullLoadCurvePathLow As SubPath
-    Private ReadOnly _dragCurvePathLow As SubPath
+    Private ReadOnly _dragCurvePath As SubPath
     Private ReadOnly _efficiencyMapLow As SubPath
 
     public VoltageLevelHigh as Double
     Private ReadOnly _fullLoadCurvePathHi As SubPath
-    Private ReadOnly _dragCurvePathHi As SubPath
     Private ReadOnly _efficiencyMapHi As SubPath
 
     ''' <summary>
@@ -54,12 +53,11 @@ Public Class ElectricMachine
         _filePath = ""
 
         _fullLoadCurvePathLow = New SubPath
-        _dragCurvePathLow = New SubPath()
+        _dragCurvePath = New SubPath()
         _efficiencyMapLow = New SubPath()
 
         _fullLoadCurvePathHi = New SubPath
-        _dragCurvePathHi = New SubPath()
-        _efficiencyMapHi = New SubPath()
+       _efficiencyMapHi = New SubPath()
 
         SetDefault()
     End Sub
@@ -213,17 +211,17 @@ Public Class ElectricMachine
             Return VectoCSVFile.Read(_fullLoadCurvePathLow.FullPath)
         End Get
     End Property
-    protected ReadOnly Property DragCurvLow As TableData 
-        Get
-            If Not File.Exists(_dragCurvePathLow.FullPath) Then _
-                Throw New VectoException("Drag Curve is missing or invalid")
-            Return VectoCSVFile.Read(_dragCurvePathLow.FullPath)
-        End Get
-    End Property
+    'protected ReadOnly Property DragCurvLow As TableData 
+    '    Get
+    '        If Not File.Exists(_dragCurvePathLow.FullPath) Then _
+    '            Throw New VectoException("Drag Curve is missing or invalid")
+    '        Return VectoCSVFile.Read(_dragCurvePathLow.FullPath)
+    '    End Get
+    'End Property
     protected ReadOnly Property EfficiencyMapLow As TableData
         Get
             If Not File.Exists(_efficiencyMapLow.FullPath) Then _
-                Throw New VectoException("Drag Curve is missing or invalid")
+                Throw New VectoException("EfficiencyMap is missing or invalid")
             Return VectoCSVFile.Read(_efficiencyMapLow.FullPath)
         End Get
     End Property
@@ -234,17 +232,17 @@ Public Class ElectricMachine
             Return VectoCSVFile.Read(_fullLoadCurvePathHi.FullPath)
         End Get
                     End Property
-    protected ReadOnly Property DragCurvHi As TableData 
-        Get
-            If Not File.Exists(_dragCurvePathHi.FullPath) Then _
-                Throw New VectoException("Drag Curve is missing or invalid")
-            Return VectoCSVFile.Read(_dragCurvePathHi.FullPath)
-        End Get
-    End Property
+    'protected ReadOnly Property DragCurvHi As TableData 
+    '    Get
+    '        If Not File.Exists(_dragCurvePathHi.FullPath) Then _
+    '            Throw New VectoException("Drag Curve is missing or invalid")
+    '        Return VectoCSVFile.Read(_dragCurvePathHi.FullPath)
+    '    End Get
+    'End Property
     protected ReadOnly Property EfficiencyMapHi As TableData
         Get
             If Not File.Exists(_efficiencyMapHi.FullPath) Then _
-                Throw New VectoException("Drag Curve is missing or invalid")
+                Throw New VectoException("EfficiencyMap is missing or invalid")
             Return VectoCSVFile.Read(_efficiencyMapHi.FullPath)
         End Get
     End Property
@@ -255,17 +253,23 @@ Public Class ElectricMachine
                 New ElectricMotorVoltageLevel() With {
                     .VoltageLevel = VoltageLevelLow.SI(of Volt),
                     .EfficiencyMap = EfficiencyMapLow,
-                    .DragCurve = DragCurvLow,
                     .FullLoadCurve = FullLoadCurveLow},
                 New ElectricMotorVoltageLevel()  With {
                     .VoltageLevel = VoltageLevelHigh.SI(of Volt),
                     .EfficiencyMap = EfficiencyMapHi,
-                    .DragCurve = DragCurvHi,
                     .FullLoadCurve = FullLoadCurveHi}
                 }
     End Get
     End Property
 
+    Public ReadOnly Property DragCurve As TableData Implements IElectricMotorDeclarationInputData.DragCurve
+    Get
+            If Not File.Exists(_dragCurvePath.FullPath) Then _
+                Throw New VectoException("Drag Curve is missing or invalid")
+            Return VectoCSVFile.Read(_dragCurvePath.FullPath)
+        End Get
+    end Property
+
     Public ReadOnly Property Inertia As KilogramSquareMeter Implements IElectricMotorDeclarationInputData.Inertia
         Get
             Return MotorInertia.SI(Of KilogramSquareMeter)
@@ -317,16 +321,16 @@ Public Class ElectricMachine
         End Set
     End Property
 
-    Public Property PathDragLow(Optional ByVal original As Boolean = False) As String
+    Public Property PathDrag(Optional ByVal original As Boolean = False) As String
         Get
             If original Then
-                Return _dragCurvePathLow.OriginalPath
+                Return _dragCurvePath.OriginalPath
             Else
-                Return _dragCurvePathLow.FullPath
+                Return _dragCurvePath.FullPath
             End If
         End Get
         Set(ByVal value As String)
-            _dragCurvePathLow.Init(_myPath, value)
+            _dragCurvePath.Init(_myPath, value)
         End Set
     End Property
 
@@ -356,18 +360,6 @@ Public Class ElectricMachine
         End Set
     End Property
 
-    Public Property PathDragHi(Optional ByVal original As Boolean = False) As String
-        Get
-            If original Then
-                Return _dragCurvePathHi.OriginalPath
-            Else
-                Return _dragCurvePathHi.FullPath
-            End If
-        End Get
-        Set(ByVal value As String)
-            _dragCurvePathHi.Init(_myPath, value)
-        End Set
-    End Property
 
     Public Property PathMapHi(Optional ByVal original As Boolean = False) As String
         Get
diff --git a/VECTO/Input Files/Vehicle.vb b/VECTO/Input Files/Vehicle.vb
index 5aca52896b85570b2b554c551b5a91baab43b162..0a2ea94fe774442baed7be20e9f696bca1c3d4dd 100644
--- a/VECTO/Input Files/Vehicle.vb	
+++ b/VECTO/Input Files/Vehicle.vb	
@@ -1043,6 +1043,7 @@ Public Class ElectricMachineWrapper
 	Public ReadOnly Property DigestValue As DigestData Implements IComponentInputData.DigestValue
 
     Public ReadOnly Property VoltageLevels As IList(Of IElectricMotorVoltageLevel) Implements IElectricMotorDeclarationInputData.VoltageLevels
+    Public ReadOnly Property DragCurve As TableData Implements IElectricMotorDeclarationInputData.DragCurve
     Public ReadOnly Property Inertia As KilogramSquareMeter Implements IElectricMotorDeclarationInputData.Inertia
 	Public ReadOnly Property OverloadTime As Second Implements IElectricMotorDeclarationInputData.OverloadTime
 	Public ReadOnly Property ContinuousTorqueSpeed As PerSecond Implements IElectricMotorDeclarationInputData.ContinuousTorqueSpeed
diff --git a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs
index d8d748873feca24f29444a10f3225a68bced3a9a..f1f03f28f88cdc52b3e6a39dee733dc033d3a0bd 100644
--- a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs
+++ b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs
@@ -713,6 +713,8 @@ namespace TUGraz.VectoCommon.InputData
 	{
 		IList<IElectricMotorVoltageLevel> VoltageLevels { get; }
 
+		TableData DragCurve { get; }
+
 		KilogramSquareMeter Inertia { get; }
 
 		Second OverloadTime { get; }
@@ -734,8 +736,6 @@ namespace TUGraz.VectoCommon.InputData
 
 		TableData FullLoadCurve { get; }
 
-		TableData DragCurve { get; }
-
 		TableData EfficiencyMap { get; }
 	}
 
diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONElectricMotor.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONElectricMotor.cs
index 2e537cda6e410bae087b96e8a050f1453046a4e3..111a8cc108be9dbbecb36f869b076438cb521023 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONElectricMotor.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONElectricMotor.cs
@@ -1,5 +1,6 @@
 using System;
 using System.Collections.Generic;
+using System.Configuration;
 using System.Linq;
 using Newtonsoft.Json.Linq;
 using TUGraz.VectoCommon.InputData;
@@ -7,10 +8,19 @@ using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Configuration;
 using TUGraz.VectoCore.InputData.Impl;
+using TUGraz.VectoCore.Utils;
 
 namespace TUGraz.VectoCore.InputData.FileIO.JSON 
 {
 
+	public class JSONElectricMotorV4 : JSONElectricMotorV3
+	{
+		public JSONElectricMotorV4(JObject data, string filename, bool tolerateMissing = false) : base(data, filename, tolerateMissing) { }
+
+		public override TableData DragCurve => ReadTableData(Body.GetEx<string>("DragCurve"), "ElectricMotor DragCurve");
+
+	}
+
 	public class JSONElectricMotorV3 : JSONElectricMotorV2
 	{
 		public JSONElectricMotorV3(JObject data, string filename, bool tolerateMissing = false) : base(data, filename, tolerateMissing) { }
@@ -22,11 +32,14 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 			return Body["VoltageLevels"].Select(entry => new ElectricMotorVoltageLevel() {
 				VoltageLevel = entry.GetEx<double>("Voltage").SI<Volt>(),
 				EfficiencyMap = ReadTableData(entry.GetEx<string>("EfficiencyMap"), "ElectricMotor Map"),
-				DragCurve = ReadTableData(entry.GetEx<string>("DragCurve"), "ElectricMotor DragCurve"),
+				//DragCurve = ReadTableData(entry.GetEx<string>("DragCurve"), "ElectricMotor DragCurve"),
 				FullLoadCurve = ReadTableData(entry.GetEx<string>("FullLoadCurve"), "ElectricMotor FullLoadCurve")
 			}).Cast<IElectricMotorVoltageLevel>().ToList();
 		}
 
+		public override TableData DragCurve=> Body["VoltageLevels"].Select(x => ReadTableData(x.GetEx<string>("DragCurve"), "ElectricMotor DragCurve")).First();
+		
+
 		#endregion
 	}
 
@@ -64,13 +77,13 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 				new ElectricMotorVoltageLevel() {
 					VoltageLevel = 0.SI<Volt>(),
 					EfficiencyMap = ReadTableData(Body.GetEx<string>("EfficiencyMap"), "ElectricMotor Map"),
-					DragCurve = ReadTableData(Body.GetEx<string>("DragCurve"), "ElectricMotor DragCurve"),
+					//DragCurve = ReadTableData(Body.GetEx<string>("DragCurve"), "ElectricMotor DragCurve"),
 					FullLoadCurve = ReadTableData(Body.GetEx<string>("FullLoadCurve"), "ElectricMotor FullLoadCurve")
 				},
 				new ElectricMotorVoltageLevel() {
 					VoltageLevel = 1e9.SI<Volt>(),
 					EfficiencyMap = ReadTableData(Body.GetEx<string>("EfficiencyMap"), "ElectricMotor Map"),
-					DragCurve = ReadTableData(Body.GetEx<string>("DragCurve"), "ElectricMotor DragCurve"),
+					//DragCurve = ReadTableData(Body.GetEx<string>("DragCurve"), "ElectricMotor DragCurve"),
 					FullLoadCurve = ReadTableData(Body.GetEx<string>("FullLoadCurve"), "ElectricMotor FullLoadCurve")
 				},
 			};
@@ -78,15 +91,15 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 
 		public DigestData DigestValue => null;
 
-		public virtual TableData FullLoadCurve => ReadTableData(Body.GetEx<string>("FullLoadCurve"), "ElectricMotor FullLoadCurve");
+		//public virtual TableData FullLoadCurve => ReadTableData(Body.GetEx<string>("FullLoadCurve"), "ElectricMotor FullLoadCurve");
 
 		public virtual TableData DragCurve => ReadTableData(Body.GetEx<string>("DragCurve"), "ElectricMotor DragCurve");
 
-		public virtual TableData EfficiencyMap => ReadTableData(Body.GetEx<string>("EfficiencyMap"), "ElectricMotor Map");
+		//public virtual TableData EfficiencyMap => ReadTableData(Body.GetEx<string>("EfficiencyMap"), "ElectricMotor Map");
 
 		public virtual KilogramSquareMeter Inertia => Body.GetEx<double>("Inertia").SI<KilogramSquareMeter>();
 
-		public virtual Joule OverloadBuffer => Body.GetValueOrDefault<double>("ThermalOverloadBuffer")?.SI(Unit.SI.Mega.Joule).Cast<Joule>() ?? 1e18.SI<Joule>();
+		//public virtual Joule OverloadBuffer => Body.GetValueOrDefault<double>("ThermalOverloadBuffer")?.SI(Unit.SI.Mega.Joule).Cast<Joule>() ?? 1e18.SI<Joule>();
 
 		public virtual double OverloadRecoveryFactor => Body.GetValueOrDefault<double>("ThermalOverloadRecoveryFactor") ?? 0.9;
 
diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputDataFactory.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputDataFactory.cs
index 4e9c56a7f2ad3a515057f9cccbd11c5b6f0df851..08573d70a716091588bfaf761a7373bb440cde39 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputDataFactory.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputDataFactory.cs
@@ -214,6 +214,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 					return new JSONElectricMotorV2(json, filename, tolerateMissing);
 				case 3:
 					return new JSONElectricMotorV3(json, filename, tolerateMissing);
+				case 4:
+					return new JSONElectricMotorV4(json, filename, tolerateMissing);
 				default:
 					throw new VectoException("ElectricMotor-File: Unsupported FileVersion. Got {0}", version);
 			}
diff --git a/VectoCore/VectoCore/InputData/Impl/InputData.cs b/VectoCore/VectoCore/InputData/Impl/InputData.cs
index 2468d3d0bdc5fb7ce9ab4f070712e2139e73f950..386b4c6ff0188df6af1cf9bf7b5bfa6f64766317 100644
--- a/VectoCore/VectoCore/InputData/Impl/InputData.cs
+++ b/VectoCore/VectoCore/InputData/Impl/InputData.cs
@@ -299,7 +299,7 @@ namespace TUGraz.VectoCore.InputData.Impl
 
 		public Volt VoltageLevel { get; internal set; }
 		public TableData FullLoadCurve { get; internal set; }
-		public TableData DragCurve { get; internal set; }
+		//public TableData DragCurve { get; internal set; }
 		public TableData EfficiencyMap { get; internal set; }
 
 		#endregion
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs
index 8b613d79b179aa919a43779509b90cf953ac3157..e803c63d34de47c33ee208a139368f048ad42e94 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs
@@ -889,7 +889,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 				voltageLevels.Add(new ElectricMotorVoltageLevelData() {
 					Voltage = entry.VoltageLevel,
 					FullLoadCurve = fullLoadCurveCombined,
-					DragCurve = ElectricMotorDragCurveReader.Create(entry.DragCurve, count),
+					//DragCurve = ElectricMotorDragCurveReader.Create(entry.DragCurve, count),
 					EfficiencyMap = ElectricMotorMapReader.Create(entry.EfficiencyMap, count),
 				});
 			}
@@ -901,6 +901,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 
 			return new ElectricMotorData() {
 				EfficiencyData = new VoltageLevelData() { VoltageLevels = voltageLevels},
+				DragCurve = ElectricMotorDragCurveReader.Create(motorData.DragCurve, count),
 				Inertia = motorData.Inertia,
 				ContinuousTorque = motorData.ContinuousTorque * count,
 				ContinuousTorqueSpeed = motorData.ContinuousTorqueSpeed,
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricMotor/ElectricMotorData.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricMotor/ElectricMotorData.cs
index 67ec469a5dda78b937555de8f3c41d08a603a26f..91e17a240c5e61f4b6ce7e201d4bcc45717d3160 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricMotor/ElectricMotorData.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricMotor/ElectricMotorData.cs
@@ -41,6 +41,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 
 		[ValidateObject]
 		public VoltageLevelData EfficiencyData { get; internal set; }
+
+		[ValidateObject]
+		public DragCurve DragCurve { get; internal set; }
 	}
 
 	public class VoltageLevelData
@@ -54,12 +57,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 			_maxSpeed ?? (_maxSpeed = VoltageLevels
 				.Min(v => VectoMath.Min(v.EfficiencyMap.MaxSpeed, v.FullLoadCurve.MaxSpeed)));
 
-		public NewtonMeter LookupDragTorque(Volt voltage, PerSecond avgSpeed) {
-			var (a, b) = GetSection(voltage);
-			return VectoMath.Interpolate(a.Voltage, b.Voltage, 
-				a.DragCurve.Lookup(avgSpeed), b.DragCurve.Lookup(avgSpeed), voltage);
-		}
-
+		
 		public NewtonMeter EfficiencyMapLookupTorque(Volt voltage, Watt electricPower, PerSecond avgSpeed, NewtonMeter maxEmTorque)
 		{
 			if (avgSpeed.IsGreaterOrEqual(MaxSpeed)) {
@@ -157,9 +155,6 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 		[ValidateObject]
 		public ElectricMotorFullLoadCurve FullLoadCurve { get; internal set; }
 
-		[ValidateObject]
-		public DragCurve DragCurve { get; internal set; }
-
 		[ValidateObject]
 		public EfficiencyMap EfficiencyMap { get; internal set; }
 
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricMotor.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricMotor.cs
index 8a5429fb4071fad592759f301a135cf2e4fb4df4..c9c30009eb506810106e3665c88041e2ecbb9a25 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricMotor.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricMotor.cs
@@ -77,7 +77,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 
 		public Watt DragPower(Volt volt, PerSecond electricMotorSpeed)
 		{
-			return ModelData.EfficiencyData.LookupDragTorque(volt, electricMotorSpeed) * electricMotorSpeed;
+			return ModelData.DragCurve.Lookup(electricMotorSpeed) * electricMotorSpeed;
 		}
 
 		public Watt MaxPowerDrive(Volt volt, PerSecond electricMotorSpeed)
@@ -260,7 +260,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 				// no electric system or EM shall be off - apply drag only
 				// if EM is off, calculate EM drag torque 'forward' to be applied on drivetrain
 				// add inertia, drag is positive
-				emTorque =  ModelData.EfficiencyData.LookupDragTorque(voltage, avgEmSpeed) + inertiaTorqueEm;
+				emTorque =  ModelData.DragCurve.Lookup(avgEmSpeed) + inertiaTorqueEm;
 				emTorqueDt = ConvertEmTorqueToDrivetrain(avgEmSpeed, emTorque);
 				emOff = true;
 			}
@@ -274,7 +274,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 				emTorqueMap = null;
 			}
 
-			var electricPower = emOff || (ModelData.EfficiencyData.LookupDragTorque(voltage, avgEmSpeed) + inertiaTorqueEm).IsEqual(emTorque, 1e-3.SI<NewtonMeter>())
+			var electricPower = emOff || (ModelData.DragCurve.Lookup(avgEmSpeed) + inertiaTorqueEm).IsEqual(emTorque, 1e-3.SI<NewtonMeter>())
 				? 0.SI<Watt>()
 				: ModelData.EfficiencyData
 					.LookupElectricPower(voltage, avgEmSpeed, emTorqueMap, DataBus.ExecutionMode != ExecutionMode.Declaration)
@@ -409,7 +409,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			}
 
 			var maxBatRecuperationTorque = maxBatPower.IsEqual(0, 1e-3)
-				? ModelData.EfficiencyData.LookupDragTorque(volt, avgSpeed)
+				? ModelData.DragCurve.Lookup(avgSpeed)
 				: ModelData.EfficiencyData.EfficiencyMapLookupTorque(volt, maxBatPower, avgSpeed, maxEmTorque);
 			var maxTorqueRecuperate = VectoMath.Min(maxEmTorque, maxBatRecuperationTorque);
 			if (maxTorqueRecuperate < 0) {
@@ -437,7 +437,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			}
 
 			var maxBatDriveTorque = maxBatPower.IsEqual(0, 1e-3)
-				? ModelData.EfficiencyData.LookupDragTorque(volt, avgSpeed)
+				? ModelData.DragCurve.Lookup(avgSpeed)
 				: ModelData.EfficiencyData.EfficiencyMapLookupTorque(volt, maxBatPower, avgSpeed, maxEmTorque);
 			
 			var maxTorqueDrive = VectoMath.Max(maxEmTorque, maxBatDriveTorque);
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs b/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs
index 9264e039e32ffd7598e5da1f74353f839e1fa158..0683ea1db800a1f74d264993f5b5b7cebf1fe74b 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs
@@ -1871,7 +1871,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 
 					var emDriveTorque = DataBus.ElectricMotorInfo(emPos).GetTorqueForElectricPower(voltage, emDrivePower, firstResponse.ElectricMotor.AngularVelocity, dt);
 					var emDragTorque = ModelData.ElectricMachinesData.First(x => x.Item1 == emPos).Item2
-												.EfficiencyData.LookupDragTorque(voltage, firstResponse.ElectricMotor.AngularVelocity);
+												.DragCurve.Lookup(firstResponse.ElectricMotor.AngularVelocity);
 					if (emDriveTorque != null &&
 						emDriveTorque.IsBetween(
 							firstResponse.ElectricMotor.MaxRecuperationTorque, firstResponse.ElectricMotor.MaxDriveTorque) &&
diff --git a/VectoCore/VectoCore/OutputData/FileIO/JSONFileWriter.cs b/VectoCore/VectoCore/OutputData/FileIO/JSONFileWriter.cs
index ff256764d9e7401d11fbfb540570642ffd6304a6..e8eea0d5a7f55dda529e23567cc7cf5119538fce 100644
--- a/VectoCore/VectoCore/OutputData/FileIO/JSONFileWriter.cs
+++ b/VectoCore/VectoCore/OutputData/FileIO/JSONFileWriter.cs
@@ -11,6 +11,7 @@ using TUGraz.VectoCommon.OutputData;
 using TUGraz.VectoCore;
 using TUGraz.VectoCore.Models.Declaration;
 using TUGraz.VectoCommon.Utils;
+using TUGraz.VectoCore.Models.SimulationComponent.Data;
 
 public class JSONFileWriter : IOutputFileWriter
 {
@@ -34,7 +35,7 @@ public class JSONFileWriter : IOutputFileWriter
 
 	private const int VectoVTPJobFormatVersion = 4;
 
-	private const int ElectricMotorFormatVersion = 3;
+	private const int ElectricMotorFormatVersion = 4;
 
 	private const int REESSFormatVersion = 1;
 
@@ -89,13 +90,14 @@ public class JSONFileWriter : IOutputFileWriter
 		body.Add("OverloadTorqueSpeed", electricMachine.OverloadTestSpeed.AsRPM);
 		body.Add("OverloadTime", electricMachine.OverloadTime.Value());
 		body.Add("ThermalOverloadRecoveryFactor", electricMachine.OverloadRecoveryFactor);
+		body.Add("DragCurve", GetRelativePath(electricMachine.DragCurve.Source, Path.GetDirectoryName(filename)));
 
 		var vlevels = new List<Dictionary<string, object>>();
 		foreach (var entry in electricMachine.VoltageLevels) {
 			var vlevel = new Dictionary<string, object>();
 			vlevel.Add("Voltage", entry.VoltageLevel.Value());
 			vlevel.Add("FullLoadCurve", GetRelativePath(entry.FullLoadCurve.Source, Path.GetDirectoryName(filename)));
-			vlevel.Add("DragCurve", GetRelativePath(entry.DragCurve.Source, Path.GetDirectoryName(filename)));
+			//vlevel.Add("DragCurve", GetRelativePath(entry.DragCurve.Source, Path.GetDirectoryName(filename)));
 			vlevel.Add("EfficiencyMap", GetRelativePath(entry.EfficiencyMap.Source, Path.GetDirectoryName(filename)));
 			vlevels.Add(vlevel);
         }
diff --git a/VectoCore/VectoCoreTest/FileIO/JsonReadHybridTest.cs b/VectoCore/VectoCoreTest/FileIO/JsonReadHybridTest.cs
index ce7a39972d809b1159e887e5f43ee05d725f3b2c..fff7330b5f4ef65f141cab70210848663d01b52a 100644
--- a/VectoCore/VectoCoreTest/FileIO/JsonReadHybridTest.cs
+++ b/VectoCore/VectoCoreTest/FileIO/JsonReadHybridTest.cs
@@ -140,6 +140,12 @@ namespace TUGraz.VectoCore.Tests.FileIO
 			var daa = new EngineeringDataAdapter();
 			var emData = daa.CreateElectricMachines(inputProvider.ElectricMachines, null).First().Item2;
 
+
+			Assert.AreEqual(26, emData.DragCurve.Lookup(2000.RPMtoRad()).Value());
+			Assert.AreEqual(33, emData.DragCurve.Lookup(2000.RPMtoRad()).Value());
+			Assert.AreEqual(29.5, emData.DragCurve.Lookup(2000.RPMtoRad()).Value());
+			Assert.AreEqual(31.25, emData.DragCurve.Lookup(2000.RPMtoRad()).Value());
+
 			var em = emData.EfficiencyData;
 
 			Assert.AreEqual(-334.2300, em.FullLoadDriveTorque(400.SI<Volt>(), 2000.RPMtoRad()).Value());
@@ -152,11 +158,6 @@ namespace TUGraz.VectoCore.Tests.FileIO
 			Assert.AreEqual(370.153, em.FullGenerationTorque(500.SI<Volt>(), 2000.RPMtoRad()).Value());
 			Assert.AreEqual(388.1145, em.FullGenerationTorque(550.SI<Volt>(), 2000.RPMtoRad()).Value());
 
-			Assert.AreEqual(26, em.LookupDragTorque(400.SI<Volt>(), 2000.RPMtoRad()).Value());
-			Assert.AreEqual(33, em.LookupDragTorque(600.SI<Volt>(), 2000.RPMtoRad()).Value());
-			Assert.AreEqual(29.5, em.LookupDragTorque(500.SI<Volt>(), 2000.RPMtoRad()).Value());
-			Assert.AreEqual(31.25, em.LookupDragTorque(550.SI<Volt>(), 2000.RPMtoRad()).Value());
-
 			Assert.AreEqual(-101.760, em.EfficiencyMapLookupTorque(400.SI<Volt>(), -25000.SI<Watt>(), 2000.RPMtoRad(), -300.SI<NewtonMeter>()).Value(), 1e-3);
             Assert.AreEqual(-115.1818, em.EfficiencyMapLookupTorque(600.SI<Volt>(), -25000.SI<Watt>(), 2000.RPMtoRad(), -300.SI<NewtonMeter>()).Value(), 1e-3);
             Assert.AreEqual(14.5383, em.EfficiencyMapLookupTorque(500.SI<Volt>(), -25000.SI<Watt>(), 2000.RPMtoRad(), -300.SI<NewtonMeter>()).Value(), 1e-3);
diff --git a/VectoCore/VectoCoreTest/Models/SimulationComponent/ElectricMotorTest.cs b/VectoCore/VectoCoreTest/Models/SimulationComponent/ElectricMotorTest.cs
index f8861e6e389997e169f7775fc18ba2138558aa16..fce37835bec5d61e96b89c4fb634ccaf569561df 100644
--- a/VectoCore/VectoCoreTest/Models/SimulationComponent/ElectricMotorTest.cs
+++ b/VectoCore/VectoCoreTest/Models/SimulationComponent/ElectricMotorTest.cs
@@ -276,7 +276,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			var response = motor.Request(absTime, dt, torque.SI<NewtonMeter>(), speed.RPMtoRad());
 
 			Assert.IsInstanceOf<ResponseSuccess>(response);
-			var dragTorque = data.First().Item2.EfficiencyData.VoltageLevels.First().DragCurve.Lookup(speed.RPMtoRad());
+			var dragTorque = data.First().Item2.DragCurve.Lookup(speed.RPMtoRad());
 			var enginePower = speed.RPMtoRad() * (torque.SI<NewtonMeter>() + dragTorque);
 			var motorMechPower = dragTorque * speed.RPMtoRad();
 			Assert.AreEqual(enginePower.Value(), response.Engine.PowerRequest.Value(), 1e-6);