diff --git a/.gitignore b/.gitignore
index b28bbafcb4d2a0cd8ee3e51f5d51f193d7c94e6a..c6bd82666dc58816bf38a74bb24c6c789340fe7c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -209,3 +209,5 @@ EPTP/
 201*-VECTO-*.zip
 Documentation/VehiclesReleaseComparisonDeclarationMode/tmp/
 .vs/
+**/dev/*.vmod
+**/dev/*.vsum
diff --git a/VECTO.sln.DotSettings b/VECTO.sln.DotSettings
index cc03e9861fa264a3fd2ba8d605348c53754e323e..f44930e081d4657e2c2edac6d6afb629bc10181c 100644
--- a/VECTO.sln.DotSettings
+++ b/VECTO.sln.DotSettings
@@ -43,6 +43,7 @@
 	<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=NS/@EntryIndexedValue">NS</s:String>
 	<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=PT/@EntryIndexedValue">PT</s:String>
 	<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=PTO/@EntryIndexedValue">PTO</s:String>
+	<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=RESS/@EntryIndexedValue">RESS</s:String>
 	<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=RP/@EntryIndexedValue">RP</s:String>
 	<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SI/@EntryIndexedValue">SI</s:String>
 	<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=VTP/@EntryIndexedValue">VTP</s:String>
@@ -118,4 +119,5 @@
 	<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002EFormat_002ESettingsUpgrade_002EAlignmentTabFillStyleMigration/@EntryIndexedValue">True</s:Boolean>
 	<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002EJavaScript_002ECodeStyle_002ESettingsUpgrade_002EJsParsFormattingSettingsUpgrader/@EntryIndexedValue">True</s:Boolean>
 	<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002EJavaScript_002ECodeStyle_002ESettingsUpgrade_002EJsWrapperSettingsUpgrader/@EntryIndexedValue">True</s:Boolean>
-	<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002EXml_002ECodeStyle_002EFormatSettingsUpgrade_002EXmlMoveToCommonFormatterSettingsUpgrade/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
+	<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002EXml_002ECodeStyle_002EFormatSettingsUpgrade_002EXmlMoveToCommonFormatterSettingsUpgrade/@EntryIndexedValue">True</s:Boolean>
+	<s:Boolean x:Key="/Default/UserDictionary/Words/=RESS/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
diff --git a/VECTO/File Browser/FileBrowserModule.vb b/VECTO/File Browser/FileBrowserModule.vb
index 7109cce430ce55f9e07136c855bd986f5066473e..1b908b59c11283a56305ec8d558095cbbe92cf90 100644
--- a/VECTO/File Browser/FileBrowserModule.vb	
+++ b/VECTO/File Browser/FileBrowserModule.vb	
@@ -58,5 +58,5 @@ Public Module FileBrowserModule
     Public ModalResultsFileBrowser As FileBrowser
 
     Public ElectricMotorFileBrowser As FileBrowser
-    Public BatteryFileBrowser As FileBrowser
+    Public REESSFileBrowser As FileBrowser
 End Module
diff --git a/VECTO/GUI/BatteryForm.Designer.vb b/VECTO/GUI/BatteryForm.Designer.vb
index 20061845e6032a91a005a4a5700d89abd388555d..8943d974cc743e151c9c9fc4c55ad155ac2bee6f 100644
--- a/VECTO/GUI/BatteryForm.Designer.vb
+++ b/VECTO/GUI/BatteryForm.Designer.vb
@@ -82,6 +82,27 @@ Partial Class BatteryForm
         Me.lblCFactor = New System.Windows.Forms.Label()
         Me.lblCFactorUnit = New System.Windows.Forms.Label()
         Me.tbCFactor = New System.Windows.Forms.TextBox()
+        Me.FlowLayoutPanel1 = New System.Windows.Forms.FlowLayoutPanel()
+        Me.pnBattery = New System.Windows.Forms.Panel()
+        Me.pnSuperCap = New System.Windows.Forms.Panel()
+        Me.pnSuperCapMaxV = New System.Windows.Forms.Panel()
+        Me.lblSuperCapMaxV = New System.Windows.Forms.Label()
+        Me.lblSuperCapMaxVUnit = New System.Windows.Forms.Label()
+        Me.tbSuperCapMaxV = New System.Windows.Forms.TextBox()
+        Me.pnSuperCapMinV = New System.Windows.Forms.Panel()
+        Me.lblSuperCapMinV = New System.Windows.Forms.Label()
+        Me.lblSuperCapMinVUnit = New System.Windows.Forms.Label()
+        Me.tbSuperCapMinV = New System.Windows.Forms.TextBox()
+        Me.pnSuperCapResistance = New System.Windows.Forms.Panel()
+        Me.lblSuperCapRi = New System.Windows.Forms.Label()
+        Me.lblSuperCapRiUnit = New System.Windows.Forms.Label()
+        Me.tbSuperCapRi = New System.Windows.Forms.TextBox()
+        Me.pnSuperCapCapacity = New System.Windows.Forms.Panel()
+        Me.lblSuperCapCapacity = New System.Windows.Forms.Label()
+        Me.lblSuperCapCapacityUnit = New System.Windows.Forms.Label()
+        Me.tbSuperCapCapacity = New System.Windows.Forms.TextBox()
+        Me.cbRESSType = New System.Windows.Forms.ComboBox()
+        Me.lblRessType = New System.Windows.Forms.Label()
         Me.ToolStrip1.SuspendLayout
         Me.StatusStrip1.SuspendLayout
         CType(Me.PictureBox1,System.ComponentModel.ISupportInitialize).BeginInit
@@ -91,30 +112,40 @@ Partial Class BatteryForm
         Me.Panel1.SuspendLayout
         Me.Panel2.SuspendLayout
         Me.Panel3.SuspendLayout
+        Me.FlowLayoutPanel1.SuspendLayout
+        Me.pnBattery.SuspendLayout
+        Me.pnSuperCap.SuspendLayout
+        Me.pnSuperCapMaxV.SuspendLayout
+        Me.pnSuperCapMinV.SuspendLayout
+        Me.pnSuperCapResistance.SuspendLayout
+        Me.pnSuperCapCapacity.SuspendLayout
         Me.SuspendLayout
         '
         'tbCapacity
         '
-        Me.tbCapacity.Location = New System.Drawing.Point(90, 4)
+        Me.tbCapacity.Location = New System.Drawing.Point(135, 6)
+        Me.tbCapacity.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.tbCapacity.Name = "tbCapacity"
-        Me.tbCapacity.Size = New System.Drawing.Size(57, 20)
+        Me.tbCapacity.Size = New System.Drawing.Size(84, 26)
         Me.tbCapacity.TabIndex = 3
         '
         'lblCapacityUnit
         '
         Me.lblCapacityUnit.AutoSize = true
-        Me.lblCapacityUnit.Location = New System.Drawing.Point(153, 7)
+        Me.lblCapacityUnit.Location = New System.Drawing.Point(230, 11)
+        Me.lblCapacityUnit.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
         Me.lblCapacityUnit.Name = "lblCapacityUnit"
-        Me.lblCapacityUnit.Size = New System.Drawing.Size(26, 13)
+        Me.lblCapacityUnit.Size = New System.Drawing.Size(37, 20)
         Me.lblCapacityUnit.TabIndex = 24
         Me.lblCapacityUnit.Text = "[Ah]"
         '
         'lblCapacity
         '
         Me.lblCapacity.AutoSize = true
-        Me.lblCapacity.Location = New System.Drawing.Point(3, 7)
+        Me.lblCapacity.Location = New System.Drawing.Point(4, 11)
+        Me.lblCapacity.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
         Me.lblCapacity.Name = "lblCapacity"
-        Me.lblCapacity.Size = New System.Drawing.Size(48, 13)
+        Me.lblCapacity.Size = New System.Drawing.Size(70, 20)
         Me.lblCapacity.TabIndex = 0
         Me.lblCapacity.Text = "Capacity"
         '
@@ -122,9 +153,10 @@ Partial Class BatteryForm
         '
         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, 303)
+        Me.ButCancel.Location = New System.Drawing.Point(1216, 482)
+        Me.ButCancel.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.ButCancel.Name = "ButCancel"
-        Me.ButCancel.Size = New System.Drawing.Size(75, 23)
+        Me.ButCancel.Size = New System.Drawing.Size(112, 35)
         Me.ButCancel.TabIndex = 13
         Me.ButCancel.Text = "Cancel"
         Me.ButCancel.UseVisualStyleBackColor = true
@@ -132,9 +164,10 @@ Partial Class BatteryForm
         '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, 303)
+        Me.ButOK.Location = New System.Drawing.Point(1095, 482)
+        Me.ButOK.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.ButOK.Name = "ButOK"
-        Me.ButOK.Size = New System.Drawing.Size(75, 23)
+        Me.ButOK.Size = New System.Drawing.Size(112, 35)
         Me.ButOK.TabIndex = 12
         Me.ButOK.Text = "Save"
         Me.ButOK.UseVisualStyleBackColor = true
@@ -142,10 +175,12 @@ Partial Class BatteryForm
         'ToolStrip1
         '
         Me.ToolStrip1.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden
+        Me.ToolStrip1.ImageScalingSize = New System.Drawing.Size(24, 24)
         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.Size = New System.Drawing.Size(898, 25)
+        Me.ToolStrip1.Padding = New System.Windows.Forms.Padding(0, 0, 3, 0)
+        Me.ToolStrip1.Size = New System.Drawing.Size(1347, 33)
         Me.ToolStrip1.TabIndex = 30
         Me.ToolStrip1.Text = "ToolStrip1"
         '
@@ -155,7 +190,7 @@ Partial Class BatteryForm
         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(23, 22)
+        Me.ToolStripBtNew.Size = New System.Drawing.Size(34, 28)
         Me.ToolStripBtNew.Text = "ToolStripButton1"
         Me.ToolStripBtNew.ToolTipText = "New"
         '
@@ -165,7 +200,7 @@ Partial Class BatteryForm
         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(23, 22)
+        Me.ToolStripBtOpen.Size = New System.Drawing.Size(34, 28)
         Me.ToolStripBtOpen.Text = "ToolStripButton1"
         Me.ToolStripBtOpen.ToolTipText = "Open..."
         '
@@ -175,7 +210,7 @@ Partial Class BatteryForm
         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(23, 22)
+        Me.ToolStripBtSave.Size = New System.Drawing.Size(34, 28)
         Me.ToolStripBtSave.Text = "ToolStripButton1"
         Me.ToolStripBtSave.ToolTipText = "Save"
         '
@@ -185,14 +220,14 @@ Partial Class BatteryForm
         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(23, 22)
+        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, 25)
+        Me.ToolStripSeparator3.Size = New System.Drawing.Size(6, 33)
         '
         'ToolStripBtSendTo
         '
@@ -200,14 +235,14 @@ Partial Class BatteryForm
         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(23, 22)
+        Me.ToolStripBtSendTo.Size = New System.Drawing.Size(34, 28)
         Me.ToolStripBtSendTo.Text = "Send to Job Editor"
         Me.ToolStripBtSendTo.ToolTipText = "Send to Job Editor"
         '
         'ToolStripSeparator1
         '
         Me.ToolStripSeparator1.Name = "ToolStripSeparator1"
-        Me.ToolStripSeparator1.Size = New System.Drawing.Size(6, 25)
+        Me.ToolStripSeparator1.Size = New System.Drawing.Size(6, 33)
         '
         'ToolStripButton1
         '
@@ -215,15 +250,17 @@ Partial Class BatteryForm
         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(23, 22)
+        Me.ToolStripButton1.Size = New System.Drawing.Size(34, 28)
         Me.ToolStripButton1.Text = "Help"
         '
         'StatusStrip1
         '
+        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, 329)
+        Me.StatusStrip1.Location = New System.Drawing.Point(0, 524)
         Me.StatusStrip1.Name = "StatusStrip1"
-        Me.StatusStrip1.Size = New System.Drawing.Size(898, 22)
+        Me.StatusStrip1.Padding = New System.Windows.Forms.Padding(2, 0, 21, 0)
+        Me.StatusStrip1.Size = New System.Drawing.Size(1347, 32)
         Me.StatusStrip1.SizingGrip = false
         Me.StatusStrip1.TabIndex = 37
         Me.StatusStrip1.Text = "StatusStrip1"
@@ -231,22 +268,24 @@ Partial Class BatteryForm
         '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"
         '
         'tbMakeModel
         '
-        Me.tbMakeModel.Location = New System.Drawing.Point(109, 82)
+        Me.tbMakeModel.Location = New System.Drawing.Point(164, 126)
+        Me.tbMakeModel.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.tbMakeModel.Name = "tbMakeModel"
-        Me.tbMakeModel.Size = New System.Drawing.Size(370, 20)
+        Me.tbMakeModel.Size = New System.Drawing.Size(553, 26)
         Me.tbMakeModel.TabIndex = 0
         '
         'lblMakeModel
         '
         Me.lblMakeModel.AutoSize = true
-        Me.lblMakeModel.Location = New System.Drawing.Point(16, 85)
+        Me.lblMakeModel.Location = New System.Drawing.Point(24, 131)
+        Me.lblMakeModel.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
         Me.lblMakeModel.Name = "lblMakeModel"
-        Me.lblMakeModel.Size = New System.Drawing.Size(87, 13)
+        Me.lblMakeModel.Size = New System.Drawing.Size(126, 20)
         Me.lblMakeModel.TabIndex = 11
         Me.lblMakeModel.Text = "Make and Model"
         '
@@ -254,28 +293,30 @@ Partial Class BatteryForm
         '
         Me.PictureBox1.BackColor = System.Drawing.Color.White
         Me.PictureBox1.Image = Global.TUGraz.VECTO.My.Resources.Resources.VECTO_ENG
-        Me.PictureBox1.Location = New System.Drawing.Point(0, 28)
+        Me.PictureBox1.Location = New System.Drawing.Point(0, 43)
+        Me.PictureBox1.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.PictureBox1.Name = "PictureBox1"
-        Me.PictureBox1.Size = New System.Drawing.Size(502, 40)
+        Me.PictureBox1.Size = New System.Drawing.Size(753, 62)
         Me.PictureBox1.TabIndex = 39
         Me.PictureBox1.TabStop = false
         '
         'CmOpenFile
         '
+        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"
         '
         'pnInertia
@@ -283,33 +324,37 @@ Partial Class BatteryForm
         Me.pnInertia.Controls.Add(Me.lblCapacity)
         Me.pnInertia.Controls.Add(Me.lblCapacityUnit)
         Me.pnInertia.Controls.Add(Me.tbCapacity)
-        Me.pnInertia.Location = New System.Drawing.Point(12, 108)
+        Me.pnInertia.Location = New System.Drawing.Point(4, 5)
+        Me.pnInertia.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.pnInertia.Name = "pnInertia"
-        Me.pnInertia.Size = New System.Drawing.Size(212, 30)
+        Me.pnInertia.Size = New System.Drawing.Size(318, 46)
         Me.pnInertia.TabIndex = 3
         '
         'tbSoCCurve
         '
-        Me.tbSoCCurve.Location = New System.Drawing.Point(12, 219)
+        Me.tbSoCCurve.Location = New System.Drawing.Point(4, 176)
+        Me.tbSoCCurve.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.tbSoCCurve.Name = "tbSoCCurve"
-        Me.tbSoCCurve.Size = New System.Drawing.Size(434, 20)
+        Me.tbSoCCurve.Size = New System.Drawing.Size(649, 26)
         Me.tbSoCCurve.TabIndex = 5
         '
         'lblSoCCurve
         '
         Me.lblSoCCurve.AutoSize = true
-        Me.lblSoCCurve.Location = New System.Drawing.Point(12, 203)
+        Me.lblSoCCurve.Location = New System.Drawing.Point(4, 151)
+        Me.lblSoCCurve.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
         Me.lblSoCCurve.Name = "lblSoCCurve"
-        Me.lblSoCCurve.Size = New System.Drawing.Size(58, 13)
+        Me.lblSoCCurve.Size = New System.Drawing.Size(85, 20)
         Me.lblSoCCurve.TabIndex = 38
         Me.lblSoCCurve.Text = "SoC Curve"
         '
         'btnBrowseSoCCurve
         '
         Me.btnBrowseSoCCurve.Image = Global.TUGraz.VECTO.My.Resources.Resources.Open_icon
-        Me.btnBrowseSoCCurve.Location = New System.Drawing.Point(446, 217)
+        Me.btnBrowseSoCCurve.Location = New System.Drawing.Point(655, 173)
+        Me.btnBrowseSoCCurve.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.btnBrowseSoCCurve.Name = "btnBrowseSoCCurve"
-        Me.btnBrowseSoCCurve.Size = New System.Drawing.Size(24, 24)
+        Me.btnBrowseSoCCurve.Size = New System.Drawing.Size(36, 37)
         Me.btnBrowseSoCCurve.TabIndex = 6
         Me.btnBrowseSoCCurve.TabStop = false
         Me.btnBrowseSoCCurve.UseVisualStyleBackColor = true
@@ -317,9 +362,10 @@ Partial Class BatteryForm
         'btnSoCCurveOpen
         '
         Me.btnSoCCurveOpen.Image = Global.TUGraz.VECTO.My.Resources.Resources.application_export_icon_small
-        Me.btnSoCCurveOpen.Location = New System.Drawing.Point(469, 217)
+        Me.btnSoCCurveOpen.Location = New System.Drawing.Point(690, 173)
+        Me.btnSoCCurveOpen.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.btnSoCCurveOpen.Name = "btnSoCCurveOpen"
-        Me.btnSoCCurveOpen.Size = New System.Drawing.Size(24, 24)
+        Me.btnSoCCurveOpen.Size = New System.Drawing.Size(36, 37)
         Me.btnSoCCurveOpen.TabIndex = 7
         Me.btnSoCCurveOpen.TabStop = false
         Me.btnSoCCurveOpen.UseVisualStyleBackColor = true
@@ -327,9 +373,10 @@ Partial Class BatteryForm
         'btnRiMapOpen
         '
         Me.btnRiMapOpen.Image = Global.TUGraz.VECTO.My.Resources.Resources.application_export_icon_small
-        Me.btnRiMapOpen.Location = New System.Drawing.Point(469, 263)
+        Me.btnRiMapOpen.Location = New System.Drawing.Point(690, 244)
+        Me.btnRiMapOpen.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.btnRiMapOpen.Name = "btnRiMapOpen"
-        Me.btnRiMapOpen.Size = New System.Drawing.Size(24, 24)
+        Me.btnRiMapOpen.Size = New System.Drawing.Size(36, 37)
         Me.btnRiMapOpen.TabIndex = 42
         Me.btnRiMapOpen.TabStop = false
         Me.btnRiMapOpen.UseVisualStyleBackColor = true
@@ -337,9 +384,10 @@ Partial Class BatteryForm
         'btnBrowseRiMap
         '
         Me.btnBrowseRiMap.Image = Global.TUGraz.VECTO.My.Resources.Resources.Open_icon
-        Me.btnBrowseRiMap.Location = New System.Drawing.Point(446, 263)
+        Me.btnBrowseRiMap.Location = New System.Drawing.Point(655, 244)
+        Me.btnBrowseRiMap.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.btnBrowseRiMap.Name = "btnBrowseRiMap"
-        Me.btnBrowseRiMap.Size = New System.Drawing.Size(24, 24)
+        Me.btnBrowseRiMap.Size = New System.Drawing.Size(36, 37)
         Me.btnBrowseRiMap.TabIndex = 41
         Me.btnBrowseRiMap.TabStop = false
         Me.btnBrowseRiMap.UseVisualStyleBackColor = true
@@ -347,17 +395,19 @@ Partial Class BatteryForm
         'lblRiMap
         '
         Me.lblRiMap.AutoSize = true
-        Me.lblRiMap.Location = New System.Drawing.Point(12, 249)
+        Me.lblRiMap.Location = New System.Drawing.Point(4, 222)
+        Me.lblRiMap.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
         Me.lblRiMap.Name = "lblRiMap"
-        Me.lblRiMap.Size = New System.Drawing.Size(129, 13)
+        Me.lblRiMap.Size = New System.Drawing.Size(192, 20)
         Me.lblRiMap.TabIndex = 43
         Me.lblRiMap.Text = "Internal Resistance Curve"
         '
         'tbRiCurve
         '
-        Me.tbRiCurve.Location = New System.Drawing.Point(12, 265)
+        Me.tbRiCurve.Location = New System.Drawing.Point(4, 247)
+        Me.tbRiCurve.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.tbRiCurve.Name = "tbRiCurve"
-        Me.tbRiCurve.Size = New System.Drawing.Size(434, 20)
+        Me.tbRiCurve.Size = New System.Drawing.Size(649, 26)
         Me.tbRiCurve.TabIndex = 40
         '
         'lblTitle
@@ -365,9 +415,10 @@ Partial Class BatteryForm
         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(119, 35)
+        Me.lblTitle.Location = New System.Drawing.Point(178, 54)
+        Me.lblTitle.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
         Me.lblTitle.Name = "lblTitle"
-        Me.lblTitle.Size = New System.Drawing.Size(266, 29)
+        Me.lblTitle.Size = New System.Drawing.Size(395, 40)
         Me.lblTitle.TabIndex = 48
         Me.lblTitle.Text = "Electric Energy Storage"
         '
@@ -375,9 +426,10 @@ Partial Class BatteryForm
         '
         Me.PicBox.BackColor = System.Drawing.Color.LightGray
         Me.PicBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
-        Me.PicBox.Location = New System.Drawing.Point(508, 28)
+        Me.PicBox.Location = New System.Drawing.Point(762, 43)
+        Me.PicBox.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.PicBox.Name = "PicBox"
-        Me.PicBox.Size = New System.Drawing.Size(382, 266)
+        Me.PicBox.Size = New System.Drawing.Size(572, 408)
         Me.PicBox.TabIndex = 49
         Me.PicBox.TabStop = false
         '
@@ -386,34 +438,38 @@ Partial Class BatteryForm
         Me.Panel1.Controls.Add(Me.lblMinSoc)
         Me.Panel1.Controls.Add(Me.lblSoCMinUnit)
         Me.Panel1.Controls.Add(Me.tbSoCMin)
-        Me.Panel1.Location = New System.Drawing.Point(12, 144)
+        Me.Panel1.Location = New System.Drawing.Point(4, 61)
+        Me.Panel1.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.Panel1.Name = "Panel1"
-        Me.Panel1.Size = New System.Drawing.Size(212, 30)
+        Me.Panel1.Size = New System.Drawing.Size(318, 46)
         Me.Panel1.TabIndex = 25
         '
         'lblMinSoc
         '
         Me.lblMinSoc.AutoSize = true
-        Me.lblMinSoc.Location = New System.Drawing.Point(3, 7)
+        Me.lblMinSoc.Location = New System.Drawing.Point(4, 11)
+        Me.lblMinSoc.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
         Me.lblMinSoc.Name = "lblMinSoc"
-        Me.lblMinSoc.Size = New System.Drawing.Size(46, 13)
+        Me.lblMinSoc.Size = New System.Drawing.Size(69, 20)
         Me.lblMinSoc.TabIndex = 0
         Me.lblMinSoc.Text = "SoC min"
         '
         'lblSoCMinUnit
         '
         Me.lblSoCMinUnit.AutoSize = true
-        Me.lblSoCMinUnit.Location = New System.Drawing.Point(153, 7)
+        Me.lblSoCMinUnit.Location = New System.Drawing.Point(230, 11)
+        Me.lblSoCMinUnit.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
         Me.lblSoCMinUnit.Name = "lblSoCMinUnit"
-        Me.lblSoCMinUnit.Size = New System.Drawing.Size(21, 13)
+        Me.lblSoCMinUnit.Size = New System.Drawing.Size(31, 20)
         Me.lblSoCMinUnit.TabIndex = 24
         Me.lblSoCMinUnit.Text = "[%]"
         '
         'tbSoCMin
         '
-        Me.tbSoCMin.Location = New System.Drawing.Point(90, 4)
+        Me.tbSoCMin.Location = New System.Drawing.Point(135, 6)
+        Me.tbSoCMin.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.tbSoCMin.Name = "tbSoCMin"
-        Me.tbSoCMin.Size = New System.Drawing.Size(57, 20)
+        Me.tbSoCMin.Size = New System.Drawing.Size(84, 26)
         Me.tbSoCMin.TabIndex = 3
         '
         'Panel2
@@ -421,34 +477,38 @@ Partial Class BatteryForm
         Me.Panel2.Controls.Add(Me.lblSoCMax)
         Me.Panel2.Controls.Add(Me.lblSoCMaxUnit)
         Me.Panel2.Controls.Add(Me.tbSoCMax)
-        Me.Panel2.Location = New System.Drawing.Point(234, 144)
+        Me.Panel2.Location = New System.Drawing.Point(337, 61)
+        Me.Panel2.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.Panel2.Name = "Panel2"
-        Me.Panel2.Size = New System.Drawing.Size(212, 30)
+        Me.Panel2.Size = New System.Drawing.Size(318, 46)
         Me.Panel2.TabIndex = 25
         '
         'lblSoCMax
         '
         Me.lblSoCMax.AutoSize = true
-        Me.lblSoCMax.Location = New System.Drawing.Point(3, 7)
+        Me.lblSoCMax.Location = New System.Drawing.Point(4, 11)
+        Me.lblSoCMax.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
         Me.lblSoCMax.Name = "lblSoCMax"
-        Me.lblSoCMax.Size = New System.Drawing.Size(49, 13)
+        Me.lblSoCMax.Size = New System.Drawing.Size(73, 20)
         Me.lblSoCMax.TabIndex = 0
         Me.lblSoCMax.Text = "SoC max"
         '
         'lblSoCMaxUnit
         '
         Me.lblSoCMaxUnit.AutoSize = true
-        Me.lblSoCMaxUnit.Location = New System.Drawing.Point(153, 7)
+        Me.lblSoCMaxUnit.Location = New System.Drawing.Point(230, 11)
+        Me.lblSoCMaxUnit.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
         Me.lblSoCMaxUnit.Name = "lblSoCMaxUnit"
-        Me.lblSoCMaxUnit.Size = New System.Drawing.Size(21, 13)
+        Me.lblSoCMaxUnit.Size = New System.Drawing.Size(31, 20)
         Me.lblSoCMaxUnit.TabIndex = 24
         Me.lblSoCMaxUnit.Text = "[%]"
         '
         'tbSoCMax
         '
-        Me.tbSoCMax.Location = New System.Drawing.Point(90, 4)
+        Me.tbSoCMax.Location = New System.Drawing.Point(135, 6)
+        Me.tbSoCMax.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.tbSoCMax.Name = "tbSoCMax"
-        Me.tbSoCMax.Size = New System.Drawing.Size(57, 20)
+        Me.tbSoCMax.Size = New System.Drawing.Size(84, 26)
         Me.tbSoCMax.TabIndex = 3
         '
         'Panel3
@@ -456,66 +516,275 @@ Partial Class BatteryForm
         Me.Panel3.Controls.Add(Me.lblCFactor)
         Me.Panel3.Controls.Add(Me.lblCFactorUnit)
         Me.Panel3.Controls.Add(Me.tbCFactor)
-        Me.Panel3.Location = New System.Drawing.Point(234, 108)
+        Me.Panel3.Location = New System.Drawing.Point(337, 5)
+        Me.Panel3.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.Panel3.Name = "Panel3"
-        Me.Panel3.Size = New System.Drawing.Size(212, 30)
+        Me.Panel3.Size = New System.Drawing.Size(318, 46)
         Me.Panel3.TabIndex = 25
         '
         'lblCFactor
         '
         Me.lblCFactor.AutoSize = true
-        Me.lblCFactor.Location = New System.Drawing.Point(3, 7)
+        Me.lblCFactor.Location = New System.Drawing.Point(4, 11)
+        Me.lblCFactor.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
         Me.lblCFactor.Name = "lblCFactor"
-        Me.lblCFactor.Size = New System.Drawing.Size(47, 13)
+        Me.lblCFactor.Size = New System.Drawing.Size(71, 20)
         Me.lblCFactor.TabIndex = 0
         Me.lblCFactor.Text = "C-Factor"
         '
         'lblCFactorUnit
         '
         Me.lblCFactorUnit.AutoSize = true
-        Me.lblCFactorUnit.Location = New System.Drawing.Point(153, 7)
+        Me.lblCFactorUnit.Location = New System.Drawing.Point(230, 11)
+        Me.lblCFactorUnit.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
         Me.lblCFactorUnit.Name = "lblCFactorUnit"
-        Me.lblCFactorUnit.Size = New System.Drawing.Size(16, 13)
+        Me.lblCFactorUnit.Size = New System.Drawing.Size(39, 20)
         Me.lblCFactorUnit.TabIndex = 24
-        Me.lblCFactorUnit.Text = "[-]"
+        Me.lblCFactorUnit.Text = "[1/h]"
         '
         'tbCFactor
         '
-        Me.tbCFactor.Location = New System.Drawing.Point(90, 4)
+        Me.tbCFactor.Location = New System.Drawing.Point(135, 6)
+        Me.tbCFactor.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.tbCFactor.Name = "tbCFactor"
-        Me.tbCFactor.Size = New System.Drawing.Size(57, 20)
+        Me.tbCFactor.Size = New System.Drawing.Size(84, 26)
         Me.tbCFactor.TabIndex = 3
         '
+        'FlowLayoutPanel1
+        '
+        Me.FlowLayoutPanel1.Controls.Add(Me.pnBattery)
+        Me.FlowLayoutPanel1.Controls.Add(Me.pnSuperCap)
+        Me.FlowLayoutPanel1.Location = New System.Drawing.Point(12, 210)
+        Me.FlowLayoutPanel1.Name = "FlowLayoutPanel1"
+        Me.FlowLayoutPanel1.Size = New System.Drawing.Size(743, 309)
+        Me.FlowLayoutPanel1.TabIndex = 50
+        '
+        'pnBattery
+        '
+        Me.pnBattery.Controls.Add(Me.pnInertia)
+        Me.pnBattery.Controls.Add(Me.tbSoCCurve)
+        Me.pnBattery.Controls.Add(Me.Panel3)
+        Me.pnBattery.Controls.Add(Me.lblSoCCurve)
+        Me.pnBattery.Controls.Add(Me.Panel2)
+        Me.pnBattery.Controls.Add(Me.btnBrowseSoCCurve)
+        Me.pnBattery.Controls.Add(Me.Panel1)
+        Me.pnBattery.Controls.Add(Me.btnSoCCurveOpen)
+        Me.pnBattery.Controls.Add(Me.tbRiCurve)
+        Me.pnBattery.Controls.Add(Me.lblRiMap)
+        Me.pnBattery.Controls.Add(Me.btnRiMapOpen)
+        Me.pnBattery.Controls.Add(Me.btnBrowseRiMap)
+        Me.pnBattery.Location = New System.Drawing.Point(3, 3)
+        Me.pnBattery.Name = "pnBattery"
+        Me.pnBattery.Size = New System.Drawing.Size(734, 290)
+        Me.pnBattery.TabIndex = 0
+        '
+        'pnSuperCap
+        '
+        Me.pnSuperCap.Controls.Add(Me.pnSuperCapMaxV)
+        Me.pnSuperCap.Controls.Add(Me.pnSuperCapMinV)
+        Me.pnSuperCap.Controls.Add(Me.pnSuperCapResistance)
+        Me.pnSuperCap.Controls.Add(Me.pnSuperCapCapacity)
+        Me.pnSuperCap.Location = New System.Drawing.Point(3, 299)
+        Me.pnSuperCap.Name = "pnSuperCap"
+        Me.pnSuperCap.Size = New System.Drawing.Size(734, 118)
+        Me.pnSuperCap.TabIndex = 1
+        '
+        'pnSuperCapMaxV
+        '
+        Me.pnSuperCapMaxV.Controls.Add(Me.lblSuperCapMaxV)
+        Me.pnSuperCapMaxV.Controls.Add(Me.lblSuperCapMaxVUnit)
+        Me.pnSuperCapMaxV.Controls.Add(Me.tbSuperCapMaxV)
+        Me.pnSuperCapMaxV.Location = New System.Drawing.Point(337, 61)
+        Me.pnSuperCapMaxV.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
+        Me.pnSuperCapMaxV.Name = "pnSuperCapMaxV"
+        Me.pnSuperCapMaxV.Size = New System.Drawing.Size(318, 46)
+        Me.pnSuperCapMaxV.TabIndex = 26
+        '
+        'lblSuperCapMaxV
+        '
+        Me.lblSuperCapMaxV.AutoSize = true
+        Me.lblSuperCapMaxV.Location = New System.Drawing.Point(4, 11)
+        Me.lblSuperCapMaxV.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
+        Me.lblSuperCapMaxV.Name = "lblSuperCapMaxV"
+        Me.lblSuperCapMaxV.Size = New System.Drawing.Size(97, 20)
+        Me.lblSuperCapMaxV.TabIndex = 0
+        Me.lblSuperCapMaxV.Text = "Max Voltage"
+        '
+        'lblSuperCapMaxVUnit
+        '
+        Me.lblSuperCapMaxVUnit.AutoSize = true
+        Me.lblSuperCapMaxVUnit.Location = New System.Drawing.Point(257, 13)
+        Me.lblSuperCapMaxVUnit.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
+        Me.lblSuperCapMaxVUnit.Name = "lblSuperCapMaxVUnit"
+        Me.lblSuperCapMaxVUnit.Size = New System.Drawing.Size(28, 20)
+        Me.lblSuperCapMaxVUnit.TabIndex = 24
+        Me.lblSuperCapMaxVUnit.Text = "[V]"
+        '
+        'tbSuperCapMaxV
+        '
+        Me.tbSuperCapMaxV.Location = New System.Drawing.Point(162, 8)
+        Me.tbSuperCapMaxV.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
+        Me.tbSuperCapMaxV.Name = "tbSuperCapMaxV"
+        Me.tbSuperCapMaxV.Size = New System.Drawing.Size(84, 26)
+        Me.tbSuperCapMaxV.TabIndex = 3
+        '
+        'pnSuperCapMinV
+        '
+        Me.pnSuperCapMinV.Controls.Add(Me.lblSuperCapMinV)
+        Me.pnSuperCapMinV.Controls.Add(Me.lblSuperCapMinVUnit)
+        Me.pnSuperCapMinV.Controls.Add(Me.tbSuperCapMinV)
+        Me.pnSuperCapMinV.Location = New System.Drawing.Point(4, 61)
+        Me.pnSuperCapMinV.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
+        Me.pnSuperCapMinV.Name = "pnSuperCapMinV"
+        Me.pnSuperCapMinV.Size = New System.Drawing.Size(318, 46)
+        Me.pnSuperCapMinV.TabIndex = 25
+        '
+        'lblSuperCapMinV
+        '
+        Me.lblSuperCapMinV.AutoSize = true
+        Me.lblSuperCapMinV.Location = New System.Drawing.Point(4, 11)
+        Me.lblSuperCapMinV.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
+        Me.lblSuperCapMinV.Name = "lblSuperCapMinV"
+        Me.lblSuperCapMinV.Size = New System.Drawing.Size(93, 20)
+        Me.lblSuperCapMinV.TabIndex = 0
+        Me.lblSuperCapMinV.Text = "Min Voltage"
+        '
+        'lblSuperCapMinVUnit
+        '
+        Me.lblSuperCapMinVUnit.AutoSize = true
+        Me.lblSuperCapMinVUnit.Location = New System.Drawing.Point(230, 11)
+        Me.lblSuperCapMinVUnit.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
+        Me.lblSuperCapMinVUnit.Name = "lblSuperCapMinVUnit"
+        Me.lblSuperCapMinVUnit.Size = New System.Drawing.Size(28, 20)
+        Me.lblSuperCapMinVUnit.TabIndex = 24
+        Me.lblSuperCapMinVUnit.Text = "[V]"
+        '
+        'tbSuperCapMinV
+        '
+        Me.tbSuperCapMinV.Location = New System.Drawing.Point(135, 6)
+        Me.tbSuperCapMinV.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
+        Me.tbSuperCapMinV.Name = "tbSuperCapMinV"
+        Me.tbSuperCapMinV.Size = New System.Drawing.Size(84, 26)
+        Me.tbSuperCapMinV.TabIndex = 3
+        '
+        'pnSuperCapResistance
+        '
+        Me.pnSuperCapResistance.Controls.Add(Me.lblSuperCapRi)
+        Me.pnSuperCapResistance.Controls.Add(Me.lblSuperCapRiUnit)
+        Me.pnSuperCapResistance.Controls.Add(Me.tbSuperCapRi)
+        Me.pnSuperCapResistance.Location = New System.Drawing.Point(337, 5)
+        Me.pnSuperCapResistance.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
+        Me.pnSuperCapResistance.Name = "pnSuperCapResistance"
+        Me.pnSuperCapResistance.Size = New System.Drawing.Size(318, 46)
+        Me.pnSuperCapResistance.TabIndex = 25
+        '
+        'lblSuperCapRi
+        '
+        Me.lblSuperCapRi.AutoSize = true
+        Me.lblSuperCapRi.Location = New System.Drawing.Point(4, 11)
+        Me.lblSuperCapRi.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
+        Me.lblSuperCapRi.Name = "lblSuperCapRi"
+        Me.lblSuperCapRi.Size = New System.Drawing.Size(147, 20)
+        Me.lblSuperCapRi.TabIndex = 0
+        Me.lblSuperCapRi.Text = "Internal Resistance"
+        '
+        'lblSuperCapRiUnit
+        '
+        Me.lblSuperCapRiUnit.AutoSize = true
+        Me.lblSuperCapRiUnit.Location = New System.Drawing.Point(257, 13)
+        Me.lblSuperCapRiUnit.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
+        Me.lblSuperCapRiUnit.Name = "lblSuperCapRiUnit"
+        Me.lblSuperCapRiUnit.Size = New System.Drawing.Size(29, 20)
+        Me.lblSuperCapRiUnit.TabIndex = 24
+        Me.lblSuperCapRiUnit.Text = "[Ω]"
+        '
+        'tbSuperCapRi
+        '
+        Me.tbSuperCapRi.Location = New System.Drawing.Point(162, 8)
+        Me.tbSuperCapRi.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
+        Me.tbSuperCapRi.Name = "tbSuperCapRi"
+        Me.tbSuperCapRi.Size = New System.Drawing.Size(84, 26)
+        Me.tbSuperCapRi.TabIndex = 3
+        '
+        'pnSuperCapCapacity
+        '
+        Me.pnSuperCapCapacity.Controls.Add(Me.lblSuperCapCapacity)
+        Me.pnSuperCapCapacity.Controls.Add(Me.lblSuperCapCapacityUnit)
+        Me.pnSuperCapCapacity.Controls.Add(Me.tbSuperCapCapacity)
+        Me.pnSuperCapCapacity.Location = New System.Drawing.Point(4, 5)
+        Me.pnSuperCapCapacity.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
+        Me.pnSuperCapCapacity.Name = "pnSuperCapCapacity"
+        Me.pnSuperCapCapacity.Size = New System.Drawing.Size(318, 46)
+        Me.pnSuperCapCapacity.TabIndex = 4
+        '
+        'lblSuperCapCapacity
+        '
+        Me.lblSuperCapCapacity.AutoSize = true
+        Me.lblSuperCapCapacity.Location = New System.Drawing.Point(4, 11)
+        Me.lblSuperCapCapacity.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
+        Me.lblSuperCapCapacity.Name = "lblSuperCapCapacity"
+        Me.lblSuperCapCapacity.Size = New System.Drawing.Size(70, 20)
+        Me.lblSuperCapCapacity.TabIndex = 0
+        Me.lblSuperCapCapacity.Text = "Capacity"
+        '
+        'lblSuperCapCapacityUnit
+        '
+        Me.lblSuperCapCapacityUnit.AutoSize = true
+        Me.lblSuperCapCapacityUnit.Location = New System.Drawing.Point(230, 11)
+        Me.lblSuperCapCapacityUnit.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
+        Me.lblSuperCapCapacityUnit.Name = "lblSuperCapCapacityUnit"
+        Me.lblSuperCapCapacityUnit.Size = New System.Drawing.Size(27, 20)
+        Me.lblSuperCapCapacityUnit.TabIndex = 24
+        Me.lblSuperCapCapacityUnit.Text = "[F]"
+        '
+        'tbSuperCapCapacity
+        '
+        Me.tbSuperCapCapacity.Location = New System.Drawing.Point(135, 6)
+        Me.tbSuperCapCapacity.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
+        Me.tbSuperCapCapacity.Name = "tbSuperCapCapacity"
+        Me.tbSuperCapCapacity.Size = New System.Drawing.Size(84, 26)
+        Me.tbSuperCapCapacity.TabIndex = 3
+        '
+        'cbRESSType
+        '
+        Me.cbRESSType.FormattingEnabled = true
+        Me.cbRESSType.Location = New System.Drawing.Point(166, 165)
+        Me.cbRESSType.Name = "cbRESSType"
+        Me.cbRESSType.Size = New System.Drawing.Size(211, 28)
+        Me.cbRESSType.TabIndex = 51
+        '
+        'lblRessType
+        '
+        Me.lblRessType.AutoSize = true
+        Me.lblRessType.Location = New System.Drawing.Point(24, 168)
+        Me.lblRessType.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
+        Me.lblRessType.Name = "lblRessType"
+        Me.lblRessType.Size = New System.Drawing.Size(103, 20)
+        Me.lblRessType.TabIndex = 52
+        Me.lblRessType.Text = "REESS Type"
+        '
         'BatteryForm
         '
         Me.AcceptButton = Me.ButOK
-        Me.AutoScaleDimensions = New System.Drawing.SizeF(6!, 13!)
+        Me.AutoScaleDimensions = New System.Drawing.SizeF(9!, 20!)
         Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
         Me.CancelButton = Me.ButCancel
-        Me.ClientSize = New System.Drawing.Size(898, 351)
-        Me.Controls.Add(Me.Panel3)
-        Me.Controls.Add(Me.Panel2)
-        Me.Controls.Add(Me.Panel1)
+        Me.ClientSize = New System.Drawing.Size(1347, 556)
+        Me.Controls.Add(Me.lblRessType)
+        Me.Controls.Add(Me.cbRESSType)
+        Me.Controls.Add(Me.FlowLayoutPanel1)
         Me.Controls.Add(Me.PicBox)
         Me.Controls.Add(Me.lblTitle)
-        Me.Controls.Add(Me.btnRiMapOpen)
-        Me.Controls.Add(Me.btnBrowseRiMap)
-        Me.Controls.Add(Me.lblRiMap)
-        Me.Controls.Add(Me.tbRiCurve)
-        Me.Controls.Add(Me.pnInertia)
-        Me.Controls.Add(Me.btnSoCCurveOpen)
         Me.Controls.Add(Me.PictureBox1)
-        Me.Controls.Add(Me.btnBrowseSoCCurve)
-        Me.Controls.Add(Me.lblSoCCurve)
         Me.Controls.Add(Me.StatusStrip1)
         Me.Controls.Add(Me.ToolStrip1)
         Me.Controls.Add(Me.ButCancel)
-        Me.Controls.Add(Me.tbSoCCurve)
         Me.Controls.Add(Me.ButOK)
         Me.Controls.Add(Me.lblMakeModel)
         Me.Controls.Add(Me.tbMakeModel)
         Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle
         Me.Icon = CType(resources.GetObject("$this.Icon"),System.Drawing.Icon)
+        Me.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.MaximizeBox = false
         Me.Name = "BatteryForm"
         Me.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide
@@ -536,6 +805,18 @@ Partial Class BatteryForm
         Me.Panel2.PerformLayout
         Me.Panel3.ResumeLayout(false)
         Me.Panel3.PerformLayout
+        Me.FlowLayoutPanel1.ResumeLayout(false)
+        Me.pnBattery.ResumeLayout(false)
+        Me.pnBattery.PerformLayout
+        Me.pnSuperCap.ResumeLayout(false)
+        Me.pnSuperCapMaxV.ResumeLayout(false)
+        Me.pnSuperCapMaxV.PerformLayout
+        Me.pnSuperCapMinV.ResumeLayout(false)
+        Me.pnSuperCapMinV.PerformLayout
+        Me.pnSuperCapResistance.ResumeLayout(false)
+        Me.pnSuperCapResistance.PerformLayout
+        Me.pnSuperCapCapacity.ResumeLayout(false)
+        Me.pnSuperCapCapacity.PerformLayout
         Me.ResumeLayout(false)
         Me.PerformLayout
 
@@ -585,4 +866,25 @@ End Sub
     Friend WithEvents lblCFactor As Label
     Friend WithEvents lblCFactorUnit As Label
     Friend WithEvents tbCFactor As TextBox
+    Friend WithEvents FlowLayoutPanel1 As FlowLayoutPanel
+    Friend WithEvents pnBattery As Panel
+    Friend WithEvents pnSuperCap As Panel
+    Friend WithEvents cbRESSType As ComboBox
+    Friend WithEvents lblRessType As Label
+    Friend WithEvents pnSuperCapMaxV As Panel
+    Friend WithEvents lblSuperCapMaxV As Label
+    Friend WithEvents lblSuperCapMaxVUnit As Label
+    Friend WithEvents tbSuperCapMaxV As TextBox
+    Friend WithEvents pnSuperCapMinV As Panel
+    Friend WithEvents lblSuperCapMinV As Label
+    Friend WithEvents lblSuperCapMinVUnit As Label
+    Friend WithEvents tbSuperCapMinV As TextBox
+    Friend WithEvents pnSuperCapResistance As Panel
+    Friend WithEvents lblSuperCapRi As Label
+    Friend WithEvents lblSuperCapRiUnit As Label
+    Friend WithEvents tbSuperCapRi As TextBox
+    Friend WithEvents pnSuperCapCapacity As Panel
+    Friend WithEvents lblSuperCapCapacity As Label
+    Friend WithEvents lblSuperCapCapacityUnit As Label
+    Friend WithEvents tbSuperCapCapacity As TextBox
 End Class
diff --git a/VECTO/GUI/BatteryForm.vb b/VECTO/GUI/BatteryForm.vb
index b7902b750e3d16923fc913ae88dddb8c30649834..6a40017deffa6c6ba3e416db00ddee450e70abc9 100644
--- a/VECTO/GUI/BatteryForm.vb
+++ b/VECTO/GUI/BatteryForm.vb
@@ -1,4 +1,5 @@
 
+Imports System.Collections.Generic
 Imports System.Drawing.Imaging
 Imports System.IO
 Imports System.Linq
@@ -34,6 +35,8 @@ Public Class BatteryForm
     Public JobDir As String = ""
     Private _changed As Boolean = False
 
+    Private ressType as REESSType
+
     Private _contextMenuFiles As String()
 
 
@@ -56,6 +59,12 @@ Public Class BatteryForm
 
         _changed = False
 
+        cbRESSType.DataSource = New List(Of object)() from{
+            New With {Key .Value = REESSType.Battery, .Label = "Battery"},   
+            New With {Key .Value = REESSType.SuperCap, .Label = "SuperCap"}    
+        }
+        cbRESSType.ValueMember = "Value"
+        cbRESSType.DisplayMember = "Label"
 
         NewBattery()
     End Sub
@@ -77,9 +86,9 @@ Public Class BatteryForm
     End Sub
 
     Private Sub ToolStripBtOpen_Click(sender As Object, e As EventArgs) Handles ToolStripBtOpen.Click
-        If BatteryFileBrowser.OpenDialog(_batteryFile) Then
+        If REESSFileBrowser.OpenDialog(_batteryFile) Then
             Try
-                OpenBatteryFile(BatteryFileBrowser.Files(0))
+                OpenBatteryFile(REESSFileBrowser.Files(0))
             Catch ex As Exception
                 MsgBox(ex.Message, MsgBoxStyle.OkOnly, "Error loading Battery File")
             End Try
@@ -152,16 +161,15 @@ Public Class BatteryForm
 
     'Open VENG file
     Public Sub OpenBatteryFile(file As String)
-        Dim battery As IBatteryPackEngineeringInputData
-
+        
         If ChangeCheckCancel() Then Exit Sub
 
         Dim inputData As IEngineeringInputDataProvider = TryCast(JSONInputDataFactory.ReadComponentData(file),
                                                                 IEngineeringInputDataProvider)
 
-        battery = inputData.JobInputData.Vehicle.Components.ElectricStorage.BatteryPack
+        Dim reess as IREESSPackInputData = inputData.JobInputData.Vehicle.Components.ElectricStorage.REESSPack
 
-        If Cfg.DeclMode <> battery.SavedInDeclarationMode Then
+        If Cfg.DeclMode <> reess.SavedInDeclarationMode Then
             Select Case WrongMode()
                 Case 1
                     Close()
@@ -173,18 +181,51 @@ Public Class BatteryForm
         End If
 
         Dim basePath As String = Path.GetDirectoryName(file)
-        tbMakeModel.Text = battery.Model
-        tbCapacity.Text = battery.Capacity.AsAmpHour.ToGUIFormat()
+        tbMakeModel.Text = reess.Model
+
+        if (reess.StorageType = REESSType.Battery) then
+            pnBattery.Visible = True
+            pnSuperCap.Visible  = False
+            cbRESSType.SelectedValue = REESSType.Battery
+            Dim battery As IBatteryPackEngineeringInputData = ctype(reess, IBatteryPackEngineeringInputData)
+            tbCapacity.Text = battery.Capacity.AsAmpHour.ToGUIFormat()
+
+            tbCFactor.Text = battery.MaxCurrentFactor.ConvertToPerHour().Value.ToGUIFormat()
+            tbSoCMin.Text = (battery.MinSOC * 100).ToGUIFormat()
+            tbSoCMax.Text = (battery.MaxSOC * 100).ToGUIFormat()
+
+            tbSoCCurve.Text = GetRelativePath(battery.VoltageCurve.Source, basePath)
+            tbRiCurve.Text = GetRelativePath(battery.InternalResistanceCurve.Source, basePath)
+
+            tbSuperCapCapacity.Text = String.Empty
+            tbSuperCapMaxV.Text = string.Empty
+            tbSuperCapMinV.Text= string.Empty
+            tbSuperCapRi.Text= string.Empty
+
+        Elseif reess.StorageType = REESSType.SuperCap
+            pnBattery.Visible = False
+            pnSuperCap.Visible  = True
+            cbRESSType.SelectedValue = REESSType.SuperCap
+            Dim superCap As ISuperCapEngineeringInputData = ctype(reess, ISuperCapEngineeringInputData)
+            tbCapacity.Text = String.Empty
+
+            tbCFactor.Text  = String.Empty
+            tbSoCMin.Text  = String.Empty
+            tbSoCMax.Text = String.Empty
 
-        tbCFactor.Text = battery.MaxCurrentFactor.ToGUIFormat()
-        tbSoCMin.Text = (battery.MinSOC * 100).ToGUIFormat()
-        tbSoCMax.Text = (battery.MaxSOC * 100).ToGUIFormat()
+            tbSoCCurve.Text =  String.Empty
+            tbRiCurve.Text = String.Empty
+
+            tbSuperCapCapacity.Text = superCap.Capacity.ToGUIFormat()
+            tbSuperCapMaxV.Text = superCap.MaxVoltage.ToGUIFormat()
+            tbSuperCapMinV.Text= superCap.MinVoltage.ToGUIFormat()
+            tbSuperCapRi.Text= superCap.InternalResistance.ToGUIFormat()
+
+        end if
 
-        tbSoCCurve.Text = GetRelativePath(battery.VoltageCurve.Source, basePath)
-        tbRiCurve.Text = GetRelativePath(battery.InternalResistanceCurve.Source, basePath)
         DeclInit()
 
-        BatteryFileBrowser.UpdateHistory(file)
+        REESSFileBrowser.UpdateHistory(file)
         Text = GetFilenameWithoutPath(file, True)
         LbStatus.Text = ""
         _batteryFile = file
@@ -197,8 +238,8 @@ Public Class BatteryForm
     'Save or Save As function = true if file is saved
     Private Function SaveOrSaveAs(ByVal saveAs As Boolean) As Boolean
         If _batteryFile = "" Or saveAs Then
-            If BatteryFileBrowser.SaveDialog(_batteryFile) Then
-                _batteryFile = BatteryFileBrowser.Files(0)
+            If REESSFileBrowser.SaveDialog(_batteryFile) Then
+                _batteryFile = REESSFileBrowser.Files(0)
             Else
                 Return False
             End If
@@ -209,25 +250,22 @@ Public Class BatteryForm
     'Save VENG file to given filepath. Called by SaveOrSaveAs. 
     Private Function SaveBatteryToFile(ByVal file As String) As Boolean
 
-        Dim battery As Battery = New Battery
-        battery.FilePath = file
+       
 
-        battery.ModelName = tbMakeModel.Text
-        If Trim(battery.ModelName) = "" Then battery.ModelName = "Undefined"
-        battery.BatCapacity = tbCapacity.Text.ToDouble(0)
-
-        battery.PathSoCCurve = tbSoCCurve.Text
-        battery.PathRiCurve = tbRiCurve.Text
-
-        battery.BatMinSoc = tbSoCMin.Text.ToDouble(0)
-        battery.BatMaxSoc = tbSoCMax.Text.ToDouble(0)
-
-        battery.BatCFactor = tbCFactor.Text.ToDouble(0)
-
-        If Not battery.SaveFile Then
-            MsgBox("Cannot save to " & file, MsgBoxStyle.Critical)
-            Return False
-        End If
+        Select Case cbRESSType.SelectedValue.ToString()
+            Case "Battery"
+                dim battery As Battery = FillBattery(file)
+                If Not battery.SaveFile Then
+                    MsgBox("Cannot save to " & file, MsgBoxStyle.Critical)
+                    Return False
+                End If
+            Case "SuperCap"
+                dim superCap As SuperCap = FillSuperCap(file)
+                If Not superCap.SaveFile Then
+                    MsgBox("Cannot save to " & file, MsgBoxStyle.Critical)
+                    Return False
+                End If
+        End Select
 
         If AutoSendTo Then
             If VehicleForm.Visible Then
@@ -237,7 +275,7 @@ Public Class BatteryForm
             End If
         End If
 
-        BatteryFileBrowser.UpdateHistory(file)
+        REESSFileBrowser.UpdateHistory(file)
         Text = GetFilenameWithoutPath(file, True)
         LbStatus.Text = ""
 
@@ -246,6 +284,42 @@ Public Class BatteryForm
         Return True
     End Function
 
+    Private Function FillSuperCap(file As String) As SuperCap
+        Dim superCap As SuperCap = New SuperCap()
+        superCap.FilePath = file
+
+        superCap.ModelName = tbMakeModel.Text
+        If Trim(superCap.ModelName) = "" Then superCap.ModelName = "Undefined"
+
+        
+        superCap.Cap = tbSuperCapCapacity.Text.ToDouble(0)
+        superCap.Ri = _tbSuperCapRi.Text.ToDouble(0)
+
+        superCap.MinV = _tbSuperCapMinV.Text.ToDouble(0)
+        superCap.MaxV = tbSuperCapMaxV.Text.ToDouble(0)
+
+        Return superCap
+    End Function
+
+    Private Function FillBattery(file As string) As Battery
+        Dim battery As Battery = New Battery
+        battery.FilePath = file
+
+        battery.ModelName = tbMakeModel.Text
+        If Trim(battery.ModelName) = "" Then battery.ModelName = "Undefined"
+
+        battery.BatCapacity = tbCapacity.Text.ToDouble(0)
+
+        battery.PathSoCCurve = tbSoCCurve.Text
+        battery.PathRiCurve = tbRiCurve.Text
+
+        battery.BatMinSoc = tbSoCMin.Text.ToDouble(0)
+        battery.BatMaxSoc = tbSoCMax.Text.ToDouble(0)
+
+        battery.BatCFactor = tbCFactor.Text.ToDouble(0)
+        Return battery
+    End Function
+
 
 #Region "Track changes"
 
@@ -336,6 +410,10 @@ Public Class BatteryForm
 
         'If Not File.Exists(_engFile) Then Exit Sub
 
+        if (ressType <> REESSType.Battery) then
+            Return
+        end if
+
         Try
             Dim socFile As String =
                     If(Not String.IsNullOrWhiteSpace(_batteryFile), Path.Combine(Path.GetDirectoryName(_batteryFile), tbSoCCurve.Text), tbSoCCurve.Text)
@@ -496,4 +574,20 @@ Public Class BatteryForm
         UpdatePic()
         Change()
     End Sub
+
+    Private Sub lblRessType_Click(sender As Object, e As EventArgs) Handles lblRessType.Click
+
+    End Sub
+
+    Private Sub cbRESSType_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbRESSType.SelectedIndexChanged
+        If (cbRESSType.SelectedValue.Equals(REESSType.Battery)) Then
+            pnBattery.Visible = True
+            pnSuperCap.Visible = False
+            ressType = REESSType.Battery
+        Else 
+            pnBattery.Visible = False
+            pnSuperCap.Visible = True
+            ressType = REESSType.SuperCap 
+        End If
+    End Sub
 End Class
diff --git a/VECTO/GUI/ElectricMotorForm.Designer.vb b/VECTO/GUI/ElectricMotorForm.Designer.vb
index 55c25f6b0e8fb33e4a84fbaeb389ae48417dfe93..e54bab751acbbb7477e5798c6477d7232530ab62 100644
--- a/VECTO/GUI/ElectricMotorForm.Designer.vb
+++ b/VECTO/GUI/ElectricMotorForm.Designer.vb
@@ -74,67 +74,89 @@ Partial Class ElectricMotorForm
         Me.tbMaxTorque = New System.Windows.Forms.TextBox()
         Me.lblTitle = New System.Windows.Forms.Label()
         Me.PicBox = New System.Windows.Forms.PictureBox()
-        Me.ToolStrip1.SuspendLayout()
-        Me.StatusStrip1.SuspendLayout()
-        CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit()
-        Me.CmOpenFile.SuspendLayout()
-        Me.pnInertia.SuspendLayout()
-        CType(Me.PicBox, System.ComponentModel.ISupportInitialize).BeginInit()
-        Me.SuspendLayout()
+        Me.Panel1 = New System.Windows.Forms.Panel()
+        Me.lblContPwr = New System.Windows.Forms.Label()
+        Me.lblContPwrUnit = New System.Windows.Forms.Label()
+        Me.tbContPwr = New System.Windows.Forms.TextBox()
+        Me.Panel2 = New System.Windows.Forms.Panel()
+        Me.lblOvlBuffer = New System.Windows.Forms.Label()
+        Me.lblOvlBufferUnit = New System.Windows.Forms.Label()
+        Me.tbOvlBuffer = New System.Windows.Forms.TextBox()
+        Me.Panel3 = New System.Windows.Forms.Panel()
+        Me.lblOvlRecovery = New System.Windows.Forms.Label()
+        Me.lblOvlRecoveryFactorUnit = New System.Windows.Forms.Label()
+        Me.tbOverloadRecoveryFactor = New System.Windows.Forms.TextBox()
+        Me.ToolStrip1.SuspendLayout
+        Me.StatusStrip1.SuspendLayout
+        CType(Me.PictureBox1,System.ComponentModel.ISupportInitialize).BeginInit
+        Me.CmOpenFile.SuspendLayout
+        Me.pnInertia.SuspendLayout
+        CType(Me.PicBox,System.ComponentModel.ISupportInitialize).BeginInit
+        Me.Panel1.SuspendLayout
+        Me.Panel2.SuspendLayout
+        Me.Panel3.SuspendLayout
+        Me.SuspendLayout
         '
         'tbInertia
         '
-        Me.tbInertia.Location = New System.Drawing.Point(90, 4)
+        Me.tbInertia.Location = New System.Drawing.Point(163, 8)
+        Me.tbInertia.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.tbInertia.Name = "tbInertia"
-        Me.tbInertia.Size = New System.Drawing.Size(57, 20)
+        Me.tbInertia.Size = New System.Drawing.Size(84, 26)
         Me.tbInertia.TabIndex = 3
         '
         'lblinertiaUnit
         '
-        Me.lblinertiaUnit.AutoSize = True
-        Me.lblinertiaUnit.Location = New System.Drawing.Point(153, 7)
+        Me.lblinertiaUnit.AutoSize = true
+        Me.lblinertiaUnit.Location = New System.Drawing.Point(258, 13)
+        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 = 24
         Me.lblinertiaUnit.Text = "[kgm²]"
         '
         'lblInertia
         '
-        Me.lblInertia.AutoSize = True
-        Me.lblInertia.Location = New System.Drawing.Point(3, 7)
+        Me.lblInertia.AutoSize = true
+        Me.lblInertia.Location = New System.Drawing.Point(4, 11)
+        Me.lblInertia.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
         Me.lblInertia.Name = "lblInertia"
-        Me.lblInertia.Size = New System.Drawing.Size(36, 13)
+        Me.lblInertia.Size = New System.Drawing.Size(54, 20)
         Me.lblInertia.TabIndex = 0
         Me.lblInertia.Text = "Inertia"
         '
         'ButCancel
         '
-        Me.ButCancel.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+        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, 313)
+        Me.ButCancel.Location = New System.Drawing.Point(1216, 482)
+        Me.ButCancel.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.ButCancel.Name = "ButCancel"
-        Me.ButCancel.Size = New System.Drawing.Size(75, 23)
+        Me.ButCancel.Size = New System.Drawing.Size(112, 35)
         Me.ButCancel.TabIndex = 13
         Me.ButCancel.Text = "Cancel"
-        Me.ButCancel.UseVisualStyleBackColor = True
+        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, 313)
+        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(1095, 482)
+        Me.ButOK.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.ButOK.Name = "ButOK"
-        Me.ButOK.Size = New System.Drawing.Size(75, 23)
+        Me.ButOK.Size = New System.Drawing.Size(112, 35)
         Me.ButOK.TabIndex = 12
         Me.ButOK.Text = "Save"
-        Me.ButOK.UseVisualStyleBackColor = True
+        Me.ButOK.UseVisualStyleBackColor = true
         '
         'ToolStrip1
         '
         Me.ToolStrip1.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden
+        Me.ToolStrip1.ImageScalingSize = New System.Drawing.Size(24, 24)
         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.Size = New System.Drawing.Size(898, 25)
+        Me.ToolStrip1.Padding = New System.Windows.Forms.Padding(0, 0, 3, 0)
+        Me.ToolStrip1.Size = New System.Drawing.Size(1347, 33)
         Me.ToolStrip1.TabIndex = 30
         Me.ToolStrip1.Text = "ToolStrip1"
         '
@@ -144,7 +166,7 @@ Partial Class ElectricMotorForm
         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(23, 22)
+        Me.ToolStripBtNew.Size = New System.Drawing.Size(34, 28)
         Me.ToolStripBtNew.Text = "ToolStripButton1"
         Me.ToolStripBtNew.ToolTipText = "New"
         '
@@ -154,7 +176,7 @@ Partial Class ElectricMotorForm
         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(23, 22)
+        Me.ToolStripBtOpen.Size = New System.Drawing.Size(34, 28)
         Me.ToolStripBtOpen.Text = "ToolStripButton1"
         Me.ToolStripBtOpen.ToolTipText = "Open..."
         '
@@ -164,7 +186,7 @@ Partial Class ElectricMotorForm
         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(23, 22)
+        Me.ToolStripBtSave.Size = New System.Drawing.Size(34, 28)
         Me.ToolStripBtSave.Text = "ToolStripButton1"
         Me.ToolStripBtSave.ToolTipText = "Save"
         '
@@ -174,14 +196,14 @@ Partial Class ElectricMotorForm
         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(23, 22)
+        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, 25)
+        Me.ToolStripSeparator3.Size = New System.Drawing.Size(6, 33)
         '
         'ToolStripBtSendTo
         '
@@ -189,14 +211,14 @@ Partial Class ElectricMotorForm
         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(23, 22)
+        Me.ToolStripBtSendTo.Size = New System.Drawing.Size(34, 28)
         Me.ToolStripBtSendTo.Text = "Send to Job Editor"
         Me.ToolStripBtSendTo.ToolTipText = "Send to Job Editor"
         '
         'ToolStripSeparator1
         '
         Me.ToolStripSeparator1.Name = "ToolStripSeparator1"
-        Me.ToolStripSeparator1.Size = New System.Drawing.Size(6, 25)
+        Me.ToolStripSeparator1.Size = New System.Drawing.Size(6, 33)
         '
         'ToolStripButton1
         '
@@ -204,38 +226,42 @@ Partial Class ElectricMotorForm
         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(23, 22)
+        Me.ToolStripButton1.Size = New System.Drawing.Size(34, 28)
         Me.ToolStripButton1.Text = "Help"
         '
         'StatusStrip1
         '
+        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, 339)
+        Me.StatusStrip1.Location = New System.Drawing.Point(0, 523)
         Me.StatusStrip1.Name = "StatusStrip1"
-        Me.StatusStrip1.Size = New System.Drawing.Size(898, 22)
-        Me.StatusStrip1.SizingGrip = False
+        Me.StatusStrip1.Padding = New System.Windows.Forms.Padding(2, 0, 21, 0)
+        Me.StatusStrip1.Size = New System.Drawing.Size(1347, 32)
+        Me.StatusStrip1.SizingGrip = false
         Me.StatusStrip1.TabIndex = 37
         Me.StatusStrip1.Text = "StatusStrip1"
         '
         '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"
         '
         'tbMakeModel
         '
-        Me.tbMakeModel.Location = New System.Drawing.Point(109, 82)
+        Me.tbMakeModel.Location = New System.Drawing.Point(164, 126)
+        Me.tbMakeModel.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.tbMakeModel.Name = "tbMakeModel"
-        Me.tbMakeModel.Size = New System.Drawing.Size(370, 20)
+        Me.tbMakeModel.Size = New System.Drawing.Size(553, 26)
         Me.tbMakeModel.TabIndex = 0
         '
         'lblMakeModel
         '
-        Me.lblMakeModel.AutoSize = True
-        Me.lblMakeModel.Location = New System.Drawing.Point(16, 85)
+        Me.lblMakeModel.AutoSize = true
+        Me.lblMakeModel.Location = New System.Drawing.Point(24, 131)
+        Me.lblMakeModel.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
         Me.lblMakeModel.Name = "lblMakeModel"
-        Me.lblMakeModel.Size = New System.Drawing.Size(87, 13)
+        Me.lblMakeModel.Size = New System.Drawing.Size(126, 20)
         Me.lblMakeModel.TabIndex = 11
         Me.lblMakeModel.Text = "Make and Model"
         '
@@ -243,28 +269,30 @@ Partial Class ElectricMotorForm
         '
         Me.PictureBox1.BackColor = System.Drawing.Color.White
         Me.PictureBox1.Image = Global.TUGraz.VECTO.My.Resources.Resources.VECTO_ENG
-        Me.PictureBox1.Location = New System.Drawing.Point(0, 28)
+        Me.PictureBox1.Location = New System.Drawing.Point(0, 43)
+        Me.PictureBox1.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.PictureBox1.Name = "PictureBox1"
-        Me.PictureBox1.Size = New System.Drawing.Size(502, 40)
+        Me.PictureBox1.Size = New System.Drawing.Size(753, 62)
         Me.PictureBox1.TabIndex = 39
-        Me.PictureBox1.TabStop = False
+        Me.PictureBox1.TabStop = false
         '
         'CmOpenFile
         '
+        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"
         '
         'pnInertia
@@ -272,127 +300,141 @@ Partial Class ElectricMotorForm
         Me.pnInertia.Controls.Add(Me.lblInertia)
         Me.pnInertia.Controls.Add(Me.lblinertiaUnit)
         Me.pnInertia.Controls.Add(Me.tbInertia)
-        Me.pnInertia.Location = New System.Drawing.Point(12, 108)
+        Me.pnInertia.Location = New System.Drawing.Point(18, 166)
+        Me.pnInertia.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.pnInertia.Name = "pnInertia"
-        Me.pnInertia.Size = New System.Drawing.Size(212, 30)
+        Me.pnInertia.Size = New System.Drawing.Size(318, 46)
         Me.pnInertia.TabIndex = 3
         '
         'tbDragTorque
         '
-        Me.tbDragTorque.Location = New System.Drawing.Point(12, 219)
+        Me.tbDragTorque.Location = New System.Drawing.Point(18, 393)
+        Me.tbDragTorque.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.tbDragTorque.Name = "tbDragTorque"
-        Me.tbDragTorque.Size = New System.Drawing.Size(434, 20)
+        Me.tbDragTorque.Size = New System.Drawing.Size(649, 26)
         Me.tbDragTorque.TabIndex = 5
         '
         'lblDragTorque
         '
-        Me.lblDragTorque.AutoSize = True
-        Me.lblDragTorque.Location = New System.Drawing.Point(12, 203)
+        Me.lblDragTorque.AutoSize = true
+        Me.lblDragTorque.Location = New System.Drawing.Point(18, 368)
+        Me.lblDragTorque.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
         Me.lblDragTorque.Name = "lblDragTorque"
-        Me.lblDragTorque.Size = New System.Drawing.Size(98, 13)
+        Me.lblDragTorque.Size = New System.Drawing.Size(143, 20)
         Me.lblDragTorque.TabIndex = 38
         Me.lblDragTorque.Text = "Drag Torque Curve"
         '
         'btnBrowseDragCurve
         '
         Me.btnBrowseDragCurve.Image = Global.TUGraz.VECTO.My.Resources.Resources.Open_icon
-        Me.btnBrowseDragCurve.Location = New System.Drawing.Point(446, 217)
+        Me.btnBrowseDragCurve.Location = New System.Drawing.Point(669, 390)
+        Me.btnBrowseDragCurve.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.btnBrowseDragCurve.Name = "btnBrowseDragCurve"
-        Me.btnBrowseDragCurve.Size = New System.Drawing.Size(24, 24)
+        Me.btnBrowseDragCurve.Size = New System.Drawing.Size(36, 37)
         Me.btnBrowseDragCurve.TabIndex = 6
-        Me.btnBrowseDragCurve.TabStop = False
-        Me.btnBrowseDragCurve.UseVisualStyleBackColor = True
+        Me.btnBrowseDragCurve.TabStop = false
+        Me.btnBrowseDragCurve.UseVisualStyleBackColor = true
         '
         'btnDragCurveOpen
         '
         Me.btnDragCurveOpen.Image = Global.TUGraz.VECTO.My.Resources.Resources.application_export_icon_small
-        Me.btnDragCurveOpen.Location = New System.Drawing.Point(469, 217)
+        Me.btnDragCurveOpen.Location = New System.Drawing.Point(704, 390)
+        Me.btnDragCurveOpen.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.btnDragCurveOpen.Name = "btnDragCurveOpen"
-        Me.btnDragCurveOpen.Size = New System.Drawing.Size(24, 24)
+        Me.btnDragCurveOpen.Size = New System.Drawing.Size(36, 37)
         Me.btnDragCurveOpen.TabIndex = 7
-        Me.btnDragCurveOpen.TabStop = False
-        Me.btnDragCurveOpen.UseVisualStyleBackColor = True
+        Me.btnDragCurveOpen.TabStop = false
+        Me.btnDragCurveOpen.UseVisualStyleBackColor = true
         '
         'btnEmMapOpen
         '
         Me.btnEmMapOpen.Image = Global.TUGraz.VECTO.My.Resources.Resources.application_export_icon_small
-        Me.btnEmMapOpen.Location = New System.Drawing.Point(469, 263)
+        Me.btnEmMapOpen.Location = New System.Drawing.Point(704, 454)
+        Me.btnEmMapOpen.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.btnEmMapOpen.Name = "btnEmMapOpen"
-        Me.btnEmMapOpen.Size = New System.Drawing.Size(24, 24)
+        Me.btnEmMapOpen.Size = New System.Drawing.Size(36, 37)
         Me.btnEmMapOpen.TabIndex = 42
-        Me.btnEmMapOpen.TabStop = False
-        Me.btnEmMapOpen.UseVisualStyleBackColor = True
+        Me.btnEmMapOpen.TabStop = false
+        Me.btnEmMapOpen.UseVisualStyleBackColor = true
         '
         'btnBrowseEmMap
         '
         Me.btnBrowseEmMap.Image = Global.TUGraz.VECTO.My.Resources.Resources.Open_icon
-        Me.btnBrowseEmMap.Location = New System.Drawing.Point(446, 263)
+        Me.btnBrowseEmMap.Location = New System.Drawing.Point(669, 454)
+        Me.btnBrowseEmMap.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.btnBrowseEmMap.Name = "btnBrowseEmMap"
-        Me.btnBrowseEmMap.Size = New System.Drawing.Size(24, 24)
+        Me.btnBrowseEmMap.Size = New System.Drawing.Size(36, 37)
         Me.btnBrowseEmMap.TabIndex = 41
-        Me.btnBrowseEmMap.TabStop = False
-        Me.btnBrowseEmMap.UseVisualStyleBackColor = True
+        Me.btnBrowseEmMap.TabStop = false
+        Me.btnBrowseEmMap.UseVisualStyleBackColor = true
         '
         'lblEmMap
         '
-        Me.lblEmMap.AutoSize = True
-        Me.lblEmMap.Location = New System.Drawing.Point(12, 249)
+        Me.lblEmMap.AutoSize = true
+        Me.lblEmMap.Location = New System.Drawing.Point(18, 432)
+        Me.lblEmMap.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
         Me.lblEmMap.Name = "lblEmMap"
-        Me.lblEmMap.Size = New System.Drawing.Size(163, 13)
+        Me.lblEmMap.Size = New System.Drawing.Size(242, 20)
         Me.lblEmMap.TabIndex = 43
         Me.lblEmMap.Text = "Electric Power Consumption Map"
         '
         'tbMap
         '
-        Me.tbMap.Location = New System.Drawing.Point(12, 265)
+        Me.tbMap.Location = New System.Drawing.Point(18, 457)
+        Me.tbMap.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.tbMap.Name = "tbMap"
-        Me.tbMap.Size = New System.Drawing.Size(434, 20)
+        Me.tbMap.Size = New System.Drawing.Size(649, 26)
         Me.tbMap.TabIndex = 40
         '
         'btnMaxTorqueCurveOpen
         '
         Me.btnMaxTorqueCurveOpen.Image = Global.TUGraz.VECTO.My.Resources.Resources.application_export_icon_small
-        Me.btnMaxTorqueCurveOpen.Location = New System.Drawing.Point(469, 169)
+        Me.btnMaxTorqueCurveOpen.Location = New System.Drawing.Point(704, 328)
+        Me.btnMaxTorqueCurveOpen.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.btnMaxTorqueCurveOpen.Name = "btnMaxTorqueCurveOpen"
-        Me.btnMaxTorqueCurveOpen.Size = New System.Drawing.Size(24, 24)
+        Me.btnMaxTorqueCurveOpen.Size = New System.Drawing.Size(36, 37)
         Me.btnMaxTorqueCurveOpen.TabIndex = 46
-        Me.btnMaxTorqueCurveOpen.TabStop = False
-        Me.btnMaxTorqueCurveOpen.UseVisualStyleBackColor = True
+        Me.btnMaxTorqueCurveOpen.TabStop = false
+        Me.btnMaxTorqueCurveOpen.UseVisualStyleBackColor = true
         '
         'btnBrowseMaxTorque
         '
         Me.btnBrowseMaxTorque.Image = Global.TUGraz.VECTO.My.Resources.Resources.Open_icon
-        Me.btnBrowseMaxTorque.Location = New System.Drawing.Point(446, 169)
+        Me.btnBrowseMaxTorque.Location = New System.Drawing.Point(669, 328)
+        Me.btnBrowseMaxTorque.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.btnBrowseMaxTorque.Name = "btnBrowseMaxTorque"
-        Me.btnBrowseMaxTorque.Size = New System.Drawing.Size(24, 24)
+        Me.btnBrowseMaxTorque.Size = New System.Drawing.Size(36, 37)
         Me.btnBrowseMaxTorque.TabIndex = 45
-        Me.btnBrowseMaxTorque.TabStop = False
-        Me.btnBrowseMaxTorque.UseVisualStyleBackColor = True
+        Me.btnBrowseMaxTorque.TabStop = false
+        Me.btnBrowseMaxTorque.UseVisualStyleBackColor = true
         '
         'lblMaxTorque
         '
-        Me.lblMaxTorque.AutoSize = True
-        Me.lblMaxTorque.Location = New System.Drawing.Point(12, 155)
+        Me.lblMaxTorque.AutoSize = true
+        Me.lblMaxTorque.Location = New System.Drawing.Point(18, 306)
+        Me.lblMaxTorque.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
         Me.lblMaxTorque.Name = "lblMaxTorque"
-        Me.lblMaxTorque.Size = New System.Drawing.Size(222, 13)
+        Me.lblMaxTorque.Size = New System.Drawing.Size(325, 20)
         Me.lblMaxTorque.TabIndex = 47
         Me.lblMaxTorque.Text = "Max Drive and Max Generation Torque Curve"
         '
         'tbMaxTorque
         '
-        Me.tbMaxTorque.Location = New System.Drawing.Point(12, 171)
+        Me.tbMaxTorque.Location = New System.Drawing.Point(18, 331)
+        Me.tbMaxTorque.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.tbMaxTorque.Name = "tbMaxTorque"
-        Me.tbMaxTorque.Size = New System.Drawing.Size(434, 20)
+        Me.tbMaxTorque.Size = New System.Drawing.Size(649, 26)
         Me.tbMaxTorque.TabIndex = 44
         '
         'lblTitle
         '
-        Me.lblTitle.AutoSize = True
+        Me.lblTitle.AutoSize = true
         Me.lblTitle.BackColor = System.Drawing.Color.White
-        Me.lblTitle.Font = New System.Drawing.Font("Microsoft Sans Serif", 18.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
-        Me.lblTitle.Location = New System.Drawing.Point(119, 35)
+        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(178, 54)
+        Me.lblTitle.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
         Me.lblTitle.Name = "lblTitle"
-        Me.lblTitle.Size = New System.Drawing.Size(190, 29)
+        Me.lblTitle.Size = New System.Drawing.Size(281, 40)
         Me.lblTitle.TabIndex = 48
         Me.lblTitle.Text = "Electric Machine"
         '
@@ -400,19 +442,140 @@ Partial Class ElectricMotorForm
         '
         Me.PicBox.BackColor = System.Drawing.Color.LightGray
         Me.PicBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
-        Me.PicBox.Location = New System.Drawing.Point(508, 28)
+        Me.PicBox.Location = New System.Drawing.Point(762, 43)
+        Me.PicBox.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
         Me.PicBox.Name = "PicBox"
-        Me.PicBox.Size = New System.Drawing.Size(382, 266)
+        Me.PicBox.Size = New System.Drawing.Size(572, 408)
         Me.PicBox.TabIndex = 49
-        Me.PicBox.TabStop = False
+        Me.PicBox.TabStop = false
+        '
+        'Panel1
+        '
+        Me.Panel1.Controls.Add(Me.lblContPwr)
+        Me.Panel1.Controls.Add(Me.lblContPwrUnit)
+        Me.Panel1.Controls.Add(Me.tbContPwr)
+        Me.Panel1.Location = New System.Drawing.Point(18, 222)
+        Me.Panel1.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
+        Me.Panel1.Name = "Panel1"
+        Me.Panel1.Size = New System.Drawing.Size(318, 46)
+        Me.Panel1.TabIndex = 25
+        '
+        'lblContPwr
+        '
+        Me.lblContPwr.AutoSize = true
+        Me.lblContPwr.Location = New System.Drawing.Point(4, 11)
+        Me.lblContPwr.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
+        Me.lblContPwr.Name = "lblContPwr"
+        Me.lblContPwr.Size = New System.Drawing.Size(142, 20)
+        Me.lblContPwr.TabIndex = 0
+        Me.lblContPwr.Text = "Continuous Power:"
+        '
+        'lblContPwrUnit
+        '
+        Me.lblContPwrUnit.AutoSize = true
+        Me.lblContPwrUnit.Location = New System.Drawing.Point(258, 11)
+        Me.lblContPwrUnit.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
+        Me.lblContPwrUnit.Name = "lblContPwrUnit"
+        Me.lblContPwrUnit.Size = New System.Drawing.Size(32, 20)
+        Me.lblContPwrUnit.TabIndex = 24
+        Me.lblContPwrUnit.Text = "[W]"
+        '
+        'tbContPwr
+        '
+        Me.tbContPwr.Location = New System.Drawing.Point(163, 6)
+        Me.tbContPwr.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
+        Me.tbContPwr.Name = "tbContPwr"
+        Me.tbContPwr.Size = New System.Drawing.Size(84, 26)
+        Me.tbContPwr.TabIndex = 3
+        '
+        'Panel2
+        '
+        Me.Panel2.Controls.Add(Me.lblOvlBuffer)
+        Me.Panel2.Controls.Add(Me.lblOvlBufferUnit)
+        Me.Panel2.Controls.Add(Me.tbOvlBuffer)
+        Me.Panel2.Location = New System.Drawing.Point(349, 166)
+        Me.Panel2.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
+        Me.Panel2.Name = "Panel2"
+        Me.Panel2.Size = New System.Drawing.Size(391, 46)
+        Me.Panel2.TabIndex = 25
+        '
+        'lblOvlBuffer
+        '
+        Me.lblOvlBuffer.AutoSize = true
+        Me.lblOvlBuffer.Location = New System.Drawing.Point(4, 11)
+        Me.lblOvlBuffer.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
+        Me.lblOvlBuffer.Name = "lblOvlBuffer"
+        Me.lblOvlBuffer.Size = New System.Drawing.Size(181, 20)
+        Me.lblOvlBuffer.TabIndex = 0
+        Me.lblOvlBuffer.Text = "Thermal Overload Buffer"
+        '
+        'lblOvlBufferUnit
+        '
+        Me.lblOvlBufferUnit.AutoSize = true
+        Me.lblOvlBufferUnit.Location = New System.Drawing.Point(344, 11)
+        Me.lblOvlBufferUnit.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
+        Me.lblOvlBufferUnit.Name = "lblOvlBufferUnit"
+        Me.lblOvlBufferUnit.Size = New System.Drawing.Size(38, 20)
+        Me.lblOvlBufferUnit.TabIndex = 24
+        Me.lblOvlBufferUnit.Text = "[MJ]"
+        '
+        'tbOvlBuffer
+        '
+        Me.tbOvlBuffer.Location = New System.Drawing.Point(265, 8)
+        Me.tbOvlBuffer.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
+        Me.tbOvlBuffer.Name = "tbOvlBuffer"
+        Me.tbOvlBuffer.Size = New System.Drawing.Size(71, 26)
+        Me.tbOvlBuffer.TabIndex = 3
+        '
+        'Panel3
+        '
+        Me.Panel3.Controls.Add(Me.lblOvlRecovery)
+        Me.Panel3.Controls.Add(Me.lblOvlRecoveryFactorUnit)
+        Me.Panel3.Controls.Add(Me.tbOverloadRecoveryFactor)
+        Me.Panel3.Location = New System.Drawing.Point(349, 222)
+        Me.Panel3.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
+        Me.Panel3.Name = "Panel3"
+        Me.Panel3.Size = New System.Drawing.Size(391, 46)
+        Me.Panel3.TabIndex = 26
+        '
+        'lblOvlRecovery
+        '
+        Me.lblOvlRecovery.AutoSize = true
+        Me.lblOvlRecovery.Location = New System.Drawing.Point(4, 11)
+        Me.lblOvlRecovery.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
+        Me.lblOvlRecovery.Name = "lblOvlRecovery"
+        Me.lblOvlRecovery.Size = New System.Drawing.Size(253, 20)
+        Me.lblOvlRecovery.TabIndex = 0
+        Me.lblOvlRecovery.Text = "Thermal Overload Recovery Factor"
+        '
+        'lblOvlRecoveryFactorUnit
+        '
+        Me.lblOvlRecoveryFactorUnit.AutoSize = true
+        Me.lblOvlRecoveryFactorUnit.Location = New System.Drawing.Point(345, 11)
+        Me.lblOvlRecoveryFactorUnit.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
+        Me.lblOvlRecoveryFactorUnit.Name = "lblOvlRecoveryFactorUnit"
+        Me.lblOvlRecoveryFactorUnit.Size = New System.Drawing.Size(22, 20)
+        Me.lblOvlRecoveryFactorUnit.TabIndex = 24
+        Me.lblOvlRecoveryFactorUnit.Text = "[-]"
+        '
+        'tbOverloadRecoveryFactor
+        '
+        Me.tbOverloadRecoveryFactor.Location = New System.Drawing.Point(265, 8)
+        Me.tbOverloadRecoveryFactor.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
+        Me.tbOverloadRecoveryFactor.Name = "tbOverloadRecoveryFactor"
+        Me.tbOverloadRecoveryFactor.Size = New System.Drawing.Size(72, 26)
+        Me.tbOverloadRecoveryFactor.TabIndex = 3
         '
         'ElectricMotorForm
         '
         Me.AcceptButton = Me.ButOK
-        Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
+        Me.AutoScaleDimensions = New System.Drawing.SizeF(9!, 20!)
         Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
         Me.CancelButton = Me.ButCancel
-        Me.ClientSize = New System.Drawing.Size(898, 361)
+        Me.ClientSize = New System.Drawing.Size(1347, 555)
+        Me.Controls.Add(Me.Panel3)
+        Me.Controls.Add(Me.Panel2)
+        Me.Controls.Add(Me.Panel1)
         Me.Controls.Add(Me.PicBox)
         Me.Controls.Add(Me.lblTitle)
         Me.Controls.Add(Me.btnMaxTorqueCurveOpen)
@@ -436,25 +599,32 @@ Partial Class ElectricMotorForm
         Me.Controls.Add(Me.lblMakeModel)
         Me.Controls.Add(Me.tbMakeModel)
         Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle
-        Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
-        Me.MaximizeBox = False
+        Me.Icon = CType(resources.GetObject("$this.Icon"),System.Drawing.Icon)
+        Me.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
+        Me.MaximizeBox = false
         Me.Name = "ElectricMotorForm"
         Me.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide
         Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
         Me.Text = "Electric Machine"
-        Me.ToolStrip1.ResumeLayout(False)
-        Me.ToolStrip1.PerformLayout()
-        Me.StatusStrip1.ResumeLayout(False)
-        Me.StatusStrip1.PerformLayout()
-        CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit()
-        Me.CmOpenFile.ResumeLayout(False)
-        Me.pnInertia.ResumeLayout(False)
-        Me.pnInertia.PerformLayout()
-        CType(Me.PicBox, System.ComponentModel.ISupportInitialize).EndInit()
-        Me.ResumeLayout(False)
-        Me.PerformLayout()
+        Me.ToolStrip1.ResumeLayout(false)
+        Me.ToolStrip1.PerformLayout
+        Me.StatusStrip1.ResumeLayout(false)
+        Me.StatusStrip1.PerformLayout
+        CType(Me.PictureBox1,System.ComponentModel.ISupportInitialize).EndInit
+        Me.CmOpenFile.ResumeLayout(false)
+        Me.pnInertia.ResumeLayout(false)
+        Me.pnInertia.PerformLayout
+        CType(Me.PicBox,System.ComponentModel.ISupportInitialize).EndInit
+        Me.Panel1.ResumeLayout(false)
+        Me.Panel1.PerformLayout
+        Me.Panel2.ResumeLayout(false)
+        Me.Panel2.PerformLayout
+        Me.Panel3.ResumeLayout(false)
+        Me.Panel3.PerformLayout
+        Me.ResumeLayout(false)
+        Me.PerformLayout
 
-    End Sub
+End Sub
     Friend WithEvents tbInertia As TextBox
     Friend WithEvents lblinertiaUnit As Label
     Friend WithEvents lblInertia As Label
@@ -492,4 +662,16 @@ Partial Class ElectricMotorForm
     Friend WithEvents tbMaxTorque As TextBox
     Friend WithEvents lblTitle As Label
     Friend WithEvents PicBox As PictureBox
+    Friend WithEvents Panel1 As Panel
+    Friend WithEvents lblContPwr As Label
+    Friend WithEvents lblContPwrUnit As Label
+    Friend WithEvents tbContPwr As TextBox
+    Friend WithEvents Panel2 As Panel
+    Friend WithEvents lblOvlBuffer As Label
+    Friend WithEvents lblOvlBufferUnit As Label
+    Friend WithEvents tbOvlBuffer As TextBox
+    Friend WithEvents Panel3 As Panel
+    Friend WithEvents lblOvlRecovery As Label
+    Friend WithEvents lblOvlRecoveryFactorUnit As Label
+    Friend WithEvents tbOverloadRecoveryFactor As TextBox
 End Class
diff --git a/VECTO/GUI/ElectricMotorForm.vb b/VECTO/GUI/ElectricMotorForm.vb
index bf33fbbe3d840e0e760434de4c1b3d0d37d14a9d..d9b73564cc8f49c0b246071301b35aecded58120 100644
--- a/VECTO/GUI/ElectricMotorForm.vb
+++ b/VECTO/GUI/ElectricMotorForm.vb
@@ -176,6 +176,9 @@ Public Class ElectricMotorForm
         tbMakeModel.Text = engine.Model
         tbInertia.Text = engine.Inertia.ToGUIFormat()
 
+        tbOvlBuffer.Text = (engine.OverloadBuffer.Value() / 1e6).ToGUIFormat()
+        tbContPwr.Text = engine.ContinuousPower.ToGUIFormat()
+        tbOverloadRecoveryFactor.Text = engine.OverloadRecoveryFactor.ToGUIFormat()
 
         tbDragTorque.Text = GetRelativePath(engine.DragCurve.Source, basePath)
         tbMaxTorque.Text = GetRelativePath(engine.FullLoadCurve.Source, basePath)
@@ -213,6 +216,9 @@ Public Class ElectricMotorForm
         em.ModelName = tbMakeModel.Text
         If Trim(em.ModelName) = "" Then em.ModelName = "Undefined"
         em.MotorInertia = tbInertia.Text.ToDouble(0)
+        em.ThermalOverloadCapacity = tbOvlBuffer.Text.ToDouble(0)
+        em.ContPwr = tbContPwr.Text.ToDouble(0)
+        em.OverloadRecoveryFactor = tbOverloadRecoveryFactor.Text.ToDouble(0)
 
         em.PathMaxTorque = tbMaxTorque.Text
         em.PathDrag = tbDragTorque.Text
diff --git a/VECTO/GUI/HybridStratebyParamsForm.vb b/VECTO/GUI/HybridStratebyParamsForm.vb
index ca2c06d3d7543fe891d294c2a51465efbda8fef0..105d60891b5f1e43621bdf66529aa8dbc62d4ceb 100644
--- a/VECTO/GUI/HybridStratebyParamsForm.vb
+++ b/VECTO/GUI/HybridStratebyParamsForm.vb
@@ -188,7 +188,7 @@ Public Class HybridStrategyParamsForm
 
         DeclInit()
 
-        BatteryFileBrowser.UpdateHistory(file)
+        REESSFileBrowser.UpdateHistory(file)
         Text = GetFilenameWithoutPath(file, True)
         LbStatus.Text = ""
         _strategyParamsFile = file
diff --git a/VECTO/GUI/MainForm.vb b/VECTO/GUI/MainForm.vb
index 4e88de67cfbd2ca9dd24f9e02fb5d3ebfdba222e..554b785c160698df49ffa6d5c8dcceb632e464cf 100644
--- a/VECTO/GUI/MainForm.vb
+++ b/VECTO/GUI/MainForm.vb
@@ -140,7 +140,7 @@ Imports TUGraz.VectoCore.Utils
         TorqueConverterShiftPolygonFileBrowser = New FileBrowser("vgbs")
         CrossWindCorrectionFileBrowser = New FileBrowser("vcdx")
         ElectricMotorFileBrowser = New FileBrowser("vem")
-        BatteryFileBrowser = New FileBrowser("vbat")
+        REESSFileBrowser = New FileBrowser("vreess")
         DriverDecisionFactorVelocityDropFileBrowser = New FileBrowser("DfVelocityDrop")
         DriverDecisionFactorTargetSpeedFileBrowser = New FileBrowser("DfTargetSpeed")
         DriverDecisionFactorVelocityDropFileBrowser.Extensions = New String() {"csv"}
@@ -180,7 +180,7 @@ Imports TUGraz.VectoCore.Utils
         TorqueConverterShiftPolygonFileBrowser.Extensions = New String() {"vgbs"}
         CrossWindCorrectionFileBrowser.Extensions = New String() {"vcdv", "vcdb"}
         ElectricMotorFileBrowser.Extensions = New String() {"vem"}
-        BatteryFileBrowser.Extensions = New String() {"vbat"}
+        REESSFileBrowser.Extensions = New String() {"vreess"}
 
         ElectricMachineDragTorqueFileBrowser.Extensions = New String() {"vemd"}
         ElectricMachineMaxTorqueFileBrowser.Extensions = New String() {"vemp"}
diff --git a/VECTO/GUI/VehicleForm.vb b/VECTO/GUI/VehicleForm.vb
index f15a78ce97aed4fe9d39cb266712971cd7bf4c0e..2fc3a0bf9c5ce06c450d7f78ab366a5a8f7b8d9c 100644
--- a/VECTO/GUI/VehicleForm.vb
+++ b/VECTO/GUI/VehicleForm.vb
@@ -460,7 +460,7 @@ Public Class VehicleForm
 			If(angledrive.LossMap Is Nothing, "", GetRelativePath(angledrive.LossMap.Source, basePath))
 
 		If (vehicle.VehicleType = VectoSimulationJobType.BatteryElectricVehicle OrElse vehicle.VehicleType = VectoSimulationJobType.ParallelHybridVehicle) Then
-			tbBattery.Text = GetRelativePath(vehicle.Components.ElectricStorage.BatteryPack.DataSource.SourceFile, basePath)
+			tbBattery.Text = GetRelativePath(vehicle.Components.ElectricStorage.REESSPack.DataSource.SourceFile, basePath)
 			tbBatteryPackCnt.Text = vehicle.Components.ElectricStorage.Count.ToGUIFormat()
 			tbInitialSoC.Text = (vehicle.InitialSOC * 100).ToGUIFormat()
 
@@ -1060,8 +1060,8 @@ Public Class VehicleForm
     End Sub
 
     Private Sub btnBrowseBattery_Click(sender As Object, e As EventArgs) Handles btnBrowseBattery.Click
-        If BatteryFileBrowser.OpenDialog(FileRepl(tbBattery.Text, GetPath(_vehFile))) Then
-            tbBattery.Text = GetFilenameWithoutDirectory(BatteryFileBrowser.Files(0), GetPath(_vehFile))
+        If REESSFileBrowser.OpenDialog(FileRepl(tbBattery.Text, GetPath(_vehFile))) Then
+            tbBattery.Text = GetFilenameWithoutDirectory(REESSFileBrowser.Files(0), GetPath(_vehFile))
         End If
     End Sub
 
diff --git a/VECTO/Input Files/Battery.vb b/VECTO/Input Files/Battery.vb
index 2e72a647b55638123ca1e6d9f5ed7d865748bc6a..9a965c0a17186583637199b5385b7f7e53649d1b 100644
--- a/VECTO/Input Files/Battery.vb	
+++ b/VECTO/Input Files/Battery.vb	
@@ -25,7 +25,7 @@ Public Class Battery
     Public BatMinSoc As Double
     Public BatMaxSoc As Double
     Public BatCFactor As Double
-
+    
     Public Sub New()
         _myPath = ""
         _filePath = ""
@@ -233,11 +233,16 @@ Public Class Battery
         End Get
     End Property
 
-    Public ReadOnly Property MaxCurrentFactor As Double Implements IBatteryPackDeclarationInputData.MaxCurrentFactor
+    Public ReadOnly Property MaxCurrentFactor As PerSecond Implements IBatteryPackDeclarationInputData.MaxCurrentFactor
         Get
-            Return BatCFactor
+            Return BatCFactor.SI(Unit.SI.Per.Hour).Cast(Of PerSecond)
         End Get
     End Property
 
 
+    Public ReadOnly Property StorageType As REESSType Implements IREESSPackInputData.StorageType
+    get
+        Return REESSType.Battery
+    End Get
+    End Property
 End Class
\ No newline at end of file
diff --git a/VECTO/Input Files/ElectricMachine.vb b/VECTO/Input Files/ElectricMachine.vb
index ad83209833cb88b31a1ad7051a1cb0cb63a05aad..ce1ed68248884a7d51869e390703bb67f107ab97 100644
--- a/VECTO/Input Files/ElectricMachine.vb	
+++ b/VECTO/Input Files/ElectricMachine.vb	
@@ -35,6 +35,8 @@ Public Class ElectricMachine
 
     Public ModelName As String
     Public MotorInertia As Double
+    Public ThermalOverloadCapacity As Double
+    Public ContPwr As Double
 
     ''' <summary>
     ''' New instance. Initialise
@@ -220,6 +222,20 @@ Public Class ElectricMachine
         End Get
     End Property
 
+    Public ReadOnly Property OverloadBuffer As Joule Implements IElectricMotorDeclarationInputData.OverloadBuffer
+    get
+            Return ThermalOverloadCapacity.SI(Unit.SI.Mega.Joule).Cast(of Joule)
+    End Get
+    End Property
+
+    Public Property OverloadRecoveryFactor As Double Implements IElectricMotorDeclarationInputData.OverloadRecoveryFactor
+
+    Public ReadOnly Property ContinuousPower As Watt Implements IElectricMotorDeclarationInputData.ContinuousPower
+    get
+        Return ContPwr.si(of Watt)
+    End Get
+    End Property
+
     Public Property PathMaxTorque(Optional ByVal original As Boolean = False) As String
         Get
             If original Then
diff --git a/VECTO/Input Files/SuperCap.vb b/VECTO/Input Files/SuperCap.vb
new file mode 100644
index 0000000000000000000000000000000000000000..2695b0f60fb8aed0d2a6f2340f893c1c62128543
--- /dev/null
+++ b/VECTO/Input Files/SuperCap.vb	
@@ -0,0 +1,153 @@
+Imports System.Collections.Generic
+Imports System.ComponentModel.DataAnnotations
+Imports System.IO
+Imports System.Linq
+Imports TUGraz.VectoCommon.InputData
+Imports TUGraz.VectoCommon.Models
+Imports TUGraz.VectoCommon.Utils
+
+Public Class SuperCap 
+    Implements ISuperCapEngineeringInputData
+
+    Private _filePath As String
+    Private _myPath As String
+    Public ModelName As String
+    Public Cap As Double
+    Public Ri As Double
+    Public MinV As Double
+    Public MaxV As Double
+
+    Public Sub New()
+        _myPath = ""
+        _filePath = ""
+
+        SetDefault()
+    End Sub
+
+    Private Sub SetDefault()
+        ModelName = "Undefined"
+        Cap = 0
+        Ri = 0
+        MinV = 0
+        MaxV = 0
+    End Sub
+
+    Public ReadOnly Property DataSource As DataSource Implements IComponentInputData.DataSource
+        Get
+            Dim retVal As DataSource = New DataSource()
+            retVal.SourceType = DataSourceType.JSONFile
+            retVal.SourceFile = FilePath
+            Return retVal
+        End Get
+    End Property
+
+    Public ReadOnly Property SavedInDeclarationMode As Boolean Implements IComponentInputData.SavedInDeclarationMode
+        Get
+            Return Cfg.DeclMode
+        End Get
+    End Property
+
+    Public ReadOnly Property Manufacturer As String Implements IComponentInputData.Manufacturer
+        Get
+            Return String.Empty
+        End Get
+    End Property
+
+    Public ReadOnly Property Model As String Implements IComponentInputData.Model
+        Get
+            Return ModelName
+        End Get
+    End Property
+
+    Public ReadOnly Property [Date] As Date Implements IComponentInputData.[Date]
+        Get
+            Return Now.ToUniversalTime()
+        End Get
+    End Property
+
+    Public ReadOnly Property AppVersion As String Implements IComponentInputData.AppVersion
+        Get
+            Return "VECTO-GUI"
+        End Get
+    End Property
+
+    Public ReadOnly Property CertificationMethod As CertificationMethod Implements IComponentInputData.CertificationMethod
+        Get
+            Return CertificationMethod.NotCertified
+        End Get
+    End Property
+    Public ReadOnly Property CertificationNumber As String Implements IComponentInputData.CertificationNumber
+        Get
+            Return TUGraz.VectoCore.Configuration.Constants.NOT_AVailABLE
+        End Get
+    End Property
+    Public ReadOnly Property DigestValue As DigestData Implements IComponentInputData.DigestValue
+        Get
+            Return Nothing
+        End Get
+    End Property
+    Public ReadOnly Property Capacity As Farad Implements ISuperCapDeclarationInputData.Capacity
+        get
+            Return cap.SI(of Farad)
+        End Get
+    End Property
+    Public ReadOnly Property InternalResistance As Ohm Implements ISuperCapDeclarationInputData.InternalResistance
+        get
+            Return ri.SI(of Ohm)
+        End Get
+    End Property
+    Public ReadOnly Property MinVoltage As Volt Implements ISuperCapDeclarationInputData.MinVoltage
+        get
+            Return minv.SI(of Volt)
+        End Get
+    End Property
+    Public ReadOnly Property MaxVoltage As Volt Implements ISuperCapDeclarationInputData.MaxVoltage
+        get
+            Return MaxV.SI(of Volt)
+        End Get
+    End Property
+
+    Public Property FilePath() As String
+        Get
+            Return _filePath
+        End Get
+        Set(ByVal value As String)
+            _filePath = value
+            If _filePath = "" Then
+                _myPath = ""
+            Else
+                _myPath = Path.GetDirectoryName(_filePath) & "\"
+            End If
+        End Set
+    End Property
+
+    Public Function SaveFile() As Boolean
+
+        Dim validationResults As IList(Of ValidationResult) =
+                Validate(If(Cfg.DeclMode, ExecutionMode.Declaration, ExecutionMode.Engineering), Nothing, False)
+
+        If validationResults.Count > 0 Then
+            Dim messages As IEnumerable(Of String) =
+                    validationResults.Select(Function(r) r.ErrorMessage + String.Join(", ", r.MemberNames.Distinct()))
+            MsgBox("Invalid input." + Environment.NewLine + String.Join(Environment.NewLine, messages), MsgBoxStyle.OkOnly,
+                   "Failed to save battery")
+            Return False
+        End If
+
+        Try
+            Dim writer As JSONFileWriter = New JSONFileWriter()
+            writer.SaveSuperCap(Me, _filePath, Cfg.DeclMode)
+
+        Catch ex As Exception
+            MsgBox("Faled to write Battery file: " + ex.Message)
+            Return False
+        End Try
+        Return True
+    End Function
+
+    Public ReadOnly Property StorageType As REESSType Implements IREESSPackInputData.StorageType
+        get
+            Return REESSType.SuperCap
+        End Get
+    End Property
+End Class
\ No newline at end of file
diff --git a/VECTO/Input Files/Vehicle.vb b/VECTO/Input Files/Vehicle.vb
index cd358bc7974b48d3dc6bc1032c1fa25d527d7aa9..fbda188371358b522a6307f4ffba98694d1c22cb 100644
--- a/VECTO/Input Files/Vehicle.vb	
+++ b/VECTO/Input Files/Vehicle.vb	
@@ -865,23 +865,14 @@ Public Class ElectricStorageWrapper
         Vehicle = veh
     End Sub
 
-    Public ReadOnly Property BatteryPack As IBatteryPackDeclarationInputData Implements IElectricStorageDeclarationInputData.BatteryPack
-        Get
-            Return Me
-        End Get
-    End Property
-    Public ReadOnly Property IElectricStorageEngineeringInputData_Count As Integer Implements IElectricStorageEngineeringInputData.Count
-        Get
-            Return Vehicle.NumBatteryPacks
-        End Get
-    End Property
-    Public ReadOnly Property IElectricStorageEngineeringInputData_BatteryPack As IBatteryPackEngineeringInputData Implements IElectricStorageEngineeringInputData.BatteryPack
+    
+    Public ReadOnly Property REESSPack As IREESSPackInputData Implements IElectricStorageEngineeringInputData.REESSPack
         Get
             return Me
         End Get
     End Property
 
-    Public ReadOnly Property Count As Integer Implements IElectricStorageDeclarationInputData.Count
+    Public ReadOnly Property Count As Integer Implements IElectricStorageEngineeringInputData.Count
         Get
             Return Vehicle.NumBatteryPacks
         End Get
@@ -908,7 +899,8 @@ Public Class ElectricStorageWrapper
     Public ReadOnly Property Capacity As AmpereSecond Implements IBatteryPackDeclarationInputData.Capacity
     Public ReadOnly Property InternalResistanceCurve As TableData Implements IBatteryPackDeclarationInputData.InternalResistanceCurve
     Public ReadOnly Property VoltageCurve As TableData Implements IBatteryPackDeclarationInputData.VoltageCurve
-    Public ReadOnly Property MaxCurrentFactor As Double Implements IBatteryPackDeclarationInputData.MaxCurrentFactor
+    Public ReadOnly Property MaxCurrentFactor As PerSecond Implements IBatteryPackDeclarationInputData.MaxCurrentFactor
+    Public ReadOnly Property StorageType As REESSType Implements IREESSPackInputData.StorageType
 End Class
 
 Public Class ElectricMachineWrapper
@@ -957,4 +949,7 @@ Public Class ElectricMachineWrapper
     Public ReadOnly Property DragCurve As TableData Implements IElectricMotorDeclarationInputData.DragCurve
     Public ReadOnly Property EfficiencyMap As TableData Implements IElectricMotorDeclarationInputData.EfficiencyMap
     Public ReadOnly Property Inertia As KilogramSquareMeter Implements IElectricMotorDeclarationInputData.Inertia
+    Public ReadOnly Property OverloadBuffer As Joule Implements IElectricMotorDeclarationInputData.OverloadBuffer
+    Public ReadOnly Property OverloadRecoveryFactor As Double Implements IElectricMotorDeclarationInputData.OverloadRecoveryFactor
+    Public ReadOnly Property ContinuousPower As Watt Implements IElectricMotorDeclarationInputData.ContinuousPower
 End Class
\ No newline at end of file
diff --git a/VECTO/VECTO.vbproj b/VECTO/VECTO.vbproj
index 46355be9b3bb5ea7e6815e5fc0bde99074978eaa..c3826b8a792f8646024e354feaa96bf8135af0c1 100644
--- a/VECTO/VECTO.vbproj
+++ b/VECTO/VECTO.vbproj
@@ -337,6 +337,7 @@
     <Compile Include="Input Files\HybridStrategyParams.vb" />
     <Compile Include="Input Files\MockComponents.vb" />
     <Compile Include="Input Files\MockVehicleInputData.vb" />
+    <Compile Include="Input Files\SuperCap.vb" />
     <Compile Include="Input Files\VectoEPTPJob.vb" />
     <Compile Include="Input Files\VectoJob.vb" />
     <Compile Include="Input Files\Vehicle.vb" />
diff --git a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs
index 02ab5498a9211a950e57c9008d767c76f58d9192..f85efbc197c685c690bc0083512fa53af0d279f8 100644
--- a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs
+++ b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs
@@ -698,6 +698,12 @@ namespace TUGraz.VectoCommon.InputData
 		TableData EfficiencyMap { get; }
 
 		KilogramSquareMeter Inertia { get; }
+
+		Joule OverloadBuffer { get; }
+
+		double OverloadRecoveryFactor { get; }
+
+		Watt ContinuousPower { get; }
 	}
 
 	public interface IElectricMachinesDeclarationInputData
@@ -720,12 +726,23 @@ namespace TUGraz.VectoCommon.InputData
 
 	public interface IElectricStorageDeclarationInputData
 	{
-		IBatteryPackDeclarationInputData BatteryPack { get; }
+		IREESSPackInputData REESSPack { get; }
 
 		int Count { get; }
 	}
 
-	public interface IBatteryPackDeclarationInputData : IComponentInputData
+	public enum REESSType
+	{
+		Battery,
+		SuperCap
+	}
+
+	public interface IREESSPackInputData : IComponentInputData
+	{
+		REESSType StorageType { get; }
+	}
+
+	public interface IBatteryPackDeclarationInputData : IREESSPackInputData
 	{
 		
 		double MinSOC { get; }
@@ -738,7 +755,18 @@ namespace TUGraz.VectoCommon.InputData
 
 		TableData VoltageCurve { get; }
 
-		double MaxCurrentFactor { get; }
+		PerSecond MaxCurrentFactor { get; }
+	}
+
+	public interface ISuperCapDeclarationInputData : IREESSPackInputData
+	{
+		Farad Capacity { get; }
+
+		Ohm InternalResistance { get; }
+
+		Volt MinVoltage { get; }
+
+		Volt MaxVoltage { get; }
 	}
 
 
diff --git a/VectoCommon/VectoCommon/InputData/EngineeringInputData.cs b/VectoCommon/VectoCommon/InputData/EngineeringInputData.cs
index f8ca10c55d796bbbd25d01e86c3060d74ecde3e4..ca4cb8c81790b52578daa42282c6538010e10742 100644
--- a/VectoCommon/VectoCommon/InputData/EngineeringInputData.cs
+++ b/VectoCommon/VectoCommon/InputData/EngineeringInputData.cs
@@ -419,9 +419,7 @@ namespace TUGraz.VectoCommon.InputData
 
 	public interface IElectricStorageEngineeringInputData : IElectricStorageDeclarationInputData
 	{
-		new IBatteryPackEngineeringInputData BatteryPack { get; }
 
-		int Count { get; }
 	}
 
 	public interface IBatteryPackEngineeringInputData : IBatteryPackDeclarationInputData
@@ -429,6 +427,11 @@ namespace TUGraz.VectoCommon.InputData
 		
 	}
 
+	public interface ISuperCapEngineeringInputData : ISuperCapDeclarationInputData
+	{
+
+	}
+
 	public interface IDriverModelData { }
 
 	public interface IDriverAccelerationData : IDriverModelData
diff --git a/VectoCommon/VectoCommon/Models/HybridStrategyResponse.cs b/VectoCommon/VectoCommon/Models/HybridStrategyResponse.cs
index c11db7a245268294fbee3571ff440c4b57c010dc..408ba98a65674a58dbd522fb9d92507f653e84bd 100644
--- a/VectoCommon/VectoCommon/Models/HybridStrategyResponse.cs
+++ b/VectoCommon/VectoCommon/Models/HybridStrategyResponse.cs
@@ -15,7 +15,7 @@ namespace TUGraz.VectoCommon.Models {
 		public PerSecond DeltaEngineSpeed { get; set; }
 	}
 
-	public class HybridStrategyResponse : IHybridStrategyResponse
+	public class HybridStrategyResponse : AbstractComponentResponse, IHybridStrategyResponse
 	{
 		public Dictionary<PowertrainPosition, NewtonMeter> MechanicalAssistPower;
 		public bool ShiftRequired { get; set; }
@@ -62,7 +62,7 @@ namespace TUGraz.VectoCommon.Models {
 			return ToString().Equals(other.ToString(), StringComparison.InvariantCultureIgnoreCase);
 		}
 
-		public string ToString()
+		public override string ToString()
 		{
 			var setting = string.Join(", ", Setting.MechanicalAssistPower.Select(x => $"{x.Key}, {x.Value}"));
 			return $"{U}: {setting} {Score} G{Gear}";
diff --git a/VectoCommon/VectoCommon/Models/IResponse.cs b/VectoCommon/VectoCommon/Models/IResponse.cs
index b27f1c6e7f0ba38f4f19709c57a2569835b19d8e..3af51d4357c038a39699dc1b8309a1a62778a669 100644
--- a/VectoCommon/VectoCommon/Models/IResponse.cs
+++ b/VectoCommon/VectoCommon/Models/IResponse.cs
@@ -181,24 +181,24 @@ namespace TUGraz.VectoCommon.Models
 		HybridControllerResponse HybridController { get; set; }
 	}
 
-	public class HybridControllerResponse
+	public class HybridControllerResponse : AbstractComponentResponse
 	{
 		public HybridStrategyResponse StrategySettings { get; set; }
 	}
 
-	public interface IBatteryResponse
+	public interface IRESSResponse
 	{
 		Second AbsTime { get; set; }
 
 		Second SimulationInterval { get; set; }
 
-		Watt MaxBatteryLoadCharge { get; set; }
+		Watt MaxChargePower { get; set; }
 
-		Watt MaxBatteryLoadDischarge { get; set; }
+		Watt MaxDischargePower { get; set; }
 
-		Watt BatteryPower { get; set; }
+		Watt PowerDemand { get; set; }
 
-		Watt BatteryLoss { get; set; }
+		Watt LossPower { get; set; }
 
 		double StateOfCharge { get; set; }
 
@@ -207,7 +207,7 @@ namespace TUGraz.VectoCommon.Models
 
 	public interface IElectricSystemResponse
 	{
-		IBatteryResponse BatteryResponse { get; set; }
+		IRESSResponse RESSResponse { get; set; }
 
 		Watt AuxPower { get; set; }
 
@@ -219,7 +219,7 @@ namespace TUGraz.VectoCommon.Models
 
 		Watt MaxPowerDrag { get; }
 
-		Watt BatteryPowerDemand { get; set; }
+		Watt RESSPowerDemand { get; set; }
 
 		object Source { get; }
 	}
diff --git a/VectoCommon/VectoCommon/Utils/SI.cs b/VectoCommon/VectoCommon/Utils/SI.cs
index c91a7d77edf85cc79fc89e555aacd125ef7b8d9f..6a66126612d25aeb5c5282ea6d8fd6790c4f888c 100644
--- a/VectoCommon/VectoCommon/Utils/SI.cs
+++ b/VectoCommon/VectoCommon/Utils/SI.cs
@@ -1064,6 +1064,8 @@ namespace TUGraz.VectoCommon.Utils
 		{
 			return SIBase<AmpereSecond>.Create(i.Value() * t.Value());
 		}
+
+		
 	}
 
 	public class AmpereSecond : SIBase<AmpereSecond>
@@ -1087,6 +1089,10 @@ namespace TUGraz.VectoCommon.Utils
 		{
 			return SIBase<WattSecond>.Create(ampereSeconds.Val * v.Value());
 		}
+		public static Ampere operator *(AmpereSecond i, PerSecond ps)
+		{
+			return SIBase<Ampere>.Create(i.Value() * ps.Value());
+		}
 	}
 
 	/// <summary>
@@ -1130,6 +1136,28 @@ namespace TUGraz.VectoCommon.Utils
 		public override string UnitString { get { return "Ω"; } }
 	}
 
+	public class Farad : SIBase<Farad>
+	{
+		private static readonly int[] Units = { -1, -2, 4, 2, 0, 0, 0 };
+
+		private Farad(double val) : base(val, Units) {}
+
+		public override  string UnitString
+		{
+			get { return "F"; }
+		}
+
+		public static Volt operator /(AmpereSecond charge, Farad capacity)
+		{
+			return SIBase<Volt>.Create(charge.Value() / capacity.Val);
+		}
+
+		public static AmpereSecond operator *(Farad capacity, Volt v)
+		{
+			return SIBase<AmpereSecond>.Create(capacity.Val * v.Value());
+		}
+	}
+
 	public class VolumePerMeter : SIBase<VolumePerMeter>
 	{
 		private static readonly int[] Units = { 0, 2, 0, 0, 0, 0, 0 };
diff --git a/VectoCommon/VectoCommon/Utils/VectoMath.cs b/VectoCommon/VectoCommon/Utils/VectoMath.cs
index 67beafee5c300863ee77ba96169764c40c3468a9..c4e941db311fb3ae2f6e2eb38e3c6b906f3ba4ba 100644
--- a/VectoCommon/VectoCommon/Utils/VectoMath.cs
+++ b/VectoCommon/VectoCommon/Utils/VectoMath.cs
@@ -175,6 +175,15 @@ namespace TUGraz.VectoCommon.Utils
 		[MethodImpl(MethodImplOptions.AggressiveInlining)]
 		public static T Max<T>(T c1, T c2) where T : IComparable
 		{
+			if (c1 == null)
+			{
+				return c2;
+			}
+
+			if (c2 == null)
+			{
+				return c1;
+			}
 			return c1.CompareTo(c2) > 0 ? c1 : c2;
 		}
 
diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONBattery.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONBattery.cs
index caae949b18dc48c74ad271accd8b37f86f8f27d1..ebf4c679880d30f28f45eaa132b395433492b539 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONBattery.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONBattery.cs
@@ -9,7 +9,7 @@ using TUGraz.VectoCore.InputData.Reader.ComponentData;
 
 namespace TUGraz.VectoCore.InputData.FileIO.JSON
 {
-	public class JSONBatteryV1 : JSONFile, IBatteryPackEngineeringInputData
+	public class JSONBatteryV1 : JSONFile, IBatteryPackEngineeringInputData, ISuperCapEngineeringInputData
 	{
 		public JSONBatteryV1(JObject data, string filename, bool tolerateMissing = false) : base(data, filename,
 			tolerateMissing) { }
@@ -54,11 +54,43 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 			get { return Body.GetEx<double>("SOC_max") / 100.0; }
 		}
 
-		public AmpereSecond Capacity
+		AmpereSecond IBatteryPackDeclarationInputData.Capacity
 		{
 			get { return Body.GetEx<double>("Capacity").SI(Unit.SI.Ampere.Hour).Cast<AmpereSecond>(); }
 		}
 
+		Farad ISuperCapDeclarationInputData.Capacity
+		{
+			get
+			{
+				return Body.GetEx<double>("Capacity").SI<Farad>();
+			}
+		}
+
+		public Ohm InternalResistance
+		{
+			get
+			{
+				return Body.GetEx<double>("InternalResistance").SI<Ohm>();
+			}
+		}
+
+		public Volt MinVoltage
+		{
+			get
+			{
+				return Body.GetEx<double>("U_min").SI<Volt>();
+			}
+		}
+
+		public Volt MaxVoltage
+		{
+			get
+			{
+				return Body.GetEx<double>("U_max").SI<Volt>();
+			}
+		}
+
 		public TableData InternalResistanceCurve
 		{
 			get
@@ -97,9 +129,18 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 			}
 		}
 
-		public double MaxCurrentFactor
+		public PerSecond MaxCurrentFactor
 		{
-			get { return Body.GetEx<double>("MaxCurrentFactor"); }
+			get { return Body.GetEx<double>("MaxCurrentFactor").SI(Unit.SI.Per.Hour).Cast<PerSecond>(); }
+		}
+
+
+		public REESSType StorageType
+		{
+			get
+			{
+				return Body["REESSType"] == null ? REESSType.Battery : Body.GetEx<string>("REESSType").ParseEnum<REESSType>();
+			}
 		}
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs
index e7a09e8394c4b6d7ca1485e38d4ba00a1d0de9e6..aac5cf3355e71257b87b7ab4ad834116c07fc384 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs
@@ -85,7 +85,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 					tmp = JSONInputDataFactory.ReadShiftParameters(filename, tolerateMissing);
 					break;
 				case Constants.FileExtensions.BatteryFile:
-					tmp = JSONInputDataFactory.ReadBatteryData(filename, tolerateMissing);
+					tmp = JSONInputDataFactory.ReadREESSData(filename, tolerateMissing);
 					break;
 				case Constants.FileExtensions.ElectricMotorFile:
 					tmp = JSONInputDataFactory.ReadElectricMotorData(filename, tolerateMissing);
@@ -268,7 +268,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 			get
 			{
 				return new JSONElectricStorageEngineeringInputData {
-					BatteryPack = Battery,
+					REESSPack = Battery,
 					Count = 1
 				};
 			}
diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONElectricMotor.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONElectricMotor.cs
index fef75d632edfc73df94a81de7508e7416188687a..031e9e0cc5393745a5fe6936c77ac1b19fb16895 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONElectricMotor.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONElectricMotor.cs
@@ -50,5 +50,25 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON {
 		{
 			get { return Body.GetEx<double>("Inertia").SI<KilogramSquareMeter>(); }
 		}
+
+		public Joule OverloadBuffer
+		{
+			get { return Body.GetValueOrDefault<double>("ThermalOverloadBuffer")?.SI(Unit.SI.Mega.Joule).Cast<Joule>() ?? 1e18.SI<Joule>(); }
+		}
+
+		public double OverloadRecoveryFactor
+		{
+			get
+			{
+				return Body.GetValueOrDefault<double>("ThermalOverloadRecoveryFactor") ?? 0.9;
+			}
+		}
+
+		public Watt ContinuousPower
+		{
+			get { return Body.GetValueOrDefault<double>("ContinuousPower")?.SI<Watt>() ?? 1e12.SI<Watt>(); }
+		}
+
+		
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputDataFactory.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputDataFactory.cs
index 7488df94be5817ad193ad4b2acb59c6daa7ab7d6..c1620f1812ad79743c1b7ff7c85ee73b4bf8805c 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputDataFactory.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputDataFactory.cs
@@ -188,7 +188,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
         }
 
 
-        public static IBatteryPackEngineeringInputData ReadBatteryData(string filename, bool tolerateMissing)
+        public static IREESSPackInputData ReadREESSData(string filename, bool tolerateMissing)
 		{
 			var json = ReadFile(filename);
 			var version = ReadVersion(json);
diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONSubComponent.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONSubComponent.cs
index 6e61fc5c9593a92491cd9a2091b91e9bdda5ed7f..43941ecb2e6e569f253c9218d3c20e1c86f51c92 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONSubComponent.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONSubComponent.cs
@@ -673,12 +673,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 
     public class JSONElectricStorageEngineeringInputData : IElectricStorageEngineeringInputData
 	{
-		IBatteryPackDeclarationInputData IElectricStorageDeclarationInputData.BatteryPack
-		{
-			get { return BatteryPack; }
-		}
+		public IREESSPackInputData REESSPack { get; set; }
 
-		public IBatteryPackEngineeringInputData BatteryPack { get; internal set; }
+		
 		public int Count { get; internal set; }
 	}
 
diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs
index 06dff6fadf175a5b6416319332a79b55edebfdb1..3aa808a7e8937c7be7abac0b30f1cce1bdcf016e 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs
@@ -136,7 +136,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 		{
 			return new JSONElectricStorageEngineeringInputData() {
 				Count = Body["Battery"].GetEx<int>("NumPacks"),
-				BatteryPack = JSONInputDataFactory.ReadBatteryData(Path.Combine(BasePath, Body["Battery"].GetEx<string>("BatteryFile")), false)
+				REESSPack = JSONInputDataFactory.ReadREESSData(Path.Combine(BasePath, Body["Battery"].GetEx<string>("BatteryFile")), false)
 			};
 		}
 
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs
index 17210ab1b20e3d386ab564f550ea8930cd67bff7..ed209466b5a7d4b6637882ba08597e31e02751b2 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs
@@ -620,17 +620,38 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 
 		public BatteryData CreateBatteryData(IElectricStorageEngineeringInputData batteryInputData, double initialSOC)
 		{
-			if (batteryInputData == null) {
+			if (batteryInputData == null || batteryInputData.REESSPack.StorageType != REESSType.Battery) {
 				return null;
 			}
 
+			var bat = batteryInputData.REESSPack as IBatteryPackEngineeringInputData;
+
 			return new BatteryData() {
-				MinSOC = batteryInputData.BatteryPack.MinSOC,
-				MaxSOC = batteryInputData.BatteryPack.MaxSOC,
-				MaxCurrent = (batteryInputData.BatteryPack.Capacity.AsAmpHour * batteryInputData.BatteryPack.MaxCurrentFactor * batteryInputData.Count).SI<Ampere>(),
-				Capacity = batteryInputData.Count * batteryInputData.BatteryPack.Capacity,
-				InternalResistance = BatteryInternalResistanceReader.Create(batteryInputData.BatteryPack.InternalResistanceCurve, batteryInputData.Count),
-				SOCMap = BatterySOCReader.Create(batteryInputData.BatteryPack.VoltageCurve),
+				MinSOC = bat.MinSOC,
+				MaxSOC = bat.MaxSOC,
+				MaxCurrent = bat.Capacity * bat.MaxCurrentFactor * batteryInputData.Count,
+				Capacity = batteryInputData.Count * bat.Capacity,
+				InternalResistance = BatteryInternalResistanceReader.Create(bat.InternalResistanceCurve, batteryInputData.Count),
+				SOCMap = BatterySOCReader.Create(bat.VoltageCurve),
+				InitialSoC = initialSOC
+			};
+		}
+
+		public SuperCapData CreateSuperCapData(IElectricStorageEngineeringInputData reessInputData, double initialSOC)
+		{
+			if (reessInputData == null || reessInputData.REESSPack.StorageType != REESSType.SuperCap)
+			{
+				return null;
+			}
+
+			var superCap = reessInputData.REESSPack as ISuperCapEngineeringInputData;
+
+			return new SuperCapData()
+			{
+				Capacity = reessInputData.Count * superCap.Capacity,
+				InternalResistance = superCap.InternalResistance / reessInputData.Count,
+				MinVoltage = superCap.MinVoltage,
+				MaxVoltage = superCap.MaxVoltage,
 				InitialSoC = initialSOC
 			};
 		}
@@ -661,6 +682,9 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 				DragCurve = ElectricMotorDragCurveReader.Create(motorData.DragCurve, ratio, count, efficiency),
 				EfficiencyMap = ElectricMotorMapReader.Create(motorData.EfficiencyMap, ratio, count, efficiency),
 				Inertia = motorData.Inertia,
+				ContinuousPower = motorData.ContinuousPower * count,
+				OverloadBuffer = motorData.OverloadBuffer * count,
+				OverloadRegenerationFactor = motorData.OverloadRecoveryFactor,
 			};
 		}
 
diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringModeVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringModeVectoRunDataFactory.cs
index 6c30a9ff7db7248c5a5e635b2ff9801f4100a068..6faf1f1febc89af97de40d16fb9a4d161fe51da2 100644
--- a/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringModeVectoRunDataFactory.cs
+++ b/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringModeVectoRunDataFactory.cs
@@ -132,6 +132,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
                     ElectricMachinesData = dao.CreateElectricMachines(vehicle.Components.ElectricMachines),
                     //HybridStrategyParameters = dao.CreateHybridStrategyParameters(InputDataProvider.JobInputData.HybridStrategyParameters),
                     BatteryData = dao.CreateBatteryData(vehicle.Components.ElectricStorage, vehicle.InitialSOC),
+					SuperCapData = dao.CreateSuperCapData(vehicle.Components.ElectricStorage, vehicle.InitialSOC),
                     SimulationType = SimulationType.DistanceCycle | SimulationType.MeasuredSpeedCycle | SimulationType.PWheel,
                     //GearshiftParameters = dao.CreateGearshiftData(
                     //    gearboxData.Type, InputDataProvider.DriverInputData.GearshiftInputData,
@@ -184,8 +185,9 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
 
 					var electricMachines = dao.CreateElectricMachines(vehicle.Components.ElectricMachines) ?? new List<Tuple<PowertrainPosition, ElectricMotorData>>();
 					var battery = dao.CreateBatteryData(vehicle.Components.ElectricStorage, vehicle.InitialSOC);
+					var superCap = dao.CreateSuperCapData(vehicle.Components.ElectricStorage, vehicle.InitialSOC);
 
-					var jobType = electricMachines.Count > 0 && battery != null
+					var jobType = electricMachines.Count > 0 && (battery != null || superCap != null)
 						? VectoSimulationJobType.ParallelHybridVehicle
 						: VectoSimulationJobType.ConventionalVehicle;
 
@@ -211,6 +213,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
 						ElectricMachinesData = electricMachines,
 						HybridStrategyParameters = hybridParameters,
 						BatteryData = battery,
+						SuperCapData = superCap,
 						SimulationType = SimulationType.DistanceCycle | SimulationType.MeasuredSpeedCycle | SimulationType.PWheel,
 						GearshiftParameters = dao.CreateGearshiftData(
 							gearboxData.Type, InputDataProvider.DriverInputData.GearshiftInputData,
diff --git a/VectoCore/VectoCore/Models/Connector/Ports/IBatteryPort.cs b/VectoCore/VectoCore/Models/Connector/Ports/IElectricEnergyStoragePort.cs
similarity index 70%
rename from VectoCore/VectoCore/Models/Connector/Ports/IBatteryPort.cs
rename to VectoCore/VectoCore/Models/Connector/Ports/IElectricEnergyStoragePort.cs
index c6bc9e87e20f2c22451b589286bacd59cd3ff07d..ebad9f4e946f2686a9959235365c5676b7870305 100644
--- a/VectoCore/VectoCore/Models/Connector/Ports/IBatteryPort.cs
+++ b/VectoCore/VectoCore/Models/Connector/Ports/IElectricEnergyStoragePort.cs
@@ -6,10 +6,10 @@ namespace TUGraz.VectoCore.Models.Connector.Ports.Impl
 {
 	public interface IBatteryProvider
 	{
-		IBatteryPort MainBatteryPort { get; }
+		IElectricEnergyStoragePort MainBatteryPort { get; }
 	}
 
-	public interface IBatteryPort
+	public interface IElectricEnergyStoragePort
 	{
 
 		void Initialize(double initialSoC);
@@ -23,33 +23,33 @@ namespace TUGraz.VectoCore.Models.Connector.Ports.Impl
 		/// <param name="powerDemand"></param>
 		/// <param name="dryRun"></param>
 		/// <returns></returns>
-		IBatteryResponse Request(Second absTime, Second dt, Watt powerDemand, bool dryRun);
+		IRESSResponse Request(Second absTime, Second dt, Watt powerDemand, bool dryRun);
 
 	}
 
 	public interface IElectricAuxConnecor
 	{
-		void Connect(IBatteryAuxPort aux);
+		void Connect(IElectricAuxPort aux);
 	}
 
 	public interface IElectricChargerConnector
 	{
-		void Connect(IBatteryChargePort charger);
+		void Connect(IElectricChargerPort charger);
 	}
 
 	public interface IBatteryConnector
 	{
-		void Connect(IBattery battery);
+		void Connect(IElectricEnergyStorage battery);
 	}
 
-	public interface IBatteryAuxPort
+	public interface IElectricAuxPort
 	{
 		Watt Initialize();
 
 		Watt PowerDemand(Second absTime, Second dt, bool dryRun);
 	}
 
-	public interface IBatteryChargePort
+	public interface IElectricChargerPort
 	{
 		Watt Initialize();
 
diff --git a/VectoCore/VectoCore/Models/Connector/Ports/Impl/BatteryResponse.cs b/VectoCore/VectoCore/Models/Connector/Ports/Impl/BatteryResponse.cs
index fedde47a012cb669f6bafa1e5da98e94b47085b7..06023c3d862d1258838c4917473fa7c7bd6fce92 100644
--- a/VectoCore/VectoCore/Models/Connector/Ports/Impl/BatteryResponse.cs
+++ b/VectoCore/VectoCore/Models/Connector/Ports/Impl/BatteryResponse.cs
@@ -4,9 +4,9 @@ using TUGraz.VectoCommon.Utils;
 
 namespace TUGraz.VectoCore.Models.Connector.Ports.Impl
 {
-	public abstract class AbstractBatteryResponse : IBatteryResponse
+	public abstract class AbstractRESSResponse : IRESSResponse
 	{
-		protected AbstractBatteryResponse(object source)
+		protected AbstractRESSResponse(object source)
 		{
 			Source = source;
 		}
@@ -15,13 +15,13 @@ namespace TUGraz.VectoCore.Models.Connector.Ports.Impl
 
 		public Second SimulationInterval { get; set; }
 
-		public Watt MaxBatteryLoadCharge { get; set; }
+		public Watt MaxChargePower { get; set; }
 
-		public Watt MaxBatteryLoadDischarge { get; set; }
+		public Watt MaxDischargePower { get; set; }
 
-		public Watt BatteryPower { get; set; }
+		public Watt PowerDemand { get; set; }
 
-		public Watt BatteryLoss { get; set; }
+		public Watt LossPower { get; set; }
 
 		public double StateOfCharge { get; set; }
 
@@ -29,26 +29,26 @@ namespace TUGraz.VectoCore.Models.Connector.Ports.Impl
 	}
 
 
-	public class BatteryResponseSuccess : AbstractBatteryResponse
+	public class RESSResponseSuccess : AbstractRESSResponse
 	{
-		public BatteryResponseSuccess(object source) : base(source) { }
+		public RESSResponseSuccess(object source) : base(source) { }
 
 		
 	}
 
-	public class BatteryOverloadResponse : AbstractBatteryResponse
+	public class RESSOverloadResponse : AbstractRESSResponse
 	{
-		public BatteryOverloadResponse(object source) : base(source) { }
+		public RESSOverloadResponse(object source) : base(source) { }
 	}
 
-	public class BatteryUnderloadResponse : AbstractBatteryResponse
+	public class RESSUnderloadResponse : AbstractRESSResponse
 	{
-		public BatteryUnderloadResponse(object source) : base(source) { }
+		public RESSUnderloadResponse(object source) : base(source) { }
 	}
 
-	public class BatteryDryRunResponse : AbstractBatteryResponse
+	public class RESSDryRunResponse : AbstractRESSResponse
 	{
-		public BatteryDryRunResponse(object source) : base(source) { }
+		public RESSDryRunResponse(object source) : base(source) { }
 	}
 
 
@@ -70,13 +70,13 @@ namespace TUGraz.VectoCore.Models.Connector.Ports.Impl
 
 		public Watt ChargingPower { get; set; }
 
-		public IBatteryResponse BatteryResponse { get; set; }
+		public IRESSResponse RESSResponse { get; set; }
 
 		public Watt MaxPowerDrive
 		{
 			get
 			{
-				return (BatteryResponse != null && BatteryResponse.MaxBatteryLoadDischarge != null ? BatteryResponse.MaxBatteryLoadDischarge : 0.SI<Watt>()) -
+				return (RESSResponse != null && RESSResponse.MaxDischargePower != null ? RESSResponse.MaxDischargePower : 0.SI<Watt>()) -
 						(ChargingPower != null ? ChargingPower : 0.SI<Watt>()) +
 						(AuxPower != null ? AuxPower : 0.SI<Watt>());
 			}
@@ -86,13 +86,13 @@ namespace TUGraz.VectoCore.Models.Connector.Ports.Impl
 		{
 			get
 			{
-				return (BatteryResponse != null && BatteryResponse.MaxBatteryLoadCharge != null ? BatteryResponse.MaxBatteryLoadCharge : 0.SI<Watt>()) -
+				return (RESSResponse != null && RESSResponse.MaxChargePower != null ? RESSResponse.MaxChargePower : 0.SI<Watt>()) -
 						(ChargingPower != null ? ChargingPower : 0.SI<Watt>()) +
 						(AuxPower != null ? AuxPower : 0.SI<Watt>());
 			}
 		}
 
-		public Watt BatteryPowerDemand { get; set; }
+		public Watt RESSPowerDemand { get; set; }
 
 		public object Source { get; }
 
diff --git a/VectoCore/VectoCore/Models/Connector/Ports/Impl/Response.cs b/VectoCore/VectoCore/Models/Connector/Ports/Impl/Response.cs
index 673abe5f5706cc53057981233011757787ac49e4..64e25d64424b1b735be8ce74bd9ad95e4a091072 100644
--- a/VectoCore/VectoCore/Models/Connector/Ports/Impl/Response.cs
+++ b/VectoCore/VectoCore/Models/Connector/Ports/Impl/Response.cs
@@ -194,6 +194,11 @@ namespace TUGraz.VectoCore.Models.Connector.Ports.Impl
 		public ResponseGearShift(object source, IResponse subResponse) : base(source, subResponse) { }
 	}
 
+	internal class ResponseDifferentGearEngaged : AbstractResponse
+	{
+		public ResponseDifferentGearEngaged(object source) : base(source) { }
+	}
+
 /*
 	internal class ResponseEngineSpeedTooLow : ResponseDryRun {}
 */
diff --git a/VectoCore/VectoCore/Models/Simulation/Data/ModalResultField.cs b/VectoCore/VectoCore/Models/Simulation/Data/ModalResultField.cs
index 678119ae705a821bf87dff8476b0c9262a4f7c41..4d73a002e6aa902f0d61173a8e9a70933b63b0a6 100644
--- a/VectoCore/VectoCore/Models/Simulation/Data/ModalResultField.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Data/ModalResultField.cs
@@ -391,6 +391,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Data
 		//[ModalResultField(typeof(SI), caption: "P_em-{0}_brake [kW]", outputFactor: 1e-3)] P_electricMotor_brake_,
 		[ModalResultField(typeof(SI), caption: "P_em-{0}_loss [kW]", outputFactor: 1e-3)] P_electricMotorLoss_,
 		[ModalResultField(typeof(SI), caption: "P_em-{0}_inertia_loss [kW]", outputFactor: 1e-3)] P_electricMotorInertiaLoss_,
+		[ModalResultField(typeof(SI), caption: "EM-{0}_OverloadBuffer [%]", outputFactor: 100)] ElectricMotor_OvlBuffer_,
 
 		// only for graphDrawing Testcase
 		[ModalResultField(typeof(SI), caption: "P_em-P2_mech [kW]", outputFactor: 1e-3)]
@@ -407,17 +408,17 @@ namespace TUGraz.VectoCore.Models.Simulation.Data
         P_electricMotor_mech_B3,
         // -->
 
-        [ModalResultField(typeof(SI), caption: "P_bat_T [kW]", outputFactor: 1e-3)] P_battery_terminal,
-		[ModalResultField(typeof(SI), caption: "P_bat_int [kW]", outputFactor: 1e-3)] P_battery_int,
-		[ModalResultField(typeof(SI), caption: "P_bat_loss [kW]", outputFactor: 1e-3)] P_battery_loss,
-		[ModalResultField(typeof(SI), caption: "Battery SOC [%]", outputFactor: 100)] BatteryStateOfCharge,
-		[ModalResultField(typeof(SI), caption: "P_bat charge max [kW]", outputFactor: 1e-3)] P_battery_charge_max,
-		[ModalResultField(typeof(SI), caption: "P_bat discharge max [kW]", outputFactor: 1e-3)] P_battery_discharge_max,
-		[ModalResultField(typeof(SI), caption: "U_bat_terminal [V]")] U_bat_terminal,
-		[ModalResultField(typeof(SI), caption: "U_0_bat [V]")] U0_bat,
-		[ModalResultField(typeof(SI), caption: "I_bat [kW]")] I_bat,
+        [ModalResultField(typeof(SI), caption: "P_reess_T [kW]", outputFactor: 1e-3)] P_reess_terminal,
+		[ModalResultField(typeof(SI), caption: "P_reess_int [kW]", outputFactor: 1e-3)] P_reess_int,
+		[ModalResultField(typeof(SI), caption: "P_reess_loss [kW]", outputFactor: 1e-3)] P_reess_loss,
+		[ModalResultField(typeof(SI), caption: "REESS SOC [%]", outputFactor: 100)] REESSStateOfCharge,
+		[ModalResultField(typeof(SI), caption: "P_reess charge max [kW]", outputFactor: 1e-3)] P_reess_charge_max,
+		[ModalResultField(typeof(SI), caption: "P_reess discharge max [kW]", outputFactor: 1e-3)] P_reess_discharge_max,
+		[ModalResultField(typeof(SI), caption: "U_reess_terminal [V]")] U_reess_terminal,
+		[ModalResultField(typeof(SI), caption: "U_0_reess [V]")] U0_reess,
+		[ModalResultField(typeof(SI), caption: "I_reess [kW]")] I_reess,
 		
-		[ModalResultField(typeof(SI), caption: "E_Batt [kWh]", outputFactor: 1/3600e3)] E_Bat,
+		[ModalResultField(typeof(SI), caption: "E_reess [kWh]", outputFactor: 1/3600e3)] E_RESS,
     }
 
 	[AttributeUsage(AttributeTargets.Field)]
diff --git a/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs b/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs
index dd9a2c48cbbd50e0644f9ffb41c48cf9b6ce1d67..db520fb99f7969d479e661e1fc6813a23b04bfd7 100644
--- a/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs
@@ -128,6 +128,9 @@ namespace TUGraz.VectoCore.Models.Simulation.Data
 
 		public BatteryData BatteryData { get; internal set; }
 
+		public SuperCapData SuperCapData { get; internal set; }
+
+
 		public SimulationType SimulationType { get; set; }
 
 		public VTPData VTPData { get; set; }
diff --git a/VectoCore/VectoCore/Models/Simulation/DataBus/IDataBus.cs b/VectoCore/VectoCore/Models/Simulation/DataBus/IDataBus.cs
index d590da8402408d5835aaaeb5f1aecd655d774b62..f0dc1d31742cd700794345bddc17e6341aca922a 100644
--- a/VectoCore/VectoCore/Models/Simulation/DataBus/IDataBus.cs
+++ b/VectoCore/VectoCore/Models/Simulation/DataBus/IDataBus.cs
@@ -70,14 +70,14 @@ namespace TUGraz.VectoCore.Models.Simulation.DataBus
 
 		IDrivingCycleInfo DrivingCycleInfo { get; }
 
-
-
 		IElectricMotorInfo ElectricMotorInfo(PowertrainPosition pos);
 
-		IBatteryInfo BatteryInfo { get; }
+		IRESSInfo BatteryInfo { get; }
 
 		ITorqueConverterControl TorqueConverterCtl { get; }
 		IPowertainInfo PowertrainInfo { get; }
+
+		IHybridControllerInfo HybridControllerInfo { get; }
 	}
 
 	public interface IPowertainInfo
diff --git a/VectoCore/VectoCore/Models/Simulation/DataBus/IBatteryInfo.cs b/VectoCore/VectoCore/Models/Simulation/DataBus/IRESSInfo.cs
similarity index 70%
rename from VectoCore/VectoCore/Models/Simulation/DataBus/IBatteryInfo.cs
rename to VectoCore/VectoCore/Models/Simulation/DataBus/IRESSInfo.cs
index 26b8155839be38e66258b15c8b15183ff487e826..4f14b5555dc9342c1482cddf0792bb29becb88ec 100644
--- a/VectoCore/VectoCore/Models/Simulation/DataBus/IBatteryInfo.cs
+++ b/VectoCore/VectoCore/Models/Simulation/DataBus/IRESSInfo.cs
@@ -2,9 +2,9 @@
 
 namespace TUGraz.VectoCore.Models.Simulation.DataBus
 {
-	public interface IBatteryInfo
+	public interface IRESSInfo
 	{
-		Volt InternalCellVoltage { get; }
+		Volt InternalVoltage { get; }
 
 		double StateOfCharge { get; }
 
@@ -15,5 +15,9 @@ namespace TUGraz.VectoCore.Models.Simulation.DataBus
 		Watt MaxChargePower(Second dt);
 
 		Watt MaxDischargePower(Second dt);
+
+		double MinSoC { get; }
+
+		double MaxSoC { get; }
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
index ede11954b97567aaa7cd458a57c89469303b858b..3eb9472c2e7fc08e9ffcc8642c4d1a16f11300f8 100644
--- a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
@@ -369,12 +369,23 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 			}
 
 			var container = new VehicleContainer(data.ExecutionMode, _modData, _sumWriter) { RunData = data };
+			var es = new ElectricSystem(container);
 
-			var battery = new Battery(container, data.BatteryData);
-			battery.Initialize(data.BatteryData.InitialSoC);
+			if (data.BatteryData != null) {
+				var battery = new Battery(container, data.BatteryData);
+				battery.Initialize(data.BatteryData.InitialSoC);
+				es.Connect(battery);
+			}
 
-			var es = new ElectricSystem(container);
-			es.Connect(battery);
+			if (data.SuperCapData != null) {
+				var superCap = new SuperCap(container, data.SuperCapData);
+				superCap.Initialize(data.SuperCapData.InitialSoC);
+				es.Connect(superCap);
+			}
+
+			//var battery = new Battery(container, data.BatteryData);
+			//battery.Initialize(data.BatteryData.InitialSoC);
+			//es.Connect(battery);
 			
 			var aux = new ElectricAuxiliary(container);
 			aux.AddConstant("P_aux_el", data.ElectricAuxDemand ?? 0.SI<Watt>());
@@ -436,11 +447,23 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 
 			var container = new VehicleContainer(data.ExecutionMode, _modData, _sumWriter) { RunData = data };
 
-			var battery = new Battery(container, data.BatteryData);
-			battery.Initialize(data.BatteryData.InitialSoC);
+			if (data.BatteryData != null && data.SuperCapData != null) {
+				throw new VectoException("Only one REESS is supported.");
+			}
 
 			var es = new ElectricSystem(container);
-			es.Connect(battery);
+
+			if (data.BatteryData != null) {
+				var battery = new Battery(container, data.BatteryData);
+				battery.Initialize(data.BatteryData.InitialSoC);
+				es.Connect(battery);
+			}
+
+			if (data.SuperCapData != null) {
+				var superCap = new SuperCap(container, data.SuperCapData);
+				superCap.Initialize(data.SuperCapData.InitialSoC);
+				es.Connect(superCap);
+			}
 
 			var ctl = new BatteryElectricMotorController(container, es);
 
@@ -572,11 +595,23 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 			//	throw new VectoException("CycleType must be DistanceBased");
 			//}
 
-			var battery = new Battery(container, data.BatteryData);
-			battery.Initialize(data.BatteryData.InitialSoC);
-
 			var es = new ElectricSystem(container);
-			es.Connect(battery);
+			if (data.BatteryData != null) {
+				var battery = new Battery(container, data.BatteryData);
+				battery.Initialize(data.BatteryData.InitialSoC);
+				es.Connect(battery);
+			}
+
+			if (data.SuperCapData != null) {
+				var superCap = new SuperCap(container, data.SuperCapData);
+				superCap.Initialize(data.SuperCapData.InitialSoC);
+				es.Connect(superCap);
+			}
+
+			//var battery = new Battery(container, data.BatteryData);
+			//battery.Initialize(data.BatteryData.InitialSoC);
+			//es.Connect(battery);
+
 			var aux = new ElectricAuxiliary(container);
 			aux.AddConstant("P_aux_el", data.ElectricAuxDemand ?? 0.SI<Watt>());
 			es.Connect(aux);
diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/VehicleContainer.cs b/VectoCore/VectoCore/Models/Simulation/Impl/VehicleContainer.cs
index 112c9aefd9e37fbcee3e7f2586fce6e8bb896c4a..1c1560dd88fe206c3d17ad5c7ead45dbfdce60f5 100644
--- a/VectoCore/VectoCore/Models/Simulation/Impl/VehicleContainer.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Impl/VehicleContainer.cs
@@ -72,7 +72,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 
 		public virtual IDrivingCycleInfo DrivingCycleInfo { get; protected set; }
 
-		public IBatteryInfo BatteryInfo { get; protected set; }
+		public IRESSInfo BatteryInfo { get; protected set; }
 
 
 		internal ISimulationOutPort Cycle;
@@ -122,6 +122,11 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 			get { return this; }
 		}
 
+		public IHybridControllerInfo HybridControllerInfo
+		{
+			get { return HybridController; }
+		}
+
 		public virtual void AddComponent(VectoSimulationComponent component)
 		{
 			var commitPriority = 0;
@@ -171,7 +176,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 					HasElectricMotor = true;
 				})
 				.If<IHybridController>(c => { HybridController = c; })
-				.If<IBatteryInfo>(c => BatteryInfo = c);
+				.If<IRESSInfo>(c => BatteryInfo = c);
 
 			if (ignoreComponent) {
 				return;
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/Battery/BatteryData.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/Battery/BatteryData.cs
index 638096c5ee0a74948bd7ff73a690b4e35bace155..320db461a9abb2be03272463e7efc17241f328c3 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Data/Battery/BatteryData.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/Battery/BatteryData.cs
@@ -28,6 +28,18 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data.Battery {
 		//public double TargetSoC { get; internal set; }
 	}
 
+	public class SuperCapData
+	{
+		public Farad Capacity { get; internal set; }
+
+		public Ohm InternalResistance { get; internal set; }
+
+		public Volt MinVoltage { get; internal set; }
+
+		public Volt MaxVoltage { get; internal set; }
+		public double InitialSoC { get; internal set; }
+	}
+
 	public class SOCMap
 	{
 		protected internal SOCMapEntry[] Entries;
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricMotor/ElectricMotorData.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricMotor/ElectricMotorData.cs
index ff4b449e6e4d2c78bbb06fe465ed7310d5691e6d..8feb001df2916488df6a1fd9a98b5f3b48c04dc1 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricMotor/ElectricMotorData.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricMotor/ElectricMotorData.cs
@@ -7,11 +7,22 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 		[ValidateObject]
 		public EfficiencyMap EfficiencyMap { get; internal set; }
 
+		[ValidateObject]
 		public ElectricFullLoadCurve FullLoadCurve { get; internal set; }
 
+		[SIRange(double.MinValue, double.MaxValue)]
 		public KilogramSquareMeter Inertia { get; internal set; }
 
+		[ValidateObject]
 		public DragCurve DragCurve { get; internal set; }
 
+		[SIRange(double.MinValue, double.MaxValue)]
+		public Watt ContinuousPower { get; internal set; }
+
+		[SIRange(0, double.MaxValue)]
+		public Joule OverloadBuffer { get; internal set; }
+		
+		[SIRange(0, 1)]
+		public double OverloadRegenerationFactor { get; internal set; }
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/ElectricSystem.cs b/VectoCore/VectoCore/Models/SimulationComponent/ElectricSystem.cs
index e8c6c9eb0510cf6da458900b599fab1e34553d3d..6b6e389c05046bf1e7594788e0c59c90c8fb662b 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/ElectricSystem.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/ElectricSystem.cs
@@ -12,11 +12,11 @@ namespace TUGraz.VectoCore.Models.SimulationComponent
 	public class ElectricSystem : StatefulVectoSimulationComponent<ElectricSystem.State>, IElectricSystem, IElectricAuxConnecor, IElectricChargerConnector, IBatteryConnector
 	{
 
-		protected readonly List<IBatteryAuxPort> Consumers = new List<IBatteryAuxPort>();
+		protected readonly List<IElectricAuxPort> Consumers = new List<IElectricAuxPort>();
 
-		protected IBatteryChargePort Charger;
+		protected IElectricChargerPort Charger;
 
-		protected IBattery Battery;
+		protected IElectricEnergyStorage Battery;
 
 		public ElectricSystem(IVehicleContainer container) : base(container) { }
 
@@ -32,24 +32,24 @@ namespace TUGraz.VectoCore.Models.SimulationComponent
 				? (AbstractElectricSystemResponse)new ElectricSystemDryRunResponse(this)
 				: new ElectricSystemResponseSuccess(this);
 
-			if (batResponse is BatteryOverloadResponse)
+			if (batResponse is RESSOverloadResponse)
 			{
 				response = new ElectricSystemOverloadResponse(this);
 			}
-			if (batResponse is BatteryUnderloadResponse)
+			if (batResponse is RESSUnderloadResponse)
 			{
 				response = new ElectricSystemUnderloadResponse(this);
 			}
 
 			if (!dryRun)
 			{
-				CurrentState.SetState(powerDemand, auxDemand, chargePower, batResponse.BatteryPower);
+				CurrentState.SetState(powerDemand, auxDemand, chargePower, batResponse.PowerDemand);
 			}
 
 			response.AbsTime = absTime;
 			response.SimulationInterval = dt;
-			response.BatteryResponse = batResponse;
-			response.BatteryPowerDemand = totalPowerDemand;
+			response.RESSResponse = batResponse;
+			response.RESSPowerDemand = totalPowerDemand;
 			response.ConsumerPower = powerDemand;
 			response.AuxPower = auxDemand;
 			response.ChargingPower = chargePower;
@@ -74,7 +74,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent
 
 		#region Implementation of IBatteryChargeProvider
 
-		public void Connect(IBatteryChargePort charger)
+		public void Connect(IElectricChargerPort charger)
 		{
 			Charger = charger;
 		}
@@ -83,7 +83,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent
 
 		#region Implementation of IBatteryAuxOutProvider
 
-		public void Connect(IBatteryAuxPort aux)
+		public void Connect(IElectricAuxPort aux)
 		{
 			if (Consumers.Contains(aux)) { return; }
 			Consumers.Add(aux);
@@ -93,7 +93,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent
 
 		#region Implementation of IBatteryConnector
 
-		public void Connect(IBattery battery)
+		public void Connect(IElectricEnergyStorage battery)
 		{
 			if (Battery != null)
 			{
@@ -104,11 +104,11 @@ namespace TUGraz.VectoCore.Models.SimulationComponent
 
 		#endregion
 
-		#region Implementation of IBatteryInfo
+		#region Implementation of IRESSInfo
 
 		public Volt InternalCellVoltage
 		{
-			get { return Battery.InternalCellVoltage; }
+			get { return Battery.InternalVoltage; }
 		}
 
 		public double StateOfCharge
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/IBattery.cs b/VectoCore/VectoCore/Models/SimulationComponent/IElectricEnergyStorage.cs
similarity index 88%
rename from VectoCore/VectoCore/Models/SimulationComponent/IBattery.cs
rename to VectoCore/VectoCore/Models/SimulationComponent/IElectricEnergyStorage.cs
index ffc18e54818aaa39c12f345791e6797e7831ae93..d3b35cbfb0bc8137aa61ada58366f22162d4b7bb 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/IBattery.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/IElectricEnergyStorage.cs
@@ -23,7 +23,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent
 		IElectricSystemResponse Request(Second absTime, Second dt, Watt powerDemand, bool dryRun = false);
 	}
 
-	public interface IBattery : IBatteryProvider, IBatteryInfo
+	public interface IElectricEnergyStorage : IBatteryProvider, IRESSInfo
 	{
 
 	}
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/IHybridController.cs b/VectoCore/VectoCore/Models/SimulationComponent/IHybridController.cs
index 2be5d30ce24f221d658757474fd02468606e379d..9863543cb3a50eb502eae75c7aa64c43fc472fe5 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/IHybridController.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/IHybridController.cs
@@ -1,10 +1,12 @@
-using TUGraz.VectoCommon.InputData;
+using System.Collections;
+using System.Collections.Generic;
+using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Models.Connector.Ports.Impl;
 using TUGraz.VectoCore.Models.SimulationComponent.Data;
 
 namespace TUGraz.VectoCore.Models.SimulationComponent {
-	public interface IHybridController : IPowerTrainComponent
+	public interface IHybridController : IPowerTrainComponent, IHybridControllerInfo
 	{
 		IShiftStrategy ShiftStrategy { get; }
 
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Battery.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Battery.cs
index e591eba6ebe557c79b16c4ddf83f46d475a81daf..41725ae1a65519d879bf5c260b6f271074703826 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Battery.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Battery.cs
@@ -13,7 +13,7 @@ using TUGraz.VectoCore.OutputData;
 
 namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 {
-	public class Battery : StatefulVectoSimulationComponent<Battery.State>, IBattery, IBatteryPort
+	public class Battery : StatefulVectoSimulationComponent<Battery.State>, IElectricEnergyStorage, IElectricEnergyStoragePort
 	{
 		protected readonly BatteryData ModelData;
 
@@ -23,7 +23,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 		}
 
 		#region Implementation of IBatteryProvider
-		public IBatteryPort MainBatteryPort
+		public IElectricEnergyStoragePort MainBatteryPort
 		{
 			get { return this; }
 		}
@@ -31,7 +31,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 		#endregion
 
 
-		#region Implementation of IBatteryPort
+		#region Implementation of IElectricEnergyStoragePort
 
 		public void Initialize(double initialSoC)
 		{
@@ -42,7 +42,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			PreviousState.StateOfCharge = initialSoC;
 		}
 
-		public IBatteryResponse Request(Second absTime, Second dt, Watt powerDemand, bool dryRun = false)
+		public IRESSResponse Request(Second absTime, Second dt, Watt powerDemand, bool dryRun = false)
 		{
 			var maxChargePower = MaxChargePower(dt);
 			var maxDischargePower = MaxDischargePower(dt);
@@ -57,23 +57,21 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			var current = 0.SI<Ampere>();
 			if (!powerDemand.IsEqual(0))
 			{
-				var solutions = VectoMath.QuadraticEquationSolver(internalResistance.Value(), InternalCellVoltage.Value(),
+				var solutions = VectoMath.QuadraticEquationSolver(internalResistance.Value(), InternalVoltage.Value(),
 					-powerDemand.Value());
 				current = SelectSolution(solutions, powerDemand.Value());
 			}
 			var batteryLoss = current * internalResistance * current;
 			var currentCharge = ModelData.Capacity * PreviousState.StateOfCharge;
 
-			if (dryRun)
-			{
-				return new BatteryDryRunResponse(this)
-				{
+			if (dryRun) {
+				return new RESSDryRunResponse(this) {
 					AbsTime = absTime,
 					SimulationInterval = dt,
-					MaxBatteryLoadCharge = maxChargePower,
-					MaxBatteryLoadDischarge = maxDischargePower,
-					BatteryPower = powerDemand,
-					BatteryLoss = batteryLoss,
+					MaxChargePower = maxChargePower,
+					MaxDischargePower = maxDischargePower,
+					PowerDemand = powerDemand,
+					LossPower = batteryLoss,
 					StateOfCharge = (currentCharge + current * dt) / ModelData.Capacity
 
 				};
@@ -87,14 +85,13 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			CurrentState.StateOfCharge = (currentCharge + current * dt) / ModelData.Capacity;
 			CurrentState.MaxChargePower = maxChargePower;
 			CurrentState.MaxDischargePower = maxDischargePower;
-			return new BatteryResponseSuccess(this)
-			{
+			return new RESSResponseSuccess(this) {
 				AbsTime = absTime,
 				SimulationInterval = dt,
-				MaxBatteryLoadCharge = maxChargePower,
-				MaxBatteryLoadDischarge = maxDischargePower,
-				BatteryPower = powerDemand,
-				BatteryLoss = batteryLoss,
+				MaxChargePower = maxChargePower,
+				MaxDischargePower = maxDischargePower,
+				PowerDemand = powerDemand,
+				LossPower = batteryLoss,
 				StateOfCharge = (currentCharge + current * dt) / ModelData.Capacity
 			};
 		}
@@ -104,7 +101,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			return solutions.Where(x => Math.Sign(sign) == Math.Sign(x) && Math.Abs(x).IsSmallerOrEqual(ModelData.MaxCurrent.Value(), 1e-3)).Min().SI<Ampere>();
 		}
 
-		private IBatteryResponse PowerDemandExceeded(Second absTime, Second dt, Watt powerDemand, Watt maxDischargePower,
+		private IRESSResponse PowerDemandExceeded(Second absTime, Second dt, Watt powerDemand, Watt maxDischargePower,
 			Watt maxChargePower, bool dryRun)
 		{
 			var maxPower = powerDemand < 0 ? maxDischargePower : maxChargePower;
@@ -117,28 +114,22 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 
 			var batteryLoss = current * ModelData.InternalResistance.Lookup(PreviousState.StateOfCharge) * current;
 
-			AbstractBatteryResponse response;
-			if (dryRun)
-			{
-				response = new BatteryDryRunResponse(this);
-			}
-			else
-			{
-				if (powerDemand > maxPower)
-				{
-					response = new BatteryOverloadResponse(this);
-				}
-				else
-				{
-					response = new BatteryUnderloadResponse(this);
+			AbstractRESSResponse response;
+			if (dryRun) {
+				response = new RESSDryRunResponse(this);
+			} else {
+				if (powerDemand > maxPower) {
+					response = new RESSOverloadResponse(this);
+				} else {
+					response = new RESSUnderloadResponse(this);
 				}
 			}
 			response.AbsTime = absTime;
 			response.SimulationInterval = dt;
-			response.MaxBatteryLoadCharge = maxChargePower;
-			response.MaxBatteryLoadDischarge = maxDischargePower;
-			response.BatteryPower = powerDemand;
-			response.BatteryLoss = batteryLoss;
+			response.MaxChargePower = maxChargePower;
+			response.MaxDischargePower = maxDischargePower;
+			response.PowerDemand = powerDemand;
+			response.LossPower = batteryLoss;
 
 			return response;
 		}
@@ -151,20 +142,20 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 		protected override void DoWriteModalResults(Second absTime, Second dt, IModalDataContainer container)
 		{
 			var cellVoltage = ModelData.SOCMap.Lookup(PreviousState.StateOfCharge);
-			container[ModalResultField.U0_bat] = cellVoltage;
-			container[ModalResultField.U_bat_terminal] =
+			container[ModalResultField.U0_reess] = cellVoltage;
+			container[ModalResultField.U_reess_terminal] =
 				cellVoltage +
 				CurrentState.TotalCurrent *
 				ModelData.InternalResistance.Lookup(PreviousState.StateOfCharge); // adding both terms because pos. current charges the battery!
-			container[ModalResultField.I_bat] = CurrentState.TotalCurrent;
-			container[ModalResultField.BatteryStateOfCharge] = CurrentState.StateOfCharge.SI();
-			container[ModalResultField.P_battery_terminal] = CurrentState.PowerDemand;
-			container[ModalResultField.P_battery_int] = cellVoltage * CurrentState.TotalCurrent;
-			container[ModalResultField.P_battery_loss] = CurrentState.BatteryLoss;
-			container[ModalResultField.P_battery_charge_max] = CurrentState.MaxChargePower;
-			container[ModalResultField.P_battery_discharge_max] = CurrentState.MaxDischargePower;
+			container[ModalResultField.I_reess] = CurrentState.TotalCurrent;
+			container[ModalResultField.REESSStateOfCharge] = CurrentState.StateOfCharge.SI();
+			container[ModalResultField.P_reess_terminal] = CurrentState.PowerDemand;
+			container[ModalResultField.P_reess_int] = cellVoltage * CurrentState.TotalCurrent;
+			container[ModalResultField.P_reess_loss] = CurrentState.BatteryLoss;
+			container[ModalResultField.P_reess_charge_max] = CurrentState.MaxChargePower;
+			container[ModalResultField.P_reess_discharge_max] = CurrentState.MaxDischargePower;
 
-			container[ModalResultField.E_Bat] = CurrentState.StateOfCharge * cellVoltage * ModelData.Capacity;
+			container[ModalResultField.E_RESS] = CurrentState.StateOfCharge * cellVoltage * ModelData.Capacity;
 
 		}
 
@@ -176,9 +167,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 		#endregion
 
 
-		#region Implementation of IBatteryInfo
+		#region Implementation of IRESSInfo
 
-		public Volt InternalCellVoltage
+		public Volt InternalVoltage
 		{
 			get { return ModelData.SOCMap.Lookup(PreviousState.StateOfCharge); }
 		}
@@ -200,7 +191,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 		{
 			var maxChargeCurrent = VectoMath.Min((ModelData.MaxSOC - PreviousState.StateOfCharge) * ModelData.Capacity / dt,
 				ModelData.MaxCurrent);
-			return InternalCellVoltage * maxChargeCurrent +
+			return InternalVoltage * maxChargeCurrent +
 					maxChargeCurrent * ModelData.InternalResistance.Lookup(PreviousState.StateOfCharge) * maxChargeCurrent;
 		}
 
@@ -209,21 +200,30 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			var maxDischargeCurrent = VectoMath.Max(
 				((ModelData.MinSOC - PreviousState.StateOfCharge) * ModelData.Capacity / dt).LimitTo(-ModelData.MaxCurrent,
 					0.SI<Ampere>()), -ModelData.MaxCurrent);
-			var cellVoltage = InternalCellVoltage;
-			var maxDischargePower = InternalCellVoltage * maxDischargeCurrent +
+			var cellVoltage = InternalVoltage;
+			var maxDischargePower = InternalVoltage * maxDischargeCurrent +
 									maxDischargeCurrent * ModelData.InternalResistance.Lookup(PreviousState.StateOfCharge) * maxDischargeCurrent;
 			var maxPower = -cellVoltage / (4 * ModelData.InternalResistance.Lookup(PreviousState.StateOfCharge)) * cellVoltage;
 			return VectoMath.Max(maxDischargePower, maxPower);
 		}
 
-		public Ampere MaxCurrent
+		public double MinSoC
 		{
-			get
-			{
-				var cellVoltage = ModelData.SOCMap.Lookup(PreviousState.StateOfCharge);
-				return VectoMath.Max(-ModelData.MaxCurrent, -cellVoltage / (4 * ModelData.InternalResistance.Lookup(PreviousState.StateOfCharge)));
-			}
+			get { return ModelData.MinSOC; }
 		}
+		public double MaxSoC
+		{
+			get { return ModelData.MaxSOC; }
+		}
+
+		//public Ampere MaxCurrent
+		//{
+		//	get
+		//	{
+		//		var cellVoltage = ModelData.SOCMap.Lookup(PreviousState.StateOfCharge);
+		//		return VectoMath.Max(-ModelData.MaxCurrent, -cellVoltage / (4 * ModelData.InternalResistance.Lookup(PreviousState.StateOfCharge)));
+		//	}
+		//}
 
 		#endregion
 
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricAuxiliary.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricAuxiliary.cs
index 26d86e811feb6e228b0493c1b524ed64f1f24abf..0502961dfa88d1268afda0b9b035ac9b6a3e760d 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricAuxiliary.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricAuxiliary.cs
@@ -8,7 +8,7 @@ using TUGraz.VectoCore.Models.Simulation.Impl;
 
 namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 {
-	internal class ElectricAuxiliary : IBatteryAuxPort
+	internal class ElectricAuxiliary : IElectricAuxPort
 	{
 		protected readonly Dictionary<string, Func<Watt>> Auxiliaries = new Dictionary<string, Func<Watt>>();
 
@@ -19,7 +19,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			DataBus = container;
 		}
 
-		#region Implementation of IBatteryAuxPort
+		#region Implementation of IElectricAuxPort
 
 		public Watt Initialize()
 		{
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricMotor.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricMotor.cs
index 3d44327a70e2005b73436e6d6c258791284b3c39..c8a187e6792faae524c05a2fae578194eb916080 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricMotor.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricMotor.cs
@@ -22,6 +22,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 		protected ElectricMotorData ModelData;
 		private PerSecond _maxSpeed;
 
+		protected internal Joule ThermalBuffer = 0.SI<Joule>();
+		protected internal bool DeRatingActive = false;
+
 		public ElectricMotor(IVehicleContainer container, ElectricMotorData data, IElectricMotorControl control, PowertrainPosition position) : base(container)
 		{
 			Control = control;
@@ -41,7 +44,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			return ModelData.DragCurve.Lookup(electricMotorSpeed) * electricMotorSpeed;
 		}
 
-    public IResponse Initialize(NewtonMeter outTorque, PerSecond outAngularVelocity)
+	public IResponse Initialize(NewtonMeter outTorque, PerSecond outAngularVelocity)
 		{
 			PreviousState.OutAngularVelocity = outAngularVelocity;
 			PreviousState.OutTorque = outTorque;
@@ -96,7 +99,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 
 		private NewtonMeter GetMaxRecuperationTorque(Second absTime, Second dt, PerSecond avgSpeed)
 		{
-			var maxEmTorque = ModelData.FullLoadCurve.FullGenerationTorque(avgSpeed);
+			var tqContinuousPwr = DeRatingActive ? ModelData.ContinuousPower / avgSpeed : null;
+			var maxEmTorque = VectoMath.Min(tqContinuousPwr, ModelData.FullLoadCurve.FullGenerationTorque(avgSpeed));
 			var electricSystemResponse = ElectricPower.Request(absTime, dt, 0.SI<Watt>(), true);
 			var maxBatPower = electricSystemResponse.MaxPowerDrag;
 
@@ -107,7 +111,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 
 		private NewtonMeter GetMaxDriveTorque(Second absTime, Second dt, PerSecond avgSpeed)
 		{
-			var maxEmTorque = ModelData.FullLoadCurve.FullLoadDriveTorque(avgSpeed);
+			var tqContinuousPwr = DeRatingActive ? -ModelData.ContinuousPower / avgSpeed : null;
+			var maxEmTorque = VectoMath.Max(tqContinuousPwr ,ModelData.FullLoadCurve.FullLoadDriveTorque(avgSpeed));
 			var electricSystemResponse = ElectricPower.Request(absTime, dt, 0.SI<Watt>(), true);
 			var maxBatPower = electricSystemResponse.MaxPowerDrive;
 
@@ -186,8 +191,10 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			//	return retVal;
 			//}
 
-			if (!dryRun && !eMotorTorque.IsBetween(
-					maxDriveTorque ?? 0.SI<NewtonMeter>(), maxRecuperationTorque ?? 0.SI<NewtonMeter>())) {
+			if (!dryRun && (eMotorTorque.IsSmaller(maxDriveTorque ?? 0.SI<NewtonMeter>(), 1e-3) || eMotorTorque.IsGreater(maxRecuperationTorque ?? 0.SI<NewtonMeter>(), 1e-3))
+				//!eMotorTorque.IsBetween(
+				//	maxDriveTorque ?? 0.SI<NewtonMeter>(), maxRecuperationTorque ?? 0.SI<NewtonMeter>())
+				) {
 				throw new VectoException(
 					"Invalid operating point provided by strategy! SupportPower: {0}, max Power: {1}, min Power: {2}", eMotorTorque,
 					maxDriveTorque, maxRecuperationTorque);
@@ -336,6 +343,31 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			container[ModalResultField.P_electricMotor_drive_max_, Position] = (CurrentState.DriveMax ?? 0.SI<NewtonMeter>()) * avgSpeed;
 			container[ModalResultField.P_electricMotorLoss_, Position] = (CurrentState.InTorque - CurrentState.OutTorque) * avgSpeed - (CurrentState.ElectricPowerToBattery);
 			container[ModalResultField.P_electricMotorInertiaLoss_, Position] = CurrentState.InertiaTorqueLoss * avgSpeed;
+
+			var contribution =
+				(VectoMath.Abs((CurrentState.InTorque - CurrentState.OutTorque) * avgSpeed) -
+				ModelData.ContinuousPower) * simulationInterval;
+			container[ModalResultField.ElectricMotor_OvlBuffer_, Position] = VectoMath.Max(0, (ThermalBuffer + contribution) / ModelData.OverloadBuffer);
+		}
+
+		protected override void DoCommitSimulationStep(Second time, Second simulationInterval)
+		{
+			var avgSpeed = (PreviousState.OutAngularVelocity + CurrentState.OutAngularVelocity) / 2;
+			ThermalBuffer += (VectoMath.Abs((CurrentState.InTorque - CurrentState.OutTorque) * avgSpeed) - ModelData.ContinuousPower) * simulationInterval;
+			if (ThermalBuffer < 0) {
+				ThermalBuffer = 0.SI<Joule>();
+			}
+
+			if (DeRatingActive) {
+				if (ThermalBuffer.IsSmallerOrEqual(ModelData.OverloadBuffer * ModelData.OverloadRegenerationFactor)) {
+					DeRatingActive = false;
+				}
+			} else {
+				if (ThermalBuffer.IsGreater(ModelData.OverloadBuffer)) {
+					DeRatingActive = true;
+				}
+			}
+			base.DoCommitSimulationStep(time, simulationInterval);
 		}
 
 		//public NewtonMeter ElectricDragTorque(PerSecond electricMotorSpeed, Second dt, DrivingBehavior drivingBehavior)
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs
index d1a884809b683a353cdf5aa8ccb798fa0050c44a..5337cd01a695376a129a0d9451c21de006e76089 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs
@@ -211,8 +211,10 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 				EngageTime = absTime + dt;
 			}
 
+			var reEngaging = false;
 			if (GearEngaged(absTime) && Disengaged && !outAngularVelocity.IsEqual(0)) {
 				ReEngageGear(absTime, dt, outTorque, outAngularVelocity);
+				reEngaging = true;
 				Log.Debug("Gearbox engaged gear {0}", Gear);
 			}
 
@@ -223,9 +225,15 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 					EngageTime, null) ?? false;
 				if (changeGear) {
 					ReEngageGear(absTime, dt, outTorque, outAngularVelocity);
+					reEngaging = true;
 				}
 			}
 
+			if (reEngaging && DataBus.HybridControllerInfo != null &&
+				Gear != DataBus.HybridControllerInfo.SelectedGear.Gear) {
+				return new ResponseDifferentGearEngaged(this);
+			}
+
 			var gear = Disengaged ? NextGear.Gear : Gear;
 			var avgOutAngularVelocity = (PreviousState.OutAngularVelocity + outAngularVelocity) / 2.0;
 			var inTorqueLossResult = ModelData.Gears[gear].LossMap.GetTorqueLoss(avgOutAngularVelocity, outTorque);
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/HybridController.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/HybridController.cs
index 686d398bf43f4663e66b2b0bdf67cbe3f2031567..10a42b1d59645507feece266c87349d01a6e8a87 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/HybridController.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/HybridController.cs
@@ -88,6 +88,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			get { return _shiftStrategy; }
 		}
 
+		public GearInfo SelectedGear { get; protected set; }
+
+
 		public IResponse Request(Second absTime, Second dt, NewtonMeter outTorque, PerSecond outAngularVelocity,
 			bool dryRun = false)
 		{
@@ -120,10 +123,16 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 				if (!dryRun && /*!DataBus.EngineInfo.EngineOn &&*/ strategySettings.ShiftRequired) {
 					DataBus.GearboxCtl.TriggerGearshift(absTime, dt);
 					_shiftStrategy.SetNextGear(strategySettings.NextGear);
+					SelectedGear = new GearInfo(strategySettings.NextGear, true);
 					return new ResponseGearShift(this);
 				}
 
 				retVal = NextComponent.Request(absTime, dt, outTorque, outAngularVelocity, dryRun);
+				if (retVal is ResponseDifferentGearEngaged) {
+					retryCount++;
+					retry = true;
+					continue;
+				}
 				retVal.HybridController.StrategySettings = strategySettings;
 				if (!(retVal is ResponseSuccess) && strategySettings.EvaluatedSolution.Gear != 0 && 
 					retVal.Gearbox.Gear != strategySettings.EvaluatedSolution.Gear && retryCount < 3) {
@@ -143,7 +152,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			var strategyResponse = Strategy.Initialize(outTorque, outAngularVelocity);
 			PreviousState.StrategyResponse = strategyResponse as HybridStrategyResponse;
 			_electricMotorTorque = PreviousState.StrategyResponse.MechanicalAssistPower;
-			return NextComponent.Initialize(outTorque, outAngularVelocity);
+			var retVal = NextComponent.Initialize(outTorque, outAngularVelocity);
+			SelectedGear = new GearInfo(DataBus.GearboxInfo.Gear, DataBus.GearboxInfo.TCLocked);
+			return retVal;
 		}
 
 		protected override void DoCommitSimulationStep(Second time, Second simulationInterval)
@@ -405,6 +416,5 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 			}
 		}
 
-		
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/SimpleHybridController.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/SimpleHybridController.cs
index ea348f81005cf0531afdbe3ed5a2007f5973ca67..44eaaee5f8557e0e5520a6e0cb500dbef9c761c8 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/SimpleHybridController.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/SimpleHybridController.cs
@@ -177,6 +177,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl {
 			#endregion
 		}
 
-		
+
+		public GearInfo SelectedGear { get; }
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/SuperCap.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/SuperCap.cs
new file mode 100644
index 0000000000000000000000000000000000000000..e5289aa20f5929b0226285f7d7db434419ad2fa7
--- /dev/null
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/SuperCap.cs
@@ -0,0 +1,208 @@
+using System;
+using System.Linq;
+using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Utils;
+using TUGraz.VectoCore.Configuration;
+using TUGraz.VectoCore.Models.Connector.Ports.Impl;
+using TUGraz.VectoCore.Models.Simulation;
+using TUGraz.VectoCore.Models.Simulation.Data;
+using TUGraz.VectoCore.Models.SimulationComponent.Data.Battery;
+using TUGraz.VectoCore.OutputData;
+
+namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
+{
+	public class SuperCap : StatefulVectoSimulationComponent<SuperCap.State>, IElectricEnergyStorage, IElectricEnergyStoragePort
+	{
+		private SuperCapData ModelData;
+
+		public SuperCap(IVehicleContainer container, SuperCapData modelData) : base(container)
+		{
+			ModelData = modelData;
+		}
+
+		public IElectricEnergyStoragePort MainBatteryPort
+		{
+			get { return this; }
+		}
+		public Volt InternalVoltage
+		{
+			get { return PreviousState.Charge / ModelData.Capacity; }
+		}
+
+		public double StateOfCharge
+		{
+			get { return PreviousState.Charge / (ModelData.Capacity * ModelData.MaxVoltage); }
+		}
+
+		public WattSecond StoredEnergy
+		{
+			get { return PreviousState.Charge * InternalVoltage; }
+		}
+
+		public Watt MaxChargePower(Second dt)
+		{
+			var maxChargeCurrent = (ModelData.Capacity * ModelData.MaxVoltage - PreviousState.Charge) / dt;
+			return InternalVoltage * maxChargeCurrent + maxChargeCurrent * ModelData.InternalResistance * maxChargeCurrent;
+		}
+
+		public Watt MaxDischargePower(Second dt)
+		{
+			var maxDischargeCurrent = (ModelData.Capacity * ModelData.MinVoltage - PreviousState.Charge) / dt;
+			var maxDischargePower = InternalVoltage * maxDischargeCurrent +
+									maxDischargeCurrent * ModelData.InternalResistance * maxDischargeCurrent;
+			var maxPower = -InternalVoltage / (4 * ModelData.InternalResistance) * InternalVoltage;
+			return VectoMath.Max(maxDischargePower > 0 ? -double.MaxValue.SI<Watt>():maxDischargePower, maxPower);
+		}
+
+		public double MinSoC
+		{
+			get { return ModelData.MinVoltage / ModelData.MaxVoltage; }
+		}
+		public double MaxSoC
+		{
+			get { return 1; }
+		}
+
+		public void Initialize(double initialSoC)
+		{
+			PreviousState.Charge = ModelData.Capacity * ((ModelData.MaxVoltage - ModelData.MinVoltage) *  initialSoC +
+						ModelData.MinVoltage);
+
+		}
+
+		public IRESSResponse Request(Second absTime, Second dt, Watt powerDemand, bool dryRun)
+		{
+			var maxChargePower = MaxChargePower(dt);
+			var maxDischargePower = MaxDischargePower(dt);
+
+			if (powerDemand.IsGreater(maxChargePower, Constants.SimulationSettings.InterpolateSearchTolerance) ||
+				powerDemand.IsSmaller(maxDischargePower, Constants.SimulationSettings.InterpolateSearchTolerance))
+			{
+				return PowerDemandExceeded(absTime, dt, powerDemand, maxDischargePower, maxChargePower, dryRun);
+			}
+
+			var internalResistance = ModelData.InternalResistance;
+			var current = 0.SI<Ampere>();
+			if (!powerDemand.IsEqual(0))
+			{
+				var solutions = VectoMath.QuadraticEquationSolver(internalResistance.Value(), InternalVoltage.Value(),
+					-powerDemand.Value());
+				current = SelectSolution(solutions, powerDemand.Value());
+			}
+			var internalLoss = current * internalResistance * current;
+			var currentCharge = PreviousState.Charge;
+
+			if (dryRun)
+			{
+				return new RESSDryRunResponse(this)
+				{
+					AbsTime = absTime,
+					SimulationInterval = dt,
+					MaxChargePower = maxChargePower,
+					MaxDischargePower = maxDischargePower,
+					PowerDemand = powerDemand,
+					LossPower = internalLoss,
+					StateOfCharge = (currentCharge + current * dt) / (ModelData.Capacity * ModelData.MaxVoltage)
+
+				};
+			}
+			CurrentState.SimulationInterval = dt;
+			CurrentState.PowerDemand = powerDemand;
+			CurrentState.TotalCurrent = current;
+			CurrentState.InternalLoss = internalLoss;
+
+
+			CurrentState.Charge = (currentCharge + current * dt);
+			CurrentState.MaxChargePower = maxChargePower;
+			CurrentState.MaxDischargePower = maxDischargePower;
+			return new RESSResponseSuccess(this)
+			{
+				AbsTime = absTime,
+				SimulationInterval = dt,
+				MaxChargePower = maxChargePower,
+				MaxDischargePower = maxDischargePower,
+				PowerDemand = powerDemand,
+				LossPower = internalLoss,
+				StateOfCharge = (currentCharge + current * dt) / (ModelData.Capacity * ModelData.MaxVoltage)
+			};
+		}
+
+		private Ampere SelectSolution(double[] solutions, double sign)
+		{
+			return solutions.FirstOrDefault().SI<Ampere>();
+
+			//return solutions.Where(x => Math.Sign(sign) == Math.Sign(x) /*&& Math.Abs(x).IsSmallerOrEqual(ModelData.MaxCurrent.Value(), 1e-3)*/).MinBy(x => Math.Abs(x)).SI<Ampere>();
+		}
+
+
+		private IRESSResponse PowerDemandExceeded(Second absTime, Second dt, Watt powerDemand, Watt maxDischargePower,
+			Watt maxChargePower, bool dryRun)
+		{
+			var maxPower = powerDemand < 0 ? maxDischargePower : maxChargePower;
+
+			var maxChargeCurrent = (ModelData.Capacity * ModelData.MaxVoltage - PreviousState.Charge) / dt;
+			var maxDischargeCurrent = (ModelData.Capacity * ModelData.MinVoltage - PreviousState.Charge) / dt;
+			var current = powerDemand < 0 ? maxDischargeCurrent : maxChargeCurrent;
+
+			var batteryLoss = current * ModelData.InternalResistance * current;
+
+			AbstractRESSResponse response;
+			if (dryRun) {
+				response = new RESSDryRunResponse(this);
+			} else {
+				if (powerDemand > maxPower) {
+					response = new RESSOverloadResponse(this);
+				} else {
+					response = new RESSUnderloadResponse(this);
+				}
+			}
+			response.AbsTime = absTime;
+			response.SimulationInterval = dt;
+			response.MaxChargePower = maxChargePower;
+			response.MaxDischargePower = maxDischargePower;
+			response.PowerDemand = powerDemand;
+			response.LossPower = batteryLoss;
+
+			return response;
+		}
+
+
+		protected override void DoWriteModalResults(Second time, Second simulationInterval, IModalDataContainer container)
+		{
+			var internalVoltage = PreviousState.Charge / ModelData.Capacity;
+			container[ModalResultField.U0_reess] = internalVoltage;
+			container[ModalResultField.U_reess_terminal] =
+				internalVoltage +
+				CurrentState.TotalCurrent * ModelData.InternalResistance; // adding both terms because pos. current charges the battery!
+			container[ModalResultField.I_reess] = CurrentState.TotalCurrent;
+			container[ModalResultField.REESSStateOfCharge] = CurrentState.Charge / (ModelData.Capacity * ModelData.MaxVoltage);
+			container[ModalResultField.P_reess_terminal] = CurrentState.PowerDemand;
+			container[ModalResultField.P_reess_int] = internalVoltage * CurrentState.TotalCurrent;
+			container[ModalResultField.P_reess_loss] = CurrentState.InternalLoss;
+			container[ModalResultField.P_reess_charge_max] = CurrentState.MaxChargePower;
+			container[ModalResultField.P_reess_discharge_max] = CurrentState.MaxDischargePower;
+
+			container[ModalResultField.E_RESS] = CurrentState.Charge * internalVoltage * ModelData.Capacity;
+		}
+
+		protected override void DoCommitSimulationStep(Second time, Second simulationInterval)
+		{
+			AdvanceState();
+		}
+
+		public class State
+		{
+			public AmpereSecond Charge;
+
+			public Second SimulationInterval;
+
+			public Watt PowerDemand;
+
+			public Ampere TotalCurrent;
+			public Watt MaxChargePower;
+			public Watt MaxDischargePower;
+			public Watt InternalLoss;
+		}
+	}
+}
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs b/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs
index 061c652b05f43e1a4ad6979d4f88f6d258e6e2df..20248584db125e52aa070e7f88d83371bd9db77f 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs
@@ -137,9 +137,14 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 			}
 
 			var auxEnergyReserve = ModelData.ElectricAuxDemand * StrategyParameters.AuxReserveTime;
-			var minSoc = Math.Max(ModelData.BatteryData.MinSOC, StrategyParameters.MinSoC);
-			BatteryDischargeEnergyThreshold = ModelData.BatteryData.Capacity * minSoc * ModelData.BatteryData.SOCMap.Lookup(minSoc) +
-										auxEnergyReserve;
+			BatteryDischargeEnergyThreshold = 0.SI<WattSecond>();
+			if (auxEnergyReserve > 0) {
+				var minSoc = Math.Max(ModelData.BatteryData?.MinSOC ?? ModelData.SuperCapData.InitialSoC,
+					StrategyParameters.MinSoC);
+				BatteryDischargeEnergyThreshold =
+					ModelData.BatteryData.Capacity * minSoc * ModelData.BatteryData.SOCMap.Lookup(minSoc) +
+					auxEnergyReserve;
+			}
 		}
 
 		
@@ -185,7 +190,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 
 
 			if (DataBus.DriverInfo.DrivingAction == DrivingAction.Brake && (eval.Count  == 0 )) {
-				eval.Add(MaxRecuperationSetting(absTime, dt, outTorque, outAngularVelocity));
+				eval.Add(MaxRecuperationSetting(absTime, dt, outTorque, outAngularVelocity, dryRun));
 			}
 
 			var origBest = SelectBestOption_ORIG(eval, absTime, dt, outTorque, outAngularVelocity, dryRun, currentGear);
@@ -206,8 +211,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 				CurrentState.Evaluations = eval;
 				CurrentState.GearboxEngaged = DataBus.GearboxInfo.GearEngaged(absTime);
 				if (!DataBus.EngineCtl.CombustionEngineOn && !best.ICEOff && !retVal.ShiftRequired) {
-					CurrentState.ICEStartTStmp = absTime;
-				}
+                    CurrentState.ICEStartTStmp = absTime;
+                }
 				DryRunSolution = new DryRunSolutionState(DataBus.DriverInfo.DrivingAction, best);
 			}
 			
@@ -223,6 +228,11 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 		public IResponse AmendResponse(IResponse response, Second absTime, Second dt, NewtonMeter outTorque,
 			PerSecond outAngularVelocity, bool dryRun)
 		{
+			if (response is ResponseSuccess) {
+				if (!DataBus.EngineInfo.EngineOn && !CurrentState.Solution.ICEOff) {
+                    //CurrentState.ICEStartTStmp = absTime;
+                }
+			}
 			if (DataBus.DriverInfo.DrivingAction == DrivingAction.Accelerate &&
 				(outTorque * outAngularVelocity).IsEqual(StrategyParameters.MaxDrivetrainPower,
 					Constants.SimulationSettings.LineSearchTolerance.SI<Watt>())) {
@@ -338,7 +348,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 
 				if (tmp.CombustionEngineOn) {
 					var firstEntry = new HybridResultEntry();
-					CalcualteCosts(firstResponse, dt, firstEntry, AllowICEOff(absTime));
+					CalcualteCosts(firstResponse, dt, firstEntry, AllowICEOff(absTime), dryRun);
 
 					if (DataBus.GearboxInfo.GearEngaged(absTime) && (firstEntry.IgnoreReason & (HybridConfigurationIgnoreReason.EngineSpeedTooLow |
 																							HybridConfigurationIgnoreReason.EngineSpeedBelowDownshift)) != 0) {
@@ -357,7 +367,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 							eval.AddRange(FindSolution(absTime, dt, outTorque, outAngularVelocity, dryRun));
 						} else {
 							EvaluateConfigsForGear(
-								absTime, dt, outTorque, outAngularVelocity, currentGear, AllowICEOff(absTime), eval, emPos);
+								absTime, dt, outTorque, outAngularVelocity, currentGear, AllowICEOff(absTime), eval, emPos, dryRun);
 						}
 					}else if (DataBus.GearboxInfo.GearEngaged(absTime)) {
 						eval.AddRange(FindSolution(absTime, dt, outTorque, outAngularVelocity, dryRun));
@@ -389,7 +399,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 					absTime, dt, outTorque, outAngularVelocity, currentGear, maxRecuperation);
 
 				if (maxRecuperationResponse.DeltaDragLoad.IsSmaller(0) && 
-					maxRecuperationResponse.ElectricSystem.BatteryPowerDemand.IsBetween(maxRecuperationResponse.ElectricSystem.MaxPowerDrag, maxRecuperationResponse.ElectricSystem.MaxPowerDrive)) {
+					maxRecuperationResponse.ElectricSystem.RESSPowerDemand.IsBetween(maxRecuperationResponse.ElectricSystem.MaxPowerDrag, maxRecuperationResponse.ElectricSystem.MaxPowerDrive)) {
 					// even with full recuperation (and no braking) the operating point is below the drag curve (and the battery can handle it) - use full recuperation
 					eval.Add(
 						new HybridResultEntry() {
@@ -521,7 +531,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 				var newEval = new List<HybridResultEntry>();
 				EvaluateConfigsForGear(
 					absTime, dt, outTorque, outAngularVelocity, best.Gear + 1, AllowICEOff(absTime), newEval,
-					best.Setting.MechanicalAssistPower.First().Key);
+					best.Setting.MechanicalAssistPower.First().Key, dryRun);
 				if (newEval.Count > 0) {
 					best = DoSelectBestOption(newEval, absTime, dt, outTorque, outAngularVelocity, dryRun, currentGear);
 				}
@@ -531,7 +541,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 				var newEval = new List<HybridResultEntry>();
 				EvaluateConfigsForGear(
 					absTime, dt, outTorque, outAngularVelocity, best.Gear - 1, AllowICEOff(absTime), newEval,
-					best.Setting.MechanicalAssistPower.First().Key);
+					best.Setting.MechanicalAssistPower.First().Key, dryRun);
 				if (newEval.Count > 0) {
 					best = DoSelectBestOption(newEval, absTime, dt, outTorque, outAngularVelocity, dryRun, currentGear);
 				}
@@ -586,7 +596,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 					}
 					best = eval.Where(x => !x.IgnoreReason.BatteryDemandExceeded())
 								.OrderBy(x => Math.Abs((int)currentGear - x.Gear))
-								.ThenBy(x => -x.Response.ElectricSystem.BatteryPowerDemand.Value()).First();
+								.ThenBy(x => -x.Response.ElectricSystem.RESSPowerDemand.Value()).First();
 					return best;
 				}
 			}
@@ -676,7 +686,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 							best = eval.Where(
 											x => !x.IgnoreReason.BatteryDemandExceeded())
 										.OrderBy(x => Math.Abs((int)currentGear - x.Gear))
-										.ThenBy(x => -x.Response.ElectricSystem.BatteryPowerDemand.Value()).First();
+										.ThenBy(x => -x.Response.ElectricSystem.RESSPowerDemand.Value()).First();
 						} else {
 							best = filtered.MinBy(
 								x => x.Setting.MechanicalAssistPower.Sum(e => e.Value ?? 0.SI<NewtonMeter>()));
@@ -706,7 +716,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 					var newEval = new List<HybridResultEntry>();
 					EvaluateConfigsForGear(
 						absTime, dt, outTorque, outAngularVelocity, best.Gear + 1, AllowICEOff(absTime), newEval,
-						best.Setting.MechanicalAssistPower.First().Key);
+						best.Setting.MechanicalAssistPower.First().Key, dryRun);
 					best = SelectBestOption(newEval, absTime, dt, outTorque, outAngularVelocity, dryRun, currentGear);
 				}
 				if ((best.IgnoreReason & HybridConfigurationIgnoreReason.EngineSpeedBelowDownshift) != 0) {
@@ -714,7 +724,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 					var newEval = new List<HybridResultEntry>();
 					EvaluateConfigsForGear(
 						absTime, dt, outTorque, outAngularVelocity, best.Gear - 1, AllowICEOff(absTime), newEval,
-						best.Setting.MechanicalAssistPower.First().Key);
+						best.Setting.MechanicalAssistPower.First().Key, dryRun);
 					best = SelectBestOption(newEval, absTime, dt, outTorque, outAngularVelocity, dryRun, currentGear);
 				}
 			}
@@ -744,7 +754,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 		}
 
 
-		private HybridResultEntry MaxRecuperationSetting(Second absTime, Second dt, NewtonMeter outTorque, PerSecond outAngularVelocity)
+		private HybridResultEntry MaxRecuperationSetting(Second absTime, Second dt, NewtonMeter outTorque,
+			PerSecond outAngularVelocity, bool dryRun)
 		{
 			var first = new HybridStrategyResponse() {
 				CombustionEngineOn = DataBus.EngineInfo.EngineOn, // AllowICEOff(absTime), 
@@ -757,7 +768,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 			var emPos = ModelData.ElectricMachinesData.First().Item1;
 			
 			var emTorque = !ElectricMotorCanPropellDuringTractionInterruption && (firstResponse.Gearbox.Gear == 0 || !DataBus.GearboxInfo.GearEngaged(absTime)) ? null : firstResponse.ElectricMotor.MaxRecuperationTorque;
-			return TryConfiguration(absTime, dt, outTorque, outAngularVelocity, currentGear, emPos, emTorque, double.NaN, AllowICEOff(absTime));
+			return TryConfiguration(absTime, dt, outTorque, outAngularVelocity, currentGear, emPos, emTorque, double.NaN, AllowICEOff(absTime), dryRun);
 		}
 
 		private List<HybridResultEntry> FindSolution(Second absTime, Second dt, NewtonMeter outTorque, PerSecond outAngularVelocity, bool dryRun)
@@ -788,7 +799,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 				nextGear <= Math.Min(numGears, gear + gearRangeUpshift);
 				nextGear++) {
 				
-				var emOffEntry = EvaluateConfigsForGear(absTime, dt, outTorque, outAngularVelocity, nextGear, allowICEOff, responses, emPos);
+				var emOffEntry = EvaluateConfigsForGear(absTime, dt, outTorque, outAngularVelocity, nextGear, allowICEOff, responses, emPos, dryRun);
 
 				if (emOffEntry == null) {
 					continue;
@@ -805,7 +816,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 			if (allowEmergencyUpshift && tmpBest != null && !tmpBest.ICEOff) {
 				var nextGear = gear + 1;
 				var emOffEntry = EvaluateConfigsForGear(
-					absTime, dt, outTorque, outAngularVelocity, nextGear, allowICEOff, responses, emPos);
+					absTime, dt, outTorque, outAngularVelocity, nextGear, allowICEOff, responses, emPos, dryRun);
 
 				//	GetEmOffResultEntry(absTime, dt, outTorque, outAngularVelocity, nextGear);
 				//if (emOffEntry != null) {
@@ -824,7 +835,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 			if (allowEmergencyDownshift && tmpBest != null && !tmpBest.ICEOff) {
 				var nextGear = gear - 1;
 				var emOffEntry = EvaluateConfigsForGear(
-					absTime, dt, outTorque, outAngularVelocity, nextGear, allowICEOff, responses, emPos);
+					absTime, dt, outTorque, outAngularVelocity, nextGear, allowICEOff, responses, emPos, dryRun);
 
 				//	GetEmOffResultEntry(absTime, dt, outTorque, outAngularVelocity, nextGear);
 				//if (emOffEntry != null) {
@@ -844,23 +855,23 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 			return responses;
 		}
 
-		private HybridResultEntry EvaluateConfigsForGear(
-			Second absTime, Second dt, NewtonMeter outTorque, PerSecond outAngularVelocity, uint nextGear, bool allowICEOff,
-			List<HybridResultEntry> responses, PowertrainPosition emPos)
+		private HybridResultEntry EvaluateConfigsForGear(Second absTime, Second dt, NewtonMeter outTorque,
+			PerSecond outAngularVelocity, uint nextGear, bool allowICEOff,
+			List<HybridResultEntry> responses, PowertrainPosition emPos, bool dryRun)
 		{
 			var emOffEntry = GetEmOffResultEntry(absTime, dt, outTorque, outAngularVelocity, nextGear);
 			if (emOffEntry == null) {
 				return null;
 			}
 
-			CalcualteCosts(emOffEntry.Response, dt, emOffEntry, allowICEOff);
+			CalcualteCosts(emOffEntry.Response, dt, emOffEntry, allowICEOff, dryRun);
 
 			responses.Add(emOffEntry);
 
 			var emTqReq = (emOffEntry.Response.ElectricMotor.PowerRequest + emOffEntry.Response.ElectricMotor.InertiaPowerDemand) /
 						emOffEntry.Response.ElectricMotor.AngularVelocity;
 			IterateEMTorque(
-				absTime, dt, outTorque, outAngularVelocity, nextGear, allowICEOff, emOffEntry.Response, emTqReq, emPos, responses);
+				absTime, dt, outTorque, outAngularVelocity, nextGear, allowICEOff, emOffEntry.Response, emTqReq, emPos, responses, dryRun);
 			return emOffEntry;
 		}
 
@@ -887,7 +898,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 			return entry;
 		}
 
-		private void IterateEMTorque(Second absTime, Second dt, NewtonMeter outTorque, PerSecond outAngularVelocity, uint nextGear, bool allowIceOff, IResponse firstResponse, NewtonMeter emTqReq, PowertrainPosition emPos, List<HybridResultEntry> responses)
+		private void IterateEMTorque(Second absTime, Second dt, NewtonMeter outTorque, PerSecond outAngularVelocity,
+			uint nextGear, bool allowIceOff, IResponse firstResponse, NewtonMeter emTqReq, PowertrainPosition emPos,
+			List<HybridResultEntry> responses, bool dryRun)
 		{
 			const double stepSize = 0.1;
 
@@ -907,7 +920,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 						continue;
 					}
 
-					var tmp = TryConfiguration(absTime, dt, outTorque, outAngularVelocity, nextGear, emPos, emTorque, u, allowIceOff);
+					var tmp = TryConfiguration(absTime, dt, outTorque, outAngularVelocity, nextGear, emPos, emTorque, u, allowIceOff, dryRun);
 					responses.Add(tmp);
 				}
 
@@ -917,11 +930,11 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 				var emTorqueM = emTqReq * maxU;
 				if (!responses.Any(x => x.Gear == nextGear && x.U.IsEqual(maxU)) && emTorqueM.IsBetween(
 					0.SI<NewtonMeter>(), firstResponse.ElectricMotor.MaxDriveTorque)) {
-					var tmp = TryConfiguration(absTime, dt, outTorque, outAngularVelocity, nextGear, emPos, emTorqueM, maxU, allowIceOff);
+					var tmp = TryConfiguration(absTime, dt, outTorque, outAngularVelocity, nextGear, emPos, emTorqueM, maxU, allowIceOff, dryRun);
 					responses.Add(tmp);
 				}
 				if (maxEmTorque.IsSmaller(0) && emTqReq.IsGreater(-maxEmTorque)) { 
-					var tmp = TryConfiguration(absTime, dt, outTorque, outAngularVelocity, nextGear, emPos, maxEmTorque, maxEmTorque / emTqReq, allowIceOff);
+					var tmp = TryConfiguration(absTime, dt, outTorque, outAngularVelocity, nextGear, emPos, maxEmTorque, maxEmTorque / emTqReq, allowIceOff, dryRun);
 					if (!tmp.Response.ElectricSystem.ConsumerPower.IsSmaller(emDrivePower)) {
 						responses.Add(tmp);
 					}
@@ -941,7 +954,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 						!emDriveTorque.IsEqual(emDragTorque, 1.SI<NewtonMeter>())) {
 						var tmp = TryConfiguration(
 							absTime, dt, outTorque, outAngularVelocity, nextGear, emPos, emDriveTorque, emDriveTorque / emTqReq,
-							allowIceOff);
+							allowIceOff, dryRun);
 						responses.Add(tmp);
 					}
 				}
@@ -977,7 +990,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 							// only consider when within allowed EM torque range
 							var tmp = TryConfiguration(
 								absTime, dt, outTorque, outAngularVelocity, nextGear, emPos, emTorqueICEOff, emTorqueICEOff / emTqReq,
-								allowIceOff);
+								allowIceOff, dryRun);
 							responses.Add(tmp);
 						}
 					} catch (Exception ) {
@@ -995,7 +1008,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 						continue;
 					}
 
-					var tmp = TryConfiguration(absTime, dt, outTorque, outAngularVelocity, nextGear, emPos, emTorque, u, allowIceOff);
+					var tmp = TryConfiguration(absTime, dt, outTorque, outAngularVelocity, nextGear, emPos, emTorque, u, allowIceOff, dryRun);
 					responses.Add(tmp);
 				}
 				var maxEmTorqueRecuperate = firstResponse.ElectricMotor.MaxRecuperationTorque ?? 0.SI<NewtonMeter>();
@@ -1032,7 +1045,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 								var tmp = TryConfiguration(
 									absTime, dt, outTorque, outAngularVelocity, nextGear, emPos, emTorqueICEOff,
 									emTorqueICEOff / maxEmTorqueRecuperate,
-									allowIceOff);
+									allowIceOff, dryRun);
 								responses.Add(tmp);
 							}
 						} catch (Exception) {
@@ -1040,7 +1053,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 						}
 					} else {
 						if (maxEmTorqueRecuperate.IsGreater(0) && (-emTqReq).IsBetween(maxEmTorqueRecuperate, 0.SI<NewtonMeter>())) {
-							var tmp = TryConfiguration(absTime, dt, outTorque, outAngularVelocity, nextGear, emPos, -emTqReq, -emTqReq / maxEmTorqueRecuperate, allowIceOff);
+							var tmp = TryConfiguration(absTime, dt, outTorque, outAngularVelocity, nextGear, emPos,
+								-emTqReq, -emTqReq / maxEmTorqueRecuperate, allowIceOff, dryRun);
 							responses.Add(tmp);
 						}
 					}
@@ -1048,7 +1062,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 			}
 		}
 
-		private HybridResultEntry TryConfiguration(Second absTime, Second dt, NewtonMeter outTorque, PerSecond outAngularVelocity, uint nextGear, PowertrainPosition emPos, NewtonMeter emTorque, double u, bool allowIceOff)
+		private HybridResultEntry TryConfiguration(Second absTime, Second dt, NewtonMeter outTorque,
+			PerSecond outAngularVelocity, uint nextGear, PowertrainPosition emPos, NewtonMeter emTorque, double u,
+			bool allowIceOff, bool dryRun)
 		{
 			var cfg = new HybridStrategyResponse() {
 				CombustionEngineOn = true,
@@ -1065,7 +1081,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 				Response = resp,
 				Gear = nextGear,
 			};
-			CalcualteCosts(resp, dt, tmp, allowIceOff);
+			CalcualteCosts(resp, dt, tmp, allowIceOff, dryRun);
 			return tmp;
 		}
 
@@ -1078,7 +1094,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 			TestPowertrain.HybridController.ApplyStrategySettings(cfg);
 			TestPowertrain.HybridController.Initialize(Controller.PreviousState.OutTorque, Controller.PreviousState.OutAngularVelocity);
 			TestPowertrain.Clutch.Initialize(DataBus.ClutchInfo.ClutchLosses);
-			TestPowertrain.Battery.Initialize(DataBus.BatteryInfo.StateOfCharge);
+			TestPowertrain.Battery?.Initialize(DataBus.BatteryInfo.StateOfCharge);
+			TestPowertrain.SuperCap?.Initialize(DataBus.BatteryInfo.StateOfCharge);
 
 			var currentGear = PreviousState.GearboxEngaged ? DataBus.GearboxInfo.Gear : Controller.ShiftStrategy.NextGear.Gear;
 			
@@ -1135,6 +1152,12 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 				
 			//}
 
+			var pos = ModelData.ElectricMachinesData.FirstOrDefault().Item1;
+			TestPowertrain.ElectricMotor.ThermalBuffer =
+				(DataBus.ElectricMotorInfo(pos) as ElectricMotor).ThermalBuffer;
+			TestPowertrain.ElectricMotor.DeRatingActive =
+				(DataBus.ElectricMotorInfo(pos) as ElectricMotor).DeRatingActive;
+
 			if (/*nextGear != DataBus.GearboxInfo.Gear && */TestPowertrain.ElectricMotorP2 != null) {
 				TestPowertrain.ElectricMotorP2.PreviousState.OutAngularVelocity =
 					DataBus.ElectricMotorInfo(PowertrainPosition.HybridP2).ElectricMotorSpeed;
@@ -1149,7 +1172,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 			return retVal as ResponseDryRun;
 		}
 
-		private void CalcualteCosts(IResponse resp, Second dt, HybridResultEntry tmp, bool allowIceOff)
+		private void CalcualteCosts(IResponse resp, Second dt, HybridResultEntry tmp, bool allowIceOff, bool dryRun)
 		{
 			tmp.IgnoreReason = 0;
 			if (resp == null) {
@@ -1158,7 +1181,13 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 				return;
 			}
 
-			if (!resp.Engine.TotalTorqueDemand.IsBetween(
+			var iceOff = allowIceOff && resp.Engine.TorqueOutDemand.IsEqual(0, 1e-3);
+			if (DataBus.DriverInfo.DrivingAction == DrivingAction.Accelerate && dryRun) {
+				// this means we search for an acceleration the vehicle is capable to do - so treat ICE overload regularly
+				iceOff = false;
+			}
+
+			if (!iceOff && !resp.Engine.TotalTorqueDemand.IsBetween(
 				resp.Engine.DragTorque, resp.Engine.DynamicFullLoadTorque)) {
 				tmp.FuelCosts = double.NaN;
 				tmp.IgnoreReason |= resp.Engine.TotalTorqueDemand.IsGreater(resp.Engine.DynamicFullLoadTorque)
@@ -1193,7 +1222,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 			var absTime = DataBus.AbsTime; // todo!
 			if (DataBus.GearboxInfo.GearEngaged(absTime)) {
 
-				if (allowIceOff && resp.Engine.TorqueOutDemand.IsEqual(0)) {
+				if (iceOff) {
 					// no torque from ICE requested, ICE could be turned off
 					tmp.FuelCosts = 0;
 					tmp.ICEOff = true;
@@ -1214,7 +1243,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 						? HybridConfigurationIgnoreReason.EngineTorqueDemandTooHigh
 						: HybridConfigurationIgnoreReason.EngineTorqueDemandTooLow;
 				}
-				if (allowIceOff && resp.Engine.TorqueOutDemand.IsEqual(0, 1e-3)) {
+				if (iceOff) {
 					// no torque from ICE requested, ICE could be turned off
 					tmp.FuelCosts = 0;
 					tmp.ICEOff = true;
@@ -1227,8 +1256,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 				}
 			}
 
-			var maxSoC = Math.Min(ModelData.BatteryData.MaxSOC, StrategyParameters.MaxSoC);
-			var minSoC = Math.Max(ModelData.BatteryData.MinSOC, StrategyParameters.MinSoC);
+			var maxSoC = Math.Min(DataBus.BatteryInfo.MaxSoC, StrategyParameters.MaxSoC);
+			var minSoC = Math.Max(DataBus.BatteryInfo.MinSoC , StrategyParameters.MinSoC);
 			tmp.SoCPenalty = 1 - Math.Pow((DataBus.BatteryInfo.StateOfCharge - StrategyParameters.TargetSoC) / (0.5 * (maxSoC - minSoC)), 5);
 
 			var socthreshold = StrategyParameters.MinSoC + (StrategyParameters.MaxSoC - StrategyParameters.MinSoC) * 0.1;
@@ -1260,14 +1289,14 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
 		private void SetBatteryCosts(IResponse resp, Second dt, HybridResultEntry tmp)
 		{
 			var batEnergyStored = DataBus.BatteryInfo.StoredEnergy;
-			var batEnergy = resp.ElectricSystem.BatteryPowerDemand * dt;
-			var batPower = resp.ElectricSystem.BatteryResponse.BatteryPower;
+			var batEnergy = resp.ElectricSystem.RESSPowerDemand * dt;
+			var batPower = resp.ElectricSystem.RESSResponse.PowerDemand;
 
-			if (batPower.IsSmaller(resp.ElectricSystem.BatteryResponse.MaxBatteryLoadDischarge) || batPower.IsGreater(resp.ElectricSystem.BatteryResponse.MaxBatteryLoadCharge)) {
+			if (batPower.IsSmaller(resp.ElectricSystem.RESSResponse.MaxDischargePower) || batPower.IsGreater(resp.ElectricSystem.RESSResponse.MaxChargePower)) {
 				// battery power demand too high - would discharge below min SoC / charge above max SoC
 				tmp.BatCosts = double.NaN;
 				tmp.IgnoreReason |= batPower.IsSmaller(
-						resp.ElectricSystem.BatteryResponse.MaxBatteryLoadDischarge)
+						resp.ElectricSystem.RESSResponse.MaxDischargePower)
 						? HybridConfigurationIgnoreReason.BatteryBelowMinSoC
 						: HybridConfigurationIgnoreReason.BatteryAboveMaxSoc;
 			}
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Strategies/TestPowertrain.cs b/VectoCore/VectoCore/Models/SimulationComponent/Strategies/TestPowertrain.cs
index aa4e9d7bd211c072909489e2f6932fb63720e3d3..a45c1abac69e146bd4ef1335cb769fb39b697dd1 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Strategies/TestPowertrain.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Strategies/TestPowertrain.cs
@@ -1,4 +1,5 @@
 using System.Collections.Generic;
+using System.Linq;
 using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Utils;
@@ -16,6 +17,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies {
 		public Gearbox Gearbox;
 		public SimpleHybridController HybridController;
 		public Battery Battery;
+		public SuperCap SuperCap;
 		public Clutch Clutch;
 		public IBrakes Brakes;
 
@@ -23,6 +25,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies {
 		public IDrivingCycleInfo DrivingCycle;
 
 		public StopStartCombustionEngine CombustionEngine;
+		public ElectricMotor ElectricMotor;
 		public ElectricMotor ElectricMotorP2;
 		public ElectricMotor ElectricMotorP3;
 
@@ -32,8 +35,10 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies {
 			Gearbox = Container.GearboxCtl as Gearbox;
 			HybridController = Container.HybridController as SimpleHybridController;
 			Battery = Container.BatteryInfo as Battery;
+			SuperCap = Container.BatteryInfo as SuperCap;
 			Clutch = Container.ClutchInfo as Clutch;
 			CombustionEngine = Container.EngineInfo as StopStartCombustionEngine;
+			ElectricMotor = container.ElectricMotors.FirstOrDefault().Value as ElectricMotor;
 			ElectricMotorP2 = container.ElectricMotors.ContainsKey(PowertrainPosition.HybridP2)
 				? container.ElectricMotors[PowertrainPosition.HybridP2] as ElectricMotor
 				: null;
diff --git a/VectoCore/VectoCore/OutputData/FileIO/JSONFileWriter.cs b/VectoCore/VectoCore/OutputData/FileIO/JSONFileWriter.cs
index 7cbf6515a36c37020251f284e25df28dfeb7045c..9a8daf9561414c59521fcc248633567766dc655f 100644
--- a/VectoCore/VectoCore/OutputData/FileIO/JSONFileWriter.cs
+++ b/VectoCore/VectoCore/OutputData/FileIO/JSONFileWriter.cs
@@ -36,6 +36,8 @@ public class JSONFileWriter : IOutputFileWriter
 
 	private const int ElectricMotorFormatVersion = 1;
 
+	private const int REESSFormatVersion = 1;
+
 	private const int HybridStrategyParamsVersion = 1;
 
     private static JSONFileWriter _instance;
@@ -81,23 +83,25 @@ public class JSONFileWriter : IOutputFileWriter
 		body.Add("DragCurve", GetRelativePath(electricMachine.DragCurve.Source, Path.GetDirectoryName(filename)));
 		body.Add("EfficiencyMap", GetRelativePath(electricMachine.EfficiencyMap.Source, Path.GetDirectoryName(filename)));
 		body.Add("Inertia", electricMachine.Inertia.Value());
-
+		body.Add("ContinuousPower", electricMachine.ContinuousPower.Value());
+		body.Add("ThermalOverloadBuffer", electricMachine.OverloadBuffer.Value() / 1e6);
+		body.Add("ThermalOverloadRecoveryFactor", electricMachine.OverloadRecoveryFactor);
 		WriteFile(header, body, filename);
     }
 
 	public void SaveBattery(IBatteryPackEngineeringInputData battery, string filename, bool declMode)
 	{
-		var header = GetHeader(ElectricMotorFormatVersion);
+		var header = GetHeader(REESSFormatVersion);
 
 		var body = new Dictionary<string, object>();
 
 		body.Add("SavedInDeclMode", declMode);
-
+		body.Add("REESSType", "Battery");
 		body.Add("Model", battery.Model);
 		body.Add("Capacity", battery.Capacity.AsAmpHour);
 		body.Add("SOC_min", battery.MinSOC * 100.0);
 		body.Add("SOC_max",battery.MaxSOC * 100.0);
-		body.Add("MaxCurrentFactor", battery.MaxCurrentFactor);
+		body.Add("MaxCurrentFactor", battery.MaxCurrentFactor.ConvertToPerHour().Value);
 
         body.Add("InternalResistanceCurve", GetRelativePath(battery.InternalResistanceCurve.Source, Path.GetDirectoryName(filename)));
 		body.Add("SoCCurve", GetRelativePath(battery.VoltageCurve.Source, Path.GetDirectoryName(filename)));
@@ -105,7 +109,24 @@ public class JSONFileWriter : IOutputFileWriter
 		WriteFile(header, body, filename);
     }
 
-    public void SaveEngine(IEngineEngineeringInputData eng, string filename, bool DeclMode)
+	public void SaveSuperCap(ISuperCapEngineeringInputData superCap, string filename, bool declMode)
+	{
+		var header = GetHeader(REESSFormatVersion);
+
+		var body = new Dictionary<string, object>();
+
+		body.Add("SavedInDeclMode", declMode);
+		body.Add("REESSType", "SuperCap");
+		body.Add("Model", superCap.Model);
+		body.Add("Capacity", superCap.Capacity.Value());
+		body.Add("InternalResistance", superCap.InternalResistance.Value());
+		body.Add("U_min", superCap.MinVoltage.Value());
+		body.Add("U_max", superCap.MaxVoltage.Value());
+
+		WriteFile(header, body, filename);
+	}
+
+	public void SaveEngine(IEngineEngineeringInputData eng, string filename, bool DeclMode)
 	{
 		// Header
 		var header = GetHeader(EngineFormatVersion);
@@ -526,7 +547,7 @@ public class JSONFileWriter : IOutputFileWriter
 		var retVal = new Dictionary<string, object>()
 		{
 			{"NumPacks", vehicle.Components.ElectricStorage.Count},
-			{"BatteryFile", GetRelativePath(vehicle.Components.ElectricStorage.BatteryPack.DataSource.SourceFile, basePath)}
+			{"BatteryFile", GetRelativePath(vehicle.Components.ElectricStorage.REESSPack.DataSource.SourceFile, basePath)}
 		};
 		return retVal;
 	}
diff --git a/VectoCore/VectoCore/OutputData/IModalDataContainer.cs b/VectoCore/VectoCore/OutputData/IModalDataContainer.cs
index 5e30bbd75a04a84d14dc7989516ae4eff2227591..480279985ede623f72987839bd673de4790efc42 100644
--- a/VectoCore/VectoCore/OutputData/IModalDataContainer.cs
+++ b/VectoCore/VectoCore/OutputData/IModalDataContainer.cs
@@ -355,23 +355,23 @@ namespace TUGraz.VectoCore.OutputData
 
 		public static WattSecond WorkBatteryChargeTerminal(this IModalDataContainer data)
 		{
-			return data.TimeIntegral<WattSecond>(ModalResultField.P_battery_terminal, x => x.IsGreater(0));
+			return data.TimeIntegral<WattSecond>(ModalResultField.P_reess_terminal, x => x.IsGreater(0));
 		}
 
 		public static WattSecond WorkBatteryDischargeTerminal(this IModalDataContainer data)
 		{
-			return -data.TimeIntegral<WattSecond>(ModalResultField.P_battery_terminal, x => x.IsSmaller(0));
+			return -data.TimeIntegral<WattSecond>(ModalResultField.P_reess_terminal, x => x.IsSmaller(0));
 		}
 
         public static WattSecond WorkBatteryChargeInternal(this IModalDataContainer data)
 		{
-			return data.TimeIntegral<WattSecond>(ModalResultField.P_battery_int, x => x.IsGreater(0));
+			return data.TimeIntegral<WattSecond>(ModalResultField.P_reess_int, x => x.IsGreater(0));
 
         }
 
 		public static WattSecond WorkBatteryDischargeInternal(this IModalDataContainer data)
 		{
-			return -data.TimeIntegral<WattSecond>(ModalResultField.P_battery_int, x => x.IsSmaller(0));
+			return -data.TimeIntegral<WattSecond>(ModalResultField.P_reess_int, x => x.IsSmaller(0));
 		}
 
         public static KilogramPerSecond FuelConsumptionPerSecond(this IModalDataContainer data, ModalResultField mrf, IFuelProperties fuelData)
diff --git a/VectoCore/VectoCore/OutputData/ModalDataContainer.cs b/VectoCore/VectoCore/OutputData/ModalDataContainer.cs
index 52b73de6087563b223dcebdbd79004d8b6837ad9..57582061c3ee9ba5c19c7c8aff3734a59c6e7e22 100644
--- a/VectoCore/VectoCore/OutputData/ModalDataContainer.cs
+++ b/VectoCore/VectoCore/OutputData/ModalDataContainer.cs
@@ -71,7 +71,7 @@ namespace TUGraz.VectoCore.OutputData
 			ModalResultField.P_electricMotor_mech_, ModalResultField.P_electricMotor_el_,
 			ModalResultField.P_electricMotorLoss_, ModalResultField.P_electricMotorInertiaLoss_,
 			/*ModalResultField.P_electricMotor_brake_,*/ ModalResultField.P_electricMotor_drive_max_,
-			ModalResultField.P_electricMotor_gen_max_
+			ModalResultField.P_electricMotor_gen_max_, ModalResultField.ElectricMotor_OvlBuffer_
 		};
 
 		public static readonly IList<ModalResultField> FuelConsumptionSignals = new[] {
@@ -360,22 +360,22 @@ namespace TUGraz.VectoCore.OutputData
 
 		public double BatteryStartSoC()
 		{
-			return Data.AsEnumerable().Cast<DataRow>().First().Field<SI>(ModalResultField.BatteryStateOfCharge.GetName()).Value() * 100;
+			return Data.AsEnumerable().Cast<DataRow>().First().Field<SI>(ModalResultField.REESSStateOfCharge.GetName()).Value() * 100;
 		}
 
 		public double BatteryEndSoC()
 		{
-			return Data.AsEnumerable().Cast<DataRow>().Last().Field<SI>(ModalResultField.BatteryStateOfCharge.GetName()).Value() * 100;
+			return Data.AsEnumerable().Cast<DataRow>().Last().Field<SI>(ModalResultField.REESSStateOfCharge.GetName()).Value() * 100;
         }
 
 		public WattSecond BatteryLoss()
 		{
-			return TimeIntegral<WattSecond>(ModalResultField.P_battery_loss);
+			return TimeIntegral<WattSecond>(ModalResultField.P_reess_loss);
 		}
 
 		public WattSecond BatteryEnergyEnd()
 		{
-			return Data.AsEnumerable().Cast<DataRow>().Last().Field<SI>(ModalResultField.E_Bat.GetName())
+			return Data.AsEnumerable().Cast<DataRow>().Last().Field<SI>(ModalResultField.E_RESS.GetName())
 				.Cast<WattSecond>();
 		}
 
@@ -574,16 +574,16 @@ namespace TUGraz.VectoCore.OutputData
 				}.Select(x => x.GetName()));
 			if (ElectricMotors.Count > 0) {
 				dataColumns.AddRange(new[] {
-					ModalResultField.P_battery_terminal,
-					ModalResultField.P_battery_int,
-					ModalResultField.P_battery_loss,
-					ModalResultField.P_battery_charge_max,
-					ModalResultField.P_battery_discharge_max,
-					ModalResultField.BatteryStateOfCharge,
-					ModalResultField.U_bat_terminal,
-					ModalResultField.U0_bat,
-					ModalResultField.I_bat,
-					ModalResultField.E_Bat
+					ModalResultField.P_reess_terminal,
+					ModalResultField.P_reess_int,
+					ModalResultField.P_reess_loss,
+					ModalResultField.P_reess_charge_max,
+					ModalResultField.P_reess_discharge_max,
+					ModalResultField.REESSStateOfCharge,
+					ModalResultField.U_reess_terminal,
+					ModalResultField.U0_reess,
+					ModalResultField.I_reess,
+					ModalResultField.E_RESS
 				}.Select(x => x.GetName()));
 				foreach (var em in ElectricMotors.OrderBy(x => x).Reverse()) {
 					dataColumns.AddRange(_electricMotorColumns.Select(emCol =>
diff --git a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs
index 25abe7a75e5c511f71b5186483be2dcac2a16434..aabcfd8380b4c038cf444ed131f902b2299593a1 100644
--- a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs
+++ b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs
@@ -331,7 +331,7 @@ namespace TUGraz.VectoCore.OutputData
 					}
 
 					row[Fields.ElectricEnergyConsumptionPerKm] =
-						(-modData.TimeIntegral<WattSecond>(ModalResultField.P_battery_terminal) / modData.Distance).Cast<JoulePerMeter>().ConvertToKiloWattHourPerKiloMeter();
+						(-modData.TimeIntegral<WattSecond>(ModalResultField.P_reess_terminal) / modData.Distance).Cast<JoulePerMeter>().ConvertToKiloWattHourPerKiloMeter();
 				}
             }
 
diff --git a/VectoCore/VectoCore/VectoCore.csproj b/VectoCore/VectoCore/VectoCore.csproj
index df3dc04f0dd867410091b87ed77222387db1407c..6fee0df0162621df96df838bf7bb491f276624fa 100644
--- a/VectoCore/VectoCore/VectoCore.csproj
+++ b/VectoCore/VectoCore/VectoCore.csproj
@@ -285,7 +285,7 @@
     <Compile Include="InputData\Reader\DataObjectAdapter\DeclarationDataAdapterPrimaryBus.cs" />
     <Compile Include="InputData\Reader\ComponentData\ElectricFullLoadCurveReader.cs" />
     <Compile Include="Models\Connector\Ports\Impl\BatteryResponse.cs" />
-    <Compile Include="Models\Connector\Ports\IBatteryPort.cs" />
+    <Compile Include="Models\Connector\Ports\IElectricEnergyStoragePort.cs" />
     <Compile Include="Models\SimulationComponent\Data\Battery\BatteryData.cs" />
     <Compile Include="InputData\Reader\ComponentData\BatterySOCReader.cs" />
     <Compile Include="InputData\Reader\DataObjectAdapter\DeclarationDataAdapterSingleBus.cs" />
@@ -395,7 +395,7 @@
     <Compile Include="InputData\Reader\ComponentData\WHRPowerReader.cs" />
     <Compile Include="Models\SimulationComponent\Data\HybridStrategyParameters.cs" />
     <Compile Include="Models\SimulationComponent\ElectricSystem.cs" />
-    <Compile Include="Models\SimulationComponent\IBattery.cs" />
+    <Compile Include="Models\SimulationComponent\IElectricEnergyStorage.cs" />
     <Compile Include="Models\SimulationComponent\IElectricMotor.cs" />
     <Compile Include="Models\SimulationComponent\IElectricMotorControl.cs" />
     <Compile Include="Models\SimulationComponent\IHybridControlledGearbox.cs" />
@@ -409,11 +409,12 @@
     <Compile Include="Models\SimulationComponent\IHybridController.cs" />
     <Compile Include="Models\SimulationComponent\Impl\SimpleHybridController.cs" />
     <Compile Include="Models\SimulationComponent\Impl\StopStartCombustionEngine.cs" />
+    <Compile Include="Models\SimulationComponent\Impl\SuperCap.cs" />
     <Compile Include="Models\SimulationComponent\Strategies\DelegateParallelHybridStrategy.cs" />
     <Compile Include="Models\SimulationComponent\Strategies\HybridStrategy.cs" />
     <Compile Include="Models\SimulationComponent\Strategies\TestPowertrain.cs" />
     <Compile Include="Models\SimulationComponent\SwitchableClutch.cs" />
-    <Compile Include="Models\Simulation\DataBus\IBatteryInfo.cs" />
+    <Compile Include="Models\Simulation\DataBus\IRESSInfo.cs" />
     <Compile Include="Models\Simulation\DataBus\IElectricMotorInfo.cs" />
     <Compile Include="Models\Simulation\DataBus\IEngineControl.cs" />
     <Compile Include="InputData\Reader\Impl\DeclarationModeSingleBusVectoRunDataFactory.cs" />
diff --git a/VectoCore/VectoCoreTest/FileIO/JsonReadHybridTest.cs b/VectoCore/VectoCoreTest/FileIO/JsonReadHybridTest.cs
index 77b360af34420ea72441e4516394b7311bd7f6bb..094f128d4c7864a5ca53c732fcc622fc622352e5 100644
--- a/VectoCore/VectoCoreTest/FileIO/JsonReadHybridTest.cs
+++ b/VectoCore/VectoCoreTest/FileIO/JsonReadHybridTest.cs
@@ -28,7 +28,7 @@ namespace TUGraz.VectoCore.Tests.FileIO
 		[TestCase()]
 		public void TestReadBatteryPack()
 		{
-			var inputProvider = JSONInputDataFactory.ReadBatteryData(@"TestData\Hybrids\Battery\GenericBattery.vbat", false);
+			var inputProvider = JSONInputDataFactory.ReadREESSData(@"TestData\Hybrids\Battery\GenericBattery.vbat", false) as IBatteryPackEngineeringInputData;
 
 			Assert.AreEqual(7.5.SI(Unit.SI.Ampere.Hour), inputProvider.Capacity);
 			
@@ -120,12 +120,13 @@ namespace TUGraz.VectoCore.Tests.FileIO
 			Assert.NotNull(engineering);
 			Assert.AreEqual(0.8, engineering.JobInputData.Vehicle.InitialSOC);
 
-			var bat = engineering.JobInputData.Vehicle.Components.ElectricStorage;
+			var bat = engineering.JobInputData.Vehicle.Components.ElectricStorage.REESSPack as IBatteryPackEngineeringInputData;
 
-			var ri = BatteryInternalResistanceReader.Create(bat.BatteryPack.InternalResistanceCurve, 1);
+
+			var ri = BatteryInternalResistanceReader.Create(bat.InternalResistanceCurve, 1);
 			Assert.NotNull(bat);
-			Assert.AreEqual(2, bat.Count);
-			Assert.AreEqual(50, bat.BatteryPack.MaxCurrentFactor);
+			Assert.AreEqual(2, engineering.JobInputData.Vehicle.Components.ElectricStorage.Count);
+			Assert.AreEqual(50, bat.MaxCurrentFactor);
 			Assert.AreEqual(0.04, ri.Lookup(0.5).Value());
 
 			var em = engineering.JobInputData.Vehicle.Components.ElectricMachines;
diff --git a/VectoCore/VectoCoreTest/Integration/BatteryElectric/BatteryElectricTest.cs b/VectoCore/VectoCoreTest/Integration/BatteryElectric/BatteryElectricTest.cs
index d58cdf38c4ee3533a8f1d6ea4f602c643d9a9f19..52033cb5dfde75d48a10329c63c3403783cb0a20 100644
--- a/VectoCore/VectoCoreTest/Integration/BatteryElectric/BatteryElectricTest.cs
+++ b/VectoCore/VectoCoreTest/Integration/BatteryElectric/BatteryElectricTest.cs
@@ -8,6 +8,7 @@ using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Configuration;
+using TUGraz.VectoCore.InputData.FileIO.JSON;
 using TUGraz.VectoCore.InputData.Impl;
 using TUGraz.VectoCore.InputData.Reader.ComponentData;
 using TUGraz.VectoCore.Models.Declaration;
@@ -33,9 +34,11 @@ namespace TUGraz.VectoCore.Tests.Integration.BatteryElectric
 	public class BatteryElectricTest
 	{
 
+		protected const string BEV_Job = @"TestData\BatteryElectric\GenericVehicleB4\BEV_ENG.vecto";
+		protected const string BEV_Job_Cont30kW = @"TestData\BatteryElectric\GenericVehicleB4\BEV_ENG_Cont30kW.vecto";
+
 
 
-		//private ModalResultField[] Yfields;
 		public const string MotorFile = @"TestData\BatteryElectric\GenericVehicleB4\GenericEMotor_125kW_485Nm.vem";
 		public const string BatFile = @"TestData\BatteryElectric\GenericVehicleB4\GenericBattery_243kWh_750V.vbat";
 
@@ -65,7 +68,7 @@ namespace TUGraz.VectoCore.Tests.Integration.BatteryElectric
 
 			var Yfields = new[] {
 				ModalResultField.v_act, ModalResultField.altitude, ModalResultField.acc, ModalResultField.Gear,
-				ModalResultField.BatterySOC,
+				ModalResultField.REESSStateOfCharge,
 			}.Concat(yFields).ToArray();
 			graphWriter.Xfields = new[] { ModalResultField.dist };
 			graphWriter.Yfields = yFields;
@@ -77,24 +80,24 @@ namespace TUGraz.VectoCore.Tests.Integration.BatteryElectric
 
 
 		[
-			TestCase(30, 0.7, 0, 0, TestName = "B4 BEV ConstantSpeed 30km/h SoC: 0.7, level"),
-			TestCase(50, 0.7, 0, 0, TestName = "B4 BEV ConstantSpeed 50km/h SoC: 0.7, level"),
-			//TestCase(80, 0.7, 0, 0, TestName = "B4 BEV ConstantSpeed 80km/h SoC: 0.7, level"),
+			TestCase(30, 0.7, 0, 0, TestName = "BEV E4 ConstantSpeed 30km/h SoC: 0.7, level"),
+			TestCase(50, 0.7, 0, 0, TestName = "BEV E4 ConstantSpeed 50km/h SoC: 0.7, level"),
+			//TestCase(80, 0.7, 0, 0, TestName = "BEV E4 ConstantSpeed 80km/h SoC: 0.7, level"),
 
-			TestCase(30, 0.25, 0, 0, TestName = "B4 BEV ConstantSpeed 30km/h SoC: 0.25, level"),
-			TestCase(50, 0.25, 0, 0, TestName = "B4 BEV ConstantSpeed 50km/h SoC: 0.25, level"),
-			//TestCase(80, 0.25, 0, 0, TestName = "B4 BEV ConstantSpeed 80km/h SoC: 0.25, level"),
+			TestCase(30, 0.25, 0, 0, TestName = "BEV E4 ConstantSpeed 30km/h SoC: 0.25, level"),
+			TestCase(50, 0.25, 0, 0, TestName = "BEV E4 ConstantSpeed 50km/h SoC: 0.25, level"),
+			//TestCase(80, 0.25, 0, 0, TestName = "BEV E4 ConstantSpeed 80km/h SoC: 0.25, level"),
 
-			TestCase(30, 0.5, 5, 0, TestName = "B4 BEV ConstantSpeed 30km/h SoC: 0.5, UH 5%"),
-			TestCase(50, 0.5, 5, 0, TestName = "B4 BEV ConstantSpeed 50km/h SoC: 0.5, UH 5%"),
-			//TestCase(80, 0.5, 5, 0, TestName = "B4 BEV ConstantSpeed 80km/h SoC: 0.5, UH 5%"),
+			TestCase(30, 0.5, 5, 0, TestName = "BEV E4 ConstantSpeed 30km/h SoC: 0.5, UH 5%"),
+			TestCase(50, 0.5, 5, 0, TestName = "BEV E4 ConstantSpeed 50km/h SoC: 0.5, UH 5%"),
+			//TestCase(80, 0.5, 5, 0, TestName = "BEV E4 ConstantSpeed 80km/h SoC: 0.5, UH 5%"),
 
-			TestCase(30, 0.5, -5, 0, TestName = "B4 BEV ConstantSpeed 30km/h SoC: 0.5, DH 5%"),
-			TestCase(50, 0.5, -5, 0, TestName = "B4 BEV ConstantSpeed 50km/h SoC: 0.5, DH 5%"),
-			//TestCase(80, 0.5, -5, 0, TestName = "B4 BEV ConstantSpeed 80km/h SoC: 0.5, DH 5%"),
+			TestCase(30, 0.5, -5, 0, TestName = "BEV E4 ConstantSpeed 30km/h SoC: 0.5, DH 5%"),
+			TestCase(50, 0.5, -5, 0, TestName = "BEV E4 ConstantSpeed 50km/h SoC: 0.5, DH 5%"),
+			//TestCase(80, 0.5, -5, 0, TestName = "BEV E4 ConstantSpeed 80km/h SoC: 0.5, DH 5%"),
 
-			TestCase(30, 0.25, 0, 1000, TestName = "B4 BEV ConstantSpeed 30km/h SoC: 0.25, level P_auxEl: 1kW"),
-			TestCase(30, 0.25, 0, 5000, TestName = "B4 BEV ConstantSpeed 30km/h SoC: 0.25, level P_auxEl: 5kW"),
+			TestCase(30, 0.25, 0, 1000, TestName = "BEV E4 ConstantSpeed 30km/h SoC: 0.25, level P_auxEl: 1kW"),
+			TestCase(30, 0.25, 0, 5000, TestName = "BEV E4 ConstantSpeed 30km/h SoC: 0.25, level P_auxEl: 5kW"),
 		] // the vehicle can drive max. 56km/h!! 80km/h testcase makes no sense
 		public void B4BEVConstantSpeed(double vmax, double initialSoC, double slope, double pAuxEl)
 		{
@@ -128,9 +131,9 @@ namespace TUGraz.VectoCore.Tests.Integration.BatteryElectric
 
 
 		[
-			TestCase(30, 0.7, 0, TestName = "B4 BEV DriveOff 30km/h SoC: 0.7, level"),
-			TestCase(80, 0.7, 0, TestName = "B4 BEV DriveOff 80km/h SoC: 0.7, level"),
-			TestCase(30, 0.25, 0, TestName = "B4 BEV DriveOff 30km/h SoC: 0.25, level")
+			TestCase(30, 0.7, 0, TestName = "BEV E4 DriveOff 30km/h SoC: 0.7, level"),
+			TestCase(80, 0.7, 0, TestName = "BEV E4 DriveOff 80km/h SoC: 0.7, level"),
+			TestCase(30, 0.25, 0, TestName = "BEV E4 DriveOff 30km/h SoC: 0.25, level")
 		]
 		public void B4BEVDriveOff(double vmax, double initialSoC, double slope)
 		{
@@ -158,14 +161,14 @@ namespace TUGraz.VectoCore.Tests.Integration.BatteryElectric
 		}
 
 		[
-			TestCase("LongHaul", 2000, 0.8, 0, TestName = "B4 BEV DriveCycle LongHaul, SoC: 0.8 Payload: 2t P_auxEl: 0kW"),
-			TestCase("RegionalDelivery", 2000, 0.8, 0, TestName = "B4 BEV DriveCycle RegionalDelivery, SoC: 0.8 Payload: 2t P_auxEl: 0kW"),
-			TestCase("UrbanDelivery", 2000, 0.8, 0, TestName = "B4 BEV DriveCycle UrbanDelivery, SoC: 0.8 Payload: 2t P_auxEl: 0kW"),
-			TestCase("Construction", 2000, 0.8, 0, TestName = "B4 BEV DriveCycle Construction, SoC: 0.8 Payload: 2t P_auxEl: 0kW"),
-			TestCase("Urban", 2000, 0.8, 0, TestName = "B4 BEV DriveCycle Urban, SoC: 0.8 Payload: 2t P_auxEl: 0kW"),
-			TestCase("Suburban", 2000, 0.8, 0, TestName = "B4 BEV DriveCycle SubUrban, SoC: 0.8 Payload: 2t P_auxEl: 0kW"),
-			TestCase("Interurban", 2000, 0.8, 0, TestName = "B4 BEV DriveCycle InterUrban, SoC: 0.8 Payload: 2t P_auxEl: 0kW"),
-			TestCase("Coach", 2000, 0.8, 0, TestName = "B4 BEV DriveCycle Coach, SoC: 0.8 Payload: 2t P_auxEl: 0kW"),
+			TestCase("LongHaul", 2000, 0.8, 0, TestName = "BEV E4 DriveCycle LongHaul, SoC: 0.8 Payload: 2t P_auxEl: 0kW"),
+			TestCase("RegionalDelivery", 2000, 0.8, 0, TestName = "BEV E4 DriveCycle RegionalDelivery, SoC: 0.8 Payload: 2t P_auxEl: 0kW"),
+			TestCase("UrbanDelivery", 2000, 0.8, 0, TestName = "BEV E4 DriveCycle UrbanDelivery, SoC: 0.8 Payload: 2t P_auxEl: 0kW"),
+			TestCase("Construction", 2000, 0.8, 0, TestName = "BEV E4 DriveCycle Construction, SoC: 0.8 Payload: 2t P_auxEl: 0kW"),
+			TestCase("Urban", 2000, 0.8, 0, TestName = "BEV E4 DriveCycle Urban, SoC: 0.8 Payload: 2t P_auxEl: 0kW"),
+			TestCase("Suburban", 2000, 0.8, 0, TestName = "BEV E4 DriveCycle SubUrban, SoC: 0.8 Payload: 2t P_auxEl: 0kW"),
+			TestCase("Interurban", 2000, 0.8, 0, TestName = "BEV E4 DriveCycle InterUrban, SoC: 0.8 Payload: 2t P_auxEl: 0kW"),
+			TestCase("Coach", 2000, 0.8, 0, TestName = "BEV E4 DriveCycle Coach, SoC: 0.8 Payload: 2t P_auxEl: 0kW"),
 		]
 		public void B4BEVDriveCycle(string declarationMission, double payload, double initialSoC, double pAuxEl)
 		{
@@ -199,27 +202,59 @@ namespace TUGraz.VectoCore.Tests.Integration.BatteryElectric
 			graphWriter.Write(modFilename + ".vmod");
 		}
 
+		[TestCase(BEV_Job, 0, TestName = "BEV E4 Job RD"),
+		TestCase(BEV_Job_Cont30kW, 0, TestName = "BEV E4 Job Cont. 80kW RD")
+		]
+		public void B4BEVRunJob(string jobFile, int cycleIdx)
+		{
+			var inputProvider = JSONInputDataFactory.ReadJsonJob(jobFile);
+
+			var writer = new FileOutputWriter(jobFile);
+			var factory = new SimulatorFactory(ExecutionMode.Engineering, inputProvider, writer)
+			{
+				Validate = false,
+				WriteModalResults = true,
+			};
+
+			var sumContainer = new SummaryDataContainer(writer);
+			var jobContainer = new JobContainer(sumContainer);
+
+			factory.SumData = sumContainer;
+
+			var run = factory.SimulationRuns().ToArray()[cycleIdx];
+
+			Assert.NotNull(run);
+
+			var pt = run.GetContainer();
+
+			Assert.NotNull(pt);
+
+			run.Run();
+			Assert.IsTrue(run.FinishedWithoutErrors);
+		}
+
+
 		// - - - - - - - - - - - - - - - - - - -  - - - - - - - - - - -  - - - 
 
 		[
-			TestCase(30, 0.7, 0, 0, TestName = "B3 BEV ConstantSpeed 30km/h SoC: 0.7, level"),
-			TestCase(50, 0.7, 0, 0, TestName = "B3 BEV ConstantSpeed 50km/h SoC: 0.7, level"),
-			//TestCase(80, 0.7, 0, 0, TestName = "B4 BEV ConstantSpeed 80km/h SoC: 0.7, level"),
+			TestCase(30, 0.7, 0, 0, TestName = "BEV E3 ConstantSpeed 30km/h SoC: 0.7, level"),
+			TestCase(50, 0.7, 0, 0, TestName = "BEV E3 ConstantSpeed 50km/h SoC: 0.7, level"),
+			//TestCase(80, 0.7, 0, 0, TestName = "BEV E4 ConstantSpeed 80km/h SoC: 0.7, level"),
 
-			TestCase(30, 0.25, 0, 0, TestName = "B3 BEV ConstantSpeed 30km/h SoC: 0.25, level"),
-			TestCase(50, 0.25, 0, 0, TestName = "B3 BEV ConstantSpeed 50km/h SoC: 0.25, level"),
-			//TestCase(80, 0.25, 0, 0, TestName = "B4 BEV ConstantSpeed 80km/h SoC: 0.25, level"),
+			TestCase(30, 0.25, 0, 0, TestName = "BEV E3 ConstantSpeed 30km/h SoC: 0.25, level"),
+			TestCase(50, 0.25, 0, 0, TestName = "BEV E3 ConstantSpeed 50km/h SoC: 0.25, level"),
+			//TestCase(80, 0.25, 0, 0, TestName = "BEV E4 ConstantSpeed 80km/h SoC: 0.25, level"),
 
-			TestCase(30, 0.5, 5, 0, TestName = "B3 BEV ConstantSpeed 30km/h SoC: 0.5, UH 5%"),
-			TestCase(50, 0.5, 5, 0, TestName = "B3 BEV ConstantSpeed 50km/h SoC: 0.5, UH 5%"),
-			//TestCase(80, 0.5, 5, 0, TestName = "B4 BEV ConstantSpeed 80km/h SoC: 0.5, UH 5%"),
+			TestCase(30, 0.5, 5, 0, TestName = "BEV E3 ConstantSpeed 30km/h SoC: 0.5, UH 5%"),
+			TestCase(50, 0.5, 5, 0, TestName = "BEV E3 ConstantSpeed 50km/h SoC: 0.5, UH 5%"),
+			//TestCase(80, 0.5, 5, 0, TestName = "BEV E4 ConstantSpeed 80km/h SoC: 0.5, UH 5%"),
 
-			TestCase(30, 0.5, -5, 0, TestName = "B3 BEV ConstantSpeed 30km/h SoC: 0.5, DH 5%"),
-			TestCase(50, 0.5, -5, 0, TestName = "B3 BEV ConstantSpeed 50km/h SoC: 0.5, DH 5%"),
-			//TestCase(80, 0.5, -5, 0, TestName = "B4 BEV ConstantSpeed 80km/h SoC: 0.5, DH 5%"),
+			TestCase(30, 0.5, -5, 0, TestName = "BEV E3 ConstantSpeed 30km/h SoC: 0.5, DH 5%"),
+			TestCase(50, 0.5, -5, 0, TestName = "BEV E3 ConstantSpeed 50km/h SoC: 0.5, DH 5%"),
+			//TestCase(80, 0.5, -5, 0, TestName = "BEV E4 ConstantSpeed 80km/h SoC: 0.5, DH 5%"),
 
-			TestCase(30, 0.25, 0, 1000, TestName = "B3 BEV ConstantSpeed 30km/h SoC: 0.25, level P_auxEl: 1kW"),
-			TestCase(30, 0.25, 0, 5000, TestName = "B3 BEV ConstantSpeed 30km/h SoC: 0.25, level P_auxEl: 5kW"),
+			TestCase(30, 0.25, 0, 1000, TestName = "BEV E3 ConstantSpeed 30km/h SoC: 0.25, level P_auxEl: 1kW"),
+			TestCase(30, 0.25, 0, 5000, TestName = "BEV E3 ConstantSpeed 30km/h SoC: 0.25, level P_auxEl: 5kW"),
 		] // the vehicle can drive max. 56km/h!! 80km/h testcase makes no sense
 		public void B3BEVConstantSpeed(double vmax, double initialSoC, double slope, double pAuxEl)
 		{
@@ -253,9 +288,9 @@ namespace TUGraz.VectoCore.Tests.Integration.BatteryElectric
 
 
 		[
-			TestCase(30, 0.7, 0, TestName = "B3 BEV DriveOff 30km/h SoC: 0.7, level"),
-			TestCase(80, 0.7, 0, TestName = "B3 BEV DriveOff 80km/h SoC: 0.7, level"),
-			TestCase(30, 0.25, 0, TestName = "B3 BEV DriveOff 30km/h SoC: 0.25, level")
+			TestCase(30, 0.7, 0, TestName = "BEV E3 DriveOff 30km/h SoC: 0.7, level"),
+			TestCase(80, 0.7, 0, TestName = "BEV E3 DriveOff 80km/h SoC: 0.7, level"),
+			TestCase(30, 0.25, 0, TestName = "BEV E3 DriveOff 30km/h SoC: 0.25, level")
 		]
 		public void B3BEVDriveOff(double vmax, double initialSoC, double slope)
 		{
@@ -283,14 +318,14 @@ namespace TUGraz.VectoCore.Tests.Integration.BatteryElectric
 		}
 
 		[
-			TestCase("LongHaul", 2000, 0.8, 0, TestName = "B3 BEV DriveCycle LongHaul, SoC: 0.8 Payload: 2t P_auxEl: 0kW"),
-			TestCase("RegionalDelivery", 2000, 0.8, 0, TestName = "B3 BEV DriveCycle RegionalDelivery, SoC: 0.8 Payload: 2t P_auxEl: 0kW"),
-			TestCase("UrbanDelivery", 2000, 0.8, 0, TestName = "B3 BEV DriveCycle UrbanDelivery, SoC: 0.8 Payload: 2t P_auxEl: 0kW"),
-			TestCase("Construction", 2000, 0.8, 0, TestName = "B3 BEV DriveCycle Construction, SoC: 0.8 Payload: 2t P_auxEl: 0kW"),
-			TestCase("Urban", 2000, 0.8, 0, TestName = "B3 BEV DriveCycle Urban, SoC: 0.8 Payload: 2t P_auxEl: 0kW"),
-			TestCase("Suburban", 2000, 0.8, 0, TestName = "B3 BEV DriveCycle SubUrban, SoC: 0.8 Payload: 2t P_auxEl: 0kW"),
-			TestCase("Interurban", 2000, 0.8, 0, TestName = "B3 BEV DriveCycle InterUrban, SoC: 0.8 Payload: 2t P_auxEl: 0kW"),
-			TestCase("Coach", 2000, 0.8, 0, TestName = "B3 BEV DriveCycle Coach, SoC: 0.8 Payload: 2t P_auxEl: 0kW"),
+			TestCase("LongHaul", 2000, 0.8, 0, TestName = "BEV E3 DriveCycle LongHaul, SoC: 0.8 Payload: 2t P_auxEl: 0kW"),
+			TestCase("RegionalDelivery", 2000, 0.8, 0, TestName = "BEV E3 DriveCycle RegionalDelivery, SoC: 0.8 Payload: 2t P_auxEl: 0kW"),
+			TestCase("UrbanDelivery", 2000, 0.8, 0, TestName = "BEV E3 DriveCycle UrbanDelivery, SoC: 0.8 Payload: 2t P_auxEl: 0kW"),
+			TestCase("Construction", 2000, 0.8, 0, TestName = "BEV E3 DriveCycle Construction, SoC: 0.8 Payload: 2t P_auxEl: 0kW"),
+			TestCase("Urban", 2000, 0.8, 0, TestName = "BEV E3 DriveCycle Urban, SoC: 0.8 Payload: 2t P_auxEl: 0kW"),
+			TestCase("Suburban", 2000, 0.8, 0, TestName = "BEV E3 DriveCycle SubUrban, SoC: 0.8 Payload: 2t P_auxEl: 0kW"),
+			TestCase("Interurban", 2000, 0.8, 0, TestName = "BEV E3 DriveCycle InterUrban, SoC: 0.8 Payload: 2t P_auxEl: 0kW"),
+			TestCase("Coach", 2000, 0.8, 0, TestName = "BEV E3 DriveCycle Coach, SoC: 0.8 Payload: 2t P_auxEl: 0kW"),
 		]
 		public void B3BEVDriveCycle(string declarationMission, double payload, double initialSoC, double pAuxEl)
 		{
diff --git a/VectoCore/VectoCoreTest/Integration/Hybrid/ParallelHybridTest.cs b/VectoCore/VectoCoreTest/Integration/Hybrid/ParallelHybridTest.cs
index 3f9bc9a147cdcd6996e41717ead6cd9cfda054f7..880f6ea8c506b8c7c201d23c63ced97e913ad4d8 100644
--- a/VectoCore/VectoCoreTest/Integration/Hybrid/ParallelHybridTest.cs
+++ b/VectoCore/VectoCoreTest/Integration/Hybrid/ParallelHybridTest.cs
@@ -61,7 +61,7 @@ namespace TUGraz.VectoCore.Tests.Integration.Hybrid
 		{
 			var Yfields = new[] {
 				ModalResultField.v_act, ModalResultField.altitude, ModalResultField.acc, ModalResultField.Gear,
-				ModalResultField.P_ice_out, ModalResultField.BatterySOC, ModalResultField.FCMap
+				ModalResultField.P_ice_out, ModalResultField.REESSStateOfCharge, ModalResultField.FCMap
 			}.Concat(emYFields).ToArray();
 
 			var graphWriter = new GraphWriter();
@@ -322,6 +322,8 @@ namespace TUGraz.VectoCore.Tests.Integration.Hybrid
 
 		public const string Group5TestJob2 = @"TestData\Hybrids\Hyb_P2_Group5\Hyb_P2_Group5.vecto";
 
+		public const string Group2TestJobSuperCapOvl = @"TestData\Hybrids\Hyb_P2_Group2SuperCapOvl\Class2_RigidTruck_ParHyb_SuperCap_Ovl_ENG.vecto";
+
 		public const string CityBus6x2 = @"TestData\Hybrids\Input CityBus 6x2_HEV_P2\CityBus_6x2_HEV_P2.vecto";
 			
 		[
@@ -403,7 +405,7 @@ namespace TUGraz.VectoCore.Tests.Integration.Hybrid
 		//TestCase(Group5TestJob325kW_noESS, 7, TestName = "P2 Hybrid Group 5 325kW NoESS DriveCycle Suburban"),  // error
 		//TestCase(Group5TestJob325kW_noESS, 8, TestName = "P2 Hybrid Group 5 325kW NoESS DriveCycle Urban"), // error
 		//TestCase(Group5TestJob325kW_noESS, 9, TestName = "P2 Hybrid Group 5 325kW NoESS DriveCycle UrbanDelivery"), // error 
-		
+
 		//TestCase(CityBus6x2, 0, TestName = "P2 Hybrid CityBus DriveCycle Coach"),  // error
 		//TestCase(CityBus6x2, 1, TestName = "P2 Hybrid CityBus DriveCycle HeavyUrban"),  // error
 		//TestCase(CityBus6x2, 2, TestName = "P2 Hybrid CityBus DriveCycle Interurban"),  // error
@@ -413,7 +415,17 @@ namespace TUGraz.VectoCore.Tests.Integration.Hybrid
 		//TestCase(CityBus6x2, 6, TestName = "P2 Hybrid CityBus DriveCycle Urban"),  // error
 		//TestCase(CityBus6x2, 7, TestName = "P2 Hybrid CityBus DriveCycle UrbanDelivery"),  // error
 
-			]
+		TestCase(Group2TestJobSuperCapOvl, 0, TestName = "P2 Hybrid Group 2 SuperCap Ovl, DriveCycle LongHaul"),
+		TestCase(Group2TestJobSuperCapOvl, 1, TestName = "P2 Hybrid Group 2 SuperCap Ovl, DriveCycle Coach"), 
+		TestCase(Group2TestJobSuperCapOvl, 2, TestName = "P2 Hybrid Group 2 SuperCap Ovl, DriveCycle Construction"), 
+		TestCase(Group2TestJobSuperCapOvl, 3, TestName = "P2 Hybrid Group 2 SuperCap Ovl, DriveCycle HeavyUrban"), 
+        TestCase(Group2TestJobSuperCapOvl, 4, TestName = "P2 Hybrid Group 2 SuperCap Ovl, DriveCycle Interurban"),  
+        TestCase(Group2TestJobSuperCapOvl, 5, TestName = "P2 Hybrid Group 2 SuperCap Ovl, DriveCycle MunicipalUtility"),
+		TestCase(Group2TestJobSuperCapOvl, 6, TestName = "P2 Hybrid Group 2 SuperCap Ovl, DriveCycle RegionalDelivery"),
+		TestCase(Group2TestJobSuperCapOvl, 7, TestName = "P2 Hybrid Group 2 SuperCap Ovl, DriveCycle Suburban"), 
+		TestCase(Group2TestJobSuperCapOvl, 8, TestName = "P2 Hybrid Group 2 SuperCap Ovl, DriveCycle Urban"),
+        TestCase(Group2TestJobSuperCapOvl, 9, TestName = "P2 Hybrid Group 2 SuperCap Ovl, DriveCycle UrbanDelivery"), 
+            ]
 		public void P2HybridGroup5DriveCycle(string jobFile, int cycleIdx)
 		{
 			var inputProvider = JSONInputDataFactory.ReadJsonJob(jobFile);
diff --git a/VectoCore/VectoCoreTest/Models/SimulationComponent/BatteryTest.cs b/VectoCore/VectoCoreTest/Models/SimulationComponent/BatteryTest.cs
index 228ed6c197ed07f27eec2f13dd32e77153bbf7ff..e4c7ea4929c722538a8adaaba711925f3f1c7ff0 100644
--- a/VectoCore/VectoCoreTest/Models/SimulationComponent/BatteryTest.cs
+++ b/VectoCore/VectoCoreTest/Models/SimulationComponent/BatteryTest.cs
@@ -34,13 +34,13 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 
 		public void BatteryRequestTest(double initialSoC, double simInterval, double powerDemand, double expectedSoC)
 		{
-			var inputData = JSONInputDataFactory.ReadBatteryData(componentFile, false);
+			var inputData = JSONInputDataFactory.ReadREESSData(componentFile, false) ;
 			Assert.NotNull(inputData);
 
 			var dao = new EngineeringDataAdapter();
 			var tmp = new MockBatteryInputData()
 			{
-				BatteryPack = inputData,
+				REESSPack = inputData,
 				Count = 1
 			};
 			var batteryData = dao.CreateBatteryData(tmp, 0.8);
@@ -55,7 +55,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			var absTime = 0.SI<Second>();
 			var dt = simInterval.SI<Second>();
 			var response = bat.Request(absTime, dt, powerDemand.SI<Watt>());
-			Assert.IsInstanceOf<BatteryResponseSuccess>(response);
+			Assert.IsInstanceOf<RESSResponseSuccess>(response);
 			bat.CommitSimulationStep(absTime, dt, modData);
 
 			Assert.AreEqual(expectedSoC, bat.StateOfCharge, 1e-9);
@@ -70,13 +70,13 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			double maxPowerDischarge, double battLoss)
 		{
 
-			var inputData = JSONInputDataFactory.ReadBatteryData(componentFile, false);
+			var inputData = JSONInputDataFactory.ReadREESSData(componentFile, false);
 			Assert.NotNull(inputData);
 
 			var dao = new EngineeringDataAdapter();
 			var tmp = new MockBatteryInputData()
 			{
-				BatteryPack = inputData,
+				REESSPack = inputData,
 				Count = 1
 			};
 			var batteryData = dao.CreateBatteryData(tmp, 0.8);
@@ -87,11 +87,11 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			bat.Initialize(initialSoC);
 
 			var response = bat.Request(0.SI<Second>(), dt.SI<Second>(), powerDemand.SI<Watt>());
-			Assert.IsInstanceOf<BatteryUnderloadResponse>(response);
+			Assert.IsInstanceOf<RESSUnderloadResponse>(response);
 
-			Assert.AreEqual(maxPowerDischarge, response.MaxBatteryLoadDischarge.Value(), 1e-2);
-			Assert.AreEqual(battLoss, response.BatteryLoss.Value(), 1e-2);
-			Assert.AreEqual(powerDemand, response.BatteryPower.Value(), 1e-2);
+			Assert.AreEqual(maxPowerDischarge, response.MaxDischargePower.Value(), 1e-2);
+			Assert.AreEqual(battLoss, response.LossPower.Value(), 1e-2);
+			Assert.AreEqual(powerDemand, response.PowerDemand.Value(), 1e-2);
 		}
 
 		[TestCase(0.5, 0.5, -500000, 10000, -169875, 70125),
@@ -103,13 +103,13 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			double maxPowerDischarge, double battLoss)
 		{
 
-			var inputData = JSONInputDataFactory.ReadBatteryData(componentFile, false);
+			var inputData = JSONInputDataFactory.ReadREESSData(componentFile, false);
 			Assert.NotNull(inputData);
 
 			var dao = new EngineeringDataAdapter();
 			var tmp = new MockBatteryInputData()
 			{
-				BatteryPack = inputData,
+				REESSPack = inputData,
 				Count = 1
 			};
 			var batteryData = dao.CreateBatteryData(tmp, 0.8);
@@ -124,10 +124,10 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			var response = es.Request(0.SI<Second>(), dt.SI<Second>(), powerDemand.SI<Watt>());
 			Assert.IsInstanceOf<ElectricSystemUnderloadResponse>(response);
 
-			Assert.AreEqual(maxPowerDischarge, response.BatteryResponse.MaxBatteryLoadDischarge.Value(), 1e-2);
-			Assert.AreEqual(battLoss, response.BatteryResponse.BatteryLoss.Value(), 1e-2);
+			Assert.AreEqual(maxPowerDischarge, response.RESSResponse.MaxDischargePower.Value(), 1e-2);
+			Assert.AreEqual(battLoss, response.RESSResponse.LossPower.Value(), 1e-2);
 			Assert.AreEqual(auxPower, response.AuxPower.Value(), 1e-2);
-			Assert.AreEqual(powerDemand - auxPower, response.BatteryResponse.BatteryPower.Value(), 1e-2);
+			Assert.AreEqual(powerDemand - auxPower, response.RESSResponse.PowerDemand.Value(), 1e-2);
 		}
 
 		[TestCase(0.5, 0.5, 500000, 310125, 70125),
@@ -140,13 +140,13 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			double maxPowerDischarge, double battLoss)
 		{
 
-			var inputData = JSONInputDataFactory.ReadBatteryData(componentFile, false);
+			var inputData = JSONInputDataFactory.ReadREESSData(componentFile, false);
 			Assert.NotNull(inputData);
 
 			var dao = new EngineeringDataAdapter();
 			var tmp = new MockBatteryInputData()
 			{
-				BatteryPack = inputData,
+				REESSPack = inputData,
 				Count = 1
 			};
 			var batteryData = dao.CreateBatteryData(tmp, 0.8);
@@ -157,11 +157,11 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			bat.Initialize(initialSoC);
 
 			var response = bat.Request(0.SI<Second>(), dt.SI<Second>(), powerDemand.SI<Watt>());
-			Assert.IsInstanceOf<BatteryOverloadResponse>(response);
+			Assert.IsInstanceOf<RESSOverloadResponse>(response);
 
-			Assert.AreEqual(maxPowerDischarge, response.MaxBatteryLoadCharge.Value(), 1e-2);
-			Assert.AreEqual(battLoss, response.BatteryLoss.Value(), 1e-2);
-			Assert.AreEqual(powerDemand, response.BatteryPower.Value(), 1e-2);
+			Assert.AreEqual(maxPowerDischarge, response.MaxChargePower.Value(), 1e-2);
+			Assert.AreEqual(battLoss, response.LossPower.Value(), 1e-2);
+			Assert.AreEqual(powerDemand, response.PowerDemand.Value(), 1e-2);
 		}
 
 		[TestCase(0.5, 0.5, 500000, 10000, 310125, 70125),
@@ -174,13 +174,13 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			double maxPowerDischarge, double battLoss)
 		{
 
-			var inputData = JSONInputDataFactory.ReadBatteryData(componentFile, false);
+			var inputData = JSONInputDataFactory.ReadREESSData(componentFile, false);
 			Assert.NotNull(inputData);
 
 			var dao = new EngineeringDataAdapter();
 			var tmp = new MockBatteryInputData()
 			{
-				BatteryPack = inputData,
+				REESSPack = inputData,
 				Count = 1
 			};
 			var batteryData = dao.CreateBatteryData(tmp, 0.8);
@@ -195,10 +195,10 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			var response = es.Request(0.SI<Second>(), dt.SI<Second>(), powerDemand.SI<Watt>());
 			Assert.IsInstanceOf<ElectricSystemOverloadResponse>(response);
 
-			Assert.AreEqual(maxPowerDischarge, response.BatteryResponse.MaxBatteryLoadCharge.Value(), 1e-2);
-			Assert.AreEqual(battLoss, response.BatteryResponse.BatteryLoss.Value(), 1e-2);
+			Assert.AreEqual(maxPowerDischarge, response.RESSResponse.MaxChargePower.Value(), 1e-2);
+			Assert.AreEqual(battLoss, response.RESSResponse.LossPower.Value(), 1e-2);
 			Assert.AreEqual(auxPower, response.AuxPower.Value(), 1e-2);
-			Assert.AreEqual(powerDemand - auxPower, response.BatteryResponse.BatteryPower.Value(), 1e-2);
+			Assert.AreEqual(powerDemand - auxPower, response.RESSResponse.PowerDemand.Value(), 1e-2);
 		}
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/Models/SimulationComponent/ElectricMotorTest.cs b/VectoCore/VectoCoreTest/Models/SimulationComponent/ElectricMotorTest.cs
index 7564d5066f559706b5d0cce0ee586fc52a63b52d..3677c008ca765694dfbc8573fd9627ae4f01edb6 100644
--- a/VectoCore/VectoCoreTest/Models/SimulationComponent/ElectricMotorTest.cs
+++ b/VectoCore/VectoCoreTest/Models/SimulationComponent/ElectricMotorTest.cs
@@ -4,12 +4,16 @@ using System.IO;
 using System.Linq;
 using NUnit.Framework;
 using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.InputData.FileIO.JSON;
 using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter;
 using TUGraz.VectoCore.Models.Connector.Ports.Impl;
+using TUGraz.VectoCore.Models.Simulation.Data;
+using TUGraz.VectoCore.Models.Simulation.Impl;
 using TUGraz.VectoCore.Models.SimulationComponent;
 using TUGraz.VectoCore.Models.SimulationComponent.Impl;
+using TUGraz.VectoCore.OutputData;
 using TUGraz.VectoCore.Tests.Utils;
 
 namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
@@ -68,7 +72,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			Assert.AreEqual(0, response.Engine.PowerRequest.Value(), 1e-6);
 			Assert.AreEqual(enginePower.Value(), response.ElectricMotor.ElectricMotorPowerMech.Value(), 1e-6);
 			Assert.AreEqual(expectedBatteryPower, response.ElectricSystem.ConsumerPower.Value(), 1e-6);
-			Assert.AreEqual(expectedBatteryPower, response.ElectricSystem.BatteryResponse.BatteryPower.Value(), 1e-6);
+			Assert.AreEqual(expectedBatteryPower, response.ElectricSystem.RESSResponse.PowerDemand.Value(), 1e-6);
 			Assert.IsTrue(response.ElectricSystem.ConsumerPower.Value() < enginePower.Value());
 		}
 
@@ -118,7 +122,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			Assert.AreEqual(enginePower.Value(), response.Engine.PowerRequest.Value(), 1e-6);
 			Assert.AreEqual(motorMechPower, response.ElectricMotor.ElectricMotorPowerMech);
 			Assert.AreEqual(expectedBatteryPower, response.ElectricSystem.ConsumerPower.Value(), 1e-6);
-			Assert.AreEqual(expectedBatteryPower, response.ElectricSystem.BatteryResponse.BatteryPower.Value(), 1e-6);
+			Assert.AreEqual(expectedBatteryPower, response.ElectricSystem.RESSResponse.PowerDemand.Value(), 1e-6);
 			Assert.IsTrue(response.ElectricSystem.ConsumerPower.Value() < response.ElectricMotor.ElectricMotorPowerMech.Value());
 		}
 
@@ -143,9 +147,9 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			var data = dao.CreateElectricMachines(electricMachine);
 			var strategy = new MockHybridControl();
 
-			var batInput = JSONInputDataFactory.ReadBatteryData(BatFile, false);
+			var batInput = JSONInputDataFactory.ReadREESSData(BatFile, false);
 			var tmp = new MockBatteryInputData() {
-				BatteryPack = batInput,
+				REESSPack = batInput,
 				Count = 1
 			};
 			var batteryData = dao.CreateBatteryData(tmp, 0.8);
@@ -173,7 +177,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			Assert.AreEqual(enginePower.Value(), response.Engine.PowerRequest.Value(), 1e-6);
 			Assert.AreEqual(motorMechPower.Value(), response.ElectricMotor.ElectricMotorPowerMech.Value(), 1e-6);
 			Assert.AreEqual(0, response.ElectricSystem.ConsumerPower.Value(), 1e-6);
-			Assert.AreEqual(0, response.ElectricSystem.BatteryResponse.BatteryPower.Value(), 1e-6);
+			Assert.AreEqual(0, response.ElectricSystem.RESSResponse.PowerDemand.Value(), 1e-6);
 			var modData = new MockModalDataContainer();
 			battery.CommitSimulationStep(absTime, dt, modData);
 		}
@@ -190,7 +194,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			var container = new MockVehicleContainer();
 
 			var inputData = JSONInputDataFactory.ReadElectricMotorData(MotorFile, false);
-			var batInput = JSONInputDataFactory.ReadBatteryData(BatFile, false);
+			var batInput = JSONInputDataFactory.ReadREESSData(BatFile, false);
 			var dao = new EngineeringDataAdapter();
 			var electricMachine = new MockElectricMachinesInputData()
 			{
@@ -208,7 +212,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 
 			var tmp = new MockBatteryInputData()
 			{
-				BatteryPack = batInput,
+				REESSPack = batInput,
 				Count = 1
 			};
 			var batteryData = dao.CreateBatteryData(tmp, 0.8);
@@ -229,9 +233,100 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			Assert.AreEqual(0, response.Engine.PowerRequest.Value(), 1e-6);
 			Assert.AreEqual(enginePower.Value(), response.ElectricMotor.ElectricMotorPowerMech.Value(), 1e-6);
 			Assert.AreEqual(expectedBatteryPower, response.ElectricSystem.ConsumerPower.Value(), 1e-6);
-			Assert.AreEqual(expectedBatteryPower, response.ElectricSystem.BatteryResponse.BatteryPower.Value(), 1e-6);
+			Assert.AreEqual(expectedBatteryPower, response.ElectricSystem.RESSResponse.PowerDemand.Value(), 1e-6);
 			Assert.IsTrue(response.ElectricSystem.ConsumerPower.Value() < enginePower.Value());
-			Assert.AreEqual(expectedBatteryLoss, response.ElectricSystem.BatteryResponse.BatteryLoss.Value(), 1e-4);
+			Assert.AreEqual(expectedBatteryLoss, response.ElectricSystem.RESSResponse.LossPower.Value(), 1e-4);
+		}
+
+
+		[TestCase()]
+		public void TestElectricMotorThermalDeRating()
+		{
+			var initialSoc = 0.8;
+			var torque = 334.SI<NewtonMeter>();
+			var speed = 2000.RPMtoRad();
+
+			
+
+			var inputData = JSONInputDataFactory.ReadElectricMotorData(MotorFile, false);
+			var batInput = JSONInputDataFactory.ReadREESSData(BatFile, false);
+			var dao = new EngineeringDataAdapter();
+			var electricMachine = new MockElectricMachinesInputData()
+			{
+				Entries = new List<ElectricMachineEntry<IElectricMotorEngineeringInputData>>() {
+					new ElectricMachineEntry<IElectricMotorEngineeringInputData>() {
+						ElectricMachine = inputData,
+						Position = PowertrainPosition.HybridP2,
+						Count = 1,
+						Ratio = 1,
+						MechanicalEfficiency = 1
+					}
+				}
+			};
+			var data = dao.CreateElectricMachines(electricMachine);
+			var strategy = new MockHybridControl();
+
+			var tmp = new MockBatteryInputData()
+			{
+				REESSPack = batInput,
+				Count = 1
+			};
+			var batteryData = dao.CreateBatteryData(tmp, 0.8);
+
+			var runData = new VectoRunData() {
+				ElectricMachinesData = data
+			};
+
+			var modData = new ModalDataContainer(runData, null, null);
+			modData.AddElectricMotor(PowertrainPosition.HybridP2);
+			var container = new VehicleContainer(ExecutionMode.Engineering, modData);
+			new EngineOnlyGearboxInfo(container);
+
+			var battery = new Battery(container, batteryData);
+			var es = new ElectricSystem(container);
+			es.Connect(battery);
+			battery.Initialize(initialSoc);
+			var motor = new ElectricMotor(container, data.First().Item2, strategy, PowertrainPosition.HybridP2);
+			motor.Connect(es);
+
+			
+			strategy.ElectricShare = -torque;
+			motor.Initialize(0.SI<NewtonMeter>(), speed);
+
+			var i = 0;
+
+			// energy buffer is empty - overload is available
+			for (; i <= 60; i++) {
+				var dt = 0.5.SI<Second>();
+				var absTime = i * dt;
+				
+				var response = motor.Request(absTime, dt, torque, speed);
+				Assert.AreEqual(-334.23, response.ElectricMotor.MaxDriveTorque.Value(), 1e-2);
+				motor.CommitSimulationStep(absTime, dt, modData);
+			}
+
+			// energy buffer reached - only P_cont is available
+
+			strategy.ElectricShare = -torque * 0.5;
+			for (; i <= 70; i++) {
+				var dt = 0.5.SI<Second>();
+				var absTime = i * dt;
+
+				var response = motor.Request(absTime, dt, torque * 0.5, speed);
+				Assert.AreEqual(-238.73, response.ElectricMotor.MaxDriveTorque.Value(), 1e-2);
+				motor.CommitSimulationStep(absTime, dt, modData);
+			}
+
+
+			// energy buffer below lower threshold - overload is available again
+			for (; i < 100; i++) {
+				var dt = 0.5.SI<Second>();
+				var absTime = i * dt;
+
+				var response = motor.Request(absTime, dt, torque * 0.5, speed);
+				Assert.AreEqual(-334.23, response.ElectricMotor.MaxDriveTorque.Value(), 1e-2);
+				motor.CommitSimulationStep(absTime, dt, modData);
+			}
 		}
 	}
 
diff --git a/VectoCore/VectoCoreTest/Models/SimulationComponent/SuperCapTest.cs b/VectoCore/VectoCoreTest/Models/SimulationComponent/SuperCapTest.cs
new file mode 100644
index 0000000000000000000000000000000000000000..a8d02f0bb6379cb13662356af37e47c01fd39afc
--- /dev/null
+++ b/VectoCore/VectoCoreTest/Models/SimulationComponent/SuperCapTest.cs
@@ -0,0 +1,57 @@
+using System.IO;
+using NUnit.Framework;
+using TUGraz.VectoCommon.Utils;
+using TUGraz.VectoCore.InputData.FileIO.JSON;
+using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter;
+using TUGraz.VectoCore.Models.Connector.Ports.Impl;
+using TUGraz.VectoCore.Models.SimulationComponent.Data.Battery;
+using TUGraz.VectoCore.Models.SimulationComponent.Impl;
+using TUGraz.VectoCore.Tests.Utils;
+
+namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
+{
+	[TestFixture]
+	public class SuperCapTest
+	{
+		[OneTimeSetUp]
+		public void RunBeforeAnyTests()
+		{
+			Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory);
+		}
+
+		[
+			TestCase(0.5, 0.5, -500, 0.499875863),
+			TestCase(0.5, 1, -14000, 0.4929779240),
+			TestCase(0.5, 1, 7000, 0.503456863),
+			TestCase(0.35, 0.5, -200, 0.3499290696),
+			TestCase(0.35, 0.5, -16000, 0.3441842440),
+			TestCase(0.75, 0.5, -300, 0.7499503587),
+			TestCase(0.75, 0.5, -14500, 0.74758944005),
+		]
+
+		public void SuperCapRequestTest(double initialSoC, double simInterval, double powerDemand, double expectedSoC)
+		{
+			var batteryData = new SuperCapData() {
+				Capacity = 37.SI<Farad>(),
+				InternalResistance = 0.02.SI<Ohm>(),
+				MinVoltage = 0.SI<Volt>(),
+				MaxVoltage = 330.SI<Volt>(),
+			};
+
+			var container = new MockVehicleContainer();
+			var superCap = new SuperCap(container, batteryData);
+			var modData = new MockModalDataContainer();
+			superCap.Initialize(initialSoC);
+
+			//Assert.AreEqual(3.2*200, bat.Voltage.Value());
+
+			var absTime = 0.SI<Second>();
+			var dt = simInterval.SI<Second>();
+			var response = superCap.Request(absTime, dt, powerDemand.SI<Watt>(), false);
+			Assert.IsInstanceOf<RESSResponseSuccess>(response);
+			superCap.CommitSimulationStep(absTime, dt, modData);
+
+			Assert.AreEqual(expectedSoC, superCap.StateOfCharge, 1e-9);
+		}
+	}
+}
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/TestData/BatteryElectric/GenericVehicleB4/BEV_ENG_Cont30kW.vecto b/VectoCore/VectoCoreTest/TestData/BatteryElectric/GenericVehicleB4/BEV_ENG_Cont30kW.vecto
new file mode 100644
index 0000000000000000000000000000000000000000..be8d73fdb11646b66651b82315ea192a86ae68bc
--- /dev/null
+++ b/VectoCore/VectoCoreTest/TestData/BatteryElectric/GenericVehicleB4/BEV_ENG_Cont30kW.vecto
@@ -0,0 +1,36 @@
+{
+  "Header": {
+    "CreatedBy": " ()",
+    "Date": "2016-10-13T08:55:18.2100810Z",
+    "AppVersion": "3",
+    "FileVersion": 9
+  },
+  "Body": {
+    "SavedInDeclMode": false,
+    "EngineOnlyMode": false,
+    "VehicleFile": "BatteryElectricVehicle_Cont30kW.vveh",
+    
+    "Padd_electric":  3540.0, 
+    
+    "VACC": "Truck.vacc",
+    
+    "LAC": {
+      "Enabled": true,
+      "PreviewDistanceFactor": 10.0,
+      "DF_offset": 2.5,
+      "DF_scaling": 1.5,
+      "DF_targetSpeedLookup": "",
+      "Df_velocityDropLookup": ""
+    },
+    "OverSpeedEcoRoll": {
+      "Mode": "Off",
+      "MinSpeed": 50.0,
+      "OverSpeed": 5.0,
+      "UnderSpeed": 5.0
+    },
+    "Cycles": [
+      "RegionalDelivery"
+      
+    ]
+  }
+}
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/TestData/BatteryElectric/GenericVehicleB4/BatteryElectricVehicle_Cont30kW.vveh b/VectoCore/VectoCoreTest/TestData/BatteryElectric/GenericVehicleB4/BatteryElectricVehicle_Cont30kW.vveh
new file mode 100644
index 0000000000000000000000000000000000000000..206d360c913e1011f878574dc02a3dd7f6ba235d
--- /dev/null
+++ b/VectoCore/VectoCoreTest/TestData/BatteryElectric/GenericVehicleB4/BatteryElectricVehicle_Cont30kW.vveh
@@ -0,0 +1,84 @@
+{
+  "Header": {
+    "CreatedBy": "",
+    "Date": "2017-07-13T14:14:29.3226830Z",
+    "AppVersion": "3",
+    "FileVersion": 10
+  },
+  "Body": {
+    "SavedInDeclMode": false,
+    "VehCat": "RigidTruck",
+    "LegislativeClass": "Unknown",
+    "CurbWeight": 4670.0,
+    "CurbWeightExtra": 1900.0,
+    "Loading": 3020.0,
+    "MassMax": 11.99,
+    "rdyn": 421.0,
+    "PowertrainConfiguration": "BatteryElectric",
+    "CdCorrMode": "CdofVdecl",
+    "CdCorrFile": "",
+	  "ElectricMotors": [
+        {
+          "Count": 2,
+          "Ratio": 22.6,
+          "MechanicalEfficiency":  0.97, 
+          "Position": "B4",
+          "MotorFile": "GenericEMotor_125kW_485Nm_Cont30kW.vem"
+        }
+    ],
+    "Battery": { 
+        "NumPacks": 2,
+        "BatteryFile": "GenericBattery_243kWh_750V.vbat"
+    },
+    "InitialSoC": 80,
+    "TorqueLimits": {},
+    "IdlingSpeed": 0.0,
+    "AxleConfig": {
+      "Type": "4x2",
+      "Axles": [
+        {
+          "Inertia": 6.5,
+          "Wheels": "265/70 R19.5",
+          "AxleWeightShare": 0.2,
+          "TwinTyres": false,
+          "RRCISO": 0.0065,
+          "FzISO": 20850.0,
+          "Type": "VehicleNonDriven"
+        },
+        {
+          "Inertia": 6.5,
+          "Wheels": "265/70 R19.5",
+          "AxleWeightShare": 0.3,
+          "TwinTyres": true,
+          "RRCISO": 0.0075,
+          "FzISO": 20850.0,
+          "Type": "VehicleDriven"
+        },
+        {
+          "Inertia": 4.5,
+          "Wheels": "235/75 R17.5",
+          "AxleWeightShare": 0.25,
+          "TwinTyres": false,
+          "RRCISO": 0.0055,
+          "FzISO": 16680.0,
+          "Type": "VehicleNonDriven"
+        },
+        {
+          "Inertia": 4.5,
+          "Wheels": "235/75 R17.5",
+          "AxleWeightShare": 0.25,
+          "TwinTyres": false,
+          "RRCISO": 0.0055,
+          "FzISO": 16680.0,
+          "Type": "VehicleNonDriven"
+        }
+      ]
+    },
+    "EngineStopStart": true,
+    "EcoRoll": "None",
+    "PredictiveCruiseControl": "None",
+    "ATEcoRollReleaseLockupClutch": false,
+    "CdxA": 4.83,
+    "VehicleHeight": 3.0
+  }
+}
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/TestData/BatteryElectric/GenericVehicleB4/GenericEMotor_125kW_485Nm.vem b/VectoCore/VectoCoreTest/TestData/BatteryElectric/GenericVehicleB4/GenericEMotor_125kW_485Nm.vem
index c0a57a974a3014e456ffe5cb2d4c6f1ed3b056b4..5349c859137d90673f911a095bdcd19e813d7f21 100644
--- a/VectoCore/VectoCoreTest/TestData/BatteryElectric/GenericVehicleB4/GenericEMotor_125kW_485Nm.vem
+++ b/VectoCore/VectoCoreTest/TestData/BatteryElectric/GenericVehicleB4/GenericEMotor_125kW_485Nm.vem
@@ -7,11 +7,13 @@
   },
   "Body": {
     "SavedInDeclMode": false,
-	"Model": "Generic Electric Motor",
+    "Model": "Generic Electric Motor",
     "FullLoadCurve": "GenericEMotor_125kW_485Nm.vemp",
-    "DragCurve":  "GenericDrag_125kW_485Nm.vemd", 
+    "DragCurve": "GenericDrag_125kW_485Nm.vemd",
     "EfficiencyMap": "GenericMap_125kW_485Nm.vemo",
-    "Inertia" :  0.225 
-
-	}
+    "Inertia": 0.225,
+    "ContinuousPower": 5000000,
+    "ThermalOverloadBuffer": 0.6,
+    "ThermalOverloadRecoveryFactor": 0.9
+}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/TestData/BatteryElectric/GenericVehicleB4/GenericEMotor_125kW_485Nm_Cont30kW.vem b/VectoCore/VectoCoreTest/TestData/BatteryElectric/GenericVehicleB4/GenericEMotor_125kW_485Nm_Cont30kW.vem
new file mode 100644
index 0000000000000000000000000000000000000000..8f35e87656ff24fec0b8982931473e7aa1e3ce15
--- /dev/null
+++ b/VectoCore/VectoCoreTest/TestData/BatteryElectric/GenericVehicleB4/GenericEMotor_125kW_485Nm_Cont30kW.vem
@@ -0,0 +1,19 @@
+{
+  "Header": {
+    "CreatedBy": " ()",
+    "Date": "2016-10-13T08:54:28.7387223Z",
+    "AppVersion": "3",
+    "FileVersion": 1
+  },
+  "Body": {
+    "SavedInDeclMode": false,
+    "Model": "Generic Electric Motor",
+    "FullLoadCurve": "GenericEMotor_125kW_485Nm.vemp",
+    "DragCurve": "GenericDrag_125kW_485Nm.vemd",
+    "EfficiencyMap": "GenericMap_125kW_485Nm.vemo",
+    "Inertia": 0.225,
+    "ContinuousPower": 30000,
+    "ThermalOverloadBuffer": 0.7,
+    "ThermalOverloadRecoveryFactor": 0.9
+}
+}
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/ElectricMotor/GenericEMotor.vem b/VectoCore/VectoCoreTest/TestData/Hybrids/ElectricMotor/GenericEMotor.vem
index 93436e0ffad5cfd10ebd9929b6929ff7d66e875f..63b5fcce6facc27c59cd450ccf2af27e75b7acbf 100644
--- a/VectoCore/VectoCoreTest/TestData/Hybrids/ElectricMotor/GenericEMotor.vem
+++ b/VectoCore/VectoCoreTest/TestData/Hybrids/ElectricMotor/GenericEMotor.vem
@@ -7,11 +7,13 @@
   },
   "Body": {
     "SavedInDeclMode": false,
-	"Model": "Generic Electric Motor",
+    "Model": "Generic Electric Motor",
     "FullLoadCurve": "GenericEMotor.vemp",
-    "DragCurve":  "GenericDrag.vemd", 
+    "DragCurve": "GenericDrag.vemd",
     "EfficiencyMap": "GenericMap.vemo",
-    "Inertia" :  0.15 
-
-	}
+    "Inertia": 0.15,
+    "ContinuousPower": 50000,
+    "ThermalOverloadBuffer": 0.6,
+    "ThermalOverloadRecoveryFactor": 0.9 
+  }
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group2_P2/GenericEMotor.vem b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group2_P2/GenericEMotor.vem
index c7cf6e448f26bb28479a9841a29c85af1b37b78e..2d2596a49d91f8bd70e99ea2289219f3acf61ff2 100644
--- a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group2_P2/GenericEMotor.vem
+++ b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group2_P2/GenericEMotor.vem
@@ -7,10 +7,13 @@
 	},
 	"Body": {
 		"SavedInDeclMode": false,
-	"Model": "Generic Electric Motor",
-	"FullLoadCurve": "GenericEMotor.vemp",
-    "EfficiencyMap": "GenericMap.vemo",
-    "DragCurve":  "GenericDrag.vemd", 
-		"Inertia":  0.15
+		"Model": "Generic Electric Motor",
+		"FullLoadCurve": "GenericEMotor.vemp",
+		"EfficiencyMap": "GenericMap.vemo",
+		"DragCurve": "GenericDrag.vemd",
+		"Inertia": 0.15,
+		"ContinuousPower": 5000000,
+    "ThermalOverloadBuffer": 0.6,
+    "ThermalOverloadRecoveryFactor": 0.9
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group2_P2/GenericEMotor240kW.vem b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group2_P2/GenericEMotor240kW.vem
index 74a934daae91119a5da613b6787fc05b2ea33d24..0057af67263c0a330401a007ef06190870d2c211 100644
--- a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group2_P2/GenericEMotor240kW.vem
+++ b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group2_P2/GenericEMotor240kW.vem
@@ -7,10 +7,13 @@
 	},
 	"Body": {
 		"SavedInDeclMode": false,
-	"Model": "Generic Electric Motor",
-    "FullLoadCurve": "GenericEMotor240kW.vemp",
-    "DragCurve":  "GenericDrag.vemd", 
+		"Model": "Generic Electric Motor",
+		"FullLoadCurve": "GenericEMotor240kW.vemp",
+		"DragCurve": "GenericDrag.vemd",
 		"EfficiencyMap": "GenericMap240kW.vemo",
-		"Inertia" :  0.2 
+		"Inertia": 0.2,
+		"ContinuousPower": 5000000,
+    "ThermalOverloadBuffer": 0.6,
+    "ThermalOverloadRecoveryFactor": 0.9
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2/ElectricMotor/Inputdaten P2 Group 5/Electric components/GenericEMotor_140kW_936Nm.vem b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2/ElectricMotor/Inputdaten P2 Group 5/Electric components/GenericEMotor_140kW_936Nm.vem
index 82a40d961eb97014685b253d8e7ead6b9d32b8c9..1a27269d815af6619f636c9744d569e6096e87fe 100644
--- a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2/ElectricMotor/Inputdaten P2 Group 5/Electric components/GenericEMotor_140kW_936Nm.vem	
+++ b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2/ElectricMotor/Inputdaten P2 Group 5/Electric components/GenericEMotor_140kW_936Nm.vem	
@@ -7,11 +7,13 @@
   },
   "Body": {
     "SavedInDeclMode": false,
-	"Model": "Generic Electric Motor",
+    "Model": "Generic Electric Motor",
     "FullLoadCurve": "GenericEMotor_140kW_936Nm.vemp",
-    "DragCurve":  "GenericDrag_140kW_936Nm.vemd", 
+    "DragCurve": "GenericDrag_140kW_936Nm.vemd",
     "EfficiencyMap": "GenericMap_140kW_936Nm.vemo",
-    "Inertia" :  0.5 
-
-	}
+    "Inertia": 0.5,
+    "ContinuousPower": 5000000,
+    "ThermalOverloadBuffer": 0.6,
+    "ThermalOverloadRecoveryFactor": 0.9
+}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2/GenericEM_47kW.vem b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2/GenericEM_47kW.vem
index 2ecb3fbc1d8dfbd65b81c96277b3e1915596f777..55bf540a4cf9b53443ea9b611c6a3e35600a8151 100644
--- a/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2/GenericEM_47kW.vem
+++ b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2/GenericEM_47kW.vem
@@ -7,10 +7,13 @@
 	},
 	"Body": {
 		"SavedInDeclMode": false,
-	"Model": "Generic EM 47kW",
-	"FullLoadCurve": "GenericEM_47kW.vemp",
-    "EfficiencyMap": "GenericEM_47kW.vemo",
-    "DragCurve":  "GenericEM_47kW.vemd", 
-		"Inertia":  0.1
+		"Model": "Generic EM 47kW",
+		"FullLoadCurve": "GenericEM_47kW.vemp",
+		"EfficiencyMap": "GenericEM_47kW.vemo",
+		"DragCurve": "GenericEM_47kW.vemd",
+		"Inertia": 0.1,
+		"ContinuousPower": 5000000,
+    "ThermalOverloadBuffer": 0.6,
+    "ThermalOverloadRecoveryFactor": 0.9
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/175kW.vfld b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/175kW.vfld
new file mode 100644
index 0000000000000000000000000000000000000000..c18c5c3cae86325fc562fc5a4ec0d10239f2a882
--- /dev/null
+++ b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/175kW.vfld
@@ -0,0 +1,252 @@
+engine speed [1/min], full load torque [Nm], motoring torque [Nm]
+600,478,-35
+608,485.52,-35.31693
+616,493.04,-35.63385
+624,500.56,-35.95077
+632,508.08,-36.26769
+640,515.6,-36.58462
+648,523.12,-36.90154
+656,530.64,-37.21846
+664,538.16,-37.53539
+672,545.68,-37.85231
+680,553.2,-38.16923
+688,560.72,-38.48615
+696,568.24,-38.80308
+704,575.76,-39.12
+712,583.28,-39.43692
+720,590.8,-39.75385
+728,598.32,-40.07077
+736,605.84,-40.3877
+744,613.36,-40.70462
+752,620.88,-41.02154
+760,628.4,-41.33846
+768,635.92,-41.65539
+776,643.44,-41.97231
+784,650.96,-42.28923
+792,658.48,-42.60616
+800,666,-42.92308
+808,673.44,-43.24
+816,680.88,-43.48
+824,688.32,-43.72
+832,695.76,-43.96
+840,703.2,-44.2
+848,710.64,-44.44
+856,718.08,-44.68
+864,725.52,-44.92
+872,732.96,-45.16
+880,740.4,-45.4
+888,747.84,-45.64
+896,755.28,-45.88
+904,762.72,-46.12
+912,770.16,-46.36
+920,777.6,-46.6
+928,785.04,-46.84
+936,792.48,-47.08
+944,799.92,-47.32
+952,807.36,-47.56
+960,814.8,-47.8
+968,822.24,-48.04
+976,829.68,-48.28
+984,837.12,-48.52
+992,844.56,-48.76
+1000,852,-49
+1008,856.16,-49.4
+1016,860.32,-49.8
+1024,864.48,-50.19579
+1032,868.64,-50.59098
+1040,872.8,-50.98618
+1048,876.96,-51.38137
+1056,881.12,-51.77656
+1064,885.28,-52.17175
+1072,889.44,-52.56694
+1080,893.6,-52.96214
+1088,897.76,-53.35733
+1096,901.92,-53.75252
+1104,906.08,-54.14772
+1112,910.24,-54.54291
+1120,914.4,-54.9381
+1128,918.56,-55.33329
+1136,922.72,-55.72849
+1144,926.88,-56.12368
+1152,931.04,-56.51887
+1160,935.2,-56.91406
+1168,939.36,-57.30925
+1176,943.52,-57.70444
+1184,947.68,-58.09964
+1192,951.84,-58.49483
+1200,956,-58.89002
+1208,956,-59.28522
+1216,956,-59.68041
+1224,956,-60.0756
+1232,956,-60.44
+1240,956,-60.8
+1248,956,-61.16
+1256,956,-61.52
+1264,956,-61.88
+1272,956,-62.24
+1280,956,-62.6
+1288,956,-62.96
+1296,956,-63.32
+1304,956,-63.68
+1312,956,-64.04
+1320,956,-64.4
+1328,956,-64.76
+1336,956,-65.12
+1344,956,-65.48
+1352,956,-65.84
+1360,956,-66.2
+1368,956,-66.56
+1376,956,-66.92
+1384,956,-67.28
+1392,956,-67.64
+1400,956,-68
+1408,956,-68.36
+1416,956,-68.72
+1424,956,-69.08
+1432,956,-69.44
+1440,956,-69.76736
+1448,956,-70.08386
+1456,956,-70.40035
+1464,956,-70.71684
+1472,956,-71.03333
+1480,956,-71.34982
+1488,956,-71.66631
+1496,956,-71.9828
+1504,956,-72.2993
+1512,956,-72.61579
+1520,956,-72.93228
+1528,956,-73.24877
+1536,956,-73.56526
+1544,956,-73.88175
+1552,956,-74.19825
+1560,956,-74.51474
+1568,956,-74.83123
+1576,956,-75.14772
+1584,956,-75.46421
+1592,956,-75.7807
+1600,956,-76.0972
+1608,953.56,-76.41369
+1616,951.12,-76.73018
+1624,948.68,-77.04667
+1632,946.24,-77.36316
+1640,943.8,-77.67965
+1648,941.36,-77.99614
+1656,938.92,-78.31264
+1664,936.48,-78.6
+1672,934.04,-78.8
+1680,931.6,-79
+1688,929.16,-79.2
+1696,926.72,-79.4
+1704,924.28,-79.6
+1712,921.84,-79.8
+1720,919.4,-80
+1728,916.96,-80.2
+1736,914.52,-80.4
+1744,912.08,-80.6
+1752,909.64,-80.8
+1760,907.2,-81
+1768,904.76,-81.2
+1776,902.32,-81.4
+1784,899.88,-81.6
+1792,897.44,-81.8
+1800,895,-82
+1808,892.24,-82.24
+1816,889.48,-82.48
+1824,886.72,-82.72
+1832,883.96,-82.96
+1840,881.2,-83.2
+1848,878.44,-83.44
+1856,875.68,-83.68
+1864,872.92,-83.92
+1872,870.16,-84.16
+1880,867.4,-84.4
+1888,864.64,-84.64
+1896,861.88,-84.88
+1904,859.12,-85.12
+1912,856.36,-85.36
+1920,853.6,-85.6
+1928,850.84,-85.84
+1936,848.08,-86.08
+1944,845.32,-86.32
+1952,842.56,-86.56
+1960,839.8,-86.8
+1968,837.04,-87.04
+1976,834.28,-87.28
+1984,831.52,-87.52
+1992,828.76,-87.76
+2000,826,-88
+2008,823.36,-88.44
+2016,820.72,-88.88
+2024,818.08,-89.32
+2032,815.44,-89.76
+2040,812.8,-90.2
+2048,810.16,-90.64
+2056,807.52,-91.08
+2064,804.88,-91.52
+2072,802.24,-91.96
+2080,799.6,-92.4
+2088,796.96,-92.84
+2096,794.32,-93.28
+2104,791.68,-93.72
+2112,789.04,-94.16
+2120,786.4,-94.6
+2128,783.76,-95.04
+2136,781.12,-95.48
+2144,778.48,-95.92
+2152,775.84,-96.36
+2160,773.2,-96.8
+2168,770.56,-97.24
+2176,767.92,-97.68
+2184,765.28,-98.06694
+2192,762.64,-98.40081
+2200,760,-98.73468
+2208,755.56,-99.06856
+2216,751.12,-99.40243
+2224,746.68,-99.73631
+2232,742.24,-100.0702
+2240,737.8,-100.404
+2248,733.36,-100.7379
+2256,728.92,-101.0718
+2264,724.48,-101.4057
+2272,720.04,-101.7395
+2280,715.6,-102.0734
+2288,711.16,-102.4073
+2296,706.72,-102.7412
+2304,702.28,-103.075
+2312,697.84,-103.4089
+2320,693.4,-103.7428
+2328,688.96,-104.0767
+2336,684.52,-104.4105
+2344,680.08,-104.7444
+2352,675.64,-105.0783
+2360,671.2,-105.4
+2368,666.76,-105.72
+2376,662.32,-106.04
+2384,657.88,-106.36
+2392,653.44,-106.68
+2400,649,-107
+2408,642.36,-107.32
+2416,635.72,-107.64
+2424,629.08,-107.96
+2432,622.44,-108.28
+2440,615.8,-108.6
+2448,609.16,-108.92
+2456,602.52,-109.24
+2464,595.88,-109.56
+2472,589.24,-109.88
+2480,582.6,-110.2
+2488,575.96,-110.52
+2496,569.32,-110.84
+2504,543.36,-111.16
+2512,498.08,-111.48
+2520,452.8,-111.8
+2528,407.52,-112.12
+2536,362.24,-112.44
+2544,316.96,-112.76
+2552,271.68,-113.08
+2560,226.4,-113.4
+2568,181.12,-113.72
+2576,135.84,-114.04
+2584,90.56,-114.36
+2592,45.28,-114.68
+2600,0,-115
diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/175kW.vmap b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/175kW.vmap
new file mode 100644
index 0000000000000000000000000000000000000000..2cb356074807c6c2a1576af4a68ae166746eaf06
--- /dev/null
+++ b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/175kW.vmap
@@ -0,0 +1,137 @@
+engine speed [rpm], torque [Nm], fuel consumption [g/h]
+500,-31,0
+500,0,508
+500,95.6,1814.959
+500,191.2,3075.43
+500,286.8,4327.79
+500,382.4,6036.866
+500,478,7983
+500,573.6,9771.095
+600,-35,0
+600,0,508
+600,95.6,1814.959
+600,191.2,3075.43
+600,286.8,4327.79
+600,382.4,6036.866
+600,478,7983
+600,573.6,9771.095
+808,-43.24,0
+808.5,0,737.35
+808.5,95.6,2156.667
+808.5,191.2,3750.051
+808.5,286.8,5348.091
+808.5,382.4,7281.769
+808.5,478,9331.995
+808.5,573.6,11361.22
+808.5,669.2,13292.96
+808.5,673.905,13387.96
+808,769.505,15319.69
+1017,-49.85,0
+1017,0,966.7
+1017,95.6,2499.359
+1017,191.2,4425.586
+1017,286.8,6368.761
+1017,382.4,8527.475
+1017,478,10681.08
+1017,573.6,12806.98
+1017,669.2,14926.89
+1017,764.8,17075.42
+1017,860.4,19211.62
+1017,860.84,19221.39
+1017,956.44,21357.58
+1225,-60.125,0
+1225.4,0,1216.133
+1225.4,95.6,2867.396
+1225.4,191.2,5129.114
+1225.4,286.8,7421.546
+1225.4,382.4,9808.684
+1225.4,478,12096.76
+1225.4,573.6,14371.23
+1225.4,669.2,16697.39
+1225.4,764.8,19043.79
+1225.4,860.4,21380.34
+1225.4,956,23976.15
+1225,1051.6,26399.12
+1434,-69.53,0
+1433.9,0,1607.511
+1433.9,95.6,3422.282
+1433.9,191.2,6045.75
+1433.9,286.8,8717.55
+1433.9,382.4,11388.84
+1433.9,478,14040.14
+1433.9,573.6,16812.16
+1433.9,669.2,19499.88
+1433.9,764.8,22089.68
+1433.9,860.4,24706.84
+1433.9,956,27415.66
+1434,1051.6,30063.37
+1662,-78.55,0
+1661.8,0,2026.982
+1661.8,95.6,4054.852
+1661.8,191.2,7064.631
+1661.8,286.8,10168.59
+1661.8,382.4,13313.27
+1661.8,478,16389.77
+1661.8,573.6,19514.32
+1661.8,669.2,22625.12
+1661.8,764.8,25652.52
+1661.8,860.4,28788.1
+1661.8,937.151,31372.42
+1662,1032.751,34529.97
+1835,-83.05,0
+1834.7,0,2385.627
+1834.7,95.6,4596.783
+1834.7,191.2,7871.156
+1834.7,286.8,11300.52
+1834.7,382.4,14757.68
+1834.7,478,18117.38
+1834.7,573.6,21557.68
+1834.7,669.2,25079.78
+1834.7,764.8,28600.34
+1834.7,860.4,32191.22
+1834.7,883.0285,33047.82
+1835,978.6285,36639.92
+2008,-88.44,0
+2007.5,0,2806.425
+2007.5,95.6,5238.11
+2007.5,191.2,8755.323
+2007.5,286.8,12501.62
+2007.5,382.4,16278.62
+2007.5,478,20040.57
+2007.5,573.6,23826.03
+2007.5,669.2,27760.66
+2007.5,764.8,31692.9
+2007.5,823.525,34019.71
+2008,919.125,37924.6
+2180,-97.9,0
+2180.3,0,3323.097
+2180.3,95.6,5859.055
+2180.3,191.2,9668.133
+2180.3,286.8,13730.37
+2180.3,382.4,17786.81
+2180.3,478,21943.1
+2180.3,573.6,26354.73
+2180.3,669.2,30668.08
+2180.3,764.8,34924.28
+2180.3,766.501,35000.3
+2180,862.101,39256.51
+2353,-105.12,0
+2353.2,0,3807.896
+2353.2,95.6,6495.978
+2353.2,191.2,10634.86
+2353.2,286.8,15048
+2353.2,382.4,19654.95
+2353.2,478,24298.67
+2353.2,573.6,29311.43
+2353.2,669.2,34144.93
+2353,764.8,39097.94
+2453,-109.12,0
+2453.2,0,3807.896
+2453.2,95.6,6495.978
+2453.2,191.2,10634.86
+2453.2,286.8,15048
+2453.2,382.4,19654.95
+2453.2,478,24298.67
+2453.2,573.6,29311.43
+2453.2,669.2,34144.93
+2453,764.8,39097.94
diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/AMT_6.vgbx b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/AMT_6.vgbx
new file mode 100644
index 0000000000000000000000000000000000000000..09f3569f11bce4184afc54ff02e9b6d7e688893f
--- /dev/null
+++ b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/AMT_6.vgbx
@@ -0,0 +1,75 @@
+{
+  "Header": {
+    "CreatedBy": "",
+    "Date": "2020-08-25T16:36:19.6217691Z",
+    "AppVersion": "3",
+    "FileVersion": 6
+  },
+  "Body": {
+    "SavedInDeclMode": false,
+    "ModelName": "6speed AMT GBX",
+    "Inertia": 0.0,
+    "TracInt": 1.0,
+    "Gears": [
+      {
+        "Ratio": 4.18,
+        "LossMap": "Axle_4x2.vtlm"
+      },
+      {
+        "Ratio": 6.7,
+        "LossMap": "Gear_1.vtlm",
+        "ShiftPolygon": "",
+        "MaxTorque": "",
+        "MaxSpeed": ""
+      },
+      {
+        "Ratio": 3.8,
+        "LossMap": "Gear_2.vtlm",
+        "ShiftPolygon": "",
+        "MaxTorque": "",
+        "MaxSpeed": ""
+      },
+      {
+        "Ratio": 2.29,
+        "LossMap": "Gear_3.vtlm",
+        "ShiftPolygon": "",
+        "MaxTorque": "",
+        "MaxSpeed": ""
+      },
+      {
+        "Ratio": 1.48,
+        "LossMap": "Gear_4.vtlm",
+        "ShiftPolygon": "",
+        "MaxTorque": "",
+        "MaxSpeed": ""
+      },
+      {
+        "Ratio": 1.0,
+        "LossMap": "Gear_5.vtlm",
+        "ShiftPolygon": "",
+        "MaxTorque": "",
+        "MaxSpeed": ""
+      },
+      {
+        "Ratio": 0.73,
+        "LossMap": "Gear_6.vtlm",
+        "ShiftPolygon": "",
+        "MaxTorque": "",
+        "MaxSpeed": ""
+      }
+    ],
+    "TqReserve": 20.0,
+    "ShiftTime": 2.0,
+    "StartTqReserve": 20.0,
+    "StartSpeed": 2.0,
+    "StartAcc": 0.8,
+    "GearboxType": "AMT",
+    "TorqueConverter": {
+      "Enabled": false
+    },
+    "DownshiftAfterUpshiftDelay": 6.0,
+    "UpshiftAfterDownshiftDelay": 10.0,
+    "UpshiftMinAcceleration": 0.1,
+    "PowershiftShiftTime": 0.8
+  }
+}
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/Axle_4x2.vtlm b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/Axle_4x2.vtlm
new file mode 100644
index 0000000000000000000000000000000000000000..71d6c149cb6fc65aa4789e62ae186fc0991477c0
--- /dev/null
+++ b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/Axle_4x2.vtlm
@@ -0,0 +1,834 @@
+Input Speed [rpm],Input Torque [Nm],Torque Loss [Nm]
+0,-6993.8,183.2
+0,-6525.1,173.5
+0,-6056.4,163.7
+0,-5587.7,153.9
+0,-5119,144.2
+0,-4650.3,134.4
+0,-4181.6,124.6
+0,-3712.9,114.9
+0,-3244.2,105.1
+0,-2775.5,95.3
+0,-2306.8,85.6
+0,-2072.4,80.7
+0,-1838.1,75.8
+0,-1603.7,70.9
+0,-1369.4,66
+0,-1135,61.2
+0,-900.7,56.3
+0,-666.3,51.4
+0,-432,46.5
+0,-314.8,44.1
+0,-197.6,41.6
+0,-139,40.4
+0,-80.4,39.2
+0,-21.8,38
+0,38,38
+0,97.8,38
+0,158.8,39.2
+0,219.8,40.4
+0,280.9,41.6
+0,402.9,44.1
+0,525,46.5
+0,769.1,51.4
+0,1013.2,56.3
+0,1257.3,61.2
+0,1501.4,66
+0,1745.6,70.9
+0,1989.7,75.8
+0,2233.8,80.7
+0,2477.9,85.6
+0,2966.1,95.3
+0,3454.4,105.1
+0,3942.6,114.9
+0,4430.8,124.6
+0,4919.1,134.4
+0,5407.3,144.2
+0,5895.5,153.9
+0,6383.8,163.7
+0,6872,173.5
+0,7360.2,183.2
+209,-6993.8,183.2
+209,-6525.1,173.5
+209,-6056.4,163.7
+209,-5587.7,153.9
+209,-5119,144.2
+209,-4650.3,134.4
+209,-4181.6,124.6
+209,-3712.9,114.9
+209,-3244.2,105.1
+209,-2775.5,95.3
+209,-2306.8,85.6
+209,-2072.4,80.7
+209,-1838.1,75.8
+209,-1603.7,70.9
+209,-1369.4,66
+209,-1135,61.2
+209,-900.7,56.3
+209,-666.3,51.4
+209,-432,46.5
+209,-314.8,44.1
+209,-197.6,41.6
+209,-139,40.4
+209,-80.4,39.2
+209,-21.8,38
+209,38,38
+209,97.8,38
+209,158.8,39.2
+209,219.8,40.4
+209,280.9,41.6
+209,402.9,44.1
+209,525,46.5
+209,769.1,51.4
+209,1013.2,56.3
+209,1257.3,61.2
+209,1501.4,66
+209,1745.6,70.9
+209,1989.7,75.8
+209,2233.8,80.7
+209,2477.9,85.6
+209,2966.1,95.3
+209,3454.4,105.1
+209,3942.6,114.9
+209,4430.8,124.6
+209,4919.1,134.4
+209,5407.3,144.2
+209,5895.5,153.9
+209,6383.8,163.7
+209,6872,173.5
+209,7360.2,183.2
+418,-6993.8,183.2
+418,-6525.1,173.5
+418,-6056.4,163.7
+418,-5587.7,153.9
+418,-5119,144.2
+418,-4650.3,134.4
+418,-4181.6,124.6
+418,-3712.9,114.9
+418,-3244.2,105.1
+418,-2775.5,95.3
+418,-2306.8,85.6
+418,-2072.4,80.7
+418,-1838.1,75.8
+418,-1603.7,70.9
+418,-1369.4,66
+418,-1135,61.2
+418,-900.7,56.3
+418,-666.3,51.4
+418,-432,46.5
+418,-314.8,44.1
+418,-197.6,41.6
+418,-139,40.4
+418,-80.4,39.2
+418,-21.8,38
+418,38,38
+418,97.8,38
+418,158.8,39.2
+418,219.8,40.4
+418,280.9,41.6
+418,402.9,44.1
+418,525,46.5
+418,769.1,51.4
+418,1013.2,56.3
+418,1257.3,61.2
+418,1501.4,66
+418,1745.6,70.9
+418,1989.7,75.8
+418,2233.8,80.7
+418,2477.9,85.6
+418,2966.1,95.3
+418,3454.4,105.1
+418,3942.6,114.9
+418,4430.8,124.6
+418,4919.1,134.4
+418,5407.3,144.2
+418,5895.5,153.9
+418,6383.8,163.7
+418,6872,173.5
+418,7360.2,183.2
+627,-6993.8,183.2
+627,-6525.1,173.5
+627,-6056.4,163.7
+627,-5587.7,153.9
+627,-5119,144.2
+627,-4650.3,134.4
+627,-4181.6,124.6
+627,-3712.9,114.9
+627,-3244.2,105.1
+627,-2775.5,95.3
+627,-2306.8,85.6
+627,-2072.4,80.7
+627,-1838.1,75.8
+627,-1603.7,70.9
+627,-1369.4,66
+627,-1135,61.2
+627,-900.7,56.3
+627,-666.3,51.4
+627,-432,46.5
+627,-314.8,44.1
+627,-197.6,41.6
+627,-139,40.4
+627,-80.4,39.2
+627,-21.8,38
+627,38,38
+627,97.8,38
+627,158.8,39.2
+627,219.8,40.4
+627,280.9,41.6
+627,402.9,44.1
+627,525,46.5
+627,769.1,51.4
+627,1013.2,56.3
+627,1257.3,61.2
+627,1501.4,66
+627,1745.6,70.9
+627,1989.7,75.8
+627,2233.8,80.7
+627,2477.9,85.6
+627,2966.1,95.3
+627,3454.4,105.1
+627,3942.6,114.9
+627,4430.8,124.6
+627,4919.1,134.4
+627,5407.3,144.2
+627,5895.5,153.9
+627,6383.8,163.7
+627,6872,173.5
+627,7360.2,183.2
+836,-6993.8,183.2
+836,-6525.1,173.5
+836,-6056.4,163.7
+836,-5587.7,153.9
+836,-5119,144.2
+836,-4650.3,134.4
+836,-4181.6,124.6
+836,-3712.9,114.9
+836,-3244.2,105.1
+836,-2775.5,95.3
+836,-2306.8,85.6
+836,-2072.4,80.7
+836,-1838.1,75.8
+836,-1603.7,70.9
+836,-1369.4,66
+836,-1135,61.2
+836,-900.7,56.3
+836,-666.3,51.4
+836,-432,46.5
+836,-314.8,44.1
+836,-197.6,41.6
+836,-139,40.4
+836,-80.4,39.2
+836,-21.8,38
+836,38,38
+836,97.8,38
+836,158.8,39.2
+836,219.8,40.4
+836,280.9,41.6
+836,402.9,44.1
+836,525,46.5
+836,769.1,51.4
+836,1013.2,56.3
+836,1257.3,61.2
+836,1501.4,66
+836,1745.6,70.9
+836,1989.7,75.8
+836,2233.8,80.7
+836,2477.9,85.6
+836,2966.1,95.3
+836,3454.4,105.1
+836,3942.6,114.9
+836,4430.8,124.6
+836,4919.1,134.4
+836,5407.3,144.2
+836,5895.5,153.9
+836,6383.8,163.7
+836,6872,173.5
+836,7360.2,183.2
+1045,-6993.8,183.2
+1045,-6525.1,173.5
+1045,-6056.4,163.7
+1045,-5587.7,153.9
+1045,-5119,144.2
+1045,-4650.3,134.4
+1045,-4181.6,124.6
+1045,-3712.9,114.9
+1045,-3244.2,105.1
+1045,-2775.5,95.3
+1045,-2306.8,85.6
+1045,-2072.4,80.7
+1045,-1838.1,75.8
+1045,-1603.7,70.9
+1045,-1369.4,66
+1045,-1135,61.2
+1045,-900.7,56.3
+1045,-666.3,51.4
+1045,-432,46.5
+1045,-314.8,44.1
+1045,-197.6,41.6
+1045,-139,40.4
+1045,-80.4,39.2
+1045,-21.8,38
+1045,38,38
+1045,97.8,38
+1045,158.8,39.2
+1045,219.8,40.4
+1045,280.9,41.6
+1045,402.9,44.1
+1045,525,46.5
+1045,769.1,51.4
+1045,1013.2,56.3
+1045,1257.3,61.2
+1045,1501.4,66
+1045,1745.6,70.9
+1045,1989.7,75.8
+1045,2233.8,80.7
+1045,2477.9,85.6
+1045,2966.1,95.3
+1045,3454.4,105.1
+1045,3942.6,114.9
+1045,4430.8,124.6
+1045,4919.1,134.4
+1045,5407.3,144.2
+1045,5895.5,153.9
+1045,6383.8,163.7
+1045,6872,173.5
+1045,7360.2,183.2
+1254,-6993.8,183.2
+1254,-6525.1,173.5
+1254,-6056.4,163.7
+1254,-5587.7,153.9
+1254,-5119,144.2
+1254,-4650.3,134.4
+1254,-4181.6,124.6
+1254,-3712.9,114.9
+1254,-3244.2,105.1
+1254,-2775.5,95.3
+1254,-2306.8,85.6
+1254,-2072.4,80.7
+1254,-1838.1,75.8
+1254,-1603.7,70.9
+1254,-1369.4,66
+1254,-1135,61.2
+1254,-900.7,56.3
+1254,-666.3,51.4
+1254,-432,46.5
+1254,-314.8,44.1
+1254,-197.6,41.6
+1254,-139,40.4
+1254,-80.4,39.2
+1254,-21.8,38
+1254,38,38
+1254,97.8,38
+1254,158.8,39.2
+1254,219.8,40.4
+1254,280.9,41.6
+1254,402.9,44.1
+1254,525,46.5
+1254,769.1,51.4
+1254,1013.2,56.3
+1254,1257.3,61.2
+1254,1501.4,66
+1254,1745.6,70.9
+1254,1989.7,75.8
+1254,2233.8,80.7
+1254,2477.9,85.6
+1254,2966.1,95.3
+1254,3454.4,105.1
+1254,3942.6,114.9
+1254,4430.8,124.6
+1254,4919.1,134.4
+1254,5407.3,144.2
+1254,5895.5,153.9
+1254,6383.8,163.7
+1254,6872,173.5
+1254,7360.2,183.2
+1463,-6993.8,183.2
+1463,-6525.1,173.5
+1463,-6056.4,163.7
+1463,-5587.7,153.9
+1463,-5119,144.2
+1463,-4650.3,134.4
+1463,-4181.6,124.6
+1463,-3712.9,114.9
+1463,-3244.2,105.1
+1463,-2775.5,95.3
+1463,-2306.8,85.6
+1463,-2072.4,80.7
+1463,-1838.1,75.8
+1463,-1603.7,70.9
+1463,-1369.4,66
+1463,-1135,61.2
+1463,-900.7,56.3
+1463,-666.3,51.4
+1463,-432,46.5
+1463,-314.8,44.1
+1463,-197.6,41.6
+1463,-139,40.4
+1463,-80.4,39.2
+1463,-21.8,38
+1463,38,38
+1463,97.8,38
+1463,158.8,39.2
+1463,219.8,40.4
+1463,280.9,41.6
+1463,402.9,44.1
+1463,525,46.5
+1463,769.1,51.4
+1463,1013.2,56.3
+1463,1257.3,61.2
+1463,1501.4,66
+1463,1745.6,70.9
+1463,1989.7,75.8
+1463,2233.8,80.7
+1463,2477.9,85.6
+1463,2966.1,95.3
+1463,3454.4,105.1
+1463,3942.6,114.9
+1463,4430.8,124.6
+1463,4919.1,134.4
+1463,5407.3,144.2
+1463,5895.5,153.9
+1463,6383.8,163.7
+1463,6872,173.5
+1463,7360.2,183.2
+1672,-6993.8,183.2
+1672,-6525.1,173.5
+1672,-6056.4,163.7
+1672,-5587.7,153.9
+1672,-5119,144.2
+1672,-4650.3,134.4
+1672,-4181.6,124.6
+1672,-3712.9,114.9
+1672,-3244.2,105.1
+1672,-2775.5,95.3
+1672,-2306.8,85.6
+1672,-2072.4,80.7
+1672,-1838.1,75.8
+1672,-1603.7,70.9
+1672,-1369.4,66
+1672,-1135,61.2
+1672,-900.7,56.3
+1672,-666.3,51.4
+1672,-432,46.5
+1672,-314.8,44.1
+1672,-197.6,41.6
+1672,-139,40.4
+1672,-80.4,39.2
+1672,-21.8,38
+1672,38,38
+1672,97.8,38
+1672,158.8,39.2
+1672,219.8,40.4
+1672,280.9,41.6
+1672,402.9,44.1
+1672,525,46.5
+1672,769.1,51.4
+1672,1013.2,56.3
+1672,1257.3,61.2
+1672,1501.4,66
+1672,1745.6,70.9
+1672,1989.7,75.8
+1672,2233.8,80.7
+1672,2477.9,85.6
+1672,2966.1,95.3
+1672,3454.4,105.1
+1672,3942.6,114.9
+1672,4430.8,124.6
+1672,4919.1,134.4
+1672,5407.3,144.2
+1672,5895.5,153.9
+1672,6383.8,163.7
+1672,6872,173.5
+1672,7360.2,183.2
+1881,-6993.8,183.2
+1881,-6525.1,173.5
+1881,-6056.4,163.7
+1881,-5587.7,153.9
+1881,-5119,144.2
+1881,-4650.3,134.4
+1881,-4181.6,124.6
+1881,-3712.9,114.9
+1881,-3244.2,105.1
+1881,-2775.5,95.3
+1881,-2306.8,85.6
+1881,-2072.4,80.7
+1881,-1838.1,75.8
+1881,-1603.7,70.9
+1881,-1369.4,66
+1881,-1135,61.2
+1881,-900.7,56.3
+1881,-666.3,51.4
+1881,-432,46.5
+1881,-314.8,44.1
+1881,-197.6,41.6
+1881,-139,40.4
+1881,-80.4,39.2
+1881,-21.8,38
+1881,38,38
+1881,97.8,38
+1881,158.8,39.2
+1881,219.8,40.4
+1881,280.9,41.6
+1881,402.9,44.1
+1881,525,46.5
+1881,769.1,51.4
+1881,1013.2,56.3
+1881,1257.3,61.2
+1881,1501.4,66
+1881,1745.6,70.9
+1881,1989.7,75.8
+1881,2233.8,80.7
+1881,2477.9,85.6
+1881,2966.1,95.3
+1881,3454.4,105.1
+1881,3942.6,114.9
+1881,4430.8,124.6
+1881,4919.1,134.4
+1881,5407.3,144.2
+1881,5895.5,153.9
+1881,6383.8,163.7
+1881,6872,173.5
+1881,7360.2,183.2
+2090,-6993.8,183.2
+2090,-6525.1,173.5
+2090,-6056.4,163.7
+2090,-5587.7,153.9
+2090,-5119,144.2
+2090,-4650.3,134.4
+2090,-4181.6,124.6
+2090,-3712.9,114.9
+2090,-3244.2,105.1
+2090,-2775.5,95.3
+2090,-2306.8,85.6
+2090,-2072.4,80.7
+2090,-1838.1,75.8
+2090,-1603.7,70.9
+2090,-1369.4,66
+2090,-1135,61.2
+2090,-900.7,56.3
+2090,-666.3,51.4
+2090,-432,46.5
+2090,-314.8,44.1
+2090,-197.6,41.6
+2090,-139,40.4
+2090,-80.4,39.2
+2090,-21.8,38
+2090,38,38
+2090,97.8,38
+2090,158.8,39.2
+2090,219.8,40.4
+2090,280.9,41.6
+2090,402.9,44.1
+2090,525,46.5
+2090,769.1,51.4
+2090,1013.2,56.3
+2090,1257.3,61.2
+2090,1501.4,66
+2090,1745.6,70.9
+2090,1989.7,75.8
+2090,2233.8,80.7
+2090,2477.9,85.6
+2090,2966.1,95.3
+2090,3454.4,105.1
+2090,3942.6,114.9
+2090,4430.8,124.6
+2090,4919.1,134.4
+2090,5407.3,144.2
+2090,5895.5,153.9
+2090,6383.8,163.7
+2090,6872,173.5
+2090,7360.2,183.2
+2299,-6993.8,183.2
+2299,-6525.1,173.5
+2299,-6056.4,163.7
+2299,-5587.7,153.9
+2299,-5119,144.2
+2299,-4650.3,134.4
+2299,-4181.6,124.6
+2299,-3712.9,114.9
+2299,-3244.2,105.1
+2299,-2775.5,95.3
+2299,-2306.8,85.6
+2299,-2072.4,80.7
+2299,-1838.1,75.8
+2299,-1603.7,70.9
+2299,-1369.4,66
+2299,-1135,61.2
+2299,-900.7,56.3
+2299,-666.3,51.4
+2299,-432,46.5
+2299,-314.8,44.1
+2299,-197.6,41.6
+2299,-139,40.4
+2299,-80.4,39.2
+2299,-21.8,38
+2299,38,38
+2299,97.8,38
+2299,158.8,39.2
+2299,219.8,40.4
+2299,280.9,41.6
+2299,402.9,44.1
+2299,525,46.5
+2299,769.1,51.4
+2299,1013.2,56.3
+2299,1257.3,61.2
+2299,1501.4,66
+2299,1745.6,70.9
+2299,1989.7,75.8
+2299,2233.8,80.7
+2299,2477.9,85.6
+2299,2966.1,95.3
+2299,3454.4,105.1
+2299,3942.6,114.9
+2299,4430.8,124.6
+2299,4919.1,134.4
+2299,5407.3,144.2
+2299,5895.5,153.9
+2299,6383.8,163.7
+2299,6872,173.5
+2299,7360.2,183.2
+2508,-6993.8,183.2
+2508,-6525.1,173.5
+2508,-6056.4,163.7
+2508,-5587.7,153.9
+2508,-5119,144.2
+2508,-4650.3,134.4
+2508,-4181.6,124.6
+2508,-3712.9,114.9
+2508,-3244.2,105.1
+2508,-2775.5,95.3
+2508,-2306.8,85.6
+2508,-2072.4,80.7
+2508,-1838.1,75.8
+2508,-1603.7,70.9
+2508,-1369.4,66
+2508,-1135,61.2
+2508,-900.7,56.3
+2508,-666.3,51.4
+2508,-432,46.5
+2508,-314.8,44.1
+2508,-197.6,41.6
+2508,-139,40.4
+2508,-80.4,39.2
+2508,-21.8,38
+2508,38,38
+2508,97.8,38
+2508,158.8,39.2
+2508,219.8,40.4
+2508,280.9,41.6
+2508,402.9,44.1
+2508,525,46.5
+2508,769.1,51.4
+2508,1013.2,56.3
+2508,1257.3,61.2
+2508,1501.4,66
+2508,1745.6,70.9
+2508,1989.7,75.8
+2508,2233.8,80.7
+2508,2477.9,85.6
+2508,2966.1,95.3
+2508,3454.4,105.1
+2508,3942.6,114.9
+2508,4430.8,124.6
+2508,4919.1,134.4
+2508,5407.3,144.2
+2508,5895.5,153.9
+2508,6383.8,163.7
+2508,6872,173.5
+2508,7360.2,183.2
+2717,-6993.8,183.2
+2717,-6525.1,173.5
+2717,-6056.4,163.7
+2717,-5587.7,153.9
+2717,-5119,144.2
+2717,-4650.3,134.4
+2717,-4181.6,124.6
+2717,-3712.9,114.9
+2717,-3244.2,105.1
+2717,-2775.5,95.3
+2717,-2306.8,85.6
+2717,-2072.4,80.7
+2717,-1838.1,75.8
+2717,-1603.7,70.9
+2717,-1369.4,66
+2717,-1135,61.2
+2717,-900.7,56.3
+2717,-666.3,51.4
+2717,-432,46.5
+2717,-314.8,44.1
+2717,-197.6,41.6
+2717,-139,40.4
+2717,-80.4,39.2
+2717,-21.8,38
+2717,38,38
+2717,97.8,38
+2717,158.8,39.2
+2717,219.8,40.4
+2717,280.9,41.6
+2717,402.9,44.1
+2717,525,46.5
+2717,769.1,51.4
+2717,1013.2,56.3
+2717,1257.3,61.2
+2717,1501.4,66
+2717,1745.6,70.9
+2717,1989.7,75.8
+2717,2233.8,80.7
+2717,2477.9,85.6
+2717,2966.1,95.3
+2717,3454.4,105.1
+2717,3942.6,114.9
+2717,4430.8,124.6
+2717,4919.1,134.4
+2717,5407.3,144.2
+2717,5895.5,153.9
+2717,6383.8,163.7
+2717,6872,173.5
+2717,7360.2,183.2
+2926,-6993.8,183.2
+2926,-6525.1,173.5
+2926,-6056.4,163.7
+2926,-5587.7,153.9
+2926,-5119,144.2
+2926,-4650.3,134.4
+2926,-4181.6,124.6
+2926,-3712.9,114.9
+2926,-3244.2,105.1
+2926,-2775.5,95.3
+2926,-2306.8,85.6
+2926,-2072.4,80.7
+2926,-1838.1,75.8
+2926,-1603.7,70.9
+2926,-1369.4,66
+2926,-1135,61.2
+2926,-900.7,56.3
+2926,-666.3,51.4
+2926,-432,46.5
+2926,-314.8,44.1
+2926,-197.6,41.6
+2926,-139,40.4
+2926,-80.4,39.2
+2926,-21.8,38
+2926,38,38
+2926,97.8,38
+2926,158.8,39.2
+2926,219.8,40.4
+2926,280.9,41.6
+2926,402.9,44.1
+2926,525,46.5
+2926,769.1,51.4
+2926,1013.2,56.3
+2926,1257.3,61.2
+2926,1501.4,66
+2926,1745.6,70.9
+2926,1989.7,75.8
+2926,2233.8,80.7
+2926,2477.9,85.6
+2926,2966.1,95.3
+2926,3454.4,105.1
+2926,3942.6,114.9
+2926,4430.8,124.6
+2926,4919.1,134.4
+2926,5407.3,144.2
+2926,5895.5,153.9
+2926,6383.8,163.7
+2926,6872,173.5
+2926,7360.2,183.2
+3135,-6993.8,183.2
+3135,-6525.1,173.5
+3135,-6056.4,163.7
+3135,-5587.7,153.9
+3135,-5119,144.2
+3135,-4650.3,134.4
+3135,-4181.6,124.6
+3135,-3712.9,114.9
+3135,-3244.2,105.1
+3135,-2775.5,95.3
+3135,-2306.8,85.6
+3135,-2072.4,80.7
+3135,-1838.1,75.8
+3135,-1603.7,70.9
+3135,-1369.4,66
+3135,-1135,61.2
+3135,-900.7,56.3
+3135,-666.3,51.4
+3135,-432,46.5
+3135,-314.8,44.1
+3135,-197.6,41.6
+3135,-139,40.4
+3135,-80.4,39.2
+3135,-21.8,38
+3135,38,38
+3135,97.8,38
+3135,158.8,39.2
+3135,219.8,40.4
+3135,280.9,41.6
+3135,402.9,44.1
+3135,525,46.5
+3135,769.1,51.4
+3135,1013.2,56.3
+3135,1257.3,61.2
+3135,1501.4,66
+3135,1745.6,70.9
+3135,1989.7,75.8
+3135,2233.8,80.7
+3135,2477.9,85.6
+3135,2966.1,95.3
+3135,3454.4,105.1
+3135,3942.6,114.9
+3135,4430.8,124.6
+3135,4919.1,134.4
+3135,5407.3,144.2
+3135,5895.5,153.9
+3135,6383.8,163.7
+3135,6872,173.5
+3135,7360.2,183.2
+3344,-6993.8,183.2
+3344,-6525.1,173.5
+3344,-6056.4,163.7
+3344,-5587.7,153.9
+3344,-5119,144.2
+3344,-4650.3,134.4
+3344,-4181.6,124.6
+3344,-3712.9,114.9
+3344,-3244.2,105.1
+3344,-2775.5,95.3
+3344,-2306.8,85.6
+3344,-2072.4,80.7
+3344,-1838.1,75.8
+3344,-1603.7,70.9
+3344,-1369.4,66
+3344,-1135,61.2
+3344,-900.7,56.3
+3344,-666.3,51.4
+3344,-432,46.5
+3344,-314.8,44.1
+3344,-197.6,41.6
+3344,-139,40.4
+3344,-80.4,39.2
+3344,-21.8,38
+3344,38,38
+3344,97.8,38
+3344,158.8,39.2
+3344,219.8,40.4
+3344,280.9,41.6
+3344,402.9,44.1
+3344,525,46.5
+3344,769.1,51.4
+3344,1013.2,56.3
+3344,1257.3,61.2
+3344,1501.4,66
+3344,1745.6,70.9
+3344,1989.7,75.8
+3344,2233.8,80.7
+3344,2477.9,85.6
+3344,2966.1,95.3
+3344,3454.4,105.1
+3344,3942.6,114.9
+3344,4430.8,124.6
+3344,4919.1,134.4
+3344,5407.3,144.2
+3344,5895.5,153.9
+3344,6383.8,163.7
+3344,6872,173.5
+3344,7360.2,183.2
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/Class2_RigidTruck.vveh b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/Class2_RigidTruck.vveh
new file mode 100644
index 0000000000000000000000000000000000000000..a351966947979d93c41e075eb163f081a26accd8
--- /dev/null
+++ b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/Class2_RigidTruck.vveh
@@ -0,0 +1,100 @@
+{
+  "Header": {
+    "CreatedBy": "",
+    "Date": "2020-09-21T11:55:57.0138776Z",
+    "AppVersion": "3",
+    "FileVersion": 10
+  },
+  "Body": {
+    "SavedInDeclMode": false,
+    "VehCat": "RigidTruck",
+    "LegislativeClass": "Unknown",
+    "CurbWeight": 4670.0,
+    "CurbWeightExtra": 1900.0,
+    "MassMax": 11.99,
+    "Loading": 3020.0,
+    "rdyn": 421.0,
+    "CdCorrMode": "CdofVdecl",
+    "CdCorrFile": "",
+    "AxleConfig": {
+      "Type": "4x2",
+      "Axles": [
+        {
+          "Inertia": 6.5,
+          "Wheels": "265/70 R19.5",
+          "AxleWeightShare": 0.2,
+          "TwinTyres": false,
+          "RRCISO": 0.0065,
+          "FzISO": 20850.0,
+          "Type": "VehicleNonDriven"
+        },
+        {
+          "Inertia": 6.5,
+          "Wheels": "265/70 R19.5",
+          "AxleWeightShare": 0.3,
+          "TwinTyres": true,
+          "RRCISO": 0.0075,
+          "FzISO": 20850.0,
+          "Type": "VehicleDriven"
+        },
+        {
+          "Inertia": 4.5,
+          "Wheels": "235/75 R17.5",
+          "AxleWeightShare": 0.25,
+          "TwinTyres": false,
+          "RRCISO": 0.0055,
+          "FzISO": 16680.0,
+          "Type": "VehicleNonDriven"
+        },
+        {
+          "Inertia": 4.5,
+          "Wheels": "235/75 R17.5",
+          "AxleWeightShare": 0.25,
+          "TwinTyres": false,
+          "RRCISO": 0.0055,
+          "FzISO": 16680.0,
+          "Type": "VehicleNonDriven"
+        }
+      ]
+    },
+    "EngineStopStart": true,
+    "EcoRoll": "None",
+    "PredictiveCruiseControl": "None",
+    "ATEcoRollReleaseLockupClutch": false,
+    "CdA": 4.83,
+    "VehicleHeight": 3.0,
+    "IdlingSpeed": 600.0,
+    "Retarder": {
+      "Type": "secondary",
+      "Ratio": 1.0,
+      "File": "Default.vrlm"
+    },
+    "Angledrive": {
+      "Type": "None",
+      "Ratio": 0.0,
+      "LossMap": ""
+    },
+    "PTO": {
+      "Type": "None",
+      "LossMap": "",
+      "Cycle": ""
+    },
+    "TorqueLimits": {},
+    "MaxDrivetrainPower": 1800000.0,
+    "InitialSoC": 50.0,
+    "PowertrainConfiguration": "ParallelHybrid",
+    "ElectricMotors": [
+      {
+        "Count": 1,
+        "Ratio": 1.0,
+        "MechanicalEfficiency": 1.0,
+        "Position": "P2",
+        "MotorFile": "GenericEM_47kW.vem"
+      }
+    ],
+    "Battery": {
+      "NumPacks": 1,
+      "BatteryFile": "SuperCap.vreess"
+    }
+  }
+}
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/Class2_RigidTruck_ParHyb_SuperCap_Ovl_ENG.vecto b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/Class2_RigidTruck_ParHyb_SuperCap_Ovl_ENG.vecto
new file mode 100644
index 0000000000000000000000000000000000000000..c8ae6294df5578916abc58a2545032a1af7a34db
--- /dev/null
+++ b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/Class2_RigidTruck_ParHyb_SuperCap_Ovl_ENG.vecto
@@ -0,0 +1,64 @@
+{
+  "Header": {
+    "CreatedBy": "",
+    "Date": "2020-08-25T16:36:24.0489384Z",
+    "AppVersion": "3",
+    "FileVersion": 8
+  },
+  "Body": {
+    "SavedInDeclMode": false,
+    "EngineOnlyMode": false,
+    "VehicleFile": "Class2_RigidTruck.vveh",
+    "EngineFile": "Engine_175kW_6.8l.veng",
+    "GearboxFile": "AMT_6.vgbx",
+    "TCU": "AMT_6.vgbx",
+    "ShiftStrategy": "",
+    "HybridStrategyParams": "HybridStrategyParams.vhctl",
+    "AuxiliaryAssembly": "Classic",
+    "AuxiliaryVersion": "CLASSIC",
+    "AdvancedAuxiliaryFilePath": "",
+    "Aux": [],
+    "Padd": 3540.0,
+    "Padd_electric": 0.0,
+    "VACC": "Truck.vacc",
+    "EngineStopStartAtVehicleStopThreshold": 2.0,
+    "EngineStopStartMaxOffTimespan": 120.0,
+    "EngineStopStartUtilityFactor": 0.8,
+    "EcoRollMinSpeed": 60.000000000000007,
+    "EcoRollActivationDelay": 2.0,
+    "EcoRollUnderspeedThreshold": 0.0,
+    "EcoRollMaxAcceleration": 0.1,
+    "PCCEnableSpeed": 80.0,
+    "PCCMinSpeed": 50.0,
+    "PCCUnderspeed": 8.0,
+    "PCCOverSpeed": 5.0,
+    "PCCPreviewDistanceUC1": 1500.0,
+    "PCCPreviewDistanceUC2": 1000.0,
+    "LAC": {
+      "Enabled": true,
+      "PreviewDistanceFactor": 10.0,
+      "DF_offset": 2.5,
+      "DF_scaling": 1.5,
+      "DF_targetSpeedLookup": "",
+      "Df_velocityDropLookup": "",
+      "MinSpeed": 50.0
+    },
+    "OverSpeedEcoRoll": {
+      "Mode": "Off",
+      "MinSpeed": 50.0,
+      "OverSpeed": 5.0
+    },
+    "Cycles": [
+      "LongHaul",
+      "RegionalDelivery",
+      "UrbanDelivery",
+      "Coach",
+      "Construction",
+      "HeavyUrban",
+      "Interurban",
+      "MunicipalUtility",
+      "Suburban",
+      "Urban"
+    ]
+  }
+}
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/Default.vrlm b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/Default.vrlm
new file mode 100644
index 0000000000000000000000000000000000000000..eb575b99973291e5414c4826da086c1f03a7f179
--- /dev/null
+++ b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/Default.vrlm
@@ -0,0 +1,32 @@
+Retarder Speed [1/min],Torque Loss [Nm]
+0,10
+100,10
+200,10.1
+300,10.2
+400,10.3
+500,10.5
+600,10.7
+700,11
+800,11.3
+900,11.6
+1000,12
+1100,12.4
+1200,12.9
+1300,13.4
+1400,13.9
+1500,14.5
+1600,15.1
+1700,15.8
+1800,16.5
+1900,17.2
+2000,18
+2100,18.8
+2200,19.7
+2300,20.6
+2400,21.5
+2500,22.5
+2600,23.5
+2700,24.6
+2800,25.7
+2900,26.8
+3000,28
diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/Engine_175kW_6.8l.veng b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/Engine_175kW_6.8l.veng
new file mode 100644
index 0000000000000000000000000000000000000000..d9c60344f343ba4367ccc97baa111ded999d9b8c
--- /dev/null
+++ b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/Engine_175kW_6.8l.veng
@@ -0,0 +1,21 @@
+{
+  "Header": {
+    "CreatedBy": " ()",
+    "Date": "2016-10-13T08:54:28.7387223Z",
+    "AppVersion": "3",
+    "FileVersion": 3
+  },
+  "Body": {
+    "SavedInDeclMode": false,
+    "ModelName": "175kW 6.8l Engine",
+    "Displacement": "6871",
+    "IdlingSpeed": 600.0,
+    "Inertia": 3.565,
+    "FullLoadCurve": "175kW.vfld",
+    "FuelMap": "175kW.vmap",
+    "WHTC-Urban": 0.0,
+    "WHTC-Rural": 0.0,
+    "WHTC-Motorway": 0.0,
+    "ColdHotBalancingFactor": 0.0
+  }
+}
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/Gear_1.vtlm b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/Gear_1.vtlm
new file mode 100644
index 0000000000000000000000000000000000000000..b4274373230f50e6df7eb9702010c7a868dc967e
--- /dev/null
+++ b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/Gear_1.vtlm
@@ -0,0 +1,233 @@
+Input Speed [rpm],Input Torque [Nm],Torque Loss [Nm]
+0,-5500.0,229.6
+0,-5000.0,209.6
+0,-4500.0,169.6
+0,-4000.0,169.6
+0,-3500.0,149.6
+0,-3000.0,129.6
+0,-2500.0,109.6
+0,-2000.0,89.6
+0,-1600.0,73.6
+0,-1200.0,57.6
+0,-900.0,45.6
+0,-600.0,33.6
+0,-400.0,25.6
+0,-200.0,17.6
+0,0.0,17.6
+0,200.0,17.6
+0,400.0,25.6
+0,600.0,33.6
+0,900.0,45.6
+0,1200.0,57.6
+0,1600.0,73.6
+0,2000.0,89.6
+0,2500.0,109.6
+0,3000.0,129.6
+0,3500.0,149.6
+0,4000.0,169.6
+0,4500.0,189.6
+0,5000.0,209.6
+0,5500.0,229.6
+600,-5500.0,229.6
+600,-5000.0,209.6
+600,-4500.0,169.6
+600,-4000.0,169.6
+600,-3500.0,149.6
+600,-3000.0,129.6
+600,-2500.0,109.6
+600,-2000.0,89.6
+600,-1600.0,73.6
+600,-1200.0,57.6
+600,-900.0,45.6
+600,-600.0,33.6
+600,-400.0,25.6
+600,-200.0,17.6
+600,0.0,17.6
+600,200.0,17.6
+600,400.0,25.6
+600,600.0,33.6
+600,900.0,45.6
+600,1200.0,57.6
+600,1600.0,73.6
+600,2000.0,89.6
+600,2500.0,109.6
+600,3000.0,129.6
+600,3500.0,149.6
+600,4000.0,169.6
+600,4500.0,189.6
+600,5000.0,209.6
+600,5500.0,229.6
+900,-5500.0,231.4
+900,-5000.0,211.4
+900,-4500.0,171.4
+900,-4000.0,171.4
+900,-3500.0,151.4
+900,-3000.0,131.4
+900,-2500.0,111.4
+900,-2000.0,91.4
+900,-1600.0,75.4
+900,-1200.0,59.4
+900,-900.0,47.4
+900,-600.0,35.4
+900,-400.0,27.4
+900,-200.0,19.4
+900,0.0,19.4
+900,200.0,19.4
+900,400.0,27.4
+900,600.0,35.4
+900,900.0,47.4
+900,1200.0,59.4
+900,1600.0,75.4
+900,2000.0,91.4
+900,2500.0,111.4
+900,3000.0,131.4
+900,3500.0,151.4
+900,4000.0,171.4
+900,4500.0,191.4
+900,5000.0,211.4
+900,5500.0,231.4
+1200,-5500.0,233.2
+1200,-5000.0,213.2
+1200,-4500.0,173.2
+1200,-4000.0,173.2
+1200,-3500.0,153.2
+1200,-3000.0,133.2
+1200,-2500.0,113.2
+1200,-2000.0,93.2
+1200,-1600.0,77.2
+1200,-1200.0,61.2
+1200,-900.0,49.2
+1200,-600.0,37.2
+1200,-400.0,29.2
+1200,-200.0,21.2
+1200,0.0,21.2
+1200,200.0,21.2
+1200,400.0,29.2
+1200,600.0,37.2
+1200,900.0,49.2
+1200,1200.0,61.2
+1200,1600.0,77.2
+1200,2000.0,93.2
+1200,2500.0,113.2
+1200,3000.0,133.2
+1200,3500.0,153.2
+1200,4000.0,173.2
+1200,4500.0,193.2
+1200,5000.0,213.2
+1200,5500.0,233.2
+1600,-5500.0,235.6
+1600,-5000.0,215.6
+1600,-4500.0,175.6
+1600,-4000.0,175.6
+1600,-3500.0,155.6
+1600,-3000.0,135.6
+1600,-2500.0,115.6
+1600,-2000.0,95.6
+1600,-1600.0,79.6
+1600,-1200.0,63.6
+1600,-900.0,51.6
+1600,-600.0,39.6
+1600,-400.0,31.6
+1600,-200.0,23.6
+1600,0.0,23.6
+1600,200.0,23.6
+1600,400.0,31.6
+1600,600.0,39.6
+1600,900.0,51.6
+1600,1200.0,63.6
+1600,1600.0,79.6
+1600,2000.0,95.6
+1600,2500.0,115.6
+1600,3000.0,135.6
+1600,3500.0,155.6
+1600,4000.0,175.6
+1600,4500.0,195.6
+1600,5000.0,215.6
+1600,5500.0,235.6
+2000,-5500.0,238.0
+2000,-5000.0,218.0
+2000,-4500.0,178.0
+2000,-4000.0,178.0
+2000,-3500.0,158.0
+2000,-3000.0,138.0
+2000,-2500.0,118.0
+2000,-2000.0,98.0
+2000,-1600.0,82.0
+2000,-1200.0,66.0
+2000,-900.0,54.0
+2000,-600.0,42.0
+2000,-400.0,34.0
+2000,-200.0,26.0
+2000,0.0,26.0
+2000,200.0,26.0
+2000,400.0,34.0
+2000,600.0,42.0
+2000,900.0,54.0
+2000,1200.0,66.0
+2000,1600.0,82.0
+2000,2000.0,98.0
+2000,2500.0,118.0
+2000,3000.0,138.0
+2000,3500.0,158.0
+2000,4000.0,178.0
+2000,4500.0,198.0
+2000,5000.0,218.0
+2000,5500.0,238.0
+2500,-5500.0,241.0
+2500,-5000.0,221.0
+2500,-4500.0,181.0
+2500,-4000.0,181.0
+2500,-3500.0,161.0
+2500,-3000.0,141.0
+2500,-2500.0,121.0
+2500,-2000.0,101.0
+2500,-1600.0,85.0
+2500,-1200.0,69.0
+2500,-900.0,57.0
+2500,-600.0,45.0
+2500,-400.0,37.0
+2500,-200.0,29.0
+2500,0.0,29.0
+2500,200.0,29.0
+2500,400.0,37.0
+2500,600.0,45.0
+2500,900.0,57.0
+2500,1200.0,69.0
+2500,1600.0,85.0
+2500,2000.0,101.0
+2500,2500.0,121.0
+2500,3000.0,141.0
+2500,3500.0,161.0
+2500,4000.0,181.0
+2500,4500.0,201.0
+2500,5000.0,221.0
+2500,5500.0,241.0
+3000,-5500.0,244.0
+3000,-5000.0,224.0
+3000,-4500.0,184.0
+3000,-4000.0,184.0
+3000,-3500.0,164.0
+3000,-3000.0,144.0
+3000,-2500.0,124.0
+3000,-2000.0,104.0
+3000,-1600.0,88.0
+3000,-1200.0,72.0
+3000,-900.0,60.0
+3000,-600.0,48.0
+3000,-400.0,40.0
+3000,-200.0,32.0
+3000,0.0,32.0
+3000,200.0,32.0
+3000,400.0,40.0
+3000,600.0,48.0
+3000,900.0,60.0
+3000,1200.0,72.0
+3000,1600.0,88.0
+3000,2000.0,104.0
+3000,2500.0,124.0
+3000,3000.0,144.0
+3000,3500.0,164.0
+3000,4000.0,184.0
+3000,4500.0,204.0
+3000,5000.0,224.0
+3000,5500.0,244.0
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/Gear_2.vtlm b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/Gear_2.vtlm
new file mode 100644
index 0000000000000000000000000000000000000000..b4274373230f50e6df7eb9702010c7a868dc967e
--- /dev/null
+++ b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/Gear_2.vtlm
@@ -0,0 +1,233 @@
+Input Speed [rpm],Input Torque [Nm],Torque Loss [Nm]
+0,-5500.0,229.6
+0,-5000.0,209.6
+0,-4500.0,169.6
+0,-4000.0,169.6
+0,-3500.0,149.6
+0,-3000.0,129.6
+0,-2500.0,109.6
+0,-2000.0,89.6
+0,-1600.0,73.6
+0,-1200.0,57.6
+0,-900.0,45.6
+0,-600.0,33.6
+0,-400.0,25.6
+0,-200.0,17.6
+0,0.0,17.6
+0,200.0,17.6
+0,400.0,25.6
+0,600.0,33.6
+0,900.0,45.6
+0,1200.0,57.6
+0,1600.0,73.6
+0,2000.0,89.6
+0,2500.0,109.6
+0,3000.0,129.6
+0,3500.0,149.6
+0,4000.0,169.6
+0,4500.0,189.6
+0,5000.0,209.6
+0,5500.0,229.6
+600,-5500.0,229.6
+600,-5000.0,209.6
+600,-4500.0,169.6
+600,-4000.0,169.6
+600,-3500.0,149.6
+600,-3000.0,129.6
+600,-2500.0,109.6
+600,-2000.0,89.6
+600,-1600.0,73.6
+600,-1200.0,57.6
+600,-900.0,45.6
+600,-600.0,33.6
+600,-400.0,25.6
+600,-200.0,17.6
+600,0.0,17.6
+600,200.0,17.6
+600,400.0,25.6
+600,600.0,33.6
+600,900.0,45.6
+600,1200.0,57.6
+600,1600.0,73.6
+600,2000.0,89.6
+600,2500.0,109.6
+600,3000.0,129.6
+600,3500.0,149.6
+600,4000.0,169.6
+600,4500.0,189.6
+600,5000.0,209.6
+600,5500.0,229.6
+900,-5500.0,231.4
+900,-5000.0,211.4
+900,-4500.0,171.4
+900,-4000.0,171.4
+900,-3500.0,151.4
+900,-3000.0,131.4
+900,-2500.0,111.4
+900,-2000.0,91.4
+900,-1600.0,75.4
+900,-1200.0,59.4
+900,-900.0,47.4
+900,-600.0,35.4
+900,-400.0,27.4
+900,-200.0,19.4
+900,0.0,19.4
+900,200.0,19.4
+900,400.0,27.4
+900,600.0,35.4
+900,900.0,47.4
+900,1200.0,59.4
+900,1600.0,75.4
+900,2000.0,91.4
+900,2500.0,111.4
+900,3000.0,131.4
+900,3500.0,151.4
+900,4000.0,171.4
+900,4500.0,191.4
+900,5000.0,211.4
+900,5500.0,231.4
+1200,-5500.0,233.2
+1200,-5000.0,213.2
+1200,-4500.0,173.2
+1200,-4000.0,173.2
+1200,-3500.0,153.2
+1200,-3000.0,133.2
+1200,-2500.0,113.2
+1200,-2000.0,93.2
+1200,-1600.0,77.2
+1200,-1200.0,61.2
+1200,-900.0,49.2
+1200,-600.0,37.2
+1200,-400.0,29.2
+1200,-200.0,21.2
+1200,0.0,21.2
+1200,200.0,21.2
+1200,400.0,29.2
+1200,600.0,37.2
+1200,900.0,49.2
+1200,1200.0,61.2
+1200,1600.0,77.2
+1200,2000.0,93.2
+1200,2500.0,113.2
+1200,3000.0,133.2
+1200,3500.0,153.2
+1200,4000.0,173.2
+1200,4500.0,193.2
+1200,5000.0,213.2
+1200,5500.0,233.2
+1600,-5500.0,235.6
+1600,-5000.0,215.6
+1600,-4500.0,175.6
+1600,-4000.0,175.6
+1600,-3500.0,155.6
+1600,-3000.0,135.6
+1600,-2500.0,115.6
+1600,-2000.0,95.6
+1600,-1600.0,79.6
+1600,-1200.0,63.6
+1600,-900.0,51.6
+1600,-600.0,39.6
+1600,-400.0,31.6
+1600,-200.0,23.6
+1600,0.0,23.6
+1600,200.0,23.6
+1600,400.0,31.6
+1600,600.0,39.6
+1600,900.0,51.6
+1600,1200.0,63.6
+1600,1600.0,79.6
+1600,2000.0,95.6
+1600,2500.0,115.6
+1600,3000.0,135.6
+1600,3500.0,155.6
+1600,4000.0,175.6
+1600,4500.0,195.6
+1600,5000.0,215.6
+1600,5500.0,235.6
+2000,-5500.0,238.0
+2000,-5000.0,218.0
+2000,-4500.0,178.0
+2000,-4000.0,178.0
+2000,-3500.0,158.0
+2000,-3000.0,138.0
+2000,-2500.0,118.0
+2000,-2000.0,98.0
+2000,-1600.0,82.0
+2000,-1200.0,66.0
+2000,-900.0,54.0
+2000,-600.0,42.0
+2000,-400.0,34.0
+2000,-200.0,26.0
+2000,0.0,26.0
+2000,200.0,26.0
+2000,400.0,34.0
+2000,600.0,42.0
+2000,900.0,54.0
+2000,1200.0,66.0
+2000,1600.0,82.0
+2000,2000.0,98.0
+2000,2500.0,118.0
+2000,3000.0,138.0
+2000,3500.0,158.0
+2000,4000.0,178.0
+2000,4500.0,198.0
+2000,5000.0,218.0
+2000,5500.0,238.0
+2500,-5500.0,241.0
+2500,-5000.0,221.0
+2500,-4500.0,181.0
+2500,-4000.0,181.0
+2500,-3500.0,161.0
+2500,-3000.0,141.0
+2500,-2500.0,121.0
+2500,-2000.0,101.0
+2500,-1600.0,85.0
+2500,-1200.0,69.0
+2500,-900.0,57.0
+2500,-600.0,45.0
+2500,-400.0,37.0
+2500,-200.0,29.0
+2500,0.0,29.0
+2500,200.0,29.0
+2500,400.0,37.0
+2500,600.0,45.0
+2500,900.0,57.0
+2500,1200.0,69.0
+2500,1600.0,85.0
+2500,2000.0,101.0
+2500,2500.0,121.0
+2500,3000.0,141.0
+2500,3500.0,161.0
+2500,4000.0,181.0
+2500,4500.0,201.0
+2500,5000.0,221.0
+2500,5500.0,241.0
+3000,-5500.0,244.0
+3000,-5000.0,224.0
+3000,-4500.0,184.0
+3000,-4000.0,184.0
+3000,-3500.0,164.0
+3000,-3000.0,144.0
+3000,-2500.0,124.0
+3000,-2000.0,104.0
+3000,-1600.0,88.0
+3000,-1200.0,72.0
+3000,-900.0,60.0
+3000,-600.0,48.0
+3000,-400.0,40.0
+3000,-200.0,32.0
+3000,0.0,32.0
+3000,200.0,32.0
+3000,400.0,40.0
+3000,600.0,48.0
+3000,900.0,60.0
+3000,1200.0,72.0
+3000,1600.0,88.0
+3000,2000.0,104.0
+3000,2500.0,124.0
+3000,3000.0,144.0
+3000,3500.0,164.0
+3000,4000.0,184.0
+3000,4500.0,204.0
+3000,5000.0,224.0
+3000,5500.0,244.0
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/Gear_3.vtlm b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/Gear_3.vtlm
new file mode 100644
index 0000000000000000000000000000000000000000..b4274373230f50e6df7eb9702010c7a868dc967e
--- /dev/null
+++ b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/Gear_3.vtlm
@@ -0,0 +1,233 @@
+Input Speed [rpm],Input Torque [Nm],Torque Loss [Nm]
+0,-5500.0,229.6
+0,-5000.0,209.6
+0,-4500.0,169.6
+0,-4000.0,169.6
+0,-3500.0,149.6
+0,-3000.0,129.6
+0,-2500.0,109.6
+0,-2000.0,89.6
+0,-1600.0,73.6
+0,-1200.0,57.6
+0,-900.0,45.6
+0,-600.0,33.6
+0,-400.0,25.6
+0,-200.0,17.6
+0,0.0,17.6
+0,200.0,17.6
+0,400.0,25.6
+0,600.0,33.6
+0,900.0,45.6
+0,1200.0,57.6
+0,1600.0,73.6
+0,2000.0,89.6
+0,2500.0,109.6
+0,3000.0,129.6
+0,3500.0,149.6
+0,4000.0,169.6
+0,4500.0,189.6
+0,5000.0,209.6
+0,5500.0,229.6
+600,-5500.0,229.6
+600,-5000.0,209.6
+600,-4500.0,169.6
+600,-4000.0,169.6
+600,-3500.0,149.6
+600,-3000.0,129.6
+600,-2500.0,109.6
+600,-2000.0,89.6
+600,-1600.0,73.6
+600,-1200.0,57.6
+600,-900.0,45.6
+600,-600.0,33.6
+600,-400.0,25.6
+600,-200.0,17.6
+600,0.0,17.6
+600,200.0,17.6
+600,400.0,25.6
+600,600.0,33.6
+600,900.0,45.6
+600,1200.0,57.6
+600,1600.0,73.6
+600,2000.0,89.6
+600,2500.0,109.6
+600,3000.0,129.6
+600,3500.0,149.6
+600,4000.0,169.6
+600,4500.0,189.6
+600,5000.0,209.6
+600,5500.0,229.6
+900,-5500.0,231.4
+900,-5000.0,211.4
+900,-4500.0,171.4
+900,-4000.0,171.4
+900,-3500.0,151.4
+900,-3000.0,131.4
+900,-2500.0,111.4
+900,-2000.0,91.4
+900,-1600.0,75.4
+900,-1200.0,59.4
+900,-900.0,47.4
+900,-600.0,35.4
+900,-400.0,27.4
+900,-200.0,19.4
+900,0.0,19.4
+900,200.0,19.4
+900,400.0,27.4
+900,600.0,35.4
+900,900.0,47.4
+900,1200.0,59.4
+900,1600.0,75.4
+900,2000.0,91.4
+900,2500.0,111.4
+900,3000.0,131.4
+900,3500.0,151.4
+900,4000.0,171.4
+900,4500.0,191.4
+900,5000.0,211.4
+900,5500.0,231.4
+1200,-5500.0,233.2
+1200,-5000.0,213.2
+1200,-4500.0,173.2
+1200,-4000.0,173.2
+1200,-3500.0,153.2
+1200,-3000.0,133.2
+1200,-2500.0,113.2
+1200,-2000.0,93.2
+1200,-1600.0,77.2
+1200,-1200.0,61.2
+1200,-900.0,49.2
+1200,-600.0,37.2
+1200,-400.0,29.2
+1200,-200.0,21.2
+1200,0.0,21.2
+1200,200.0,21.2
+1200,400.0,29.2
+1200,600.0,37.2
+1200,900.0,49.2
+1200,1200.0,61.2
+1200,1600.0,77.2
+1200,2000.0,93.2
+1200,2500.0,113.2
+1200,3000.0,133.2
+1200,3500.0,153.2
+1200,4000.0,173.2
+1200,4500.0,193.2
+1200,5000.0,213.2
+1200,5500.0,233.2
+1600,-5500.0,235.6
+1600,-5000.0,215.6
+1600,-4500.0,175.6
+1600,-4000.0,175.6
+1600,-3500.0,155.6
+1600,-3000.0,135.6
+1600,-2500.0,115.6
+1600,-2000.0,95.6
+1600,-1600.0,79.6
+1600,-1200.0,63.6
+1600,-900.0,51.6
+1600,-600.0,39.6
+1600,-400.0,31.6
+1600,-200.0,23.6
+1600,0.0,23.6
+1600,200.0,23.6
+1600,400.0,31.6
+1600,600.0,39.6
+1600,900.0,51.6
+1600,1200.0,63.6
+1600,1600.0,79.6
+1600,2000.0,95.6
+1600,2500.0,115.6
+1600,3000.0,135.6
+1600,3500.0,155.6
+1600,4000.0,175.6
+1600,4500.0,195.6
+1600,5000.0,215.6
+1600,5500.0,235.6
+2000,-5500.0,238.0
+2000,-5000.0,218.0
+2000,-4500.0,178.0
+2000,-4000.0,178.0
+2000,-3500.0,158.0
+2000,-3000.0,138.0
+2000,-2500.0,118.0
+2000,-2000.0,98.0
+2000,-1600.0,82.0
+2000,-1200.0,66.0
+2000,-900.0,54.0
+2000,-600.0,42.0
+2000,-400.0,34.0
+2000,-200.0,26.0
+2000,0.0,26.0
+2000,200.0,26.0
+2000,400.0,34.0
+2000,600.0,42.0
+2000,900.0,54.0
+2000,1200.0,66.0
+2000,1600.0,82.0
+2000,2000.0,98.0
+2000,2500.0,118.0
+2000,3000.0,138.0
+2000,3500.0,158.0
+2000,4000.0,178.0
+2000,4500.0,198.0
+2000,5000.0,218.0
+2000,5500.0,238.0
+2500,-5500.0,241.0
+2500,-5000.0,221.0
+2500,-4500.0,181.0
+2500,-4000.0,181.0
+2500,-3500.0,161.0
+2500,-3000.0,141.0
+2500,-2500.0,121.0
+2500,-2000.0,101.0
+2500,-1600.0,85.0
+2500,-1200.0,69.0
+2500,-900.0,57.0
+2500,-600.0,45.0
+2500,-400.0,37.0
+2500,-200.0,29.0
+2500,0.0,29.0
+2500,200.0,29.0
+2500,400.0,37.0
+2500,600.0,45.0
+2500,900.0,57.0
+2500,1200.0,69.0
+2500,1600.0,85.0
+2500,2000.0,101.0
+2500,2500.0,121.0
+2500,3000.0,141.0
+2500,3500.0,161.0
+2500,4000.0,181.0
+2500,4500.0,201.0
+2500,5000.0,221.0
+2500,5500.0,241.0
+3000,-5500.0,244.0
+3000,-5000.0,224.0
+3000,-4500.0,184.0
+3000,-4000.0,184.0
+3000,-3500.0,164.0
+3000,-3000.0,144.0
+3000,-2500.0,124.0
+3000,-2000.0,104.0
+3000,-1600.0,88.0
+3000,-1200.0,72.0
+3000,-900.0,60.0
+3000,-600.0,48.0
+3000,-400.0,40.0
+3000,-200.0,32.0
+3000,0.0,32.0
+3000,200.0,32.0
+3000,400.0,40.0
+3000,600.0,48.0
+3000,900.0,60.0
+3000,1200.0,72.0
+3000,1600.0,88.0
+3000,2000.0,104.0
+3000,2500.0,124.0
+3000,3000.0,144.0
+3000,3500.0,164.0
+3000,4000.0,184.0
+3000,4500.0,204.0
+3000,5000.0,224.0
+3000,5500.0,244.0
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/Gear_4.vtlm b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/Gear_4.vtlm
new file mode 100644
index 0000000000000000000000000000000000000000..b4274373230f50e6df7eb9702010c7a868dc967e
--- /dev/null
+++ b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/Gear_4.vtlm
@@ -0,0 +1,233 @@
+Input Speed [rpm],Input Torque [Nm],Torque Loss [Nm]
+0,-5500.0,229.6
+0,-5000.0,209.6
+0,-4500.0,169.6
+0,-4000.0,169.6
+0,-3500.0,149.6
+0,-3000.0,129.6
+0,-2500.0,109.6
+0,-2000.0,89.6
+0,-1600.0,73.6
+0,-1200.0,57.6
+0,-900.0,45.6
+0,-600.0,33.6
+0,-400.0,25.6
+0,-200.0,17.6
+0,0.0,17.6
+0,200.0,17.6
+0,400.0,25.6
+0,600.0,33.6
+0,900.0,45.6
+0,1200.0,57.6
+0,1600.0,73.6
+0,2000.0,89.6
+0,2500.0,109.6
+0,3000.0,129.6
+0,3500.0,149.6
+0,4000.0,169.6
+0,4500.0,189.6
+0,5000.0,209.6
+0,5500.0,229.6
+600,-5500.0,229.6
+600,-5000.0,209.6
+600,-4500.0,169.6
+600,-4000.0,169.6
+600,-3500.0,149.6
+600,-3000.0,129.6
+600,-2500.0,109.6
+600,-2000.0,89.6
+600,-1600.0,73.6
+600,-1200.0,57.6
+600,-900.0,45.6
+600,-600.0,33.6
+600,-400.0,25.6
+600,-200.0,17.6
+600,0.0,17.6
+600,200.0,17.6
+600,400.0,25.6
+600,600.0,33.6
+600,900.0,45.6
+600,1200.0,57.6
+600,1600.0,73.6
+600,2000.0,89.6
+600,2500.0,109.6
+600,3000.0,129.6
+600,3500.0,149.6
+600,4000.0,169.6
+600,4500.0,189.6
+600,5000.0,209.6
+600,5500.0,229.6
+900,-5500.0,231.4
+900,-5000.0,211.4
+900,-4500.0,171.4
+900,-4000.0,171.4
+900,-3500.0,151.4
+900,-3000.0,131.4
+900,-2500.0,111.4
+900,-2000.0,91.4
+900,-1600.0,75.4
+900,-1200.0,59.4
+900,-900.0,47.4
+900,-600.0,35.4
+900,-400.0,27.4
+900,-200.0,19.4
+900,0.0,19.4
+900,200.0,19.4
+900,400.0,27.4
+900,600.0,35.4
+900,900.0,47.4
+900,1200.0,59.4
+900,1600.0,75.4
+900,2000.0,91.4
+900,2500.0,111.4
+900,3000.0,131.4
+900,3500.0,151.4
+900,4000.0,171.4
+900,4500.0,191.4
+900,5000.0,211.4
+900,5500.0,231.4
+1200,-5500.0,233.2
+1200,-5000.0,213.2
+1200,-4500.0,173.2
+1200,-4000.0,173.2
+1200,-3500.0,153.2
+1200,-3000.0,133.2
+1200,-2500.0,113.2
+1200,-2000.0,93.2
+1200,-1600.0,77.2
+1200,-1200.0,61.2
+1200,-900.0,49.2
+1200,-600.0,37.2
+1200,-400.0,29.2
+1200,-200.0,21.2
+1200,0.0,21.2
+1200,200.0,21.2
+1200,400.0,29.2
+1200,600.0,37.2
+1200,900.0,49.2
+1200,1200.0,61.2
+1200,1600.0,77.2
+1200,2000.0,93.2
+1200,2500.0,113.2
+1200,3000.0,133.2
+1200,3500.0,153.2
+1200,4000.0,173.2
+1200,4500.0,193.2
+1200,5000.0,213.2
+1200,5500.0,233.2
+1600,-5500.0,235.6
+1600,-5000.0,215.6
+1600,-4500.0,175.6
+1600,-4000.0,175.6
+1600,-3500.0,155.6
+1600,-3000.0,135.6
+1600,-2500.0,115.6
+1600,-2000.0,95.6
+1600,-1600.0,79.6
+1600,-1200.0,63.6
+1600,-900.0,51.6
+1600,-600.0,39.6
+1600,-400.0,31.6
+1600,-200.0,23.6
+1600,0.0,23.6
+1600,200.0,23.6
+1600,400.0,31.6
+1600,600.0,39.6
+1600,900.0,51.6
+1600,1200.0,63.6
+1600,1600.0,79.6
+1600,2000.0,95.6
+1600,2500.0,115.6
+1600,3000.0,135.6
+1600,3500.0,155.6
+1600,4000.0,175.6
+1600,4500.0,195.6
+1600,5000.0,215.6
+1600,5500.0,235.6
+2000,-5500.0,238.0
+2000,-5000.0,218.0
+2000,-4500.0,178.0
+2000,-4000.0,178.0
+2000,-3500.0,158.0
+2000,-3000.0,138.0
+2000,-2500.0,118.0
+2000,-2000.0,98.0
+2000,-1600.0,82.0
+2000,-1200.0,66.0
+2000,-900.0,54.0
+2000,-600.0,42.0
+2000,-400.0,34.0
+2000,-200.0,26.0
+2000,0.0,26.0
+2000,200.0,26.0
+2000,400.0,34.0
+2000,600.0,42.0
+2000,900.0,54.0
+2000,1200.0,66.0
+2000,1600.0,82.0
+2000,2000.0,98.0
+2000,2500.0,118.0
+2000,3000.0,138.0
+2000,3500.0,158.0
+2000,4000.0,178.0
+2000,4500.0,198.0
+2000,5000.0,218.0
+2000,5500.0,238.0
+2500,-5500.0,241.0
+2500,-5000.0,221.0
+2500,-4500.0,181.0
+2500,-4000.0,181.0
+2500,-3500.0,161.0
+2500,-3000.0,141.0
+2500,-2500.0,121.0
+2500,-2000.0,101.0
+2500,-1600.0,85.0
+2500,-1200.0,69.0
+2500,-900.0,57.0
+2500,-600.0,45.0
+2500,-400.0,37.0
+2500,-200.0,29.0
+2500,0.0,29.0
+2500,200.0,29.0
+2500,400.0,37.0
+2500,600.0,45.0
+2500,900.0,57.0
+2500,1200.0,69.0
+2500,1600.0,85.0
+2500,2000.0,101.0
+2500,2500.0,121.0
+2500,3000.0,141.0
+2500,3500.0,161.0
+2500,4000.0,181.0
+2500,4500.0,201.0
+2500,5000.0,221.0
+2500,5500.0,241.0
+3000,-5500.0,244.0
+3000,-5000.0,224.0
+3000,-4500.0,184.0
+3000,-4000.0,184.0
+3000,-3500.0,164.0
+3000,-3000.0,144.0
+3000,-2500.0,124.0
+3000,-2000.0,104.0
+3000,-1600.0,88.0
+3000,-1200.0,72.0
+3000,-900.0,60.0
+3000,-600.0,48.0
+3000,-400.0,40.0
+3000,-200.0,32.0
+3000,0.0,32.0
+3000,200.0,32.0
+3000,400.0,40.0
+3000,600.0,48.0
+3000,900.0,60.0
+3000,1200.0,72.0
+3000,1600.0,88.0
+3000,2000.0,104.0
+3000,2500.0,124.0
+3000,3000.0,144.0
+3000,3500.0,164.0
+3000,4000.0,184.0
+3000,4500.0,204.0
+3000,5000.0,224.0
+3000,5500.0,244.0
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/Gear_5.vtlm b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/Gear_5.vtlm
new file mode 100644
index 0000000000000000000000000000000000000000..981092222c94b37a692b22b8d5c4087055fb14e2
--- /dev/null
+++ b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/Gear_5.vtlm
@@ -0,0 +1,233 @@
+Input Speed [rpm],Input Torque [Nm],Torque Loss [Nm]
+0,-5500.0,64.6
+0,-5000.0,59.6
+0,-4500.0,49.6
+0,-4000.0,49.6
+0,-3500.0,44.6
+0,-3000.0,39.6
+0,-2500.0,34.6
+0,-2000.0,29.6
+0,-1600.0,25.6
+0,-1200.0,21.6
+0,-900.0,18.6
+0,-600.0,15.6
+0,-400.0,13.6
+0,-200.0,11.6
+0,0.0,11.6
+0,200.0,11.6
+0,400.0,13.6
+0,600.0,15.6
+0,900.0,18.6
+0,1200.0,21.6
+0,1600.0,25.6
+0,2000.0,29.6
+0,2500.0,34.6
+0,3000.0,39.6
+0,3500.0,44.6
+0,4000.0,49.6
+0,4500.0,54.6
+0,5000.0,59.6
+0,5500.0,64.6
+600,-5500.0,64.6
+600,-5000.0,59.6
+600,-4500.0,49.6
+600,-4000.0,49.6
+600,-3500.0,44.6
+600,-3000.0,39.6
+600,-2500.0,34.6
+600,-2000.0,29.6
+600,-1600.0,25.6
+600,-1200.0,21.6
+600,-900.0,18.6
+600,-600.0,15.6
+600,-400.0,13.6
+600,-200.0,11.6
+600,0.0,11.6
+600,200.0,11.6
+600,400.0,13.6
+600,600.0,15.6
+600,900.0,18.6
+600,1200.0,21.6
+600,1600.0,25.6
+600,2000.0,29.6
+600,2500.0,34.6
+600,3000.0,39.6
+600,3500.0,44.6
+600,4000.0,49.6
+600,4500.0,54.6
+600,5000.0,59.6
+600,5500.0,64.6
+900,-5500.0,66.4
+900,-5000.0,61.4
+900,-4500.0,51.4
+900,-4000.0,51.4
+900,-3500.0,46.4
+900,-3000.0,41.4
+900,-2500.0,36.4
+900,-2000.0,31.4
+900,-1600.0,27.4
+900,-1200.0,23.4
+900,-900.0,20.4
+900,-600.0,17.4
+900,-400.0,15.4
+900,-200.0,13.4
+900,0.0,13.4
+900,200.0,13.4
+900,400.0,15.4
+900,600.0,17.4
+900,900.0,20.4
+900,1200.0,23.4
+900,1600.0,27.4
+900,2000.0,31.4
+900,2500.0,36.4
+900,3000.0,41.4
+900,3500.0,46.4
+900,4000.0,51.4
+900,4500.0,56.4
+900,5000.0,61.4
+900,5500.0,66.4
+1200,-5500.0,68.2
+1200,-5000.0,63.2
+1200,-4500.0,53.2
+1200,-4000.0,53.2
+1200,-3500.0,48.2
+1200,-3000.0,43.2
+1200,-2500.0,38.2
+1200,-2000.0,33.2
+1200,-1600.0,29.2
+1200,-1200.0,25.2
+1200,-900.0,22.2
+1200,-600.0,19.2
+1200,-400.0,17.2
+1200,-200.0,15.2
+1200,0.0,15.2
+1200,200.0,15.2
+1200,400.0,17.2
+1200,600.0,19.2
+1200,900.0,22.2
+1200,1200.0,25.2
+1200,1600.0,29.2
+1200,2000.0,33.2
+1200,2500.0,38.2
+1200,3000.0,43.2
+1200,3500.0,48.2
+1200,4000.0,53.2
+1200,4500.0,58.2
+1200,5000.0,63.2
+1200,5500.0,68.2
+1600,-5500.0,70.6
+1600,-5000.0,65.6
+1600,-4500.0,55.6
+1600,-4000.0,55.6
+1600,-3500.0,50.6
+1600,-3000.0,45.6
+1600,-2500.0,40.6
+1600,-2000.0,35.6
+1600,-1600.0,31.6
+1600,-1200.0,27.6
+1600,-900.0,24.6
+1600,-600.0,21.6
+1600,-400.0,19.6
+1600,-200.0,17.6
+1600,0.0,17.6
+1600,200.0,17.6
+1600,400.0,19.6
+1600,600.0,21.6
+1600,900.0,24.6
+1600,1200.0,27.6
+1600,1600.0,31.6
+1600,2000.0,35.6
+1600,2500.0,40.6
+1600,3000.0,45.6
+1600,3500.0,50.6
+1600,4000.0,55.6
+1600,4500.0,60.6
+1600,5000.0,65.6
+1600,5500.0,70.6
+2000,-5500.0,73.0
+2000,-5000.0,68.0
+2000,-4500.0,58.0
+2000,-4000.0,58.0
+2000,-3500.0,53.0
+2000,-3000.0,48.0
+2000,-2500.0,43.0
+2000,-2000.0,38.0
+2000,-1600.0,34.0
+2000,-1200.0,30.0
+2000,-900.0,27.0
+2000,-600.0,24.0
+2000,-400.0,22.0
+2000,-200.0,20.0
+2000,0.0,20.0
+2000,200.0,20.0
+2000,400.0,22.0
+2000,600.0,24.0
+2000,900.0,27.0
+2000,1200.0,30.0
+2000,1600.0,34.0
+2000,2000.0,38.0
+2000,2500.0,43.0
+2000,3000.0,48.0
+2000,3500.0,53.0
+2000,4000.0,58.0
+2000,4500.0,63.0
+2000,5000.0,68.0
+2000,5500.0,73.0
+2500,-5500.0,76.0
+2500,-5000.0,71.0
+2500,-4500.0,61.0
+2500,-4000.0,61.0
+2500,-3500.0,56.0
+2500,-3000.0,51.0
+2500,-2500.0,46.0
+2500,-2000.0,41.0
+2500,-1600.0,37.0
+2500,-1200.0,33.0
+2500,-900.0,30.0
+2500,-600.0,27.0
+2500,-400.0,25.0
+2500,-200.0,23.0
+2500,0.0,23.0
+2500,200.0,23.0
+2500,400.0,25.0
+2500,600.0,27.0
+2500,900.0,30.0
+2500,1200.0,33.0
+2500,1600.0,37.0
+2500,2000.0,41.0
+2500,2500.0,46.0
+2500,3000.0,51.0
+2500,3500.0,56.0
+2500,4000.0,61.0
+2500,4500.0,66.0
+2500,5000.0,71.0
+2500,5500.0,76.0
+3000,-5500.0,79.0
+3000,-5000.0,74.0
+3000,-4500.0,64.0
+3000,-4000.0,64.0
+3000,-3500.0,59.0
+3000,-3000.0,54.0
+3000,-2500.0,49.0
+3000,-2000.0,44.0
+3000,-1600.0,40.0
+3000,-1200.0,36.0
+3000,-900.0,33.0
+3000,-600.0,30.0
+3000,-400.0,28.0
+3000,-200.0,26.0
+3000,0.0,26.0
+3000,200.0,26.0
+3000,400.0,28.0
+3000,600.0,30.0
+3000,900.0,33.0
+3000,1200.0,36.0
+3000,1600.0,40.0
+3000,2000.0,44.0
+3000,2500.0,49.0
+3000,3000.0,54.0
+3000,3500.0,59.0
+3000,4000.0,64.0
+3000,4500.0,69.0
+3000,5000.0,74.0
+3000,5500.0,79.0
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/Gear_6.vtlm b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/Gear_6.vtlm
new file mode 100644
index 0000000000000000000000000000000000000000..b4274373230f50e6df7eb9702010c7a868dc967e
--- /dev/null
+++ b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/Gear_6.vtlm
@@ -0,0 +1,233 @@
+Input Speed [rpm],Input Torque [Nm],Torque Loss [Nm]
+0,-5500.0,229.6
+0,-5000.0,209.6
+0,-4500.0,169.6
+0,-4000.0,169.6
+0,-3500.0,149.6
+0,-3000.0,129.6
+0,-2500.0,109.6
+0,-2000.0,89.6
+0,-1600.0,73.6
+0,-1200.0,57.6
+0,-900.0,45.6
+0,-600.0,33.6
+0,-400.0,25.6
+0,-200.0,17.6
+0,0.0,17.6
+0,200.0,17.6
+0,400.0,25.6
+0,600.0,33.6
+0,900.0,45.6
+0,1200.0,57.6
+0,1600.0,73.6
+0,2000.0,89.6
+0,2500.0,109.6
+0,3000.0,129.6
+0,3500.0,149.6
+0,4000.0,169.6
+0,4500.0,189.6
+0,5000.0,209.6
+0,5500.0,229.6
+600,-5500.0,229.6
+600,-5000.0,209.6
+600,-4500.0,169.6
+600,-4000.0,169.6
+600,-3500.0,149.6
+600,-3000.0,129.6
+600,-2500.0,109.6
+600,-2000.0,89.6
+600,-1600.0,73.6
+600,-1200.0,57.6
+600,-900.0,45.6
+600,-600.0,33.6
+600,-400.0,25.6
+600,-200.0,17.6
+600,0.0,17.6
+600,200.0,17.6
+600,400.0,25.6
+600,600.0,33.6
+600,900.0,45.6
+600,1200.0,57.6
+600,1600.0,73.6
+600,2000.0,89.6
+600,2500.0,109.6
+600,3000.0,129.6
+600,3500.0,149.6
+600,4000.0,169.6
+600,4500.0,189.6
+600,5000.0,209.6
+600,5500.0,229.6
+900,-5500.0,231.4
+900,-5000.0,211.4
+900,-4500.0,171.4
+900,-4000.0,171.4
+900,-3500.0,151.4
+900,-3000.0,131.4
+900,-2500.0,111.4
+900,-2000.0,91.4
+900,-1600.0,75.4
+900,-1200.0,59.4
+900,-900.0,47.4
+900,-600.0,35.4
+900,-400.0,27.4
+900,-200.0,19.4
+900,0.0,19.4
+900,200.0,19.4
+900,400.0,27.4
+900,600.0,35.4
+900,900.0,47.4
+900,1200.0,59.4
+900,1600.0,75.4
+900,2000.0,91.4
+900,2500.0,111.4
+900,3000.0,131.4
+900,3500.0,151.4
+900,4000.0,171.4
+900,4500.0,191.4
+900,5000.0,211.4
+900,5500.0,231.4
+1200,-5500.0,233.2
+1200,-5000.0,213.2
+1200,-4500.0,173.2
+1200,-4000.0,173.2
+1200,-3500.0,153.2
+1200,-3000.0,133.2
+1200,-2500.0,113.2
+1200,-2000.0,93.2
+1200,-1600.0,77.2
+1200,-1200.0,61.2
+1200,-900.0,49.2
+1200,-600.0,37.2
+1200,-400.0,29.2
+1200,-200.0,21.2
+1200,0.0,21.2
+1200,200.0,21.2
+1200,400.0,29.2
+1200,600.0,37.2
+1200,900.0,49.2
+1200,1200.0,61.2
+1200,1600.0,77.2
+1200,2000.0,93.2
+1200,2500.0,113.2
+1200,3000.0,133.2
+1200,3500.0,153.2
+1200,4000.0,173.2
+1200,4500.0,193.2
+1200,5000.0,213.2
+1200,5500.0,233.2
+1600,-5500.0,235.6
+1600,-5000.0,215.6
+1600,-4500.0,175.6
+1600,-4000.0,175.6
+1600,-3500.0,155.6
+1600,-3000.0,135.6
+1600,-2500.0,115.6
+1600,-2000.0,95.6
+1600,-1600.0,79.6
+1600,-1200.0,63.6
+1600,-900.0,51.6
+1600,-600.0,39.6
+1600,-400.0,31.6
+1600,-200.0,23.6
+1600,0.0,23.6
+1600,200.0,23.6
+1600,400.0,31.6
+1600,600.0,39.6
+1600,900.0,51.6
+1600,1200.0,63.6
+1600,1600.0,79.6
+1600,2000.0,95.6
+1600,2500.0,115.6
+1600,3000.0,135.6
+1600,3500.0,155.6
+1600,4000.0,175.6
+1600,4500.0,195.6
+1600,5000.0,215.6
+1600,5500.0,235.6
+2000,-5500.0,238.0
+2000,-5000.0,218.0
+2000,-4500.0,178.0
+2000,-4000.0,178.0
+2000,-3500.0,158.0
+2000,-3000.0,138.0
+2000,-2500.0,118.0
+2000,-2000.0,98.0
+2000,-1600.0,82.0
+2000,-1200.0,66.0
+2000,-900.0,54.0
+2000,-600.0,42.0
+2000,-400.0,34.0
+2000,-200.0,26.0
+2000,0.0,26.0
+2000,200.0,26.0
+2000,400.0,34.0
+2000,600.0,42.0
+2000,900.0,54.0
+2000,1200.0,66.0
+2000,1600.0,82.0
+2000,2000.0,98.0
+2000,2500.0,118.0
+2000,3000.0,138.0
+2000,3500.0,158.0
+2000,4000.0,178.0
+2000,4500.0,198.0
+2000,5000.0,218.0
+2000,5500.0,238.0
+2500,-5500.0,241.0
+2500,-5000.0,221.0
+2500,-4500.0,181.0
+2500,-4000.0,181.0
+2500,-3500.0,161.0
+2500,-3000.0,141.0
+2500,-2500.0,121.0
+2500,-2000.0,101.0
+2500,-1600.0,85.0
+2500,-1200.0,69.0
+2500,-900.0,57.0
+2500,-600.0,45.0
+2500,-400.0,37.0
+2500,-200.0,29.0
+2500,0.0,29.0
+2500,200.0,29.0
+2500,400.0,37.0
+2500,600.0,45.0
+2500,900.0,57.0
+2500,1200.0,69.0
+2500,1600.0,85.0
+2500,2000.0,101.0
+2500,2500.0,121.0
+2500,3000.0,141.0
+2500,3500.0,161.0
+2500,4000.0,181.0
+2500,4500.0,201.0
+2500,5000.0,221.0
+2500,5500.0,241.0
+3000,-5500.0,244.0
+3000,-5000.0,224.0
+3000,-4500.0,184.0
+3000,-4000.0,184.0
+3000,-3500.0,164.0
+3000,-3000.0,144.0
+3000,-2500.0,124.0
+3000,-2000.0,104.0
+3000,-1600.0,88.0
+3000,-1200.0,72.0
+3000,-900.0,60.0
+3000,-600.0,48.0
+3000,-400.0,40.0
+3000,-200.0,32.0
+3000,0.0,32.0
+3000,200.0,32.0
+3000,400.0,40.0
+3000,600.0,48.0
+3000,900.0,60.0
+3000,1200.0,72.0
+3000,1600.0,88.0
+3000,2000.0,104.0
+3000,2500.0,124.0
+3000,3000.0,144.0
+3000,3500.0,164.0
+3000,4000.0,184.0
+3000,4500.0,204.0
+3000,5000.0,224.0
+3000,5500.0,244.0
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/GenericEM_47kW.vem b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/GenericEM_47kW.vem
new file mode 100644
index 0000000000000000000000000000000000000000..8f60e9a767ef2c7ce938c2695b26ab913b527caf
--- /dev/null
+++ b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/GenericEM_47kW.vem
@@ -0,0 +1,19 @@
+{
+	"Header": {
+		"CreatedBy": " ()",
+		"Date": "2016-10-13T08:54:28.7387223Z",
+		"AppVersion": "3",
+		"FileVersion": 1
+	},
+	"Body": {
+		"SavedInDeclMode": false,
+		"Model": "Generic EM 47kW",
+		"FullLoadCurve": "GenericEM_47kW.vemp",
+		"EfficiencyMap": "GenericEM_47kW.vemo",
+		"DragCurve": "GenericEM_47kW.vemd",
+		"Inertia": 0.1,
+		"ContinuousPower": 31000,
+    "ThermalOverloadBuffer": 0.5,
+    "ThermalOverloadRecoveryFactor": 0.9
+	}
+}
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/GenericEM_47kW.vemd b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/GenericEM_47kW.vemd
new file mode 100644
index 0000000000000000000000000000000000000000..fa6451dd75c4faf9a2f26a8cec2d28d9929ae22e
--- /dev/null
+++ b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/GenericEM_47kW.vemd
@@ -0,0 +1,3 @@
+n [rpm] , T_drag [Nm]
+0       , -5
+5000    , -28
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/GenericEM_47kW.vemo b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/GenericEM_47kW.vemo
new file mode 100644
index 0000000000000000000000000000000000000000..77eb6c5f7e989510b6402bd5c60d116cf04053f0
--- /dev/null
+++ b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/GenericEM_47kW.vemo
@@ -0,0 +1,2016 @@
+n [rpm] , T [Nm] , P_el [kW]
+0,-450,9.8449
+0,-435.9375,9.2719
+0,-421.875,8.7161
+0,-407.8125,8.1773
+0,-393.75,7.6558
+0,-379.6875,7.1514
+0,-365.625,6.6641
+0,-351.5625,6.194
+0,-337.5,5.741
+0,-323.4375,5.3052
+0,-309.375,4.8866
+0,-295.3125,4.4851
+0,-281.25,4.1007
+0,-267.1875,3.7335
+0,-253.125,3.3834
+0,-239.0625,3.0505
+0,-225,2.7348
+0,-210.9375,2.4362
+0,-196.875,2.1547
+0,-182.8125,1.8904
+0,-168.75,1.6433
+0,-154.6875,1.4133
+0,-140.625,1.2004
+0,-126.5625,1.0047
+0,-112.5,0.82617
+0,-98.4375,0.66478
+0,-84.375,0.52053
+0,-70.3125,0.39344
+0,-56.25,0.28349
+0,-42.1875,0.1907
+0,-28.125,0.11506
+0,-14.0625,0.056566
+0,0,0.0361
+0,14.0625,0.086979
+0,28.125,0.15501
+0,42.1875,0.24019
+0,56.25,0.34252
+0,70.3125,0.462
+0,84.375,0.59864
+0,98.4375,0.75242
+0,112.5,0.92335
+0,126.5625,1.1114
+0,140.625,1.3167
+0,154.6875,1.5391
+0,168.75,1.7786
+0,182.8125,2.0353
+0,196.875,2.3091
+0,210.9375,2.6001
+0,225,2.9083
+0,239.0625,3.2336
+0,253.125,3.576
+0,267.1875,3.9356
+0,281.25,4.3123
+0,295.3125,4.7062
+0,309.375,5.1173
+0,323.4375,5.5455
+0,337.5,5.9908
+0,351.5625,6.4533
+0,365.625,6.933
+0,379.6875,7.4298
+0,393.75,7.9437
+0,407.8125,8.4748
+0,421.875,9.0231
+0,435.9375,9.5885
+0,450,10.171
+28.57113959,-450,5.8367
+28.57113959,-435.9375,5.3901
+28.57113959,-421.875,4.9606
+28.57113959,-407.8125,4.5482
+28.57113959,-393.75,4.153
+28.57113959,-379.6875,3.775
+28.57113959,-365.625,3.4141
+28.57113959,-351.5625,3.0704
+28.57113959,-337.5,2.7438
+28.57113959,-323.4375,2.4344
+28.57113959,-309.375,2.1421
+28.57113959,-295.3125,1.8669
+28.57113959,-281.25,1.609
+28.57113959,-267.1875,1.3681
+28.57113959,-253.125,1.1445
+28.57113959,-239.0625,0.93793
+28.57113959,-225,0.74855
+28.57113959,-210.9375,0.57729
+28.57113959,-196.875,0.4236
+28.57113959,-182.8125,0.28766
+28.57113959,-168.75,0.16853
+28.57113959,-154.6875,0.066217
+28.57113959,-140.625,-0.019286
+28.57113959,-126.5625,-0.087979
+28.57113959,-112.5,-0.13986
+28.57113959,-98.4375,-0.17493
+28.57113959,-84.375,-0.19319
+28.57113959,-70.3125,-0.19464
+28.57113959,-56.25,-0.17927
+28.57113959,-42.1875,-0.1471
+28.57113959,-28.125,-0.09811
+28.57113959,-14.0625,-0.032313
+28.57113959,0,0.07245
+28.57113959,14.0625,0.24971
+28.57113959,28.125,0.44411
+28.57113959,42.1875,0.65567
+28.57113959,56.25,0.88437
+28.57113959,70.3125,1.1302
+28.57113959,84.375,1.3932
+28.57113959,98.4375,1.6734
+28.57113959,112.5,1.9707
+28.57113959,126.5625,2.2852
+28.57113959,140.625,2.6168
+28.57113959,154.6875,2.9655
+28.57113959,168.75,3.3315
+28.57113959,182.8125,3.7145
+28.57113959,196.875,4.1147
+28.57113959,210.9375,4.5321
+28.57113959,225,4.9666
+28.57113959,239.0625,5.4183
+28.57113959,253.125,5.8871
+28.57113959,267.1875,6.3731
+28.57113959,281.25,6.8762
+28.57113959,295.3125,7.3965
+28.57113959,309.375,7.9339
+28.57113959,323.4375,8.4885
+28.57113959,337.5,9.0602
+28.57113959,351.5625,9.6491
+28.57113959,365.625,10.255
+28.57113959,379.6875,10.878
+28.57113959,393.75,11.519
+28.57113959,407.8125,12.176
+28.57113959,421.875,12.851
+28.57113959,435.9375,13.542
+28.57113959,450,14.251
+57.14287758,-450,1.8303
+57.14287758,-435.9375,1.5101
+57.14287758,-421.875,1.2075
+57.14287758,-407.8125,0.92457
+57.14287758,-393.75,0.66034
+57.14287758,-379.6875,0.41292
+57.14287758,-365.625,0.18231
+57.14287758,-351.5625,-0.031493
+57.14287758,-337.5,-0.22848
+57.14287758,-323.4375,-0.40866
+57.14287758,-309.375,-0.57202
+57.14287758,-295.3125,-0.71858
+57.14287758,-281.25,-0.84832
+57.14287758,-267.1875,-0.96125
+57.14287758,-253.125,-1.0574
+57.14287758,-239.0625,-1.1367
+57.14287758,-225,-1.1992
+57.14287758,-210.9375,-1.2449
+57.14287758,-196.875,-1.2737
+57.14287758,-182.8125,-1.2858
+57.14287758,-168.75,-1.2811
+57.14287758,-154.6875,-1.2595
+57.14287758,-140.625,-1.2211
+57.14287758,-126.5625,-1.1659
+57.14287758,-112.5,-1.0939
+57.14287758,-98.4375,-1.0051
+57.14287758,-84.375,-0.89953
+57.14287758,-70.3125,-0.7771
+57.14287758,-56.25,-0.63787
+57.14287758,-42.1875,-0.48182
+57.14287758,-28.125,-0.30896
+57.14287758,-14.0625,-0.11929
+57.14287758,0,0.11065
+57.14287758,14.0625,0.41428
+57.14287758,28.125,0.73507
+57.14287758,42.1875,1.073
+57.14287758,56.25,1.4281
+57.14287758,70.3125,1.8003
+57.14287758,84.375,2.1897
+57.14287758,98.4375,2.5962
+57.14287758,112.5,3.0199
+57.14287758,126.5625,3.4608
+57.14287758,140.625,3.9188
+57.14287758,154.6875,4.3939
+57.14287758,168.75,4.8862
+57.14287758,182.8125,5.3956
+57.14287758,196.875,5.9222
+57.14287758,210.9375,6.466
+57.14287758,225,7.0269
+57.14287758,239.0625,7.6049
+57.14287758,253.125,8.2001
+57.14287758,267.1875,8.8124
+57.14287758,281.25,9.4419
+57.14287758,295.3125,10.089
+57.14287758,309.375,10.752
+57.14287758,323.4375,11.433
+57.14287758,337.5,12.131
+57.14287758,351.5625,12.847
+57.14287758,365.625,13.579
+57.14287758,379.6875,14.329
+57.14287758,393.75,15.095
+57.14287758,407.8125,15.879
+57.14287758,421.875,16.68
+57.14287758,435.9375,17.498
+57.14287758,450,18.334
+85.71461556,-450,-2.1071
+85.71461556,-435.9375,-2.2979
+85.71461556,-421.875,-2.4719
+85.71461556,-407.8125,-2.629
+85.71461556,-393.75,-2.7694
+85.71461556,-379.6875,-2.8929
+85.71461556,-365.625,-2.9997
+85.71461556,-351.5625,-3.0896
+85.71461556,-337.5,-3.1627
+85.71461556,-323.4375,-3.219
+85.71461556,-309.375,-3.2585
+85.71461556,-295.3125,-3.2812
+85.71461556,-281.25,-3.2871
+85.71461556,-267.1875,-3.2761
+85.71461556,-253.125,-3.2484
+85.71461556,-239.0625,-3.2038
+85.71461556,-225,-3.1424
+85.71461556,-210.9375,-3.0642
+85.71461556,-196.875,-2.9692
+85.71461556,-182.8125,-2.8574
+85.71461556,-168.75,-2.7288
+85.71461556,-154.6875,-2.5834
+85.71461556,-140.625,-2.4211
+85.71461556,-126.5625,-2.2421
+85.71461556,-112.5,-2.0462
+85.71461556,-98.4375,-1.8335
+85.71461556,-84.375,-1.604
+85.71461556,-70.3125,-1.3577
+85.71461556,-56.25,-1.0946
+85.71461556,-42.1875,-0.81471
+85.71461556,-28.125,-0.51798
+85.71461556,-14.0625,-0.20444
+85.71461556,0,0.15072
+85.71461556,14.0625,0.58072
+85.71461556,28.125,1.0279
+85.71461556,42.1875,1.4922
+85.71461556,56.25,1.9737
+85.71461556,70.3125,2.4723
+85.71461556,84.375,2.988
+85.71461556,98.4375,3.5209
+85.71461556,112.5,4.071
+85.71461556,126.5625,4.6382
+85.71461556,140.625,5.2226
+85.71461556,154.6875,5.8241
+85.71461556,168.75,6.4428
+85.71461556,182.8125,7.0786
+85.71461556,196.875,7.7315
+85.71461556,210.9375,8.4017
+85.71461556,225,9.0889
+85.71461556,239.0625,9.7934
+85.71461556,253.125,10.515
+85.71461556,267.1875,11.254
+85.71461556,281.25,12.01
+85.71461556,295.3125,12.783
+85.71461556,309.375,13.573
+85.71461556,323.4375,14.38
+85.71461556,337.5,15.205
+85.71461556,351.5625,16.046
+85.71461556,365.625,16.905
+85.71461556,379.6875,17.781
+85.71461556,393.75,18.674
+85.71461556,407.8125,19.584
+85.71461556,421.875,20.512
+85.71461556,435.9375,21.456
+85.71461556,450,22.418
+114.2881487,-450,-6.0305
+114.2881487,-435.9375,-6.0974
+114.2881487,-421.875,-6.1475
+114.2881487,-407.8125,-6.1808
+114.2881487,-393.75,-6.1973
+114.2881487,-379.6875,-6.197
+114.2881487,-365.625,-6.1799
+114.2881487,-351.5625,-6.1459
+114.2881487,-337.5,-6.0951
+114.2881487,-323.4375,-6.0276
+114.2881487,-309.375,-5.9432
+114.2881487,-295.3125,-5.842
+114.2881487,-281.25,-5.724
+114.2881487,-267.1875,-5.5892
+114.2881487,-253.125,-5.4376
+114.2881487,-239.0625,-5.2691
+114.2881487,-225,-5.0839
+114.2881487,-210.9375,-4.8818
+114.2881487,-196.875,-4.6629
+114.2881487,-182.8125,-4.4272
+114.2881487,-168.75,-4.1748
+114.2881487,-154.6875,-3.9054
+114.2881487,-140.625,-3.6193
+114.2881487,-126.5625,-3.3164
+114.2881487,-112.5,-2.9967
+114.2881487,-98.4375,-2.6601
+114.2881487,-84.375,-2.3067
+114.2881487,-70.3125,-1.9366
+114.2881487,-56.25,-1.5496
+114.2881487,-42.1875,-1.1458
+114.2881487,-28.125,-0.72519
+114.2881487,-14.0625,-0.28777
+114.2881487,0,0.19264
+114.2881487,14.0625,0.74902
+114.2881487,28.125,1.3226
+114.2881487,42.1875,1.9132
+114.2881487,56.25,2.5211
+114.2881487,70.3125,3.1461
+114.2881487,84.375,3.7882
+114.2881487,98.4375,4.4475
+114.2881487,112.5,5.1239
+114.2881487,126.5625,5.8175
+114.2881487,140.625,6.5283
+114.2881487,154.6875,7.2561
+114.2881487,168.75,8.0012
+114.2881487,182.8125,8.7634
+114.2881487,196.875,9.5427
+114.2881487,210.9375,10.339
+114.2881487,225,11.153
+114.2881487,239.0625,11.984
+114.2881487,253.125,12.832
+114.2881487,267.1875,13.697
+114.2881487,281.25,14.579
+114.2881487,295.3125,15.478
+114.2881487,309.375,16.395
+114.2881487,323.4375,17.329
+114.2881487,337.5,18.279
+114.2881487,351.5625,19.247
+114.2881487,365.625,20.233
+114.2881487,379.6875,21.235
+114.2881487,393.75,22.254
+114.2881487,407.8125,23.291
+114.2881487,421.875,24.345
+114.2881487,435.9375,25.416
+114.2881487,450,26.504
+142.8556979,-450,-9.9521
+142.8556979,-435.9375,-9.8951
+142.8556979,-421.875,-9.8214
+142.8556979,-407.8125,-9.7308
+142.8556979,-393.75,-9.6234
+142.8556979,-379.6875,-9.4992
+142.8556979,-365.625,-9.3582
+142.8556979,-351.5625,-9.2004
+142.8556979,-337.5,-9.0258
+142.8556979,-323.4375,-8.8343
+142.8556979,-309.375,-8.626
+142.8556979,-295.3125,-8.401
+142.8556979,-281.25,-8.1591
+142.8556979,-267.1875,-7.9004
+142.8556979,-253.125,-7.6249
+142.8556979,-239.0625,-7.3326
+142.8556979,-225,-7.0235
+142.8556979,-210.9375,-6.6975
+142.8556979,-196.875,-6.3548
+142.8556979,-182.8125,-5.9952
+142.8556979,-168.75,-5.6189
+142.8556979,-154.6875,-5.2257
+142.8556979,-140.625,-4.8157
+142.8556979,-126.5625,-4.3889
+142.8556979,-112.5,-3.9453
+142.8556979,-98.4375,-3.4849
+142.8556979,-84.375,-3.0076
+142.8556979,-70.3125,-2.5136
+142.8556979,-56.25,-2.0027
+142.8556979,-42.1875,-1.475
+142.8556979,-28.125,-0.93057
+142.8556979,-14.0625,-0.36928
+142.8556979,0,0.23641
+142.8556979,14.0625,0.91917
+142.8556979,28.125,1.6191
+142.8556979,42.1875,2.3361
+142.8556979,56.25,3.0704
+142.8556979,70.3125,3.8217
+142.8556979,84.375,4.5902
+142.8556979,98.4375,5.3759
+142.8556979,112.5,6.1787
+142.8556979,126.5625,6.9987
+142.8556979,140.625,7.8358
+142.8556979,154.6875,8.6901
+142.8556979,168.75,9.5615
+142.8556979,182.8125,10.45
+142.8556979,196.875,11.356
+142.8556979,210.9375,12.279
+142.8556979,225,13.219
+142.8556979,239.0625,14.176
+142.8556979,253.125,15.15
+142.8556979,267.1875,16.142
+142.8556979,281.25,17.15
+142.8556979,295.3125,18.176
+142.8556979,309.375,19.219
+142.8556979,323.4375,20.279
+142.8556979,337.5,21.356
+142.8556979,351.5625,22.451
+142.8556979,365.625,23.562
+142.8556979,379.6875,24.691
+142.8556979,393.75,25.837
+142.8556979,407.8125,27
+142.8556979,421.875,28.18
+142.8556979,435.9375,29.377
+142.8556979,450,30.592
+171.4292311,-450,-13.872
+171.4292311,-435.9375,-13.691
+171.4292311,-421.875,-13.493
+171.4292311,-407.8125,-13.279
+171.4292311,-393.75,-13.048
+171.4292311,-379.6875,-12.8
+171.4292311,-365.625,-12.535
+171.4292311,-351.5625,-12.253
+171.4292311,-337.5,-11.955
+171.4292311,-323.4375,-11.639
+171.4292311,-309.375,-11.307
+171.4292311,-295.3125,-10.958
+171.4292311,-281.25,-10.592
+171.4292311,-267.1875,-10.21
+171.4292311,-253.125,-9.8105
+171.4292311,-239.0625,-9.3943
+171.4292311,-225,-8.9613
+171.4292311,-210.9375,-8.5115
+171.4292311,-196.875,-8.0448
+171.4292311,-182.8125,-7.5614
+171.4292311,-168.75,-7.0612
+171.4292311,-154.6875,-6.5441
+171.4292311,-140.625,-6.0103
+171.4292311,-126.5625,-5.4596
+171.4292311,-112.5,-4.8921
+171.4292311,-98.4375,-4.3078
+171.4292311,-84.375,-3.7067
+171.4292311,-70.3125,-3.0888
+171.4292311,-56.25,-2.454
+171.4292311,-42.1875,-1.8025
+171.4292311,-28.125,-1.1341
+171.4292311,-14.0625,-0.44896
+171.4292311,0,0.28205
+171.4292311,14.0625,1.0912
+171.4292311,28.125,1.9175
+171.4292311,42.1875,2.7609
+171.4292311,56.25,3.6215
+171.4292311,70.3125,4.4992
+171.4292311,84.375,5.3941
+171.4292311,98.4375,6.3062
+171.4292311,112.5,7.2354
+171.4292311,126.5625,8.1817
+171.4292311,140.625,9.1452
+171.4292311,154.6875,10.126
+171.4292311,168.75,11.124
+171.4292311,182.8125,12.139
+171.4292311,196.875,13.171
+171.4292311,210.9375,14.22
+171.4292311,225,15.286
+171.4292311,239.0625,16.37
+171.4292311,253.125,17.471
+171.4292311,267.1875,18.588
+171.4292311,281.25,19.723
+171.4292311,295.3125,20.876
+171.4292311,309.375,22.045
+171.4292311,323.4375,23.231
+171.4292311,337.5,24.435
+171.4292311,351.5625,25.656
+171.4292311,365.625,26.894
+171.4292311,379.6875,28.149
+171.4292311,393.75,29.421
+171.4292311,407.8125,30.71
+171.4292311,421.875,32.017
+171.4292311,435.9375,33.34
+171.4292311,450,34.681
+200.0027643,-450,-17.79
+200.0027643,-435.9375,-17.485
+200.0027643,-421.875,-17.164
+200.0027643,-407.8125,-16.825
+200.0027643,-393.75,-16.47
+200.0027643,-379.6875,-16.098
+200.0027643,-365.625,-15.709
+200.0027643,-351.5625,-15.304
+200.0027643,-337.5,-14.881
+200.0027643,-323.4375,-14.442
+200.0027643,-309.375,-13.986
+200.0027643,-295.3125,-13.513
+200.0027643,-281.25,-13.024
+200.0027643,-267.1875,-12.517
+200.0027643,-253.125,-11.994
+200.0027643,-239.0625,-11.454
+200.0027643,-225,-10.897
+200.0027643,-210.9375,-10.324
+200.0027643,-196.875,-9.7331
+200.0027643,-182.8125,-9.1258
+200.0027643,-168.75,-8.5016
+200.0027643,-154.6875,-7.8607
+200.0027643,-140.625,-7.203
+200.0027643,-126.5625,-6.5284
+200.0027643,-112.5,-5.8371
+200.0027643,-98.4375,-5.1289
+200.0027643,-84.375,-4.4039
+200.0027643,-70.3125,-3.6621
+200.0027643,-56.25,-2.9035
+200.0027643,-42.1875,-2.1281
+200.0027643,-28.125,-1.3359
+200.0027643,-14.0625,-0.52683
+200.0027643,0,0.32954
+200.0027643,14.0625,1.2651
+200.0027643,28.125,2.2177
+200.0027643,42.1875,3.1875
+200.0027643,56.25,4.1745
+200.0027643,70.3125,5.1786
+200.0027643,84.375,6.1999
+200.0027643,98.4375,7.2383
+200.0027643,112.5,8.2939
+200.0027643,126.5625,9.3666
+200.0027643,140.625,10.456
+200.0027643,154.6875,11.563
+200.0027643,168.75,12.688
+200.0027643,182.8125,13.829
+200.0027643,196.875,14.987
+200.0027643,210.9375,16.163
+200.0027643,225,17.356
+200.0027643,239.0625,18.566
+200.0027643,253.125,19.793
+200.0027643,267.1875,21.037
+200.0027643,281.25,22.298
+200.0027643,295.3125,23.577
+200.0027643,309.375,24.873
+200.0027643,323.4375,26.185
+200.0027643,337.5,27.515
+200.0027643,351.5625,28.863
+200.0027643,365.625,30.227
+200.0027643,379.6875,31.608
+200.0027643,393.75,33.007
+200.0027643,407.8125,34.423
+200.0027643,421.875,35.856
+200.0027643,435.9375,37.306
+200.0027643,450,38.773
+228.5703135,-450,-21.706
+228.5703135,-435.9375,-21.277
+228.5703135,-421.875,-20.832
+228.5703135,-407.8125,-20.37
+228.5703135,-393.75,-19.891
+228.5703135,-379.6875,-19.395
+228.5703135,-365.625,-18.882
+228.5703135,-351.5625,-18.353
+228.5703135,-337.5,-17.807
+228.5703135,-323.4375,-17.244
+228.5703135,-309.375,-16.664
+228.5703135,-295.3125,-16.067
+228.5703135,-281.25,-15.454
+228.5703135,-267.1875,-14.823
+228.5703135,-253.125,-14.176
+228.5703135,-239.0625,-13.512
+228.5703135,-225,-12.831
+228.5703135,-210.9375,-12.134
+228.5703135,-196.875,-11.419
+228.5703135,-182.8125,-10.688
+228.5703135,-168.75,-9.9403
+228.5703135,-154.6875,-9.1755
+228.5703135,-140.625,-8.3939
+228.5703135,-126.5625,-7.5955
+228.5703135,-112.5,-6.7802
+228.5703135,-98.4375,-5.9482
+228.5703135,-84.375,-5.0993
+228.5703135,-70.3125,-4.2337
+228.5703135,-56.25,-3.3512
+228.5703135,-42.1875,-2.4519
+228.5703135,-28.125,-1.5358
+228.5703135,-14.0625,-0.60288
+228.5703135,0,0.37889
+228.5703135,14.0625,1.4408
+228.5703135,28.125,2.5198
+228.5703135,42.1875,3.616
+228.5703135,56.25,4.7293
+228.5703135,70.3125,5.8598
+228.5703135,84.375,7.0075
+228.5703135,98.4375,8.1723
+228.5703135,112.5,9.3542
+228.5703135,126.5625,10.553
+228.5703135,140.625,11.77
+228.5703135,154.6875,13.003
+228.5703135,168.75,14.254
+228.5703135,182.8125,15.521
+228.5703135,196.875,16.806
+228.5703135,210.9375,18.108
+228.5703135,225,19.427
+228.5703135,239.0625,20.764
+228.5703135,253.125,22.117
+228.5703135,267.1875,23.488
+228.5703135,281.25,24.875
+228.5703135,295.3125,26.28
+228.5703135,309.375,27.702
+228.5703135,323.4375,29.141
+228.5703135,337.5,30.598
+228.5703135,351.5625,32.071
+228.5703135,365.625,33.562
+228.5703135,379.6875,35.07
+228.5703135,393.75,36.595
+228.5703135,407.8125,38.137
+228.5703135,421.875,39.696
+228.5703135,435.9375,41.273
+228.5703135,450,42.866
+257.1438467,-450,-25.62
+257.1438467,-435.9375,-25.068
+257.1438467,-421.875,-24.499
+257.1438467,-407.8125,-23.912
+257.1438467,-393.75,-23.31
+257.1438467,-379.6875,-22.69
+257.1438467,-365.625,-22.053
+257.1438467,-351.5625,-21.4
+257.1438467,-337.5,-20.73
+257.1438467,-323.4375,-20.043
+257.1438467,-309.375,-19.339
+257.1438467,-295.3125,-18.619
+257.1438467,-281.25,-17.881
+257.1438467,-267.1875,-17.127
+257.1438467,-253.125,-16.356
+257.1438467,-239.0625,-15.568
+257.1438467,-225,-14.764
+257.1438467,-210.9375,-13.942
+257.1438467,-196.875,-13.104
+257.1438467,-182.8125,-12.249
+257.1438467,-168.75,-11.377
+257.1438467,-154.6875,-10.488
+257.1438467,-140.625,-9.583
+257.1438467,-126.5625,-8.6607
+257.1438467,-112.5,-7.7216
+257.1438467,-98.4375,-6.7657
+257.1438467,-84.375,-5.7929
+257.1438467,-70.3125,-4.8034
+257.1438467,-56.25,-3.797
+257.1438467,-42.1875,-2.7739
+257.1438467,-28.125,-1.7339
+257.1438467,-14.0625,-0.67711
+257.1438467,0,0.4301
+257.1438467,14.0625,1.6184
+257.1438467,28.125,2.8238
+257.1438467,42.1875,4.0463
+257.1438467,56.25,5.2861
+257.1438467,70.3125,6.5429
+257.1438467,84.375,7.8169
+257.1438467,98.4375,9.1081
+257.1438467,112.5,10.416
+257.1438467,126.5625,11.742
+257.1438467,140.625,13.085
+257.1438467,154.6875,14.444
+257.1438467,168.75,15.821
+257.1438467,182.8125,17.215
+257.1438467,196.875,18.627
+257.1438467,210.9375,20.055
+257.1438467,225,21.5
+257.1438467,239.0625,22.963
+257.1438467,253.125,24.443
+257.1438467,267.1875,25.94
+257.1438467,281.25,27.454
+257.1438467,295.3125,28.985
+257.1438467,309.375,30.534
+257.1438467,323.4375,32.099
+257.1438467,337.5,33.682
+257.1438467,351.5625,35.282
+257.1438467,365.625,36.899
+257.1438467,379.6875,38.533
+257.1438467,393.75,40.185
+257.1438467,407.8125,41.853
+257.1438467,421.875,43.539
+257.1438467,435.9375,45.241
+257.1438467,450,46.961
+285.7113959,-450,-29.533
+285.7113959,-435.9375,-28.856
+285.7113959,-421.875,-28.163
+285.7113959,-407.8125,-27.453
+285.7113959,-393.75,-26.727
+285.7113959,-379.6875,-25.983
+285.7113959,-365.625,-25.223
+285.7113959,-351.5625,-24.445
+285.7113959,-337.5,-23.651
+285.7113959,-323.4375,-22.841
+285.7113959,-309.375,-22.013
+285.7113959,-295.3125,-21.169
+285.7113959,-281.25,-20.307
+285.7113959,-267.1875,-19.429
+285.7113959,-253.125,-18.534
+285.7113959,-239.0625,-17.623
+285.7113959,-225,-16.694
+285.7113959,-210.9375,-15.749
+285.7113959,-196.875,-14.787
+285.7113959,-182.8125,-13.808
+285.7113959,-168.75,-12.812
+285.7113959,-154.6875,-11.8
+285.7113959,-140.625,-10.77
+285.7113959,-126.5625,-9.7241
+285.7113959,-112.5,-8.6611
+285.7113959,-98.4375,-7.5813
+285.7113959,-84.375,-6.4847
+285.7113959,-70.3125,-5.3713
+285.7113959,-56.25,-4.2411
+285.7113959,-42.1875,-3.094
+285.7113959,-28.125,-1.9302
+285.7113959,-14.0625,-0.74951
+285.7113959,0,0.48317
+285.7113959,14.0625,1.7978
+285.7113959,28.125,3.1296
+285.7113959,42.1875,4.4785
+285.7113959,56.25,5.8446
+285.7113959,70.3125,7.2279
+285.7113959,84.375,8.6283
+285.7113959,98.4375,10.046
+285.7113959,112.5,11.481
+285.7113959,126.5625,12.932
+285.7113959,140.625,14.401
+285.7113959,154.6875,15.888
+285.7113959,168.75,17.391
+285.7113959,182.8125,18.911
+285.7113959,196.875,20.449
+285.7113959,210.9375,22.004
+285.7113959,225,23.576
+285.7113959,239.0625,25.165
+285.7113959,253.125,26.771
+285.7113959,267.1875,28.394
+285.7113959,281.25,30.035
+285.7113959,295.3125,31.692
+285.7113959,309.375,33.367
+285.7113959,323.4375,35.059
+285.7113959,337.5,36.768
+285.7113959,351.5625,38.494
+285.7113959,365.625,40.238
+285.7113959,379.6875,41.998
+285.7113959,393.75,43.776
+285.7113959,407.8125,45.571
+285.7113959,421.875,47.383
+285.7113959,435.9375,49.212
+285.7113959,450,51.058
+314.2849291,-450,-33.443
+314.2849291,-435.9375,-32.643
+314.2849291,-421.875,-31.826
+314.2849291,-407.8125,-30.992
+314.2849291,-393.75,-30.142
+314.2849291,-379.6875,-29.274
+314.2849291,-365.625,-28.39
+314.2849291,-351.5625,-27.489
+314.2849291,-337.5,-26.571
+314.2849291,-323.4375,-25.636
+314.2849291,-309.375,-24.685
+314.2849291,-295.3125,-23.717
+314.2849291,-281.25,-22.732
+314.2849291,-267.1875,-21.73
+314.2849291,-253.125,-20.711
+314.2849291,-239.0625,-19.675
+314.2849291,-225,-18.623
+314.2849291,-210.9375,-17.554
+314.2849291,-196.875,-16.468
+314.2849291,-182.8125,-15.365
+314.2849291,-168.75,-14.245
+314.2849291,-154.6875,-13.109
+314.2849291,-140.625,-11.956
+314.2849291,-126.5625,-10.786
+314.2849291,-112.5,-9.5988
+314.2849291,-98.4375,-8.3951
+314.2849291,-84.375,-7.1747
+314.2849291,-70.3125,-5.9374
+314.2849291,-56.25,-4.6833
+314.2849291,-42.1875,-3.4124
+314.2849291,-28.125,-2.1246
+314.2849291,-14.0625,-0.82009
+314.2849291,0,0.53809
+314.2849291,14.0625,1.9791
+314.2849291,28.125,3.4373
+314.2849291,42.1875,4.9126
+314.2849291,56.25,6.4051
+314.2849291,70.3125,7.9147
+314.2849291,84.375,9.4414
+314.2849291,98.4375,10.985
+314.2849291,112.5,12.546
+314.2849291,126.5625,14.125
+314.2849291,140.625,15.72
+314.2849291,154.6875,17.333
+314.2849291,168.75,18.962
+314.2849291,182.8125,20.609
+314.2849291,196.875,22.273
+314.2849291,210.9375,23.954
+314.2849291,225,25.652
+314.2849291,239.0625,27.368
+314.2849291,253.125,29.1
+314.2849291,267.1875,30.85
+314.2849291,281.25,32.617
+314.2849291,295.3125,34.401
+314.2849291,309.375,36.202
+314.2849291,323.4375,38.021
+314.2849291,337.5,39.856
+314.2849291,351.5625,41.709
+314.2849291,365.625,43.579
+314.2849291,379.6875,45.465
+314.2849291,393.75,47.37
+314.2849291,407.8125,49.291
+314.2849291,421.875,51.229
+314.2849291,435.9375,53.185
+314.2849291,450,55.157
+342.8584622,-450,-37.352
+342.8584622,-435.9375,-36.428
+342.8584622,-421.875,-35.487
+342.8584622,-407.8125,-34.53
+342.8584622,-393.75,-33.555
+342.8584622,-379.6875,-32.564
+342.8584622,-365.625,-31.556
+342.8584622,-351.5625,-30.531
+342.8584622,-337.5,-29.489
+342.8584622,-323.4375,-28.43
+342.8584622,-309.375,-27.355
+342.8584622,-295.3125,-26.263
+342.8584622,-281.25,-25.154
+342.8584622,-267.1875,-24.028
+342.8584622,-253.125,-22.885
+342.8584622,-239.0625,-21.726
+342.8584622,-225,-20.55
+342.8584622,-210.9375,-19.357
+342.8584622,-196.875,-18.147
+342.8584622,-182.8125,-16.92
+342.8584622,-168.75,-15.677
+342.8584622,-154.6875,-14.416
+342.8584622,-140.625,-13.139
+342.8584622,-126.5625,-11.845
+342.8584622,-112.5,-10.535
+342.8584622,-98.4375,-9.2071
+342.8584622,-84.375,-7.8628
+342.8584622,-70.3125,-6.5016
+342.8584622,-56.25,-5.1236
+342.8584622,-42.1875,-3.7289
+342.8584622,-28.125,-2.3173
+342.8584622,-14.0625,-0.88886
+342.8584622,0,0.59487
+342.8584622,14.0625,2.1623
+342.8584622,28.125,3.7468
+342.8584622,42.1875,5.3485
+342.8584622,56.25,6.9673
+342.8584622,70.3125,8.6033
+342.8584622,84.375,10.256
+342.8584622,98.4375,11.927
+342.8584622,112.5,13.614
+342.8584622,126.5625,15.319
+342.8584622,140.625,17.041
+342.8584622,154.6875,18.779
+342.8584622,168.75,20.536
+342.8584622,182.8125,22.309
+342.8584622,196.875,24.099
+342.8584622,210.9375,25.907
+342.8584622,225,27.731
+342.8584622,239.0625,29.573
+342.8584622,253.125,31.432
+342.8584622,267.1875,33.308
+342.8584622,281.25,35.201
+342.8584622,295.3125,37.112
+342.8584622,309.375,39.039
+342.8584622,323.4375,40.984
+342.8584622,337.5,42.946
+342.8584622,351.5625,44.925
+342.8584622,365.625,46.921
+342.8584622,379.6875,48.934
+342.8584622,393.75,50.965
+342.8584622,407.8125,53.012
+342.8584622,421.875,55.077
+342.8584622,435.9375,57.159
+342.8584622,450,59.258
+571.4287758,-450,-68.557
+571.4287758,-435.9375,-66.642
+571.4287758,-421.875,-64.711
+571.4287758,-407.8125,-62.762
+571.4287758,-393.75,-60.796
+571.4287758,-379.6875,-58.814
+571.4287758,-365.625,-56.815
+571.4287758,-351.5625,-54.799
+571.4287758,-337.5,-52.766
+571.4287758,-323.4375,-50.717
+571.4287758,-309.375,-48.65
+571.4287758,-295.3125,-46.567
+571.4287758,-281.25,-44.467
+571.4287758,-267.1875,-42.35
+571.4287758,-253.125,-40.217
+571.4287758,-239.0625,-38.066
+571.4287758,-225,-35.899
+571.4287758,-210.9375,-33.715
+571.4287758,-196.875,-31.514
+571.4287758,-182.8125,-29.297
+571.4287758,-168.75,-27.062
+571.4287758,-154.6875,-24.811
+571.4287758,-140.625,-22.543
+571.4287758,-126.5625,-20.258
+571.4287758,-112.5,-17.956
+571.4287758,-98.4375,-15.638
+571.4287758,-84.375,-13.302
+571.4287758,-70.3125,-10.95
+571.4287758,-56.25,-8.5812
+571.4287758,-42.1875,-6.1954
+571.4287758,-28.125,-3.7928
+571.4287758,-14.0625,-1.3734
+571.4287758,0,1.116
+571.4287758,14.0625,3.6944
+571.4287758,28.125,6.29
+571.4287758,42.1875,8.9027
+571.4287758,56.25,11.533
+571.4287758,70.3125,14.18
+571.4287758,84.375,16.844
+571.4287758,98.4375,19.525
+571.4287758,112.5,22.223
+571.4287758,126.5625,24.939
+571.4287758,140.625,27.672
+571.4287758,154.6875,30.422
+571.4287758,168.75,33.189
+571.4287758,182.8125,35.973
+571.4287758,196.875,38.774
+571.4287758,210.9375,41.593
+571.4287758,225,44.429
+571.4287758,239.0625,47.281
+571.4287758,253.125,50.151
+571.4287758,267.1875,53.038
+571.4287758,281.25,55.943
+571.4287758,295.3125,58.864
+571.4287758,309.375,61.803
+571.4287758,323.4375,64.758
+571.4287758,337.5,67.731
+571.4287758,351.5625,70.721
+571.4287758,365.625,73.728
+571.4287758,379.6875,76.753
+571.4287758,393.75,79.794
+571.4287758,407.8125,82.853
+571.4287758,421.875,85.929
+571.4287758,435.9375,89.022
+571.4287758,450,92.132
+714.3084096,-450,-88.002
+714.3084096,-435.9375,-85.467
+714.3084096,-421.875,-82.916
+714.3084096,-407.8125,-80.348
+714.3084096,-393.75,-77.763
+714.3084096,-379.6875,-75.161
+714.3084096,-365.625,-72.543
+714.3084096,-351.5625,-69.908
+714.3084096,-337.5,-67.255
+714.3084096,-323.4375,-64.586
+714.3084096,-309.375,-61.901
+714.3084096,-295.3125,-59.198
+714.3084096,-281.25,-56.479
+714.3084096,-267.1875,-53.743
+714.3084096,-253.125,-50.99
+714.3084096,-239.0625,-48.22
+714.3084096,-225,-45.433
+714.3084096,-210.9375,-42.63
+714.3084096,-196.875,-39.81
+714.3084096,-182.8125,-36.973
+714.3084096,-168.75,-34.119
+714.3084096,-154.6875,-31.248
+714.3084096,-140.625,-28.361
+714.3084096,-126.5625,-25.456
+714.3084096,-112.5,-22.535
+714.3084096,-98.4375,-19.597
+714.3084096,-84.375,-16.643
+714.3084096,-70.3125,-13.671
+714.3084096,-56.25,-10.683
+714.3084096,-42.1875,-7.6778
+714.3084096,-28.125,-4.6558
+714.3084096,-14.0625,-1.6171
+714.3084096,0,1.5021
+714.3084096,14.0625,4.7124
+714.3084096,28.125,7.9398
+714.3084096,42.1875,11.184
+714.3084096,56.25,14.446
+714.3084096,70.3125,17.725
+714.3084096,84.375,21.021
+714.3084096,98.4375,24.334
+714.3084096,112.5,27.665
+714.3084096,126.5625,31.012
+714.3084096,140.625,34.377
+714.3084096,154.6875,37.758
+714.3084096,168.75,41.157
+714.3084096,182.8125,44.574
+714.3084096,196.875,48.007
+714.3084096,210.9375,51.457
+714.3084096,225,54.925
+714.3084096,239.0625,58.409
+714.3084096,253.125,61.911
+714.3084096,267.1875,65.43
+714.3084096,281.25,68.966
+714.3084096,295.3125,72.52
+714.3084096,309.375,76.09
+714.3084096,323.4375,79.678
+714.3084096,337.5,83.282
+714.3084096,351.5625,86.904
+714.3084096,365.625,90.543
+714.3084096,379.6875,94.2
+714.3084096,393.75,97.873
+714.3084096,407.8125,101.56
+714.3084096,421.875,105.27
+714.3084096,435.9375,109
+714.3084096,450,112.74
+857.1461556,-450,-107.4
+857.1461556,-435.9375,-104.25
+857.1461556,-421.875,-101.08
+857.1461556,-407.8125,-97.888
+857.1461556,-393.75,-94.684
+857.1461556,-379.6875,-91.463
+857.1461556,-365.625,-88.225
+857.1461556,-351.5625,-84.97
+857.1461556,-337.5,-81.699
+857.1461556,-323.4375,-78.411
+857.1461556,-309.375,-75.106
+857.1461556,-295.3125,-71.784
+857.1461556,-281.25,-68.445
+857.1461556,-267.1875,-65.089
+857.1461556,-253.125,-61.717
+857.1461556,-239.0625,-58.328
+857.1461556,-225,-54.922
+857.1461556,-210.9375,-51.499
+857.1461556,-196.875,-48.06
+857.1461556,-182.8125,-44.603
+857.1461556,-168.75,-41.13
+857.1461556,-154.6875,-37.64
+857.1461556,-140.625,-34.133
+857.1461556,-126.5625,-30.61
+857.1461556,-112.5,-27.069
+857.1461556,-98.4375,-23.512
+857.1461556,-84.375,-19.938
+857.1461556,-70.3125,-16.347
+857.1461556,-56.25,-12.739
+857.1461556,-42.1875,-9.1147
+857.1461556,-28.125,-5.4734
+857.1461556,-14.0625,-1.8152
+857.1461556,0,1.9346
+857.1461556,14.0625,5.7768
+857.1461556,28.125,9.6361
+857.1461556,42.1875,13.513
+857.1461556,56.25,17.406
+857.1461556,70.3125,21.317
+857.1461556,84.375,25.245
+857.1461556,98.4375,29.19
+857.1461556,112.5,33.152
+857.1461556,126.5625,37.131
+857.1461556,140.625,41.128
+857.1461556,154.6875,45.142
+857.1461556,168.75,49.173
+857.1461556,182.8125,53.22
+857.1461556,196.875,57.286
+857.1461556,210.9375,61.368
+857.1461556,225,65.467
+857.1461556,239.0625,69.584
+857.1461556,253.125,73.718
+857.1461556,267.1875,77.868
+857.1461556,281.25,82.037
+857.1461556,295.3125,86.222
+857.1461556,309.375,90.424
+857.1461556,323.4375,94.644
+857.1461556,337.5,98.88
+857.1461556,351.5625,103.13
+857.1461556,365.625,107.4
+857.1461556,379.6875,111.69
+857.1461556,393.75,116
+857.1461556,407.8125,120.32
+857.1461556,421.875,124.66
+857.1461556,435.9375,129.02
+857.1461556,450,133.39
+999.9839016,-450,-126.75
+999.9839016,-435.9375,-122.98
+999.9839016,-421.875,-119.19
+999.9839016,-407.8125,-115.38
+999.9839016,-393.75,-111.56
+999.9839016,-379.6875,-107.72
+999.9839016,-365.625,-103.86
+999.9839016,-351.5625,-99.988
+999.9839016,-337.5,-96.097
+999.9839016,-323.4375,-92.189
+999.9839016,-309.375,-88.265
+999.9839016,-295.3125,-84.324
+999.9839016,-281.25,-80.366
+999.9839016,-267.1875,-76.391
+999.9839016,-253.125,-72.399
+999.9839016,-239.0625,-68.391
+999.9839016,-225,-64.365
+999.9839016,-210.9375,-60.323
+999.9839016,-196.875,-56.264
+999.9839016,-182.8125,-52.188
+999.9839016,-168.75,-48.096
+999.9839016,-154.6875,-43.986
+999.9839016,-140.625,-39.86
+999.9839016,-126.5625,-35.717
+999.9839016,-112.5,-31.557
+999.9839016,-98.4375,-27.381
+999.9839016,-84.375,-23.187
+999.9839016,-70.3125,-18.977
+999.9839016,-56.25,-14.75
+999.9839016,-42.1875,-10.506
+999.9839016,-28.125,-6.2453
+999.9839016,-14.0625,-1.9678
+999.9839016,0,2.4136
+999.9839016,14.0625,6.8876
+999.9839016,28.125,11.379
+999.9839016,42.1875,15.887
+999.9839016,56.25,20.413
+999.9839016,70.3125,24.955
+999.9839016,84.375,29.515
+999.9839016,98.4375,34.092
+999.9839016,112.5,38.686
+999.9839016,126.5625,43.297
+999.9839016,140.625,47.926
+999.9839016,154.6875,52.571
+999.9839016,168.75,57.234
+999.9839016,182.8125,61.914
+999.9839016,196.875,66.611
+999.9839016,210.9375,71.325
+999.9839016,225,76.056
+999.9839016,239.0625,80.805
+999.9839016,253.125,85.57
+999.9839016,267.1875,90.353
+999.9839016,281.25,95.153
+999.9839016,295.3125,99.97
+999.9839016,309.375,104.8
+999.9839016,323.4375,109.66
+999.9839016,337.5,114.52
+999.9839016,351.5625,119.41
+999.9839016,365.625,124.31
+999.9839016,379.6875,129.23
+999.9839016,393.75,134.17
+999.9839016,407.8125,139.12
+999.9839016,421.875,144.1
+999.9839016,435.9375,149.08
+999.9839016,450,154.09
+1142.881487,-450,-146.06
+1142.881487,-435.9375,-141.67
+1142.881487,-421.875,-137.26
+1142.881487,-407.8125,-132.83
+1142.881487,-393.75,-128.39
+1142.881487,-379.6875,-123.93
+1142.881487,-365.625,-119.45
+1142.881487,-351.5625,-114.96
+1142.881487,-337.5,-110.45
+1142.881487,-323.4375,-105.92
+1142.881487,-309.375,-101.38
+1142.881487,-295.3125,-96.818
+1142.881487,-281.25,-92.241
+1142.881487,-267.1875,-87.646
+1142.881487,-253.125,-83.035
+1142.881487,-239.0625,-78.407
+1142.881487,-225,-73.763
+1142.881487,-210.9375,-69.101
+1142.881487,-196.875,-64.423
+1142.881487,-182.8125,-59.728
+1142.881487,-168.75,-55.016
+1142.881487,-154.6875,-50.287
+1142.881487,-140.625,-45.542
+1142.881487,-126.5625,-40.779
+1142.881487,-112.5,-36
+1142.881487,-98.4375,-31.204
+1142.881487,-84.375,-26.391
+1142.881487,-70.3125,-21.562
+1142.881487,-56.25,-16.715
+1142.881487,-42.1875,-11.852
+1142.881487,-28.125,-6.9718
+1142.881487,-14.0625,-2.0749
+1142.881487,0,2.939
+1142.881487,14.0625,8.0449
+1142.881487,28.125,13.168
+1142.881487,42.1875,18.308
+1142.881487,56.25,23.466
+1142.881487,70.3125,28.64
+1142.881487,84.375,33.832
+1142.881487,98.4375,39.041
+1142.881487,112.5,44.267
+1142.881487,126.5625,49.51
+1142.881487,140.625,54.77
+1142.881487,154.6875,60.047
+1142.881487,168.75,65.342
+1142.881487,182.8125,70.654
+1142.881487,196.875,75.983
+1142.881487,210.9375,81.329
+1142.881487,225,86.692
+1142.881487,239.0625,92.072
+1142.881487,253.125,97.47
+1142.881487,267.1875,102.88
+1142.881487,281.25,108.32
+1142.881487,295.3125,113.77
+1142.881487,309.375,119.23
+1142.881487,323.4375,124.71
+1142.881487,337.5,130.21
+1142.881487,351.5625,135.73
+1142.881487,365.625,141.27
+1142.881487,379.6875,146.82
+1142.881487,393.75,152.39
+1142.881487,407.8125,157.97
+1142.881487,421.875,163.58
+1142.881487,435.9375,169.2
+1142.881487,450,174.84
+1285.719233,-450,-165.32
+1285.719233,-435.9375,-160.31
+1285.719233,-421.875,-155.28
+1285.719233,-407.8125,-150.24
+1285.719233,-393.75,-145.17
+1285.719233,-379.6875,-140.1
+1285.719233,-365.625,-135
+1285.719233,-351.5625,-129.89
+1285.719233,-337.5,-124.76
+1285.719233,-323.4375,-119.61
+1285.719233,-309.375,-114.45
+1285.719233,-295.3125,-109.27
+1285.719233,-281.25,-104.07
+1285.719233,-267.1875,-98.857
+1285.719233,-253.125,-93.626
+1285.719233,-239.0625,-88.379
+1285.719233,-225,-83.115
+1285.719233,-210.9375,-77.834
+1285.719233,-196.875,-72.536
+1285.719233,-182.8125,-67.222
+1285.719233,-168.75,-61.891
+1285.719233,-154.6875,-56.542
+1285.719233,-140.625,-51.177
+1285.719233,-126.5625,-45.796
+1285.719233,-112.5,-40.397
+1285.719233,-98.4375,-34.982
+1285.719233,-84.375,-29.55
+1285.719233,-70.3125,-24.101
+1285.719233,-56.25,-18.635
+1285.719233,-42.1875,-13.152
+1285.719233,-28.125,-7.6528
+1285.719233,-14.0625,-2.1365
+1285.719233,0,3.5108
+1285.719233,14.0625,9.2486
+1285.719233,28.125,15.004
+1285.719233,42.1875,20.776
+1285.719233,56.25,26.565
+1285.719233,70.3125,32.371
+1285.719233,84.375,38.195
+1285.719233,98.4375,44.036
+1285.719233,112.5,49.893
+1285.719233,126.5625,55.768
+1285.719233,140.625,61.661
+1285.719233,154.6875,67.57
+1285.719233,168.75,73.496
+1285.719233,182.8125,79.44
+1285.719233,196.875,85.401
+1285.719233,210.9375,91.379
+1285.719233,225,97.374
+1285.719233,239.0625,103.39
+1285.719233,253.125,109.42
+1285.719233,267.1875,115.46
+1285.719233,281.25,121.53
+1285.719233,295.3125,127.61
+1285.719233,309.375,133.7
+1285.719233,323.4375,139.82
+1285.719233,337.5,145.95
+1285.719233,351.5625,152.1
+1285.719233,365.625,158.27
+1285.719233,379.6875,164.45
+1285.719233,393.75,170.65
+1285.719233,407.8125,176.87
+1285.719233,421.875,183.11
+1285.719233,435.9375,189.36
+1285.719233,450,195.63
+1428.556979,-450,-184.54
+1428.556979,-435.9375,-178.91
+1428.556979,-421.875,-173.26
+1428.556979,-407.8125,-167.59
+1428.556979,-393.75,-161.91
+1428.556979,-379.6875,-156.21
+1428.556979,-365.625,-150.5
+1428.556979,-351.5625,-144.77
+1428.556979,-337.5,-139.02
+1428.556979,-323.4375,-133.25
+1428.556979,-309.375,-127.47
+1428.556979,-295.3125,-121.67
+1428.556979,-281.25,-115.85
+1428.556979,-267.1875,-110.02
+1428.556979,-253.125,-104.17
+1428.556979,-239.0625,-98.305
+1428.556979,-225,-92.421
+1428.556979,-210.9375,-86.521
+1428.556979,-196.875,-80.604
+1428.556979,-182.8125,-74.67
+1428.556979,-168.75,-68.72
+1428.556979,-154.6875,-62.752
+1428.556979,-140.625,-56.768
+1428.556979,-126.5625,-50.767
+1428.556979,-112.5,-44.749
+1428.556979,-98.4375,-38.714
+1428.556979,-84.375,-32.662
+1428.556979,-70.3125,-26.594
+1428.556979,-56.25,-20.509
+1428.556979,-42.1875,-14.407
+1428.556979,-28.125,-8.2882
+1428.556979,-14.0625,-2.1526
+1428.556979,0,4.1291
+1428.556979,14.0625,10.499
+1428.556979,28.125,16.886
+1428.556979,42.1875,23.29
+1428.556979,56.25,29.711
+1428.556979,70.3125,36.149
+1428.556979,84.375,42.604
+1428.556979,98.4375,49.077
+1428.556979,112.5,55.567
+1428.556979,126.5625,62.074
+1428.556979,140.625,68.598
+1428.556979,154.6875,75.139
+1428.556979,168.75,81.697
+1428.556979,182.8125,88.273
+1428.556979,196.875,94.865
+1428.556979,210.9375,101.48
+1428.556979,225,108.1
+1428.556979,239.0625,114.75
+1428.556979,253.125,121.41
+1428.556979,267.1875,128.09
+1428.556979,281.25,134.78
+1428.556979,295.3125,141.49
+1428.556979,309.375,148.22
+1428.556979,323.4375,154.97
+1428.556979,337.5,161.74
+1428.556979,351.5625,168.52
+1428.556979,365.625,175.31
+1428.556979,379.6875,182.13
+1428.556979,393.75,188.96
+1428.556979,407.8125,195.81
+1428.556979,421.875,202.68
+1428.556979,435.9375,209.56
+1428.556979,450,216.47
+1571.454565,-450,-203.71
+1571.454565,-435.9375,-197.46
+1571.454565,-421.875,-191.19
+1571.454565,-407.8125,-184.91
+1571.454565,-393.75,-178.61
+1571.454565,-379.6875,-172.29
+1571.454565,-365.625,-165.95
+1571.454565,-351.5625,-159.6
+1571.454565,-337.5,-153.23
+1571.454565,-323.4375,-146.85
+1571.454565,-309.375,-140.45
+1571.454565,-295.3125,-134.03
+1571.454565,-281.25,-127.59
+1571.454565,-267.1875,-121.14
+1571.454565,-253.125,-114.67
+1571.454565,-239.0625,-108.19
+1571.454565,-225,-101.68
+1571.454565,-210.9375,-95.163
+1571.454565,-196.875,-88.626
+1571.454565,-182.8125,-82.073
+1571.454565,-168.75,-75.503
+1571.454565,-154.6875,-68.916
+1571.454565,-140.625,-62.313
+1571.454565,-126.5625,-55.692
+1571.454565,-112.5,-49.055
+1571.454565,-98.4375,-42.401
+1571.454565,-84.375,-35.73
+1571.454565,-70.3125,-29.042
+1571.454565,-56.25,-22.338
+1571.454565,-42.1875,-15.616
+1571.454565,-28.125,-8.8781
+1571.454565,-14.0625,-2.1231
+1571.454565,0,4.7938
+1571.454565,14.0625,11.795
+1571.454565,28.125,18.814
+1571.454565,42.1875,25.85
+1571.454565,56.25,32.903
+1571.454565,70.3125,39.973
+1571.454565,84.375,47.06
+1571.454565,98.4375,54.165
+1571.454565,112.5,61.287
+1571.454565,126.5625,68.425
+1571.454565,140.625,75.581
+1571.454565,154.6875,82.754
+1571.454565,168.75,89.945
+1571.454565,182.8125,97.152
+1571.454565,196.875,104.38
+1571.454565,210.9375,111.62
+1571.454565,225,118.88
+1571.454565,239.0625,126.15
+1571.454565,253.125,133.45
+1571.454565,267.1875,140.76
+1571.454565,281.25,148.08
+1571.454565,295.3125,155.43
+1571.454565,309.375,162.79
+1571.454565,323.4375,170.17
+1571.454565,337.5,177.57
+1571.454565,351.5625,184.98
+1571.454565,365.625,192.41
+1571.454565,379.6875,199.86
+1571.454565,393.75,207.32
+1571.454565,407.8125,214.8
+1571.454565,421.875,222.3
+1571.454565,435.9375,229.82
+1571.454565,450,237.35
+1714.292311,-450,-222.84
+1714.292311,-435.9375,-215.97
+1714.292311,-421.875,-209.08
+1714.292311,-407.8125,-202.18
+1714.292311,-393.75,-195.25
+1714.292311,-379.6875,-188.32
+1714.292311,-365.625,-181.36
+1714.292311,-351.5625,-174.39
+1714.292311,-337.5,-167.4
+1714.292311,-323.4375,-160.4
+1714.292311,-309.375,-153.38
+1714.292311,-295.3125,-146.34
+1714.292311,-281.25,-139.29
+1714.292311,-267.1875,-132.21
+1714.292311,-253.125,-125.13
+1714.292311,-239.0625,-118.02
+1714.292311,-225,-110.9
+1714.292311,-210.9375,-103.76
+1714.292311,-196.875,-96.603
+1714.292311,-182.8125,-89.431
+1714.292311,-168.75,-82.241
+1714.292311,-154.6875,-75.035
+1714.292311,-140.625,-67.812
+1714.292311,-126.5625,-60.572
+1714.292311,-112.5,-53.315
+1714.292311,-98.4375,-46.042
+1714.292311,-84.375,-38.752
+1714.292311,-70.3125,-31.445
+1714.292311,-56.25,-24.121
+1714.292311,-42.1875,-16.78
+1714.292311,-28.125,-9.4225
+1714.292311,-14.0625,-2.0481
+1714.292311,0,5.505
+1714.292311,14.0625,13.138
+1714.292311,28.125,20.789
+1714.292311,42.1875,28.457
+1714.292311,56.25,36.142
+1714.292311,70.3125,43.844
+1714.292311,84.375,51.563
+1714.292311,98.4375,59.299
+1714.292311,112.5,67.053
+1714.292311,126.5625,74.823
+1714.292311,140.625,82.611
+1714.292311,154.6875,90.416
+1714.292311,168.75,98.238
+1714.292311,182.8125,106.08
+1714.292311,196.875,113.93
+1714.292311,210.9375,121.81
+1714.292311,225,129.7
+1714.292311,239.0625,137.61
+1714.292311,253.125,145.53
+1714.292311,267.1875,153.47
+1714.292311,281.25,161.43
+1714.292311,295.3125,169.41
+1714.292311,309.375,177.4
+1714.292311,323.4375,185.41
+1714.292311,337.5,193.44
+1714.292311,351.5625,201.49
+1714.292311,365.625,209.55
+1714.292311,379.6875,217.63
+1714.292311,393.75,225.72
+1714.292311,407.8125,233.84
+1714.292311,421.875,241.97
+1714.292311,435.9375,250.12
+1714.292311,450,258.28
+1857.130057,-450,-241.92
+1857.130057,-435.9375,-234.43
+1857.130057,-421.875,-226.92
+1857.130057,-407.8125,-219.4
+1857.130057,-393.75,-211.86
+1857.130057,-379.6875,-204.3
+1857.130057,-365.625,-196.73
+1857.130057,-351.5625,-189.14
+1857.130057,-337.5,-181.53
+1857.130057,-323.4375,-173.91
+1857.130057,-309.375,-166.27
+1857.130057,-295.3125,-158.61
+1857.130057,-281.25,-150.93
+1857.130057,-267.1875,-143.24
+1857.130057,-253.125,-135.53
+1857.130057,-239.0625,-127.81
+1857.130057,-225,-120.07
+1857.130057,-210.9375,-112.31
+1857.130057,-196.875,-104.53
+1857.130057,-182.8125,-96.743
+1857.130057,-168.75,-88.934
+1857.130057,-154.6875,-81.108
+1857.130057,-140.625,-73.266
+1857.130057,-126.5625,-65.407
+1857.130057,-112.5,-57.531
+1857.130057,-98.4375,-49.638
+1857.130057,-84.375,-41.728
+1857.130057,-70.3125,-33.802
+1857.130057,-56.25,-25.858
+1857.130057,-42.1875,-17.898
+1857.130057,-28.125,-9.9213
+1857.130057,-14.0625,-1.9276
+1857.130057,0,6.2626
+1857.130057,14.0625,14.528
+1857.130057,28.125,22.81
+1857.130057,42.1875,31.11
+1857.130057,56.25,39.427
+1857.130057,70.3125,47.761
+1857.130057,84.375,56.112
+1857.130057,98.4375,64.48
+1857.130057,112.5,72.865
+1857.130057,126.5625,81.268
+1857.130057,140.625,89.688
+1857.130057,154.6875,98.125
+1857.130057,168.75,106.58
+1857.130057,182.8125,115.05
+1857.130057,196.875,123.54
+1857.130057,210.9375,132.04
+1857.130057,225,140.57
+1857.130057,239.0625,149.11
+1857.130057,253.125,157.66
+1857.130057,267.1875,166.24
+1857.130057,281.25,174.83
+1857.130057,295.3125,183.44
+1857.130057,309.375,192.06
+1857.130057,323.4375,200.7
+1857.130057,337.5,209.36
+1857.130057,351.5625,218.04
+1857.130057,365.625,226.74
+1857.130057,379.6875,235.45
+1857.130057,393.75,244.17
+1857.130057,407.8125,252.92
+1857.130057,421.875,261.68
+1857.130057,435.9375,270.46
+1857.130057,450,279.26
+2000.027643,-450,-260.95
+2000.027643,-435.9375,-252.84
+2000.027643,-421.875,-244.72
+2000.027643,-407.8125,-236.57
+2000.027643,-393.75,-228.41
+2000.027643,-379.6875,-220.24
+2000.027643,-365.625,-212.05
+2000.027643,-351.5625,-203.84
+2000.027643,-337.5,-195.61
+2000.027643,-323.4375,-187.37
+2000.027643,-309.375,-179.11
+2000.027643,-295.3125,-170.83
+2000.027643,-281.25,-162.54
+2000.027643,-267.1875,-154.22
+2000.027643,-253.125,-145.9
+2000.027643,-239.0625,-137.55
+2000.027643,-225,-129.19
+2000.027643,-210.9375,-120.81
+2000.027643,-196.875,-112.42
+2000.027643,-182.8125,-104.01
+2000.027643,-168.75,-95.581
+2000.027643,-154.6875,-87.136
+2000.027643,-140.625,-78.674
+2000.027643,-126.5625,-70.195
+2000.027643,-112.5,-61.7
+2000.027643,-98.4375,-53.188
+2000.027643,-84.375,-44.659
+2000.027643,-70.3125,-36.113
+2000.027643,-56.25,-27.55
+2000.027643,-42.1875,-18.971
+2000.027643,-28.125,-10.375
+2000.027643,-14.0625,-1.7616
+2000.027643,0,7.0667
+2000.027643,14.0625,15.964
+2000.027643,28.125,24.878
+2000.027643,42.1875,33.81
+2000.027643,56.25,42.758
+2000.027643,70.3125,51.724
+2000.027643,84.375,60.707
+2000.027643,98.4375,69.707
+2000.027643,112.5,78.725
+2000.027643,126.5625,87.759
+2000.027643,140.625,96.811
+2000.027643,154.6875,105.88
+2000.027643,168.75,114.97
+2000.027643,182.8125,124.07
+2000.027643,196.875,133.19
+2000.027643,210.9375,142.33
+2000.027643,225,151.48
+2000.027643,239.0625,160.65
+2000.027643,253.125,169.84
+2000.027643,267.1875,179.05
+2000.027643,281.25,188.27
+2000.027643,295.3125,197.51
+2000.027643,309.375,206.77
+2000.027643,323.4375,216.04
+2000.027643,337.5,225.33
+2000.027643,351.5625,234.64
+2000.027643,365.625,243.97
+2000.027643,379.6875,253.31
+2000.027643,393.75,262.67
+2000.027643,407.8125,272.05
+2000.027643,421.875,281.44
+2000.027643,435.9375,290.86
+2000.027643,450,300.28
+2142.865389,-450,-279.94
+2142.865389,-435.9375,-271.21
+2142.865389,-421.875,-262.47
+2142.865389,-407.8125,-253.7
+2142.865389,-393.75,-244.93
+2142.865389,-379.6875,-236.13
+2142.865389,-365.625,-227.32
+2142.865389,-351.5625,-218.49
+2142.865389,-337.5,-209.64
+2142.865389,-323.4375,-200.78
+2142.865389,-309.375,-191.9
+2142.865389,-295.3125,-183
+2142.865389,-281.25,-174.09
+2142.865389,-267.1875,-165.16
+2142.865389,-253.125,-156.22
+2142.865389,-239.0625,-147.25
+2142.865389,-225,-138.27
+2142.865389,-210.9375,-129.27
+2142.865389,-196.875,-120.26
+2142.865389,-182.8125,-111.23
+2142.865389,-168.75,-102.18
+2142.865389,-154.6875,-93.118
+2142.865389,-140.625,-84.037
+2142.865389,-126.5625,-74.939
+2142.865389,-112.5,-65.824
+2142.865389,-98.4375,-56.693
+2142.865389,-84.375,-47.544
+2142.865389,-70.3125,-38.379
+2142.865389,-56.25,-29.197
+2142.865389,-42.1875,-19.998
+2142.865389,-28.125,-10.782
+2142.865389,-14.0625,-1.55
+2142.865389,0,7.9172
+2142.865389,14.0625,17.446
+2142.865389,28.125,26.993
+2142.865389,42.1875,36.556
+2142.865389,56.25,46.136
+2142.865389,70.3125,55.734
+2142.865389,84.375,65.349
+2142.865389,98.4375,74.981
+2142.865389,112.5,84.63
+2142.865389,126.5625,94.296
+2142.865389,140.625,103.98
+2142.865389,154.6875,113.68
+2142.865389,168.75,123.4
+2142.865389,182.8125,133.13
+2142.865389,196.875,142.89
+2142.865389,210.9375,152.65
+2142.865389,225,162.44
+2142.865389,239.0625,172.24
+2142.865389,253.125,182.06
+2142.865389,267.1875,191.9
+2142.865389,281.25,201.76
+2142.865389,295.3125,211.63
+2142.865389,309.375,221.52
+2142.865389,323.4375,231.43
+2142.865389,337.5,241.35
+2142.865389,351.5625,251.29
+2142.865389,365.625,261.25
+2142.865389,379.6875,271.22
+2142.865389,393.75,281.21
+2142.865389,407.8125,291.22
+2142.865389,421.875,301.25
+2142.865389,435.9375,311.29
+2142.865389,450,321.35
+2285.703135,-450,-298.88
+2285.703135,-435.9375,-289.53
+2285.703135,-421.875,-280.17
+2285.703135,-407.8125,-270.79
+2285.703135,-393.75,-261.39
+2285.703135,-379.6875,-251.98
+2285.703135,-365.625,-242.54
+2285.703135,-351.5625,-233.1
+2285.703135,-337.5,-223.63
+2285.703135,-323.4375,-214.15
+2285.703135,-309.375,-204.65
+2285.703135,-295.3125,-195.14
+2285.703135,-281.25,-185.6
+2285.703135,-267.1875,-176.05
+2285.703135,-253.125,-166.49
+2285.703135,-239.0625,-156.9
+2285.703135,-225,-147.3
+2285.703135,-210.9375,-137.69
+2285.703135,-196.875,-128.06
+2285.703135,-182.8125,-118.41
+2285.703135,-168.75,-108.74
+2285.703135,-154.6875,-99.055
+2285.703135,-140.625,-89.354
+2285.703135,-126.5625,-79.637
+2285.703135,-112.5,-69.903
+2285.703135,-98.4375,-60.152
+2285.703135,-84.375,-50.384
+2285.703135,-70.3125,-40.599
+2285.703135,-56.25,-30.798
+2285.703135,-42.1875,-20.98
+2285.703135,-28.125,-11.145
+2285.703135,-14.0625,-1.2929
+2285.703135,0,8.8141
+2285.703135,14.0625,18.975
+2285.703135,28.125,29.153
+2285.703135,42.1875,39.348
+2285.703135,56.25,49.561
+2285.703135,70.3125,59.79
+2285.703135,84.375,70.037
+2285.703135,98.4375,80.301
+2285.703135,112.5,90.582
+2285.703135,126.5625,100.88
+2285.703135,140.625,111.2
+2285.703135,154.6875,121.53
+2285.703135,168.75,131.88
+2285.703135,182.8125,142.24
+2285.703135,196.875,152.63
+2285.703135,210.9375,163.03
+2285.703135,225,173.45
+2285.703135,239.0625,183.88
+2285.703135,253.125,194.34
+2285.703135,267.1875,204.81
+2285.703135,281.25,215.29
+2285.703135,295.3125,225.8
+2285.703135,309.375,236.32
+2285.703135,323.4375,246.86
+2285.703135,337.5,257.41
+2285.703135,351.5625,267.98
+2285.703135,365.625,278.57
+2285.703135,379.6875,289.18
+2285.703135,393.75,299.8
+2285.703135,407.8125,310.45
+2285.703135,421.875,321.1
+2285.703135,435.9375,331.78
+2285.703135,450,342.47
+2428.600721,-450,-317.78
+2428.600721,-435.9375,-307.81
+2428.600721,-421.875,-297.83
+2428.600721,-407.8125,-287.83
+2428.600721,-393.75,-277.81
+2428.600721,-379.6875,-267.78
+2428.600721,-365.625,-257.73
+2428.600721,-351.5625,-247.66
+2428.600721,-337.5,-237.57
+2428.600721,-323.4375,-227.47
+2428.600721,-309.375,-217.35
+2428.600721,-295.3125,-207.22
+2428.600721,-281.25,-197.07
+2428.600721,-267.1875,-186.9
+2428.600721,-253.125,-176.71
+2428.600721,-239.0625,-166.51
+2428.600721,-225,-156.29
+2428.600721,-210.9375,-146.06
+2428.600721,-196.875,-135.8
+2428.600721,-182.8125,-125.53
+2428.600721,-168.75,-115.25
+2428.600721,-154.6875,-104.95
+2428.600721,-140.625,-94.626
+2428.600721,-126.5625,-84.289
+2428.600721,-112.5,-73.936
+2428.600721,-98.4375,-63.565
+2428.600721,-84.375,-53.178
+2428.600721,-70.3125,-42.774
+2428.600721,-56.25,-32.353
+2428.600721,-42.1875,-21.916
+2428.600721,-28.125,-11.462
+2428.600721,-14.0625,-0.99032
+2428.600721,0,9.7575
+2428.600721,14.0625,20.55
+2428.600721,28.125,31.36
+2428.600721,42.1875,42.188
+2428.600721,56.25,53.032
+2428.600721,70.3125,63.893
+2428.600721,84.375,74.772
+2428.600721,98.4375,85.668
+2428.600721,112.5,96.581
+2428.600721,126.5625,107.51
+2428.600721,140.625,118.46
+2428.600721,154.6875,129.42
+2428.600721,168.75,140.4
+2428.600721,182.8125,151.4
+2428.600721,196.875,162.42
+2428.600721,210.9375,173.45
+2428.600721,225,184.5
+2428.600721,239.0625,195.57
+2428.600721,253.125,206.65
+2428.600721,267.1875,217.75
+2428.600721,281.25,228.87
+2428.600721,295.3125,240.01
+2428.600721,309.375,251.16
+2428.600721,323.4375,262.33
+2428.600721,337.5,273.52
+2428.600721,351.5625,284.72
+2428.600721,365.625,295.95
+2428.600721,379.6875,307.18
+2428.600721,393.75,318.44
+2428.600721,407.8125,329.71
+2428.600721,421.875,341
+2428.600721,435.9375,352.31
+2428.600721,450,363.64
+2571.438467,-450,-336.63
+2571.438467,-435.9375,-326.05
+2571.438467,-421.875,-315.44
+2571.438467,-407.8125,-304.82
+2571.438467,-393.75,-294.19
+2571.438467,-379.6875,-283.53
+2571.438467,-365.625,-272.86
+2571.438467,-351.5625,-262.18
+2571.438467,-337.5,-251.47
+2571.438467,-323.4375,-240.75
+2571.438467,-309.375,-230.01
+2571.438467,-295.3125,-219.26
+2571.438467,-281.25,-208.49
+2571.438467,-267.1875,-197.7
+2571.438467,-253.125,-186.9
+2571.438467,-239.0625,-176.07
+2571.438467,-225,-165.24
+2571.438467,-210.9375,-154.38
+2571.438467,-196.875,-143.51
+2571.438467,-182.8125,-132.62
+2571.438467,-168.75,-121.71
+2571.438467,-154.6875,-110.79
+2571.438467,-140.625,-99.852
+2571.438467,-126.5625,-88.896
+2571.438467,-112.5,-77.923
+2571.438467,-98.4375,-66.933
+2571.438467,-84.375,-55.927
+2571.438467,-70.3125,-44.904
+2571.438467,-56.25,-33.863
+2571.438467,-42.1875,-22.806
+2571.438467,-28.125,-11.733
+2571.438467,-14.0625,-0.64219
+2571.438467,0,10.747
+2571.438467,14.0625,22.172
+2571.438467,28.125,33.614
+2571.438467,42.1875,45.073
+2571.438467,56.25,56.549
+2571.438467,70.3125,68.043
+2571.438467,84.375,79.553
+2571.438467,98.4375,91.081
+2571.438467,112.5,102.63
+2571.438467,126.5625,114.19
+2571.438467,140.625,125.77
+2571.438467,154.6875,137.36
+2571.438467,168.75,148.98
+2571.438467,182.8125,160.61
+2571.438467,196.875,172.25
+2571.438467,210.9375,183.92
+2571.438467,225,195.6
+2571.438467,239.0625,207.3
+2571.438467,253.125,219.02
+2571.438467,267.1875,230.75
+2571.438467,281.25,242.5
+2571.438467,295.3125,254.27
+2571.438467,309.375,266.05
+2571.438467,323.4375,277.86
+2571.438467,337.5,289.67
+2571.438467,351.5625,301.51
+2571.438467,365.625,313.36
+2571.438467,379.6875,325.23
+2571.438467,393.75,337.12
+2571.438467,407.8125,349.03
+2571.438467,421.875,360.95
+2571.438467,435.9375,372.89
+2571.438467,450,384.85
+2714.276213,-450,-355.44
+2714.276213,-435.9375,-344.23
+2714.276213,-421.875,-333.01
+2714.276213,-407.8125,-321.77
+2714.276213,-393.75,-310.52
+2714.276213,-379.6875,-299.24
+2714.276213,-365.625,-287.95
+2714.276213,-351.5625,-276.65
+2714.276213,-337.5,-265.32
+2714.276213,-323.4375,-253.98
+2714.276213,-309.375,-242.63
+2714.276213,-295.3125,-231.25
+2714.276213,-281.25,-219.86
+2714.276213,-267.1875,-208.45
+2714.276213,-253.125,-197.03
+2714.276213,-239.0625,-185.59
+2714.276213,-225,-174.13
+2714.276213,-210.9375,-162.66
+2714.276213,-196.875,-151.17
+2714.276213,-182.8125,-139.66
+2714.276213,-168.75,-128.13
+2714.276213,-154.6875,-116.59
+2714.276213,-140.625,-105.03
+2714.276213,-126.5625,-93.457
+2714.276213,-112.5,-81.865
+2714.276213,-98.4375,-70.256
+2714.276213,-84.375,-58.63
+2714.276213,-70.3125,-46.987
+2714.276213,-56.25,-35.328
+2714.276213,-42.1875,-23.652
+2714.276213,-28.125,-11.958
+2714.276213,-14.0625,-0.24855
+2714.276213,0,11.784
+2714.276213,14.0625,23.84
+2714.276213,28.125,35.914
+2714.276213,42.1875,48.005
+2714.276213,56.25,60.113
+2714.276213,70.3125,72.238
+2714.276213,84.375,84.381
+2714.276213,98.4375,96.54
+2714.276213,112.5,108.72
+2714.276213,126.5625,120.91
+2714.276213,140.625,133.12
+2714.276213,154.6875,145.35
+2714.276213,168.75,157.59
+2714.276213,182.8125,169.86
+2714.276213,196.875,182.14
+2714.276213,210.9375,194.43
+2714.276213,225,206.75
+2714.276213,239.0625,219.08
+2714.276213,253.125,231.43
+2714.276213,267.1875,243.79
+2714.276213,281.25,256.17
+2714.276213,295.3125,268.57
+2714.276213,309.375,280.99
+2714.276213,323.4375,293.42
+2714.276213,337.5,305.88
+2714.276213,351.5625,318.34
+2714.276213,365.625,330.83
+2714.276213,379.6875,343.33
+2714.276213,393.75,355.85
+2714.276213,407.8125,368.39
+2714.276213,421.875,380.94
+2714.276213,435.9375,393.51
+2714.276213,450,406.1
+2857.113959,-450,-374.2
+2857.113959,-435.9375,-362.38
+2857.113959,-421.875,-350.53
+2857.113959,-407.8125,-338.67
+2857.113959,-393.75,-326.8
+2857.113959,-379.6875,-314.91
+2857.113959,-365.625,-303
+2857.113959,-351.5625,-291.07
+2857.113959,-337.5,-279.13
+2857.113959,-323.4375,-267.17
+2857.113959,-309.375,-255.19
+2857.113959,-295.3125,-243.2
+2857.113959,-281.25,-231.19
+2857.113959,-267.1875,-219.16
+2857.113959,-253.125,-207.12
+2857.113959,-239.0625,-195.06
+2857.113959,-225,-182.98
+2857.113959,-210.9375,-170.89
+2857.113959,-196.875,-158.78
+2857.113959,-182.8125,-146.65
+2857.113959,-168.75,-134.51
+2857.113959,-154.6875,-122.35
+2857.113959,-140.625,-110.17
+2857.113959,-126.5625,-97.973
+2857.113959,-112.5,-85.761
+2857.113959,-98.4375,-73.533
+2857.113959,-84.375,-61.288
+2857.113959,-70.3125,-49.026
+2857.113959,-56.25,-36.747
+2857.113959,-42.1875,-24.451
+2857.113959,-28.125,-12.139
+2857.113959,-14.0625,0.19499
+2857.113959,0,12.866
+2857.113959,14.0625,25.555
+2857.113959,28.125,38.26
+2857.113959,42.1875,50.983
+2857.113959,56.25,63.723
+2857.113959,70.3125,76.48
+2857.113959,84.375,89.255
+2857.113959,98.4375,102.05
+2857.113959,112.5,114.85
+2857.113959,126.5625,127.68
+2857.113959,140.625,140.52
+2857.113959,154.6875,153.38
+2857.113959,168.75,166.26
+2857.113959,182.8125,179.15
+2857.113959,196.875,192.07
+2857.113959,210.9375,204.99
+2857.113959,225,217.94
+2857.113959,239.0625,230.9
+2857.113959,253.125,243.88
+2857.113959,267.1875,256.88
+2857.113959,281.25,269.89
+2857.113959,295.3125,282.93
+2857.113959,309.375,295.97
+2857.113959,323.4375,309.04
+2857.113959,337.5,322.12
+2857.113959,351.5625,335.22
+2857.113959,365.625,348.34
+2857.113959,379.6875,361.48
+2857.113959,393.75,374.63
+2857.113959,407.8125,387.8
+2857.113959,421.875,400.98
+2857.113959,435.9375,414.18
+2857.113959,450,427.4
+2988.582131,-450,-391.42
+2988.582131,-435.9375,-379.03
+2988.582131,-421.875,-366.61
+2988.582131,-407.8125,-354.19
+2988.582131,-393.75,-341.74
+2988.582131,-379.6875,-329.28
+2988.582131,-365.625,-316.8
+2988.582131,-351.5625,-304.3
+2988.582131,-337.5,-291.79
+2988.582131,-323.4375,-279.26
+2988.582131,-309.375,-266.72
+2988.582131,-295.3125,-254.15
+2988.582131,-281.25,-241.57
+2988.582131,-267.1875,-228.98
+2988.582131,-253.125,-216.36
+2988.582131,-239.0625,-203.73
+2988.582131,-225,-191.09
+2988.582131,-210.9375,-178.42
+2988.582131,-196.875,-165.74
+2988.582131,-182.8125,-153.04
+2988.582131,-168.75,-140.33
+2988.582131,-154.6875,-127.6
+2988.582131,-140.625,-114.85
+2988.582131,-126.5625,-102.09
+2988.582131,-112.5,-89.306
+2988.582131,-98.4375,-76.508
+2988.582131,-84.375,-63.693
+2988.582131,-70.3125,-50.861
+2988.582131,-56.25,-38.012
+2988.582131,-42.1875,-25.147
+2988.582131,-28.125,-12.264
+2988.582131,-14.0625,0.65077
+2988.582131,0,13.903
+2988.582131,14.0625,27.173
+2988.582131,28.125,40.46
+2988.582131,42.1875,53.764
+2988.582131,56.25,67.086
+2988.582131,70.3125,80.424
+2988.582131,84.375,93.78
+2988.582131,98.4375,107.15
+2988.582131,112.5,120.54
+2988.582131,126.5625,133.95
+2988.582131,140.625,147.37
+2988.582131,154.6875,160.81
+2988.582131,168.75,174.27
+2988.582131,182.8125,187.75
+2988.582131,196.875,201.24
+2988.582131,210.9375,214.75
+2988.582131,225,228.28
+2988.582131,239.0625,241.82
+2988.582131,253.125,255.38
+2988.582131,267.1875,268.96
+2988.582131,281.25,282.56
+2988.582131,295.3125,296.17
+2988.582131,309.375,309.8
+2988.582131,323.4375,323.45
+2988.582131,337.5,337.11
+2988.582131,351.5625,350.79
+2988.582131,365.625,364.49
+2988.582131,379.6875,378.21
+2988.582131,393.75,391.94
+2988.582131,407.8125,405.69
+2988.582131,421.875,419.46
+2988.582131,435.9375,433.24
+2988.582131,450,447.04
diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/GenericEM_47kW.vemp b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/GenericEM_47kW.vemp
new file mode 100644
index 0000000000000000000000000000000000000000..c44a6288e8e2d77fd572780005b57752ff59f52a
--- /dev/null
+++ b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/GenericEM_47kW.vemp
@@ -0,0 +1,74 @@
+n [rpm] , T_drive [Nm] , T_recuperation [Nm]
+0,450,-450
+1000,450,-450
+996.3336701,450,-450
+1002.317656,448.965,-448.965
+1008.301642,446.29875,-446.29875
+1014.285628,443.66625,-443.66625
+1017.277621,442.36125,-442.36125
+1047.197551,429.71625,-429.71625
+1077.117481,417.78,-417.78
+1107.037411,406.485,-406.485
+1136.957341,395.7975,-395.7975
+1166.877271,385.65,-385.65
+1196.797201,376.00875,-376.00875
+1226.717131,366.82875,-366.82875
+1256.637061,358.09875,-358.09875
+1286.556991,349.77375,-349.77375
+1316.476922,341.82,-341.82
+1346.396852,334.22625,-334.22625
+1376.316782,326.95875,-326.95875
+1406.236712,320.00625,-320.00625
+1436.156642,313.335,-313.335
+1466.076572,306.945,-306.945
+1495.996502,300.8025,-300.8025
+1525.916432,294.9075,-294.9075
+1555.836362,289.2375,-289.2375
+1585.756292,283.78125,-283.78125
+1615.676222,278.51625,-278.51625
+1645.596152,273.45375,-273.45375
+1675.516082,268.57125,-268.57125
+1705.436012,263.8575,-263.8575
+1735.355942,259.3125,-259.3125
+1765.275872,254.91375,-254.91375
+1795.195802,250.6725,-250.6725
+1825.115732,246.555,-246.555
+1855.035662,242.58375,-242.58375
+1884.955592,238.73625,-238.73625
+1914.875522,235.00125,-235.00125
+1944.795452,231.39,-231.39
+1974.715382,227.88,-227.88
+2004.635312,224.4825,-224.4825
+2034.555242,221.175,-221.175
+2064.475172,217.96875,-217.96875
+2094.395102,214.86375,-214.86375
+2124.315032,211.8375,-211.8375
+2154.234962,208.89,-208.89
+2184.154892,206.0325,-206.0325
+2214.074823,203.2425,-203.2425
+2243.994753,200.53125,-200.53125
+2273.914683,197.89875,-197.89875
+2303.834613,195.3225,-195.3225
+2333.754543,192.825,-192.825
+2363.674473,190.38375,-190.38375
+2393.594403,187.99875,-187.99875
+2423.514333,185.68125,-185.68125
+2453.434263,183.42,-183.42
+2483.354193,181.20375,-181.20375
+2513.274123,179.04375,-179.04375
+2543.194053,176.94,-176.94
+2573.113983,174.88125,-174.88125
+2603.033913,172.87875,-172.87875
+2632.953843,170.91,-170.91
+2662.873773,168.98625,-168.98625
+2692.793703,167.1075,-167.1075
+2722.713633,165.27375,-165.27375
+2752.633563,163.485,-163.485
+2782.553493,161.71875,-161.71875
+2812.473423,159.9975,-159.9975
+2842.393353,158.32125,-158.32125
+2872.313283,156.6675,-156.6675
+2902.233213,155.0475,-155.0475
+2932.153143,153.4725,-153.4725
+2962.073073,151.92,-151.92
+2991.993003,150.40125,-150.40125
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/HybridStrategyParams.vhctl b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/HybridStrategyParams.vhctl
new file mode 100644
index 0000000000000000000000000000000000000000..e38a9d4f64e2f60dcec592f7cab47ebbcb228e7e
--- /dev/null
+++ b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/HybridStrategyParams.vhctl
@@ -0,0 +1,17 @@
+{
+  "Header": {
+    "CreatedBy": "",
+    "Date": "2020-08-04T07:11:24.0318977Z",
+    "AppVersion": "3",
+    "FileVersion": 1
+  },
+  "Body": {
+    "EquivalenceFactor": 2.5,
+    "MinSoC": 20.0,
+    "MaxSoC": 80.0,
+    "TargetSoC": 50.0,
+    "MinICEOnTime": 3,
+    "AuxBufferTime": 5,
+    "AuxBufferChgTime":  3 
+  }
+}
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/SuperCap.vreess b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/SuperCap.vreess
new file mode 100644
index 0000000000000000000000000000000000000000..306a580137c2eaf36820c47a05323032c3066ade
--- /dev/null
+++ b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/SuperCap.vreess
@@ -0,0 +1,17 @@
+{
+  "Header": {
+    "CreatedBy": "",
+    "Date": "2020-09-21T11:55:45.6900821Z",
+    "AppVersion": "3",
+    "FileVersion": 1
+  },
+  "Body": {
+    "SavedInDeclMode": false,
+    "REESSType": "SuperCap",
+    "Model": "Generic Manufacturer",
+    "Capacity": 37.0,
+    "InternalResistance": 0.02,
+    "U_min": 0.0,
+    "U_max": 330.0
+  }
+}
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/Truck.vacc b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/Truck.vacc
new file mode 100644
index 0000000000000000000000000000000000000000..54e77864874d21d67e8f8d69a97b35c5c6031749
--- /dev/null
+++ b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2SuperCapOvl/Truck.vacc
@@ -0,0 +1,6 @@
+v [km/h],acc [m/s�],dec [m/s�]
+0,1,-1
+25,1,-1
+50,0.642857143,-1
+60,0.5,-0.5
+120,0.5,-0.5
diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group5/GenericEMotor_140kW_936Nm.vem b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group5/GenericEMotor_140kW_936Nm.vem
index e6c3abcfa852d968862713b51366de5ebecd0281..4361bec83fa16d99058599a0fca32037f5a7d36e 100644
--- a/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group5/GenericEMotor_140kW_936Nm.vem
+++ b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group5/GenericEMotor_140kW_936Nm.vem
@@ -7,11 +7,13 @@
   },
   "Body": {
     "SavedInDeclMode": false,
-	"Model": "Generic Electric Motor",
+    "Model": "Generic Electric Motor",
     "FullLoadCurve": "GenericEMotor_140kW_900Nm.vemp",
-    "DragCurve":  "GenericDrag_140kW_936Nm.vemd", 
+    "DragCurve": "GenericDrag_140kW_936Nm.vemd",
     "EfficiencyMap": "GenericMap_140kW_936Nm.vemo",
-    "Inertia" :  0.5 
-
-	}
+    "Inertia": 0.5,
+    "ContinuousPower": 5000000,
+    "ThermalOverloadBuffer": 0.6,
+    "ThermalOverloadRecoveryFactor": 0.9
+  }
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/Input CityBus 6x2_HEV_P2/Electric components/GenericEMotor_150kW_998Nm.vem b/VectoCore/VectoCoreTest/TestData/Hybrids/Input CityBus 6x2_HEV_P2/Electric components/GenericEMotor_150kW_998Nm.vem
index 250fc8cd4986409390c5241b06fedf90a8cf99ad..10a7b40be0cfaaa5c9e532435581d07d4c635203 100644
--- a/VectoCore/VectoCoreTest/TestData/Hybrids/Input CityBus 6x2_HEV_P2/Electric components/GenericEMotor_150kW_998Nm.vem	
+++ b/VectoCore/VectoCoreTest/TestData/Hybrids/Input CityBus 6x2_HEV_P2/Electric components/GenericEMotor_150kW_998Nm.vem	
@@ -11,6 +11,9 @@
     "FullLoadCurve": "GenericEMotor_150kW_998Nm.vemp",
     "DragCurve": "GenericDrag_150kW_998Nm.vemd",
     "EfficiencyMap": "GenericMap_150kW_998Nm.vemo",
-    "Inertia": 0.545
+    "Inertia": 0.545,
+    "ContinuousPower": 5000000,
+    "ThermalOverloadBuffer": 0.6,
+    "ThermalOverloadRecoveryFactor": 0.9
   }
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/Utils/MockBattery.cs b/VectoCore/VectoCoreTest/Utils/MockBattery.cs
index e7bbf090235cb9dc95bcca9ee284efc1ca24753b..da546f91f30fad4aa94874f0507d17df44a2959b 100644
--- a/VectoCore/VectoCoreTest/Utils/MockBattery.cs
+++ b/VectoCore/VectoCoreTest/Utils/MockBattery.cs
@@ -4,22 +4,22 @@ using TUGraz.VectoCore.Models.Connector.Ports.Impl;
 using TUGraz.VectoCore.Models.SimulationComponent;
 
 namespace TUGraz.VectoCore.Tests.Utils {
-	public class MockBattery : IBattery, IBatteryPort, IElectricAuxConnecor
+	public class MockBattery : IElectricEnergyStorage, IElectricEnergyStoragePort, IElectricAuxConnecor
 	{
-		public Volt InternalCellVoltage
+		public Volt InternalVoltage
 		{
 			get { return 640.SI<Volt>(); }
 		}
 
-		public IBatteryResponse Request(Second absTime, Second dt, Watt powerdemand, bool dryRun = false)
+		public IRESSResponse Request(Second absTime, Second dt, Watt powerdemand, bool dryRun = false)
 		{
-			return new BatteryResponseSuccess(this)
+			return new RESSResponseSuccess(this)
 			{
-				MaxBatteryLoadDischarge = -InternalCellVoltage * MaxCurrent,
+				MaxDischargePower = -InternalVoltage * MaxCurrent,
 				AbsTime = absTime,
-				BatteryLoss = 0.SI<Watt>(),
-				MaxBatteryLoadCharge = InternalCellVoltage * MaxCurrent,
-				BatteryPower = powerdemand,
+				LossPower = 0.SI<Watt>(),
+				MaxChargePower = InternalVoltage * MaxCurrent,
+				PowerDemand = powerdemand,
 				SimulationInterval = dt,
 			};
 		}
@@ -46,7 +46,16 @@ namespace TUGraz.VectoCore.Tests.Utils {
 			throw new System.NotImplementedException();
 		}
 
-		public IBatteryPort MainBatteryPort
+		public double MinSoC
+		{
+			get { return 0; }
+		}
+		public double MaxSoC
+		{
+			get { return 1; }
+		}
+
+		public IElectricEnergyStoragePort MainBatteryPort
 		{
 			get { return this; }
 		}
@@ -61,14 +70,14 @@ namespace TUGraz.VectoCore.Tests.Utils {
 			StateOfCharge = initialSoC;
 		}
 
-		public void Connect(IBatteryAuxPort aux)
+		public void Connect(IElectricAuxPort aux)
 		{
 			throw new System.NotImplementedException();
 		}
 
 		#region Implementation of IBatteryChargeProvider
 
-		public void Connect(IBatteryChargePort charger)
+		public void Connect(IElectricChargerPort charger)
 		{
 			throw new System.NotImplementedException();
 		}
diff --git a/VectoCore/VectoCoreTest/Utils/MockBatteryInputData.cs b/VectoCore/VectoCoreTest/Utils/MockBatteryInputData.cs
index da4e71a9bdac6dd974b9768c29eefc4f1c953be9..a300b4f5a2d12e57a27cabb4dcc2e6dc86376034 100644
--- a/VectoCore/VectoCoreTest/Utils/MockBatteryInputData.cs
+++ b/VectoCore/VectoCoreTest/Utils/MockBatteryInputData.cs
@@ -3,9 +3,7 @@
 namespace TUGraz.VectoCore.Tests.Utils {
 	public class MockBatteryInputData : IElectricStorageEngineeringInputData
 	{
-		IBatteryPackDeclarationInputData IElectricStorageDeclarationInputData.BatteryPack => BatteryPack;
-
-		public IBatteryPackEngineeringInputData BatteryPack { get; set; }
+		public IREESSPackInputData REESSPack { get; set; }
 		public int Count { get; set; }
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/Utils/MockElectricConsumer.cs b/VectoCore/VectoCoreTest/Utils/MockElectricConsumer.cs
index b7dad2e02270fac6a04d9c9ce89138b54aaea112..010de0dde39cae5d26cc19ac2519ef85073aa608 100644
--- a/VectoCore/VectoCoreTest/Utils/MockElectricConsumer.cs
+++ b/VectoCore/VectoCoreTest/Utils/MockElectricConsumer.cs
@@ -2,7 +2,7 @@
 using TUGraz.VectoCore.Models.Connector.Ports.Impl;
 
 namespace TUGraz.VectoCore.Tests.Utils {
-	public class MockElectricConsumer : IBatteryAuxPort
+	public class MockElectricConsumer : IElectricAuxPort
 	{
 		private Watt PowwerDemand;
 
diff --git a/VectoCore/VectoCoreTest/Utils/MockSimulationDataFactory.cs b/VectoCore/VectoCoreTest/Utils/MockSimulationDataFactory.cs
index c5354de71445ca56b83a822db77580ff94fe7587..36315647e3bb1dc7bb0750eb31b967923b3a0807 100644
--- a/VectoCore/VectoCoreTest/Utils/MockSimulationDataFactory.cs
+++ b/VectoCore/VectoCoreTest/Utils/MockSimulationDataFactory.cs
@@ -194,8 +194,8 @@ namespace TUGraz.VectoCore.Tests.Utils
 
 		public static BatteryData CreateBatteryData(string file, double initialSoC, int cnt = 1)
 		{
-			var inputData = JSONInputDataFactory.ReadBatteryData(file, false);
-			return new EngineeringDataAdapter().CreateBatteryData(new MockBatteryInputData() {Count = cnt, BatteryPack = inputData}, initialSoC);
+			var inputData = JSONInputDataFactory.ReadREESSData(file, false);
+			return new EngineeringDataAdapter().CreateBatteryData(new MockBatteryInputData() {Count = cnt, REESSPack = inputData}, initialSoC);
 		}
 	}
 }
diff --git a/VectoCore/VectoCoreTest/Utils/MockVehicleContainer.cs b/VectoCore/VectoCoreTest/Utils/MockVehicleContainer.cs
index 3db922ff62a785849db6ea95b2704520e34762fa..d5c93e6b0237c6db1c8dcab81d2382851870b64f 100644
--- a/VectoCore/VectoCoreTest/Utils/MockVehicleContainer.cs
+++ b/VectoCore/VectoCoreTest/Utils/MockVehicleContainer.cs
@@ -144,7 +144,7 @@ namespace TUGraz.VectoCore.Tests.Utils
 			return null;
 		}
 
-		public IBatteryInfo BatteryInfo
+		public IRESSInfo BatteryInfo
 		{
 			get { throw new NotImplementedException(); }
 		}
@@ -159,6 +159,8 @@ namespace TUGraz.VectoCore.Tests.Utils
 			get { return this; }
 		}
 
+		public IHybridControllerInfo HybridControllerInfo { get; }
+
 		public Watt GearboxLoss()
 		{
 			throw new System.NotImplementedException();
diff --git a/VectoCore/VectoCoreTest/VectoCoreTest.csproj b/VectoCore/VectoCoreTest/VectoCoreTest.csproj
index 17e8e9b2b3f340e844cff37c8e82943f00808d54..df7f7736a6a0dce2e712be86aaf8faecf6d0e056 100644
--- a/VectoCore/VectoCoreTest/VectoCoreTest.csproj
+++ b/VectoCore/VectoCoreTest/VectoCoreTest.csproj
@@ -148,6 +148,7 @@
     <Compile Include="Models\SimulationComponent\ElectricMotorTest.cs" />
     <Compile Include="Models\SimulationComponent\EngineFanAuxTest.cs" />
     <Compile Include="Models\SimulationComponent\GearboxShiftLossesTest.cs" />
+    <Compile Include="Models\SimulationComponent\SuperCapTest.cs" />
     <Compile Include="Utils\MockElectricConsumer.cs" />
     <Compile Include="Utils\MockHybridControl.cs" />
     <Compile Include="Utils\MockBattery.cs" />
@@ -241,9 +242,15 @@
       <SubType>Designer</SubType>
     </None>
     <None Include="default.runsettings" />
+    <None Include="TestData\BatteryElectric\GenericVehicleB4\BatteryElectricVehicle_Cont30kW.vveh">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
     <None Include="TestData\BatteryElectric\GenericVehicleB4\BatteryElectricVehicle.vveh">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
+    <None Include="TestData\BatteryElectric\GenericVehicleB4\BEV_ENG_Cont30kW.vecto">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
     <None Include="TestData\BatteryElectric\GenericVehicleB4\BEV_ENG.vecto">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
@@ -259,6 +266,9 @@
     <None Include="TestData\BatteryElectric\GenericVehicleB4\GenericDrag_125kW_485Nm.vemd">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
+    <None Include="TestData\BatteryElectric\GenericVehicleB4\GenericEMotor_125kW_485Nm_Cont30kW.vem">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
     <None Include="TestData\BatteryElectric\GenericVehicleB4\GenericEMotor_125kW_485Nm.vem">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
@@ -571,6 +581,69 @@
     <None Include="TestData\Hybrids\GenericVehicle_Group5_P2\VKM\Engine_325kW_12.7l.veng">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
+    <None Include="TestData\Hybrids\Hyb_P2_Group2SuperCapOvl\175kW.vfld">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="TestData\Hybrids\Hyb_P2_Group2SuperCapOvl\175kW.vmap">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="TestData\Hybrids\Hyb_P2_Group2SuperCapOvl\AMT_6.vgbx">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="TestData\Hybrids\Hyb_P2_Group2SuperCapOvl\Axle_4x2.vtlm">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="TestData\Hybrids\Hyb_P2_Group2SuperCapOvl\Class2_RigidTruck.vveh">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="TestData\Hybrids\Hyb_P2_Group2SuperCapOvl\Class2_RigidTruck_ParHyb_SuperCap_Ovl_ENG.vecto">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="TestData\Hybrids\Hyb_P2_Group2SuperCapOvl\Default.vrlm">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="TestData\Hybrids\Hyb_P2_Group2SuperCapOvl\Engine_175kW_6.8l.veng">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="TestData\Hybrids\Hyb_P2_Group2SuperCapOvl\Gear_1.vtlm">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="TestData\Hybrids\Hyb_P2_Group2SuperCapOvl\Gear_2.vtlm">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="TestData\Hybrids\Hyb_P2_Group2SuperCapOvl\Gear_3.vtlm">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="TestData\Hybrids\Hyb_P2_Group2SuperCapOvl\Gear_4.vtlm">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="TestData\Hybrids\Hyb_P2_Group2SuperCapOvl\Gear_5.vtlm">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="TestData\Hybrids\Hyb_P2_Group2SuperCapOvl\Gear_6.vtlm">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="TestData\Hybrids\Hyb_P2_Group2SuperCapOvl\GenericEM_47kW.vem">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="TestData\Hybrids\Hyb_P2_Group2SuperCapOvl\GenericEM_47kW.vemd">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="TestData\Hybrids\Hyb_P2_Group2SuperCapOvl\GenericEM_47kW.vemo">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="TestData\Hybrids\Hyb_P2_Group2SuperCapOvl\GenericEM_47kW.vemp">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="TestData\Hybrids\Hyb_P2_Group2SuperCapOvl\HybridStrategyParams.vhctl">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="TestData\Hybrids\Hyb_P2_Group2SuperCapOvl\SuperCap.vreess">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="TestData\Hybrids\Hyb_P2_Group2SuperCapOvl\Truck.vacc">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
     <None Include="TestData\Hybrids\Hyb_P2_Group2\175kW.vfld">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>