diff --git a/Default Data/VDRI/Construction_Cycle.vdri b/Default Data/VDRI/Construction.vdri
similarity index 100%
rename from Default Data/VDRI/Construction_Cycle.vdri
rename to Default Data/VDRI/Construction.vdri
diff --git a/Demo Data/12t Demo/Demo_Declaration.vecto b/Demo Data/12t Demo/Demo_Declaration.vecto
index 270007ad97ed91dba34b7562d69836a542746b98..b2e8ac7463f312f820519a1d79756e3d973cb90f 100644
--- a/Demo Data/12t Demo/Demo_Declaration.vecto	
+++ b/Demo Data/12t Demo/Demo_Declaration.vecto	
@@ -18,12 +18,12 @@
       {
         "ID": "ALT",
         "Type": "Alternator",
-        "Path": "..\\Demo_AuxAlternator.vaux"
+        "Path": "Demo_AuxAlternator.vaux"
       },
       {
         "ID": "DEMO",
         "Type": "Demo",
-        "Path": "..\\Demo_AuxDevice.vaux"
+        "Path": "Demo_AuxDevice.vaux"
       }
     ],
     "VACC": "..\\..\\Default Data\\VACC\\Truck.vacc",
diff --git a/User Manual Source/Update Notes.pptx b/User Manual Source/Update Notes.pptx
index 5bf6aaac2ea3e9601557f69ff5d9a1a45fb22b04..72fcb88f69d823ca911d53dc398ad9778037c3bf 100644
Binary files a/User Manual Source/Update Notes.pptx and b/User Manual Source/Update Notes.pptx differ
diff --git a/User Manual/GUI/GBX-Editor.html b/User Manual/GUI/GBX-Editor.html
index a8fd5f02671e854dca460f1e815a237697bbd1cf..aaeb15e2a53747a3d2b22f10753effe0fdb8c1a6 100644
--- a/User Manual/GUI/GBX-Editor.html	
+++ b/User Manual/GUI/GBX-Editor.html	
@@ -293,7 +293,7 @@ specific reference engine speed (see
 below).<br>
 <br>
 The Input Torque at &nbsp;reference engine speed is needed to
-needed to calculate the actual engine torque using this formula:<br>
+calculate the actual engine torque using this formula:<br>
 <img style="width: 300px; height: 72px;" alt="" src="pics/GBX-TC2.png"><br>
 with:<br>
 <div style="margin-left: 40px;">T<sub>in</sub>
diff --git a/VECTO/ApplicationEvents.vb b/VECTO/ApplicationEvents.vb
index 4b074345dc01063ed7ac1a2a401c5ee709fac323..9fa4e2cece85dbfb6e91ad61f396f6f09caf5d36 100644
--- a/VECTO/ApplicationEvents.vb
+++ b/VECTO/ApplicationEvents.vb
@@ -88,7 +88,7 @@ Namespace My
             JobFileList = New List(Of String)
             JobCycleList = New List(Of String)
             DEV = New cDEV
-            VEC = New cVECTO
+            Declaration = New cDeclaration
 
             Cfg = New cConfig   'ACHTUNG: cConfig.New löst cConfig.SetDefault aus welches sKey benötigt dehalb muss sKey schon vorher initialisiert werden!!
 
diff --git a/VECTO/GUI/F_ENG.Designer.vb b/VECTO/GUI/F_ENG.Designer.vb
index a7ef0f58857e5f7dca21aabea5717350be8a0cb4..946f19183df10fc4330ea0a92a4c62d7a54a8de6 100644
--- a/VECTO/GUI/F_ENG.Designer.vb
+++ b/VECTO/GUI/F_ENG.Designer.vb
@@ -51,9 +51,6 @@ Partial Class F_ENG
         Me.TbMAP = New System.Windows.Forms.TextBox()
         Me.Label6 = New System.Windows.Forms.Label()
         Me.BtMAP = New System.Windows.Forms.Button()
-        Me.TbWHTC = New System.Windows.Forms.TextBox()
-        Me.Label7 = New System.Windows.Forms.Label()
-        Me.BtWHTC = New System.Windows.Forms.Button()
         Me.PictureBox1 = New System.Windows.Forms.PictureBox()
         Me.CmOpenFile = New System.Windows.Forms.ContextMenuStrip(Me.components)
         Me.OpenWithGRAPHiToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
@@ -67,11 +64,24 @@ Partial Class F_ENG
         Me.ColumnHeader1 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
         Me.GroupBox1 = New System.Windows.Forms.GroupBox()
         Me.Label32 = New System.Windows.Forms.Label()
+        Me.PnInertia = New System.Windows.Forms.Panel()
+        Me.GrWHTC = New System.Windows.Forms.GroupBox()
+        Me.TbWHTCmw = New System.Windows.Forms.TextBox()
+        Me.TbWHTCrural = New System.Windows.Forms.TextBox()
+        Me.TbWHTCurban = New System.Windows.Forms.TextBox()
+        Me.Label8 = New System.Windows.Forms.Label()
+        Me.Label12 = New System.Windows.Forms.Label()
+        Me.Label10 = New System.Windows.Forms.Label()
+        Me.Label9 = New System.Windows.Forms.Label()
+        Me.Label7 = New System.Windows.Forms.Label()
+        Me.Label4 = New System.Windows.Forms.Label()
         Me.ToolStrip1.SuspendLayout()
         Me.StatusStrip1.SuspendLayout()
         CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit()
         Me.CmOpenFile.SuspendLayout()
         Me.GroupBox1.SuspendLayout()
+        Me.PnInertia.SuspendLayout()
+        Me.GrWHTC.SuspendLayout()
         Me.SuspendLayout()
         '
         'TbNleerl
@@ -79,7 +89,7 @@ Partial Class F_ENG
         Me.TbNleerl.Location = New System.Drawing.Point(123, 108)
         Me.TbNleerl.Name = "TbNleerl"
         Me.TbNleerl.Size = New System.Drawing.Size(57, 20)
-        Me.TbNleerl.TabIndex = 4
+        Me.TbNleerl.TabIndex = 1
         '
         'Label11
         '
@@ -92,7 +102,7 @@ Partial Class F_ENG
         '
         'TbInertia
         '
-        Me.TbInertia.Location = New System.Drawing.Point(388, 108)
+        Me.TbInertia.Location = New System.Drawing.Point(120, 2)
         Me.TbInertia.Name = "TbInertia"
         Me.TbInertia.Size = New System.Drawing.Size(57, 20)
         Me.TbInertia.TabIndex = 3
@@ -100,7 +110,7 @@ Partial Class F_ENG
         'Label41
         '
         Me.Label41.AutoSize = True
-        Me.Label41.Location = New System.Drawing.Point(451, 111)
+        Me.Label41.Location = New System.Drawing.Point(183, 5)
         Me.Label41.Name = "Label41"
         Me.Label41.Size = New System.Drawing.Size(36, 13)
         Me.Label41.TabIndex = 24
@@ -118,7 +128,7 @@ Partial Class F_ENG
         'Label5
         '
         Me.Label5.AutoSize = True
-        Me.Label5.Location = New System.Drawing.Point(280, 111)
+        Me.Label5.Location = New System.Drawing.Point(12, 5)
         Me.Label5.Name = "Label5"
         Me.Label5.Size = New System.Drawing.Size(102, 13)
         Me.Label5.TabIndex = 0
@@ -128,7 +138,7 @@ Partial Class F_ENG
         '
         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(418, 439)
+        Me.ButCancel.Location = New System.Drawing.Point(418, 469)
         Me.ButCancel.Name = "ButCancel"
         Me.ButCancel.Size = New System.Drawing.Size(75, 23)
         Me.ButCancel.TabIndex = 13
@@ -138,7 +148,7 @@ Partial Class F_ENG
         '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(337, 439)
+        Me.ButOK.Location = New System.Drawing.Point(337, 469)
         Me.ButOK.Name = "ButOK"
         Me.ButOK.Size = New System.Drawing.Size(75, 23)
         Me.ButOK.TabIndex = 12
@@ -227,7 +237,7 @@ Partial Class F_ENG
         'StatusStrip1
         '
         Me.StatusStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.LbStatus})
-        Me.StatusStrip1.Location = New System.Drawing.Point(0, 465)
+        Me.StatusStrip1.Location = New System.Drawing.Point(0, 495)
         Me.StatusStrip1.Name = "StatusStrip1"
         Me.StatusStrip1.Size = New System.Drawing.Size(505, 22)
         Me.StatusStrip1.SizingGrip = False
@@ -286,7 +296,7 @@ Partial Class F_ENG
         Me.TbMAP.Location = New System.Drawing.Point(12, 351)
         Me.TbMAP.Name = "TbMAP"
         Me.TbMAP.Size = New System.Drawing.Size(418, 20)
-        Me.TbMAP.TabIndex = 8
+        Me.TbMAP.TabIndex = 5
         '
         'Label6
         '
@@ -302,40 +312,11 @@ Partial Class F_ENG
         Me.BtMAP.Location = New System.Drawing.Point(436, 349)
         Me.BtMAP.Name = "BtMAP"
         Me.BtMAP.Size = New System.Drawing.Size(28, 23)
-        Me.BtMAP.TabIndex = 9
+        Me.BtMAP.TabIndex = 6
         Me.BtMAP.TabStop = False
         Me.BtMAP.Text = "..."
         Me.BtMAP.UseVisualStyleBackColor = True
         '
-        'TbWHTC
-        '
-        Me.TbWHTC.Enabled = False
-        Me.TbWHTC.Location = New System.Drawing.Point(12, 401)
-        Me.TbWHTC.Name = "TbWHTC"
-        Me.TbWHTC.Size = New System.Drawing.Size(447, 20)
-        Me.TbWHTC.TabIndex = 10
-        '
-        'Label7
-        '
-        Me.Label7.AutoSize = True
-        Me.Label7.Enabled = False
-        Me.Label7.Location = New System.Drawing.Point(12, 385)
-        Me.Label7.Name = "Label7"
-        Me.Label7.Size = New System.Drawing.Size(109, 13)
-        Me.Label7.TabIndex = 38
-        Me.Label7.Text = "Calibration Test Cycle"
-        '
-        'BtWHTC
-        '
-        Me.BtWHTC.Enabled = False
-        Me.BtWHTC.Location = New System.Drawing.Point(465, 399)
-        Me.BtWHTC.Name = "BtWHTC"
-        Me.BtWHTC.Size = New System.Drawing.Size(28, 23)
-        Me.BtWHTC.TabIndex = 11
-        Me.BtWHTC.TabStop = False
-        Me.BtWHTC.Text = "..."
-        Me.BtWHTC.UseVisualStyleBackColor = True
-        '
         'PictureBox1
         '
         Me.PictureBox1.BackColor = System.Drawing.Color.White
@@ -376,7 +357,7 @@ Partial Class F_ENG
         Me.BtMAPopen.Location = New System.Drawing.Point(470, 349)
         Me.BtMAPopen.Name = "BtMAPopen"
         Me.BtMAPopen.Size = New System.Drawing.Size(23, 23)
-        Me.BtMAPopen.TabIndex = 40
+        Me.BtMAPopen.TabIndex = 7
         Me.BtMAPopen.TabStop = False
         Me.BtMAPopen.UseVisualStyleBackColor = True
         '
@@ -386,7 +367,7 @@ Partial Class F_ENG
         Me.BtAddFLD.Location = New System.Drawing.Point(6, 133)
         Me.BtAddFLD.Name = "BtAddFLD"
         Me.BtAddFLD.Size = New System.Drawing.Size(29, 23)
-        Me.BtAddFLD.TabIndex = 42
+        Me.BtAddFLD.TabIndex = 1
         Me.BtAddFLD.UseVisualStyleBackColor = True
         '
         'BtRemFLD
@@ -395,7 +376,7 @@ Partial Class F_ENG
         Me.BtRemFLD.Location = New System.Drawing.Point(43, 133)
         Me.BtRemFLD.Name = "BtRemFLD"
         Me.BtRemFLD.Size = New System.Drawing.Size(29, 23)
-        Me.BtRemFLD.TabIndex = 43
+        Me.BtRemFLD.TabIndex = 2
         Me.BtRemFLD.UseVisualStyleBackColor = True
         '
         'LvFLDs
@@ -408,7 +389,7 @@ Partial Class F_ENG
         Me.LvFLDs.MultiSelect = False
         Me.LvFLDs.Name = "LvFLDs"
         Me.LvFLDs.Size = New System.Drawing.Size(469, 108)
-        Me.LvFLDs.TabIndex = 41
+        Me.LvFLDs.TabIndex = 0
         Me.LvFLDs.TabStop = False
         Me.LvFLDs.UseCompatibleStateImageBehavior = False
         Me.LvFLDs.View = System.Windows.Forms.View.Details
@@ -432,7 +413,7 @@ Partial Class F_ENG
         Me.GroupBox1.Location = New System.Drawing.Point(12, 160)
         Me.GroupBox1.Name = "GroupBox1"
         Me.GroupBox1.Size = New System.Drawing.Size(481, 162)
-        Me.GroupBox1.TabIndex = 44
+        Me.GroupBox1.TabIndex = 4
         Me.GroupBox1.TabStop = False
         Me.GroupBox1.Text = "Full Load and Drag Curves"
         '
@@ -445,18 +426,122 @@ Partial Class F_ENG
         Me.Label32.TabIndex = 44
         Me.Label32.Text = "Double-Click to edit item"
         '
+        'PnInertia
+        '
+        Me.PnInertia.Controls.Add(Me.Label5)
+        Me.PnInertia.Controls.Add(Me.Label41)
+        Me.PnInertia.Controls.Add(Me.TbInertia)
+        Me.PnInertia.Location = New System.Drawing.Point(264, 106)
+        Me.PnInertia.Name = "PnInertia"
+        Me.PnInertia.Size = New System.Drawing.Size(229, 32)
+        Me.PnInertia.TabIndex = 3
+        '
+        'GrWHTC
+        '
+        Me.GrWHTC.Controls.Add(Me.TbWHTCmw)
+        Me.GrWHTC.Controls.Add(Me.TbWHTCrural)
+        Me.GrWHTC.Controls.Add(Me.TbWHTCurban)
+        Me.GrWHTC.Controls.Add(Me.Label8)
+        Me.GrWHTC.Controls.Add(Me.Label12)
+        Me.GrWHTC.Controls.Add(Me.Label10)
+        Me.GrWHTC.Controls.Add(Me.Label9)
+        Me.GrWHTC.Controls.Add(Me.Label7)
+        Me.GrWHTC.Controls.Add(Me.Label4)
+        Me.GrWHTC.Enabled = False
+        Me.GrWHTC.Location = New System.Drawing.Point(12, 392)
+        Me.GrWHTC.Name = "GrWHTC"
+        Me.GrWHTC.Size = New System.Drawing.Size(481, 61)
+        Me.GrWHTC.TabIndex = 9
+        Me.GrWHTC.TabStop = False
+        Me.GrWHTC.Text = "WHTC Test Results"
+        '
+        'TbWHTCmw
+        '
+        Me.TbWHTCmw.Location = New System.Drawing.Point(348, 28)
+        Me.TbWHTCmw.Name = "TbWHTCmw"
+        Me.TbWHTCmw.Size = New System.Drawing.Size(57, 20)
+        Me.TbWHTCmw.TabIndex = 2
+        '
+        'TbWHTCrural
+        '
+        Me.TbWHTCrural.Location = New System.Drawing.Point(192, 28)
+        Me.TbWHTCrural.Name = "TbWHTCrural"
+        Me.TbWHTCrural.Size = New System.Drawing.Size(57, 20)
+        Me.TbWHTCrural.TabIndex = 1
+        '
+        'TbWHTCurban
+        '
+        Me.TbWHTCurban.Location = New System.Drawing.Point(36, 28)
+        Me.TbWHTCurban.Name = "TbWHTCurban"
+        Me.TbWHTCurban.Size = New System.Drawing.Size(57, 20)
+        Me.TbWHTCurban.TabIndex = 0
+        '
+        'Label8
+        '
+        Me.Label8.AutoSize = True
+        Me.Label8.Location = New System.Drawing.Point(317, 31)
+        Me.Label8.Name = "Label8"
+        Me.Label8.Size = New System.Drawing.Size(25, 13)
+        Me.Label8.TabIndex = 0
+        Me.Label8.Text = "Mot"
+        '
+        'Label12
+        '
+        Me.Label12.AutoSize = True
+        Me.Label12.Location = New System.Drawing.Point(411, 31)
+        Me.Label12.Name = "Label12"
+        Me.Label12.Size = New System.Drawing.Size(47, 13)
+        Me.Label12.TabIndex = 0
+        Me.Label12.Text = "[g/kWh]"
+        '
+        'Label10
+        '
+        Me.Label10.AutoSize = True
+        Me.Label10.Location = New System.Drawing.Point(255, 31)
+        Me.Label10.Name = "Label10"
+        Me.Label10.Size = New System.Drawing.Size(47, 13)
+        Me.Label10.TabIndex = 0
+        Me.Label10.Text = "[g/kWh]"
+        '
+        'Label9
+        '
+        Me.Label9.AutoSize = True
+        Me.Label9.Location = New System.Drawing.Point(99, 31)
+        Me.Label9.Name = "Label9"
+        Me.Label9.Size = New System.Drawing.Size(47, 13)
+        Me.Label9.TabIndex = 0
+        Me.Label9.Text = "[g/kWh]"
+        '
+        'Label7
+        '
+        Me.Label7.AutoSize = True
+        Me.Label7.Location = New System.Drawing.Point(162, 31)
+        Me.Label7.Name = "Label7"
+        Me.Label7.Size = New System.Drawing.Size(24, 13)
+        Me.Label7.TabIndex = 0
+        Me.Label7.Text = "Rur"
+        '
+        'Label4
+        '
+        Me.Label4.AutoSize = True
+        Me.Label4.Location = New System.Drawing.Point(6, 31)
+        Me.Label4.Name = "Label4"
+        Me.Label4.Size = New System.Drawing.Size(24, 13)
+        Me.Label4.TabIndex = 0
+        Me.Label4.Text = "Urb"
+        '
         'F_ENG
         '
         Me.AcceptButton = Me.ButOK
         Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
         Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
         Me.CancelButton = Me.ButCancel
-        Me.ClientSize = New System.Drawing.Size(505, 487)
+        Me.ClientSize = New System.Drawing.Size(505, 517)
+        Me.Controls.Add(Me.GrWHTC)
+        Me.Controls.Add(Me.PnInertia)
         Me.Controls.Add(Me.GroupBox1)
         Me.Controls.Add(Me.BtMAPopen)
         Me.Controls.Add(Me.PictureBox1)
-        Me.Controls.Add(Me.BtWHTC)
-        Me.Controls.Add(Me.Label7)
         Me.Controls.Add(Me.BtMAP)
         Me.Controls.Add(Me.Label6)
         Me.Controls.Add(Me.TbNleerl)
@@ -467,15 +552,11 @@ Partial Class F_ENG
         Me.Controls.Add(Me.Label2)
         Me.Controls.Add(Me.ButCancel)
         Me.Controls.Add(Me.ButOK)
-        Me.Controls.Add(Me.TbWHTC)
         Me.Controls.Add(Me.TbMAP)
-        Me.Controls.Add(Me.TbInertia)
-        Me.Controls.Add(Me.Label41)
         Me.Controls.Add(Me.Label3)
         Me.Controls.Add(Me.Label40)
         Me.Controls.Add(Me.Label1)
         Me.Controls.Add(Me.TbName)
-        Me.Controls.Add(Me.Label5)
         Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle
         Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
         Me.MaximizeBox = False
@@ -490,6 +571,10 @@ Partial Class F_ENG
         Me.CmOpenFile.ResumeLayout(False)
         Me.GroupBox1.ResumeLayout(False)
         Me.GroupBox1.PerformLayout()
+        Me.PnInertia.ResumeLayout(False)
+        Me.PnInertia.PerformLayout()
+        Me.GrWHTC.ResumeLayout(False)
+        Me.GrWHTC.PerformLayout()
         Me.ResumeLayout(False)
         Me.PerformLayout()
 
@@ -519,9 +604,6 @@ Partial Class F_ENG
     Friend WithEvents TbMAP As System.Windows.Forms.TextBox
     Friend WithEvents Label6 As System.Windows.Forms.Label
     Friend WithEvents BtMAP As System.Windows.Forms.Button
-    Friend WithEvents TbWHTC As System.Windows.Forms.TextBox
-    Friend WithEvents Label7 As System.Windows.Forms.Label
-    Friend WithEvents BtWHTC As System.Windows.Forms.Button
     Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox
     Friend WithEvents ToolStripSeparator1 As System.Windows.Forms.ToolStripSeparator
     Friend WithEvents ToolStripButton1 As System.Windows.Forms.ToolStripButton
@@ -537,4 +619,15 @@ Partial Class F_ENG
     Friend WithEvents ColumnHeader1 As System.Windows.Forms.ColumnHeader
     Friend WithEvents GroupBox1 As System.Windows.Forms.GroupBox
     Friend WithEvents Label32 As System.Windows.Forms.Label
+    Friend WithEvents PnInertia As System.Windows.Forms.Panel
+    Friend WithEvents GrWHTC As System.Windows.Forms.GroupBox
+    Friend WithEvents TbWHTCmw As System.Windows.Forms.TextBox
+    Friend WithEvents TbWHTCrural As System.Windows.Forms.TextBox
+    Friend WithEvents TbWHTCurban As System.Windows.Forms.TextBox
+    Friend WithEvents Label8 As System.Windows.Forms.Label
+    Friend WithEvents Label12 As System.Windows.Forms.Label
+    Friend WithEvents Label10 As System.Windows.Forms.Label
+    Friend WithEvents Label9 As System.Windows.Forms.Label
+    Friend WithEvents Label7 As System.Windows.Forms.Label
+    Friend WithEvents Label4 As System.Windows.Forms.Label
 End Class
diff --git a/VECTO/GUI/F_ENG.vb b/VECTO/GUI/F_ENG.vb
index 9036dd620abcd136d2896ae59b5790628550e0b3..d088e4d13f4471613780f281185b509b77acafdf 100644
--- a/VECTO/GUI/F_ENG.vb
+++ b/VECTO/GUI/F_ENG.vb
@@ -19,10 +19,25 @@
 
         FLDdia = New F_FLD
 
+        If Declaration.Active Then
+            Me.PnInertia.Enabled = False
+            Me.GrWHTC.Enabled = True
+        Else
+            Me.GrWHTC.Enabled = False
+        End If
+
+
         Changed = False
         newENG()
     End Sub
 
+    Private Sub DeclInit()
+
+        If Not Declaration.Active Then Exit Sub
+
+        Me.TbInertia.Text = CStr(Declaration.GetEngInertia(fTextboxToNumString(Me.TbDispl.Text)))
+    End Sub
+
 #Region "ToolStrip"
 
     Private Sub ToolStripBtNew_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripBtNew.Click
@@ -53,15 +68,15 @@
             End If
         End If
 
-        If Not F_GEN.Visible Then
+        If Not F_VECTO.Visible Then
             GenDir = ""
-            F_GEN.Show()
-            F_GEN.GENnew()
+            F_VECTO.Show()
+            F_VECTO.GENnew()
         Else
-            F_GEN.WindowState = FormWindowState.Normal
+            F_VECTO.WindowState = FormWindowState.Normal
         End If
 
-        F_GEN.TbENG.Text = fFileWoDir(EngFile, GenDir)
+        F_VECTO.TbENG.Text = fFileWoDir(EngFile, GenDir)
 
     End Sub
 
@@ -85,7 +100,13 @@
         Me.TbNleerl.Text = ""
         Me.LvFLDs.Items.Clear()
         Me.TbMAP.Text = ""
-        Me.TbWHTC.Text = ""
+        Me.TbWHTCurban.Text = ""
+        Me.TbWHTCrural.Text = ""
+        Me.TbWHTCmw.Text = ""
+
+
+        DeclInit()
+
 
         EngFile = ""
         Me.Text = "ENG Editor"
@@ -114,7 +135,7 @@
         Me.TbName.Text = ENG0.ModelName
         Me.TbDispl.Text = ENG0.Displ.ToString
         Me.TbInertia.Text = ENG0.I_mot.ToString
-        Me.TbNleerl.Text = ENG0.nleerl.ToString
+        Me.TbNleerl.Text = ENG0.Nidle.ToString
 
         Me.LvFLDs.Items.Clear()
         For i = 0 To ENG0.fFLD.Count - 1
@@ -124,7 +145,14 @@
         Next
 
         Me.TbMAP.Text = ENG0.PathMAP(True)
-        Me.TbWHTC.Text = ENG0.PathWHTC(True)
+        Me.TbWHTCurban.Text = ENG0.WHTCurban
+        Me.TbWHTCrural.Text = ENG0.WHTCrural
+        Me.TbWHTCmw.Text = ENG0.WHTCmw
+
+
+        DeclInit()
+
+
 
         fbENG.UpdateHistory(file)
         Me.Text = fFILE(file, True)
@@ -167,7 +195,7 @@
         If Trim(ENG0.ModelName) = "" Then ENG0.ModelName = "Undefined"
         ENG0.Displ = CSng(fTextboxToNumString(Me.TbDispl.Text))
         ENG0.I_mot = CSng(fTextboxToNumString(Me.TbInertia.Text))
-        ENG0.nleerl = CSng(fTextboxToNumString(Me.TbNleerl.Text))
+        ENG0.Nidle = CSng(fTextboxToNumString(Me.TbNleerl.Text))
 
         For i = 0 To Me.LvFLDs.Items.Count - 1
             ENG0.fFLD.Add(New cSubPath)
@@ -176,7 +204,14 @@
         Next
 
         ENG0.PathMAP = Me.TbMAP.Text
-        ENG0.PathWHTC = Me.TbWHTC.Text
+
+
+        ENG0.WHTCurban = CSng(fTextboxToNumString(Me.TbWHTCurban.Text))
+        ENG0.WHTCrural = CSng(fTextboxToNumString(Me.TbWHTCrural.Text))
+        ENG0.WHTCmw = CSng(fTextboxToNumString(Me.TbWHTCmw.Text))
+
+
+
 
         If Not ENG0.SaveFile Then
             MsgBox("Cannot safe to " & file, MsgBoxStyle.Critical)
@@ -184,7 +219,7 @@
         End If
 
         If Not GenDir = "" Or AutoSendTo Then
-            If F_GEN.Visible And UCase(fFileRepl(F_GEN.TbENG.Text, GenDir)) <> UCase(file) Then F_GEN.TbENG.Text = fFileWoDir(file, GenDir)
+            If F_VECTO.Visible And UCase(fFileRepl(F_VECTO.TbENG.Text, GenDir)) <> UCase(file) Then F_VECTO.TbENG.Text = fFileWoDir(file, GenDir)
         End If
 
         fbENG.UpdateHistory(file)
@@ -241,6 +276,7 @@
 
     Private Sub TbDispl_TextChanged(sender As System.Object, e As System.EventArgs) Handles TbDispl.TextChanged
         Change()
+        DeclInit()
     End Sub
 
     Private Sub TbInertia_TextChanged(sender As System.Object, e As System.EventArgs) Handles TbInertia.TextChanged
@@ -259,10 +295,20 @@
         Change()
     End Sub
 
-    Private Sub TbWHTC_TextChanged(sender As System.Object, e As System.EventArgs) Handles TbWHTC.TextChanged
+    Private Sub TbWHTCurban_TextChanged(sender As System.Object, e As System.EventArgs) Handles TbWHTCurban.TextChanged
+        Change()
+    End Sub
+
+    Private Sub TbWHTCrural_TextChanged(sender As System.Object, e As System.EventArgs) Handles TbWHTCrural.TextChanged
+        Change()
+    End Sub
+
+    Private Sub TbWHTCmw_TextChanged(sender As System.Object, e As System.EventArgs) Handles TbWHTCmw.TextChanged
         Change()
     End Sub
 
+
+
 #End Region
 
 
@@ -374,9 +420,6 @@
         If fbMAP.OpenDialog(fFileRepl(Me.TbMAP.Text, fPATH(EngFile))) Then Me.TbMAP.Text = fFileWoDir(fbMAP.Files(0), fPATH(EngFile))
     End Sub
 
-    Private Sub BtWHTC_Click(sender As System.Object, e As System.EventArgs) Handles BtWHTC.Click
-        If fbWHTC.OpenDialog(fFileRepl(Me.TbWHTC.Text, fPATH(EngFile))) Then Me.TbWHTC.Text = fFileWoDir(fbWHTC.Files(0), fPATH(EngFile))
-    End Sub
 
     Private Sub BtMAPopen_Click(sender As System.Object, e As System.EventArgs) Handles BtMAPopen.Click
         Dim fldfile As String
@@ -447,8 +490,5 @@
 
 #End Region
 
-
-
-
-
+   
 End Class
diff --git a/VECTO/GUI/F_GBX.Designer.vb b/VECTO/GUI/F_GBX.Designer.vb
index 92b50dcd4b4854fec518050191258d17225edda8..e6b9de385140c00b479b6dbe79b031f391e191c3 100644
--- a/VECTO/GUI/F_GBX.Designer.vb
+++ b/VECTO/GUI/F_GBX.Designer.vb
@@ -52,7 +52,7 @@ Partial Class F_GBX
         Me.TbName = New System.Windows.Forms.TextBox()
         Me.PictureBox1 = New System.Windows.Forms.PictureBox()
         Me.BtRemGear = New System.Windows.Forms.Button()
-        Me.GroupBox1 = New System.Windows.Forms.GroupBox()
+        Me.GrGearShift = New System.Windows.Forms.GroupBox()
         Me.PnTorqRes = New System.Windows.Forms.Panel()
         Me.Label2 = New System.Windows.Forms.Label()
         Me.Label4 = New System.Windows.Forms.Label()
@@ -95,16 +95,18 @@ Partial Class F_GBX
         Me.BtAddGear = New System.Windows.Forms.Button()
         Me.GroupBox4 = New System.Windows.Forms.GroupBox()
         Me.Label32 = New System.Windows.Forms.Label()
+        Me.PnInertiaTI = New System.Windows.Forms.Panel()
         Me.ToolStrip1.SuspendLayout()
         Me.StatusStrip1.SuspendLayout()
         CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit()
-        Me.GroupBox1.SuspendLayout()
+        Me.GrGearShift.SuspendLayout()
         Me.PnTorqRes.SuspendLayout()
         Me.GroupBox2.SuspendLayout()
         Me.CmOpenFile.SuspendLayout()
         Me.GroupBox3.SuspendLayout()
         Me.PnTC.SuspendLayout()
         Me.GroupBox4.SuspendLayout()
+        Me.PnInertiaTI.SuspendLayout()
         Me.SuspendLayout()
         '
         'ToolStrip1
@@ -225,7 +227,7 @@ Partial Class F_GBX
         '
         'TbTracInt
         '
-        Me.TbTracInt.Location = New System.Drawing.Point(352, 350)
+        Me.TbTracInt.Location = New System.Drawing.Point(303, 3)
         Me.TbTracInt.Name = "TbTracInt"
         Me.TbTracInt.Size = New System.Drawing.Size(40, 20)
         Me.TbTracInt.TabIndex = 5
@@ -267,7 +269,7 @@ Partial Class F_GBX
         '
         'TBI_getr
         '
-        Me.TBI_getr.Location = New System.Drawing.Point(102, 350)
+        Me.TBI_getr.Location = New System.Drawing.Point(53, 3)
         Me.TBI_getr.Name = "TBI_getr"
         Me.TBI_getr.Size = New System.Drawing.Size(57, 20)
         Me.TBI_getr.TabIndex = 4
@@ -275,7 +277,7 @@ Partial Class F_GBX
         'Label49
         '
         Me.Label49.AutoSize = True
-        Me.Label49.Location = New System.Drawing.Point(398, 353)
+        Me.Label49.Location = New System.Drawing.Point(349, 6)
         Me.Label49.Name = "Label49"
         Me.Label49.Size = New System.Drawing.Size(18, 13)
         Me.Label49.TabIndex = 2
@@ -284,7 +286,7 @@ Partial Class F_GBX
         'Label33
         '
         Me.Label33.AutoSize = True
-        Me.Label33.Location = New System.Drawing.Point(165, 353)
+        Me.Label33.Location = New System.Drawing.Point(116, 6)
         Me.Label33.Name = "Label33"
         Me.Label33.Size = New System.Drawing.Size(36, 13)
         Me.Label33.TabIndex = 2
@@ -293,7 +295,7 @@ Partial Class F_GBX
         'Label48
         '
         Me.Label48.AutoSize = True
-        Me.Label48.Location = New System.Drawing.Point(244, 353)
+        Me.Label48.Location = New System.Drawing.Point(195, 6)
         Me.Label48.Name = "Label48"
         Me.Label48.Size = New System.Drawing.Size(102, 13)
         Me.Label48.TabIndex = 2
@@ -302,7 +304,7 @@ Partial Class F_GBX
         'Label6
         '
         Me.Label6.AutoSize = True
-        Me.Label6.Location = New System.Drawing.Point(60, 353)
+        Me.Label6.Location = New System.Drawing.Point(11, 6)
         Me.Label6.Name = "Label6"
         Me.Label6.Size = New System.Drawing.Size(36, 13)
         Me.Label6.TabIndex = 2
@@ -343,25 +345,25 @@ Partial Class F_GBX
         Me.BtRemGear.TabIndex = 3
         Me.BtRemGear.UseVisualStyleBackColor = True
         '
-        'GroupBox1
-        '
-        Me.GroupBox1.Controls.Add(Me.PnTorqRes)
-        Me.GroupBox1.Controls.Add(Me.BtShiftPolyOpen)
-        Me.GroupBox1.Controls.Add(Me.ChShiftInside)
-        Me.GroupBox1.Controls.Add(Me.TbShiftTime)
-        Me.GroupBox1.Controls.Add(Me.Label12)
-        Me.GroupBox1.Controls.Add(Me.Label13)
-        Me.GroupBox1.Controls.Add(Me.ChSkipGears)
-        Me.GroupBox1.Controls.Add(Me.GroupBox2)
-        Me.GroupBox1.Controls.Add(Me.TbShiftPolyFile)
-        Me.GroupBox1.Controls.Add(Me.BtShiftPolyBrowse)
-        Me.GroupBox1.Controls.Add(Me.Label1)
-        Me.GroupBox1.Location = New System.Drawing.Point(12, 377)
-        Me.GroupBox1.Name = "GroupBox1"
-        Me.GroupBox1.Size = New System.Drawing.Size(441, 230)
-        Me.GroupBox1.TabIndex = 6
-        Me.GroupBox1.TabStop = False
-        Me.GroupBox1.Text = "Gear shift parameters"
+        'GrGearShift
+        '
+        Me.GrGearShift.Controls.Add(Me.PnTorqRes)
+        Me.GrGearShift.Controls.Add(Me.BtShiftPolyOpen)
+        Me.GrGearShift.Controls.Add(Me.ChShiftInside)
+        Me.GrGearShift.Controls.Add(Me.TbShiftTime)
+        Me.GrGearShift.Controls.Add(Me.Label12)
+        Me.GrGearShift.Controls.Add(Me.Label13)
+        Me.GrGearShift.Controls.Add(Me.ChSkipGears)
+        Me.GrGearShift.Controls.Add(Me.GroupBox2)
+        Me.GrGearShift.Controls.Add(Me.TbShiftPolyFile)
+        Me.GrGearShift.Controls.Add(Me.BtShiftPolyBrowse)
+        Me.GrGearShift.Controls.Add(Me.Label1)
+        Me.GrGearShift.Location = New System.Drawing.Point(12, 377)
+        Me.GrGearShift.Name = "GrGearShift"
+        Me.GrGearShift.Size = New System.Drawing.Size(441, 230)
+        Me.GrGearShift.TabIndex = 6
+        Me.GrGearShift.TabStop = False
+        Me.GrGearShift.Text = "Gear shift parameters"
         '
         'PnTorqRes
         '
@@ -746,6 +748,19 @@ Partial Class F_GBX
         Me.Label32.TabIndex = 35
         Me.Label32.Text = "Double-Click to edit gear"
         '
+        'PnInertiaTI
+        '
+        Me.PnInertiaTI.Controls.Add(Me.Label6)
+        Me.PnInertiaTI.Controls.Add(Me.TBI_getr)
+        Me.PnInertiaTI.Controls.Add(Me.Label33)
+        Me.PnInertiaTI.Controls.Add(Me.Label48)
+        Me.PnInertiaTI.Controls.Add(Me.Label49)
+        Me.PnInertiaTI.Controls.Add(Me.TbTracInt)
+        Me.PnInertiaTI.Location = New System.Drawing.Point(49, 347)
+        Me.PnInertiaTI.Name = "PnInertiaTI"
+        Me.PnInertiaTI.Size = New System.Drawing.Size(398, 30)
+        Me.PnInertiaTI.TabIndex = 47
+        '
         'F_GBX
         '
         Me.AcceptButton = Me.ButOK
@@ -753,24 +768,19 @@ Partial Class F_GBX
         Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
         Me.CancelButton = Me.ButCancel
         Me.ClientSize = New System.Drawing.Size(465, 786)
+        Me.Controls.Add(Me.PnInertiaTI)
         Me.Controls.Add(Me.GroupBox4)
         Me.Controls.Add(Me.CbGStype)
         Me.Controls.Add(Me.Label16)
         Me.Controls.Add(Me.PictureBox1)
-        Me.Controls.Add(Me.GroupBox1)
+        Me.Controls.Add(Me.GrGearShift)
         Me.Controls.Add(Me.GroupBox3)
         Me.Controls.Add(Me.Label3)
         Me.Controls.Add(Me.TbName)
         Me.Controls.Add(Me.ButCancel)
         Me.Controls.Add(Me.ButOK)
-        Me.Controls.Add(Me.TbTracInt)
         Me.Controls.Add(Me.StatusStrip1)
         Me.Controls.Add(Me.ToolStrip1)
-        Me.Controls.Add(Me.Label6)
-        Me.Controls.Add(Me.TBI_getr)
-        Me.Controls.Add(Me.Label49)
-        Me.Controls.Add(Me.Label33)
-        Me.Controls.Add(Me.Label48)
         Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle
         Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
         Me.MaximizeBox = False
@@ -782,8 +792,8 @@ Partial Class F_GBX
         Me.StatusStrip1.ResumeLayout(False)
         Me.StatusStrip1.PerformLayout()
         CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit()
-        Me.GroupBox1.ResumeLayout(False)
-        Me.GroupBox1.PerformLayout()
+        Me.GrGearShift.ResumeLayout(False)
+        Me.GrGearShift.PerformLayout()
         Me.PnTorqRes.ResumeLayout(False)
         Me.PnTorqRes.PerformLayout()
         Me.GroupBox2.ResumeLayout(False)
@@ -795,6 +805,8 @@ Partial Class F_GBX
         Me.PnTC.PerformLayout()
         Me.GroupBox4.ResumeLayout(False)
         Me.GroupBox4.PerformLayout()
+        Me.PnInertiaTI.ResumeLayout(False)
+        Me.PnInertiaTI.PerformLayout()
         Me.ResumeLayout(False)
         Me.PerformLayout()
 
@@ -826,7 +838,7 @@ Partial Class F_GBX
     Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox
     Friend WithEvents ToolStripSeparator1 As System.Windows.Forms.ToolStripSeparator
     Friend WithEvents ToolStripButton1 As System.Windows.Forms.ToolStripButton
-    Friend WithEvents GroupBox1 As System.Windows.Forms.GroupBox
+    Friend WithEvents GrGearShift As System.Windows.Forms.GroupBox
     Friend WithEvents Label1 As System.Windows.Forms.Label
     Friend WithEvents BtShiftPolyBrowse As System.Windows.Forms.Button
     Friend WithEvents TbShiftPolyFile As System.Windows.Forms.TextBox
@@ -870,4 +882,5 @@ Partial Class F_GBX
     Friend WithEvents ColumnHeader4 As System.Windows.Forms.ColumnHeader
     Friend WithEvents GroupBox4 As System.Windows.Forms.GroupBox
     Friend WithEvents Label32 As System.Windows.Forms.Label
+    Friend WithEvents PnInertiaTI As System.Windows.Forms.Panel
 End Class
diff --git a/VECTO/GUI/F_GBX.vb b/VECTO/GUI/F_GBX.vb
index 3a77fcde16c5c584468b4150612476adada82e41..99ebf791b9733dbab04436d2b93282e2ab274f62 100644
--- a/VECTO/GUI/F_GBX.vb
+++ b/VECTO/GUI/F_GBX.vb
@@ -20,13 +20,43 @@
         Init = False
         GearDia = New F_VEH_GearDlog
 
+        If Declaration.Active Then
+            Me.PnInertiaTI.Enabled = False
+            Me.GrGearShift.Enabled = False
+            Me.ChTCon.Enabled = False
+        End If
+
         Init = True
 
+        DeclInit()
+
         Changed = False
         newGBX()
 
     End Sub
 
+    Private Sub DeclInit()
+        Dim GStype As tGearbox
+
+        If Not Declaration.Active Then Exit Sub
+
+        Me.TBI_getr.Text = cDeclaration.GbInertia
+        Me.TbShiftPolyFile.Text = ""
+
+        GStype = CType(Me.CbGStype.SelectedIndex, tGearbox)
+
+        Me.TbTracInt.Text = Declaration.TracInt(GStype)
+        Me.TbShiftTime.Text = Declaration.ShiftTime(GStype)
+
+        Me.TbTqResv.Text = cDeclaration.TqResv
+        Me.TbTqResvStart.Text = cDeclaration.TqResvStart
+        Me.TbStartSpeed.Text = cDeclaration.StartSpeed
+        Me.TbStartAcc.Text = cDeclaration.StartAcc
+
+
+
+    End Sub
+
 #Region "ToolStrip"
 
     Private Sub ToolStripBtNew_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripBtNew.Click
@@ -57,15 +87,15 @@
             End If
         End If
 
-        If Not F_GEN.Visible Then
+        If Not F_VECTO.Visible Then
             GenDir = ""
-            F_GEN.Show()
-            F_GEN.GENnew()
+            F_VECTO.Show()
+            F_VECTO.GENnew()
         Else
-            F_GEN.WindowState = FormWindowState.Normal
+            F_VECTO.WindowState = FormWindowState.Normal
         End If
 
-        F_GEN.TbGBX.Text = fFileWoDir(GbxFile, GenDir)
+        F_VECTO.TbGBX.Text = fFileWoDir(GbxFile, GenDir)
 
     End Sub
 
@@ -112,6 +142,7 @@
         Me.TbTCfile.Text = ""
         Me.TbTCrefrpm.Text = ""
 
+        DeclInit()
 
         GbxFile = ""
         Me.Text = "GBX Editor"
@@ -184,6 +215,9 @@
         Me.CbGStype.SelectedIndex = CType(GBX0.gs_Type, Integer)
 
 
+        DeclInit()
+
+
         fbGBX.UpdateHistory(file)
         Me.Text = fFILE(file, True)
         Me.LbStatus.Text = ""
@@ -255,7 +289,7 @@
         End If
 
         If Not GenDir = "" Or AutoSendTo Then
-            If F_GEN.Visible And UCase(fFileRepl(F_GEN.TbGBX.Text, GenDir)) <> UCase(file) Then F_GEN.TbGBX.Text = fFileWoDir(file, GenDir)
+            If F_VECTO.Visible And UCase(fFileRepl(F_VECTO.TbGBX.Text, GenDir)) <> UCase(file) Then F_VECTO.TbGBX.Text = fFileWoDir(file, GenDir)
         End If
 
         fbGBX.UpdateHistory(file)
@@ -381,6 +415,8 @@
     Private Sub CbGStype_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles CbGStype.SelectedIndexChanged
         Dim GStype As tGearbox
 
+        If Me.CbGStype.SelectedIndex = 3 Then Me.CbGStype.SelectedIndex = 0
+
         Change()
 
         GStype = CType(Me.CbGStype.SelectedIndex, tGearbox)
diff --git a/VECTO/GUI/F_MAINForm.Designer.vb b/VECTO/GUI/F_MAINForm.Designer.vb
index e184d457056e2db41c8a1184301348882919dfee..ddbf0eb4e867ee23c0f3e9c8ee38d3eee3630f03 100644
--- a/VECTO/GUI/F_MAINForm.Designer.vb
+++ b/VECTO/GUI/F_MAINForm.Designer.vb
@@ -53,9 +53,6 @@ Partial Class F_MAINForm
         Me.ButtonDRIremove = New System.Windows.Forms.Button()
         Me.ButtonDRIadd = New System.Windows.Forms.Button()
         Me.TabPgOptions = New System.Windows.Forms.TabPage()
-        Me.GrBoxADV = New System.Windows.Forms.GroupBox()
-        Me.ChBoxFzpSort = New System.Windows.Forms.CheckBox()
-        Me.ChBoxFzpExport = New System.Windows.Forms.CheckBox()
         Me.GrBoxSTD = New System.Windows.Forms.GroupBox()
         Me.GrBoxBATCH = New System.Windows.Forms.GroupBox()
         Me.ChBoxBatchSubD = New System.Windows.Forms.CheckBox()
@@ -121,13 +118,13 @@ Partial Class F_MAINForm
         Me.OpenWithGRAPHiToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
         Me.OpenWithToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
         Me.ShowInFolderToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
+        Me.PnDeclOpt = New System.Windows.Forms.Panel()
         Me.StatusBAR.SuspendLayout()
         Me.TabControl1.SuspendLayout()
         Me.TabPageGEN.SuspendLayout()
         CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit()
         Me.TabPageDRI.SuspendLayout()
         Me.TabPgOptions.SuspendLayout()
-        Me.GrBoxADV.SuspendLayout()
         Me.GrBoxBATCH.SuspendLayout()
         Me.PanelOptAllg.SuspendLayout()
         Me.TabPageDEV.SuspendLayout()
@@ -138,6 +135,7 @@ Partial Class F_MAINForm
         Me.SplitContainer1.SuspendLayout()
         Me.ToolStrip1.SuspendLayout()
         Me.CmOpenFile.SuspendLayout()
+        Me.PnDeclOpt.SuspendLayout()
         Me.SuspendLayout()
         '
         'StatusBAR
@@ -450,7 +448,6 @@ Partial Class F_MAINForm
         '
         'TabPgOptions
         '
-        Me.TabPgOptions.Controls.Add(Me.GrBoxADV)
         Me.TabPgOptions.Controls.Add(Me.GrBoxSTD)
         Me.TabPgOptions.Controls.Add(Me.GrBoxBATCH)
         Me.TabPgOptions.Controls.Add(Me.ChBoxAutoSD)
@@ -463,42 +460,6 @@ Partial Class F_MAINForm
         Me.TabPgOptions.Text = "Options"
         Me.TabPgOptions.UseVisualStyleBackColor = True
         '
-        'GrBoxADV
-        '
-        Me.GrBoxADV.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
-            Or System.Windows.Forms.AnchorStyles.Left) _
-            Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
-        Me.GrBoxADV.Controls.Add(Me.ChBoxFzpSort)
-        Me.GrBoxADV.Controls.Add(Me.ChBoxFzpExport)
-        Me.GrBoxADV.Location = New System.Drawing.Point(6, 182)
-        Me.GrBoxADV.Name = "GrBoxADV"
-        Me.GrBoxADV.Size = New System.Drawing.Size(1106, 158)
-        Me.GrBoxADV.TabIndex = 0
-        Me.GrBoxADV.TabStop = False
-        Me.GrBoxADV.Text = "ADVANCE Options"
-        '
-        'ChBoxFzpSort
-        '
-        Me.ChBoxFzpSort.AutoSize = True
-        Me.ChBoxFzpSort.Checked = True
-        Me.ChBoxFzpSort.CheckState = System.Windows.Forms.CheckState.Checked
-        Me.ChBoxFzpSort.Location = New System.Drawing.Point(14, 23)
-        Me.ChBoxFzpSort.Name = "ChBoxFzpSort"
-        Me.ChBoxFzpSort.Size = New System.Drawing.Size(98, 17)
-        Me.ChBoxFzpSort.TabIndex = 0
-        Me.ChBoxFzpSort.Text = "Sort traffic data"
-        Me.ChBoxFzpSort.UseVisualStyleBackColor = True
-        '
-        'ChBoxFzpExport
-        '
-        Me.ChBoxFzpExport.AutoSize = True
-        Me.ChBoxFzpExport.Location = New System.Drawing.Point(35, 46)
-        Me.ChBoxFzpExport.Name = "ChBoxFzpExport"
-        Me.ChBoxFzpExport.Size = New System.Drawing.Size(141, 17)
-        Me.ChBoxFzpExport.TabIndex = 1
-        Me.ChBoxFzpExport.Text = "Export sorted traffic data"
-        Me.ChBoxFzpExport.UseVisualStyleBackColor = True
-        '
         'GrBoxSTD
         '
         Me.GrBoxSTD.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
@@ -588,10 +549,7 @@ Partial Class F_MAINForm
         '
         'PanelOptAllg
         '
-        Me.PanelOptAllg.Controls.Add(Me.Label1)
-        Me.PanelOptAllg.Controls.Add(Me.ChBoxCyclDistCor)
-        Me.PanelOptAllg.Controls.Add(Me.ChBoxUseGears)
-        Me.PanelOptAllg.Controls.Add(Me.CBoxMODE)
+        Me.PanelOptAllg.Controls.Add(Me.PnDeclOpt)
         Me.PanelOptAllg.Controls.Add(Me.ChBoxModOut)
         Me.PanelOptAllg.Location = New System.Drawing.Point(6, 6)
         Me.PanelOptAllg.Name = "PanelOptAllg"
@@ -601,7 +559,7 @@ Partial Class F_MAINForm
         'Label1
         '
         Me.Label1.AutoSize = True
-        Me.Label1.Location = New System.Drawing.Point(13, 14)
+        Me.Label1.Location = New System.Drawing.Point(5, 7)
         Me.Label1.Name = "Label1"
         Me.Label1.Size = New System.Drawing.Size(34, 13)
         Me.Label1.TabIndex = 1
@@ -610,7 +568,7 @@ Partial Class F_MAINForm
         'ChBoxCyclDistCor
         '
         Me.ChBoxCyclDistCor.AutoSize = True
-        Me.ChBoxCyclDistCor.Location = New System.Drawing.Point(14, 48)
+        Me.ChBoxCyclDistCor.Location = New System.Drawing.Point(6, 41)
         Me.ChBoxCyclDistCor.Name = "ChBoxCyclDistCor"
         Me.ChBoxCyclDistCor.Size = New System.Drawing.Size(148, 17)
         Me.ChBoxCyclDistCor.TabIndex = 0
@@ -620,7 +578,7 @@ Partial Class F_MAINForm
         'ChBoxUseGears
         '
         Me.ChBoxUseGears.AutoSize = True
-        Me.ChBoxUseGears.Location = New System.Drawing.Point(14, 71)
+        Me.ChBoxUseGears.Location = New System.Drawing.Point(6, 64)
         Me.ChBoxUseGears.Name = "ChBoxUseGears"
         Me.ChBoxUseGears.Size = New System.Drawing.Size(188, 17)
         Me.ChBoxUseGears.TabIndex = 0
@@ -633,7 +591,7 @@ Partial Class F_MAINForm
         Me.CBoxMODE.Font = New System.Drawing.Font("Tahoma", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         Me.CBoxMODE.FormattingEnabled = True
         Me.CBoxMODE.Items.AddRange(New Object() {"  STANDARD", "  BATCH"})
-        Me.CBoxMODE.Location = New System.Drawing.Point(53, 11)
+        Me.CBoxMODE.Location = New System.Drawing.Point(45, 4)
         Me.CBoxMODE.Name = "CBoxMODE"
         Me.CBoxMODE.Size = New System.Drawing.Size(105, 21)
         Me.CBoxMODE.TabIndex = 12
@@ -999,6 +957,17 @@ Partial Class F_MAINForm
         Me.ShowInFolderToolStripMenuItem.Size = New System.Drawing.Size(174, 22)
         Me.ShowInFolderToolStripMenuItem.Text = "Show in Folder"
         '
+        'PnDeclOpt
+        '
+        Me.PnDeclOpt.Controls.Add(Me.Label1)
+        Me.PnDeclOpt.Controls.Add(Me.ChBoxCyclDistCor)
+        Me.PnDeclOpt.Controls.Add(Me.ChBoxUseGears)
+        Me.PnDeclOpt.Controls.Add(Me.CBoxMODE)
+        Me.PnDeclOpt.Location = New System.Drawing.Point(8, 7)
+        Me.PnDeclOpt.Name = "PnDeclOpt"
+        Me.PnDeclOpt.Size = New System.Drawing.Size(202, 93)
+        Me.PnDeclOpt.TabIndex = 13
+        '
         'F_MAINForm
         '
         Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
@@ -1021,8 +990,6 @@ Partial Class F_MAINForm
         Me.TabPageDRI.PerformLayout()
         Me.TabPgOptions.ResumeLayout(False)
         Me.TabPgOptions.PerformLayout()
-        Me.GrBoxADV.ResumeLayout(False)
-        Me.GrBoxADV.PerformLayout()
         Me.GrBoxBATCH.ResumeLayout(False)
         Me.GrBoxBATCH.PerformLayout()
         Me.PanelOptAllg.ResumeLayout(False)
@@ -1036,6 +1003,8 @@ Partial Class F_MAINForm
         Me.ToolStrip1.ResumeLayout(False)
         Me.ToolStrip1.PerformLayout()
         Me.CmOpenFile.ResumeLayout(False)
+        Me.PnDeclOpt.ResumeLayout(False)
+        Me.PnDeclOpt.PerformLayout()
         Me.ResumeLayout(False)
         Me.PerformLayout()
 
@@ -1075,8 +1044,6 @@ Partial Class F_MAINForm
     Friend WithEvents ChBoxUseGears As System.Windows.Forms.CheckBox
     Friend WithEvents ChBoxCyclDistCor As System.Windows.Forms.CheckBox
     Friend WithEvents PanelOptAllg As System.Windows.Forms.Panel
-    Friend WithEvents ChBoxFzpExport As System.Windows.Forms.CheckBox
-    Friend WithEvents ChBoxFzpSort As System.Windows.Forms.CheckBox
     Friend WithEvents Label1 As System.Windows.Forms.Label
     Friend WithEvents LbAutoShDown As System.Windows.Forms.Label
     Friend WithEvents ChBoxAutoSD As System.Windows.Forms.CheckBox
@@ -1091,8 +1058,6 @@ Partial Class F_MAINForm
     Friend WithEvents ColumnHeader2 As System.Windows.Forms.ColumnHeader
     Friend WithEvents ColumnHeader3 As System.Windows.Forms.ColumnHeader
     Friend WithEvents GrBoxBATCH As System.Windows.Forms.GroupBox
-    Friend WithEvents GrBoxADV As System.Windows.Forms.GroupBox
-    Friend WithEvents GrBoxSTD As System.Windows.Forms.GroupBox
     Friend WithEvents TabPageDEV As System.Windows.Forms.TabPage
     Friend WithEvents LvDEVoptions As System.Windows.Forms.ListView
     Friend WithEvents ColumnHeader4 As System.Windows.Forms.ColumnHeader
@@ -1137,5 +1102,7 @@ Partial Class F_MAINForm
     Friend WithEvents SupportToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
     Friend WithEvents SignOrVerifyFilesToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
     Friend WithEvents ToolStripSeparator6 As System.Windows.Forms.ToolStripSeparator
+    Friend WithEvents GrBoxSTD As System.Windows.Forms.GroupBox
+    Friend WithEvents PnDeclOpt As System.Windows.Forms.Panel
 
 End Class
diff --git a/VECTO/GUI/F_MAINForm.vb b/VECTO/GUI/F_MAINForm.vb
index 517ebe4ad8be594baf4bb6739d8dacb2a95a127e..25866a968a69ecfa6faa4bfd6581952fb3b8f2e2 100644
--- a/VECTO/GUI/F_MAINForm.vb
+++ b/VECTO/GUI/F_MAINForm.vb
@@ -169,7 +169,7 @@ Public Class F_MAINForm
     'PHEM-Launcher
     Public Sub PHEM_Launcher()
         Dim ProgOverall As Boolean
-        Dim GEN0 As cGEN
+        Dim GEN0 As cVECTO
 
         'Called when PHEM already running
         If PHEMworker.IsBusy Then
@@ -217,10 +217,10 @@ Public Class F_MAINForm
         End If
 
         'Check whether Overall-progbar is needed
-        If PHEMmode = tPHEMmode.ModeBATCH Or JobFileList.Count > 1 Then
+        If PHEMmode = tPHEMmode.ModeBATCH Or JobFileList.Count > 1 Or Declaration.Active Then
             ProgOverall = True
         Else
-            GEN0 = New cGEN
+            GEN0 = New cVECTO
             GEN0.FilePath = JobFileList(0)
             If Not GEN0.ReadFile Then
                 GUImsg(tMsgID.Err, "Failed to job file (" & fFILE(JobFileList(0), True) & ")!")
@@ -240,7 +240,6 @@ Public Class F_MAINForm
         Me.PanelOptAllg.Enabled = Not Lock
         Me.GrBoxSTD.Enabled = Not Lock
         Me.GrBoxBATCH.Enabled = Not Lock
-        Me.GrBoxADV.Enabled = Not Lock
 
         Me.BtGENup.Enabled = Not Lock
         Me.BtGENdown.Enabled = Not Lock
@@ -537,6 +536,12 @@ Public Class F_MAINForm
             LoadDEVconfigs()
         End If
 
+        If Declaration.Active Then
+            Me.PnDeclOpt.Enabled = False
+            Me.CBoxMODE.SelectedIndex = 0
+            GUImsg(tMsgID.Warn, "VECTO is running in Declaration Mode")
+        End If
+
     End Sub
 
     'Shown Event (Form-Load finished) ... here StartUp Forms are loaded (DEV, GEN/ADV- Editor ..)
@@ -548,7 +553,7 @@ Public Class F_MAINForm
         End If
 
         'VECTO Init
-        'VEC.Init()
+        Declaration.Init()
 
         'Command Line Args
         If Command() <> "" Then
@@ -1555,7 +1560,6 @@ lbFound:
 
                 Me.GrBoxSTD.Visible = False  'weil GroupBox leer!!! sonst 'True
                 Me.GrBoxBATCH.Visible = False
-                Me.GrBoxADV.Visible = False
 
                 If DRIpageHere Then
                     Me.TabControl1.Controls.Remove(DRIpage)
@@ -1572,7 +1576,6 @@ lbFound:
 
                 Me.GrBoxSTD.Visible = False
                 Me.GrBoxBATCH.Visible = True
-                Me.GrBoxADV.Visible = False
 
                 If Not DRIpageHere Then
                     'Me.TabControl1.Controls.Add(DRIpage)
@@ -1722,20 +1725,20 @@ lbFound:
     'Open GEN-editor and load File
     Friend Sub OpenGENEditor(ByVal x As String)
 
-        If Not F_GEN.Visible Then
-            F_GEN.Show()
+        If Not F_VECTO.Visible Then
+            F_VECTO.Show()
         Else
-            If F_GEN.WindowState = FormWindowState.Minimized Then F_GEN.WindowState = FormWindowState.Normal
-            F_GEN.BringToFront()
+            If F_VECTO.WindowState = FormWindowState.Minimized Then F_VECTO.WindowState = FormWindowState.Normal
+            F_VECTO.BringToFront()
         End If
 
         If x = "<New>" Then
-            F_GEN.GENnew()
+            F_VECTO.GENnew()
         Else
-            F_GEN.GENload2Form(x)
+            F_VECTO.GENload2Form(x)
         End If
 
-        F_GEN.Activate()
+        F_VECTO.Activate()
 
     End Sub
 
@@ -1811,11 +1814,9 @@ lbFound:
 #Region "Options Tab"
 
     Public Sub LoadOptions()
-        Me.ChBoxFzpSort.Checked = Cfg.FZPsort
         Me.ChBoxCyclDistCor.Checked = Cfg.WegKorJa
         Me.ChBoxUseGears.Checked = Cfg.GnVorgab
         Me.ChBoxModOut.Checked = Cfg.ModOut
-        Me.ChBoxFzpExport.Checked = Cfg.FZPsortExp
         CbBOmode.SelectedIndex = -1
         Select Case UCase(Cfg.BATCHoutpath)
             Case sKey.WorkDir
@@ -1849,10 +1850,6 @@ lbFound:
         Cfg.WegKorJa = Me.ChBoxCyclDistCor.Checked
         Cfg.GnVorgab = Me.ChBoxUseGears.Checked
 
-        'ADVANCE
-        Cfg.FZPsortExp = Me.ChBoxFzpExport.Checked
-        Cfg.FZPsort = Me.ChBoxFzpSort.Checked
-
         'BATCH
         Cfg.ModOut = Me.ChBoxModOut.Checked
         Select Case CbBOmode.SelectedIndex
@@ -1875,9 +1872,6 @@ lbFound:
 
 #Region "Events"
 
-    Private Sub ChBoxAdvSort_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ChBoxFzpSort.CheckedChanged
-        Me.ChBoxFzpExport.Enabled = Me.ChBoxFzpSort.Checked
-    End Sub
 
     Private Sub ChBoxAutoSD_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ChBoxAutoSD.CheckedChanged
         Me.LbAutoShDown.Visible = Me.ChBoxAutoSD.Checked
diff --git a/VECTO/GUI/F_Options.Designer.vb b/VECTO/GUI/F_Options.Designer.vb
index 4bbe18a3dde2889f636e5ad9943faea3f90eb8ed..6d9869f486b5cb7143d1f26185f4f564bd8d98f6 100644
--- a/VECTO/GUI/F_Options.Designer.vb
+++ b/VECTO/GUI/F_Options.Designer.vb
@@ -28,7 +28,6 @@ Partial Class F_Options
         Me.ButtonOK = New System.Windows.Forms.Button()
         Me.ButtonCancel = New System.Windows.Forms.Button()
         Me.GroupBox3 = New System.Windows.Forms.GroupBox()
-        Me.CbJSON = New System.Windows.Forms.CheckBox()
         Me.GroupBox5 = New System.Windows.Forms.GroupBox()
         Me.TbOpenCmdName = New System.Windows.Forms.TextBox()
         Me.Label7 = New System.Windows.Forms.Label()
@@ -38,7 +37,7 @@ Partial Class F_Options
         Me.Label16 = New System.Windows.Forms.Label()
         Me.TabControl1 = New System.Windows.Forms.TabControl()
         Me.TabPage2 = New System.Windows.Forms.TabPage()
-        Me.GroupBox4 = New System.Windows.Forms.GroupBox()
+        Me.GrCalc = New System.Windows.Forms.GroupBox()
         Me.Label11 = New System.Windows.Forms.Label()
         Me.Label9 = New System.Windows.Forms.Label()
         Me.Label3 = New System.Windows.Forms.Label()
@@ -55,7 +54,7 @@ Partial Class F_Options
         Me.GroupBox5.SuspendLayout()
         Me.TabControl1.SuspendLayout()
         Me.TabPage2.SuspendLayout()
-        Me.GroupBox4.SuspendLayout()
+        Me.GrCalc.SuspendLayout()
         Me.SuspendLayout()
         '
         'TextBoxWorDir
@@ -109,7 +108,6 @@ Partial Class F_Options
         '
         'GroupBox3
         '
-        Me.GroupBox3.Controls.Add(Me.CbJSON)
         Me.GroupBox3.Controls.Add(Me.GroupBox5)
         Me.GroupBox3.Controls.Add(Me.TextBoxLogSize)
         Me.GroupBox3.Controls.Add(Me.Label16)
@@ -120,16 +118,6 @@ Partial Class F_Options
         Me.GroupBox3.TabStop = False
         Me.GroupBox3.Text = "Interface"
         '
-        'CbJSON
-        '
-        Me.CbJSON.AutoSize = True
-        Me.CbJSON.Location = New System.Drawing.Point(21, 80)
-        Me.CbJSON.Name = "CbJSON"
-        Me.CbJSON.Size = New System.Drawing.Size(168, 17)
-        Me.CbJSON.TabIndex = 15
-        Me.CbJSON.Text = "In- and Output in JSON format"
-        Me.CbJSON.UseVisualStyleBackColor = True
-        '
         'GroupBox5
         '
         Me.GroupBox5.Controls.Add(Me.TbOpenCmdName)
@@ -205,7 +193,7 @@ Partial Class F_Options
         '
         'TabPage2
         '
-        Me.TabPage2.Controls.Add(Me.GroupBox4)
+        Me.TabPage2.Controls.Add(Me.GrCalc)
         Me.TabPage2.Controls.Add(Me.GroupBoxWorDir)
         Me.TabPage2.Controls.Add(Me.GroupBox3)
         Me.TabPage2.Location = New System.Drawing.Point(4, 22)
@@ -216,23 +204,23 @@ Partial Class F_Options
         Me.TabPage2.Text = "VECTO"
         Me.TabPage2.UseVisualStyleBackColor = True
         '
-        'GroupBox4
-        '
-        Me.GroupBox4.Controls.Add(Me.Label11)
-        Me.GroupBox4.Controls.Add(Me.Label9)
-        Me.GroupBox4.Controls.Add(Me.Label3)
-        Me.GroupBox4.Controls.Add(Me.TbCO2toFC)
-        Me.GroupBox4.Controls.Add(Me.Label10)
-        Me.GroupBox4.Controls.Add(Me.TbFuelDens)
-        Me.GroupBox4.Controls.Add(Me.Label8)
-        Me.GroupBox4.Controls.Add(Me.TbAirDensity)
-        Me.GroupBox4.Controls.Add(Me.Label2)
-        Me.GroupBox4.Location = New System.Drawing.Point(6, 193)
-        Me.GroupBox4.Name = "GroupBox4"
-        Me.GroupBox4.Size = New System.Drawing.Size(488, 103)
-        Me.GroupBox4.TabIndex = 12
-        Me.GroupBox4.TabStop = False
-        Me.GroupBox4.Text = "Calculation"
+        'GrCalc
+        '
+        Me.GrCalc.Controls.Add(Me.Label11)
+        Me.GrCalc.Controls.Add(Me.Label9)
+        Me.GrCalc.Controls.Add(Me.Label3)
+        Me.GrCalc.Controls.Add(Me.TbCO2toFC)
+        Me.GrCalc.Controls.Add(Me.Label10)
+        Me.GrCalc.Controls.Add(Me.TbFuelDens)
+        Me.GrCalc.Controls.Add(Me.Label8)
+        Me.GrCalc.Controls.Add(Me.TbAirDensity)
+        Me.GrCalc.Controls.Add(Me.Label2)
+        Me.GrCalc.Location = New System.Drawing.Point(6, 193)
+        Me.GrCalc.Name = "GrCalc"
+        Me.GrCalc.Size = New System.Drawing.Size(488, 103)
+        Me.GrCalc.TabIndex = 12
+        Me.GrCalc.TabStop = False
+        Me.GrCalc.Text = "Calculation"
         '
         'Label11
         '
@@ -354,8 +342,8 @@ Partial Class F_Options
         Me.GroupBox5.PerformLayout()
         Me.TabControl1.ResumeLayout(False)
         Me.TabPage2.ResumeLayout(False)
-        Me.GroupBox4.ResumeLayout(False)
-        Me.GroupBox4.PerformLayout()
+        Me.GrCalc.ResumeLayout(False)
+        Me.GrCalc.PerformLayout()
         Me.ResumeLayout(False)
 
     End Sub
@@ -372,7 +360,7 @@ Partial Class F_Options
     Friend WithEvents ButReset As System.Windows.Forms.Button
     Friend WithEvents TbOpenCmd As System.Windows.Forms.TextBox
     Friend WithEvents Label7 As System.Windows.Forms.Label
-    Friend WithEvents GroupBox4 As System.Windows.Forms.GroupBox
+    Friend WithEvents GrCalc As System.Windows.Forms.GroupBox
     Friend WithEvents Label3 As System.Windows.Forms.Label
     Friend WithEvents TbAirDensity As System.Windows.Forms.TextBox
     Friend WithEvents Label2 As System.Windows.Forms.Label
@@ -386,5 +374,4 @@ Partial Class F_Options
     Friend WithEvents GroupBox5 As System.Windows.Forms.GroupBox
     Friend WithEvents TbOpenCmdName As System.Windows.Forms.TextBox
     Friend WithEvents Label12 As System.Windows.Forms.Label
-    Friend WithEvents CbJSON As System.Windows.Forms.CheckBox
 End Class
diff --git a/VECTO/GUI/F_Options.vb b/VECTO/GUI/F_Options.vb
index f09129de323e2747dd4352da25b6803a5368eaf3..580765e1bf674fadd798198cdf186fd9e32ff91f 100644
--- a/VECTO/GUI/F_Options.vb
+++ b/VECTO/GUI/F_Options.vb
@@ -5,6 +5,16 @@
     'Initialize - load config
     Private Sub F03_Options_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
         LoadConfig()
+
+        If Declaration.Active Then
+            Me.GrCalc.Enabled = False
+            Me.TbAirDensity.Text = cDeclaration.AirDensity
+            Me.TbFuelDens.Text = cDeclaration.FuelDens
+            Me.TbCO2toFC.Text = cDeclaration.CO2perFC
+        End If
+
+
+
     End Sub
 
     'Load Config
@@ -17,13 +27,13 @@
         Me.TbOpenCmdName.Text = Cfg.OpenCmdName
         Me.TbFuelDens.Text = Cfg.FuelDens.ToString
         Me.TbCO2toFC.Text = Cfg.CO2perFC.ToString
-        Me.CbJSON.Checked = Cfg.JSON
     End Sub
 
     'Reset Button
     Private Sub ButReset_Click(sender As System.Object, e As System.EventArgs) Handles ButReset.Click
         If MsgBox("This will reset all application settings including the Options Tab. Filehistory will not be deleted." & vbCrLf & vbCrLf & "Continue ?", MsgBoxStyle.YesNo, "Reset Application Settings") = MsgBoxResult.Yes Then
             Cfg.SetDefault()
+            If Declaration.Active Then Cfg.DeclInit()
             LoadConfig()
             F_MAINForm.LoadOptions()
         End If
@@ -38,7 +48,6 @@
         Cfg.OpenCmdName = Me.TbOpenCmdName.Text
         Cfg.FuelDens = CSng(Me.TbFuelDens.Text)
         Cfg.CO2perFC = CSng(Me.TbCO2toFC.Text)
-        Cfg.JSON = Me.CbJSON.Checked
         '----------------------------------------------------
 
         Call Cfg.ConfigSAVE()
diff --git a/VECTO/GUI/F_GEN.Designer.vb b/VECTO/GUI/F_VECTO.Designer.vb
similarity index 90%
rename from VECTO/GUI/F_GEN.Designer.vb
rename to VECTO/GUI/F_VECTO.Designer.vb
index 87817b408da0493015c231c031a3549d4a6e1ec2..b9568ae90a0634bfdea6cd1ab5f3bf2072ea1cd5 100644
--- a/VECTO/GUI/F_GEN.Designer.vb
+++ b/VECTO/GUI/F_VECTO.Designer.vb
@@ -1,5 +1,5 @@
 <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
-Partial Class F_GEN
+Partial Class F_VECTO
     Inherits System.Windows.Forms.Form
 
     'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
@@ -23,9 +23,9 @@ Partial Class F_GEN
     <System.Diagnostics.DebuggerStepThrough()> _
     Private Sub InitializeComponent()
         Me.components = New System.ComponentModel.Container()
-        Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(F_GEN))
+        Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(F_VECTO))
         Me.TabPgGen = New System.Windows.Forms.TabPage()
-        Me.GroupBox5 = New System.Windows.Forms.GroupBox()
+        Me.GrCycles = New System.Windows.Forms.GroupBox()
         Me.Label2 = New System.Windows.Forms.Label()
         Me.LvCycles = New System.Windows.Forms.ListView()
         Me.ColumnHeader1 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
@@ -50,7 +50,12 @@ Partial Class F_GEN
         Me.ButtonMAP = New System.Windows.Forms.Button()
         Me.TabControl1 = New System.Windows.Forms.TabControl()
         Me.TabPgDriver = New System.Windows.Forms.TabPage()
-        Me.GroupBox4 = New System.Windows.Forms.GroupBox()
+        Me.PnVACC = New System.Windows.Forms.Panel()
+        Me.Label1 = New System.Windows.Forms.Label()
+        Me.TbDesMaxFile = New System.Windows.Forms.TextBox()
+        Me.BtDesMaxBr = New System.Windows.Forms.Button()
+        Me.BtAccOpen = New System.Windows.Forms.Button()
+        Me.GrLAC = New System.Windows.Forms.GroupBox()
         Me.PnLookAhead = New System.Windows.Forms.Panel()
         Me.Label29 = New System.Windows.Forms.Label()
         Me.Label25 = New System.Windows.Forms.Label()
@@ -76,18 +81,14 @@ Partial Class F_GEN
         Me.PnStartStop = New System.Windows.Forms.Panel()
         Me.Label31 = New System.Windows.Forms.Label()
         Me.Label27 = New System.Windows.Forms.Label()
-        Me.TBSSspeed = New System.Windows.Forms.TextBox()
+        Me.TbSSspeed = New System.Windows.Forms.TextBox()
         Me.LabelSSspeed = New System.Windows.Forms.Label()
         Me.Label26 = New System.Windows.Forms.Label()
         Me.Label30 = New System.Windows.Forms.Label()
         Me.LabelSStime = New System.Windows.Forms.Label()
-        Me.TbStStDelay = New System.Windows.Forms.TextBox()
-        Me.TBSStime = New System.Windows.Forms.TextBox()
+        Me.TbSSdelay = New System.Windows.Forms.TextBox()
+        Me.TbSStime = New System.Windows.Forms.TextBox()
         Me.ChBStartStop = New System.Windows.Forms.CheckBox()
-        Me.BtAccOpen = New System.Windows.Forms.Button()
-        Me.Label1 = New System.Windows.Forms.Label()
-        Me.BtDesMaxBr = New System.Windows.Forms.Button()
-        Me.TbDesMaxFile = New System.Windows.Forms.TextBox()
         Me.StatusStrip1 = New System.Windows.Forms.StatusStrip()
         Me.ToolStripStatusLabelGEN = New System.Windows.Forms.ToolStripStatusLabel()
         Me.ButOK = New System.Windows.Forms.Button()
@@ -108,11 +109,12 @@ Partial Class F_GEN
         Me.OpenWithToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
         Me.ShowInFolderToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
         Me.TabPgGen.SuspendLayout()
-        Me.GroupBox5.SuspendLayout()
+        Me.GrCycles.SuspendLayout()
         Me.GrAux.SuspendLayout()
         Me.TabControl1.SuspendLayout()
         Me.TabPgDriver.SuspendLayout()
-        Me.GroupBox4.SuspendLayout()
+        Me.PnVACC.SuspendLayout()
+        Me.GrLAC.SuspendLayout()
         Me.PnLookAhead.SuspendLayout()
         Me.GroupBox1.SuspendLayout()
         Me.GrStartStop.SuspendLayout()
@@ -125,7 +127,7 @@ Partial Class F_GEN
         '
         'TabPgGen
         '
-        Me.TabPgGen.Controls.Add(Me.GroupBox5)
+        Me.TabPgGen.Controls.Add(Me.GrCycles)
         Me.TabPgGen.Controls.Add(Me.GrAux)
         Me.TabPgGen.Controls.Add(Me.TbGBX)
         Me.TabPgGen.Controls.Add(Me.TbENG)
@@ -144,18 +146,18 @@ Partial Class F_GEN
         Me.TabPgGen.Text = "General"
         Me.TabPgGen.UseVisualStyleBackColor = True
         '
-        'GroupBox5
+        'GrCycles
         '
-        Me.GroupBox5.Controls.Add(Me.Label2)
-        Me.GroupBox5.Controls.Add(Me.LvCycles)
-        Me.GroupBox5.Controls.Add(Me.BtDRIrem)
-        Me.GroupBox5.Controls.Add(Me.BtDRIadd)
-        Me.GroupBox5.Location = New System.Drawing.Point(6, 247)
-        Me.GroupBox5.Name = "GroupBox5"
-        Me.GroupBox5.Size = New System.Drawing.Size(634, 177)
-        Me.GroupBox5.TabIndex = 34
-        Me.GroupBox5.TabStop = False
-        Me.GroupBox5.Text = "Cycles"
+        Me.GrCycles.Controls.Add(Me.Label2)
+        Me.GrCycles.Controls.Add(Me.LvCycles)
+        Me.GrCycles.Controls.Add(Me.BtDRIrem)
+        Me.GrCycles.Controls.Add(Me.BtDRIadd)
+        Me.GrCycles.Location = New System.Drawing.Point(6, 247)
+        Me.GrCycles.Name = "GrCycles"
+        Me.GrCycles.Size = New System.Drawing.Size(634, 177)
+        Me.GrCycles.TabIndex = 34
+        Me.GrCycles.TabStop = False
+        Me.GrCycles.Text = "Cycles"
         '
         'Label2
         '
@@ -387,13 +389,10 @@ Partial Class F_GEN
         '
         'TabPgDriver
         '
-        Me.TabPgDriver.Controls.Add(Me.GroupBox4)
+        Me.TabPgDriver.Controls.Add(Me.PnVACC)
+        Me.TabPgDriver.Controls.Add(Me.GrLAC)
         Me.TabPgDriver.Controls.Add(Me.GroupBox1)
         Me.TabPgDriver.Controls.Add(Me.GrStartStop)
-        Me.TabPgDriver.Controls.Add(Me.BtAccOpen)
-        Me.TabPgDriver.Controls.Add(Me.Label1)
-        Me.TabPgDriver.Controls.Add(Me.BtDesMaxBr)
-        Me.TabPgDriver.Controls.Add(Me.TbDesMaxFile)
         Me.TabPgDriver.Location = New System.Drawing.Point(4, 22)
         Me.TabPgDriver.Name = "TabPgDriver"
         Me.TabPgDriver.Padding = New System.Windows.Forms.Padding(3)
@@ -402,16 +401,62 @@ Partial Class F_GEN
         Me.TabPgDriver.Text = "Driver Assist"
         Me.TabPgDriver.UseVisualStyleBackColor = True
         '
-        'GroupBox4
+        'PnVACC
+        '
+        Me.PnVACC.Controls.Add(Me.Label1)
+        Me.PnVACC.Controls.Add(Me.TbDesMaxFile)
+        Me.PnVACC.Controls.Add(Me.BtDesMaxBr)
+        Me.PnVACC.Controls.Add(Me.BtAccOpen)
+        Me.PnVACC.Location = New System.Drawing.Point(3, 6)
+        Me.PnVACC.Name = "PnVACC"
+        Me.PnVACC.Size = New System.Drawing.Size(640, 44)
+        Me.PnVACC.TabIndex = 33
+        '
+        'Label1
+        '
+        Me.Label1.AutoSize = True
+        Me.Label1.Location = New System.Drawing.Point(3, 0)
+        Me.Label1.Name = "Label1"
+        Me.Label1.Size = New System.Drawing.Size(177, 13)
+        Me.Label1.TabIndex = 32
+        Me.Label1.Text = "Max. acceleration and brake curves"
+        '
+        'TbDesMaxFile
+        '
+        Me.TbDesMaxFile.Location = New System.Drawing.Point(3, 16)
+        Me.TbDesMaxFile.Name = "TbDesMaxFile"
+        Me.TbDesMaxFile.Size = New System.Drawing.Size(571, 20)
+        Me.TbDesMaxFile.TabIndex = 0
+        '
+        'BtDesMaxBr
+        '
+        Me.BtDesMaxBr.Location = New System.Drawing.Point(580, 15)
+        Me.BtDesMaxBr.Name = "BtDesMaxBr"
+        Me.BtDesMaxBr.Size = New System.Drawing.Size(28, 21)
+        Me.BtDesMaxBr.TabIndex = 1
+        Me.BtDesMaxBr.Text = "..."
+        Me.BtDesMaxBr.UseVisualStyleBackColor = True
+        '
+        'BtAccOpen
+        '
+        Me.BtAccOpen.Image = Global.VECTO.My.Resources.Resources.application_export_icon_small
+        Me.BtAccOpen.Location = New System.Drawing.Point(614, 14)
+        Me.BtAccOpen.Name = "BtAccOpen"
+        Me.BtAccOpen.Size = New System.Drawing.Size(23, 23)
+        Me.BtAccOpen.TabIndex = 2
+        Me.BtAccOpen.TabStop = False
+        Me.BtAccOpen.UseVisualStyleBackColor = True
+        '
+        'GrLAC
         '
-        Me.GroupBox4.Controls.Add(Me.PnLookAhead)
-        Me.GroupBox4.Controls.Add(Me.CbLookAhead)
-        Me.GroupBox4.Location = New System.Drawing.Point(12, 331)
-        Me.GroupBox4.Name = "GroupBox4"
-        Me.GroupBox4.Size = New System.Drawing.Size(375, 87)
-        Me.GroupBox4.TabIndex = 5
-        Me.GroupBox4.TabStop = False
-        Me.GroupBox4.Text = "Look-Ahead Coasting"
+        Me.GrLAC.Controls.Add(Me.PnLookAhead)
+        Me.GrLAC.Controls.Add(Me.CbLookAhead)
+        Me.GrLAC.Location = New System.Drawing.Point(12, 307)
+        Me.GrLAC.Name = "GrLAC"
+        Me.GrLAC.Size = New System.Drawing.Size(375, 87)
+        Me.GrLAC.TabIndex = 5
+        Me.GrLAC.TabStop = False
+        Me.GrLAC.Text = "Look-Ahead Coasting"
         '
         'PnLookAhead
         '
@@ -620,7 +665,7 @@ Partial Class F_GEN
         '
         Me.GrStartStop.Controls.Add(Me.PnStartStop)
         Me.GrStartStop.Controls.Add(Me.ChBStartStop)
-        Me.GrStartStop.Location = New System.Drawing.Point(7, 56)
+        Me.GrStartStop.Location = New System.Drawing.Point(12, 56)
         Me.GrStartStop.Name = "GrStartStop"
         Me.GrStartStop.Size = New System.Drawing.Size(375, 130)
         Me.GrStartStop.TabIndex = 3
@@ -631,13 +676,13 @@ Partial Class F_GEN
         '
         Me.PnStartStop.Controls.Add(Me.Label31)
         Me.PnStartStop.Controls.Add(Me.Label27)
-        Me.PnStartStop.Controls.Add(Me.TBSSspeed)
+        Me.PnStartStop.Controls.Add(Me.TbSSspeed)
         Me.PnStartStop.Controls.Add(Me.LabelSSspeed)
         Me.PnStartStop.Controls.Add(Me.Label26)
         Me.PnStartStop.Controls.Add(Me.Label30)
         Me.PnStartStop.Controls.Add(Me.LabelSStime)
-        Me.PnStartStop.Controls.Add(Me.TbStStDelay)
-        Me.PnStartStop.Controls.Add(Me.TBSStime)
+        Me.PnStartStop.Controls.Add(Me.TbSSdelay)
+        Me.PnStartStop.Controls.Add(Me.TbSStime)
         Me.PnStartStop.Location = New System.Drawing.Point(148, 10)
         Me.PnStartStop.Name = "PnStartStop"
         Me.PnStartStop.Size = New System.Drawing.Size(221, 106)
@@ -661,12 +706,12 @@ Partial Class F_GEN
         Me.Label27.TabIndex = 38
         Me.Label27.Text = "[s]"
         '
-        'TBSSspeed
+        'TbSSspeed
         '
-        Me.TBSSspeed.Location = New System.Drawing.Point(99, 9)
-        Me.TBSSspeed.Name = "TBSSspeed"
-        Me.TBSSspeed.Size = New System.Drawing.Size(64, 20)
-        Me.TBSSspeed.TabIndex = 0
+        Me.TbSSspeed.Location = New System.Drawing.Point(99, 9)
+        Me.TbSSspeed.Name = "TbSSspeed"
+        Me.TbSSspeed.Size = New System.Drawing.Size(64, 20)
+        Me.TbSSspeed.TabIndex = 0
         '
         'LabelSSspeed
         '
@@ -704,19 +749,19 @@ Partial Class F_GEN
         Me.LabelSStime.TabIndex = 35
         Me.LabelSStime.Text = "Min ICE-On Time"
         '
-        'TbStStDelay
+        'TbSSdelay
         '
-        Me.TbStStDelay.Location = New System.Drawing.Point(99, 61)
-        Me.TbStStDelay.Name = "TbStStDelay"
-        Me.TbStStDelay.Size = New System.Drawing.Size(64, 20)
-        Me.TbStStDelay.TabIndex = 1
+        Me.TbSSdelay.Location = New System.Drawing.Point(99, 61)
+        Me.TbSSdelay.Name = "TbSSdelay"
+        Me.TbSSdelay.Size = New System.Drawing.Size(64, 20)
+        Me.TbSSdelay.TabIndex = 1
         '
-        'TBSStime
+        'TbSStime
         '
-        Me.TBSStime.Location = New System.Drawing.Point(99, 35)
-        Me.TBSStime.Name = "TBSStime"
-        Me.TBSStime.Size = New System.Drawing.Size(64, 20)
-        Me.TBSStime.TabIndex = 1
+        Me.TbSStime.Location = New System.Drawing.Point(99, 35)
+        Me.TbSStime.Name = "TbSStime"
+        Me.TbSStime.Size = New System.Drawing.Size(64, 20)
+        Me.TbSStime.TabIndex = 1
         '
         'ChBStartStop
         '
@@ -730,41 +775,6 @@ Partial Class F_GEN
         Me.ChBStartStop.Text = "Enabled"
         Me.ChBStartStop.UseVisualStyleBackColor = True
         '
-        'BtAccOpen
-        '
-        Me.BtAccOpen.Image = Global.VECTO.My.Resources.Resources.application_export_icon_small
-        Me.BtAccOpen.Location = New System.Drawing.Point(617, 28)
-        Me.BtAccOpen.Name = "BtAccOpen"
-        Me.BtAccOpen.Size = New System.Drawing.Size(23, 23)
-        Me.BtAccOpen.TabIndex = 2
-        Me.BtAccOpen.TabStop = False
-        Me.BtAccOpen.UseVisualStyleBackColor = True
-        '
-        'Label1
-        '
-        Me.Label1.AutoSize = True
-        Me.Label1.Location = New System.Drawing.Point(6, 14)
-        Me.Label1.Name = "Label1"
-        Me.Label1.Size = New System.Drawing.Size(177, 13)
-        Me.Label1.TabIndex = 32
-        Me.Label1.Text = "Max. acceleration and brake curves"
-        '
-        'BtDesMaxBr
-        '
-        Me.BtDesMaxBr.Location = New System.Drawing.Point(583, 29)
-        Me.BtDesMaxBr.Name = "BtDesMaxBr"
-        Me.BtDesMaxBr.Size = New System.Drawing.Size(28, 21)
-        Me.BtDesMaxBr.TabIndex = 1
-        Me.BtDesMaxBr.Text = "..."
-        Me.BtDesMaxBr.UseVisualStyleBackColor = True
-        '
-        'TbDesMaxFile
-        '
-        Me.TbDesMaxFile.Location = New System.Drawing.Point(6, 30)
-        Me.TbDesMaxFile.Name = "TbDesMaxFile"
-        Me.TbDesMaxFile.Size = New System.Drawing.Size(571, 20)
-        Me.TbDesMaxFile.TabIndex = 0
-        '
         'StatusStrip1
         '
         Me.StatusStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ToolStripStatusLabelGEN})
@@ -925,7 +935,7 @@ Partial Class F_GEN
         Me.ShowInFolderToolStripMenuItem.Size = New System.Drawing.Size(174, 22)
         Me.ShowInFolderToolStripMenuItem.Text = "Show in Folder"
         '
-        'F_GEN
+        'F_VEC
         '
         Me.AcceptButton = Me.ButOK
         Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
@@ -942,20 +952,21 @@ Partial Class F_GEN
         Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle
         Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
         Me.MaximizeBox = False
-        Me.Name = "F_GEN"
+        Me.Name = "F_VEC"
         Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent
-        Me.Text = "GEN Editor"
+        Me.Text = "VECTO Editor"
         Me.TabPgGen.ResumeLayout(False)
         Me.TabPgGen.PerformLayout()
-        Me.GroupBox5.ResumeLayout(False)
-        Me.GroupBox5.PerformLayout()
+        Me.GrCycles.ResumeLayout(False)
+        Me.GrCycles.PerformLayout()
         Me.GrAux.ResumeLayout(False)
         Me.GrAux.PerformLayout()
         Me.TabControl1.ResumeLayout(False)
         Me.TabPgDriver.ResumeLayout(False)
-        Me.TabPgDriver.PerformLayout()
-        Me.GroupBox4.ResumeLayout(False)
-        Me.GroupBox4.PerformLayout()
+        Me.PnVACC.ResumeLayout(False)
+        Me.PnVACC.PerformLayout()
+        Me.GrLAC.ResumeLayout(False)
+        Me.GrLAC.PerformLayout()
         Me.PnLookAhead.ResumeLayout(False)
         Me.PnLookAhead.PerformLayout()
         Me.GroupBox1.ResumeLayout(False)
@@ -1008,7 +1019,7 @@ Partial Class F_GEN
     Friend WithEvents BtDesMaxBr As System.Windows.Forms.Button
     Friend WithEvents TbDesMaxFile As System.Windows.Forms.TextBox
     Friend WithEvents Label1 As System.Windows.Forms.Label
-    Friend WithEvents GroupBox5 As System.Windows.Forms.GroupBox
+    Friend WithEvents GrCycles As System.Windows.Forms.GroupBox
     Friend WithEvents LvCycles As System.Windows.Forms.ListView
     Friend WithEvents ColumnHeader1 As System.Windows.Forms.ColumnHeader
     Friend WithEvents BtDRIrem As System.Windows.Forms.Button
@@ -1024,11 +1035,11 @@ Partial Class F_GEN
     Friend WithEvents ShowInFolderToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
     Friend WithEvents ChBStartStop As System.Windows.Forms.CheckBox
     Friend WithEvents GrStartStop As System.Windows.Forms.GroupBox
-    Friend WithEvents TBSSspeed As System.Windows.Forms.TextBox
-    Friend WithEvents TBSStime As System.Windows.Forms.TextBox
+    Friend WithEvents TbSSspeed As System.Windows.Forms.TextBox
+    Friend WithEvents TbSStime As System.Windows.Forms.TextBox
     Friend WithEvents LabelSStime As System.Windows.Forms.Label
     Friend WithEvents LabelSSspeed As System.Windows.Forms.Label
-    Friend WithEvents GroupBox4 As System.Windows.Forms.GroupBox
+    Friend WithEvents GrLAC As System.Windows.Forms.GroupBox
     Friend WithEvents Label25 As System.Windows.Forms.Label
     Friend WithEvents CbLookAhead As System.Windows.Forms.CheckBox
     Friend WithEvents TbAlookahead As System.Windows.Forms.TextBox
@@ -1055,6 +1066,7 @@ Partial Class F_GEN
     Friend WithEvents Label28 As System.Windows.Forms.Label
     Friend WithEvents Label31 As System.Windows.Forms.Label
     Friend WithEvents Label30 As System.Windows.Forms.Label
-    Friend WithEvents TbStStDelay As System.Windows.Forms.TextBox
+    Friend WithEvents TbSSdelay As System.Windows.Forms.TextBox
     Friend WithEvents Label32 As System.Windows.Forms.Label
+    Friend WithEvents PnVACC As System.Windows.Forms.Panel
 End Class
diff --git a/VECTO/GUI/F_GEN.resx b/VECTO/GUI/F_VECTO.resx
similarity index 100%
rename from VECTO/GUI/F_GEN.resx
rename to VECTO/GUI/F_VECTO.resx
diff --git a/VECTO/GUI/F_GEN.vb b/VECTO/GUI/F_VECTO.vb
similarity index 90%
rename from VECTO/GUI/F_GEN.vb
rename to VECTO/GUI/F_VECTO.vb
index 59533ca5b304cfe06a4c13feaf8ce978aaedbda7..60d37ae5aa377004e36a68d00966eddf4856aee4 100644
--- a/VECTO/GUI/F_GEN.vb
+++ b/VECTO/GUI/F_VECTO.vb
@@ -1,6 +1,6 @@
 Imports System.Collections.Generic
 
-Public Class F_GEN
+Public Class F_VECTO
 
     Private Genfile As String
     Private Changed As Boolean = False
@@ -26,6 +26,16 @@ Public Class F_GEN
 
         Me.LvAux.Columns(2).Width = -2
 
+        'Declaration Mode
+        If Declaration.Active Then
+            Me.CbEngOnly.Enabled = False
+            Me.GrCycles.Enabled = False
+            Me.PnVACC.Enabled = False
+            Me.PnStartStop.Enabled = False
+            Me.RdOff.Enabled = False
+            Me.GrLAC.Enabled = False
+        End If
+
         Changed = False
 
     End Sub
@@ -37,6 +47,23 @@ Public Class F_GEN
         End If
     End Sub
 
+    Private Sub DeclInit()
+
+        If Not Declaration.Active Then Exit Sub
+
+        Me.LvCycles.Items.Clear()
+        Me.CbEngOnly.Checked = False
+        Me.TbDesMaxFile.Text = ""
+        If Not Me.RdEcoRoll.Checked Then Me.RdOverspeed.Checked = True
+        Me.CbLookAhead.Checked = True
+
+        Me.TbSSspeed.Text = cDeclaration.SSspeed
+        Me.TbSStime.Text = cDeclaration.SStime
+        Me.TbSSdelay.Text = cDeclaration.SSdelay
+        Me.TbAlookahead.Text = cDeclaration.LACa
+        Me.TbVminLA.Text = cDeclaration.LACvmin
+    End Sub
+
 
 #Region "Tabs"
 
@@ -66,11 +93,11 @@ Public Class F_GEN
     Private Sub ButtonMAP_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonMAP.Click
         If fbENG.OpenDialog(fFileRepl(Me.TbENG.Text, fPATH(Genfile))) Then Me.TbENG.Text = fFileWoDir(fbENG.Files(0), fPATH(Genfile))
     End Sub
-  
+
     Private Sub ButtonFLD_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonGBX.Click
         If fbGBX.OpenDialog(fFileRepl(Me.TbGBX.Text, fPATH(Genfile))) Then Me.TbGBX.Text = fFileWoDir(fbGBX.Files(0), fPATH(Genfile))
     End Sub
- 
+
     'a_DesMax
     Private Sub BtDesMaxBr_Click_1(sender As System.Object, e As System.EventArgs) Handles BtDesMaxBr.Click
         If fbACC.OpenDialog(fFileRepl(Me.TbDesMaxFile.Text, fPATH(Genfile))) Then Me.TbDesMaxFile.Text = fFileWoDir(fbACC.Files(0), fPATH(Genfile))
@@ -228,8 +255,8 @@ Public Class F_GEN
     'Load GEN in the form
     Public Sub GENload2Form(ByVal file As String)
         Dim x As Int16
-        Dim Gfile As cGEN
-        Dim AuxEntryKV As KeyValuePair(Of String, cVEH.cAuxEntry)
+        Dim Gfile As cVECTO
+        Dim AuxEntryKV As KeyValuePair(Of String, cVECTO.cAuxEntry)
         Dim LV0 As ListViewItem
         Dim sb As cSubPath
 
@@ -238,7 +265,7 @@ Public Class F_GEN
         GENnew()
 
         'Read GEN
-        Gfile = New cGEN
+        Gfile = New cVECTO
         Gfile.FilePath = file
         Try
             If Not Gfile.ReadFile() Then
@@ -260,9 +287,9 @@ Public Class F_GEN
 
         'Start/Stop
         Me.ChBStartStop.Checked = Gfile.StartStop
-        Me.TBSSspeed.Text = Gfile.StStV
-        Me.TBSStime.Text = Gfile.StStT
-        Me.TbStStDelay.Text = Gfile.StStDelay
+        Me.TbSSspeed.Text = Gfile.StStV
+        Me.TbSStime.Text = Gfile.StStT
+        Me.TbSSdelay.Text = Gfile.StStDelay
 
         'VACC
         Me.TbDesMaxFile.Text = Gfile.DesMaxFile(True)
@@ -301,6 +328,9 @@ Public Class F_GEN
 
         '-------------------------------------------------------------
 
+        DeclInit()
+
+
         Genfile = file
 
         x = Len(file)
@@ -326,12 +356,12 @@ Public Class F_GEN
     'GEN save from form
     Private Function GENsave(ByVal file As String) As Boolean
 
-        Dim g As cGEN
-        Dim AuxEntry As cVEH.cAuxEntry
+        Dim g As cVECTO
+        Dim AuxEntry As cVECTO.cAuxEntry
         Dim LV0 As ListViewItem
         Dim sb As cSubPath
 
-        g = New cGEN
+        g = New cVECTO
         g.FilePath = file
 
         'Files ------------------------------------------------- -----------------
@@ -350,15 +380,15 @@ Public Class F_GEN
 
         'Start/Stop
         g.StartStop = Me.ChBStartStop.Checked
-        g.StStV = CSng(fTextboxToNumString(Me.TBSSspeed.Text))
-        g.StStT = CSng(fTextboxToNumString(Me.TBSStime.Text))
-        g.StStDelay = CInt(fTextboxToNumString(Me.TbStStDelay.Text))
+        g.StStV = CSng(fTextboxToNumString(Me.TbSSspeed.Text))
+        g.StStT = CSng(fTextboxToNumString(Me.TbSStime.Text))
+        g.StStDelay = CInt(fTextboxToNumString(Me.TbSSdelay.Text))
 
         'a_DesMax
         g.DesMaxFile = Me.TbDesMaxFile.Text
 
         For Each LV0 In LvAux.Items
-            AuxEntry = New cVEH.cAuxEntry
+            AuxEntry = New cVECTO.cAuxEntry
             AuxEntry.Path.Init(fPATH(file), LV0.SubItems(2).Text)
             AuxEntry.Type = LV0.SubItems(1).Text
             g.AuxPaths.Add(LV0.SubItems(0).Text, AuxEntry)
@@ -400,7 +430,7 @@ Public Class F_GEN
 
     End Function
 
-    'New BlankGEN
+    'New VECTO file
     Public Sub GENnew()
 
         If ChangeCheckCancel() Then Exit Sub
@@ -413,8 +443,8 @@ Public Class F_GEN
         Me.TbDesMaxFile.Text = ""
 
         'Start/Stop
-        Me.TBSSspeed.Text = "5"
-        Me.TBSStime.Text = "5"
+        Me.TbSSspeed.Text = "5"
+        Me.TbSStime.Text = "5"
         Me.ChBStartStop.Checked = False
 
         Me.LvAux.Items.Clear()
@@ -431,6 +461,9 @@ Public Class F_GEN
 
         '---------------------------------------------------
 
+        DeclInit()
+
+
         Genfile = ""
         Me.Text = "VECTO Editor"
         Me.ToolStripStatusLabelGEN.Text = ""
@@ -461,18 +494,18 @@ Public Class F_GEN
     Private Sub TextBoxFLD_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TbGBX.TextChanged
         Change()
     End Sub
-   
+
 
     Private Sub TbDesMaxFile_TextChanged_1(sender As System.Object, e As System.EventArgs) Handles TbDesMaxFile.TextChanged
         Change()
     End Sub
 
 
-    Private Sub TBSSspeed_TextChanged(sender As System.Object, e As System.EventArgs) Handles TBSSspeed.TextChanged
+    Private Sub TBSSspeed_TextChanged(sender As System.Object, e As System.EventArgs) Handles TbSSspeed.TextChanged
         Change()
     End Sub
 
-    Private Sub TBSStime_TextChanged(sender As System.Object, e As System.EventArgs) Handles TBSStime.TextChanged, TbStStDelay.TextChanged
+    Private Sub TBSStime_TextChanged(sender As System.Object, e As System.EventArgs) Handles TbSStime.TextChanged, TbSSdelay.TextChanged
         Change()
     End Sub
 
@@ -747,7 +780,7 @@ lbDlog:
 
     Private Sub ChBStartStop_CheckedChanged_1(sender As System.Object, e As System.EventArgs) Handles ChBStartStop.CheckedChanged
         Change()
-        Me.PnStartStop.Enabled = Me.ChBStartStop.Checked
+        If Not Declaration.Active Then Me.PnStartStop.Enabled = Me.ChBStartStop.Checked
     End Sub
 
 
@@ -823,7 +856,6 @@ lbDlog:
 
 #End Region
 
-    
 
 
 End Class
diff --git a/VECTO/GUI/F_VEH.Designer.vb b/VECTO/GUI/F_VEH.Designer.vb
index bdbd10ce9236bf4ba61af0d06ed5390c33976d8c..4f2c29cdf0c0af938425d01eac72cc0c884b1011 100644
--- a/VECTO/GUI/F_VEH.Designer.vb
+++ b/VECTO/GUI/F_VEH.Designer.vb
@@ -29,9 +29,9 @@ Partial Class F_VEH
         Me.Label2 = New System.Windows.Forms.Label()
         Me.TbLoad = New System.Windows.Forms.TextBox()
         Me.Label3 = New System.Windows.Forms.Label()
-        Me.TBcw = New System.Windows.Forms.TextBox()
+        Me.TBcdTrTr = New System.Windows.Forms.TextBox()
         Me.Label4 = New System.Windows.Forms.Label()
-        Me.TBAquers = New System.Windows.Forms.TextBox()
+        Me.TBAquersTrTr = New System.Windows.Forms.TextBox()
         Me.Label7 = New System.Windows.Forms.Label()
         Me.TbI_wheels = New System.Windows.Forms.TextBox()
         Me.Label13 = New System.Windows.Forms.Label()
@@ -76,6 +76,7 @@ Partial Class F_VEH
         Me.LvRRC = New System.Windows.Forms.ListView()
         Me.ColumnHeader7 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
         Me.ColumnHeader8 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
+        Me.ColumnHeader2 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
         Me.ColumnHeader9 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
         Me.ColumnHeader1 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
         Me.ButAxlAdd = New System.Windows.Forms.Button()
@@ -85,7 +86,7 @@ Partial Class F_VEH
         Me.CbCat = New System.Windows.Forms.ComboBox()
         Me.Label5 = New System.Windows.Forms.Label()
         Me.Label9 = New System.Windows.Forms.Label()
-        Me.TbMassMax = New System.Windows.Forms.TextBox()
+        Me.TbMassMass = New System.Windows.Forms.TextBox()
         Me.Label10 = New System.Windows.Forms.Label()
         Me.StatusStrip1 = New System.Windows.Forms.StatusStrip()
         Me.LbStatus = New System.Windows.Forms.ToolStripStatusLabel()
@@ -94,13 +95,20 @@ Partial Class F_VEH
         Me.TbLoadingMax = New System.Windows.Forms.TextBox()
         Me.Label22 = New System.Windows.Forms.Label()
         Me.GroupBox1 = New System.Windows.Forms.GroupBox()
+        Me.PnLoad = New System.Windows.Forms.Panel()
         Me.GroupBox4 = New System.Windows.Forms.GroupBox()
+        Me.PnCdATrTr = New System.Windows.Forms.Panel()
+        Me.LbCdATr = New System.Windows.Forms.Label()
+        Me.PnCdARig = New System.Windows.Forms.Panel()
+        Me.Label8 = New System.Windows.Forms.Label()
+        Me.TBcwRig = New System.Windows.Forms.TextBox()
+        Me.TBAquersRig = New System.Windows.Forms.TextBox()
         Me.PictureBox1 = New System.Windows.Forms.PictureBox()
         Me.CmOpenFile = New System.Windows.Forms.ContextMenuStrip(Me.components)
         Me.OpenWithGRAPHiToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
         Me.OpenWithToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
         Me.ShowInFolderToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
-        Me.ColumnHeader2 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
+        Me.PnAll = New System.Windows.Forms.Panel()
         Me.GroupBox6.SuspendLayout()
         Me.ToolStrip1.SuspendLayout()
         Me.GroupBox7.SuspendLayout()
@@ -108,9 +116,13 @@ Partial Class F_VEH
         Me.GroupBox8.SuspendLayout()
         Me.StatusStrip1.SuspendLayout()
         Me.GroupBox1.SuspendLayout()
+        Me.PnLoad.SuspendLayout()
         Me.GroupBox4.SuspendLayout()
+        Me.PnCdATrTr.SuspendLayout()
+        Me.PnCdARig.SuspendLayout()
         CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit()
         Me.CmOpenFile.SuspendLayout()
+        Me.PnAll.SuspendLayout()
         Me.SuspendLayout()
         '
         'Label1
@@ -132,7 +144,7 @@ Partial Class F_VEH
         'Label2
         '
         Me.Label2.AutoSize = True
-        Me.Label2.Location = New System.Drawing.Point(121, 74)
+        Me.Label2.Location = New System.Drawing.Point(115, 31)
         Me.Label2.Name = "Label2"
         Me.Label2.Size = New System.Drawing.Size(45, 13)
         Me.Label2.TabIndex = 2
@@ -140,7 +152,7 @@ Partial Class F_VEH
         '
         'TbLoad
         '
-        Me.TbLoad.Location = New System.Drawing.Point(172, 71)
+        Me.TbLoad.Location = New System.Drawing.Point(166, 28)
         Me.TbLoad.Name = "TbLoad"
         Me.TbLoad.Size = New System.Drawing.Size(57, 20)
         Me.TbLoad.TabIndex = 2
@@ -148,39 +160,39 @@ Partial Class F_VEH
         'Label3
         '
         Me.Label3.AutoSize = True
-        Me.Label3.Location = New System.Drawing.Point(83, 22)
+        Me.Label3.Location = New System.Drawing.Point(37, 47)
         Me.Label3.Name = "Label3"
-        Me.Label3.Size = New System.Drawing.Size(83, 13)
+        Me.Label3.Size = New System.Drawing.Size(58, 13)
         Me.Label3.TabIndex = 8
-        Me.Label3.Text = "Drag Coefficient"
+        Me.Label3.Text = "Drag Coef."
         '
-        'TBcw
+        'TBcdTrTr
         '
-        Me.TBcw.Location = New System.Drawing.Point(172, 19)
-        Me.TBcw.Name = "TBcw"
-        Me.TBcw.Size = New System.Drawing.Size(57, 20)
-        Me.TBcw.TabIndex = 0
+        Me.TBcdTrTr.Location = New System.Drawing.Point(2, 24)
+        Me.TBcdTrTr.Name = "TBcdTrTr"
+        Me.TBcdTrTr.Size = New System.Drawing.Size(57, 20)
+        Me.TBcdTrTr.TabIndex = 0
         '
         'Label4
         '
         Me.Label4.AutoSize = True
-        Me.Label4.Location = New System.Drawing.Point(61, 48)
+        Me.Label4.Location = New System.Drawing.Point(12, 73)
         Me.Label4.Name = "Label4"
-        Me.Label4.Size = New System.Drawing.Size(105, 13)
+        Me.Label4.Size = New System.Drawing.Size(83, 13)
         Me.Label4.TabIndex = 10
-        Me.Label4.Text = "Cross Sectional Area"
+        Me.Label4.Text = "Cross Sec. Area"
         '
-        'TBAquers
+        'TBAquersTrTr
         '
-        Me.TBAquers.Location = New System.Drawing.Point(172, 45)
-        Me.TBAquers.Name = "TBAquers"
-        Me.TBAquers.Size = New System.Drawing.Size(57, 20)
-        Me.TBAquers.TabIndex = 1
+        Me.TBAquersTrTr.Location = New System.Drawing.Point(2, 50)
+        Me.TBAquersTrTr.Name = "TBAquersTrTr"
+        Me.TBAquersTrTr.Size = New System.Drawing.Size(57, 20)
+        Me.TBAquersTrTr.TabIndex = 1
         '
         'Label7
         '
         Me.Label7.AutoSize = True
-        Me.Label7.Location = New System.Drawing.Point(62, 184)
+        Me.Label7.Location = New System.Drawing.Point(62, 177)
         Me.Label7.Name = "Label7"
         Me.Label7.Size = New System.Drawing.Size(75, 13)
         Me.Label7.TabIndex = 4
@@ -188,7 +200,7 @@ Partial Class F_VEH
         '
         'TbI_wheels
         '
-        Me.TbI_wheels.Location = New System.Drawing.Point(143, 181)
+        Me.TbI_wheels.Location = New System.Drawing.Point(143, 174)
         Me.TbI_wheels.Name = "TbI_wheels"
         Me.TbI_wheels.Size = New System.Drawing.Size(57, 20)
         Me.TbI_wheels.TabIndex = 4
@@ -196,7 +208,7 @@ Partial Class F_VEH
         'Label13
         '
         Me.Label13.AutoSize = True
-        Me.Label13.Location = New System.Drawing.Point(28, 210)
+        Me.Label13.Location = New System.Drawing.Point(28, 203)
         Me.Label13.Name = "Label13"
         Me.Label13.Size = New System.Drawing.Size(109, 13)
         Me.Label13.TabIndex = 6
@@ -204,7 +216,7 @@ Partial Class F_VEH
         '
         'TBDreifen
         '
-        Me.TBDreifen.Location = New System.Drawing.Point(143, 207)
+        Me.TBDreifen.Location = New System.Drawing.Point(143, 200)
         Me.TBDreifen.Name = "TBDreifen"
         Me.TBDreifen.Size = New System.Drawing.Size(57, 20)
         Me.TBDreifen.TabIndex = 5
@@ -212,7 +224,7 @@ Partial Class F_VEH
         '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(383, 534)
+        Me.ButOK.Location = New System.Drawing.Point(383, 561)
         Me.ButOK.Name = "ButOK"
         Me.ButOK.Size = New System.Drawing.Size(75, 23)
         Me.ButOK.TabIndex = 9
@@ -223,7 +235,7 @@ Partial Class F_VEH
         '
         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(464, 534)
+        Me.ButCancel.Location = New System.Drawing.Point(464, 561)
         Me.ButCancel.Name = "ButCancel"
         Me.ButCancel.Size = New System.Drawing.Size(75, 23)
         Me.ButCancel.TabIndex = 10
@@ -242,7 +254,7 @@ Partial Class F_VEH
         'Label31
         '
         Me.Label31.AutoSize = True
-        Me.Label31.Location = New System.Drawing.Point(235, 74)
+        Me.Label31.Location = New System.Drawing.Point(229, 31)
         Me.Label31.Name = "Label31"
         Me.Label31.Size = New System.Drawing.Size(25, 13)
         Me.Label31.TabIndex = 24
@@ -251,7 +263,7 @@ Partial Class F_VEH
         'Label32
         '
         Me.Label32.AutoSize = True
-        Me.Label32.Location = New System.Drawing.Point(206, 184)
+        Me.Label32.Location = New System.Drawing.Point(206, 177)
         Me.Label32.Name = "Label32"
         Me.Label32.Size = New System.Drawing.Size(36, 13)
         Me.Label32.TabIndex = 24
@@ -260,7 +272,7 @@ Partial Class F_VEH
         'Label35
         '
         Me.Label35.AutoSize = True
-        Me.Label35.Location = New System.Drawing.Point(206, 210)
+        Me.Label35.Location = New System.Drawing.Point(206, 203)
         Me.Label35.Name = "Label35"
         Me.Label35.Size = New System.Drawing.Size(21, 13)
         Me.Label35.TabIndex = 24
@@ -269,7 +281,7 @@ Partial Class F_VEH
         'Label37
         '
         Me.Label37.AutoSize = True
-        Me.Label37.Location = New System.Drawing.Point(235, 22)
+        Me.Label37.Location = New System.Drawing.Point(223, 47)
         Me.Label37.Name = "Label37"
         Me.Label37.Size = New System.Drawing.Size(16, 13)
         Me.Label37.TabIndex = 24
@@ -278,7 +290,7 @@ Partial Class F_VEH
         'Label38
         '
         Me.Label38.AutoSize = True
-        Me.Label38.Location = New System.Drawing.Point(235, 48)
+        Me.Label38.Location = New System.Drawing.Point(223, 73)
         Me.Label38.Name = "Label38"
         Me.Label38.Size = New System.Drawing.Size(24, 13)
         Me.Label38.TabIndex = 24
@@ -319,7 +331,7 @@ Partial Class F_VEH
         Me.GroupBox6.Controls.Add(Me.CbCdMode)
         Me.GroupBox6.Controls.Add(Me.BtCdFileBrowse)
         Me.GroupBox6.Controls.Add(Me.TbCdFile)
-        Me.GroupBox6.Location = New System.Drawing.Point(12, 361)
+        Me.GroupBox6.Location = New System.Drawing.Point(6, 241)
         Me.GroupBox6.Name = "GroupBox6"
         Me.GroupBox6.Size = New System.Drawing.Size(527, 74)
         Me.GroupBox6.TabIndex = 5
@@ -432,7 +444,7 @@ Partial Class F_VEH
         Me.GroupBox7.Controls.Add(Me.TbRtPath)
         Me.GroupBox7.Controls.Add(Me.CbRtType)
         Me.GroupBox7.Controls.Add(Me.Label12)
-        Me.GroupBox7.Location = New System.Drawing.Point(12, 441)
+        Me.GroupBox7.Location = New System.Drawing.Point(6, 321)
         Me.GroupBox7.Name = "GroupBox7"
         Me.GroupBox7.Size = New System.Drawing.Size(527, 81)
         Me.GroupBox7.TabIndex = 7
@@ -517,7 +529,7 @@ Partial Class F_VEH
         'Label46
         '
         Me.Label46.AutoSize = True
-        Me.Label46.Location = New System.Drawing.Point(12, 48)
+        Me.Label46.Location = New System.Drawing.Point(6, 5)
         Me.Label46.Name = "Label46"
         Me.Label46.Size = New System.Drawing.Size(154, 13)
         Me.Label46.TabIndex = 31
@@ -526,7 +538,7 @@ Partial Class F_VEH
         'Label50
         '
         Me.Label50.AutoSize = True
-        Me.Label50.Location = New System.Drawing.Point(235, 48)
+        Me.Label50.Location = New System.Drawing.Point(229, 5)
         Me.Label50.Name = "Label50"
         Me.Label50.Size = New System.Drawing.Size(25, 13)
         Me.Label50.TabIndex = 24
@@ -534,7 +546,7 @@ Partial Class F_VEH
         '
         'TbMassExtra
         '
-        Me.TbMassExtra.Location = New System.Drawing.Point(172, 45)
+        Me.TbMassExtra.Location = New System.Drawing.Point(166, 2)
         Me.TbMassExtra.Name = "TbMassExtra"
         Me.TbMassExtra.Size = New System.Drawing.Size(57, 20)
         Me.TbMassExtra.TabIndex = 1
@@ -550,18 +562,17 @@ Partial Class F_VEH
         Me.GroupBox8.Controls.Add(Me.Label7)
         Me.GroupBox8.Controls.Add(Me.Label32)
         Me.GroupBox8.Controls.Add(Me.Label35)
-        Me.GroupBox8.Location = New System.Drawing.Point(284, 116)
+        Me.GroupBox8.Location = New System.Drawing.Point(278, 3)
         Me.GroupBox8.Name = "GroupBox8"
-        Me.GroupBox8.Size = New System.Drawing.Size(255, 239)
+        Me.GroupBox8.Size = New System.Drawing.Size(255, 232)
         Me.GroupBox8.TabIndex = 4
         Me.GroupBox8.TabStop = False
         Me.GroupBox8.Text = "Axles / Wheels"
         '
         'ButAxlRem
         '
-        Me.ButAxlRem.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
         Me.ButAxlRem.Image = Global.VECTO.My.Resources.Resources.minus_circle_icon
-        Me.ButAxlRem.Location = New System.Drawing.Point(41, 148)
+        Me.ButAxlRem.Location = New System.Drawing.Point(41, 127)
         Me.ButAxlRem.Name = "ButAxlRem"
         Me.ButAxlRem.Size = New System.Drawing.Size(29, 23)
         Me.ButAxlRem.TabIndex = 2
@@ -569,8 +580,7 @@ Partial Class F_VEH
         '
         'LvRRC
         '
-        Me.LvRRC.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
-            Or System.Windows.Forms.AnchorStyles.Left) _
+        Me.LvRRC.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
             Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
         Me.LvRRC.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.ColumnHeader7, Me.ColumnHeader8, Me.ColumnHeader2, Me.ColumnHeader9, Me.ColumnHeader1})
         Me.LvRRC.FullRowSelect = True
@@ -579,7 +589,7 @@ Partial Class F_VEH
         Me.LvRRC.Location = New System.Drawing.Point(6, 19)
         Me.LvRRC.MultiSelect = False
         Me.LvRRC.Name = "LvRRC"
-        Me.LvRRC.Size = New System.Drawing.Size(243, 123)
+        Me.LvRRC.Size = New System.Drawing.Size(243, 102)
         Me.LvRRC.TabIndex = 0
         Me.LvRRC.TabStop = False
         Me.LvRRC.UseCompatibleStateImageBehavior = False
@@ -595,6 +605,11 @@ Partial Class F_VEH
         Me.ColumnHeader8.Text = "Rel. load"
         Me.ColumnHeader8.Width = 62
         '
+        'ColumnHeader2
+        '
+        Me.ColumnHeader2.Text = "Twin T."
+        Me.ColumnHeader2.Width = 51
+        '
         'ColumnHeader9
         '
         Me.ColumnHeader9.Text = "RRC"
@@ -607,9 +622,8 @@ Partial Class F_VEH
         '
         'ButAxlAdd
         '
-        Me.ButAxlAdd.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
         Me.ButAxlAdd.Image = Global.VECTO.My.Resources.Resources.plus_circle_icon
-        Me.ButAxlAdd.Location = New System.Drawing.Point(6, 148)
+        Me.ButAxlAdd.Location = New System.Drawing.Point(6, 127)
         Me.ButAxlAdd.Name = "ButAxlAdd"
         Me.ButAxlAdd.Size = New System.Drawing.Size(29, 23)
         Me.ButAxlAdd.TabIndex = 1
@@ -626,11 +640,10 @@ Partial Class F_VEH
         '
         'CbAxleConfig
         '
-        Me.CbAxleConfig.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
         Me.CbAxleConfig.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
         Me.CbAxleConfig.FormattingEnabled = True
         Me.CbAxleConfig.Items.AddRange(New Object() {"4x2", "4x4", "6x2", "6x4", "6x6", "8x2", "8x4", "8x6", "8x8"})
-        Me.CbAxleConfig.Location = New System.Drawing.Point(304, 82)
+        Me.CbAxleConfig.Location = New System.Drawing.Point(304, 83)
         Me.CbAxleConfig.Name = "CbAxleConfig"
         Me.CbAxleConfig.Size = New System.Drawing.Size(68, 21)
         Me.CbAxleConfig.TabIndex = 3
@@ -657,27 +670,27 @@ Partial Class F_VEH
         'Label5
         '
         Me.Label5.AutoSize = True
-        Me.Label5.Location = New System.Drawing.Point(31, 126)
+        Me.Label5.Location = New System.Drawing.Point(13, 119)
         Me.Label5.Name = "Label5"
-        Me.Label5.Size = New System.Drawing.Size(135, 13)
+        Me.Label5.Size = New System.Drawing.Size(134, 13)
         Me.Label5.TabIndex = 31
-        Me.Label5.Text = "Max. Gross Vehicle Weight"
+        Me.Label5.Text = "Gross Vehicle Mass Rating"
         '
         'Label9
         '
         Me.Label9.AutoSize = True
-        Me.Label9.Location = New System.Drawing.Point(235, 126)
+        Me.Label9.Location = New System.Drawing.Point(201, 119)
         Me.Label9.Name = "Label9"
-        Me.Label9.Size = New System.Drawing.Size(25, 13)
+        Me.Label9.Size = New System.Drawing.Size(16, 13)
         Me.Label9.TabIndex = 24
-        Me.Label9.Text = "[kg]"
+        Me.Label9.Text = "[t]"
         '
-        'TbMassMax
+        'TbMassMass
         '
-        Me.TbMassMax.Location = New System.Drawing.Point(172, 123)
-        Me.TbMassMax.Name = "TbMassMax"
-        Me.TbMassMax.Size = New System.Drawing.Size(57, 20)
-        Me.TbMassMax.TabIndex = 4
+        Me.TbMassMass.Location = New System.Drawing.Point(153, 116)
+        Me.TbMassMass.Name = "TbMassMass"
+        Me.TbMassMass.Size = New System.Drawing.Size(42, 20)
+        Me.TbMassMass.TabIndex = 4
         '
         'Label10
         '
@@ -691,7 +704,7 @@ Partial Class F_VEH
         'StatusStrip1
         '
         Me.StatusStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.LbStatus})
-        Me.StatusStrip1.Location = New System.Drawing.Point(0, 560)
+        Me.StatusStrip1.Location = New System.Drawing.Point(0, 587)
         Me.StatusStrip1.Name = "StatusStrip1"
         Me.StatusStrip1.Size = New System.Drawing.Size(551, 22)
         Me.StatusStrip1.SizingGrip = False
@@ -716,7 +729,7 @@ Partial Class F_VEH
         'Label11
         '
         Me.Label11.AutoSize = True
-        Me.Label11.Location = New System.Drawing.Point(95, 100)
+        Me.Label11.Location = New System.Drawing.Point(89, 57)
         Me.Label11.Name = "Label11"
         Me.Label11.Size = New System.Drawing.Size(71, 13)
         Me.Label11.TabIndex = 31
@@ -724,7 +737,7 @@ Partial Class F_VEH
         '
         'TbLoadingMax
         '
-        Me.TbLoadingMax.Location = New System.Drawing.Point(172, 97)
+        Me.TbLoadingMax.Location = New System.Drawing.Point(166, 54)
         Me.TbLoadingMax.Name = "TbLoadingMax"
         Me.TbLoadingMax.ReadOnly = True
         Me.TbLoadingMax.Size = New System.Drawing.Size(57, 20)
@@ -734,7 +747,7 @@ Partial Class F_VEH
         'Label22
         '
         Me.Label22.AutoSize = True
-        Me.Label22.Location = New System.Drawing.Point(235, 100)
+        Me.Label22.Location = New System.Drawing.Point(229, 57)
         Me.Label22.Name = "Label22"
         Me.Label22.Size = New System.Drawing.Size(25, 13)
         Me.Label22.TabIndex = 24
@@ -742,43 +755,100 @@ Partial Class F_VEH
         '
         'GroupBox1
         '
+        Me.GroupBox1.Controls.Add(Me.PnLoad)
         Me.GroupBox1.Controls.Add(Me.TbMass)
         Me.GroupBox1.Controls.Add(Me.Label1)
-        Me.GroupBox1.Controls.Add(Me.Label2)
-        Me.GroupBox1.Controls.Add(Me.TbLoad)
         Me.GroupBox1.Controls.Add(Me.Label14)
-        Me.GroupBox1.Controls.Add(Me.Label31)
-        Me.GroupBox1.Controls.Add(Me.Label50)
-        Me.GroupBox1.Controls.Add(Me.TbLoadingMax)
-        Me.GroupBox1.Controls.Add(Me.Label9)
-        Me.GroupBox1.Controls.Add(Me.Label22)
-        Me.GroupBox1.Controls.Add(Me.Label46)
-        Me.GroupBox1.Controls.Add(Me.TbMassExtra)
-        Me.GroupBox1.Controls.Add(Me.TbMassMax)
-        Me.GroupBox1.Controls.Add(Me.Label11)
-        Me.GroupBox1.Controls.Add(Me.Label5)
-        Me.GroupBox1.Location = New System.Drawing.Point(12, 116)
+        Me.GroupBox1.Location = New System.Drawing.Point(6, 3)
         Me.GroupBox1.Name = "GroupBox1"
-        Me.GroupBox1.Size = New System.Drawing.Size(266, 156)
+        Me.GroupBox1.Size = New System.Drawing.Size(266, 124)
         Me.GroupBox1.TabIndex = 2
         Me.GroupBox1.TabStop = False
         Me.GroupBox1.Text = "Weight / Loading"
         '
+        'PnLoad
+        '
+        Me.PnLoad.Controls.Add(Me.Label2)
+        Me.PnLoad.Controls.Add(Me.Label31)
+        Me.PnLoad.Controls.Add(Me.TbLoad)
+        Me.PnLoad.Controls.Add(Me.TbMassExtra)
+        Me.PnLoad.Controls.Add(Me.TbLoadingMax)
+        Me.PnLoad.Controls.Add(Me.Label50)
+        Me.PnLoad.Controls.Add(Me.Label46)
+        Me.PnLoad.Controls.Add(Me.Label22)
+        Me.PnLoad.Controls.Add(Me.Label11)
+        Me.PnLoad.Location = New System.Drawing.Point(6, 43)
+        Me.PnLoad.Name = "PnLoad"
+        Me.PnLoad.Size = New System.Drawing.Size(256, 84)
+        Me.PnLoad.TabIndex = 25
+        '
         'GroupBox4
         '
-        Me.GroupBox4.Controls.Add(Me.TBcw)
+        Me.GroupBox4.Controls.Add(Me.PnCdATrTr)
+        Me.GroupBox4.Controls.Add(Me.PnCdARig)
         Me.GroupBox4.Controls.Add(Me.Label3)
         Me.GroupBox4.Controls.Add(Me.Label4)
-        Me.GroupBox4.Controls.Add(Me.TBAquers)
         Me.GroupBox4.Controls.Add(Me.Label37)
         Me.GroupBox4.Controls.Add(Me.Label38)
-        Me.GroupBox4.Location = New System.Drawing.Point(12, 278)
+        Me.GroupBox4.Location = New System.Drawing.Point(6, 133)
         Me.GroupBox4.Name = "GroupBox4"
-        Me.GroupBox4.Size = New System.Drawing.Size(266, 77)
+        Me.GroupBox4.Size = New System.Drawing.Size(266, 102)
         Me.GroupBox4.TabIndex = 3
         Me.GroupBox4.TabStop = False
         Me.GroupBox4.Text = "Air Resistance"
         '
+        'PnCdATrTr
+        '
+        Me.PnCdATrTr.Controls.Add(Me.LbCdATr)
+        Me.PnCdATrTr.Controls.Add(Me.TBcdTrTr)
+        Me.PnCdATrTr.Controls.Add(Me.TBAquersTrTr)
+        Me.PnCdATrTr.Location = New System.Drawing.Point(97, 20)
+        Me.PnCdATrTr.Name = "PnCdATrTr"
+        Me.PnCdATrTr.Size = New System.Drawing.Size(60, 76)
+        Me.PnCdATrTr.TabIndex = 27
+        '
+        'LbCdATr
+        '
+        Me.LbCdATr.AutoSize = True
+        Me.LbCdATr.Location = New System.Drawing.Point(2, 1)
+        Me.LbCdATr.Name = "LbCdATr"
+        Me.LbCdATr.Size = New System.Drawing.Size(58, 13)
+        Me.LbCdATr.TabIndex = 25
+        Me.LbCdATr.Text = "Tr && Trailer"
+        '
+        'PnCdARig
+        '
+        Me.PnCdARig.Controls.Add(Me.Label8)
+        Me.PnCdARig.Controls.Add(Me.TBcwRig)
+        Me.PnCdARig.Controls.Add(Me.TBAquersRig)
+        Me.PnCdARig.Location = New System.Drawing.Point(157, 18)
+        Me.PnCdARig.Name = "PnCdARig"
+        Me.PnCdARig.Size = New System.Drawing.Size(60, 78)
+        Me.PnCdARig.TabIndex = 26
+        '
+        'Label8
+        '
+        Me.Label8.AutoSize = True
+        Me.Label8.Location = New System.Drawing.Point(10, 3)
+        Me.Label8.Name = "Label8"
+        Me.Label8.Size = New System.Drawing.Size(31, 13)
+        Me.Label8.TabIndex = 25
+        Me.Label8.Text = "Rigid"
+        '
+        'TBcwRig
+        '
+        Me.TBcwRig.Location = New System.Drawing.Point(3, 26)
+        Me.TBcwRig.Name = "TBcwRig"
+        Me.TBcwRig.Size = New System.Drawing.Size(57, 20)
+        Me.TBcwRig.TabIndex = 0
+        '
+        'TBAquersRig
+        '
+        Me.TBAquersRig.Location = New System.Drawing.Point(3, 52)
+        Me.TBAquersRig.Name = "TBAquersRig"
+        Me.TBAquersRig.Size = New System.Drawing.Size(57, 20)
+        Me.TBAquersRig.TabIndex = 1
+        '
         'PictureBox1
         '
         Me.PictureBox1.BackColor = System.Drawing.Color.White
@@ -813,10 +883,17 @@ Partial Class F_VEH
         Me.ShowInFolderToolStripMenuItem.Size = New System.Drawing.Size(174, 22)
         Me.ShowInFolderToolStripMenuItem.Text = "Show in Folder"
         '
-        'ColumnHeader2
+        'PnAll
         '
-        Me.ColumnHeader2.Text = "Twin T."
-        Me.ColumnHeader2.Width = 51
+        Me.PnAll.Controls.Add(Me.GroupBox4)
+        Me.PnAll.Controls.Add(Me.GroupBox1)
+        Me.PnAll.Controls.Add(Me.GroupBox8)
+        Me.PnAll.Controls.Add(Me.GroupBox7)
+        Me.PnAll.Controls.Add(Me.GroupBox6)
+        Me.PnAll.Location = New System.Drawing.Point(6, 148)
+        Me.PnAll.Name = "PnAll"
+        Me.PnAll.Size = New System.Drawing.Size(544, 407)
+        Me.PnAll.TabIndex = 38
         '
         'F_VEH
         '
@@ -824,21 +901,20 @@ Partial Class F_VEH
         Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
         Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
         Me.CancelButton = Me.ButCancel
-        Me.ClientSize = New System.Drawing.Size(551, 582)
+        Me.ClientSize = New System.Drawing.Size(551, 609)
+        Me.Controls.Add(Me.PnAll)
         Me.Controls.Add(Me.PictureBox1)
-        Me.Controls.Add(Me.GroupBox4)
         Me.Controls.Add(Me.Label23)
-        Me.Controls.Add(Me.GroupBox1)
+        Me.Controls.Add(Me.Label9)
         Me.Controls.Add(Me.StatusStrip1)
         Me.Controls.Add(Me.CbAxleConfig)
+        Me.Controls.Add(Me.TbMassMass)
         Me.Controls.Add(Me.CbCat)
+        Me.Controls.Add(Me.Label5)
         Me.Controls.Add(Me.Label21)
-        Me.Controls.Add(Me.GroupBox8)
         Me.Controls.Add(Me.TbHDVclass)
         Me.Controls.Add(Me.Label10)
-        Me.Controls.Add(Me.GroupBox7)
         Me.Controls.Add(Me.ToolStrip1)
-        Me.Controls.Add(Me.GroupBox6)
         Me.Controls.Add(Me.ButCancel)
         Me.Controls.Add(Me.ButOK)
         Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle
@@ -861,10 +937,17 @@ Partial Class F_VEH
         Me.StatusStrip1.PerformLayout()
         Me.GroupBox1.ResumeLayout(False)
         Me.GroupBox1.PerformLayout()
+        Me.PnLoad.ResumeLayout(False)
+        Me.PnLoad.PerformLayout()
         Me.GroupBox4.ResumeLayout(False)
         Me.GroupBox4.PerformLayout()
+        Me.PnCdATrTr.ResumeLayout(False)
+        Me.PnCdATrTr.PerformLayout()
+        Me.PnCdARig.ResumeLayout(False)
+        Me.PnCdARig.PerformLayout()
         CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit()
         Me.CmOpenFile.ResumeLayout(False)
+        Me.PnAll.ResumeLayout(False)
         Me.ResumeLayout(False)
         Me.PerformLayout()
 
@@ -874,9 +957,9 @@ Partial Class F_VEH
     Friend WithEvents Label2 As System.Windows.Forms.Label
     Friend WithEvents TbLoad As System.Windows.Forms.TextBox
     Friend WithEvents Label3 As System.Windows.Forms.Label
-    Friend WithEvents TBcw As System.Windows.Forms.TextBox
+    Friend WithEvents TBcdTrTr As System.Windows.Forms.TextBox
     Friend WithEvents Label4 As System.Windows.Forms.Label
-    Friend WithEvents TBAquers As System.Windows.Forms.TextBox
+    Friend WithEvents TBAquersTrTr As System.Windows.Forms.TextBox
     Friend WithEvents Label7 As System.Windows.Forms.Label
     Friend WithEvents TbI_wheels As System.Windows.Forms.TextBox
     Friend WithEvents Label13 As System.Windows.Forms.Label
@@ -923,7 +1006,7 @@ Partial Class F_VEH
     Friend WithEvents CbCat As System.Windows.Forms.ComboBox
     Friend WithEvents Label5 As System.Windows.Forms.Label
     Friend WithEvents Label9 As System.Windows.Forms.Label
-    Friend WithEvents TbMassMax As System.Windows.Forms.TextBox
+    Friend WithEvents TbMassMass As System.Windows.Forms.TextBox
     Friend WithEvents ColumnHeader9 As System.Windows.Forms.ColumnHeader
     Friend WithEvents Label10 As System.Windows.Forms.Label
     Friend WithEvents StatusStrip1 As System.Windows.Forms.StatusStrip
@@ -946,4 +1029,12 @@ Partial Class F_VEH
     Friend WithEvents BtCdFileOpen As System.Windows.Forms.Button
     Friend WithEvents ColumnHeader1 As System.Windows.Forms.ColumnHeader
     Friend WithEvents ColumnHeader2 As System.Windows.Forms.ColumnHeader
+    Friend WithEvents PnLoad As System.Windows.Forms.Panel
+    Friend WithEvents Label8 As System.Windows.Forms.Label
+    Friend WithEvents LbCdATr As System.Windows.Forms.Label
+    Friend WithEvents TBcwRig As System.Windows.Forms.TextBox
+    Friend WithEvents TBAquersRig As System.Windows.Forms.TextBox
+    Friend WithEvents PnCdARig As System.Windows.Forms.Panel
+    Friend WithEvents PnCdATrTr As System.Windows.Forms.Panel
+    Friend WithEvents PnAll As System.Windows.Forms.Panel
 End Class
diff --git a/VECTO/GUI/F_VEH.vb b/VECTO/GUI/F_VEH.vb
index ec26ff4c625b7be54f61bb5a77adba4ce2a72c58..0d9649f69d580fdc70d76a29d78c8a170051fbb9 100644
--- a/VECTO/GUI/F_VEH.vb
+++ b/VECTO/GUI/F_VEH.vb
@@ -19,12 +19,128 @@ Public Class F_VEH
     'Init
     Private Sub F05_VEH_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 
+        'Declaration Mode
+        If Declaration.Active Then
+            Me.PnLoad.Enabled = False
+            Me.TbLoadingMax.Text = "-"
+            Me.ButAxlAdd.Enabled = False
+            Me.ButAxlRem.Enabled = False
+            Me.CbCdMode.Enabled = False
+        Else
+            Me.PnCdARig.Enabled = False
+            Me.LbCdATr.Visible = False
+        End If
+
         Changed = False
 
         newVEH()
 
     End Sub
 
+
+    Private Sub DeclInit()
+        Dim VehC As tVehCat
+        Dim AxlC As tAxleConf
+        Dim MaxMass As Single
+        Dim HDVclass As String
+        Dim s0 As cSegmentTableEntry = Nothing
+        Dim i As Int16
+        Dim i0 As Int16
+        Dim AxleCount As Int16
+        Dim lvi As ListViewItem
+        Dim RigEnabled As Boolean
+        Dim TrTrEnabled As Boolean
+
+        If Not Declaration.Active Then Exit Sub
+
+        VehC = CType(Me.CbCat.SelectedIndex, tVehCat)
+
+        AxlC = CType(Me.CbAxleConfig.SelectedIndex, tAxleConf)
+
+        MaxMass = CSng(fTextboxToNumString(Me.TbMassMass.Text))
+
+        If Declaration.SegmentTable.SetRef(s0, VehC, AxlC, MaxMass) Then
+            HDVclass = s0.HDVclass
+
+            AxleCount = s0.AxleShares(s0.Missions(0)).Count
+            i0 = LvRRC.Items.Count
+
+            If AxleCount > i0 Then
+                For i = 1 To AxleCount - LvRRC.Items.Count
+                    lvi = New ListViewItem
+                    lvi.SubItems(0).Text = (i + i0).ToString
+                    lvi.SubItems.Add("-")
+                    lvi.SubItems.Add("no")
+                    lvi.SubItems.Add("")
+                    lvi.SubItems.Add("")
+                    LvRRC.Items.Add(lvi)
+                Next
+
+            ElseIf AxleCount < LvRRC.Items.Count Then
+                For i = AxleCount To LvRRC.Items.Count - 1
+                    LvRRC.Items.RemoveAt(LvRRC.Items.Count - 1)
+                    'LvRRC.Items(i).ForeColor = Color.Red
+                Next
+            End If
+
+            If s0.LongHaulRigidTrailer Then
+               
+                RigEnabled = True
+                TrTrEnabled = True
+         
+            Else
+
+                If s0.VehCat = tVehCat.RigidTruck Then
+                    RigEnabled = True
+                    TrTrEnabled = False
+                Else
+                    RigEnabled = False
+                    TrTrEnabled = True
+                End If
+
+            End If
+
+            Me.PnAll.Enabled = True
+
+        Else
+            Me.PnAll.Enabled = False
+            HDVclass = "-"
+            RigEnabled = False
+            TrTrEnabled = False
+        End If
+
+
+        If RigEnabled Then
+            Me.PnCdARig.Enabled = True
+            If Me.TBcwRig.Text = "-" Then Me.TBcwRig.Text = ""
+            If Me.TBAquersRig.Text = "-" Then Me.TBAquersRig.Text = ""
+        Else
+            Me.PnCdARig.Enabled = False
+            Me.TBcwRig.Text = "-"
+            Me.TBAquersRig.Text = "-"
+        End If
+
+        If TrTrEnabled Then
+            Me.PnCdATrTr.Enabled = True
+            If Me.TBcdTrTr.Text = "-" Then Me.TBcdTrTr.Text = ""
+            If Me.TBAquersTrTr.Text = "-" Then Me.TBAquersTrTr.Text = ""
+        Else
+            Me.PnCdATrTr.Enabled = False
+            Me.TBcdTrTr.Text = "-"
+            Me.TBAquersTrTr.Text = "-"
+        End If
+
+        Me.TbHDVclass.Text = HDVclass
+        Me.TbMassExtra.Text = "-"
+        Me.TbLoad.Text = "-"
+        Me.CbCdMode.SelectedIndex = 1
+
+
+
+    End Sub
+
+
+
 #Region "Menü / Toolstrip"
 
     'New
@@ -61,15 +177,15 @@ Public Class F_VEH
         End If
 
 
-        If Not F_GEN.Visible Then
+        If Not F_VECTO.Visible Then
             GenDir = ""
-            F_GEN.Show()
-            F_GEN.GENnew()
+            F_VECTO.Show()
+            F_VECTO.GENnew()
         Else
-            F_GEN.WindowState = FormWindowState.Normal
+            F_VECTO.WindowState = FormWindowState.Normal
         End If
 
-        F_GEN.TextBoxVEH.Text = fFileWoDir(VehFile, GenDir)
+        F_VECTO.TextBoxVEH.Text = fFileWoDir(VehFile, GenDir)
 
     End Sub
 
@@ -117,14 +233,10 @@ Public Class F_VEH
         Me.TbLoad.Text = ""
         Me.TbI_wheels.Text = ""
         Me.TBDreifen.Text = ""
-        Me.TBcw.Text = ""
-        Me.TBAquers.Text = ""
-        'Me.TBlhinauf.Text = ""
-        'Me.TBlhinunter.Text = ""
-        'Me.TBhinauf.Text = ""
-        'Me.TBhinunter.Text = ""
-        'Me.TBpspar.Text = ""
-        'Me.TBpfast.Text = ""
+        Me.TBcdTrTr.Text = ""
+        Me.TBAquersTrTr.Text = ""
+        Me.TBcwRig.Text = ""
+        Me.TBAquersRig.Text = ""
 
         Me.CbCdMode.SelectedIndex = 0
         Me.TbCdFile.Text = ""
@@ -137,11 +249,13 @@ Public Class F_VEH
 
         Me.LvRRC.Items.Clear()
 
-        Me.TbMassMax.Text = ""
+        Me.TbMassMass.Text = ""
         Me.TbMassExtra.Text = ""
         Me.CbAxleConfig.SelectedIndex = 0
-        'TODO: AUTO: Me.TbHDVclass.Text
-        'AUTO: Me.TbLoadingMax.Text
+
+
+        DeclInit()
+
 
 
         VehFile = ""
@@ -176,14 +290,8 @@ Public Class F_VEH
         Me.TbLoad.Text = VEH0.Loading
         Me.TbI_wheels.Text = VEH0.I_wheels
         Me.TBDreifen.Text = VEH0.Dreifen
-        Me.TBcw.Text = VEH0.Cd0
-        Me.TBAquers.Text = VEH0.Aquers
-        'Me.TBhinauf.Text = VEH0.hinauf
-        'Me.TBhinunter.Text = VEH0.hinunter
-        'Me.TBlhinauf.Text = VEH0.lhinauf
-        'Me.TBlhinunter.Text = VEH0.lhinunter
-        'Me.TBpspar.Text = VEH0.pspar
-        'Me.TBpfast.Text = 1 - VEH0.pmodell - VEH0.pspar
+
+
 
         Me.CbCdMode.SelectedIndex = CType(VEH0.CdMode, Integer)
         Me.TbCdFile.Text = VEH0.CdFile.OriginalPath
@@ -192,8 +300,11 @@ Public Class F_VEH
         Me.TbRtRatio.Text = CStr(VEH0.RtRatio)
         Me.TbRtPath.Text = CStr(VEH0.RtFile.OriginalPath)
 
-
-        Me.CbCat.SelectedIndex = CType(VEH0.VehCat, Integer)
+        If VEH0.VehCat = tVehCat.Undef Then
+            Me.CbCat.SelectedIndex = 0
+        Else
+            Me.CbCat.SelectedIndex = CType(VEH0.VehCat, Integer)
+        End If
 
         Me.LvRRC.Items.Clear()
         i = 0
@@ -212,11 +323,26 @@ Public Class F_VEH
             LvRRC.Items.Add(lvi)
         Next
 
-        Me.TbMassMax.Text = VEH0.MassMax
+        Me.TbMassMass.Text = VEH0.MassMax
         Me.TbMassExtra.Text = VEH0.MassExtra
-        Me.CbAxleConfig.SelectedIndex = CType(VEH0.AxleConf, Integer)
-        'TODO: AUTO: Me.TbHDVclass.Text
-        'AUTO: Me.TbLoadingMax.Text
+
+
+        If VEH0.AxleConf = tAxleConf.Undef Then
+            Me.CbAxleConfig.SelectedIndex = 0
+        Else
+            Me.CbAxleConfig.SelectedIndex = CType(VEH0.AxleConf, Integer)
+        End If
+
+        Me.TBcdTrTr.Text = VEH0.Cd0Tr
+        Me.TBAquersTrTr.Text = VEH0.Aquers0Tr
+        Me.TBcwRig.Text = VEH0.Cd0Rig
+        Me.TBAquersRig.Text = VEH0.Aquers0Rig
+
+
+
+        DeclInit()
+
+
 
         fbVEH.UpdateHistory(file)
         Me.Text = fFILE(file, True)
@@ -247,37 +373,15 @@ Public Class F_VEH
         VEH0.Mass = CSng(fTextboxToNumString(Me.TbMass.Text))
         VEH0.MassExtra = CSng(fTextboxToNumString(Me.TbMassExtra.Text))
         VEH0.Loading = CSng(fTextboxToNumString(Me.TbLoad.Text))
-        VEH0.Cd0 = CSng(fTextboxToNumString(Me.TBcw.Text))
-        VEH0.Aquers = CSng(fTextboxToNumString(Me.TBAquers.Text))
+        VEH0.Cd0Tr = CSng(fTextboxToNumString(Me.TBcdTrTr.Text))
+        VEH0.Aquers0Tr = CSng(fTextboxToNumString(Me.TBAquersTrTr.Text))
+        VEH0.Cd0Rig = CSng(fTextboxToNumString(Me.TBcwRig.Text))
+        VEH0.Aquers0Rig = CSng(fTextboxToNumString(Me.TBAquersRig.Text))
 
-        'VEH0.I_mot = CSng(fTextboxToNumString(Me.TBI_mot.Text))
         VEH0.I_wheels = CSng(fTextboxToNumString(Me.TbI_wheels.Text))
-        'VEH0.I_Getriebe = CSng(fTextboxToNumString(Me.TBI_getr.Text))
-        'VEH0.Paux0 = CSng(fTextboxToNumString(Me.TbPaux0.Text))
-        'VEH0.Pnenn = CSng(fTextboxToNumString(Me.TBPnenn.Text))
-        'VEH0.nNenn = CSng(fTextboxToNumString(Me.TBnnenn.Text))
-        'VEH0.nLeerl = CSng(fTextboxToNumString(Me.TBnleerl.Text))
-
-        'VEH0.fGetr = CSng(fTextboxToNumString(Me.TBfGetr.Text))
-
-        'VEH0.AchsI = CSng(Me.LvGears.Items(0).SubItems(1).Text)
-        'VEH0.AchsMap = Me.LvGears.Items(0).SubItems(2).Text
 
         VEH0.Dreifen = CSng(fTextboxToNumString(Me.TBDreifen.Text))
 
-        'For i = 1 To 16
-        '    VEH0.Igetr(i) = CSng(Me.LvGears.Items(i).SubItems(1).Text)
-        '    VEH0.GetrMap(i) = Me.LvGears.Items(i).SubItems(2).Text
-        'Next
-
-        'VEH0.hinauf = CSng(fTextboxToNumString(Me.TBhinauf.Text))
-        'VEH0.hinunter = CSng(fTextboxToNumString(Me.TBhinunter.Text))
-        'VEH0.lhinauf = CSng(fTextboxToNumString(Me.TBlhinauf.Text))
-        'VEH0.lhinunter = CSng(fTextboxToNumString(Me.TBlhinunter.Text))
-        'VEH0.pspar = CSng(fTextboxToNumString(Me.TBpspar.Text))
-        'VEH0.pmodell = CSng(1 - CSng(fTextboxToNumString(Me.TBpfast.Text)) - CSng(fTextboxToNumString(Me.TBpspar.Text)))
-
-        'VEH0.TracIntrSi = fTextboxToNumString(Me.TbTracInt.Text)
 
         VEH0.CdMode = CType(Me.CbCdMode.SelectedIndex, tCdMode)
         VEH0.CdFile.Init(fPATH(file), Me.TbCdFile.Text)
@@ -292,7 +396,7 @@ Public Class F_VEH
             VEH0.RRCs.Add(New Single() {CSng(LV0.SubItems(1).Text), CSng(LV0.SubItems(2).Text = "yes"), CSng(LV0.SubItems(3).Text), CSng(LV0.SubItems(4).Text)})
         Next
 
-        VEH0.MassMax = CSng(fTextboxToNumString(Me.TbMassMax.Text))
+        VEH0.MassMax = CSng(fTextboxToNumString(Me.TbMassMass.Text))
         VEH0.MassExtra = CSng(fTextboxToNumString(Me.TbMassExtra.Text))
         VEH0.AxleConf = CType(Me.CbAxleConfig.SelectedIndex, tAxleConf)
 
@@ -304,7 +408,7 @@ Public Class F_VEH
         End If
 
         If Not GenDir = "" Or AutoSendTo Then
-            If F_GEN.Visible And UCase(fFileRepl(F_GEN.TextBoxVEH.Text, GenDir)) <> UCase(file) Then F_GEN.TextBoxVEH.Text = fFileWoDir(file, GenDir)
+            If F_VECTO.Visible And UCase(fFileRepl(F_VECTO.TextBoxVEH.Text, GenDir)) <> UCase(file) Then F_VECTO.TextBoxVEH.Text = fFileWoDir(file, GenDir)
         End If
 
         fbVEH.UpdateHistory(file)
@@ -342,9 +446,11 @@ Public Class F_VEH
 
         End Select
 
-        Me.TbCdFile.Enabled = bEnabled
-        Me.BtCdFileBrowse.Enabled = bEnabled
-        Me.BtCdFileOpen.Enabled = bEnabled
+        If Not Declaration.Active Then
+            Me.TbCdFile.Enabled = bEnabled
+            Me.BtCdFileBrowse.Enabled = bEnabled
+            Me.BtCdFileOpen.Enabled = bEnabled
+        End If
 
         Change()
     End Sub
@@ -459,11 +565,11 @@ Public Class F_VEH
         Change()
     End Sub
 
-    Private Sub TBcw_TextChanged(sender As System.Object, e As System.EventArgs) Handles TBcw.TextChanged
+    Private Sub TBcw_TextChanged(sender As System.Object, e As System.EventArgs) Handles TBcdTrTr.TextChanged, TBcwRig.TextChanged
         Change()
     End Sub
 
-    Private Sub TBAquers_TextChanged(sender As System.Object, e As System.EventArgs) Handles TBAquers.TextChanged
+    Private Sub TBAquers_TextChanged(sender As System.Object, e As System.EventArgs) Handles TBAquersTrTr.TextChanged, TBAquersRig.TextChanged
         Change()
     End Sub
 
@@ -557,6 +663,7 @@ Public Class F_VEH
 
     Private Sub CbCat_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles CbCat.SelectedIndexChanged
         Change()
+        DeclInit()
     End Sub
 
     Private Sub TbMassTrailer_TextChanged(sender As System.Object, e As System.EventArgs) Handles TbMassExtra.TextChanged
@@ -564,22 +671,26 @@ Public Class F_VEH
         Change()
     End Sub
 
-    Private Sub TbMassMax_TextChanged(sender As System.Object, e As System.EventArgs) Handles TbMassMax.TextChanged
+    Private Sub TbMassMax_TextChanged(sender As System.Object, e As System.EventArgs) Handles TbMassMass.TextChanged
         SetMaxLoad()
         Change()
+        DeclInit()
     End Sub
 
     Private Sub CbAxleConfig_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles CbAxleConfig.SelectedIndexChanged
         Change()
+        DeclInit()
     End Sub
 
 #End Region
 
     Private Sub SetMaxLoad()
-        If IsNumeric(Me.TbMass.Text) And IsNumeric(Me.TbMassExtra.Text) And IsNumeric(Me.TbMassMax.Text) Then
-            Me.TbLoadingMax.Text = CStr(CSng(Me.TbMassMax.Text) - CSng(Me.TbMass.Text) - CSng(Me.TbMassExtra.Text))
-        Else
-            Me.TbLoadingMax.Text = ""
+        If Not Declaration.Active Then
+            If IsNumeric(Me.TbMass.Text) And IsNumeric(Me.TbMassExtra.Text) And IsNumeric(Me.TbMassMass.Text) Then
+                Me.TbLoadingMax.Text = CStr(CSng(Me.TbMassMass.Text) - CSng(Me.TbMass.Text) - CSng(Me.TbMassExtra.Text))
+            Else
+                Me.TbLoadingMax.Text = ""
+            End If
         End If
     End Sub
 
@@ -594,7 +705,7 @@ Public Class F_VEH
             lv0 = New ListViewItem
 
             lv0.SubItems(0).Text = Me.LvRRC.Items.Count + 1
-            lv0.SubItems.Add(Trim(dlog.TbWeight.Text))
+            lv0.SubItems.Add(Trim(dlog.TbAxleShare.Text))
             If dlog.CbTwinT.Checked Then
                 lv0.SubItems.Add("yes")
             Else
@@ -623,7 +734,7 @@ Public Class F_VEH
     Private Sub LvAxle_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles LvRRC.KeyDown
         Select Case e.KeyCode
             Case Keys.Delete, Keys.Back
-                RemoveAxleItem()
+                If Not Declaration.Active Then RemoveAxleItem()
             Case Keys.Enter
                 EditAxleItem()
         End Select
@@ -667,13 +778,13 @@ Public Class F_VEH
 
         LV0 = LvRRC.SelectedItems(0)
 
-        dlog.TbWeight.Text = LV0.SubItems(1).Text
+        dlog.TbAxleShare.Text = LV0.SubItems(1).Text
         dlog.CbTwinT.Checked = (LV0.SubItems(2).Text = "yes")
         dlog.TbRRC.Text = LV0.SubItems(3).Text
         dlog.TbFzISO.Text = LV0.SubItems(4).Text
 
         If dlog.ShowDialog = Windows.Forms.DialogResult.OK Then
-            LV0.SubItems(1).Text = dlog.TbWeight.Text
+            LV0.SubItems(1).Text = dlog.TbAxleShare.Text
             If dlog.CbTwinT.Checked Then
                 LV0.SubItems(2).Text = "yes"
             Else
@@ -681,7 +792,7 @@ Public Class F_VEH
             End If
             LV0.SubItems(3).Text = dlog.TbRRC.Text
             LV0.SubItems(4).Text = dlog.TbFzISO.Text
-         
+
 
             Change()
 
@@ -731,4 +842,5 @@ Public Class F_VEH
 #End Region
 
    
+  
 End Class
diff --git a/VECTO/GUI/F_VEH_Axle.Designer.vb b/VECTO/GUI/F_VEH_Axle.Designer.vb
index 1326262621bd7176472c44c39662d867a6a4342a..34d076a451f4f4d537df8694d1a3a712879429f6 100644
--- a/VECTO/GUI/F_VEH_Axle.Designer.vb
+++ b/VECTO/GUI/F_VEH_Axle.Designer.vb
@@ -26,7 +26,7 @@ Partial Class F_VEH_Axle
         Me.OK_Button = New System.Windows.Forms.Button()
         Me.Cancel_Button = New System.Windows.Forms.Button()
         Me.Label1 = New System.Windows.Forms.Label()
-        Me.TbWeight = New System.Windows.Forms.TextBox()
+        Me.TbAxleShare = New System.Windows.Forms.TextBox()
         Me.Label2 = New System.Windows.Forms.Label()
         Me.Label3 = New System.Windows.Forms.Label()
         Me.Label4 = New System.Windows.Forms.Label()
@@ -39,7 +39,9 @@ Partial Class F_VEH_Axle
         Me.Label9 = New System.Windows.Forms.Label()
         Me.Label10 = New System.Windows.Forms.Label()
         Me.CbTwinT = New System.Windows.Forms.CheckBox()
+        Me.PnAxle = New System.Windows.Forms.Panel()
         Me.TableLayoutPanel1.SuspendLayout()
+        Me.PnAxle.SuspendLayout()
         Me.SuspendLayout()
         '
         'TableLayoutPanel1
@@ -79,23 +81,23 @@ Partial Class F_VEH_Axle
         'Label1
         '
         Me.Label1.AutoSize = True
-        Me.Label1.Location = New System.Drawing.Point(27, 14)
+        Me.Label1.Location = New System.Drawing.Point(18, 10)
         Me.Label1.Name = "Label1"
         Me.Label1.Size = New System.Drawing.Size(96, 13)
         Me.Label1.TabIndex = 1
         Me.Label1.Text = "Relative Axle Load"
         '
-        'TbWeight
+        'TbAxleShare
         '
-        Me.TbWeight.Location = New System.Drawing.Point(129, 12)
-        Me.TbWeight.Name = "TbWeight"
-        Me.TbWeight.Size = New System.Drawing.Size(53, 20)
-        Me.TbWeight.TabIndex = 0
+        Me.TbAxleShare.Location = New System.Drawing.Point(120, 8)
+        Me.TbAxleShare.Name = "TbAxleShare"
+        Me.TbAxleShare.Size = New System.Drawing.Size(53, 20)
+        Me.TbAxleShare.TabIndex = 0
         '
         'Label2
         '
         Me.Label2.AutoSize = True
-        Me.Label2.Location = New System.Drawing.Point(188, 15)
+        Me.Label2.Location = New System.Drawing.Point(179, 11)
         Me.Label2.Name = "Label2"
         Me.Label2.Size = New System.Drawing.Size(16, 13)
         Me.Label2.TabIndex = 1
@@ -199,6 +201,16 @@ Partial Class F_VEH_Axle
         Me.CbTwinT.Text = "Twin Tyres"
         Me.CbTwinT.UseVisualStyleBackColor = True
         '
+        'PnAxle
+        '
+        Me.PnAxle.Controls.Add(Me.Label1)
+        Me.PnAxle.Controls.Add(Me.Label2)
+        Me.PnAxle.Controls.Add(Me.TbAxleShare)
+        Me.PnAxle.Location = New System.Drawing.Point(9, 4)
+        Me.PnAxle.Name = "PnAxle"
+        Me.PnAxle.Size = New System.Drawing.Size(204, 42)
+        Me.PnAxle.TabIndex = 5
+        '
         'F_VEH_Axle
         '
         Me.AcceptButton = Me.OK_Button
@@ -206,6 +218,7 @@ Partial Class F_VEH_Axle
         Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
         Me.CancelButton = Me.Cancel_Button
         Me.ClientSize = New System.Drawing.Size(390, 205)
+        Me.Controls.Add(Me.PnAxle)
         Me.Controls.Add(Me.CbTwinT)
         Me.Controls.Add(Me.TbFzISO)
         Me.Controls.Add(Me.Label6)
@@ -214,12 +227,9 @@ Partial Class F_VEH_Axle
         Me.Controls.Add(Me.Label10)
         Me.Controls.Add(Me.Label7)
         Me.Controls.Add(Me.Label5)
-        Me.Controls.Add(Me.TbWeight)
         Me.Controls.Add(Me.Label9)
         Me.Controls.Add(Me.Label8)
         Me.Controls.Add(Me.Label3)
-        Me.Controls.Add(Me.Label2)
-        Me.Controls.Add(Me.Label1)
         Me.Controls.Add(Me.TableLayoutPanel1)
         Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog
         Me.MaximizeBox = False
@@ -229,6 +239,8 @@ Partial Class F_VEH_Axle
         Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent
         Me.Text = "Axle configuration"
         Me.TableLayoutPanel1.ResumeLayout(False)
+        Me.PnAxle.ResumeLayout(False)
+        Me.PnAxle.PerformLayout()
         Me.ResumeLayout(False)
         Me.PerformLayout()
 
@@ -237,7 +249,7 @@ Partial Class F_VEH_Axle
     Friend WithEvents OK_Button As System.Windows.Forms.Button
     Friend WithEvents Cancel_Button As System.Windows.Forms.Button
     Friend WithEvents Label1 As System.Windows.Forms.Label
-    Friend WithEvents TbWeight As System.Windows.Forms.TextBox
+    Friend WithEvents TbAxleShare As System.Windows.Forms.TextBox
     Friend WithEvents Label2 As System.Windows.Forms.Label
     Friend WithEvents Label3 As System.Windows.Forms.Label
     Friend WithEvents Label4 As System.Windows.Forms.Label
@@ -250,5 +262,6 @@ Partial Class F_VEH_Axle
     Friend WithEvents Label9 As System.Windows.Forms.Label
     Friend WithEvents Label10 As System.Windows.Forms.Label
     Friend WithEvents CbTwinT As System.Windows.Forms.CheckBox
+    Friend WithEvents PnAxle As System.Windows.Forms.Panel
 
 End Class
diff --git a/VECTO/GUI/F_VEH_Axle.vb b/VECTO/GUI/F_VEH_Axle.vb
index 279b9cf4230c496d48bc96518d6248bede5a10c7..7eda3ad31a8d209864d723d515cea550c726893d 100644
--- a/VECTO/GUI/F_VEH_Axle.vb
+++ b/VECTO/GUI/F_VEH_Axle.vb
@@ -2,13 +2,23 @@
 
 Public Class F_VEH_Axle
 
+    Private Sub F_VEH_Axle_Load(sender As Object, e As System.EventArgs) Handles Me.Load
+        'Declaration Mode
+        If Declaration.Active Then
+            Me.PnAxle.Enabled = False
+        End If
+    End Sub
+
     Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click
 
-        If Not IsNumeric(Me.TbWeight.Text) OrElse Trim(Me.TbWeight.Text) = "" Then
-            MsgBox("Weight input is not valid!")
-            Exit Sub
+        If Not Declaration.Active Then
+            If Not IsNumeric(Me.TbAxleShare.Text) OrElse Trim(Me.TbAxleShare.Text) = "" Then
+                MsgBox("Weight input is not valid!")
+                Exit Sub
+            End If
         End If
 
+
         If Not IsNumeric(Me.TbRRC.Text) OrElse Trim(Me.TbRRC.Text) = "" Then
             MsgBox("RRC input is not valid!")
             Exit Sub
@@ -28,4 +38,5 @@ Public Class F_VEH_Axle
         Me.Close()
     End Sub
 
+
 End Class
diff --git a/VECTO/Input Files/cDRI.vb b/VECTO/Input Files/cDRI.vb
index 810c77f854eb6896969cc597c29ec06dc9b0d4e6..be03263f82994749de3ea3559997fe9978217559 100644
--- a/VECTO/Input Files/cDRI.vb	
+++ b/VECTO/Input Files/cDRI.vb	
@@ -19,20 +19,7 @@ Public Class cDRI
     Public Gvorg As Boolean
     Public GradVorg As Boolean
 
-    Private bEmCompDef As Boolean
-    Public EmComponents As Dictionary(Of String, cEmComp)
-    Public EmDefRef As Dictionary(Of tMapComp, cEmComp)
-
-    'Defaults(Vorgabe) for EXS
-    Private bExsCompDef As Boolean
-    Public ExsComponents As Dictionary(Of tExsComp, Dictionary(Of Short, List(Of Single)))
-
-    'Parameters for KF-creation
-    Public MapUnitsNormed As Dictionary(Of String, Boolean)
-    Public MapPfak As Dictionary(Of String, tIntpPeCorMode)
-    Private bCreateMapParDef As Boolean
-
-    'Defaults(Vorgabe) for AUX
+    'Aux-Psupply
     Private bAuxDef As Boolean
     Public AuxComponents As Dictionary(Of String, List(Of Single))
 
@@ -41,11 +28,6 @@ Public Class cDRI
     Public Scycle As Boolean
     Public VoglS As List(Of Double)
 
-    Public Sub New()
-        EmComponents = New Dictionary(Of String, cEmComp)
-        EmDefRef = New Dictionary(Of tMapComp, cEmComp)
-    End Sub
-
     Private Sub ResetMe()
         Values = Nothing
         PaddVorg = False
@@ -57,14 +39,6 @@ Public Class cDRI
         Pvorg = False
         tDim = -1
         t0 = 1  'Ist Standardwert falls Converter nicht verwendet wird
-        EmComponents.Clear()
-        bEmCompDef = False
-        EmDefRef.Clear()
-        MapUnitsNormed = Nothing
-        MapPfak = Nothing
-        bExsCompDef = False
-        ExsComponents = Nothing
-        bCreateMapParDef = False
         bAuxDef = False
         AuxComponents = Nothing
         VairVorg = False
@@ -78,21 +52,14 @@ Public Class cDRI
         Dim s As Integer
         Dim txt As String
         Dim Comp As tDriComp
-        Dim ExsComp As tExsComp
         Dim AuxComp As tAuxComp
         Dim AuxID As String
-        Dim MapComp As tMapComp
-        Dim Em0 As cEmComp
-        Dim ModNr As Short
         Dim Svorg As Boolean = False
 
         Dim DRIcheck As Dictionary(Of tDriComp, Boolean)
         Dim Spalten As Dictionary(Of tDriComp, Integer)
         Dim sKV As KeyValuePair(Of tDriComp, Integer)
 
-        Dim ExsSpalten As Dictionary(Of Integer, List(Of Single)) = Nothing
-        Dim ExsKV As KeyValuePair(Of Integer, List(Of Single))
-
         Dim AuxSpalten As Dictionary(Of String, Integer) = Nothing
         Dim Mvorg As Boolean = False
 
@@ -100,10 +67,8 @@ Public Class cDRI
         Dim MsgSrc As String
 
 
-
         MsgSrc = "Main/ReadInp/DRI"
 
-        bCreateMapParDef = False
 
         'Reset
         ResetMe()
@@ -139,41 +104,6 @@ Public Class cDRI
         DRIcheck.Add(tDriComp.StopTime, False)
         DRIcheck.Add(tDriComp.Torque, False)
 
-        ''***
-        ''*** First line: Version
-        'line = file.ReadLine
-        'txt = Trim(UCase(line(0)))
-        'If Microsoft.VisualBasic.Left(txt, 1) = "V" Then
-        '    ' "V" entfernen => Zahl bleibt übrig
-        '    txt = txt.Replace("V", "")
-        '    If Not IsNumeric(txt) Then
-        '        'If invalid Version: Abort
-        '        WorkerMsg(tMsgID.Err, "File Version invalid!", MsgSrc)
-        '        GoTo lbEr
-        '    Else
-        '        'Version specified
-        '        FileVersion = CInt(txt)
-        '    End If
-        'Else
-        '    'If no version information: Old Format
-        '    file.Close()
-        '    Return ReadOldFormat()
-        'End If
-
-        ''Version Check: Abort if input file format is newer than PHEM-version
-        'If FileVersion > FormatVersion Then
-        '    WorkerMsg(tMsgID.Err, "File Version not supported!", MsgSrc)
-        '    GoTo lbEr
-        'End If
-
-        ''Column 2: added option "+" = parameter for KF-creation
-        'If UBound(line) > 0 Then
-        '    If Trim(line(1)) = "+" Then
-        '        bCreateMapParDef = True
-        '        WorkerMsg(tMsgID.Normal, "MAP-Creation settings found.", MsgSrc)
-        '    End If
-        'End If
-
         If file.EndOfFile Then
             WorkerMsg(tMsgID.Err, "Driving cycle invalid!", MsgSrc)
             Return False
@@ -196,99 +126,37 @@ Public Class cDRI
             'Falls DRIcomp = Undefined dann wirds als EXS-Comp oder als Emission für KF-Erstellung / Eng-Analysis verwendet |@@| If used DRIcomp = Undefined it will get as EXS-Comp or Emission for KF-Creation / Eng-Analysis
             If Comp = tDriComp.Undefined Then
 
-                ExsComp = fExsComp(line(s))
-
-                If ExsComp = tExsComp.Undefined Then
-
-                    AuxComp = fAuxComp(line(s))
-
-                    If AuxComp = tAuxComp.Undefined Then
-
-                        MapComp = fMapComp(line(s))
-
-                        txt = UCase(Trim(line(s)))
-
-                        If EmComponents.ContainsKey(txt) Then
-                            WorkerMsg(tMsgID.Err, "Multiple definitions of '" & line(s) & "'! Column " & s + 1, MsgSrc)
-                            GoTo lbEr
-                        End If
-
-                        Em0 = New cEmComp
-                        Em0.Col = s
-                        Em0.Name = line(s)  'wird bei Def-Komp noch geändert
-                        Em0.IDstring = txt
-                        Em0.MapCompID = MapComp
-
-                        If MapComp <> tMapComp.Undefined Then
-                            Em0.Name = fMapCompName(MapComp)
-                            EmDefRef.Add(MapComp, Em0)
-                        End If
-
-                        EmComponents.Add(Em0.IDstring, Em0)
-
-                        bEmCompDef = True
-
-                        'ERROR when component in angle brackets is unknown
-                        If MapComp = tMapComp.Undefined And Em0.IDstring.Length > 1 Then
-                            If Left(Em0.IDstring, 1) = "<" And Right(Em0.IDstring, 1) = ">" Then
-                                WorkerMsg(tMsgID.Err, "'" & Em0.Name & "' is no valid Default Map, Cycle or EXS Component!", MsgSrc)
-                            End If
-                        End If
-
-                    Else
-
-                        txt = fCompSubStr(line(s))
-
-                        If Not bAuxDef Then
-                            AuxComponents = New Dictionary(Of String, List(Of Single))
-                            AuxSpalten = New Dictionary(Of String, Integer)
-                        End If
-
-                        If AuxComponents.ContainsKey(txt) Then
-                            WorkerMsg(tMsgID.Err, "Multiple definitions of auxiliary '" & txt & "' in driving cycle! Column " & s + 1, MsgSrc)
-                            GoTo lbEr
-                        End If
+                AuxComp = fAuxComp(line(s))
 
-                        AuxComponents.Add(txt, New List(Of Single))
-                        AuxSpalten.Add(txt, s)
+                If AuxComp = tAuxComp.Undefined Then
 
-                        bAuxDef = True
-
-                    End If
+                    'ERROR when component is unknown
+                    WorkerMsg(tMsgID.Err, "'" & line(s) & "' is no valid cycle input parameter!", MsgSrc)
+                    GoTo lbEr
 
                 Else
 
-                    'if first EXS-column, then create Dictionary
-                    If Not bExsCompDef Then
-                        ExsSpalten = New Dictionary(Of Integer, List(Of Single))
-                        ExsComponents = New Dictionary(Of tExsComp, Dictionary(Of Short, List(Of Single)))
-                    End If
-
-                    'If EXS-Component not yet in Dictionary, create
-                    If Not ExsComponents.ContainsKey(ExsComp) Then ExsComponents.Add(ExsComp, New Dictionary(Of Short, List(Of Single)))
-
                     txt = fCompSubStr(line(s))
 
-                    If Not IsNumeric(txt) Then
-                        WorkerMsg(tMsgID.Err, "Component ID String '" & line(s) & "' is invalid! Column " & s + 1, MsgSrc)
-                        GoTo lbEr
-                    Else
-                        ModNr = CShort(txt)
+                    If Not bAuxDef Then
+                        AuxComponents = New Dictionary(Of String, List(Of Single))
+                        AuxSpalten = New Dictionary(Of String, Integer)
                     End If
 
-                    'Check whether ExsComp/Module-combination already exists => ERROR
-                    If ExsComponents(ExsComp).ContainsKey(ModNr) Then
-                        WorkerMsg(tMsgID.Err, "Component '" & line(s) & "' already defined! Column " & s + 1, MsgSrc)
+                    If AuxComponents.ContainsKey(txt) Then
+                        WorkerMsg(tMsgID.Err, "Multiple definitions of auxiliary '" & txt & "' in driving cycle! Column " & s + 1, MsgSrc)
                         GoTo lbEr
                     End If
 
-                    ExsComponents(ExsComp).Add(ModNr, New List(Of Single))
-                    ExsSpalten.Add(s, ExsComponents(ExsComp)(ModNr))
+                    AuxComponents.Add(txt, New List(Of Single))
+                    AuxSpalten.Add(txt, s)
 
-                    bExsCompDef = True
+                    bAuxDef = True
 
                 End If
 
+
+
             Else
 
                 If DRIcheck(Comp) Then
@@ -321,88 +189,7 @@ Public Class cDRI
             Mvorg = False
         End If
 
-        '***
-        '*** Third row: Units/Normalization
-        'VECTO: nothing read. Fixed Units (line = file.ReadLine)
-
-        'VECTO MAP-components: Always [g/h]!
-        For Each Em0 In EmComponents.Values
-
-            ''Store Unit in String for further checks
-            'txt = Trim(line(Em0.Col))
-
-            ''Remove brackets
-            'txt = txt.Replace("[", "")
-            'txt = txt.Replace("]", "")
-
-            ''Set Scaling and Unit
-            'If txt.Contains("/") Then
-
-
-            '    Select Case UCase(Right(txt, txt.Length - txt.IndexOf("/") - 1))
-            '        Case "KWH", "H" & sKey.Normed
-            '            WorkerMsg(tMsgID.Warn, "Unit of component " & line(s) & " is not valid! Check Output!", MsgSrc)
-            '            Em0.NormID = tEmNorm.x
-            '            Em0.Unit = "Unit-ERROR!"
-
-            '        Case "H"
-            '            Em0.NormID = tEmNorm.x_h
-            '            Em0.Unit = "[" & Left(txt, txt.IndexOf("/")) & "/h]"
 
-            '        Case Else
-            '            Em0.NormID = tEmNorm.x
-            '            Em0.Unit = "[" & txt & "]"
-
-            '    End Select
-
-            'Else
-            '    Em0.NormID = tEmNorm.x
-            '    Em0.Unit = "[" & txt & "]"
-            'End If
-
-            Em0.NormID = tEmNorm.x_h
-            Em0.Unit = "[g/h]"
-
-        Next
-
-        '***
-        '*** Line 4, 5: (optional when "+"): Settings for KF-creation
-
-        'If "+" enabled
-        If bCreateMapParDef Then
-
-            'Creating instances
-            MapUnitsNormed = New Dictionary(Of String, Boolean)
-            MapPfak = New Dictionary(Of String, tIntpPeCorMode)
-
-            '1. Option "Map normalized by Pnom"
-            line = file.ReadLine
-            For Each Em0 In EmComponents.Values
-                MapUnitsNormed.Add(Em0.IDstring, CBool(line(Em0.Col)))
-            Next
-
-            '2. Option "PfAK apply"
-            line = file.ReadLine
-            For Each Em0 In EmComponents.Values
-
-                Select Case CShort(line(Em0.Col))
-                    Case 0
-                        MapPfak.Add(Em0.IDstring, tIntpPeCorMode.PeCorOff)
-                    Case 1
-                        MapPfak.Add(Em0.IDstring, tIntpPeCorMode.PeCorNull)
-                    Case 2
-                        MapPfak.Add(Em0.IDstring, tIntpPeCorMode.PeCorEmDrag)
-                    Case Else
-                        WorkerMsg(tMsgID.Err, "Power Correction Mode Nr. " & line(Em0.Col) & " is invalid!", MsgSrc)
-                        GoTo lbEr
-                End Select
-
-            Next
-
-        End If
-
-        '***
-        '*** Ab 4.Zeile bzw. Ab 6.Zeile: Werte (derzeit keine unterschiedlichen Einheiten/Normierungen unterstützt) |@@| From 4th line or From 6th line: values (no different units/normalizations support)
         Try
             Do While Not file.EndOfFile
                 tDim += 1       'wird in ResetMe zurück gesetzt
@@ -411,22 +198,12 @@ Public Class cDRI
                 For Each sKV In Spalten
 
                     If sKV.Key = tDriComp.Pe Or sKV.Key = tDriComp.Torque Then
-                        If Trim(line(sKV.Value)) = sKey.MAP.Drag Then line(sKV.Value) = -999999
+                        If Trim(line(sKV.Value)) = sKey.EngDrag Then line(sKV.Value) = -999999
                     End If
 
                     Values(sKV.Key).Add(CDbl(line(sKV.Value)))
                 Next
 
-                For Each Em0 In EmComponents.Values
-                    Em0.RawVals.Add(CSng(line(Em0.Col)))
-                Next
-
-                If bExsCompDef Then
-                    For Each ExsKV In ExsSpalten
-                        ExsKV.Value.Add(CSng(line(ExsKV.Key)))
-                    Next
-                End If
-
                 If bAuxDef Then
                     For Each AuxID In AuxSpalten.Keys
                         AuxComponents(AuxID).Add(CSng(line(AuxSpalten(AuxID))))
@@ -447,7 +224,8 @@ Public Class cDRI
 
         If Vvorg Then
             For s = 0 To tDim
-                If Values(tDriComp.V)(s) < 0.09 Then Values(tDriComp.V)(s) = 0
+                Values(tDriComp.V)(s) /= 3.6
+                If Values(tDriComp.V)(s) < 0.025 Then Values(tDriComp.V)(s) = 0
             Next
         End If
 
@@ -468,44 +246,6 @@ lbEr:
 
     End Function
 
-    Public Function ExsCompDef() As Boolean
-        Return bExsCompDef
-    End Function
-
-    Public Function ExsCompDef(ByVal ExsComp As tExsComp, Optional ByVal ModNr As Short = -1) As Boolean
-
-        If bExsCompDef Then
-            If ExsComponents.ContainsKey(ExsComp) Then
-                If ModNr = -1 Then
-                    Return True
-                Else
-                    Return ExsComponents(ExsComp).ContainsKey(ModNr)
-                End If
-            Else
-                Return False
-            End If
-        Else
-            Return False
-        End If
-
-    End Function
-
-    Public Sub DeNorm()
-        Dim s As Integer
-
-        'Convert Speed to m/s
-        If Vvorg Then
-            For s = 0 To tDim
-                Values(tDriComp.V)(s) /= 3.6
-                If Values(tDriComp.V)(s) < 0 Then Values(tDriComp.V)(s) = 0
-            Next
-        End If
-
-
-        '!!!!!!!! Emissions are only accepted in x/h or x (see ReadFile)!!!!!!!!
-
-    End Sub
-
     Public Sub GradToAlt()
         Dim i As Integer
         Dim v0 As New List(Of Double)
@@ -594,11 +334,6 @@ lbEr:
         Dim ValKV As KeyValuePair(Of tDriComp, List(Of Double))
         Dim tmax As Integer
 
-        Dim tExsValues As Dictionary(Of tExsComp, Dictionary(Of Short, List(Of Single))) = Nothing
-        Dim hzExsValues As Dictionary(Of tExsComp, Dictionary(Of Short, List(Of Single))) = Nothing
-        Dim ExsKV As KeyValuePair(Of tExsComp, Dictionary(Of Short, List(Of Single)))
-        Dim ExsKVsub As KeyValuePair(Of Short, List(Of Single))
-
         Dim tAuxValues As Dictionary(Of String, List(Of Single)) = Nothing
         Dim hzAuxValues As Dictionary(Of String, List(Of Single)) = Nothing
         Dim AuxKV As KeyValuePair(Of String, List(Of Single))
@@ -626,8 +361,8 @@ lbEr:
         Dist = Values(tDriComp.s)
         Speed = New List(Of Double)
         For i = 0 To tDim
-            Speed.Add(Values(tDriComp.V)(i) / 3.6)
-            SpeedOgl.Add(Values(tDriComp.V)(i) / 3.6)
+            Speed.Add(Values(tDriComp.V)(i))
+            SpeedOgl.Add(Values(tDriComp.V)(i))
         Next
 
         StopTime = Values(tDriComp.StopTime)
@@ -650,19 +385,6 @@ lbEr:
             End If
         Next
 
-        If bExsCompDef Then
-            tExsValues = New Dictionary(Of tExsComp, Dictionary(Of Short, List(Of Single)))
-            hzExsValues = New Dictionary(Of tExsComp, Dictionary(Of Short, List(Of Single)))
-            For Each ExsKV In ExsComponents
-                tExsValues.Add(ExsKV.Key, New Dictionary(Of Short, List(Of Single)))
-                hzExsValues.Add(ExsKV.Key, New Dictionary(Of Short, List(Of Single)))
-                For Each ExsKVsub In ExsKV.Value
-                    tExsValues(ExsKV.Key).Add(ExsKVsub.Key, New List(Of Single))
-                    hzExsValues(ExsKV.Key).Add(ExsKVsub.Key, New List(Of Single))
-                Next
-            Next
-        End If
-
         If bAuxDef Then
             tAuxValues = New Dictionary(Of String, List(Of Single))
             hzAuxValues = New Dictionary(Of String, List(Of Single))
@@ -690,7 +412,7 @@ lbEr:
 
             a = vm * dv / ds
 
-            am = GEN.aDesMin(vm)
+            am = VEC.aDesMin(vm)
 
             Do While a < am
 
@@ -701,7 +423,7 @@ lbEr:
 
                 a = vm * dv / ds
 
-                am = GEN.aDesMin(vm)
+                am = VEC.aDesMin(vm)
 
             Loop
 
@@ -716,16 +438,9 @@ lbEr:
         For Each ValKV In tValues
             If ValKV.Key <> tDriComp.V Then tValues(ValKV.Key).Add(Values(ValKV.Key)(0))
         Next
-        tValues(tDriComp.V).Add(Speed(0) * 3.6)
-        tSpeedOgl.Add(SpeedOgl(0) * 3.6)
+        tValues(tDriComp.V).Add(Speed(0))
+        tSpeedOgl.Add(SpeedOgl(0))
         tDist.Add(s)
-        If bExsCompDef Then
-            For Each ExsKV In ExsComponents
-                For Each ExsKVsub In ExsKV.Value
-                    tExsValues(ExsKV.Key)(ExsKVsub.Key).Add(ExsKVsub.Value(0))
-                Next
-            Next
-        End If
         If bAuxDef Then
             For Each AuxKV In AuxComponents
                 tAuxValues(AuxKV.Key).Add(AuxKV.Value(0))
@@ -745,16 +460,9 @@ lbEr:
             For Each ValKV In tValues
                 If ValKV.Key <> tDriComp.V Then tValues(ValKV.Key).Add(Values(ValKV.Key)(0))
             Next
-            tValues(tDriComp.V).Add(Speed(0) * 3.6)
-            tSpeedOgl.Add(SpeedOgl(0) * 3.6)
+            tValues(tDriComp.V).Add(Speed(0))
+            tSpeedOgl.Add(SpeedOgl(0))
             tDist.Add(s)
-            If bExsCompDef Then
-                For Each ExsKV In ExsComponents
-                    For Each ExsKVsub In ExsKV.Value
-                        tExsValues(ExsKV.Key)(ExsKVsub.Key).Add(ExsKVsub.Value(0))
-                    Next
-                Next
-            End If
             If bAuxDef Then
                 For Each AuxKV In AuxComponents
                     tAuxValues(AuxKV.Key).Add(AuxKV.Value(0))
@@ -781,16 +489,9 @@ lbEr:
             For Each ValKV In tValues
                 If ValKV.Key <> tDriComp.V Then tValues(ValKV.Key).Add(Values(ValKV.Key)(i + 1))
             Next
-            tValues(tDriComp.V).Add(Speed(i + 1) * 3.6)
-            tSpeedOgl.Add(SpeedOgl(i + 1) * 3.6)
+            tValues(tDriComp.V).Add(Speed(i + 1))
+            tSpeedOgl.Add(SpeedOgl(i + 1))
             tDist.Add(s)
-            If bExsCompDef Then
-                For Each ExsKV In ExsComponents
-                    For Each ExsKVsub In ExsKV.Value
-                        tExsValues(ExsKV.Key)(ExsKVsub.Key).Add(ExsKVsub.Value(i + 1))
-                    Next
-                Next
-            End If
             If bAuxDef Then
                 For Each AuxKV In AuxComponents
                     tAuxValues(AuxKV.Key).Add(AuxKV.Value(i + 1))
@@ -810,16 +511,10 @@ lbEr:
                 For Each ValKV In tValues
                     If ValKV.Key <> tDriComp.V Then tValues(ValKV.Key).Add(Values(ValKV.Key)(i + 1))
                 Next
-                tValues(tDriComp.V).Add(Speed(i + 1) * 3.6)
-                tSpeedOgl.Add(SpeedOgl(i + 1) * 3.6)
+                tValues(tDriComp.V).Add(Speed(i + 1))
+                tSpeedOgl.Add(SpeedOgl(i + 1))
                 tDist.Add(s)
-                If bExsCompDef Then
-                    For Each ExsKV In ExsComponents
-                        For Each ExsKVsub In ExsKV.Value
-                            tExsValues(ExsKV.Key)(ExsKVsub.Key).Add(ExsKVsub.Value(i + 1))
-                        Next
-                    Next
-                End If
+
                 If bAuxDef Then
                     For Each AuxKV In AuxComponents
                         tAuxValues(AuxKV.Key).Add(AuxKV.Value(i + 1))
@@ -868,14 +563,6 @@ lbEr:
                 Next
                 hzSpeedOgl.Add(0)
 
-                If bExsCompDef Then
-                    For Each ExsKV In ExsComponents
-                        For Each ExsKVsub In ExsKV.Value
-                            'WRONG!! =>   hzExsValues(ExsKV.Key)(ExsKVsub.Key).Add(ExsKVsub.Value(i - 1))
-                            hzExsValues(ExsKV.Key)(ExsKVsub.Key).Add(tExsValues(ExsKV.Key)(ExsKVsub.Key)(i - 1))
-                        Next
-                    Next
-                End If
                 If bAuxDef Then
                     For Each AuxKV In AuxComponents
                         'WRONG!! => hzAuxValues(AuxKV.Key).Add(AuxKV.Value(i - 1))
@@ -890,13 +577,6 @@ lbEr:
                 Next
                 hzSpeedOgl.Add((hzDist(j) - tDist(i - 1)) * (tSpeedOgl(i) - tSpeedOgl(i - 1)) / (tDist(i) - tDist(i - 1)) + tSpeedOgl(i - 1))
 
-                If bExsCompDef Then
-                    For Each ExsKV In ExsComponents
-                        For Each ExsKVsub In ExsKV.Value
-                            hzExsValues(ExsKV.Key)(ExsKVsub.Key).Add((hzDist(j) - tDist(i - 1)) * (tExsValues(ExsKV.Key)(ExsKVsub.Key)(i) - tExsValues(ExsKV.Key)(ExsKVsub.Key)(i - 1)) / (tDist(i) - tDist(i - 1)) + tExsValues(ExsKV.Key)(ExsKVsub.Key)(i - 1))
-                        Next
-                    Next
-                End If
                 If bAuxDef Then
                     For Each AuxKV In AuxComponents
                         hzAuxValues(AuxKV.Key).Add((hzDist(j) - tDist(i - 1)) * (tAuxValues(AuxKV.Key)(i) - tAuxValues(AuxKV.Key)(i - 1)) / (tDist(i) - tDist(i - 1)) + tAuxValues(AuxKV.Key)(i - 1))
@@ -910,7 +590,6 @@ lbEr:
         Values = hzValues
         VoglS = hzSpeedOgl
         MODdata.Vh.Weg = hzDist
-        If bExsCompDef Then ExsComponents = hzExsValues
         If bAuxDef Then AuxComponents = hzAuxValues
         tDim = Values(tDriComp.V).Count - 1
 
@@ -934,15 +613,6 @@ lbEr:
         Dim fTime As List(Of Double)
         Dim Summe As Dictionary(Of tDriComp, Double)
 
-        Dim NewMapValues As Dictionary(Of String, List(Of Double))
-        Dim EmKV As KeyValuePair(Of String, cEmComp)
-        Dim MapSumme As Dictionary(Of String, Double)
-
-        Dim NewExsValues As Dictionary(Of tExsComp, Dictionary(Of Short, List(Of Single))) = Nothing
-        Dim ExsKV As KeyValuePair(Of tExsComp, Dictionary(Of Short, List(Of Single)))
-        Dim ExsKVsub As KeyValuePair(Of Short, List(Of Single))
-        Dim ExsSumme As Dictionary(Of tExsComp, Dictionary(Of Short, Single)) = Nothing
-
         Dim NewAuxValues As Dictionary(Of String, List(Of Single)) = Nothing
         Dim AuxKV As KeyValuePair(Of String, List(Of Single))
         Dim AuxSumme As Dictionary(Of String, Single) = Nothing
@@ -974,27 +644,6 @@ lbEr:
             If KV.Key <> tDriComp.t Then Summe.Add(KV.Key, 0)
         Next
 
-        NewMapValues = New Dictionary(Of String, List(Of Double))
-        MapSumme = New Dictionary(Of String, Double)
-
-        For Each EmKV In EmComponents
-            NewMapValues.Add(EmKV.Key, New List(Of Double))
-            MapSumme.Add(EmKV.Key, 0)
-        Next
-
-        If bExsCompDef Then
-            NewExsValues = New Dictionary(Of tExsComp, Dictionary(Of Short, List(Of Single)))
-            ExsSumme = New Dictionary(Of tExsComp, Dictionary(Of Short, Single))
-            For Each ExsKV In ExsComponents
-                NewExsValues.Add(ExsKV.Key, New Dictionary(Of Short, List(Of Single)))
-                ExsSumme.Add(ExsKV.Key, New Dictionary(Of Short, Single))
-                For Each ExsKVsub In ExsKV.Value
-                    NewExsValues(ExsKV.Key).Add(ExsKVsub.Key, New List(Of Single))
-                    ExsSumme(ExsKV.Key).Add(ExsKVsub.Key, 0)
-                Next
-            Next
-        End If
-
         If bAuxDef Then
             NewAuxValues = New Dictionary(Of String, List(Of Single))
             AuxSumme = New Dictionary(Of String, Single)
@@ -1039,18 +688,6 @@ lb10:
                         NewValues(KVd.Key).Add((tMid - fTime(z - 1)) * (Values(KVd.Key)(z) - Values(KVd.Key)(z - 1)) / (fTime(z) - fTime(z - 1)) + Values(KVd.Key)(z - 1))
                     Next
 
-                    For Each EmKV In EmComponents
-                        NewMapValues(EmKV.Key).Add((tMid - fTime(z - 1)) * (EmKV.Value.RawVals(z) - EmKV.Value.RawVals(z - 1)) / (fTime(z) - fTime(z - 1)) + EmKV.Value.RawVals(z - 1))
-                    Next
-
-                    If bExsCompDef Then
-                        For Each ExsKV In ExsComponents
-                            For Each ExsKVsub In ExsKV.Value
-                                NewExsValues(ExsKV.Key)(ExsKVsub.Key).Add((tMid - fTime(z - 1)) * (ExsKVsub.Value(z) - ExsKVsub.Value(z - 1)) / (fTime(z) - fTime(z - 1)) + ExsKVsub.Value(z - 1))
-                            Next
-                        Next
-                    End If
-
                     If bAuxDef Then
                         For Each AuxKV In AuxComponents
                             NewAuxValues(AuxKV.Key).Add((tMid - fTime(z - 1)) * (AuxKV.Value(z) - AuxKV.Value(z - 1)) / (fTime(z) - fTime(z - 1)) + AuxKV.Value(z - 1))
@@ -1065,18 +702,6 @@ lb10:
                             NewValues(KVd.Key).Add((Summe(KVd.Key) + Values(KVd.Key)(z)) / (Anz + 1))
                         Next
 
-                        For Each EmKV In EmComponents
-                            NewMapValues(EmKV.Key).Add((MapSumme(EmKV.Key) + EmKV.Value.RawVals(z)) / (Anz + 1))
-                        Next
-
-                        If bExsCompDef Then
-                            For Each ExsKV In ExsComponents
-                                For Each ExsKVsub In ExsKV.Value
-                                    NewExsValues(ExsKV.Key)(ExsKVsub.Key).Add((ExsSumme(ExsKV.Key)(ExsKVsub.Key) + ExsKVsub.Value(z)) / (Anz + 1))
-                                Next
-                            Next
-                        End If
-
                         If bAuxDef Then
                             For Each AuxKV In AuxComponents
                                 NewAuxValues(AuxKV.Key).Add((AuxSumme(AuxKV.Key) + AuxKV.Value(z)) / (Anz + 1))
@@ -1093,18 +718,6 @@ lb10:
                                     NewValues(KVd.Key).Add((tMid - fTime(z - 1)) * (Values(KVd.Key)(z) - Values(KVd.Key)(z - 1)) / (fTime(z) - fTime(z - 1)) + Values(KVd.Key)(z - 1))
                                 Next
 
-                                For Each EmKV In EmComponents
-                                    NewMapValues(EmKV.Key).Add((tMid - fTime(z - 1)) * (EmKV.Value.RawVals(z) - EmKV.Value.RawVals(z - 1)) / (fTime(z) - fTime(z - 1)) + EmKV.Value.RawVals(z - 1))
-                                Next
-
-                                If bExsCompDef Then
-                                    For Each ExsKV In ExsComponents
-                                        For Each ExsKVsub In ExsKV.Value
-                                            NewExsValues(ExsKV.Key)(ExsKVsub.Key).Add((tMid - fTime(z - 1)) * (ExsKVsub.Value(z) - ExsKVsub.Value(z - 1)) / (fTime(z) - fTime(z - 1)) + ExsKVsub.Value(z - 1))
-                                        Next
-                                    Next
-                                End If
-
                                 If bAuxDef Then
                                     For Each AuxKV In AuxComponents
                                         NewAuxValues(AuxKV.Key).Add((tMid - fTime(z - 1)) * (AuxKV.Value(z) - AuxKV.Value(z - 1)) / (fTime(z) - fTime(z - 1)) + AuxKV.Value(z - 1))
@@ -1117,18 +730,6 @@ lb10:
                                     NewValues(KVd.Key).Add((tMid - fTime(z - 2)) * (Values(KVd.Key)(z - 1) - Values(KVd.Key)(z - 2)) / (fTime(z - 1) - fTime(z - 2)) + Values(KVd.Key)(z - 2))
                                 Next
 
-                                For Each EmKV In EmComponents
-                                    NewMapValues(EmKV.Key).Add((tMid - fTime(z - 2)) * (EmKV.Value.RawVals(z - 1) - EmKV.Value.RawVals(z - 2)) / (fTime(z - 1) - fTime(z - 2)) + EmKV.Value.RawVals(z - 2))
-                                Next
-
-                                If bExsCompDef Then
-                                    For Each ExsKV In ExsComponents
-                                        For Each ExsKVsub In ExsKV.Value
-                                            NewExsValues(ExsKV.Key)(ExsKVsub.Key).Add((tMid - fTime(z - 2)) * (ExsKVsub.Value(z - 1) - ExsKVsub.Value(z - 2)) / (fTime(z - 1) - fTime(z - 2)) + ExsKVsub.Value(z - 2))
-                                        Next
-                                    Next
-                                End If
-
                                 If bAuxDef Then
                                     For Each AuxKV In AuxComponents
                                         NewAuxValues(AuxKV.Key).Add((tMid - fTime(z - 2)) * (AuxKV.Value(z - 1) - AuxKV.Value(z - 2)) / (fTime(z - 1) - fTime(z - 2)) + AuxKV.Value(z - 2))
@@ -1143,18 +744,6 @@ lb10:
                                 NewValues(KVd.Key).Add(Summe(KVd.Key) / Anz)
                             Next
 
-                            For Each EmKV In EmComponents
-                                NewMapValues(EmKV.Key).Add(MapSumme(EmKV.Key) / Anz)
-                            Next
-
-                            If bExsCompDef Then
-                                For Each ExsKV In ExsComponents
-                                    For Each ExsKVsub In ExsKV.Value
-                                        NewExsValues(ExsKV.Key)(ExsKVsub.Key).Add(ExsSumme(ExsKV.Key)(ExsKVsub.Key) / Anz)
-                                    Next
-                                Next
-                            End If
-
                             If bAuxDef Then
                                 For Each AuxKV In AuxComponents
                                     NewAuxValues(AuxKV.Key).Add(AuxSumme(AuxKV.Key) / Anz)
@@ -1183,18 +772,6 @@ lb10:
                         If KV.Key <> tDriComp.t Then Summe(KV.Key) = 0
                     Next
 
-                    For Each EmKV In EmComponents
-                        MapSumme(EmKV.Key) = 0
-                    Next
-
-                    If bExsCompDef Then
-                        For Each ExsKV In ExsComponents
-                            For Each ExsKVsub In ExsKV.Value
-                                ExsSumme(ExsKV.Key)(ExsKVsub.Key) = 0
-                            Next
-                        Next
-                    End If
-
                     If bAuxDef Then
                         For Each AuxKV In AuxComponents
                             AuxSumme(AuxKV.Key) = 0
@@ -1213,18 +790,6 @@ lb10:
                 If KV.Key <> tDriComp.t Then Summe(KV.Key) += Values(KV.Key)(z)
             Next
 
-            For Each EmKV In EmComponents
-                MapSumme(EmKV.Key) += EmKV.Value.RawVals(z)
-            Next
-
-            If bExsCompDef Then
-                For Each ExsKV In ExsComponents
-                    For Each ExsKVsub In ExsKV.Value
-                        ExsSumme(ExsKV.Key)(ExsKVsub.Key) += ExsKVsub.Value(z)
-                    Next
-                Next
-            End If
-
             If bAuxDef Then
                 For Each AuxKV In AuxComponents
                     AuxSumme(AuxKV.Key) += AuxKV.Value(z)
@@ -1239,23 +804,13 @@ lb10:
         Values = NewValues
         tDim = Values(tDriComp.t).Count - 1
 
-        For Each EmKV In EmComponents
-            EmKV.Value.RawVals.Clear()
-            For z = 0 To tDim
-                EmKV.Value.RawVals.Add(NewMapValues(EmKV.Key)(z))
-            Next
-        Next
-
         Return True
 
     End Function
 
     Public Sub FirstZero()
-        Dim EmKV As KeyValuePair(Of String, cEmComp)
-        Dim ExsKV As KeyValuePair(Of tExsComp, Dictionary(Of Short, List(Of Single)))
         Dim AuxKV As KeyValuePair(Of String, List(Of Single))
         Dim ValKV As KeyValuePair(Of tDriComp, List(Of Double))
-        Dim ExsKVsub As KeyValuePair(Of Short, List(Of Single))
 
         tDim += 1
 
@@ -1265,27 +820,12 @@ lb10:
 
         If Scycle Then VoglS.Insert(0, VoglS(0))
 
-        If bExsCompDef Then
-            For Each ExsKV In ExsComponents
-                For Each ExsKVsub In ExsKV.Value
-                    ExsKVsub.Value.Insert(0, ExsKVsub.Value(0))
-                Next
-            Next
-        End If
-
         If bAuxDef Then
             For Each AuxKV In AuxComponents
                 AuxKV.Value.Insert(0, AuxKV.Value(0))
             Next
         End If
 
-        If bEmCompDef Then
-            For Each EmKV In EmComponents
-                EmKV.Value.RawVals.Insert(0, EmKV.Value.RawVals(0))
-            Next
-        End If
-
-
     End Sub
 
     Public Property FilePath() As String
@@ -1297,18 +837,6 @@ lb10:
         End Set
     End Property
 
-    Public ReadOnly Property EmCompDef As Boolean
-        Get
-            Return bEmCompDef
-        End Get
-    End Property
-
-    Public ReadOnly Property CreateMapParDef As Boolean
-        Get
-            Return bCreateMapParDef
-        End Get
-    End Property
-
     Public ReadOnly Property AuxDef As Boolean
         Get
             Return bAuxDef
diff --git a/VECTO/Input Files/cENG.vb b/VECTO/Input Files/cENG.vb
index ed0e81c05e40972ab770b41c9aaf34b77a68eca2..191d722110b63a8aa878dfd0e7e2fa9c0ac29f8f 100644
--- a/VECTO/Input Files/cENG.vb	
+++ b/VECTO/Input Files/cENG.vb	
@@ -7,12 +7,11 @@ Public Class cENG
 
     Public ModelName As String
     Public Displ As Single
-    Public nleerl As Single
+    Public Nidle As Single
     Public I_mot As Single
 
     Public fFLD As List(Of cSubPath)
     Private fMAP As cSubPath
-    Private fWHTC As cSubPath
     Public FLDgears As List(Of String)
 
     Private MyPath As String
@@ -21,13 +20,20 @@ Public Class cENG
     Public NoJSON As Boolean
 
     Private MyFileList As List(Of String)
+    Public WHTCurban As Single
+    Public WHTCrural As Single
+    Public WHTCmw As Single
+
+    Public Nrated As Single
+    Public Nlo As Single
+    Public Npref As Single
+    Public N95h As Single
+    Public Nhi As Single
 
 
     Public Function CreateFileList() As Boolean
         Dim sb As cSubPath
 
-        If Not Me.ReadFile Then Return False
-
         MyFileList = New List(Of String)
 
         For Each sb In Me.fFLD
@@ -46,69 +52,27 @@ Public Class cENG
         MyPath = ""
         sFilePath = ""
         fMAP = New cSubPath
-        fWHTC = New cSubPath
         SetDefault()
     End Sub
 
     Private Sub SetDefault()
         ModelName = "Undefined"
         Displ = 0
-        nleerl = 0
+        Nidle = 0
         I_mot = 0
+        Nrated = 0
 
         fFLD = New List(Of cSubPath)
         FLDgears = New List(Of String)
 
         fMAP.Clear()
-        fWHTC.Clear()
-    End Sub
-
-    Private Function SaveFileOld() As Boolean
-        Dim file As cFile_V3
-        Dim i As Integer
-
-        If sFilePath = "" Then Return False
-
-        file = New cFile_V3
-
-        If Not file.OpenWrite(sFilePath) Then Return False
-
-        file.WriteLine("c VECTO Engine Input File")
-        file.WriteLine("c VECTO " & VECTOvers)
-        file.WriteLine("c " & Now.ToString)
-
-        If Trim(ModelName) = "" Then ModelName = "Undefined"
-
-        file.WriteLine("c Make & Model")
-        file.WriteLine(ModelName.Replace(",", "\c\"))
-        file.WriteLine("c NOT USED")
-        file.WriteLine("0")
-        file.WriteLine("c Displacement [ccm]")
-        file.WriteLine(Displ.ToString)
-        file.WriteLine("c NOT USED")
-        file.WriteLine("0")
-        file.WriteLine("c Idling speed [rpm]")
-        file.WriteLine(nleerl.ToString)
-        file.WriteLine("c Inertia [kgm2]")
-        file.WriteLine(I_mot.ToString)
 
-        file.WriteLine("c Full load curves")
-        For i = 0 To fFLD.Count - 1
-            file.WriteLine(fFLD(i).PathOrDummy, FLDgears(i))
-        Next
-
-        file.WriteLine(sKey.Break)
-
-        file.WriteLine("c Fuel map")
-        file.WriteLine(fMAP.PathOrDummy)
-        file.WriteLine("c WHTC test results")
-        file.WriteLine(fWHTC.PathOrDummy)
+        WHTCurban = 0
+        WHTCrural = 0
+        WHTCmw = 0
 
-        file.Close()
-
-        Return True
 
-    End Function
+    End Sub
 
     Private Function ReadFileOld() As Boolean
         Dim MsgSrc As String
@@ -140,7 +104,7 @@ Public Class cENG
             file.ReadLine()  'NOT USED (Pnenn)
             Displ = CSng(file.ReadLine(0))
             file.ReadLine()  'NOT USED (nnenn)
-            nleerl = CSng(file.ReadLine(0))
+            Nidle = CSng(file.ReadLine(0))
             I_mot = CSng(file.ReadLine(0))
 
 
@@ -168,7 +132,6 @@ Public Class cENG
             Loop
 
             fMAP.Init(MyPath, file.ReadLine(0))
-            fWHTC.Init(MyPath, file.ReadLine(0))
         Catch ex As Exception
             WorkerMsg(tMsgID.Err, ex.Message, MsgSrc)
             file.Close()
@@ -188,8 +151,6 @@ Public Class cENG
         Dim dic0 As Dictionary(Of String, Object)
         Dim ls As List(Of Object)
 
-        If Not Cfg.JSON Then Return SaveFileOld()
-
         'Header
         dic = New Dictionary(Of String, Object)
         dic.Add("CreatedBy", Lic.LicString & " (" & Lic.GUID & ")")
@@ -204,7 +165,7 @@ Public Class cENG
         dic.Add("ModelName", ModelName)
 
         dic.Add("Displacement", Displ)
-        dic.Add("IdlingSpeed", nleerl)
+        dic.Add("IdlingSpeed", Nidle)
         dic.Add("Inertia", I_mot)
 
         ls = New List(Of Object)
@@ -217,10 +178,15 @@ Public Class cENG
         dic.Add("FullLoadCurves", ls)
 
         dic.Add("FuelMap", fMAP.PathOrDummy)
-        dic.Add("WHTCresults", fWHTC.PathOrDummy)
+
+        dic.Add("WHTC-Urban", WHTCurban)
+        dic.Add("WHTC-Rural", WHTCrural)
+        dic.Add("WHTC-Motorway", WHTCmw)
+
 
         JSON.Content.Add("Body", dic)
-   
+
+
         Return JSON.WriteFile(sFilePath)
 
 
@@ -239,16 +205,9 @@ Public Class cENG
 
         SetDefault()
 
-        If Cfg.JSON Then
-            If Not JSON.ReadFile(sFilePath) Then
-                NoJSON = True
-                Try
-                    Return ReadFileOld()
-                Catch ex As Exception
-                    Return False
-                End Try
-            End If
-        Else
+
+        If Not JSON.ReadFile(sFilePath) Then
+            NoJSON = True
             Try
                 Return ReadFileOld()
             Catch ex As Exception
@@ -263,7 +222,7 @@ Public Class cENG
             ModelName = JSON.Content("Body")("ModelName")
 
             Displ = JSON.Content("Body")("Displacement")
-            nleerl = JSON.Content("Body")("IdlingSpeed")
+            Nidle = JSON.Content("Body")("IdlingSpeed")
             I_mot = JSON.Content("Body")("Inertia")
 
             i = -1
@@ -275,7 +234,12 @@ Public Class cENG
             Next
 
             fMAP.Init(MyPath, JSON.Content("Body")("FuelMap"))
-            fWHTC.Init(MyPath, JSON.Content("Body")("WHTCresults"))
+
+            If Not JSON.Content("Body")("WHTC-Urban") Is Nothing Then
+                WHTCurban = CSng(JSON.Content("Body")("WHTC-Urban"))
+                WHTCrural = CSng(JSON.Content("Body")("WHTC-Rural"))
+                WHTCmw = CSng(JSON.Content("Body")("WHTC-Motorway"))
+            End If
 
         Catch ex As Exception
             WorkerMsg(tMsgID.Err, "Failed to read VECTO file! " & ex.Message, MsgSrc)
@@ -286,7 +250,127 @@ Public Class cENG
 
     End Function
 
+    Public Function Init() As Boolean
+        Dim Pmax As Single
+        Dim fl As cFLD
+        Dim fldgear As Dictionary(Of Integer, String)
+        Dim fldgFromTo As String()
+        Dim str As String
+        Dim i As Integer
+        Dim j As Integer
+        Dim nr As Single
 
+        Dim MsgSrc As String
+        MsgSrc = "ENG/Init"
+
+        'Read FLDs and MAP
+        FLD = New List(Of cFLD)
+
+        If FLDgears.Count = 0 Then
+            WorkerMsg(tMsgID.Err, "No .vfld file defined in Engine file!", MsgSrc, "<GUI>" & sFilePath)
+            Return False
+        End If
+
+        fldgear = New Dictionary(Of Integer, String)
+
+        Try
+            j = -1
+            For Each str In FLDgears
+
+                j += 1
+                If str.Contains("-") Then
+                    fldgFromTo = str.Replace(" ", "").Split("-")
+                Else
+                    fldgFromTo = New String() {str, str}
+                End If
+
+                For i = CInt(fldgFromTo(0)) To CInt(fldgFromTo(1))
+
+                    If i > GBX.GearCount Then Exit For
+
+                    If i < 0 Or i > 99 Then
+                        WorkerMsg(tMsgID.Err, "Cannot assign .vfld file to gear " & i & "!", MsgSrc, "<GUI>" & sFilePath)
+                        Return False
+                    End If
+
+                    If fldgear.ContainsKey(i) Then
+                        WorkerMsg(tMsgID.Err, "Multiple .vfld files are assigned to gear " & i & "!", MsgSrc, "<GUI>" & sFilePath)
+                        Return False
+                    End If
+
+                    fldgear.Add(i, PathFLD(j))
+
+                Next
+
+            Next
+        Catch ex As Exception
+            WorkerMsg(tMsgID.Err, "Failed to process engine file '" & sFilePath & "'!", MsgSrc)
+            Return False
+        End Try
+
+
+        For i = 0 To GBX.GearCount
+
+            If Not fldgear.ContainsKey(i) Then
+                WorkerMsg(tMsgID.Err, "No .vfld file assigned to gear " & i & "!", MsgSrc, "<GUI>" & sFilePath)
+                Return False
+            End If
+
+            FLD.Add(New cFLD)
+            FLD(i).FilePath = fldgear(i)
+
+            Try
+                If Not FLD(i).ReadFile Then Return False 'Fehlermeldung hier nicht notwendig weil schon von in ReadFile
+            Catch ex As Exception
+                WorkerMsg(tMsgID.Err, "File read error! (" & fldgear(i) & ")", MsgSrc, fldgear(i))
+                Return False
+            End Try
+
+        Next
+
+        'Kennfeld read
+        MAP = New cMAP
+        MAP.FilePath = PathMAP
+
+        Try
+            If Not MAP.ReadFile Then Return False 'Fehlermeldung hier nicht notwendig weil schon von in ReadFile
+        Catch ex As Exception
+            WorkerMsg(tMsgID.Err, "File read error! (" & PathMAP & ")", MsgSrc, PathMAP)
+            Return False
+        End Try
+
+        'Normalize
+        MAP.Norm()
+
+        Nrated = 0
+        For Each fl In FLD
+            nr = fl.fnUrated
+            If Nrated < nr Then Nrated = nr
+        Next
+
+        'Special rpms for Shift Model
+        fl = FLD(FLD.Count - 1)
+
+        Pmax = fl.Pfull(fl.fnUrated)
+
+        Nlo = fl.fnUofPfull(0.55 * Pmax, True)
+
+        N95h = fl.fnUofPfull(0.95 * Pmax, False)
+
+        Npref = fl.Npref
+
+        Nhi = fl.fnUofPfull(0.7 * Pmax, False)
+
+
+        Return True
+
+    End Function
+
+    Public Sub DeclInit()
+
+        I_mot = Declaration.GetEngInertia(Displ)
+
+    End Sub
 
     Public ReadOnly Property FileList As List(Of String)
         Get
@@ -330,18 +414,4 @@ Public Class cENG
         End Set
     End Property
 
-    Public Property PathWHTC(Optional ByVal Original As Boolean = False) As String
-        Get
-            If Original Then
-                Return fWHTC.OriginalPath
-            Else
-                Return fWHTC.FullPath
-            End If
-        End Get
-        Set(ByVal value As String)
-            fWHTC.Init(MyPath, value)
-        End Set
-    End Property
-
-
 End Class
diff --git a/VECTO/Input Files/cFLD.vb b/VECTO/Input Files/cFLD.vb
index 10abcfbc222c1ea50211aaaf35bb2b521f8236d1..d24b8c4673f28a4976b8ec899c664ab902ece56d 100644
--- a/VECTO/Input Files/cFLD.vb	
+++ b/VECTO/Input Files/cFLD.vb	
@@ -7,8 +7,8 @@ Public Class cFLD
 
     Private sFilePath As String
 
-    Private LPfull As List(Of Single)
-    Private LPdrag As List(Of Single)
+    Private LTq As List(Of Single)
+    Private LTqDrag As List(Of Single)
     Private LnU As List(Of Single)
     Private LPT1 As List(Of Single)
 
@@ -16,9 +16,11 @@ Public Class cFLD
 
     Private iDim As Integer
 
+
+
     Private Sub ResetMe()
-        LPfull = Nothing
-        LPdrag = Nothing
+        LTq = Nothing
+        LTqDrag = Nothing
         LnU = Nothing
         LPT1 = Nothing
         iDim = -1
@@ -56,8 +58,8 @@ Public Class cFLD
         End If
 
         'Initialize Lists
-        LPfull = New System.Collections.Generic.List(Of Single)
-        LPdrag = New System.Collections.Generic.List(Of Single)
+        LTq = New System.Collections.Generic.List(Of Single)
+        LTqDrag = New System.Collections.Generic.List(Of Single)
         LnU = New System.Collections.Generic.List(Of Single)
         LPT1 = New System.Collections.Generic.List(Of Single)
 
@@ -78,8 +80,8 @@ Public Class cFLD
                 nU = CDbl(line(0))
 
                 LnU.Add(nU)
-                LPfull.Add(nMtoPe(nU, CDbl(line(1))))
-                LPdrag.Add(nMtoPe(nU, CDbl(line(2))))
+                LTq.Add(CDbl(line(1)))
+                LTqDrag.Add(CDbl(line(2)))
 
                 'If PT1 not given, use default value (see above)
                 If sPT1 > -1 Then
@@ -145,7 +147,7 @@ lbEr:
 
 lbInt:
         'Interpolation
-        Return (nU - LnU(i - 1)) * (LPdrag(i) - LPdrag(i - 1)) / (LnU(i) - LnU(i - 1)) + LPdrag(i - 1)
+        Return nMtoPe(nU, (nU - LnU(i - 1)) * (LTqDrag(i) - LTqDrag(i - 1)) / (LnU(i) - LnU(i - 1)) + LTqDrag(i - 1))
 
     End Function
 
@@ -173,7 +175,7 @@ lbInt:
 
 lbInt:
         'Interpolation
-        PfullStat = (nU - LnU(i - 1)) * (LPfull(i) - LPfull(i - 1)) / (LnU(i) - LnU(i - 1)) + LPfull(i - 1)
+        PfullStat = nMtoPe(nU, (nU - LnU(i - 1)) * (LTq(i) - LTq(i - 1)) / (LnU(i) - LnU(i - 1)) + LTq(i - 1))
         PT1 = (nU - LnU(i - 1)) * (LPT1(i) - LPT1(i - 1)) / (LnU(i) - LnU(i - 1)) + LPT1(i - 1)
 
         'Dynamic Full-load
@@ -203,24 +205,221 @@ lbInt:
 
 lbInt:
         'Interpolation
-        Return (nU - LnU(i - 1)) * (LPfull(i) - LPfull(i - 1)) / (LnU(i) - LnU(i - 1)) + LPfull(i - 1)
+        Return nMtoPe(nU, (nU - LnU(i - 1)) * (LTq(i) - LTq(i - 1)) / (LnU(i) - LnU(i - 1)) + LTq(i - 1))
     End Function
 
-    Public Function nRated() As Single
-        Dim i As Int16
+    Public Function Tq(ByVal nU As Single) As Single
+        Dim i As Int32
+
+        'Extrapolation for x < x(1)
+        If LnU(0) >= nU Then
+            If LnU(0) > nU Then MODdata.ModErrors.FLDextrapol = "n= " & nU & " [1/min]"
+            i = 1
+            GoTo lbInt
+        End If
+
+        i = 0
+        Do While LnU(i) < nU And i < iDim
+            i += 1
+        Loop
+
+        'Extrapolation for x > x(imax)
+        If LnU(i) < nU Then
+            MODdata.ModErrors.FLDextrapol = "n= " & nU & " [1/min]"
+        End If
+
+lbInt:
+        'Interpolation
+        Return (nU - LnU(i - 1)) * (LTq(i) - LTq(i - 1)) / (LnU(i) - LnU(i - 1)) + LTq(i - 1)
+    End Function
+
+    Public Function Npref() As Single
+        Dim i As Integer
+        Dim Amax As Single
+        Dim N95h As Single
+        Dim n As Single
+        Dim T0 As Single
+        Dim dn As Single
+        Dim A As Single
+        Dim k As Single
+
+
+        dn = 0.001
+
+        N95h = fnUofPfull(0.95 * Pfull(fnUrated), False)
+
+        Amax = Area(ENG.Nidle, N95h)
+
+        For i = 0 To iDim - 1
+
+            If Area(ENG.Nidle, LnU(i + 1)) > 0.51 * Amax Then
+
+                n = LnU(i)
+                T0 = LTq(i)
+                A = Area(ENG.Nidle, n)
+
+                k = (LTq(i + 1) - LTq(i)) / (LnU(i + 1) - LnU(i))
+
+                Do While A < 0.51 * Amax
+                    n += dn
+                    A += dn * (2 * T0 + k * dn) / 2
+                Loop
+
+                Exit For
+
+            End If
+
+        Next
+
+        Return n
+
+    End Function
+
+
+    Private Function Area(ByVal nFrom As Single, ByVal nTo As Single) As Single
+        Dim A As Single
+        Dim i As Integer
+
+
+        A = 0
+        For i = 1 To iDim
+
+            If LnU(i - 1) >= nTo Then Exit For
+
+            If LnU(i - 1) >= nFrom Then
+
+
+                If LnU(i) <= nTo Then
+
+                    'Add full segment
+                    A += (LnU(i) - LnU(i - 1)) * (LTq(i) + LTq(i - 1)) / 2
+
+                Else
+
+                    'Add segment till nTo
+                    A += (nTo - LnU(i - 1)) * (Tq(nTo) + LTq(i - 1)) / 2
+
+                End If
+
+            Else
+
+                If LnU(i) > nFrom Then
+
+                    'Add segment starting from nFrom
+                    A += (LnU(i) - nFrom) * (LTq(i) + Tq(nFrom)) / 2
+
+                End If
+
+            End If
+
+        Next
+
+        Return A
+
+
+    End Function
+
+
+    Public Function fnUrated() As Single
         Dim PeMax As Single
         Dim nU As Single
+        Dim nUmax As Single
+        Dim nUrated As Single
+        Dim dnU As Single
+        Dim P As Single
 
-        PeMax = LPfull(0)
+        dnU = 1
+        PeMax = 0
         nU = LnU(0)
-        For i = 1 To iDim
-            If LPfull(i) >= PeMax Then
-                PeMax = LPfull(i)
-                nU = LnU(i)
+        nUmax = LnU(iDim)
+        nUrated = nU
+
+        Do
+            P = nMtoPe(nU, Tq(nU))
+            If P > PeMax Then
+                PeMax = P
+                nUrated = nU
             End If
+            nU += dnU
+        Loop Until nU > nUmax
+
+        Return nUrated
+
+    End Function
+
+
+    Public Function fnUofPfull(ByVal PeTarget As Single, ByVal FromLeft As Boolean) As Single
+        Dim Pe As Single
+        Dim LastPe As Single
+        Dim nU As Single
+        Dim nUmin As Single
+        Dim nUmax As Single
+        Dim nUtarget As Single
+        Dim dnU As Single
+
+        dnU = 1
+        nUmin = LnU(0)
+        nUmax = LnU(iDim)
+
+        If FromLeft Then
+
+            nU = nUmin
+            LastPe = nMtoPe(nU, Tq(nU))
+            nUtarget = nU
+
+            Do
+                Pe = nMtoPe(nU, Tq(nU))
+
+                If Pe > PeTarget Then
+                    If Math.Abs(LastPe - PeTarget) < Math.Abs(Pe - PeTarget) Then
+                        Return nU - dnU
+                    Else
+                        Return nU
+                    End If
+                End If
+
+                LastPe = Pe
+                nU += dnU
+            Loop Until nU > nUmax
+
+        Else
+
+            nU = nUmax
+            LastPe = nMtoPe(nU, Tq(nU))
+            nUtarget = nU
+
+            Do
+                Pe = nMtoPe(nU, Tq(nU))
+
+                If Pe > PeTarget Then
+                    If Math.Abs(LastPe - PeTarget) < Math.Abs(Pe - PeTarget) Then
+                        Return nU + dnU
+                    Else
+                        Return nU
+                    End If
+                End If
+
+                LastPe = Pe
+                nU -= dnU
+            Loop Until nU < nUmin
+
+        End If
+
+        Return nUtarget
+
+    End Function
+
+
+    Public Function Tmax() As Single
+        Dim i As Int16
+        Dim Tm As Single
+
+        Tm = LTq(0)
+        For i = 1 To iDim
+            If LTq(i) > Tm Then Tm = LTq(i)
         Next
 
-        Return nU
+        Return Tm
 
     End Function
 
@@ -234,4 +433,6 @@ lbInt:
     End Property
 
 
+
+
 End Class
diff --git a/VECTO/Input Files/cGBX.vb b/VECTO/Input Files/cGBX.vb
index d6e56e05bde29f358afb5307367861d5cb18795f..f78b47f263340afb18baac27da96481bd5d69f42 100644
--- a/VECTO/Input Files/cGBX.vb	
+++ b/VECTO/Input Files/cGBX.vb	
@@ -20,10 +20,12 @@ Public Class cGBX
 
     'Gear shift polygons
     Private gs_file As New cSubPath
-    Private gs_M As New List(Of Single)
+    Private gs_Mup As New List(Of Single)
+    Private gs_Mdown As New List(Of Single)
     Private gs_nUup As New List(Of Single)
     Private gs_nUdown As New List(Of Single)
-    Private gs_Dim As Integer
+    Private gs_Dup As Integer
+    Private gs_Ddown As Integer
     Public gs_TorqueResv As Single
     Public gs_SkipGears As Boolean
     Public gs_ShiftTime As Integer
@@ -62,9 +64,6 @@ Public Class cGBX
     Public Function CreateFileList() As Boolean
         Dim i As Integer
 
-        If Not Me.ReadFile Then Return False
-
-
         MyFileList = New List(Of String)
 
         '.vgbs
@@ -102,11 +101,13 @@ Public Class cGBX
         IsTCgear = New List(Of Boolean)
 
         iganganz = 0
-        gs_M.Clear()
+        gs_Mup.Clear()
+        gs_Mdown.Clear()
         gs_nUdown.Clear()
         gs_nUup.Clear()
         gs_file.Clear()
-        gs_Dim = -1
+        gs_Dup = -1
+        gs_Ddown = -1
         gs_TorqueResv = 0
         gs_SkipGears = False
         gs_ShiftTime = 0
@@ -123,71 +124,6 @@ Public Class cGBX
 
     End Sub
 
-    Private Function SaveFileOld() As Boolean
-        Dim file As cFile_V3
-        Dim i As Integer
-        file = New cFile_V3
-
-        If sFilePath = "" Then Return False
-
-        If Not file.OpenWrite(sFilePath) Then Return False
-
-        file.WriteLine("c VECTO Gearbox Input File")
-        file.WriteLine("c VECTO " & VECTOvers)
-        file.WriteLine("c " & Now.ToString)
-
-        If Trim(ModelName) = "" Then ModelName = "Undefined"
-
-        file.WriteLine("c Make & Model")
-        file.WriteLine(ModelName.Replace(",", "\c\"))
-        file.WriteLine("c Gearbox rotational inertia [kgm2]")
-        file.WriteLine(CStr(I_Getriebe))
-        file.WriteLine("c Traction Interruption")
-        file.WriteLine(CStr(TracIntrSi))
-
-        file.WriteLine("c Gears (0=axle)")
-        file.WriteLine("c Ratio [-], Loss Map or Efficiency, Is TC gear")
-        For i = 0 To GetrI.Count - 1
-            file.WriteLine("c Gear " & i)
-            file.WriteLine(CStr(GetrI(i)), GetrMaps(i).PathOrDummy, CStr(Math.Abs(CInt(IsTCgear(i)))))
-        Next
-        file.WriteLine(sKey.Break)
-
-        file.WriteLine("c Gear shift polygons file")
-        file.WriteLine(gs_file.PathOrDummy)
-        file.WriteLine("c Torque Reserve [%]")
-        file.WriteLine(CStr(gs_TorqueResv))
-        file.WriteLine("c Skip gears")
-        file.WriteLine(CStr(Math.Abs(CInt(gs_SkipGears))))
-        file.WriteLine("c Minimum time between two gear shifts [s]")
-        file.WriteLine(CStr(gs_ShiftTime))
-        file.WriteLine("c Start Torque Reserve [%]")
-        file.WriteLine(CStr(gs_TorqueResvStart))
-        file.WriteLine("c Vehicle speed with clutch fully closed [m/s]")
-        file.WriteLine(CStr(gs_StartSpeed))
-        file.WriteLine("c Acceleration during start [m/s2]")
-        file.WriteLine(CStr(gs_StartAcc))
-        file.WriteLine("c Shift inside polygons")
-        file.WriteLine(CStr(Math.Abs(CInt(gs_ShiftInside))))
-
-        file.WriteLine("c Gearbox Type")
-        file.WriteLine(CStr(CType(gs_Type, Integer)))
-
-        file.WriteLine("c TC On/Off")
-        file.WriteLine(CStr(Math.Abs(CInt(TCon))))
-        file.WriteLine("c TC characteristics file")
-        file.WriteLine(TC_file.PathOrDummy)
-        file.WriteLine("c TC reference rpm")
-        file.WriteLine(CStr(TCrefrpm))
-
-
-        file.Close()
-        file = Nothing
-
-        Return True
-
-    End Function
-
     Private Function ReadFileOld() As Boolean
         Dim line() As String
         Dim file As cFile_V3
@@ -200,7 +136,7 @@ Public Class cGBX
         SetDefault()
 
         If sFilePath = "" Or Not IO.File.Exists(sFilePath) Then
-            WorkerMsg(tMsgID.Err, "Vehicle file not found (" & sFilePath & ") !", MsgSrc)
+            WorkerMsg(tMsgID.Err, "Gearbox file not found (" & sFilePath & ") !", MsgSrc)
             Return False
         End If
 
@@ -288,8 +224,6 @@ Public Class cGBX
         Dim dic0 As Dictionary(Of String, Object)
         Dim ls As List(Of Object)
 
-        If Not Cfg.JSON Then Return SaveFileOld()
-
         'Header
         dic = New Dictionary(Of String, Object)
         dic.Add("CreatedBy", Lic.LicString & " (" & Lic.GUID & ")")
@@ -357,16 +291,8 @@ Public Class cGBX
 
         SetDefault()
 
-        If Cfg.JSON Then
-            If Not JSON.ReadFile(sFilePath) Then
-                NoJSON = True
-                Try
-                    Return ReadFileOld()
-                Catch ex As Exception
-                    Return False
-                End Try
-            End If
-        Else
+        If Not JSON.ReadFile(sFilePath) Then
+            NoJSON = True
             Try
                 Return ReadFileOld()
             Catch ex As Exception
@@ -430,8 +356,27 @@ Public Class cGBX
 
     End Function
 
+    Public Function DeclInit() As Boolean
+
+        If gs_Type = tGearbox.Custom Or gs_Type = tGearbox.Automatic Then Return False
+
+        I_Getriebe = cDeclaration.GbInertia
+        TracIntrSi = Declaration.TracInt(gs_Type)
+        gs_SkipGears = Declaration.SkipGears(gs_Type)
+        gs_ShiftTime = Declaration.ShiftTime(gs_Type)
+        gs_ShiftInside = Declaration.ShiftInside(gs_Type)
+        gs_TorqueResv = cDeclaration.TqResv
+        gs_TorqueResvStart = cDeclaration.TqResvStart
+        gs_StartSpeed = cDeclaration.StartSpeed
+        gs_StartAcc = cDeclaration.StartAcc
 
+        TCon = (gs_Type = tGearbox.Automatic)
 
+        SetGenericShiftPoly()
+
+        Return True
+
+    End Function
 
     Public Function TCinit() As Boolean
         Dim file As New cFile_V3
@@ -569,9 +514,9 @@ Public Class cGBX
             nUdown = GBX.fGSnUdown(Min)
 
             'If nUin > 1.05 * nUup - 0.0001 Then
-            If nUin > VEH.nNenn - 0.0001 Then
+            If nUin > ENG.Nrated - 0.0001 Then
                 'nUin = 1.05 * nUup
-                nUin = VEH.nNenn
+                nUin = ENG.Nrated
                 nUstep /= 2
                 VZ *= -1
                 Continue Do
@@ -594,13 +539,11 @@ Public Class cGBX
         'Calc nu again because nUin might have changed
         nu = nUout / nUin
 
-        MODdata.ModErrors.GSextrapol = ""
-
-        If nUin < VEH.nLeerl Then
+        If nUin < ENG.Nidle Then
 
             MODdata.ModErrors.TCextrapol = ""
 
-            nUin = VEH.nLeerl
+            nUin = ENG.Nidle
             nu = nUout / nUin
 
             If nu > TCnu(TCdim) Then
@@ -771,17 +714,19 @@ lbInt:
         End If
 
         'Clear lists
-        gs_M.Clear()
+        gs_Mup.Clear()
+        gs_Mdown.Clear()
         gs_nUdown.Clear()
         gs_nUup.Clear()
-        gs_Dim = -1
+        gs_Dup = -1
 
         'Read file
         Try
             Do While Not file.EndOfFile
                 line = file.ReadLine
-                gs_Dim += 1
-                gs_M.Add(CSng(line(0)))
+                gs_Dup += 1
+                gs_Mup.Add(CSng(line(0)))
+                gs_Mdown.Add(CSng(line(0)))
                 gs_nUdown.Add(CSng(line(1)))
                 gs_nUup.Add(CSng(line(2)))
             Loop
@@ -791,38 +736,68 @@ lbInt:
         End Try
 
         'Check if more then one point
-        If gs_Dim < 1 Then
+        If gs_Dup < 1 Then
             WorkerMsg(tMsgID.Err, "More points in Gear Shift Polygon File needed!", MsgSrc)
             Return False
         End If
 
+        gs_Ddown = gs_Dup
+
         Return True
 
     End Function
 
+    Public Sub SetGenericShiftPoly()
+
+        Dim Tmax As Single
+
+        'Clear lists
+        gs_Mup.Clear()
+        gs_Mdown.Clear()
+        gs_nUdown.Clear()
+        gs_nUup.Clear()
+
+        Tmax = FLD(FLD.Count - 1).Tmax
+
+        gs_nUdown.Add(ENG.Nidle)
+        gs_nUdown.Add(ENG.Nidle)
+        gs_nUdown.Add((ENG.Npref + ENG.Nlo) / 2)
+
+        gs_Mdown.Add(0)
+        gs_Mdown.Add(Tmax * ENG.Nidle / (ENG.Npref + ENG.Nlo - ENG.Nidle))
+        gs_Mdown.Add(Tmax)
+
+        gs_nUup.Add(ENG.Npref)
+        gs_nUup.Add(ENG.Npref)
+        gs_nUup.Add(ENG.N95h)
+
+        gs_Mup.Add(0)
+        gs_Mup.Add(Tmax * (ENG.Npref - ENG.Nidle) / (ENG.N95h - ENG.Nidle))
+        gs_Mup.Add(Tmax)
+
+        gs_Ddown = 2
+        gs_Dup = 2
+
+    End Sub
+
     Public Function fGSnUdown(ByVal Md As Single) As Single
         Dim i As Int32
 
         'Extrapolation for x < x(1)
-        If gs_M(0) >= Md Then
-            If gs_M(0) > Md Then MODdata.ModErrors.GSextrapol = "Md= " & Md & " [Nm]"
+        If gs_Mdown(0) >= Md Then
             i = 1
             GoTo lbInt
         End If
 
         i = 0
-        Do While gs_M(i) < Md And i < gs_Dim
+        Do While gs_Mdown(i) < Md And i < gs_Ddown
             i += 1
         Loop
 
-        'Extrapolation for x > x(imax)
-        If gs_M(i) < Md Then
-            MODdata.ModErrors.GSextrapol = "Md= " & Md & " [Nm]"
-        End If
 
 lbInt:
         'Interpolation
-        Return (Md - gs_M(i - 1)) * (gs_nUdown(i) - gs_nUdown(i - 1)) / (gs_M(i) - gs_M(i - 1)) + gs_nUdown(i - 1)
+        Return (Md - gs_Mdown(i - 1)) * (gs_nUdown(i) - gs_nUdown(i - 1)) / (gs_Mdown(i) - gs_Mdown(i - 1)) + gs_nUdown(i - 1)
 
     End Function
 
@@ -830,26 +805,25 @@ lbInt:
         Dim i As Int32
 
         'Extrapolation for x < x(1)
-        If gs_M(0) >= Md Then
-            If gs_M(0) > Md Then MODdata.ModErrors.GSextrapol = "Md= " & Md & " [Nm]"
+        If gs_Mup(0) >= Md Then
             i = 1
             GoTo lbInt
         End If
 
         i = 0
-        Do While gs_M(i) < Md And i < gs_Dim
+        Do While gs_Mup(i) < Md And i < gs_Dup
             i += 1
         Loop
 
-        'Extrapolation for x > x(imax)
-        If gs_M(i) < Md Then
-            MODdata.ModErrors.GSextrapol = "Md= " & Md & " [Nm]"
-        End If
 
 lbInt:
         'Interpolation
-        Return (Md - gs_M(i - 1)) * (gs_nUup(i) - gs_nUup(i - 1)) / (gs_M(i) - gs_M(i - 1)) + gs_nUup(i - 1)
+        Return (Md - gs_Mup(i - 1)) * (gs_nUup(i) - gs_nUup(i - 1)) / (gs_Mup(i) - gs_Mup(i - 1)) + gs_nUup(i - 1)
+
+    End Function
 
+    Public Function GearCount() As Integer
+        Return GBX.GetrI.Count - 1
     End Function
 
     Public ReadOnly Property FileList As List(Of String)
diff --git a/VECTO/Input Files/cMAP.vb b/VECTO/Input Files/cMAP.vb
index 7a708d9df3be000aeb7be46e51421d84b13f7457..776f5f9f6be63825aa221b9ca418b250a188f0fd 100644
--- a/VECTO/Input Files/cMAP.vb	
+++ b/VECTO/Input Files/cMAP.vb	
@@ -5,9 +5,7 @@ Public Class cMAP
     'Private Const FormatVersion As Integer = 1
     'Private FileVersion As Integer
 
-    Public EmComponents As Dictionary(Of String, cEmComp)
-    Public EmDefRef As Dictionary(Of tMapComp, cEmComp)
-    Private MyEmList As List(Of String)
+    Public lFC As List(Of Single)
 
     Public LPe As List(Of Single)
     Public LnU As List(Of Single)
@@ -21,11 +19,9 @@ Public Class cMAP
 
     Private Sub ResetMe()
         MapIntp = Nothing
-        EmComponents = Nothing
-        MyEmList = Nothing
+        lFC = Nothing
         LPe = Nothing
         LnU = Nothing
-        EmDefRef = Nothing
         iMapDim = -1
         FuelMap = New cDelaunayMap
     End Sub
@@ -33,11 +29,6 @@ Public Class cMAP
     Public Function ReadFile(Optional ByVal MsgOutput As Boolean = True) As Boolean
         Dim file As cFile_V3
         Dim line As String()
-        Dim s1 As Integer
-        Dim s As Integer
-        'Dim txt As String
-        Dim Em0 As cEmComp
-        Dim EmKV As System.Collections.Generic.KeyValuePair(Of String, cEmComp)
         Dim nU As Double
         Dim MsgSrc As String
 
@@ -62,35 +53,10 @@ Public Class cMAP
         End If
 
         'Initi Lists (before version check so ReadOldFormat works)
-        MyEmList = New List(Of String)
-        EmComponents = New System.Collections.Generic.Dictionary(Of String, cEmComp)
-        EmDefRef = New System.Collections.Generic.Dictionary(Of tMapComp, cEmComp)
+        lFC = New System.Collections.Generic.List(Of Single)
         LPe = New System.Collections.Generic.List(Of Single)
         LnU = New System.Collections.Generic.List(Of Single)
 
-        s1 = 2
-
-        'Column 3: fuel consumption
-        s = 2
-        Em0 = New cEmComp
-        Em0.Col = s
-        Em0.Name = "FC"  'wird bei Default-Komponenten noch geändert
-        Em0.Unit = "[g/h]"
-        Em0.IDstring = "<FC>"
-        Em0.MapCompID = tMapComp.FC
-        Em0.NormID = tEmNorm.x_h
-        If EmComponents.ContainsKey(UCase(Em0.Name)) Then
-            'Abort if already defined
-            WorkerMsg(tMsgID.Err, "Component '" & Em0.Name & "' already defined! Col. " & s + 1, MsgSrc)
-            GoTo lbEr
-        Else
-            Em0.Name = fMapCompName(Em0.MapCompID)
-            EmComponents.Add(Em0.IDstring, Em0)
-            MyEmList.Add(Em0.IDstring)
-            EmDefRef.Add(Em0.MapCompID, Em0)
-        End If
-
-        'From line 4 (or  6): Values
         Try
             Do While Not file.EndOfFile
 
@@ -109,9 +75,16 @@ Public Class cMAP
                 LPe.Add(nMtoPe(nU, CDbl(line(1))))
 
                 'FC
-                For Each EmKV In EmComponents
-                    EmKV.Value.RawVals.Add(CSng(line(EmKV.Value.Col)))
-                Next
+                'Check sign
+                If CSng(line(2)) < 0 Then
+                    file.Close()
+                    WorkerMsg(tMsgID.Err, "FC < 0 in map at " & nU & " [1/min], " & line(1) & " [Nm]", MsgSrc)
+                    Return False
+                End If
+
+                lFC.Add(CSng(line(2)))
+
+
             Loop
         Catch ex As Exception
 
@@ -127,8 +100,6 @@ Public Class cMAP
         file.Close()
 
         file = Nothing
-        EmKV = Nothing
-        Em0 = Nothing
 
         Return True
 
@@ -137,8 +108,6 @@ Public Class cMAP
 lbEr:
         file.Close()
         file = Nothing
-        EmKV = Nothing
-        Em0 = Nothing
 
         Return False
 
@@ -146,22 +115,14 @@ lbEr:
 
     Public Sub Norm()
         Dim i As Integer
-        Dim Em0 As cEmComp
-
-        Dim nleerl As Single
-        Dim nnenn As Single
 
         Dim MsgSrc As String
 
         MsgSrc = "MAP/Norm"
 
-        nleerl = VEH.nLeerl
-        nnenn = VEH.nNenn
-
         'FC Delauney
-        Em0 = EmDefRef(tMapComp.FC)
         For i = 0 To iMapDim
-            FuelMap.AddPoints(LnU(i), LPe(i), Em0.RawVals(i))
+            FuelMap.AddPoints(LnU(i), LPe(i), lFC(i))
         Next
 
         FuelMap.Triangulate()
@@ -225,13 +186,6 @@ lbEr:
         End Set
     End Property
 
-    Public ReadOnly Property EmList As List(Of String)
-        Get
-            Return MyEmList
-        End Get
-    End Property
-
-
 #End Region
 
 
diff --git a/VECTO/Input Files/cGEN.vb b/VECTO/Input Files/cVECTO.vb
similarity index 66%
rename from VECTO/Input Files/cGEN.vb
rename to VECTO/Input Files/cVECTO.vb
index fbbe9181d3ba2d2ef58e97ccc779122508be4a5e..ad73d3d2b305c08f162f66e4385c94d558e8a17f 100644
--- a/VECTO/Input Files/cGEN.vb	
+++ b/VECTO/Input Files/cVECTO.vb	
@@ -1,6 +1,6 @@
 Imports System.Collections.Generic
 
-Public Class cGEN
+Public Class cVECTO
 
     Private Const FormatVersion As String = "1.0"
     Private FileVersion As String
@@ -25,9 +25,11 @@ Public Class cGEN
     Private laDesMin As List(Of Single)
     Private DesMaxDim As Integer
 
-    Public AuxPaths As Dictionary(Of String, cVEH.cAuxEntry)
+    Public AuxPaths As Dictionary(Of String, cAuxEntry)
+    Public AuxRefs As Dictionary(Of String, cAux)          'Alle Nebenverbraucher die in der Veh-Datei UND im Zyklus definiert sind
     Public AuxDef As Boolean                               'True wenn ein oder mehrere Nebenverbraucher definiert sind
 
+
     Public CycleFiles As List(Of cSubPath)
 
     Public EngOnly As Boolean
@@ -45,16 +47,20 @@ Public Class cGEN
 
     Private MyFileList As List(Of String)
 
+
+    Public Class cAuxEntry
+        Public Type As String
+        Public Path As cSubPath
+        Public Sub New()
+            Path = New cSubPath
+        End Sub
+    End Class
+
     Public Function CreateFileList() As Boolean
-        Dim Aux0 As cVEH.cAuxEntry
+        Dim Aux0 As cAuxEntry
         Dim sb As cSubPath
-        Dim VEH0 As cVEH
-        Dim ENG0 As cENG
-        Dim GBX0 As cGBX
         Dim str As String
 
-        If Not Me.ReadFile Then Return False
-
         MyFileList = New List(Of String)
 
         '.vecto
@@ -64,10 +70,8 @@ Public Class cGEN
         If Not Me.EngOnly Then
             MyFileList.Add(Me.PathVEH)
 
-            VEH0 = New cVEH
-            VEH0.FilePath = Me.PathVEH
-            If Not VEH0.CreateFileList Then Return False
-            For Each str In VEH0.FileList
+            If Not VEH.CreateFileList Then Return False
+            For Each str In VEH.FileList
                 MyFileList.Add(str)
             Next
         End If
@@ -75,10 +79,8 @@ Public Class cGEN
         'Eng
         MyFileList.Add(Me.PathENG)
 
-        ENG0 = New cENG
-        ENG0.FilePath = Me.PathENG
-        If Not ENG0.CreateFileList Then Return False
-        For Each str In ENG0.FileList
+        If Not ENG.CreateFileList Then Return False
+        For Each str In ENG.FileList
             MyFileList.Add(str)
         Next
 
@@ -87,10 +89,8 @@ Public Class cGEN
             'Gbx
             MyFileList.Add(Me.PathGBX)
 
-            GBX0 = New cGBX
-            GBX0.FilePath = Me.PathGBX
-            If Not GBX0.CreateFileList Then Return False
-            For Each str In GBX0.FileList
+            If Not GBX.CreateFileList Then Return False
+            For Each str In GBX.FileList
                 MyFileList.Add(str)
             Next
 
@@ -131,7 +131,8 @@ Public Class cGEN
         laDesMax = New List(Of Single)
         laDesMin = New List(Of Single)
 
-        AuxPaths = New Dictionary(Of String, cVEH.cAuxEntry)
+        AuxPaths = New Dictionary(Of String, cAuxEntry)
+        AuxRefs = New Dictionary(Of String, cAux)
         AuxDef = False
 
         CycleFiles = New List(Of cSubPath)
@@ -142,7 +143,7 @@ Public Class cGEN
         Dim file As cFile_V3
         Dim line As String()
         'Dim txt As String
-        Dim AuxEntry As cVEH.cAuxEntry
+        Dim AuxEntry As cAuxEntry
         Dim AuxID As String
         Dim MsgSrc As String
         Dim SubPath As cSubPath
@@ -314,7 +315,7 @@ Public Class cGEN
                 Return False
             End If
 
-            AuxEntry = New cVEH.cAuxEntry
+            AuxEntry = New cAuxEntry
 
             AuxEntry.Type = line(1)
             AuxEntry.Path.Init(MyPath, line(2))
@@ -390,243 +391,8 @@ lbEr:
 
     End Function
 
-    Private Function SaveFileOld() As Boolean
-        Dim fGEN As New cFile_V3
-        Dim AuxEntryKV As KeyValuePair(Of String, cVEH.cAuxEntry)
-        'Dim s As String
-        Dim sb As cSubPath
-
-        If Not fGEN.OpenWrite(sFilePath) Then Return False
-
-        'fGEN.WriteLine("V" & FormatVersion)
-
-        fGEN.WriteLine("c VECTO Input File")
-        fGEN.WriteLine("c VECTO " & VECTOvers)
-        fGEN.WriteLine("c " & Now.ToString)
-
-        'fGEN.WriteLine("c Heavy Duty (0) or Passenger Car (1)")
-        'fGEN.WriteLine(Math.Abs(CInt(boPKWja)))
-
-        'fGEN.WriteLine("c Transient emission correction (1/0)")
-        'fGEN.WriteLine(Math.Abs(CInt(bodynkorja)))
-
-        'fGEN.WriteLine("c Emission Class (EURO ..)")
-        'fGEN.WriteLine(ineklasse)
-
-        'fGEN.WriteLine("c Gear Shift Mode: NEDC (0), FTP (1), Model - MT (2)")
-        'fGEN.WriteLine(inizykwael)
-
-        'fGEN.WriteLine("c Calculation Mode, EngAnalysis, CreateMap")
-        'Select Case VehMode
-        '    Case tVehMode.StandardMode
-        '        s = "0"
-        '    Case tVehMode.EngineOnly
-        '        s = "1"
-        '    Case tVehMode.HEV
-        '        s = "2"
-        '    Case Else   'tVehMode.EV
-        '        s = "3"
-        'End Select
-        's &= "," & Math.Abs(CInt(EngAnalysis))
-        's &= "," & Math.Abs(CInt(CreateMap))
-        'fGEN.WriteLine(s)
-
-        'Map creation ------------------------------------------------ ------
-        'fGEN.WriteLine("c Settings for Emission Map Creation Mode:")
-        'fGEN.WriteLine("c Increment Pe, n:")
-        'fGEN.WriteLine(inPschrit & "," & innschrit)
-
-        'fGEN.WriteLine("c CutFull,CutDrag,InsertDrag,DragIntp:")
-        'fGEN.WriteLine(Math.Abs(CInt(bKFcutFull)) & "," & Math.Abs(CInt(bKFcutDrag)) & "," & Math.Abs(CInt(bKFinsertDrag)) & "," & Math.Abs(CInt(bKFDragIntp)))
-
-        'fGEN.WriteLine("c Include Gear Shifts (1/0, Standard = 1)")
-        'fGEN.WriteLine(Math.Abs(CInt(boMapSchaltja)))
-
-        'fGEN.WriteLine("c Averageing Period for Modal Values")
-        'fGEN.WriteLine(iniMsek)
-
-        'fGEN.WriteLine("c ICE Type (Otto = 1, Diesel = 0")
-        'fGEN.WriteLine(Math.Abs(CInt(boottoJa)))
-
-        'Kalt Start---------------------------------------------------------------
-        'fGEN.WriteLine("c Cold Start (1/0)")
-        'fGEN.WriteLine(Math.Abs(CInt(bokaltst1)))
-
-        'fGEN.WriteLine("c t cat start [°C]")
-        'fGEN.WriteLine(sitkat1)
-
-        'fGEN.WriteLine("c t coolant start [°C]")
-        'fGEN.WriteLine(sitkw1)
-
-        'fGEN.WriteLine("c time of start [h.sec]")
-        'fGEN.WriteLine(sihsstart)
-
-        'Dateien------------------------------------------------------------------
-        fGEN.WriteLine("c Vehicle (.vveh):")
-        fGEN.WriteLine(stPathVEH.PathOrDummy)
-
-        fGEN.WriteLine("c Engine (.veng):")
-        fGEN.WriteLine(stPathENG.PathOrDummy)
-
-        fGEN.WriteLine("c Gearbox (*.vgbx):")
-        fGEN.WriteLine(stPathGBX.PathOrDummy)
-
-        fGEN.WriteLine("c Driving Cycles (.vdri):")
-        For Each sb In CycleFiles
-            fGEN.WriteLine(sb.PathOrDummy)
-        Next
-        fGEN.WriteLine(sKey.Break)
-
-        'fGEN.WriteLine("c ")
-        'fGEN.WriteLine("c File containing transient correction parameters (*.trs):")
-        'fGEN.WriteLine(stdynspez.PathOrDummy)
-
-        'Kalt Start
-        'fGEN.WriteLine("c ")
-        'fGEN.WriteLine("c File containing the catalyst map (*.maa):")
-        'fGEN.WriteLine(stkatmap.PathOrDummy)
-
-        'fGEN.WriteLine("c ")
-        'fGEN.WriteLine("c File containing the map of cooling water (*.mac):")
-        'fGEN.WriteLine(stkwmap.PathOrDummy)
-
-        'fGEN.WriteLine("c ")
-        'fGEN.WriteLine("c File containing the catalyst warm-up (*.wua):")
-        'fGEN.WriteLine(stkatkurv.PathOrDummy)
-
-        'fGEN.WriteLine("c ")
-        'fGEN.WriteLine("c File containing the engine coolant warm-up (*.wuc):")
-        'fGEN.WriteLine(stkwkurv.PathOrDummy)
-
-        'fGEN.WriteLine("c ")
-        'fGEN.WriteLine("c File containing the cooling parameters for catalyst and engine coolant (*.cdw):")
-        'fGEN.WriteLine(stcooldown.PathOrDummy)
-
-        'fGEN.WriteLine("c ")
-        'fGEN.WriteLine("c File containing the ambient parameters (*.atc)")
-        'fGEN.WriteLine(sttumgebung.PathOrDummy)
-
-        'HEV
-        'fGEN.WriteLine("c ")
-        'fGEN.WriteLine("c File containing battery specifications for HEV (*.bat)")
-        'fGEN.WriteLine(stBatfile.PathOrDummy)
-
-        'fGEN.WriteLine("c ")
-        'fGEN.WriteLine("c File containing specifications of the E-motor for HEV (*emo)")
-        'fGEN.WriteLine(stEmospez.PathOrDummy)
-
-        'fGEN.WriteLine("c ")
-        'fGEN.WriteLine("c File containing the pattern of E-motor on/off for HEV  (*ean)")
-        'fGEN.WriteLine(stEANfile.PathOrDummy)
-
-        'fGEN.WriteLine("c ")
-        'fGEN.WriteLine("c File containing the efficiency of additional gearbox for HEV (*get)")
-        'fGEN.WriteLine(stGetspez.PathOrDummy)
-
-        'fGEN.WriteLine("c ")
-        'fGEN.WriteLine("c File containing the control efficiency-File for HEV (*.ste)")
-        'fGEN.WriteLine(stSTEnam.PathOrDummy)
-
-        'fGEN.WriteLine("c ")
-        'fGEN.WriteLine("c File containing the efficiency-maps for HEV-strategy control (*.ekf)")
-        'fGEN.WriteLine(stEKFnam.PathOrDummy)
-
-        'EXS
-        'fGEN.WriteLine("c ")
-        'fGEN.WriteLine("c Exhaust System Simulation (1/0)")
-        'fGEN.WriteLine(Math.Abs(CInt(boEXSja)))
-
-        'fGEN.WriteLine("c Exhaust System Simulation Configuration File")
-        'fGEN.WriteLine(stPathExs.PathOrDummy)
-
-        'SOC-Start Iteration
-        'fGEN.WriteLine("c SOC Start Iteration (1/0) - HEV only")
-        'fGEN.WriteLine(Math.Abs(CInt(boSOCnJa)))
-
-        ''SOC-Start
-        'fGEN.WriteLine("c SOC Start - (H)EV only")
-        'fGEN.WriteLine(siSOCstart)
-
-        ''Getriebe-Verluste-Modell
-        'fGEN.WriteLine("c Transmission Loss Model")
-        'fGEN.WriteLine(CStr(GetrMod))
-
-        'Coolantsim
-        'fGEN.WriteLine("c Coolant System Simulation (1/0)")
-        'fGEN.WriteLine(Math.Abs(CInt(CoolantsimJa)))
-        'fGEN.WriteLine("c Coolant System Simulation Configuration File")
-        'fGEN.WriteLine(stCoolantSimPath.PathOrDummy)
-
-        fGEN.WriteLine("c Auxiliaries (.vaux)")
-        For Each AuxEntryKV In AuxPaths
-            fGEN.WriteLine(Trim(UCase(AuxEntryKV.Key)) & "," & AuxEntryKV.Value.Type & "," & AuxEntryKV.Value.Path.PathOrDummy)
-        Next
-        fGEN.WriteLine(sKey.Break)
-
-        'a_DesMax
-        fGEN.WriteLine("c Speed Dependent Desired Acceleration and Braking (.vacc)")
-        'fGEN.WriteLine(Math.Abs(CInt(DesMaxJa)))
-        fGEN.WriteLine(stDesMaxFile.PathOrDummy)
-
-        'fGEN.WriteLine("c Gear shift behaviour:")
-        'fGEN.WriteLine("c Gearshift model (Version fast driver)")
-        'fGEN.WriteLine("c shift up at ratio rpm/rated rpm in actual gear greater than")
-        'fGEN.WriteLine(CStr(hinauf))
-        'fGEN.WriteLine("c shift down when rpm/rated rpm in lower gear is higher than")
-        'fGEN.WriteLine(CStr(hinunter))
-        'fGEN.WriteLine("c Gearshift model (Version economic driver)")
-        'fGEN.WriteLine("c shift up at ratio rpm/rated rpm in higher gear greater than")
-        'fGEN.WriteLine(CStr(lhinauf))
-        'fGEN.WriteLine("c Shift down when ratio rpm/rated rpm in actual gear is lower than")
-        'fGEN.WriteLine(CStr(lhinunter))
-        'fGEN.WriteLine("c Share of version economic driver (0 to 1)")
-        'fGEN.WriteLine(CStr(pspar))
-        'fGEN.WriteLine("c Share of version mixed model (0 to 1)")
-        'fGEN.WriteLine(CStr(pmodell))
-
-        fGEN.WriteLine("c Engine Only Mode (1/0)")
-        fGEN.WriteLine(CStr(Math.Abs(CInt(EngOnly))))
-
-        'Start/Stop
-        fGEN.WriteLine("c ICE Auto-Start/Stop (1/0)")
-        fGEN.WriteLine(Math.Abs(CInt(boStartStop)))
-        fGEN.WriteLine("c Start/Stop Max Speed [km/h]")
-        fGEN.WriteLine(siStStV)
-        fGEN.WriteLine("c Start/Stop Min ICE-On Time [s]")
-        fGEN.WriteLine(siStStT)
-
-
-        fGEN.WriteLine("c Look Ahead reference deceleration [m/s²]")
-        fGEN.WriteLine(CStr(a_lookahead))
-        fGEN.WriteLine("c Minimum target speed for Overspeed/Eco-Roll [km/h]")
-        fGEN.WriteLine(CStr(vMin))
-        fGEN.WriteLine("c Look-Ahead Coasting 1/0")
-        fGEN.WriteLine(CStr(Math.Abs(CInt(LookAheadOn))))
-        fGEN.WriteLine("c Overspeed 1/0")
-        fGEN.WriteLine(CStr(Math.Abs(CInt(OverSpeedOn))))
-        fGEN.WriteLine("c Eco-Roll 1/0")
-        fGEN.WriteLine(CStr(Math.Abs(CInt(EcoRollOn))))
-        fGEN.WriteLine("c Allowed OverSpeed [km/h]")
-        fGEN.WriteLine(CStr(OverSpeed))
-        fGEN.WriteLine("c Allowed UnderSpeed [km/h]")
-        fGEN.WriteLine(CStr(UnderSpeed))
-        fGEN.WriteLine("c Minimum target speed for Look-Ahead with Coasting [km/h]")
-        fGEN.WriteLine(CStr(vMinLA))
-
-
-        fGEN.WriteLine("c Start/Stop activation delay time [s]")
-        fGEN.WriteLine(StStDelay)
-
-
-        fGEN.Close()
-        fGEN = Nothing
-
-        Return True
-
-    End Function
-
     Public Function SaveFile() As Boolean
-        Dim AuxEntryKV As KeyValuePair(Of String, cVEH.cAuxEntry)
+        Dim AuxEntryKV As KeyValuePair(Of String, cAuxEntry)
         'Dim s As String
         Dim sb As cSubPath
         Dim JSON As New cJSON
@@ -634,8 +400,6 @@ lbEr:
         Dim dic As Dictionary(Of String, Object)
         Dim dic0 As Dictionary(Of String, Object)
 
-        If Not Cfg.JSON Then Return SaveFileOld()
-
         'Header
         dic = New Dictionary(Of String, Object)
         dic.Add("CreatedBy", Lic.LicString & " (" & Lic.GUID & ")")
@@ -717,7 +481,7 @@ lbEr:
     End Function
 
     Public Function ReadFile() As Boolean
-        Dim AuxEntry As cVEH.cAuxEntry
+        Dim AuxEntry As cAuxEntry
         Dim AuxID As String
         Dim MsgSrc As String
         Dim SubPath As cSubPath
@@ -732,16 +496,8 @@ lbEr:
 
         SetDefault()
 
-        If Cfg.JSON Then
-            If Not JSON.ReadFile(sFilePath) Then
-                NoJSON = True
-                Try
-                    Return ReadFileOld()
-                Catch ex As Exception
-                    Return False
-                End Try
-            End If
-        Else
+        If Not JSON.ReadFile(sFilePath) Then
+            NoJSON = True
             Try
                 Return ReadFileOld()
             Catch ex As Exception
@@ -777,7 +533,7 @@ lbEr:
                         Return False
                     End If
 
-                    AuxEntry = New cVEH.cAuxEntry
+                    AuxEntry = New cAuxEntry
 
                     AuxEntry.Type = dic("Type")
                     AuxEntry.Path.Init(MyPath, dic("Path"))
@@ -873,6 +629,7 @@ lbEr:
         DesMaxDim = -1
 
         AuxPaths.Clear()
+        AuxRefs.Clear()
         AuxDef = False
 
         EngOnly = False
@@ -886,6 +643,42 @@ lbEr:
         UnderSpeed = 0
         vMinLA = 0
 
+    End Sub
+
+    Public Sub DeclInit()
+        Dim cl As List(Of String)
+        Dim s As String
+        Dim SubPath As cSubPath
+
+        EngOnly = False
+
+        CycleFiles.Clear()
+
+        cl = Declaration.SegRef.GetCycles
+
+        For Each s In cl
+            SubPath = New cSubPath
+            SubPath.Init(MyPath, s)
+            CycleFiles.Add(SubPath)
+        Next
+
+        stDesMaxFile.Init(MyPath, Declaration.SegRef.VACCfile)
+
+        siStStV = cDeclaration.SSspeed
+        siStStT = cDeclaration.SStime
+        StStDelay = cDeclaration.SSdelay
+
+        If Not EcoRollOn Then OverSpeedOn = True
+
+        LookAheadOn = True
+        a_lookahead = cDeclaration.LACa
+        vMinLA = cDeclaration.LACvmin
+
+        'TODO: Aux
+        AuxDef = False  'TEST ONLY!!!
+
+
+
     End Sub
 
     'This Sub reads those Input-files that do not have their own class, etc.
@@ -936,12 +729,144 @@ lbEr:
 
         End If
 
+        Return True
+
+    End Function
 
+#Region "Aux"
+
+    Public Function AuxInit() As Boolean
+
+        Dim Aux0 As cAux
+        Dim AuxPathKV As KeyValuePair(Of String, cAuxEntry)
+        Dim DRIauxcheck As New Dictionary(Of String, Boolean)
+        Dim AuxID As String
+
+        Dim MsgSrc As String
+
+        MsgSrc = "VEH/AuxInit"
+
+        AuxRefs = New Dictionary(Of String, cAux)
+
+        If DRI.AuxDef Xor AuxDef Then
+
+            If AuxDef Then
+                WorkerMsg(tMsgID.Err, "No auxiliary input defined in driving cycle!", MsgSrc)
+                Return False
+            Else
+                WorkerMsg(tMsgID.Warn, "No auxiliary defined in vehicle file! Psupply input will be ignored!", MsgSrc)
+                Return True
+            End If
+
+        End If
+
+        If Not (DRI.AuxDef Or AuxDef) Then Return True
+
+
+        For Each AuxID In DRI.AuxComponents.Keys
+            DRIauxcheck.Add(AuxID, False)
+        Next
+
+        For Each AuxPathKV In AuxPaths
+
+            MsgSrc = "VEH/AuxInit/" & AuxPathKV.Key
+
+            If Not DRI.AuxComponents.ContainsKey(AuxPathKV.Key) Then
+                WorkerMsg(tMsgID.Err, "No Psupply input defined in driving cycle for auxiliary '" & AuxPathKV.Key & "'!", MsgSrc)
+                Return False
+            End If
+
+            Aux0 = New cAux
+            Aux0.Filepath = AuxPathKV.Value.Path.FullPath
+
+            If Not Aux0.Readfile Then
+                'Notificationin ReadFile()
+                Return False
+            End If
+
+            AuxRefs.Add(AuxPathKV.Key, Aux0)
+
+            DRIauxcheck(AuxPathKV.Key) = True
+
+        Next
+
+        MsgSrc = "VEH/AuxInit"
+
+        For Each AuxID In DRI.AuxComponents.Keys
+            If Not DRIauxcheck(AuxID) Then WorkerMsg(tMsgID.Warn, "Auxiliary '" & AuxID & "' not found! Psupply input will be ignored!", MsgSrc)
+        Next
 
         Return True
 
     End Function
 
+    Public Function Paux(ByVal AuxID As String, ByVal t As Integer, ByVal nU As Single) As Single
+        Dim Psupply As Single
+        Dim Px As Single
+        Dim Aux0 As cAux
+
+        Dim MsgSrc As String
+
+        MsgSrc = "VEH/Paux"
+
+        If AuxDef Then
+
+            Aux0 = AuxRefs(AuxID)
+
+            Psupply = DRI.AuxComponents(AuxID)(t)
+
+            If Psupply < 0 Then GoTo lbAuxError
+
+            Px = Aux0.Paux(nU, Psupply)
+
+            If Px < 0 Then GoTo lbAuxError
+
+            Return Px
+
+        Else
+
+            Return 0
+
+        End If
+
+
+lbAuxError:
+        MODdata.ModErrors.AuxNegative = AuxID
+        Return 0
+
+
+    End Function
+
+    Public Function PauxSum(ByVal t As Integer, ByVal nU As Single) As Single
+        Dim sum As Single
+        Dim AuxID As String
+
+        Dim MsgSrc As String
+
+        MsgSrc = "VEH/Paux"
+
+        If AuxDef Then
+
+            sum = 0
+
+            For Each AuxID In AuxRefs.Keys
+
+                sum += Paux(AuxID, t, nU)
+
+            Next
+
+            Return sum
+
+        Else
+
+            Return 0
+
+        End If
+
+    End Function
+
+#End Region
+
 
 #Region "Properties"
 
diff --git a/VECTO/Input Files/cVEH.vb b/VECTO/Input Files/cVEH.vb
index 444e860de5e4c74dad2423f022a7b2e757fa03a6..b4b78209cb6fa7c2325ad8fc8e813c93fdbeb5b6 100644
--- a/VECTO/Input Files/cVEH.vb	
+++ b/VECTO/Input Files/cVEH.vb	
@@ -2,24 +2,30 @@
 
 Public Class cVEH
 
-    Private Const FormatVersion As String = "1.0"
+    'V1.1 MassMax is now saved in [t] instead of [kg]
+
+    Private Const FormatVersion As String = "1.1"
     Private FileVersion As String
 
     Private sFilePath As String
     Private MyPath As String
 
-    Private siMass As Single
-    Private siLoading As Single
-    Private siAquers As Single
-    Private siI_mot As Single
+    Public Mass As Single
+    Public Loading As Single
     Private siI_wheels As Single
-    Private siI_Getriebe As Single
-    Private sinNenn As Single
-    Private sinLeerl As Single
     Private siFr0 As Single      '<= wird aus Achs-RRC-Werten berechnet
     Private siDreifen As Single
 
-    Private siCd0 As Single
+    Public Cd0Tr As Single
+    Public Aquers0Tr As Single
+
+    Public Cd0Rig As Single
+    Public Aquers0Rig As Single
+
+    Private Cd0Act As Single
+    Private AquersAct As Single
+
+
     Public CdMode As tCdMode
     Public CdFile As cSubPath
     Private CdX As List(Of Single)
@@ -32,14 +38,6 @@ Public Class cVEH
     Public GetrEffDef As List(Of Boolean)
     Public GetrEff As List(Of Single)
 
-    Private iganganz As Short
-
-    Public AuxPaths As Dictionary(Of String, cAuxEntry)     'Alle Nebenverbraucher der Veh-Datei
-    Public AuxRefs As Dictionary(Of String, cAux)          'Alle Nebenverbraucher die in der Veh-Datei UND im Zyklus definiert sind
-    Public AuxDef As Boolean                               'True wenn ein oder mehrere Nebenverbraucher definiert sind
-
-    Public TracIntrSi As Single
-
     Public RtType As tRtType '0=None, 1=Primary, 2=Secondary
     Public RtRatio As Single = 0
     Public RtFile As cSubPath
@@ -58,9 +56,10 @@ Public Class cVEH
     Private MyFileList As List(Of String)
 
 
-    Public Function CreateFileList() As Boolean
 
-        If Not Me.ReadFile Then Return False
+
+
+    Public Function CreateFileList() As Boolean
 
         MyFileList = New List(Of String)
 
@@ -75,13 +74,6 @@ Public Class cVEH
     End Function
 
 
-    Public Class cAuxEntry
-        Public Type As String
-        Public Path As cSubPath
-        Public Sub New()
-            Path = New cSubPath
-        End Sub
-    End Class
 
     Public Sub New()
         MyPath = ""
@@ -97,21 +89,22 @@ Public Class cVEH
     End Sub
 
     Private Sub SetDefault()
-        siMass = 0
+        Mass = 0
         MassExtra = 0
-        siLoading = 0
-        siCd0 = 0
+        Loading = 0
+        Cd0Tr = 0
+        Aquers0Tr = 0
+        Cd0Act = Cd0Tr
+        AquersAct = Aquers0Tr
+        Cd0Rig = 0
+        Aquers0Rig = 0
         CdFile.Clear()
         CdMode = tCdMode.ConstCd0
         CdX.Clear()
         CdY.Clear()
         CdDim = -1
-        siAquers = 0
-        siI_mot = 0
         siI_wheels = 0
-        siI_Getriebe = 0
-        sinNenn = 0
-        sinLeerl = 0
+
         siFr0 = 0
         siDreifen = 0
 
@@ -121,18 +114,14 @@ Public Class cVEH
         GetrMap = New List(Of cSubPath)
 
         MyGBmaps = Nothing
-        iganganz = 0
-        AuxPaths = New Dictionary(Of String, cAuxEntry)
-        AuxRefs = New Dictionary(Of String, cAux)
-        AuxDef = False
-        TracIntrSi = 0
+   
         RtType = tRtType.None
         RtRatio = 0
         RtnU.Clear()
         RtM.Clear()
         RtFile.Clear()
         RRCs.Clear()
-        VehCat = tVehCat.Rigid
+        VehCat = tVehCat.RigidTruck
         MassMax = 0
         AxleConf = tAxleConf.a4x2
     End Sub
@@ -159,93 +148,18 @@ Public Class cVEH
             Return False
         End If
 
-        siMass = CSng(file.ReadLine(0))
+        Mass = CSng(file.ReadLine(0))
         MassExtra = CSng(file.ReadLine(0))
-        siLoading = CSng(file.ReadLine(0))
-        siCd0 = CSng(file.ReadLine(0))
-        siAquers = CSng(file.ReadLine(0))
-        'siI_mot = CSng(file.ReadLine(0))
-        siI_wheels = CSng(file.ReadLine(0))
-        'siI_Getriebe = CSng(file.ReadLine(0))
-        'siPaux0 = CSng(file.ReadLine(0))
-        'siPnenn = CSng(file.ReadLine(0))
-        'sinNenn = CSng(file.ReadLine(0))
-        'sinLeerl = CSng(file.ReadLine(0))
-        'file.ReadLine()     'Früher: Getr-Verl Kennfeld
-        'siFr0 = CSng(file.ReadLine(0))
-        'file.ReadLine()     'Früher: Getr-Verl Kennfeld verwenden Ja/Nein
-        'sifGetr = CSng(file.ReadLine(0))
-        'Achs-Ãœbersetzung-TransLoss Parameter
-        'line = file.ReadLine
-        'siGetrI(0) = CSng(line(0))
-        'If UBound(line) > 0 Then sGetrMaps(0).Init(MyPath, line(1))
+        Loading = CSng(file.ReadLine(0))
 
-        siDreifen = CSng(file.ReadLine(0))
-        'iganganz = 0
-        'For i = 1 To 16
-        '    line = file.ReadLine
-        '    siGetrI(i) = CSng(line(0))
-        '    'Falls keine GetrModell-Parameter vorhanden Dummy-Belegung durch SetDefault
-        '    If UBound(line) > 0 Then sGetrMaps(i).Init(MyPath, line(1))
-        '    If Igetr(i) > 0.0001 Then iganganz = i
-        'Next
-        'sihinauf = CSng(file.ReadLine(0))
-        'sihinunter = CSng(file.ReadLine(0))
-        'silhinauf = CSng(file.ReadLine(0))
-        'silhinunter = CSng(file.ReadLine(0))
-        'sipspar = CSng(file.ReadLine(0))
-        'sipmodell = CSng(file.ReadLine(0))
-
-        ''Schaltmodell-Verteilung
-        'If (sipspar > 1) Then
-        '    sipspar = 1
-        'ElseIf (sipspar < 0) Then
-        '    sipspar = 0
-        'End If
-        'If (sipmodell > 1) Then
-        '    sipmodell = 1
-        'ElseIf (sipmodell < 0) Then
-        '    sipmodell = 0
-        'End If
-        'If ((sipspar + sipmodell) > 1.0) Then sipmodell = 1.0 - sipspar
-
-        'Update 07.08.2012 (CO2 Demo)
-        'Einzelne Nebenverbraucher |@@| Individual next consumer
-        'Do While Not file.EndOfFile
-
-        '    line = file.ReadLine
-
-        '    If line(0) = sKey.Break Then Exit Do
-
-        '    AuxID = UCase(Trim(line(0)))
-
-        '    If AuxPaths.ContainsKey(AuxID) Then
-        '        WorkerMsg(tMsgID.Err, "Multiple definitions of the same auxiliary type (" & line(0) & ")!", MsgSrc)
-        '        file.Close()
-        '        Return False
-        '    End If
-
-        '    AuxEntry = New cAuxEntry
-
-        '    AuxEntry.Type = line(1)
-        '    AuxEntry.Path.Init(MyPath, line(2))
-
-        '    AuxPaths.Add(AuxID, AuxEntry)
-
-        '    AuxDef = True
-
-        'Loop
+        Cd0Tr = CSng(file.ReadLine(0))
+        Aquers0Tr = CSng(file.ReadLine(0))
 
-        If file.EndOfFile Then GoTo lbError
+        Cd0Act = Cd0Tr
+        AquersAct = Aquers0Tr
 
-        'Zugkraftunterbrechung - Update 09.08.2012 (CO2 Demo) |@@| Interruption of Traction - Update 09/08/2012 (CO2 demo)
-        'Try
-        '    TracIntrSi = CSng(file.ReadLine(0))
-        'Catch ex As Exception
-        '    WorkerMsg(tMsgID.Err, ex.Message, MsgSrc)
-        '    file.Close()
-        '    Return False
-        'End Try
+        siI_wheels = CSng(file.ReadLine(0))
+        siDreifen = CSng(file.ReadLine(0))
 
         If file.EndOfFile Then GoTo lbError
 
@@ -300,7 +214,7 @@ Public Class cVEH
         Try
             VehCat = CType(CInt(file.ReadLine(0)), tVehCat)
             MassExtra = CSng(file.ReadLine(0))
-            MassMax = CSng(file.ReadLine(0))
+            MassMax = CSng(file.ReadLine(0)) / 1000
             AxleConf = CType(CInt(file.ReadLine(0)), tAxleConf)
         Catch ex As Exception
             WorkerMsg(tMsgID.Err, ex.Message, MsgSrc)
@@ -308,7 +222,6 @@ Public Class cVEH
             Return False
         End Try
 
-
         '************************ End reading ****************************
 
         file.Close()
@@ -322,120 +235,6 @@ lbError:
 
     End Function
 
-    Private Function SaveFileOld() As Boolean
-        Dim file As cFile_V3
-        Dim sl As Single()
-
-        file = New cFile_V3
-
-        If sFilePath = "" Then Return False
-
-        If Not file.OpenWrite(sFilePath) Then Return False
-
-        file.WriteLine("c VECTO Vehicle Input File")
-        file.WriteLine("c VECTO " & VECTOvers)
-        file.WriteLine("c " & Now.ToString)
-
-        file.WriteLine("c Curb weight vehicle [kg]")
-        file.WriteLine(CStr(siMass))
-        file.WriteLine("c Curb weight extra trailer/body [kg]")
-        file.WriteLine(CStr(MassExtra))
-        file.WriteLine("c Vehicle loading [kg]")
-        file.WriteLine(CStr(siLoading))
-        file.WriteLine("c Cd value [-]")
-        file.WriteLine(CStr(siCd0))
-        file.WriteLine("c Cross sectional area [m^2]")
-        file.WriteLine(CStr(siAquers))
-        'file.WriteLine("c Engine rotational inertia [kg*m^2]")
-        'file.WriteLine(CStr(siI_mot))
-        file.WriteLine("c Wheels inertia [kgm^2]")
-        file.WriteLine(CStr(siI_wheels))
-        'file.WriteLine("c Gearbox rotational inertia [kg*m^2]")
-        'file.WriteLine(CStr(siI_Getriebe))
-        'file.WriteLine("c Auxiliaries base power demand (normalized) [-]")
-        'file.WriteLine(CStr(siPaux0))
-        'file.WriteLine("c Engine rated power [kW]")
-        'file.WriteLine(CStr(siPnenn))
-        'file.WriteLine("c Engine rated speed [rpm]")
-        'file.WriteLine(CStr(sinNenn))
-        'file.WriteLine("c Engine idling speed [rpm]")
-        'file.WriteLine(CStr(sinLeerl))
-        'file.WriteLine("c Transmission loss factor")
-        'file.WriteLine(CStr(sifGetr))
-        'file.WriteLine("c Transmission")
-        'file.WriteLine("c Axle ratio [-], path to efficiency map file (optional)")
-        'file.WriteLine(CStr(siGetrI(0)), sGetrMaps(0).PathOrDummy)
-        file.WriteLine("c Wheel effective diameter [m]")
-        file.WriteLine(CStr(siDreifen))
-        'file.WriteLine("c Transmission gears: Ratio [-], path to efficiency map file (optional)")
-        'For i = 1 To 16
-        '    file.WriteLine("c Gear " & i)
-        '    file.WriteLine(CStr(siGetrI(i)), sGetrMaps(i).PathOrDummy)
-        'Next
-        'file.WriteLine("c Gear shift behaviour:")
-        'file.WriteLine("c Gearshift model (Version fast driver)")
-        'file.WriteLine("c shift up at ratio rpm/rated rpm in actual gear greater than")
-        'file.WriteLine(CStr(sihinauf))
-        'file.WriteLine("c shift down when rpm/rated rpm in lower gear is higher than")
-        'file.WriteLine(CStr(sihinunter))
-        'file.WriteLine("c Gearshift model (Version economic driver)")
-        'file.WriteLine("c shift up at ratio rpm/rated rpm in higher gear greater than")
-        'file.WriteLine(CStr(silhinauf))
-        'file.WriteLine("c Shift down when ratio rpm/rated rpm in actual gear is lower than")
-        'file.WriteLine(CStr(silhinunter))
-        'file.WriteLine("c Share of version economic driver (0 to 1)")
-        'file.WriteLine(CStr(sipspar))
-        'file.WriteLine("c Share of version mixed model (0 to 1)")
-        'file.WriteLine(CStr(sipmodell))
-
-        'file.WriteLine("c Auxiliaries")
-        'For Each AuxEntryKV In AuxPaths
-        '    file.WriteLine(Trim(UCase(AuxEntryKV.Key)) & "," & AuxEntryKV.Value.Type & "," & AuxEntryKV.Value.Path.PathOrDummy)
-        'Next
-        'file.WriteLine(sKey.Break)
-
-        'Interruption of traction (Update 09.08.2012 - CO2 demo)
-        'file.WriteLine("c Traction Interruption")
-        'file.WriteLine(CStr(TracIntrSi))
-
-        'Cd Modus / Input Datei (Update 14.08.2012 - CO2 Demo)
-        file.WriteLine("c Cd Mode, Input File")
-        file.WriteLine(CStr(CType(CdMode, Integer)), CdFile.PathOrDummy)
-
-        'Retarder (Update 02.10.2012 - CO2 Demo)
-        file.WriteLine("c Retarder Type (0=None, 1=Primary, 2=Secondary)")
-        file.WriteLine(CStr(CType(RtType, Integer)))
-        file.WriteLine("c Retarder Ratio")
-        file.WriteLine(CStr(RtRatio))
-        file.WriteLine("c Retarder File")
-        file.WriteLine(CStr(RtFile.PathOrDummy))
-
-        'Axle configuration - Update 16.10.2012
-        file.WriteLine("c Axle configurations")
-        file.WriteLine("c Axle weight share [-], Twin Tyres [1/0], RRC [N/N], Fz ISO [N]")
-        For Each sl In RRCs
-            file.WriteLine(CStr(sl(0)), CStr(sl(1)), CStr(sl(2)), CStr(sl(3)))
-        Next
-
-        file.WriteLine(sKey.Break)
-
-        file.WriteLine("c VehCat")
-        file.WriteLine(CStr(CType(VehCat, Integer)))
-        file.WriteLine("c MassExtra")
-        file.WriteLine(CStr(MassExtra))
-        file.WriteLine("c MassMax")
-        file.WriteLine(CStr(MassMax))
-        file.WriteLine("c Axle Configuration")
-        file.WriteLine(CStr(CType(AxleConf, Integer)))
-
-        file.Close()
-        file = Nothing
-
-        Return True
-
-    End Function
-
-
     Public Function ReadFile() As Boolean
         Dim JSON As New cJSON
         Dim dic As Object
@@ -450,16 +249,8 @@ lbError:
 
         SetDefault()
 
-        If Cfg.JSON Then
-            If Not JSON.ReadFile(sFilePath) Then
-                NoJSON = True
-                Try
-                    Return ReadFileOld()
-                Catch ex As Exception
-                    Return False
-                End Try
-            End If
-        Else
+        If Not JSON.ReadFile(sFilePath) Then
+            NoJSON = True
             Try
                 Return ReadFileOld()
             Catch ex As Exception
@@ -471,13 +262,20 @@ lbError:
 
             FileVersion = JSON.Content("Header")("FileVersion")
 
-            siMass = JSON.Content("Body")("CurbWeight")
+            Mass = JSON.Content("Body")("CurbWeight")
             MassExtra = JSON.Content("Body")("CurbWeightExtra")
-            siLoading = JSON.Content("Body")("Loading")
+            Loading = JSON.Content("Body")("Loading")
             MassMax = JSON.Content("Body")("MassMax")
+            If FileVersion = "1.0" Then MassMax /= 1000
+
+            Cd0Tr = JSON.Content("Body")("Cd")
+            Aquers0Tr = JSON.Content("Body")("CrossSecArea")
 
-            siCd0 = JSON.Content("Body")("Cd")
-            siAquers = JSON.Content("Body")("CrossSecArea")
+            If Not JSON.Content("Body")("CdRigid") Is Nothing Then Cd0Rig = JSON.Content("Body")("CdRigid")
+            If Not JSON.Content("Body")("CrossSecAreaRigid") Is Nothing Then Aquers0Rig = JSON.Content("Body")("CrossSecAreaRigid")
+
+            Cd0Act = Cd0Tr
+            AquersAct = Aquers0Tr
 
             siI_wheels = JSON.Content("Body")("WheelsInertia")
             siDreifen = JSON.Content("Body")("WheelsDiaEff")
@@ -493,12 +291,12 @@ lbError:
                 If Not JSON.Content("Body")("Retarder")("File") Is Nothing Then RtFile.Init(MyPath, JSON.Content("Body")("Retarder")("File"))
             End If
 
-            AxleConf = AxleConfConv(JSON.Content("Body")("AxleConfig")("Type").ToString)
+            AxleConf = ConvAxleConf(JSON.Content("Body")("AxleConfig")("Type").ToString)
             For Each dic In JSON.Content("Body")("AxleConfig")("Axles")
                 RRCs.Add(New Single() {dic("AxleWeightShare"), CSng(dic("TwinTyres")), dic("RRCISO"), dic("FzISO")})
             Next
 
-            VehCat = VehCatConv(JSON.Content("Body")("VehCat").ToString)
+            VehCat = ConvVehCat(JSON.Content("Body")("VehCat").ToString)
 
         Catch ex As Exception
             WorkerMsg(tMsgID.Err, "Failed to read Vehicle file! " & ex.Message, MsgSrc)
@@ -511,6 +309,121 @@ lbError:
 
     End Function
 
+    Public Function DeclInit() As Boolean
+        Dim al As List(Of Single)
+        Dim i As Integer
+        Dim a As Single
+        Dim MissionID As tMission
+        Dim MsgSrc As String
+
+        MsgSrc = "VEH/DeclInit"
+
+        MissionID = Declaration.CurrentMission.MissionID
+
+        MassExtra = Declaration.SegRef.GetBodyTrWeight(MissionID)
+
+
+        al = Declaration.SegRef.AxleShares(MissionID)
+
+        If al.Count > RRCs.Count Then
+            WorkerMsg(tMsgID.Err, "Invalid number of axles! Defined: " & RRCs.Count & ", required: " & al.Count, MsgSrc)
+            Return False
+        End If
+
+        i = -1
+        For Each a In al
+            i += 1
+            RRCs(i)(0) = a / 100
+        Next
+
+        'Remove non-Truck axles
+        Do While RRCs.Count > al.Count
+            RRCs.RemoveAt(RRCs.Count - 1)
+        Loop
+
+
+        '(Semi-) Trailer
+        If Not Declaration.SegRef.LongHaulRigidTrailer OrElse MissionID = tMission.LongHaul Then
+            al = Declaration.SegRef.AxleSharesTr(MissionID)
+            For Each a In al
+                RRCs.Add(New Single() {a / 100, 0, cDeclaration.RRCTr, cDeclaration.FzISOTr})
+            Next
+        End If
+
+
+
+        CdMode = tCdMode.CdOfV
+
+        CdFile.Init(MyPath, Declaration.SegRef.VCDVfile)
+
+        If Declaration.SegRef.LongHaulRigidTrailer Then
+
+            If MissionID = tMission.LongHaul Then
+                Cd0Act = Cd0Tr
+                AquersAct = Aquers0Tr
+            Else
+                Cd0Act = Cd0Rig
+                AquersAct = Aquers0Rig
+            End If
+
+        Else
+
+            If Declaration.SegRef.VehCat = tVehCat.RigidTruck Then
+                Cd0Act = Cd0Rig
+                AquersAct = Aquers0Rig
+            Else
+                Cd0Act = Cd0Tr
+                AquersAct = Aquers0Tr
+            End If
+
+        End If
+
+        Return True
+
+    End Function
+
+    Public Function DeclInitLoad(ByVal LoadingID As tLoading) As Boolean
+        Dim lmax As Single
+        Dim MissionID As tMission
+        Dim MsgSrc As String
+
+        MsgSrc = "VEH/DeclInit"
+
+        MissionID = Declaration.CurrentMission.MissionID
+
+
+        lmax = MassMax * 1000 - Mass - MassExtra
+
+        Select Case LoadingID
+            Case tLoading.FullLoaded
+                Loading = lmax
+
+            Case tLoading.RefLoaded
+                Loading = Declaration.SegRef.GetLoading(MissionID, MassMax)
+                If Loading < 0 Then
+                    WorkerMsg(tMsgID.Err, "Invalid loading in segement table!", MsgSrc)
+                    Return False
+                End If
+
+                If Loading > lmax Then
+                    WorkerMsg(tMsgID.Warn, "Reference loading > Max. loading! Using max. loading.", MsgSrc)
+                    Loading = lmax
+                End If
+
+            Case tLoading.EmptyLoaded
+                Loading = 0
+
+            Case Else ' tLoading.EmptyLoaded
+                WorkerMsg(tMsgID.Err, "tLoading.UserDefLoaded not allowed!", MsgSrc)
+                Return False
+
+        End Select
+
+        Return True
+
+    End Function
+
+
     Public Function SaveFile() As Boolean
         Dim sl As Single()
         Dim dic As Dictionary(Of String, Object)
@@ -519,8 +432,6 @@ lbError:
         Dim JSON As New cJSON
 
 
-        If Not Cfg.JSON Then Return SaveFileOld()
-
         'Header
         dic = New Dictionary(Of String, Object)
         dic.Add("CreatedBy", Lic.LicString & " (" & Lic.GUID & ")")
@@ -532,15 +443,18 @@ lbError:
         'Body
         dic = New Dictionary(Of String, Object)
 
-        dic.Add("VehCat", VehCatConv(VehCat))
+        dic.Add("VehCat", ConvVehCat(VehCat))
 
-        dic.Add("CurbWeight", siMass)
+        dic.Add("CurbWeight", Mass)
         dic.Add("CurbWeightExtra", MassExtra)
-        dic.Add("Loading", siLoading)
+        dic.Add("Loading", Loading)
         dic.Add("MassMax", MassMax)
 
-        dic.Add("Cd", siCd0)
-        dic.Add("CrossSecArea", siAquers)
+        dic.Add("Cd", Cd0Tr)
+        dic.Add("CrossSecArea", Aquers0Tr)
+
+        dic.Add("CdRigid", Cd0Rig)
+        dic.Add("CrossSecAreaRigid", Aquers0Rig)
 
         dic.Add("WheelsInertia", siI_wheels)
         dic.Add("WheelsDiaEff", siDreifen)
@@ -565,7 +479,7 @@ lbError:
         Next
 
         dic0 = New Dictionary(Of String, Object)
-        dic0.Add("Type", AxleConfConv(AxleConf))
+        dic0.Add("Type", ConvAxleConf(AxleConf))
         dic0.Add("Axles", ls)
         dic.Add("AxleConfig", dic0)
 
@@ -586,10 +500,8 @@ lbError:
         Dim nrwheels As Single
 
 
-        MsgSrc = "VEH/Init"
 
-        'Error-message within AuxInit
-        If Not AuxInit() Then Return False
+        MsgSrc = "VEH/Init"
 
         'Cd-Init
         If Not CdInit() Then Return False
@@ -638,24 +550,18 @@ lbError:
             Else
                 nrwheels = 2
             End If
-            RRC += sl(0) * (sl(2) * ((siLoading + siMass + MassExtra) * sl(0) * 9.81 / (sl(3) * nrwheels)) ^ (0.9 - 1))     'Beta=0.9
+            RRC += sl(0) * (sl(2) * ((Loading + Mass + MassExtra) * sl(0) * 9.81 / (sl(3) * nrwheels)) ^ (0.9 - 1))     'Beta=0.9
         Next
 
         siFr0 = RRC
 
+
+ 
         Return True
 
     End Function
 
-    Public Sub nRatedInit()
-        Dim fl As cFLD
-
-        nNenn = 0
-        For Each fl In FLD
-            If nNenn < fl.nRated Then nNenn = fl.nRated
-        Next
-
-    End Sub
+ 
 
 
 #Region "Transmission Loss Maps"
@@ -691,7 +597,7 @@ lbError:
         MyGBmaps = New List(Of cDelaunayMap)
         file = New cFile_V3
 
-        For i = 0 To iganganz
+        For i = 0 To GBX.GearCount
 
             MsgSrc = "VEH/TrLossMapInit/G" & i
 
@@ -776,10 +682,10 @@ lbError:
                         EffSum = 0
                         Anz = 0
 
-                        dnU = (2 / 3) * (VEH.nNenn - VEH.nLeerl) / 10
-                        nU = VEH.nLeerl + dnU
+                        dnU = (2 / 3) * (ENG.Nrated - ENG.Nidle) / 10
+                        nU = ENG.Nidle + dnU
 
-                        Do While nU <= nNenn
+                        Do While nU <= ENG.Nrated
 
                             dM = nPeToM(nU, (2 / 3) * FLD(i).Pfull(nU) / 10)
                             M_in = nPeToM(nU, (1 / 3) * FLD(i).Pfull(nU))
@@ -859,6 +765,7 @@ lbError:
         Dim iMin As Integer
         Dim PeOutX As Double
         Dim GrTxt As String
+        Dim Ploss As Single
 
         Dim MsgSrc As String
 
@@ -877,6 +784,7 @@ lbError:
             Else
                 PeIn = PeOut * GetrEff(Gear)
             End If
+            Ploss = PeIn - PeOut
 
         Else
 
@@ -885,6 +793,7 @@ lbError:
             Try
                 'Interpolate with Original Values
                 PeIn = nMtoPe(nU, GBmap.Intpol(nU, nPeToM(nU, PeOut)))
+                Ploss = PeIn - PeOut
 
             Catch ex As Exception
 
@@ -908,40 +817,59 @@ lbError:
                 If PeOutX > 0 Then
                     If PeIn > 0 Then
 
-                        'Drivetrain=> Drivetrain
-                        If PeIn = 0 Then Return 0
-
                         WG = PeOutX / PeIn
+                        PeIn = PeOut / WG
+                        Ploss = PeIn - PeOut
 
                     Else
 
-                        'Drag => Drivetrain: ERROR!
+                        'Drag => Drive: ERROR!
                         WorkerMsg(tMsgID.Err, "Transmission Loss Map invalid! Gear= " & GrTxt & ", nU= " & nU.ToString("0.00") & " [1/min], PeIn=" & PeIn.ToString("0.0") & " [kW], PeOut=" & PeOutX.ToString("0.0") & " [kW]", MsgSrc)
                         WorkerAbort()
                         Return 0
 
                     End If
 
-                Else
+                ElseIf PeOutX < 0 Then
+
                     If PeIn > 0 Then
 
-                        'WorkerMsg(tMsgID.Warn, "Change of sign in Transmission Loss Map! Gear= " & GrTxt & ", nU= " & nU.ToString("0.00") & " [1/min], PeIn=" & PeIn.ToString("0.00") & " [kW], PeOut=" & PeOutX.ToString("0.00") & " [kW]", MsgSrc)
-                        'WorkerAbort()
                         WG = (PeIn - (PeIn - PeOutX)) / PeIn
+                        PeIn = PeOut / WG
+                        Ploss = PeIn - PeOut
 
-                    Else
-
-                        'Drag => Drag
-                        If PeOutX = 0 Then Return 0
+                    ElseIf PeIn < 0 Then
 
                         WG = PeIn / PeOutX
+                        PeIn = PeOut * WG
+                        Ploss = PeIn - PeOut
+
+                    Else
+
+                        Ploss = Math.Abs(PeOut)
 
                     End If
-                End If
 
 
-                'Calculate efficiency with PeIn for original PeOut
-                PeIn = PeOut / WG
+                Else
+
+                    If PeIn > 0 Then
+
+                        Ploss = PeIn
+
+                    ElseIf PeIn < 0 Then
+
+                        'Drag => Zero: ERROR!
+                        WorkerMsg(tMsgID.Err, "Transmission Loss Map invalid! Gear= " & GrTxt & ", nU= " & nU.ToString("0.00") & " [1/min], PeIn=" & PeIn.ToString("0.0") & " [kW], PeOut=" & PeOutX.ToString("0.0") & " [kW]", MsgSrc)
+                        WorkerAbort()
+                        Return 0
+                    Else
+
+                        Ploss = Math.Abs(PeOut)
+
+                    End If
+
+                End If
 
                 MODdata.ModErrors.TrLossMapExtr = "Gear= " & GrTxt & ", nU= " & nU.ToString("0.00") & " [1/min], MeOut=" & nPeToM(nU, PeOut).ToString("0.00") & " [Nm]"
 
@@ -949,7 +877,7 @@ lbError:
 
         End If
 
-        Return Math.Max(PeIn - PeOut, 0)
+        Return Math.Max(Ploss, 0)
 
 
     End Function
@@ -1057,140 +985,6 @@ lbError:
 
 
 
-#End Region
-
-#Region "Aux"
-
-    Private Function AuxInit() As Boolean
-
-        Dim Aux0 As cAux
-        Dim AuxPathKV As KeyValuePair(Of String, cAuxEntry)
-        Dim DRIauxcheck As New Dictionary(Of String, Boolean)
-        Dim AuxID As String
-
-        Dim MsgSrc As String
-
-        MsgSrc = "VEH/AuxInit"
-
-        AuxRefs = New Dictionary(Of String, cAux)
-
-        If DRI.AuxDef Xor AuxDef Then
-
-            If AuxDef Then
-                WorkerMsg(tMsgID.Err, "No auxiliary input defined in driving cycle!", MsgSrc)
-                Return False
-            Else
-                WorkerMsg(tMsgID.Warn, "No auxiliary defined in vehicle file! Psupply input will be ignored!", MsgSrc)
-                Return True
-            End If
-
-        End If
-
-        If Not (DRI.AuxDef Or AuxDef) Then Return True
-
-
-        For Each AuxID In DRI.AuxComponents.Keys
-            DRIauxcheck.Add(AuxID, False)
-        Next
-
-        For Each AuxPathKV In AuxPaths
-
-            MsgSrc = "VEH/AuxInit/" & AuxPathKV.Key
-
-            If Not DRI.AuxComponents.ContainsKey(AuxPathKV.Key) Then
-                WorkerMsg(tMsgID.Err, "No Psupply input defined in driving cycle for auxiliary '" & AuxPathKV.Key & "'!", MsgSrc)
-                Return False
-            End If
-
-            Aux0 = New cAux
-            Aux0.Filepath = AuxPathKV.Value.Path.FullPath
-
-            If Not Aux0.Readfile Then
-                'Notificationin ReadFile()
-                Return False
-            End If
-
-            AuxRefs.Add(AuxPathKV.Key, Aux0)
-
-            DRIauxcheck(AuxPathKV.Key) = True
-
-        Next
-
-        MsgSrc = "VEH/AuxInit"
-
-        For Each AuxID In DRI.AuxComponents.Keys
-            If Not DRIauxcheck(AuxID) Then WorkerMsg(tMsgID.Warn, "Auxiliary '" & AuxID & "' not found! Psupply input will be ignored!", MsgSrc)
-        Next
-
-        Return True
-
-    End Function
-
-    Public Function Paux(ByVal AuxID As String, ByVal t As Integer, ByVal nU As Single) As Single
-        Dim Psupply As Single
-        Dim Px As Single
-        Dim Aux0 As cAux
-
-        Dim MsgSrc As String
-
-        MsgSrc = "VEH/Paux"
-
-        If AuxDef Then
-
-            Aux0 = AuxRefs(AuxID)
-
-            Psupply = DRI.AuxComponents(AuxID)(t)
-
-            If Psupply < 0 Then GoTo lbAuxError
-
-            Px = Aux0.Paux(nU, Psupply)
-
-            If Px < 0 Then GoTo lbAuxError
-
-            Return Px
-
-        Else
-
-            Return 0
-
-        End If
-
-
-lbAuxError:
-        MODdata.ModErrors.AuxNegative = AuxID
-        Return 0
-
-
-    End Function
-
-    Public Function PauxSum(ByVal t As Integer, ByVal nU As Single) As Single
-        Dim sum As Single
-        Dim AuxID As String
-
-        Dim MsgSrc As String
-
-        MsgSrc = "VEH/Paux"
-
-        If AuxDef Then
-
-            sum = 0
-
-            For Each AuxID In AuxRefs.Keys
-
-                sum += Paux(AuxID, t, nU)
-
-            Next
-
-            Return sum
-
-        Else
-
-            Return 0
-
-        End If
-
-    End Function
-
 #End Region
 
 #Region "Cd Funktionen"
@@ -1254,11 +1048,15 @@ lbAuxError:
     End Function
 
     Public Function Cd(ByVal x As Single) As Single
-        Return CdIntpol(x) * siCd0
+        Return CdIntpol(x) * Cd0Act
     End Function
 
     Public Function Cd() As Single
-        Return siCd0
+        Return Cd0Act
+    End Function
+
+    Public Function Aquers() As Single
+        Return AquersAct
     End Function
 
     Private Function CdIntpol(ByVal x As Single) As Single
@@ -1412,69 +1210,12 @@ lbInt:
         End Set
     End Property
 
-    Public Property ganganz As Short
-        Get
-            Return iganganz
-        End Get
-        Set(value As Short)
-            iganganz = value
-        End Set
-    End Property
-
     Public ReadOnly Property Igetr(ByVal x As Short) As Single
         Get
             Return siGetrI(x)
         End Get
     End Property
 
-    Public Property Mass As Single
-        Get
-            Return siMass
-        End Get
-        Set(ByVal value As Single)
-            siMass = value
-        End Set
-    End Property
-
-
-    Public Property Loading As Single
-        Get
-            Return siLoading
-        End Get
-        Set(ByVal value As Single)
-            siLoading = value
-        End Set
-    End Property
-
-    Public Property Cd0 As Single
-        Get
-            Return siCd0
-        End Get
-        Set(ByVal value As Single)
-            siCd0 = value
-        End Set
-    End Property
-
-
-    Public Property Aquers As Single
-        Get
-            Return siAquers
-        End Get
-        Set(ByVal value As Single)
-            siAquers = value
-        End Set
-    End Property
-
-    Public Property I_mot As Single
-        Get
-            Return siI_mot
-        End Get
-        Set(ByVal value As Single)
-            siI_mot = value
-        End Set
-    End Property
-
-
     Public ReadOnly Property m_raeder_red As Single
         Get
             Return siI_wheels / ((siDreifen / 2) ^ 2)
@@ -1491,34 +1232,6 @@ lbInt:
     End Property
 
 
-    Public Property I_Getriebe As Single
-        Get
-            Return siI_Getriebe
-        End Get
-        Set(ByVal value As Single)
-            siI_Getriebe = value
-        End Set
-    End Property
-
-    Public Property nNenn As Single
-        Get
-            Return sinNenn
-        End Get
-        Set(ByVal value As Single)
-            sinNenn = value
-        End Set
-    End Property
-
-
-    Public Property nLeerl As Single
-        Get
-            Return sinLeerl
-        End Get
-        Set(ByVal value As Single)
-            sinLeerl = value
-        End Set
-    End Property
-
     Public Property Fr0 As Single
         Get
             Return siFr0
@@ -1550,126 +1263,6 @@ lbInt:
 
 
 
-    Public Function VehCatConv(ByVal VehCat As tVehCat) As String
-        Select Case VehCat
-            Case tVehCat.Citybus
-                Return "Citybus"
-            Case tVehCat.Coach
-                Return "Coach"
-            Case tVehCat.InterurbanBus
-                Return "InterurbanBus"
-            Case tVehCat.Rigid
-                Return "Rigid"
-            Case Else  'tVehCat.Tractor
-                Return "Tractor"
-        End Select
-    End Function
-
-    Public Function VehCatConv(ByVal VehCat As String) As tVehCat
-        Select Case UCase(Trim(VehCat))
-            Case "CITYBUS"
-                Return tVehCat.Citybus
-            Case "COACH"
-                Return tVehCat.Coach
-            Case "INTERURBANBUS"
-                Return tVehCat.InterurbanBus
-            Case "RIGID"
-                Return tVehCat.Rigid
-            Case Else  '"TRACTOR"
-                Return tVehCat.Tractor
-        End Select
-    End Function
-
-
-    Public Function CdModeConv(ByVal CdMode As tCdMode) As String
-        Select Case CdMode
-            Case tCdMode.CdOfBeta
-                Return "CdOfBeta"
-            Case tCdMode.CdOfV
-                Return "CdOfV"
-            Case Else  'tCdMode.ConstCd0
-                Return "Off"
-        End Select
-    End Function
-
-    Public Function CdModeConv(ByVal CdMode As String) As tCdMode
-        Select Case UCase(Trim(CdMode))
-            Case "CDOFBETA"
-                Return tCdMode.CdOfBeta
-            Case "CDOFV"
-                Return tCdMode.CdOfV
-            Case Else  '"OFF"
-                Return tCdMode.ConstCd0
-        End Select
-    End Function
-
-    Public Function AxleConfConv(ByVal AxleConf As tAxleConf) As String
-        Select Case AxleConf
-            Case tAxleConf.a4x2
-                Return "4x2"
-            Case tAxleConf.a4x4
-                Return "4x4"
-            Case tAxleConf.a6x2
-                Return "6x2"
-            Case tAxleConf.a6x4
-                Return "6x4"
-            Case tAxleConf.a6x6
-                Return "6x6"
-            Case tAxleConf.a8x2
-                Return "8x2"
-            Case tAxleConf.a8x4
-                Return "8x4"
-            Case tAxleConf.a8x6
-                Return "8x6"
-            Case Else  'tAxleConf.a8x8
-                Return "8x8"
-        End Select
-    End Function
-
-    Public Function AxleConfConv(ByVal AxleConf As String) As tAxleConf
-        Select Case UCase(Trim(AxleConf))
-            Case "4X2"
-                Return tAxleConf.a4x2
-            Case "4X4"
-                Return tAxleConf.a4x4
-            Case "6X2"
-                Return tAxleConf.a6x2
-            Case "6X4"
-                Return tAxleConf.a6x4
-            Case "6X6"
-                Return tAxleConf.a6x6
-            Case "8X2"
-                Return tAxleConf.a8x2
-            Case "8X4"
-                Return tAxleConf.a8x4
-            Case "8X6"
-                Return tAxleConf.a8x6
-            Case Else '"8X8"
-                Return tAxleConf.a8x8
-        End Select
-    End Function
-
-    Public Function RtTypeConv(ByVal RtType As tRtType) As String
-        Select Case RtType
-            Case tRtType.Primary
-                Return "Primary"
-            Case tRtType.Secondary
-                Return "Secondary"
-            Case Else 'tRtType.None
-                Return "None"
-        End Select
-    End Function
-
-    Public Function RtTypeConv(ByVal RtType As String) As tRtType
-        Select Case UCase(Trim(RtType))
-            Case "PRIMARY"
-                Return tRtType.Primary
-            Case "SECONDARY"
-                Return tRtType.Secondary
-            Case Else  '"NONE"
-                Return tRtType.None
-        End Select
-    End Function
 
 
 
diff --git a/VECTO/MODcalc/Em Calc.vb b/VECTO/MODcalc/Em Calc.vb
deleted file mode 100644
index 6fc83693c7df963f0668ae9fc218c7e4c4fd693a..0000000000000000000000000000000000000000
--- a/VECTO/MODcalc/Em Calc.vb	
+++ /dev/null
@@ -1,98 +0,0 @@
-Imports System.Collections.Generic
-
-Public Class cEm
-
-    Public EmComp As Dictionary(Of String, cEmComp)
-    Public EmDefComp As Dictionary(Of tMapComp, cEmComp)
-
-
-    Public Sub Init()
-        EmComp = New Dictionary(Of String, cEmComp)
-        EmDefComp = New Dictionary(Of tMapComp, cEmComp)
-    End Sub
-
-    Public Sub CleanUp()
-        EmComp = Nothing
-        EmDefComp = Nothing
-    End Sub
-
-    Public Function Raw_Calc() As Boolean
-        Dim v As Single
-        Dim i As Integer
-        Dim KV As KeyValuePair(Of String, cEmComp)
-        Dim Em0 As cEmComp
-        Dim Result As Boolean
-        Dim MsgSrc As String
-
-        MsgSrc = ""
-
-        Result = True
-
-        For Each KV In MAP.EmComponents
-            Em0 = New cEmComp
-            Em0.Name = KV.Value.Name
-            Em0.IDstring = KV.Value.IDstring
-            Em0.MapCompID = KV.Value.MapCompID
-            Em0.Unit = KV.Value.Unit
-            Em0.NormID = KV.Value.NormID
-            Em0.WriteOutput = KV.Value.WriteOutput
-            EmComp.Add(KV.Key, Em0)
-        Next
-
-        For i = 0 To MODdata.tDim
-
-            For Each KV In MAP.EmComponents
-
-                Select Case MODdata.EngState(i)
-
-                    Case tEngState.Stopped
-
-                        EmComp(KV.Key).RawVals.Add(0)        '<= Soll das so bleiben?
-
-                    Case Else   '<= Idle / Drag / FullLoad-Unterscheidung...?
-
-
-                        'Delaunay
-                        v = MAP.fFCdelaunay_Intp(MODdata.nU(i), MODdata.Pe(i))
-
-                        If v < 0 And v > -999 Then
-                            If v < -0.1 Then
-                                WorkerMsg(tMsgID.Err, "FC= " & v & " at " & MODdata.nU(i) & " [1/min], " & MODdata.Pe(i) & " [kW]!", "MAP/FC_Intp")
-                                Result = False
-                            Else
-                                v = 0
-                            End If
-                        End If
-
-                        If Result Then
-                            If v < -999 Then Result = False
-                        End If
-                        EmComp(KV.Key).RawVals.Add(v)
-
-
-                End Select
-
-            Next
-        Next
-
-        For Each KV In EmComp
-            If KV.Value.MapCompID <> tMapComp.Undefined Then
-                EmDefComp.Add(KV.Value.MapCompID, KV.Value)
-            End If
-        Next
-
-        KV = Nothing
-
-        Return Result
-
-    End Function
-
-    Public Sub SumCalc()
-        Dim KV As KeyValuePair(Of String, cEmComp)
-        For Each KV In EmComp
-            KV.Value.SumCalc()
-        Next
-    End Sub
-
-
-End Class
diff --git a/VECTO/MODcalc/cMOD.vb b/VECTO/MODcalc/cMOD.vb
index 318d4ff91c746235f3270cb86c752d59766016c2..458aaaeb8fa04a44836f6826f0bd12658784803c 100644
--- a/VECTO/MODcalc/cMOD.vb
+++ b/VECTO/MODcalc/cMOD.vb
@@ -7,7 +7,6 @@ Public Class cMOD
     Public dnUvorg As List(Of Single)
     Public tDim As Integer
     Public tDimOgl As Integer
-    Public Em As cEm
     Public Px As cPower
     Public Vh As cVh
     Public CylceKin As cCycleKin
@@ -28,6 +27,7 @@ Public Class cMOD
     Public PaEng As List(Of Single)
     Public PaGB As List(Of Single)
     Public Paux As Dictionary(Of String, List(Of Single))
+    Public Pclutch As List(Of Single)
     Public Grad As List(Of Single)
 
     Public EngState As List(Of tEngState)
@@ -41,6 +41,14 @@ Public Class cMOD
     Public TCMout As List(Of Single)
     Public TCnOut As List(Of Single)
 
+    'FC
+    Public FCerror As Boolean
+    Public lFC As List(Of Single)
+    Public FCavg As Single
+
+    Public CorrFactor As Single
+
+
 
     Private bInit As Boolean
 
@@ -51,7 +59,6 @@ Public Class cMOD
     Public Sub Init()
         Pe = New List(Of Single)
         nU = New List(Of Single)
-        Em = New cEm
         Px = New cPower
         Vh = New cVh
         CylceKin = New cCycleKin
@@ -69,6 +76,7 @@ Public Class cMOD
         PaEng = New List(Of Single)
         PaGB = New List(Of Single)
         Paux = New Dictionary(Of String, List(Of Single))
+        Pclutch = New List(Of Single)
         Grad = New List(Of Single)
 
         EngState = New List(Of tEngState)
@@ -81,17 +89,23 @@ Public Class cMOD
         TCMout = New List(Of Single)
         TCnOut = New List(Of Single)
 
-        Em.Init()
+        lFC = New List(Of Single)
+
+        FCerror = False
+
+
         Vh.Init()
         ModErrors = New cModErrors
+
+
         bInit = True
     End Sub
 
     Public Sub CleanUp()
         If bInit Then
-            Em.CleanUp()
+            lFC = Nothing
+
             Vh.CleanUp()
-            Em = Nothing
             Px = Nothing
             Vh = Nothing
             Pe = Nothing
@@ -110,6 +124,7 @@ Public Class cMOD
             PaEng = Nothing
             PaGB = Nothing
             Paux = Nothing
+            Pclutch = Nothing
             Grad = Nothing
 
             EngState = Nothing
@@ -129,7 +144,6 @@ Public Class cMOD
     End Sub
 
     Public Sub Duplicate(ByVal t As Integer)
-        Dim EmKV As KeyValuePair(Of String, cEmComp)
         Dim AuxKV As KeyValuePair(Of String, List(Of Single))
 
         If DRI.Nvorg Then
@@ -137,12 +151,6 @@ Public Class cMOD
             dnUvorg.Insert(t, dnUvorg(t))
         End If
 
-        If DRI.EmCompDef Then
-            For Each EmKV In DRI.EmComponents
-                EmKV.Value.RawVals.Insert(t, EmKV.Value.RawVals(t))
-            Next
-        End If
-
         If DRI.AuxDef Then
             For Each AuxKV In DRI.AuxComponents
                 AuxKV.Value.Insert(t, AuxKV.Value(t))
@@ -152,7 +160,6 @@ Public Class cMOD
     End Sub
 
     Public Sub Cut(ByVal t As Integer)
-        Dim EmKV As KeyValuePair(Of String, cEmComp)
         Dim AuxKV As KeyValuePair(Of String, List(Of Single))
 
         If DRI.Nvorg Then
@@ -160,12 +167,6 @@ Public Class cMOD
             dnUvorg.RemoveAt(t)
         End If
 
-        If DRI.EmCompDef Then
-            For Each EmKV In DRI.EmComponents
-                EmKV.Value.RawVals.RemoveAt(t)
-            Next
-        End If
-
         If DRI.AuxDef Then
             For Each AuxKV In DRI.AuxComponents
                 AuxKV.Value.RemoveAt(t)
@@ -178,7 +179,7 @@ Public Class cMOD
 
     Public Sub CycleInit()
 
-        If GEN.EngOnly Then
+        If VEC.EngOnly Then
             EngCycleInit()
         Else
             VehCycleInit()
@@ -191,9 +192,6 @@ Public Class cMOD
     Private Sub VehCycleInit()
         Dim s As Integer
         Dim L As List(Of Double)
-        Dim EmKV As KeyValuePair(Of String, cEmComp)
-        Dim ExsKV As KeyValuePair(Of tExsComp, Dictionary(Of Short, List(Of Single)))
-        Dim Exs0 As List(Of Single)
         Dim AuxKV As KeyValuePair(Of String, List(Of Single))
 
         'Define Cycle-length (shorter by 1sec than original because of Interim-seconds)
@@ -222,26 +220,6 @@ Public Class cMOD
 
         End If
 
-        'Average EM-components (between-seconds) for KF-creation or Eng-Analysis
-        If DRI.EmCompDef Then
-            For Each EmKV In DRI.EmComponents
-                For s = 0 To tDim
-                    EmKV.Value.RawVals(s) = (EmKV.Value.RawVals(s + 1) + EmKV.Value.RawVals(s)) / 2
-                Next
-            Next
-        End If
-
-        'Specify average EXS
-        If DRI.ExsCompDef Then
-            For Each ExsKV In DRI.ExsComponents
-                For Each Exs0 In ExsKV.Value.Values
-                    For s = 0 To tDim
-                        Exs0(s) = (Exs0(s + 1) + Exs0(s)) / 2
-                    Next
-                Next
-            Next
-        End If
-
         'Specify average Aux and Aux-lists, when Au8x present in DRI and VEH
         If DRI.AuxDef Then
             For Each AuxKV In DRI.AuxComponents
@@ -250,7 +228,7 @@ Public Class cMOD
                     AuxKV.Value(s) = (AuxKV.Value(s + 1) + AuxKV.Value(s)) / 2
                 Next
 
-                If VEH.AuxPaths.ContainsKey(AuxKV.Key) Then MODdata.Paux.Add(AuxKV.Key, New List(Of Single))
+                If VEC.AuxPaths.ContainsKey(AuxKV.Key) Then MODdata.Paux.Add(AuxKV.Key, New List(Of Single))
 
             Next
         End If
@@ -292,6 +270,143 @@ Public Class cMOD
 
     End Sub
 
+
+
+    Public Sub FCcalc(ByVal WHTCcorrection As Boolean)
+        Dim v As Single
+        Dim i As Integer
+        Dim Result As Boolean
+        Dim x As Single
+        Dim sum As Double
+        Dim LostEnergy As Double
+        Dim EngOnTime As Integer
+        Dim AddEngLoad As Single
+        Dim info As cRegression.RegressionProcessInfo
+        Dim reg As cRegression
+        Dim rx As List(Of Double)
+        Dim ry As List(Of Double)
+        Dim rR2 As Single
+        Dim rA As Double
+        Dim rB As Double
+        Dim rSE As Double
+        Dim FCadd As Double
+        Dim PeAdd As Double
+
+        Dim MsgSrc As String
+
+        MsgSrc = "MAP/FC_Intp"
+
+        FCerror = False
+        Result = True
+        LostEnergy = 0
+        EngOnTime = 0
+        rx = New List(Of Double)
+        ry = New List(Of Double)
+
+        For i = 0 To MODdata.tDim
+
+            Select Case MODdata.EngState(i)
+
+                Case tEngState.Stopped
+
+                    lFC.Add(0)
+                    LostEnergy += MODdata.PauxSum(i) / 3600
+
+                Case Else   '<= Idle / Drag / FullLoad-Unterscheidung...?
+
+
+                    'Delaunay
+                    v = MAP.fFCdelaunay_Intp(MODdata.nU(i), MODdata.Pe(i))
+
+                    If v < 0 And v > -999 Then v = 0
+
+                    If Result Then
+                        If v < -999 Then Result = False
+                    End If
+                    lFC.Add(v)
+
+                    EngOnTime += 1
+                    rx.Add(MODdata.Pe(i))
+                    ry.Add(v)
+
+            End Select
+
+        Next
+
+        'Calc average FC
+        sum = 0
+        For Each x In lFC
+            sum += x
+        Next
+        FCavg = CSng(sum / lFC.Count)
+
+
+        'WHTC Correction
+        If Declaration.Active AndAlso WHTCcorrection Then
+            CorrFactor = Declaration.SegRef.WHTCWF(Declaration.CurrentMission.MissionID)(tWHTCpart.Urban) * ENG.WHTCurban / Declaration.WHTCresults(tWHTCpart.Urban) _
+                + Declaration.SegRef.WHTCWF(Declaration.CurrentMission.MissionID)(tWHTCpart.Rural) * ENG.WHTCrural / Declaration.WHTCresults(tWHTCpart.Rural) _
+                + Declaration.SegRef.WHTCWF(Declaration.CurrentMission.MissionID)(tWHTCpart.Motorway) * ENG.WHTCmw / Declaration.WHTCresults(tWHTCpart.Motorway)
+        End If
+
+
+        'Start/Stop-Aux - Correction
+        If Result AndAlso LostEnergy > 0 Then
+
+            WorkerMsg(tMsgID.Normal, "Correcting FC due to wrong aux energy balance during engine stop times", MsgSrc)
+            WorkerMsg(tMsgID.Normal, " > Error in aux energy balance: " & LostEnergy.ToString("0.000") & " [kWh]", MsgSrc)
+
+            If EngOnTime < 1 Then
+                WorkerMsg(tMsgID.Err, " > ERROR: Engine-On Time = 0!", MsgSrc)
+                FCerror = True
+                Exit Sub
+            End If
+
+            'Linear regression of FC=f(Pe)
+            reg = New cRegression
+
+            info = reg.Regress(rx.ToArray, ry.ToArray)
+            rR2 = info.PearsonsR ^ 2
+            rA = info.a
+            rB = info.b
+            rSE = info.StandardError
+
+            If rB <= 0 Then
+                WorkerMsg(tMsgID.Err, " > ERROR in linear regression ( b=" & rB & ")!", MsgSrc)
+                FCerror = True
+                Exit Sub
+            End If
+
+            'Additional engine load due to lost Aux energy: [kW] = [kWh]/[h]
+            AddEngLoad = LostEnergy / (EngOnTime / 3600)
+
+            WorkerMsg(tMsgID.Normal, " > Additional engine load: " & AddEngLoad.ToString("0.000") & " [kW]", MsgSrc)
+
+            FCadd = 0
+            For i = 0 To MODdata.tDim
+                If MODdata.EngState(i) <> tEngState.Stopped Then
+                    PeAdd = AddEngLoad + MODdata.Pbrake(i)
+                    If PeAdd > 0 Then
+                        FCadd += rB * PeAdd
+                    End If
+                End If
+            Next
+
+            FCadd /= EngOnTime '[g/h]
+
+            WorkerMsg(tMsgID.Normal, " > FC corrected from: " & FCavg.ToString("0.0") & " [g/h] to " & (FCavg + FCadd).ToString("0.0") & " [g/h]", MsgSrc)
+
+            'Correct FC to higher load
+            FCavg += FCadd
+
+
+        End If
+
+        If Not Result Then FCerror = True
+
+    End Sub
+
+
+
     Public Function Output() As Boolean
 
         Dim f As cFile_V3
@@ -306,8 +421,6 @@ Public Class cMOD
         Dim MsgSrc As String
         Dim tdelta As Single
 
-        Dim EmList As New List(Of String)
-        Dim Em0 As cEmComp
         Dim StrKey As String
 
         Dim AuxList As New List(Of String)
@@ -337,19 +450,15 @@ Public Class cMOD
         '*********** Settings **************
         Sepp = ","
         t1 = MODdata.tDim
-        If GEN.EngOnly Then
+        If VEC.EngOnly Then
             tdelta = 0
         Else
             tdelta = 0.5
         End If
 
 
-        '********** Key-Listen ************
-        For Each StrKey In Em.EmComp.Keys
-            EmList.Add(StrKey)
-        Next
-
-        For Each StrKey In VEH.AuxRefs.Keys     'Wenn Engine Only dann wird das garnicht verwendet
+        '********** Aux-List ************
+        For Each StrKey In VEC.AuxRefs.Keys     'Wenn Engine Only dann wird das garnicht verwendet
             AuxList.Add(StrKey)
         Next
 
@@ -369,10 +478,10 @@ Public Class cMOD
         s.Append("time")
         sU.Append("[s]")
 
-        If Not GEN.EngOnly Then
+        If Not VEC.EngOnly Then
 
             s.Append(",dist,v_act,v_targ,acc,grad")
-            sU.Append(",[km],[km/h],[km/h],[m/s^2],[%]")
+            sU.Append(",[m],[km/h],[km/h],[m/s^2],[%]")
             dist = 0
 
         End If
@@ -380,7 +489,7 @@ Public Class cMOD
         s.Append(",n,Tq_eng,Tq_clutch,Tq_full,Tq_drag,Pe_eng,Pe_full,Pe_drag,Pe_clutch,Pa Eng,Paux")
         sU.Append(",[1/min],[Nm],[Nm],[Nm],[Nm],[kW],[kW],[kW],[kW],[kW],[kW]")
 
-        If Not GEN.EngOnly Then
+        If Not VEC.EngOnly Then
 
             s.Append(",Gear,Ploss GB,Ploss Diff,Ploss Retarder,Pa GB,Pa Veh,Proll,Pair,Pgrad,Pwheel,Pbrake")
             sU.Append(",[-],[kW],[kW],[kW],[kW],[kW],[kW],[kW],[kW],[kW],[kW]")
@@ -399,25 +508,14 @@ Public Class cMOD
         End If
 
 
-        For Each StrKey In EmList
-
-            Em0 = Em.EmComp(StrKey)
+        'FC
+        s.Append(Sepp & "FC")
+        sU.Append(Sepp & "[g/h]")
 
-            If Em0.WriteOutput Then
-                s.Append(Sepp & Em0.Name)
-                sU.Append(Sepp & Em0.Unit)
-            End If
-
-        Next
-
-
-        'Berechnete Dynamikparameter (Diff zu Kennfeld) |@@| Calculated dynamics parameters (Diff to Map)
-        'If TC.Calculated Then
-        '    For Each TcKey In TcList
-        '        s.Append(Sepp & fMapCompName(TcKey))
-        '        sU.Append(Sepp & "-")
-        '    Next
-        'End If
+        If Declaration.Active Then
+            s.Append(Sepp & "FC corrected")
+            sU.Append(Sepp & "[g/h]")
+        End If
 
 
         'Write to File
@@ -436,7 +534,7 @@ Public Class cMOD
             For t = 0 To t1
 
                 'Predefine Gear for FLD assignment
-                If GEN.EngOnly Then
+                If VEC.EngOnly Then
                     Gear = 0
                 Else
                     Gear = .Gear(t)
@@ -448,10 +546,10 @@ Public Class cMOD
                 'Time
                 s.Append(t + DRI.t0 + tdelta)
 
-                If Not GEN.EngOnly Then
+                If Not VEC.EngOnly Then
 
-                    'Strecke |@@| Route
-                    dist += .Vh.V(t) / 1000
+                    'distance
+                    dist += .Vh.V(t)
                     s.Append(Sepp & dist)
 
                     'Actual-speed.
@@ -472,23 +570,23 @@ Public Class cMOD
                 s.Append(Sepp & .nU(t))
 
                 If Math.Abs(2 * Math.PI * .nU(t) / 60) < 0.00001 Then
-                    s.Append(Sepp & "-" & Sepp & "-" & Sepp & "-" & Sepp & "-")
+                    s.Append(Sepp & "0" & Sepp & "0" & Sepp & "0" & Sepp & "0")
                 Else
 
                     'Torque
-                    s.Append(Sepp & 1000 * .Pe(t) / (2 * Math.PI * .nU(t) / 60))
+                    s.Append(Sepp & nPeToM(.nU(t), .Pe(t)))
 
                     'Torque at clutch
-                    s.Append(Sepp & 1000 * (.Pe(t) - .PaEng(t) - .PauxSum(t)) / (2 * Math.PI * .nU(t) / 60))
+                    s.Append(Sepp & nPeToM(.nU(t), .Pclutch(t)))
 
                     'Full-load and Drag torque
                     If .EngState(t) = tEngState.Stopped Then
-                        s.Append(Sepp & "-" & Sepp & "-")
+                        s.Append(Sepp & "0" & Sepp & "0")
                     Else
                         If t = 0 Then
-                            s.Append(Sepp & 1000 * FLD(Gear).Pfull(.nU(t)) / (2 * Math.PI * .nU(t) / 60) & Sepp & 1000 * FLD(Gear).Pdrag(.nU(t)) / (2 * Math.PI * .nU(t) / 60))
+                            s.Append(Sepp & nPeToM(.nU(t), FLD(Gear).Pfull(.nU(t))) & Sepp & nPeToM(.nU(t), FLD(Gear).Pdrag(.nU(t))))
                         Else
-                            s.Append(Sepp & 1000 * FLD(Gear).Pfull(.nU(t), .Pe(t - 1)) / (2 * Math.PI * .nU(t) / 60) & Sepp & 1000 * FLD(Gear).Pdrag(.nU(t)) / (2 * Math.PI * .nU(t) / 60))
+                            s.Append(Sepp & nPeToM(.nU(t), FLD(Gear).Pfull(.nU(t), .Pe(t - 1))) & Sepp & nPeToM(.nU(t), FLD(Gear).Pdrag(.nU(t))))
                         End If
                     End If
 
@@ -515,7 +613,7 @@ Public Class cMOD
                 End If
 
                 'Power at Clutch
-                s.Append(Sepp & .Pe(t) - .PaEng(t) - .PauxSum(t))
+                s.Append(Sepp & .Pclutch(t))
 
                 'PaEng
                 s.Append(Sepp & .PaEng(t))
@@ -525,7 +623,7 @@ Public Class cMOD
 
 
 
-                If Not GEN.EngOnly Then
+                If Not VEC.EngOnly Then
 
                     'Gear
                     s.Append(Sepp & .Gear(t))
@@ -570,31 +668,20 @@ Public Class cMOD
 
                 End If
 
-                'Final-emissions (tailpipe)
-                For Each StrKey In EmList
-
-                    Em0 = .Em.EmComp(StrKey)
-
-                    If Em0.WriteOutput Then
-
-                        If Em0.FinalVals(t) > -0.0001 Then
-                            s.Append(Sepp & Em0.FinalVals(t))
-                        Else
-                            s.Append(Sepp & "ERROR")
-                        End If
+                'FC
+                If .lFC(t) > -0.0001 Then
+                    s.Append(Sepp & .lFC(t))
+                Else
+                    s.Append(Sepp & "ERROR")
+                End If
 
+                If Declaration.Active Then
+                    If .lFC(t) > -0.0001 Then
+                        s.Append(Sepp & .lFC(t) * .CorrFactor)
+                    Else
+                        s.Append(Sepp & "ERROR")
                     End If
-
-                Next
-
-
-                'Calculated Dynamics-parameters (Diff from(zu) Map)
-                'If TC.Calculated Then
-                '    For Each TcKey In TcList
-                '        TC0 = MODdata.TC.TCcomponents(TcKey)
-                '        s.Append(Sepp & TC0(t))
-                '    Next
-                'End If
+                End If
 
                 'Write to File
                 f.WriteLine(s.ToString)
@@ -621,7 +708,6 @@ Public Class cMOD
         Public CdExtrapol As String
         Public RtExtrapol As String
         Public DesMaxExtr As String
-        Public GSextrapol As String
         Public TCextrapol As String
 
         Public Sub New()
@@ -650,7 +736,6 @@ Public Class cMOD
         Public Sub GeschRedReset()
             CdExtrapol = ""
             RtExtrapol = ""
-            GSextrapol = ""
             TCextrapol = ""
             PxReset()
         End Sub
@@ -698,10 +783,6 @@ Public Class cMOD
                 WorkerMsg(tMsgID.Warn, "Extrapolation in Retarder input file (" & RtExtrapol & ")!", MsgSrc & "/t= " & Second)
             End If
 
-            If GSextrapol <> "" Then
-                WorkerMsg(tMsgID.Warn, "Extrapolation in Gear Shift Polygon file (" & GSextrapol & ")!", MsgSrc & "/t= " & Second)
-            End If
-
             If TCextrapol <> "" Then
                 WorkerMsg(tMsgID.Warn, "Extrapolation in Torque Converter file (" & TCextrapol & ")!", MsgSrc & "/t= " & Second)
             End If
diff --git a/VECTO/MODcalc/cPower.vb b/VECTO/MODcalc/cPower.vb
index 1e733e3b5c14759a6f77e95f1eb718f84a9e1805..71b10e3ccfadd2c0394342310fdeb904ba5f9404 100644
--- a/VECTO/MODcalc/cPower.vb
+++ b/VECTO/MODcalc/cPower.vb
@@ -75,12 +75,12 @@ Public Class cPower
         MsgSrc = "Power/PreRun"
 
         'Check Input
-        If GEN.LookAheadOn AndAlso GEN.a_lookahead >= 0 Then
+        If VEC.LookAheadOn AndAlso VEC.a_lookahead >= 0 Then
             WorkerMsg(tMsgID.Err, "Lookahead deceleration invalid! Value must be below zero.", MsgSrc)
             Return False
         End If
 
-        If GEN.OverSpeedOn And GEN.EcoRollOn Then
+        If VEC.OverSpeedOn And VEC.EcoRollOn Then
             WorkerMsg(tMsgID.Err, "Overrun and Ecoroll can't be enabled both at the same time!", MsgSrc)
             Return False
         End If
@@ -90,8 +90,8 @@ Public Class cPower
         Gvorg = DRI.Gvorg
         Nvorg = DRI.Nvorg
 
-        If GEN.EcoRollOn Or GEN.OverSpeedOn Then
-            If GEN.LookAheadOn Then
+        If VEC.EcoRollOn Or VEC.OverSpeedOn Then
+            If VEC.LookAheadOn Then
                 ProgBarShare = 4
                 ProgBarLACpart = 2
             Else
@@ -99,7 +99,7 @@ Public Class cPower
                 ProgBarLACpart = 0  '0=OFF
             End If
         Else
-            If GEN.LookAheadOn Then
+            If VEC.LookAheadOn Then
                 ProgBarShare = 2
                 ProgBarLACpart = 1
             Else
@@ -172,7 +172,7 @@ Public Class cPower
                 Gear = 0
             Else
                 If Gvorg Then
-                    Gear = Math.Min(Vh.GearVorg(i), VEH.ganganz)
+                    Gear = Math.Min(Vh.GearVorg(i), GBX.GearCount)
                 Else
                     Gear = fFastGearCalc(Vist, PvorD)
                 End If
@@ -182,10 +182,10 @@ Public Class cPower
             'ICE-inertia   
             If Nvorg Then
                 nU = MODdata.nUvorg(i)
-                PaMot = (VEH.I_mot * MODdata.dnUvorg(i) * 0.01096 * MODdata.nUvorg(i)) * 0.001
+                PaMot = (ENG.I_mot * MODdata.dnUvorg(i) * 0.01096 * MODdata.nUvorg(i)) * 0.001
             Else
                 nU = fnU(Vist, Gear, False)
-                PaMot = ((VEH.I_mot * (VEH.AchsI * VEH.Igetr(Gear) / (0.5 * VEH.Dreifen)) ^ 2) * aist * Vist) * 0.001
+                PaMot = ((ENG.I_mot * (VEH.AchsI * VEH.Igetr(Gear) / (0.5 * VEH.Dreifen)) ^ 2) * aist * Vist) * 0.001
             End If
 
             'Aux Demand
@@ -212,17 +212,17 @@ Public Class cPower
             'Full load / motoring
             Pmin = FLD(Gear).Pdrag(nU)
 
-            If Vist >= GEN.vMin / 3.6 Then
+            If Vist >= VEC.vMin / 3.6 Then
 
-                If GEN.EcoRollOn Then
+                If VEC.EcoRollOn Then
 
                     'Secondary Progressbar
                     ProgBarCtrl.ProgJobInt = CInt((100 / ProgBarShare) * i / MODdata.tDim)
 
                     If PvorD < 0 Or (i > 0 AndAlso Vh.EcoRoll(i - 1)) Then
 
-                        Vmax = MODdata.Vh.Vsoll(i) + GEN.OverSpeed / 3.6
-                        Vmin = Math.Max(0, MODdata.Vh.Vsoll(i) - GEN.UnderSpeed / 3.6)
+                        Vmax = MODdata.Vh.Vsoll(i) + VEC.OverSpeed / 3.6
+                        Vmin = Math.Max(0, MODdata.Vh.Vsoll(i) - VEC.UnderSpeed / 3.6)
                         vRollout = fRolloutSpeed(i, 1, Vh.fGrad(dist(i)))
                         aRollout = (2 * vRollout - Vh.V0(i)) - Vh.V0(i)
 
@@ -268,13 +268,13 @@ Public Class cPower
 
                     If P < Pmin Then
 
-                        If GEN.OverSpeedOn Then
+                        If VEC.OverSpeedOn Then
 
                             'Secondary Progressbar
                             ProgBarCtrl.ProgJobInt = CInt((100 / ProgBarShare) * i / MODdata.tDim)
 
                             vCoasting = fCoastingSpeed(i, dist(i), Gear)
-                            Vmax = MODdata.Vh.Vsoll(i) + GEN.OverSpeed / 3.6
+                            Vmax = MODdata.Vh.Vsoll(i) + VEC.OverSpeed / 3.6
 
                             If vCoasting <= Vmax Then
 
@@ -336,8 +336,8 @@ Public Class cPower
                 Next
 
                 'Calc Coasting-Start time step
-                If GEN.LookAheadOn Then
-                    Tlookahead = CInt((vset2 - vset1) / GEN.a_lookahead)
+                If VEC.LookAheadOn Then
+                    Tlookahead = CInt((vset2 - vset1) / VEC.a_lookahead)
                     t = Math.Max(0, i - Tlookahead)
                 End If
 
@@ -353,13 +353,13 @@ Public Class cPower
                 LookAheadDone = False
 
                 'Limit deceleration
-                adec = GEN.aDesMin(Vist)
+                adec = VEC.aDesMin(Vist)
                 If Vh.a(i) < adec Then Vh.SetMinAccBackw(i)
 
                 i0 = i
 
                 'If vehicle stops too early reduce coasting time, i.e. set  Coasting-Start later
-                If GEN.LookAheadOn Then
+                If VEC.LookAheadOn Then
                     Do While i0 > t AndAlso fCoastingSpeed(t, dist(t), Gears(t), i0 - t) < Vh.V(i0)
                         t += 1
                     Loop
@@ -370,20 +370,20 @@ Public Class cPower
                     i -= 1
                     aist = Vh.a(i)
                     Vist = Vh.V(i)
-                    adec = GEN.aDesMin(Vist)
+                    adec = VEC.aDesMin(Vist)
 
                     If aist < adec Then
                         Vh.SetMinAccBackw(i)
                         Positions(i) = 2
                     Else
                         'Coasting (Forward)
-                        If GEN.LookAheadOn And Vist >= GEN.vMinLA / 3.6 Then
+                        If VEC.LookAheadOn And Vist >= VEC.vMinLA / 3.6 Then
 
                             For j = t To i0
                                 Vist = Vh.V(j)
                                 vCoasting = fCoastingSpeed(j, dist(j), Gears(j))
                                 aCoasting = (2 * vCoasting - Vh.V0(j)) - Vh.V0(j)
-                                If vCoasting < Vist And aCoasting >= GEN.aDesMin(Vist) Then
+                                If vCoasting < Vist And aCoasting >= VEC.aDesMin(Vist) Then
                                     'If Vrollout < Vist Then
                                     Vh.SetSpeed(j, vCoasting)
                                     Positions(j) = 3
@@ -455,7 +455,6 @@ Public Class cPower
         Dim StdMode As Boolean
         Dim ProgBarShare As Int16
 
-
         Dim LastPmax As Single
         Dim dist As Double
         Dim dist0 As Double
@@ -478,7 +477,7 @@ Public Class cPower
         '   Initialize
         Vh = MODdata.Vh
 
-        If GEN.EcoRollOn Or GEN.OverSpeedOn Or GEN.LookAheadOn Then
+        If VEC.EcoRollOn Or VEC.OverSpeedOn Or VEC.LookAheadOn Then
             ProgBarShare = 2
         Else
             ProgBarShare = 1
@@ -502,10 +501,10 @@ Public Class cPower
         StStDelayTx = 0
         SecSpeedRed = 0
 
-        If VEH.TracIntrSi < 0.001 Then
+        If GBX.TracIntrSi < 0.001 Then
             TracIntrI = 0
         Else
-            TracIntrI = CInt(Math.Max(1, Math.Round(VEH.TracIntrSi, 0, MidpointRounding.AwayFromZero)))
+            TracIntrI = CInt(Math.Max(1, Math.Round(GBX.TracIntrSi, 0, MidpointRounding.AwayFromZero)))
         End If
         TracIntrIx = 0
         TracIntrOn = False
@@ -518,7 +517,7 @@ Public Class cPower
         LastClutch = tEngClutch.Opened
 
         'Theoretical maximum speed [m/s] - set to Speed ​​at 1.2 x Nominal-Revolutions in top-Gear
-        GVmax = 1.2 * VEH.nNenn * VEH.Dreifen * Math.PI / (VEH.AchsI * VEH.Igetr(VEH.ganganz) * 60)
+        GVmax = 1.2 * ENG.Nrated * VEH.Dreifen * Math.PI / (VEH.AchsI * VEH.Igetr(GBX.GearCount) * 60)
 
         dist = 0
         dist0 = 0
@@ -556,6 +555,7 @@ lbGschw:
             dist = dist0 + Vist
 
             StStPossible = False
+            EngState0 = tEngState.Undef
 
             'If Speed over Top theoretical Speed => Reduce
             If Vist > GVmax + 0.0001 And Not GVset Then
@@ -565,7 +565,7 @@ lbGschw:
             End If
 
             'Check if Acceleration is too high
-            amax = GEN.aDesMax(Vist)
+            amax = VEC.aDesMax(Vist)
 
             If amax < 0.0001 Then
                 WorkerMsg(tMsgID.Err, "aDesMax(acc) invalid! v= " & Vist & ", aDesMax(acc) =" & amax, MsgSrc)
@@ -583,7 +583,7 @@ lbGschw:
             ElseIf FirstSecItar Then    'this is necessary to avoid speed reduction failure
 
                 'Check whether Deceleration too high
-                amax = GEN.aDesMin(Vist)
+                amax = VEC.aDesMin(Vist)
                 If amax > -0.001 Then
                     WorkerMsg(tMsgID.Err, "aDesMax(dec) invalid! v= " & Vist & ", aDesMax(dec) =" & amax, MsgSrc)
                     Return False
@@ -677,11 +677,11 @@ lbGschw:
 
                 If Gvorg Then
                     'Gear-settings
-                    Gear = Math.Min(Vh.GearVorg(jz), VEH.ganganz)
+                    Gear = Math.Min(Vh.GearVorg(jz), GBX.GearCount)
                 ElseIf Nvorg Then
                     'Revolutions-setting
                     Gear = fGearByU(MODdata.nUvorg(jz), Vist)
-                ElseIf VEH.ganganz = 1 Then
+                ElseIf GBX.GearCount = 1 Then
                     Gear = 1
                 Else
 
@@ -733,15 +733,6 @@ lbGschw:
             ' Important checks
 lbCheck:
 
-            'Check whether to reduce speed
-            ''If GeschwRed Then GoTo lbGeschwRed
-
-            'Check whether Clutch is open:
-            ''bKupplOffen = (bStehen Or Gear(jz) = 0) <= Already known by Clutch
-
-            'If conventionall then ICE-clutch = master clutch
-            ''bICEKupOffen = bKupplOffen <= i need nothing more
-
             'Falls vor Gangwahl festgestellt wurde, dass nicht KupplSchleif, dann bei zu niedriger Drehzahl runterschalten: |@@| If before?(vor) Gear-shift is detected that Clutch does not Lock, then Downshift at too low Revolutions:
             If Not GBX.TCon Then
                 If Clutch = tEngClutch.Closed Then
@@ -781,16 +772,16 @@ lbCheck:
                 nU = MODdata.nUvorg(jz)
 
                 'If Start/Stop then it will be set at the same nn < -0.05 to nU = 0
-                If GEN.StartStop And nU < VEH.nLeerl - 100 Then
+                If VEC.StartStop And nU < ENG.Nidle - 100 Then
                     If Pplus Then
-                        nU = VEH.nLeerl
+                        nU = ENG.Nidle
                         If FirstSecItar Then WorkerMsg(tMsgID.Warn, "target rpm < rpm_idle while power demand > 0", MsgSrc & "/t= " & jz + 1)
                     Else
                         nU = 0
                     End If
                 End If
 
-                If nU < VEH.nLeerl - 100 And Not GEN.StartStop Then
+                If nU < ENG.Nidle - 100 And Not VEC.StartStop Then
                     If FirstSecItar Then WorkerMsg(tMsgID.Warn, "target rpm < rpm_idle (Start/Stop disabled)", MsgSrc & "/t= " & jz + 1)
                 End If
 
@@ -801,10 +792,10 @@ lbCheck:
             'Revolutions drop when decoupling
             If Clutch = tEngClutch.Opened Then
                 If jz = 0 Then
-                    nU = VEH.nLeerl
+                    nU = ENG.Nidle
                 Else
 
-                    If MODdata.nU(jz - 1) <= VEH.nLeerl + 0.00001 Then
+                    If MODdata.nU(jz - 1) <= ENG.Nidle + 0.00001 Then
                         nU = MODdata.nU(jz - 1)
                         GoTo lb_nOK
                     End If
@@ -826,7 +817,7 @@ lbCheck:
                         P = MODdata.Pe(jz - 1) - 0.75 * (MODdata.Pe(jz - 1) - Pmin)
                         M = -P * 1000 * 60 / (2 * Math.PI * nU)
                         'original: M = -Pmin * 1000 * 60 / (2 * Math.PI * ((nU + nUx) / 2))
-                        omega_p = M / VEH.I_mot
+                        omega_p = M / ENG.I_mot
                         omega2 = omega1 - omega_p
                         nU = omega2 * 60 / (2 * Math.PI)
                         i += 1
@@ -835,11 +826,11 @@ lbCheck:
                             nU = nUx
                             Exit Do
                         End If
-                    Loop Until Math.Abs(Pmin - PminX) < 0.001 Or nU <= VEH.nLeerl Or i = 999
+                    Loop Until Math.Abs(Pmin - PminX) < 0.001 Or nU <= ENG.Nidle Or i = 999
 
                     'If i = 999 Then WorkerMsg(tMsgID.Warn, "i=999", MsgSrc & "/t= " & jz + 1)
 
-                    nU = Math.Max(VEH.nLeerl, nU)
+                    nU = Math.Max(ENG.Nidle, nU)
 
                     MODdata.ModErrors.FLDextrapol = ""
 
@@ -875,14 +866,14 @@ lbCheck:
                     '*** Start: Revolutions Check
 
                     'Check whether Revolutions too high! => Upshift
-                    Do While nU > 1.2 * (VEH.nNenn - VEH.nLeerl) + VEH.nLeerl And Gear < VEH.ganganz
+                    Do While nU > 1.2 * (ENG.Nrated - ENG.Nidle) + ENG.Nidle And Gear < GBX.GearCount
                         Gear += 1
                         nU = fnU(Vist, Gear, Clutch = tEngClutch.Slipping)
                     Loop
 
                     'Check whether Revolutions too low with the Clutch closed
                     If Clutch = tEngClutch.Closed Then
-                        If nU < VEH.nLeerl + 0.0001 Then
+                        If nU < ENG.Nidle + 0.0001 Then
                             Gear -= 1
                             nU = fnU(Vist, Gear, Clutch = tEngClutch.Slipping)
                         End If
@@ -901,8 +892,8 @@ lb_nOK:
             '************************************ Determine Engine-state ************************************
             ' nU is final here!
 
-            'Determine next Consumption (from VEH and DRI)
-            Paux = fPaux(jz, nU)
+            'Determine Aux power demand (from VEH and DRI)
+            Paux = fPaux(jz, Math.Max(nU, ENG.Nidle))
 
             'ICE-inertia
             If Clutch = tEngClutch.Opened Then
@@ -910,13 +901,13 @@ lb_nOK:
                     PaMot = 0
                 Else
                     'Not optimal since jz-1 to jz not the right interval
-                    PaMot = (VEH.I_mot * (nU - MODdata.nU(jz - 1)) * 0.01096 * nU) * 0.001
+                    PaMot = (ENG.I_mot * (nU - MODdata.nU(jz - 1)) * 0.01096 * nU) * 0.001
                 End If
             Else
                 If Nvorg Then
-                    PaMot = (VEH.I_mot * MODdata.dnUvorg(jz) * 0.01096 * MODdata.nUvorg(jz)) * 0.001
+                    PaMot = (ENG.I_mot * MODdata.dnUvorg(jz) * 0.01096 * MODdata.nUvorg(jz)) * 0.001
                 Else
-                    PaMot = ((VEH.I_mot * (VEH.AchsI * VEH.Igetr(Gear) / (0.5 * VEH.Dreifen)) ^ 2) * aist * Vist) * 0.001
+                    PaMot = ((ENG.I_mot * (VEH.AchsI * VEH.Igetr(Gear) / (0.5 * VEH.Dreifen)) ^ 2) * aist * Vist) * 0.001
                 End If
             End If
 
@@ -960,6 +951,20 @@ lb_nOK:
             'EngState
             If Clutch = tEngClutch.Opened Then
 
+                'Start/Stop >>> tEngState.Stopped
+                If VEC.StartStop AndAlso Vist <= VEC.StStV / 3.6 AndAlso Math.Abs(PaMot) < 0.0001 Then
+                    StStPossible = True
+                    If StStAus And jz > 0 Then
+                        If MODdata.EngState(jz - 1) = tEngState.Stopped Then
+                            P = 0
+                            EngState0 = tEngState.Stopped
+                        End If
+                    Else
+                        P = 0
+                        EngState0 = tEngState.Stopped
+                    End If
+                End If
+
                 Select Case P
                     Case Is > 0.0001    'Antrieb
                         EngState0 = tEngState.Load
@@ -968,24 +973,7 @@ lb_nOK:
                         EngState0 = tEngState.Drag
 
                     Case Else           'Idle/Stop
-                        If GEN.StartStop Then
-                            If Vist <= GEN.StStV / 3.6 Then
-                                StStPossible = True
-                                If StStAus And jz > 0 Then
-                                    If MODdata.EngState(jz - 1) = tEngState.Stopped Then
-                                        EngState0 = tEngState.Stopped
-                                    Else
-                                        EngState0 = tEngState.Idle
-                                    End If
-                                Else
-                                    EngState0 = tEngState.Stopped
-                                End If
-                            Else
-                                EngState0 = tEngState.Idle
-                            End If
-                        Else
-                            EngState0 = tEngState.Idle
-                        End If
+                        If Not EngState0 = tEngState.Stopped Then EngState0 = tEngState.Idle
                 End Select
 
             Else
@@ -1129,7 +1117,7 @@ lb_nOK:
                         TracIntrOn = True
 
                         If TracIntrIx + 1 = TracIntrI Then
-                            ZgkrDt = VEH.TracIntrSi - CSng(TracIntrIx)
+                            ZgkrDt = GBX.TracIntrSi - CSng(TracIntrIx)
                         Else
                             ZgkrDt = 1
                         End If
@@ -1155,7 +1143,7 @@ lb_nOK:
             dist0 += Vist
 
             'Start / Stop - Activation-Speed Control
-            If GEN.StartStop Then
+            If VEC.StartStop Then
                 If StStPossible Then
                     StStDelayTx += 1
                 Else
@@ -1164,13 +1152,13 @@ lb_nOK:
                 If StStAus Then
                     If Not EngState0 = tEngState.Stopped Then
                         StStTx += 1
-                        If StStTx > GEN.StStT And StStDelayTx >= GEN.StStDelay Then
+                        If StStTx > VEC.StStT And StStDelayTx >= VEC.StStDelay Then
                             StStTx = 1
                             StStAus = False
                         End If
                     End If
                 Else
-                    If EngState0 = tEngState.Stopped Or StStDelayTx < GEN.StStDelay Then StStAus = True
+                    If EngState0 = tEngState.Stopped Or StStDelayTx < VEC.StStDelay Then StStAus = True
                 End If
             End If
 
@@ -1189,8 +1177,8 @@ lb_nOK:
             MODdata.PauxSum.Add(Paux)
             MODdata.Grad.Add(Vh.fGrad(dist))
 
-            For Each AuxID As String In VEH.AuxRefs.Keys
-                MODdata.Paux(AuxID).Add(VEH.Paux(AuxID, jz, nU))
+            For Each AuxID As String In VEC.AuxRefs.Keys
+                MODdata.Paux(AuxID).Add(VEC.Paux(AuxID, jz, Math.Max(nU, ENG.Nidle)))
             Next
 
             MODdata.PlossGB.Add(PlossGB)
@@ -1198,6 +1186,7 @@ lb_nOK:
             MODdata.PlossRt.Add(PlossRt)
             MODdata.PaEng.Add(PaMot)
             MODdata.PaGB.Add(PaGetr)
+            MODdata.Pclutch.Add(Pkup)
 
             MODdata.VehState.Add(VehState0)
             MODdata.Gear.Add(Gear)
@@ -1226,7 +1215,7 @@ lb_nOK:
                     Else
                         MODdata.TCnu.Add(1)
                         MODdata.TCmu.Add(1)
-                        MODdata.TCMout.Add(nPeToM(nU, P - Paux - PaMot))
+                        MODdata.TCMout.Add(nPeToM(nU, Pkup))
                         MODdata.TCnOut.Add(nU)
                     End If
                 End If
@@ -1251,7 +1240,7 @@ lb_nOK:
                 ElseIf jz < MODdata.tDim Then
 
                     If TracIntrIx + 1 = TracIntrI Then
-                        ZgkrDt = VEH.TracIntrSi - CSng(TracIntrIx)
+                        ZgkrDt = GBX.TracIntrSi - CSng(TracIntrIx)
                     Else
                         ZgkrDt = 1
                     End If
@@ -1283,7 +1272,7 @@ lb_nOK:
             If MODdata.ModErrors.MsgOutputAbort(jz + 1, MsgSrc) Then Return False
 
             If Clutch = tEngClutch.Closed And Nvorg Then
-                If Math.Abs(nU - fnU(Vist, Gear, False)) > 0.2 * VEH.nNenn Then
+                If Math.Abs(nU - fnU(Vist, Gear, False)) > 0.2 * ENG.Nrated Then
                     WorkerMsg(tMsgID.Warn, "Target rpm =" & nU & ", calculated rpm(gear " & Gear & ")= " & fnU(Vist, Gear, False), MsgSrc & "/t= " & jz + 1)
                 End If
             End If
@@ -1362,7 +1351,7 @@ lb_nOK:
 
             'OLD and wrong because not time shifted: P_mr(jz) = 0.001 * (I_mot * 0.0109662 * (n(jz) * nnrom) * nnrom * (n(jz) - n(jz - 1))) 
             If t > 0 And t < t1 Then
-                Pmr = 0.001 * (VEH.I_mot * (2 * Math.PI / 60) ^ 2 * MODdata.nU(t) * 0.5 * (MODdata.nU(t + 1) - MODdata.nU(t - 1)))
+                Pmr = 0.001 * (ENG.I_mot * (2 * Math.PI / 60) ^ 2 * MODdata.nU(t) * 0.5 * (MODdata.nU(t + 1) - MODdata.nU(t - 1)))
             Else
                 Pmr = 0
             End If
@@ -1374,7 +1363,7 @@ lb_nOK:
 
             'Revolutions of the Cycle => Determined in Cycle-init
             'If Revolutions under idle, assume Engine is stopped
-            If MODdata.nU(t) < VEH.nLeerl - 100 Then
+            If MODdata.nU(t) < ENG.Nidle - 100 Then
                 EngState0 = tEngState.Stopped
             Else
                 Pmin = FLD(0).Pdrag(MODdata.nU(t))
@@ -1399,7 +1388,7 @@ lb_nOK:
                     If MODdata.Pe(t) / Pmax > 1.05 Then PcorCount += 1
                     MODdata.Pe(t) = Pmax
                 ElseIf MODdata.Pe(t) < Pmin Then
-                    If MODdata.Pe(t) / Pmin And MODdata.Pe(t) > -99999 > 1.05 Then PcorCount += 1
+                    If MODdata.Pe(t) / Pmin > 1.05 And MODdata.Pe(t) > -99999 Then PcorCount += 1
                     MODdata.Pe(t) = Pmin
                 End If
 
@@ -1411,7 +1400,7 @@ lb_nOK:
                             EngState0 = tEngState.Load
                         End If
                     Case Is < -0.0001   'Schlepp
-                        If MODdata.Pe(t) < 1.01 * Pmin Then
+                        If Math.Abs(MODdata.Pe(t) / Pmin - 1) < 0.01 Then
                             EngState0 = tEngState.FullDrag
                         Else
                             EngState0 = tEngState.Drag
@@ -1423,6 +1412,7 @@ lb_nOK:
 
             MODdata.EngState.Add(EngState0)
             MODdata.PaEng.Add(Pmr)
+            MODdata.Pclutch.Add(MODdata.Pe(t) - (Pmr + Padd))
             MODdata.PauxSum.Add(Padd)
 
             'Notify
@@ -1466,7 +1456,7 @@ lb_nOK:
             P = MODdata.Pe(t - 1) - 0.75 * (MODdata.Pe(t - 1) - Pmin)
             M = -P * 1000 * 60 / (2 * Math.PI * nU)
             'original: M = -Pmin * 1000 * 60 / (2 * Math.PI * ((nU + nUx) / 2))
-            omega_p = M / VEH.I_mot
+            omega_p = M / ENG.I_mot
             omega2 = omega1 - omega_p
             nU = omega2 * 60 / (2 * Math.PI)
             i += 1
@@ -1475,7 +1465,7 @@ lb_nOK:
                 nU = nUx
                 Exit Do
             End If
-        Loop Until Math.Abs(Pmin - PminX) < 0.001 Or nU <= VEH.nLeerl Or i = 999
+        Loop Until Math.Abs(Pmin - PminX) < 0.001 Or nU <= ENG.Nidle Or i = 999
 
         Return P
 
@@ -1667,7 +1657,7 @@ lb_nOK:
         Dim nUup As Single
         Dim nUdown As Single
 
-        For Gear = VEH.ganganz To 1 Step -1
+        For Gear = GBX.GearCount To 1 Step -1
 
             nU = CSng(Vist * 60.0 * VEH.AchsI * VEH.Igetr(Gear) / (VEH.Dreifen * Math.PI))
 
@@ -1684,8 +1674,6 @@ lb_nOK:
 
         Return 1
 
-        MODdata.ModErrors.GSextrapol = ""
-
     End Function
 
     Private Function fStartGear(ByVal t As Integer, ByVal Grad As Single) As Integer
@@ -1704,7 +1692,7 @@ lb_nOK:
         If t = 0 AndAlso VehState0 <> tVehState.Stopped Then
 
             'Calculate gear when cycle starts with speed > 0
-            For Gear = VEH.ganganz To 1 Step -1
+            For Gear = GBX.GearCount To 1 Step -1
 
                 'rpm
                 nU = fnU(Vist, Gear, Clutch = tEngClutch.Slipping)
@@ -1729,8 +1717,7 @@ lb_nOK:
                 'Find highest gear with rpm below Upshift-rpm and with enough torque reserve 
                 If nU < nUup And nU > nUdown And 1 - Md / MdMax >= GBX.gs_TorqueResv / 100 Then
                     Exit For
-                ElseIf nU > nUup And Gear < VEH.ganganz Then
-                    MODdata.ModErrors.GSextrapol = ""
+                ElseIf nU > nUup And Gear < GBX.GearCount Then
                     Return Gear + 1
                 End If
 
@@ -1739,7 +1726,7 @@ lb_nOK:
         Else
 
             'Calculate Start Gear 
-            For Gear = VEH.ganganz To 1 Step -1
+            For Gear = GBX.GearCount To 1 Step -1
 
                 'rpm at StartSpeed  [m/s]
                 nU = GBX.gs_StartSpeed * 60.0 * VEH.AchsI * VEH.Igetr(Gear) / (VEH.Dreifen * Math.PI)
@@ -1761,14 +1748,12 @@ lb_nOK:
                 nUup = GBX.fGSnUup(Md)
                 nUdown = GBX.fGSnUdown(Md)
 
-                If nU > nUdown And nU >= VEH.nLeerl And (1 - Md / MdMax >= GBX.gs_TorqueResvStart / 100 Or Md < 0) Then Exit For
+                If nU > nUdown And nU >= ENG.Nidle And (1 - Md / MdMax >= GBX.gs_TorqueResvStart / 100 Or Md < 0) Then Exit For
 
             Next
 
         End If
 
-        MODdata.ModErrors.GSextrapol = ""
-
         Return Gear
 
 
@@ -1806,7 +1791,7 @@ lb_nOK:
         'Rpm
         nU = MODdata.nU(t - 1)
 
-        OutOfRpmRange = (nU >= 1.2 * (VEH.nNenn - VEH.nLeerl) + VEH.nLeerl Or nU < VEH.nLeerl)
+        OutOfRpmRange = (nU >= 1.2 * (ENG.Nrated - ENG.Nidle) + ENG.Nidle Or nU < ENG.Nidle)
 
         'No gear change 3s after last one -except rpm out of range
         If Not OutOfRpmRange AndAlso t - LastGearChange <= GBX.gs_ShiftTime And t > GBX.gs_ShiftTime - 1 Then Return LastGear
@@ -1882,7 +1867,7 @@ lb_nOK:
 
         nU = CSng(Vist * 60.0 * VEH.AchsI * VEH.Igetr(LastGear) / (VEH.Dreifen * Math.PI))
 
-        OutOfRpmRange = ((nU - VEH.nLeerl) / (VEH.nNenn - VEH.nLeerl) >= 1.2 Or nU < VEH.nLeerl)
+        OutOfRpmRange = ((nU - ENG.Nidle) / (ENG.Nrated - ENG.Nidle) >= 1.2 Or nU < ENG.Nidle)
 
         'No gear change 3s after last one -except rpm out of range
         If Not OutOfRpmRange AndAlso t - LastGearChange <= GBX.gs_ShiftTime And t > GBX.gs_ShiftTime - 1 Then Return LastGear
@@ -1932,7 +1917,7 @@ lb_nOK:
                 nU = fnU(Vist, Gear - 1, False)
 
                 'Continue only if rpm (for lower gear) is above idling
-                If nU >= VEH.nLeerl Then
+                If nU >= ENG.Nidle Then
                     Pe = Math.Min(fPeGearMod(Gear - 1, t, Grad), FLD(Gear - 1).Pfull(nU))
                     Pe = Math.Max(Pe, FLD(Gear - 1).Pdrag(nU))
                     Md = Pe * 1000 / (nU * 2 * Math.PI / 60)
@@ -1952,7 +1937,7 @@ lb_nOK:
                         nU = fnU(Vist, Gear - 1, False)
 
                         'Continue only if rpm (for lower gear) is above idling
-                        If nU < VEH.nLeerl Then Exit Do
+                        If nU < ENG.Nidle Then Exit Do
 
                         Pe = Math.Min(fPeGearMod(Gear - 1, t, Grad), FLD(Gear - 1).Pfull(nU))
                         Pe = Math.Max(Pe, FLD(Gear - 1).Pdrag(nU))
@@ -1966,15 +1951,15 @@ lb_nOK:
 
             End If
 
-        ElseIf LastGear < VEH.ganganz And nU > nnUp Then
+        ElseIf LastGear < GBX.GearCount And nU > nnUp Then
 
             'Shift UP
             Gear = LastGear + 1
 
             'Skip Gears
-            If GBX.gs_SkipGears AndAlso Gear < VEH.ganganz Then
+            If GBX.gs_SkipGears AndAlso Gear < GBX.GearCount Then
 
-                If VEH.TracIntrSi > 0.001 Then
+                If GBX.TracIntrSi > 0.001 Then
                     LastPeNorm = fTracIntPower(t, Gear)
                 End If
 
@@ -1991,19 +1976,19 @@ lb_nOK:
                 MdMax = FLD(Gear + 1).Pfull(nU, LastPeNorm) * 1000 / (nU * 2 * Math.PI / 60)
 
                 'Shift up as long as Torque reserve is okay and Gear < Max-Gear and rpm is above DownShift-rpm
-                Do While Gear < VEH.ganganz AndAlso 1 - Md / MdMax >= GBX.gs_TorqueResv / 100 AndAlso nU > nnDown '+ 0.1 * (nnUp - nnDown)
+                Do While Gear < GBX.GearCount AndAlso 1 - Md / MdMax >= GBX.gs_TorqueResv / 100 AndAlso nU > nnDown '+ 0.1 * (nnUp - nnDown)
 
                     'Shift UP
                     Gear += 1
 
                     'Continue only if Gear < Max-Gear
-                    If Gear = VEH.ganganz Then Exit Do
+                    If Gear = GBX.GearCount Then Exit Do
 
                     'Calculate Shift-rpm for higher gear
                     nU = fnU(Vist, Gear + 1, False)
 
                     'Continue only if rpm (for higher gear) is below rated rpm
-                    If nU > VEH.nNenn Then Exit Do
+                    If nU > ENG.Nrated Then Exit Do
 
                     Pe = Math.Min(fPeGearMod(Gear + 1, t, Grad), FLD(Gear + 1).Pfull(nU))
                     Pe = Math.Max(Pe, FLD(Gear + 1).Pdrag(nU))
@@ -2024,13 +2009,13 @@ lb_nOK:
             Gear = LastGear
 
             'Shift UP inside shift polygons
-            If GBX.gs_ShiftInside And LastGear < VEH.ganganz Then
+            If GBX.gs_ShiftInside And LastGear < GBX.GearCount Then
 
                 'Calculate Shift-rpm for higher gear
                 nU = fnU(Vist, Gear + 1, False)
 
                 'Continue only if rpm (for higher gear) is below rated rpm
-                If nU <= VEH.nNenn Then
+                If nU <= ENG.Nrated Then
                     Pe = Math.Min(fPeGearMod(Gear + 1, t, Grad), FLD(Gear + 1).Pfull(nU))
                     Pe = Math.Max(Pe, FLD(Gear + 1).Pdrag(nU))
                     Md = Pe * 1000 / (nU * 2 * Math.PI / 60)
@@ -2041,19 +2026,19 @@ lb_nOK:
                     MdMax = FLD(Gear + 1).Pfull(nU, LastPeNorm) * 1000 / (nU * 2 * Math.PI / 60)
 
                     'Shift up as long as Torque reserve is okay and Gear < Max-Gear and rpm is above DownShift-rpm
-                    Do While Gear < VEH.ganganz AndAlso 1 - Md / MdMax >= GBX.gs_TorqueResv / 100 AndAlso nU > nnDown '+ 0.1 * (nnUp - nnDown)
+                    Do While Gear < GBX.GearCount AndAlso 1 - Md / MdMax >= GBX.gs_TorqueResv / 100 AndAlso nU > nnDown '+ 0.1 * (nnUp - nnDown)
 
                         'Shift UP
                         Gear += 1
 
                         'Continue only if Gear < Max-Gear
-                        If Gear = VEH.ganganz Then Exit Do
+                        If Gear = GBX.GearCount Then Exit Do
 
                         'Calculate Shift-rpm for higher gear
                         nU = fnU(Vist, Gear + 1, False)
 
                         'Continue only if rpm (for higher gear) is below rated rpm
-                        If nU > VEH.nNenn Then Exit Do
+                        If nU > ENG.Nrated Then Exit Do
 
                         Pe = Math.Min(fPeGearMod(Gear + 1, t, Grad), FLD(Gear + 1).Pfull(nU))
                         Pe = Math.Max(Pe, FLD(Gear + 1).Pdrag(nU))
@@ -2082,12 +2067,6 @@ lb10:
         Pe = Math.Max(Pe, FLD(Gear).Pdrag(nU))
         'Current torque demand
         Md = Pe * 1000 / (nU * 2 * Math.PI / 60)
-        'Clear old errors
-        MODdata.ModErrors.GSextrapol = ""
-        'Check for errors
-        GBX.fGSnUdown(Md)
-        GBX.fGSnUup(Md)
-
 
         'If GearCorrection is OFF then return here
         If Not DEV.GearCorrection Then Return Gear
@@ -2171,7 +2150,7 @@ lb10:
         Dim g As Int16
         Dim g0 As Integer
         DifMin = 9999
-        For g = 1 To VEH.ganganz
+        For g = 1 To GBX.GearCount
             Dif = Math.Abs(VEH.Igetr(g) - nU * (VEH.Dreifen * Math.PI) / (V * 60.0 * VEH.AchsI))
             If Dif <= DifMin Then
                 g0 = g
@@ -2197,9 +2176,9 @@ lb10:
 
         If Nvorg Then
             'Drehzahlvorgabe
-            PaM = (VEH.I_mot * MODdata.dnUvorg(t) * 0.01096 * MODdata.nUvorg(t)) * 0.001
+            PaM = (ENG.I_mot * MODdata.dnUvorg(t) * 0.01096 * MODdata.nUvorg(t)) * 0.001
         Else
-            PaM = ((VEH.I_mot * (VEH.AchsI * VEH.Igetr(Gear) / (0.5 * VEH.Dreifen)) ^ 2) * a * V) * 0.001
+            PaM = ((ENG.I_mot * (VEH.AchsI * VEH.Igetr(Gear) / (0.5 * VEH.Dreifen)) ^ 2) * a * V) * 0.001
         End If
         If Clutch = tEngClutch.Closed Then
             Return (PvD + fPlossGB(PvD, V, Gear, True) + fPlossDiff(PvD, V, True) + fPaG(V, a) + fPaux(t, nU) + PaM)
@@ -2220,17 +2199,17 @@ lb10:
 #Region "Drehzahl"
 
     Private Function fnn(ByVal V As Single, ByVal Gear As Integer, ByVal ClutchSlip As Boolean) As Single
-        Return (fnU(V, Gear, ClutchSlip) - VEH.nLeerl) / (VEH.nNenn - VEH.nLeerl)
+        Return (fnU(V, Gear, ClutchSlip) - ENG.Nidle) / (ENG.Nrated - ENG.Nidle)
     End Function
 
     Private Function fnU(ByVal V As Single, ByVal Gear As Integer, ByVal ClutchSlip As Boolean) As Single
         Dim akn As Single
         Dim U As Single
         U = CSng(V * 60.0 * VEH.AchsI * VEH.Igetr(Gear) / (VEH.Dreifen * Math.PI))
-        If U < VEH.nLeerl Then U = VEH.nLeerl
+        If U < ENG.Nidle Then U = ENG.Nidle
         If ClutchSlip Then
-            akn = Kuppln_norm / ((VEH.nLeerl + Kuppln_norm * (VEH.nNenn - VEH.nLeerl)) / VEH.nNenn)
-            U = (akn * U / VEH.nNenn) * (VEH.nNenn - VEH.nLeerl) + VEH.nLeerl
+            akn = Kuppln_norm / ((ENG.Nidle + Kuppln_norm * (ENG.Nrated - ENG.Nidle)) / ENG.Nrated)
+            U = (akn * U / ENG.Nrated) * (ENG.Nrated - ENG.Nidle) + ENG.Nidle
         End If
         Return U
     End Function
@@ -2291,17 +2270,17 @@ lb10:
 
     Private Function fPaMot(ByVal t As Integer, ByVal Gear As Integer) As Single
         If Nvorg Then
-            Return (VEH.I_mot * MODdata.dnUvorg(t) * 0.01096 * MODdata.nUvorg(t)) * 0.001
+            Return (ENG.I_mot * MODdata.dnUvorg(t) * 0.01096 * MODdata.nUvorg(t)) * 0.001
         Else
-            Return ((VEH.I_mot * (VEH.AchsI * VEH.Igetr(Gear) / (0.5 * VEH.Dreifen)) ^ 2) * aist * Vist) * 0.001
+            Return ((ENG.I_mot * (VEH.AchsI * VEH.Igetr(Gear) / (0.5 * VEH.Dreifen)) ^ 2) * aist * Vist) * 0.001
         End If
     End Function
 
     Private Function fPaMot(ByVal t As Integer, ByVal Gear As Integer, ByVal v As Single, ByVal a As Single) As Single
         If Nvorg Then
-            Return (VEH.I_mot * MODdata.dnUvorg(t) * 0.01096 * MODdata.nUvorg(t)) * 0.001
+            Return (ENG.I_mot * MODdata.dnUvorg(t) * 0.01096 * MODdata.nUvorg(t)) * 0.001
         Else
-            Return ((VEH.I_mot * (VEH.AchsI * VEH.Igetr(Gear) / (0.5 * VEH.Dreifen)) ^ 2) * a * v) * 0.001
+            Return ((ENG.I_mot * (VEH.AchsI * VEH.Igetr(Gear) / (0.5 * VEH.Dreifen)) ^ 2) * a * v) * 0.001
         End If
     End Function
 
@@ -2312,7 +2291,7 @@ lb10:
 
     '----------------Ancillaries(Nebenaggregate) ----------------
     Private Function fPaux(ByVal t As Integer, ByVal nU As Single) As Single
-        Return CSng(MODdata.Vh.Padd(t) + VEH.PauxSum(t, nU))
+        Return CSng(MODdata.Vh.Padd(t) + VEC.PauxSum(t, nU))
     End Function
 
     '-------------------Transmission(Getriebe)-------------------
@@ -2373,7 +2352,7 @@ lb10:
     '----------------Gearbox inertia ----------------
     Private Function fPaG(ByVal V As Single, ByVal a As Single) As Single
         Dim Mred As Single
-        Mred = CSng(VEH.I_Getriebe * (VEH.AchsI / (0.5 * VEH.Dreifen)) ^ 2)
+        Mred = CSng(GBX.I_Getriebe * (VEH.AchsI / (0.5 * VEH.Dreifen)) ^ 2)
         Return CSng((Mred * a * V) * 0.001)
     End Function
 
diff --git a/VECTO/MODcalc/cVh.vb b/VECTO/MODcalc/cVh.vb
index af658c6f023f82513a17fda6505a85a136a511ef..ab667bbfcb9ac3c8de15f056fa8e792143df66e1 100644
--- a/VECTO/MODcalc/cVh.vb
+++ b/VECTO/MODcalc/cVh.vb
@@ -84,7 +84,7 @@ Public Class cVh
             lV0.Add(DRI.Values(tDriComp.V)(MODdata.tDim + 1))
             If DRI.Scycle Then
                 For s = 0 To MODdata.tDim + 1
-                    lV0ogl.Add(CSng(DRI.VoglS(s)) / 3.6)
+                    lV0ogl.Add(CSng(DRI.VoglS(s)))
                 Next
             Else
                 lV0ogl.Add(DRI.Values(tDriComp.V)(MODdata.tDim + 1))
@@ -201,18 +201,6 @@ Public Class cVh
 
         End If
 
-        'Altitude / distance
-        L = DRI.Values(tDriComp.Alt)
-        lAlt0.Add(0)
-        ls0.Add(lV0(0))
-        For s = 1 To MODdata.tDim
-            If lV0(s) > 0 Then
-                ls0.Add(ls0(s - 1) + lV0(s))
-                lAlt0.Add(L(s))
-            End If
-        Next
-        iAltDim = ls0.Count - 1
-
         'Gear - not Averaged, rather Gear(t) = DRI.Gear(t)
         If DRI.Gvorg Then
             L = DRI.Values(tDriComp.Gears)
@@ -292,11 +280,11 @@ Public Class cVh
         v0plus = lV0(t + 1)
 
         v = (v0plus + lV0(t)) / 2
-        a0 = GEN.aDesMax(v)
+        a0 = VEC.aDesMax(v)
 
         v0plus = lV0(t) + a
         v = (v0plus + lV0(t)) / 2
-        a = GEN.aDesMax(v)
+        a = VEC.aDesMax(v)
 
         Do While Math.Abs(a - a0) > 0.0001
 
@@ -304,7 +292,7 @@ Public Class cVh
 
             v0plus = lV0(t) + a
             v = (v0plus + lV0(t)) / 2
-            a = GEN.aDesMax(v)
+            a = VEC.aDesMax(v)
 
         Loop
 
@@ -327,11 +315,11 @@ Public Class cVh
         v0 = lV0(t)
 
         v = (lV0(t + 1) + v0) / 2
-        a0 = GEN.aDesMin(v)
+        a0 = VEC.aDesMin(v)
 
         v0 = lV0(t + 1) - a
         v = (lV0(t + 1) + v0) / 2
-        a = GEN.aDesMin(v)
+        a = VEC.aDesMin(v)
 
         Do While Math.Abs(a - a0) > 0.0001
 
@@ -339,7 +327,7 @@ Public Class cVh
 
             v0 = lV0(t + 1) - a
             v = (lV0(t + 1) + v0) / 2
-            a = GEN.aDesMin(v)
+            a = VEC.aDesMin(v)
 
         Loop
 
diff --git a/VECTO/M_Lese.vb b/VECTO/M_Lese.vb
deleted file mode 100644
index 4a62f840d1018f084ceda5e8d5f311c4e80c2812..0000000000000000000000000000000000000000
--- a/VECTO/M_Lese.vb
+++ /dev/null
@@ -1,235 +0,0 @@
-Imports System.Collections.Generic
-
-Module M_Lese
-
-    Public Function LESE() As Boolean
-        Dim AuxEntry As cVEH.cAuxEntry
-        Dim AuxKV As KeyValuePair(Of String, cVEH.cAuxEntry)
-        Dim i As Integer
-        Dim j As Integer
-        Dim sb As cSubPath
-        Dim fldgear As Dictionary(Of Integer, String)
-        Dim fldgFromTo As String()
-        Dim str As String
-
-        Dim MsgSrc As String
-
-        MsgSrc = "Main/ReadInp"
-
-        '-----------------------------    ~GEN~    -----------------------------
-        'Read GEN
-        If UCase(fEXT(GenFile)) <> ".VECTO" Then
-            WorkerMsg(tMsgID.Err, "Only .VECTO files are supported in this mode", MsgSrc)
-            Return False
-        End If
-
-        GEN = New cGEN
-        GEN.FilePath = GenFile
-
-        Try
-            If Not GEN.ReadFile() Then
-                WorkerMsg(tMsgID.Err, "Cannot read .gen file (" & GenFile & ")", MsgSrc)
-                Return False
-            End If
-        Catch ex As Exception
-            WorkerMsg(tMsgID.Err, "File read error! (" & GenFile & ")", MsgSrc, GenFile)
-            Return False
-        End Try
-
-        If GEN.NoJSON Then WorkerMsg(tMsgID.Warn, "VECTO file format is outdated! CLICK HERE to convert to current format!", MsgSrc, "<GUI>" & GenFile)
-
-
-        'VECTO: Defaultwerte für Parameter die nicht mehr in der .GEN/.VECTO sind werden beim Einlesen über SetDefault belegt. |@@| VECTO: Default values for the parameters are no longer in GEN/.VECTO but are allocated when Read about SetDefault.
-
-
-        CycleFiles.Clear()
-        For Each sb In GEN.CycleFiles
-            CycleFiles.Add(sb.FullPath)
-        Next
-
-        'Error message in init()
-        If Not GEN.Init Then Return False
-
-
-        '-----------------------------    ~VEH~    -----------------------------
-        VEH = New cVEH
-
-        'Read vehicle specifications
-        If Not GEN.EngOnly Then
-            VEH.FilePath = GEN.PathVEH
-            Try
-                If Not VEH.ReadFile Then Return False
-            Catch ex As Exception
-                WorkerMsg(tMsgID.Err, "File read error! (" & GEN.PathVEH & ")", MsgSrc, GEN.PathVEH)
-                Return False
-            End Try
-
-        End If
-
-        If VEH.NoJSON Then WorkerMsg(tMsgID.Warn, "Vehicle file format is outdated! CLICK HERE to convert to current format!", MsgSrc, "<GUI>" & GEN.PathVEH)
-
-
-        '-----------------------------    ~ENG~    -----------------------------
-        ENG = New cENG
-        ENG.FilePath = GEN.PathENG
-        Try
-            If Not ENG.ReadFile Then Return False
-        Catch ex As Exception
-            WorkerMsg(tMsgID.Err, "File read error! (" & GEN.PathENG & ")", MsgSrc, GEN.PathENG)
-            Return False
-        End Try
-
-        If ENG.NoJSON Then WorkerMsg(tMsgID.Warn, "Engine file format is outdated! CLICK HERE to convert to current format!", MsgSrc, "<GUI>" & GEN.PathENG)
-
-
-        '-----------------------------    ~GBX~    -----------------------------
-        GBX = New cGBX
-
-        If Not GEN.EngOnly Then
-            GBX.FilePath = GEN.PathGBX
-            Try
-                If Not GBX.ReadFile Then Return False
-            Catch ex As Exception
-                WorkerMsg(tMsgID.Err, "File read error! (" & GEN.PathGBX & ")", MsgSrc, GEN.PathGBX)
-                Return False
-            End Try
-        End If
-
-        If GBX.NoJSON Then WorkerMsg(tMsgID.Warn, "Gearbox file format is outdated! CLICK HERE to convert to current format!", MsgSrc, "<GUI>" & GEN.PathGBX)
-
-
-        '-----------------------------    VECTO    -----------------------------
-        'GEN => VEH
-        VEH.AuxDef = GEN.AuxDef
-        If VEH.AuxDef Then
-            For Each AuxKV In GEN.AuxPaths
-                AuxEntry = New cVEH.cAuxEntry
-                AuxEntry.Type = AuxKV.Value.Type
-                AuxEntry.Path.Init(fPATH(GEN.FilePath), AuxKV.Value.Path.OriginalPath)
-                VEH.AuxPaths.Add(UCase(Trim(AuxKV.Key)), AuxEntry)
-            Next
-        End If
-
-        'ENG => VEH
-        VEH.nLeerl = ENG.nleerl
-        VEH.I_mot = ENG.I_mot
-
-        'GBX => VEH
-        If GEN.EngOnly Then
-            VEH.ganganz = 0
-        Else
-            VEH.ganganz = GBX.GetrI.Count - 1
-        End If
-
-        For i = 0 To GBX.GetrI.Count - 1
-            VEH.siGetrI.Add(GBX.GetrI(i))
-            VEH.GetrMap.Add(New cSubPath)
-            If IsNumeric(GBX.GetrMap(i, True)) Then
-                VEH.GetrEffDef.Add(True)
-                VEH.GetrEff.Add(CSng(GBX.GetrMap(i, True)))
-            Else
-                VEH.GetrEffDef.Add(False)
-                VEH.GetrEff.Add(0)
-                VEH.GetrMap(i).Init(fPATH(GEN.PathGBX), GBX.GetrMap(i, True))
-            End If
-        Next
-        VEH.I_Getriebe = GBX.I_Getriebe
-        VEH.TracIntrSi = GBX.TracIntrSi
-
-        '-----------------------------    ~FLD~    -----------------------------
-        '   FLD muss jetzt vor MAP/MEP eingelesen werden falls dort <DRAG> Einträge sind! |@@| if there are <DRAG> entries, then read FLD before MAP/MEP!
-
-        FLD = New List(Of cFLD)
-
-        If ENG.FLDgears.Count = 0 Then
-            WorkerMsg(tMsgID.Err, "No .vfld file defined in Engine file!", MsgSrc, "<GUI>" & GEN.PathENG)
-            Return False
-        End If
-
-        fldgear = New Dictionary(Of Integer, String)
-
-        Try
-            j = -1
-            For Each str In ENG.FLDgears
-
-                j += 1
-                If str.Contains("-") Then
-                    fldgFromTo = str.Replace(" ", "").Split("-")
-                Else
-                    fldgFromTo = New String() {str, str}
-                End If
-
-                For i = CInt(fldgFromTo(0)) To CInt(fldgFromTo(1))
-
-                    If i > VEH.ganganz Then Exit For
-
-                    If i < 0 Or i > 99 Then
-                        WorkerMsg(tMsgID.Err, "Cannot assign .vfld file to gear " & i & "!", MsgSrc, "<GUI>" & GEN.PathENG)
-                        Return False
-                    End If
-
-                    If fldgear.ContainsKey(i) Then
-                        WorkerMsg(tMsgID.Err, "Multiple .vfld files are assigned to gear " & i & "!", MsgSrc, "<GUI>" & GEN.PathENG)
-                        Return False
-                    End If
-
-                    fldgear.Add(i, ENG.PathFLD(j))
-
-                Next
-
-            Next
-        Catch ex As Exception
-            WorkerMsg(tMsgID.Err, "Failed to process engine file '" & GEN.PathENG & "'!", MsgSrc)
-            Return False
-        End Try
-
-       
-        For i = 0 To VEH.ganganz
-
-            If Not fldgear.ContainsKey(i) Then
-                WorkerMsg(tMsgID.Err, "No .vfld file assigned to gear " & i & "!", MsgSrc, "<GUI>" & GEN.PathENG)
-                Return False
-            End If
-
-            FLD.Add(New cFLD)
-            FLD(i).FilePath = fldgear(i)
-
-            Try
-                If Not FLD(i).ReadFile Then Return False 'Fehlermeldung hier nicht notwendig weil schon von in ReadFile
-            Catch ex As Exception
-                WorkerMsg(tMsgID.Err, "File read error! (" & fldgear(i) & ")", MsgSrc, fldgear(i))
-                Return False
-            End Try
-
-        Next
-
-        VEH.nRatedInit()
-
-     
-
-        '-----------------------------    ~MAP~    -----------------------------
-        '    Map: Columns 1 and 2 are the x-and y-coordinates (Pe, n)
-        '    the rest are Measurement-values
-        '    Emissions and Consumption in (g/(h*kW_NominalPower) at HDV(SNF)
-        '    Emissions (g/h) and consumption in (g/(h*kW_NominalPower) in cars(PKW) and LCV(LNF)
-     
-        'Kennfeld read
-        MAP = New cMAP
-        MAP.FilePath = ENG.PathMAP
-
-        Try
-            If Not MAP.ReadFile Then Return False 'Fehlermeldung hier nicht notwendig weil schon von in ReadFile
-        Catch ex As Exception
-            WorkerMsg(tMsgID.Err, "File read error! (" & ENG.PathMAP & ")", MsgSrc, ENG.PathMAP)
-            Return False
-        End Try
-
-        'Normalize
-        MAP.Norm()
-
-
-        Return True
-
-    End Function
-
-End Module
diff --git a/VECTO/M_MAIN.vb b/VECTO/M_MAIN.vb
index 2e5be584b0fe5cdbde85c787ab2e5327536ed693..7f4c706cff405fe6b8fef56719caf1698b7a01f7 100644
--- a/VECTO/M_MAIN.vb
+++ b/VECTO/M_MAIN.vb
@@ -1,5 +1,9 @@
 Imports System.Collections.Generic
 
+''' <summary>
+''' Main calculation routines.
+''' </summary>
+''' <remarks></remarks>
 Module M_MAIN
 
     Public PHEMmode As tPHEMmode
@@ -18,23 +22,15 @@ Module M_MAIN
     Private jsubcycle As Integer
     Private jsubcyclecount As Integer
 
-    Public FCerror As Boolean
-
     Private SigFile As String
 
-    Friend Function NrOfRunStr() As String
-        If PHEMmode = tPHEMmode.ModeSTANDARD Then
-            'Return CStr(jgen * (CyclesDim + 1) + jzkl + 1) & "-" & CStr(jsubcycle)
-            Return CStr(jgen * (CyclesDim + 1) + jzkl + 1) & "(" & CStr(jsubcycle) & ")"
-        Else
-            Return CStr(jgen * (CyclesDim + 1) + jzkl + 1)
-        End If
-    End Function
-
+    ''' <summary>
+    ''' Main calculation routine. Launched by PHEMworker via Mainform's Start button or command line
+    ''' </summary>
+    ''' <returns></returns>
+    ''' <remarks></remarks>
     Public Function VECTO() As tCalcResult
 
-        'Main program for all modes
-
         Dim MsgStrBuilder As System.Text.StringBuilder
 
         Dim i As Integer
@@ -43,6 +39,9 @@ Module M_MAIN
         Dim CyclAbrtedByErr As Boolean
         Dim MsgOut As Boolean
         Dim MsgSrc As String
+        Dim loading As tLoading
+        Dim LoadList As New List(Of tLoading)
+
 
 
         MsgSrc = "Main"
@@ -116,15 +115,23 @@ lbSkip0:
 
         'ERG-class initialization
         WorkerMsg(tMsgID.Normal, "Analyzing input files", MsgSrc)
-        ERG = New cERG
         VSUM = New cVSUM
-        If Not ERG.Init(JobFileList(0)) Then GoTo lbErrBefore
+        VRES = New cVRES
+        If Not VSUM.Init(JobFileList(0)) Then GoTo lbErrBefore
 
-        SigFile = Left(ERG.ErgFile, ERG.ErgFile.Length - 5) & ".vsig"
+        SigFile = Left(VSUM.VSUMfile, VSUM.VSUMfile.Length - 5) & ".vsig"
 
         'Warning on invalid/unrealistic settings
         If Cfg.AirDensity > 2 Then WorkerMsg(tMsgID.Err, "Air Density = " & Cfg.AirDensity & " ?!", MsgSrc)
 
+        If Declaration.Active Then
+            LoadList.Add(tLoading.EmptyLoaded)
+            LoadList.Add(tLoading.RefLoaded)
+            LoadList.Add(tLoading.FullLoaded)
+        Else
+            LoadList.Add(tLoading.UserDefLoaded)
+        End If
+
         'Progbar-Init
         WorkerProgInit()
 
@@ -138,11 +145,14 @@ lbSkip0:
 
             jzkl = 0    '<= Damit NrOfRun stimmt
 
+
             JobFile = fFileRepl(JobFileList(jgen))
 
             GenFile = JobFile
 
-            WorkerJobStatus(jgen, "running...", tJobStatus.Running)
+            WorkerMsg(tMsgID.NewJob, "Job: " & (jgen * (CyclesDim + 1) + jzkl + 1) & " / " & ((FilesDim + 1) * (CyclesDim + 1)) & " | " & fFILE(JobFile, True), MsgSrc)
+            WorkerStatus("Current Job: " & (jgen * (CyclesDim + 1) + jzkl + 1) & " / " & ((FilesDim + 1) * (CyclesDim + 1)) & " | " & fFILE(JobFile, True))
+            WorkerJobStatus(jgen, "initialising... ", tJobStatus.Running)
 
             JobAbortedByErr = False
             MSGwarn = 0
@@ -155,13 +165,46 @@ lbSkip0:
             CurrentCycleFile = ""
 
             'Reading the input files
-            '   BATCH: Cycle from DRI list
-            '   ADVANCE: Cycle is not read
-            If Not LESE() Then
+            WorkerMsg(tMsgID.Normal, "Reading input files", MsgSrc)
+            If Not ReadFiles() Then
                 JobAbortedByErr = True
                 GoTo lbNextJob
             End If
 
+            'WHTC Correction
+            If Declaration.Active Then
+
+                WorkerMsg(tMsgID.Normal, "WHTC Correction", MsgSrc)
+
+                VEC.EngOnly = True
+
+                MODdata.Init()
+
+                If Not Declaration.WHTCinit Then
+                    JobAbortedByErr = True
+                    GoTo lbNextJob
+                End If
+
+                MODdata.CycleInit()
+
+                If Not MODdata.Px.Eng_Calc() Then
+                    JobAbortedByErr = True
+                    GoTo lbNextJob
+                End If
+
+                MODdata.FCcalc(False)
+                If MODdata.FCerror Then
+                    WorkerMsg(tMsgID.Err, "WHTC FC calculcation failed!", MsgSrc)
+                    JobAbortedByErr = True
+                    GoTo lbNextJob
+                End If
+
+                Declaration.WHTCcorrCalc()
+
+                VEC.EngOnly = False
+
+            End If
+
             'BATCH: Create Output-sub-folder
             If (PHEMmode = tPHEMmode.ModeBATCH) And Cfg.ModOut And Cfg.BATCHoutSubD Then
                 Select Case UCase(Cfg.BATCHoutpath)
@@ -198,13 +241,13 @@ lbSkip0:
                     ProgBarCtrl.ProgOverallStartInt = 100 * (jgen * (CyclesDim + 1) + jzkl) / ((FilesDim + 1) * (CyclesDim + 1))
                     ProgBarCtrl.PgroOverallEndInt = 100 * (jgen * (CyclesDim + 1) + jzkl + 1) / ((FilesDim + 1) * (CyclesDim + 1))
 
-                    'BATCH mode: Cycle from GEN-file but not from DRI list
+                    'BATCH mode: Cycles from DRI list
                     CycleFiles.Clear()
                     CycleFiles.Add(fFileRepl(JobCycleList(jzkl)))
 
                     'Status
-                    WorkerMsg(tMsgID.NewJob, "Job: " & (NrOfRunStr()) & " / " & ((FilesDim + 1) * (CyclesDim + 1)) & " | " & fFILE(JobFile, True) & " | " & fFILE(CycleFiles(0), True), MsgSrc)
-                    WorkerStatus("Current Job: " & (NrOfRunStr()) & " / " & ((FilesDim + 1) * (CyclesDim + 1)) & " | " & fFILE(JobFile, True) & " | " & fFILE(CycleFiles(0), True))
+                    WorkerMsg(tMsgID.NewJob, "Cycle: " & (jgen * (CyclesDim + 1) + jzkl + 1) & " / " & ((FilesDim + 1) * (CyclesDim + 1)) & " | " & fFILE(JobFile, True) & " | " & fFILE(CycleFiles(0), True), MsgSrc)
+                    WorkerStatus("Current Job: " & (jgen * (CyclesDim + 1) + jzkl + 1) & " / " & ((FilesDim + 1) * (CyclesDim + 1)) & " | " & fFILE(JobFile, True) & " | " & fFILE(CycleFiles(0), True))
                     WorkerJobStatus(jgen, "running... " & jzkl + 1 & "/" & (CyclesDim + 1), tJobStatus.Running)
 
                     'Output name definition
@@ -241,6 +284,13 @@ lbSkip0:
 
                     ProgBarCtrl.ProgJobInt = 0
 
+                    If Declaration.Active Then
+                        If Not Declaration.CalcInitCycle(jsubcycle - 1) Then
+                            JobAbortedByErr = True
+                            GoTo lbNextJob
+                        End If
+                    End If
+
                     If PHEMmode = tPHEMmode.ModeSTANDARD Then
 
                         'ProgBar
@@ -249,210 +299,213 @@ lbSkip0:
 
                         MODdata.ModOutpName = fFileWoExt(JobFile) & "_" & fFILE(CurrentCycleFile, False)
 
-                        WorkerMsg(tMsgID.NewJob, "Job: " & NrOfRunStr() & " / " & ((FilesDim + 1) * (CyclesDim + 1)) & " | " & fFILE(JobFile, True) & " | " & fFILE(CurrentCycleFile, True), MsgSrc)
-                        WorkerStatus("Current Job: " & NrOfRunStr() & " / " & ((FilesDim + 1) * (CyclesDim + 1)) & " | " & fFILE(JobFile, True) & " | " & fFILE(CurrentCycleFile, True))
+                        WorkerMsg(tMsgID.NewJob, "Cycle: " & jsubcycle & " / " & jsubcyclecount & " | " & fFILE(CurrentCycleFile, True), MsgSrc)
+                        WorkerStatus("Current Job: " & (jgen * (CyclesDim + 1) + jzkl + 1) & " / " & (FilesDim + 1) & " | " & fFILE(JobFile, True) & " | " & fFILE(CurrentCycleFile, True))
 
                         WorkerJobStatus(jgen, "running... " & jsubcycle & "/" & jsubcyclecount, tJobStatus.Running)
 
                     End If
 
-                    VSUM.ResetMe()
-                    VSUM.FilePath = MODdata.ModOutpName & ".vres"
+                    VRES.ResetMe()
+                    VRES.FilePath = MODdata.ModOutpName
 
 
-                    'TODO: Loading-loop
                     '***************************** VECTO-loading-loop *********************************
                     '**************************************************************************************
 
-                    'Clean up
-                    MODdata.Init()
-
-                    FCerror = False
-
-                    'Read cycle
-                    DRI = New cDRI
-                    DRI.FilePath = CurrentCycleFile
-
-                    If Not DRI.ReadFile Then
-                        CyclAbrtedByErr = True
-                        GoTo lbAusg
-                    End If
+                    For Each loading In LoadList
 
-                    'Grad to Alt
-                    DRI.GradToAlt()
+                        If Declaration.Active Then
 
-                    'Convert v(s) into v(t) (optional)
-                    If DRI.Scycle Then
+                            'Results filename with loading
+                            MODdata.ModOutpName = fFileWoExt(JobFile) & "_" & fFILE(CurrentCycleFile, False) & "_" & ConvLoading(loading)
 
-                        MODdata.Vh.SetAlt()
 
+                            WorkerMsg(tMsgID.NewJob, "Loading: " & ConvLoading(loading), MsgSrc)
 
-                        If MsgOut Then WorkerMsg(tMsgID.Normal, "Converting cycle (v(s) => v(t))", MsgSrc)
+                            If Not Declaration.CalcInitLoad(loading) Then
+                                JobAbortedByErr = True
+                                GoTo lbNextJob
+                            End If
 
-                        If Not DRI.ConvStoT() Then
-                            CyclAbrtedByErr = True
-                            GoTo lbAusg
                         End If
-                    End If
 
-                    'If first time step is Zero then duplicate first values to start cycle with vehicle standing.
-                    If DRI.Vvorg AndAlso DRI.tDim > 1 AndAlso DRI.Values(tDriComp.V)(0) < 0.0001 AndAlso DRI.Values(tDriComp.V)(1) >= 0.0001 Then
-                        DRI.FirstZero()
-                    End If
+                        'Clean up
+                        MODdata.Init()
 
-                    'Convert to 1Hz (optional) - does not apply to v(s) cycles because timestep is missing
-                    If DRI.Tvorg Then
-                        If MsgOut Then WorkerMsg(tMsgID.Normal, "Converting cycle to 1Hz", MsgSrc)
-                        If Not DRI.ConvTo1Hz() Then
-                            'Error-notification in DRI.Convert()
+                        'Read cycle
+                        DRI = New cDRI
+                        DRI.FilePath = CurrentCycleFile
+                        If Not DRI.ReadFile Then
                             CyclAbrtedByErr = True
                             GoTo lbAusg
                         End If
-                    End If
 
-                    'De-normalize
-                    DRI.DeNorm()
+                        'Grad to Alt
+                        DRI.GradToAlt()
 
+                        'Convert v(s) into v(t) (optional)
+                        If DRI.Scycle Then
 
+                            MODdata.Vh.SetAlt()
 
-                    '----------------------------------------------------------------------------
-                    '----------------------------------------------------------------------------
 
-                    'Initialize Cycle-specs (Speed, Accel, ...)
-                    MODdata.CycleInit()
+                            If MsgOut Then WorkerMsg(tMsgID.Normal, "Converting cycle (v(s) => v(t))", MsgSrc)
 
-                    If GEN.EngOnly Then
+                            If Not DRI.ConvStoT() Then
+                                CyclAbrtedByErr = True
+                                GoTo lbAusg
+                            End If
+                        End If
 
-                        If MsgOut Then WorkerMsg(tMsgID.Normal, "Engine Only Calc", MsgSrc)
+                        'If first time step is Zero then duplicate first values to start cycle with vehicle standing.
+                        If DRI.Vvorg AndAlso DRI.tDim > 1 AndAlso DRI.Values(tDriComp.V)(0) < 0.0001 AndAlso DRI.Values(tDriComp.V)(1) >= 0.0001 Then
+                            DRI.FirstZero()
+                        End If
 
-                        'Rechne .npi-Leistung in Pe und P_clutch um |@@| Expect Npi-Power into Pe and P_clutch
-                        If Not MODdata.Px.Eng_Calc() Then
-                            CyclAbrtedByErr = True
-                            GoTo lbAusg
+                        'Convert to 1Hz (optional) - does not apply to v(s) cycles because timestep is missing
+                        If DRI.Tvorg Then
+                            If MsgOut Then WorkerMsg(tMsgID.Normal, "Converting cycle to 1Hz", MsgSrc)
+                            If Not DRI.ConvTo1Hz() Then
+                                'Error-notification in DRI.Convert()
+                                CyclAbrtedByErr = True
+                                GoTo lbAusg
+                            End If
                         End If
 
-                    Else
 
-                        'CAUTION: VehmodeInit() requires information from GEN and DRI!
-                        If Not VEH.VehmodeInit() Then
-                            'Error-notification within VehmodeInit()
-                            JobAbortedByErr = True
-                            GoTo lbNextJob
-                        End If
+                        '----------------------------------------------------------------------------
+                        '----------------------------------------------------------------------------
 
-                        If Not GBX.GSinit Then
-                            'Error-notification within GSinit()
-                            JobAbortedByErr = True
-                            GoTo lbNextJob
-                        End If
+                        'Initialize Cycle-specs (Speed, Accel, ...)
+                        MODdata.CycleInit()
 
-                        If GBX.TCon Then
-                            If Not GBX.TCinit Then
-                                'Error-notification within TCinit()
-                                JobAbortedByErr = True
-                                GoTo lbNextJob
-                            End If
-                        End If
+                        If VEC.EngOnly Then
 
-                        If DEV.PreRun Then
+                            If MsgOut Then WorkerMsg(tMsgID.Normal, "Engine Only Calc", MsgSrc)
 
-                            If MsgOut Then WorkerMsg(tMsgID.Normal, "Driving Cycle Preprocessing", MsgSrc)
-                            If Not MODdata.Px.PreRun Then
+                            'Rechne .npi-Leistung in Pe und P_clutch um |@@| Expect Npi-Power into Pe and P_clutch
+                            If Not MODdata.Px.Eng_Calc() Then
                                 CyclAbrtedByErr = True
                                 GoTo lbAusg
                             End If
 
-                            If PHEMworker.CancellationPending Then GoTo lbAbort
+                        Else
 
-                        End If
+                            'Init auxiliaries
+                            If Not VEC.AuxInit() Then
+                                'Error-notification within AuxInit()
+                                JobAbortedByErr = True
+                                GoTo lbNextJob
+                            End If
 
-                        If MsgOut Then WorkerMsg(tMsgID.Normal, "Vehicle Calc", MsgSrc)
+                            'CAUTION: VehmodeInit() requires information from VECTO and DRI!
+                            If Not VEH.VehmodeInit() Then
+                                'Error-notification within VehmodeInit()
+                                JobAbortedByErr = True
+                                GoTo lbNextJob
+                            End If
 
-                        MODdata.Vh.DistCorrInit()
+                            If Not GBX.GSinit Then
+                                'Error-notification within GSinit()
+                                JobAbortedByErr = True
+                                GoTo lbNextJob
+                            End If
 
-                        If Not MODdata.Px.Calc() Then
-                            CyclAbrtedByErr = True
-                            GoTo lbAusg
-                        End If
+                            If GBX.TCon Then
+                                If Not GBX.TCinit Then
+                                    'Error-notification within TCinit()
+                                    JobAbortedByErr = True
+                                    GoTo lbNextJob
+                                End If
+                            End If
 
+                            If DEV.PreRun Then
 
-                        If PHEMworker.CancellationPending Then GoTo lbAbort
+                                If MsgOut Then WorkerMsg(tMsgID.Normal, "Driving Cycle Preprocessing", MsgSrc)
+                                If Not MODdata.Px.PreRun Then
+                                    CyclAbrtedByErr = True
+                                    GoTo lbAusg
+                                End If
 
-                        'Calculate CycleKin (for erg/sum, etc.)
-                        MODdata.CylceKin.Calc()
+                                If PHEMworker.CancellationPending Then GoTo lbAbort
 
-                    End If
-                    '----------------------------------------------------------------------------
-                    '----------------------------------------------------------------------------
+                            End If
 
+                            If MsgOut Then WorkerMsg(tMsgID.Normal, "Vehicle Calc", MsgSrc)
 
-                    If MsgOut Then WorkerMsg(tMsgID.Normal, "FC Interpolation", MsgSrc)
+                            MODdata.Vh.DistCorrInit()
 
-                    'Calculate Raw emissions
-                    If Not MODdata.Em.Raw_Calc() Then
-                        'If Not DEV.IgnoreFCextrapol Then
-                        '    CyclAbrtedByErr = True
-                        '    WorkerMsg(tMsgID.Normal, "Calculation aborted!", MsgSrc)
-                        '    GoTo lbAusg
-                        'End If
+                            If Not MODdata.Px.Calc() Then
+                                CyclAbrtedByErr = True
+                                GoTo lbAusg
+                            End If
 
-                        FCerror = True
 
-                    End If
+                            If PHEMworker.CancellationPending Then GoTo lbAbort
 
-                    'Totals / Averages form
-                    MODdata.Em.SumCalc()
+                            'Calculate CycleKin (for erg/sum, etc.)
+                            MODdata.CylceKin.Calc()
 
+                        End If
+                        '----------------------------------------------------------------------------
+                        '----------------------------------------------------------------------------
 
-                    If PHEMworker.CancellationPending Then GoTo lbAbort
 
-                    '*** second-by-second output ***
-                    If Cfg.ModOut Then
-                        If MsgOut Then WorkerMsg(tMsgID.Normal, "Writing modal output", MsgSrc)
-                        If Not MODdata.Output() Then
-                            CyclAbrtedByErr = True
-                            GoTo lbAusg
-                        End If
+                        If MsgOut Then WorkerMsg(tMsgID.Normal, "FC Interpolation", MsgSrc)
 
-                        WorkerMsg(tMsgID.Normal, "Modal Results written to: " & fFILE(MODdata.ModOutpName & ".vmod", True), MsgSrc, MODdata.ModOutpName & ".vmod")
+                        'Calculate FC
+                        MODdata.FCcalc(True)
 
-                    End If
+                        If PHEMworker.CancellationPending Then GoTo lbAbort
+
+                        '*** second-by-second output ***
+                        If Cfg.ModOut Then
+                            If MsgOut Then WorkerMsg(tMsgID.Normal, "Writing modal output", MsgSrc)
+                            If Not MODdata.Output() Then
+                                CyclAbrtedByErr = True
+                                GoTo lbAusg
+                            End If
+
+                            WorkerMsg(tMsgID.Normal, "Modal Results written to: " & fFILE(MODdata.ModOutpName & ".vmod", True), MsgSrc, MODdata.ModOutpName & ".vmod")
 
-                    'VECTO Output
-                    'TODO: Loadings...
-                    If Not GEN.EngOnly Then
-                        If Not VSUM.SetVals(tVSUM.UserDefLoaded) Then
-                            CyclAbrtedByErr = True
-                            GoTo lbAusg
                         End If
-                    End If
 
-                    'Output for BATCH and ADVANCE
+                        'VECTO Output
+                        If Not VEC.EngOnly Then
+                            If Not VRES.SetVals(loading) Then
+                                CyclAbrtedByErr = True
+                                GoTo lbAusg
+                            End If
+                        End If
+
+                        'Output for BATCH and ADVANCE
 lbAusg:
 
-                    If PHEMworker.CancellationPending Then GoTo lbAbort
+                        If PHEMworker.CancellationPending Then GoTo lbAbort
 
-                    'Output in Erg (first Calculation - Initialization & Header)
-                    If Not ERG.AusgERG(NrOfRunStr, fFILE(GenFile, True), fFILE(CurrentCycleFile, True), CyclAbrtedByErr) Then GoTo lbErrInJobLoop
+                        'VSUM Output (first Calculation - Initialization & Header)
+                        If Not VSUM.AusgVSUM(jgen * (CyclesDim + 1) + jzkl + 1, fFILE(GenFile, True), fFILE(CurrentCycleFile, True), CyclAbrtedByErr) Then GoTo lbErrInJobLoop
 
-                    'Data Cleanup
-                    MODdata.CleanUp()
+                        'Data Cleanup
+                        MODdata.CleanUp()
 
-                    'Status-Update
-                    If PHEMmode = tPHEMmode.ModeSTANDARD Then
-                        WorkerProg(100 * (jgen) / (FilesDim + 1) + 100 * jsubcycle / jsubcyclecount * 1 / (FilesDim + 1), 0)
-                    ElseIf PHEMmode = tPHEMmode.ModeBATCH Then
-                        WorkerProg(100 * (jgen * (CyclesDim + 1) + jzkl + 1) / ((FilesDim + 1) * (CyclesDim + 1)), 0)
-                    End If
+                        'Status-Update
+                        If PHEMmode = tPHEMmode.ModeSTANDARD Then
+                            WorkerProg(100 * (jgen) / (FilesDim + 1) + 100 * jsubcycle / jsubcyclecount * 1 / (FilesDim + 1), 0)
+                        ElseIf PHEMmode = tPHEMmode.ModeBATCH Then
+                            WorkerProg(100 * (jgen * (CyclesDim + 1) + jzkl + 1) / ((FilesDim + 1) * (CyclesDim + 1)), 0)
+                        End If
+
+                    Next
 
-                    'TODO: Loading Loop
                     '******************** END *** VECTO-loading loop *** END ************************
                     '**************************************************************************************
 
-                    If Not GEN.EngOnly Then
-                        If Not VSUM.Output() Then
+                    If Not VEC.EngOnly Then
+                        If Not VRES.Output() Then
                             CyclAbrtedByErr = True
-                            GoTo lbAusg
+                            GoTo lbNextJob
                         End If
                     End If
 
@@ -462,7 +515,6 @@ lbAusg:
                 '******************************************************************************************
 
 
-
             Next
             '**********************************************************************************************
             '****************************** END *** Cycle-loop *** END ******************************
@@ -473,9 +525,9 @@ lbNextJob:
 
                 If JobAbortedByErr Then
                     If CInt(jgen * (CyclesDim + 1) + 1) = CInt((jgen + 1) * (CyclesDim + 1)) Then
-                        ERG.AusgERG(((jgen + 1) * (CyclesDim + 1)).ToString, fFILE(GenFile, True), "-", True)
+                        VSUM.AusgVSUM(((jgen + 1) * (CyclesDim + 1)).ToString, fFILE(GenFile, True), "-", True)
                     Else
-                        ERG.AusgERG((jgen * (CyclesDim + 1) + 1).ToString & ".." & ((jgen + 1) * (CyclesDim + 1)).ToString, fFILE(GenFile, True), "-", True)
+                        VSUM.AusgVSUM((jgen * (CyclesDim + 1) + 1).ToString & ".." & ((jgen + 1) * (CyclesDim + 1)).ToString, fFILE(GenFile, True), "-", True)
                     End If
                 End If
 
@@ -488,9 +540,9 @@ lbNextJob:
                 'If GEN.irechwahl = tCalcMode.cmHEV Then MsgStrBuilder.Append(" (dSOC = " & SOC(MODdata.tDim) - SOC(0) & ")")
 
                 'Add input file list to signature list
-                If GEN.CreateFileList Then
-                    For i = 0 To GEN.FileList.Count - 1
-                        Lic.FileSigning.AddFile(GEN.FileList(i))
+                If VEC.CreateFileList Then
+                    For i = 0 To VEC.FileList.Count - 1
+                        Lic.FileSigning.AddFile(VEC.FileList(i))
                     Next
                 Else
                     WorkerMsg(tMsgID.Err, "Could not create file list for signing!", MsgSrc)
@@ -523,17 +575,16 @@ lbNextJob:
         '******************************* END *** Job loop *** END *******************************
         '**********************************************************************************************
 
-        WorkerMsg(tMsgID.Normal, "Summary Results written to: " & fFILE(ERG.ErgFile, True), MsgSrc, ERG.ErgFile)
+        WorkerMsg(tMsgID.Normal, "Summary Results written to: " & fFILE(VSUM.VSUMfile, True), MsgSrc, VSUM.VSUMfile)
 
         'JSON Erg Output
-        If Cfg.JSON Then
-            If ERG.WriteJSON() Then
-                WorkerMsg(tMsgID.Normal, "Summary Results (JSON) written to: " & fFILE(ERG.ErgFile & ".json", True), MsgSrc, ERG.ErgFile & ".json")
-            Else
-                WorkerMsg(tMsgID.Err, "Failed to write JSON Summary Results!", MsgSrc)
-            End If
+        If VSUM.WriteJSON() Then
+            WorkerMsg(tMsgID.Normal, "Summary Results (JSON) written to: " & fFILE(VSUM.VSUMfile & ".json", True), MsgSrc, VSUM.VSUMfile & ".json")
+        Else
+            WorkerMsg(tMsgID.Err, "Failed to write JSON Summary Results!", MsgSrc)
         End If
 
+
         'Write file signatures
         WorkerMsg(tMsgID.Normal, "Signing files", MsgSrc)
         Lic.FileSigning.Mode = vectolic.cFileSigning.tMode.Auto
@@ -585,19 +636,157 @@ lbAbort:
         MODdata.CleanUp()
 
 lbExit:
-        GEN = Nothing
+        VEC = Nothing
         VEH = Nothing
         FLD = Nothing
         MAP = Nothing
         DRI = Nothing
         MODdata = Nothing
-        ERG = Nothing
+        VSUM = Nothing
 
         ENG = Nothing
         GBX = Nothing
 
     End Function
 
+    Public Function ReadFiles() As Boolean
+        Dim i As Integer
+        Dim sb As cSubPath
+
+
+        Dim MsgSrc As String
+
+        MsgSrc = "Main/ReadInp"
+
+        '-----------------------------    ~GEN~    -----------------------------
+        'Read GEN
+        If UCase(fEXT(GenFile)) <> ".VECTO" Then
+            WorkerMsg(tMsgID.Err, "Only .VECTO files are supported in this mode", MsgSrc)
+            Return False
+        End If
+
+        VEC = New cVECTO
+        VEC.FilePath = GenFile
+
+        Try
+            If Not VEC.ReadFile() Then
+                WorkerMsg(tMsgID.Err, "Cannot read .gen file (" & GenFile & ")", MsgSrc)
+                Return False
+            End If
+        Catch ex As Exception
+            WorkerMsg(tMsgID.Err, "File read error! (" & GenFile & ")", MsgSrc, GenFile)
+            Return False
+        End Try
+
+        If VEC.NoJSON Then WorkerMsg(tMsgID.Warn, "VECTO file format is outdated! CLICK HERE to convert to current format!", MsgSrc, "<GUI>" & GenFile)
+
+
+        '-----------------------------    ~VEH~    -----------------------------
+        VEH = New cVEH
+
+        'Read vehicle specifications
+        If Not VEC.EngOnly Then
+            VEH.FilePath = VEC.PathVEH
+            Try
+                If Not VEH.ReadFile Then Return False
+            Catch ex As Exception
+                WorkerMsg(tMsgID.Err, "File read error! (" & VEC.PathVEH & ")", MsgSrc, VEC.PathVEH)
+                Return False
+            End Try
+
+        End If
+
+        If VEH.NoJSON Then WorkerMsg(tMsgID.Warn, "Vehicle file format is outdated! CLICK HERE to convert to current format!", MsgSrc, "<GUI>" & VEC.PathVEH)
+
+        If Declaration.Active Then
+            If Not Declaration.SetRef() Then
+                WorkerMsg(tMsgID.Err, "Vehicle Configuration not found in Segment Table!", MsgSrc)
+                Return False
+            End If
+        End If
+
+
+        If Declaration.Active Then VEC.DeclInit()
+
+
+        CycleFiles.Clear()
+        For Each sb In VEC.CycleFiles
+            CycleFiles.Add(sb.FullPath)
+        Next
+
+        'Error message in init()
+        If Not VEC.Init Then Return False
+
+
+
+        '-----------------------------    ~ENG~    -----------------------------
+        ENG = New cENG
+        ENG.FilePath = VEC.PathENG
+        Try
+            If Not ENG.ReadFile Then Return False
+        Catch ex As Exception
+            WorkerMsg(tMsgID.Err, "File read error! (" & VEC.PathENG & ")", MsgSrc, VEC.PathENG)
+            Return False
+        End Try
+
+        If ENG.NoJSON Then WorkerMsg(tMsgID.Warn, "Engine file format is outdated! CLICK HERE to convert to current format!", MsgSrc, "<GUI>" & VEC.PathENG)
+
+        If Declaration.Active Then ENG.DeclInit()
+
+
+        '-----------------------------    ~GBX~    -----------------------------
+        GBX = New cGBX
+
+        If Not VEC.EngOnly Then
+            GBX.FilePath = VEC.PathGBX
+            Try
+                If Not GBX.ReadFile Then Return False
+            Catch ex As Exception
+                WorkerMsg(tMsgID.Err, "File read error! (" & VEC.PathGBX & ")", MsgSrc, VEC.PathGBX)
+                Return False
+            End Try
+        End If
+
+        If GBX.NoJSON Then WorkerMsg(tMsgID.Warn, "Gearbox file format is outdated! CLICK HERE to convert to current format!", MsgSrc, "<GUI>" & VEC.PathGBX)
+
+
+
+        '-----------------------------    VECTO    -----------------------------
+
+        'GBX => VEH
+        For i = 0 To GBX.GetrI.Count - 1
+            VEH.siGetrI.Add(GBX.GetrI(i))
+            VEH.GetrMap.Add(New cSubPath)
+            If IsNumeric(GBX.GetrMap(i, True)) Then
+                VEH.GetrEffDef.Add(True)
+                VEH.GetrEff.Add(CSng(GBX.GetrMap(i, True)))
+            Else
+                VEH.GetrEffDef.Add(False)
+                VEH.GetrEff.Add(0)
+                VEH.GetrMap(i).Init(fPATH(VEC.PathGBX), GBX.GetrMap(i, True))
+            End If
+        Next
+
+        ENG.Init()
+
+
+        '-----------------------------    ~FLD~    -----------------------------
+        'Now in cENG.Init
+
+
+        '-----------------------------    ~MAP~    -----------------------------
+        'Now in cENG.Init
+
+        'Must be after ENG.Init()
+        If Declaration.Active Then GBX.DeclInit()
+
+
+
+        Return True
+
+    End Function
+
+
     '---------------------------------------------------------------------------
 
 
diff --git a/VECTO/VECTO.vbproj b/VECTO/VECTO.vbproj
index 912f7887ed85bc55a5fb9e4e542960dc3610766d..727a5fb7cb421e20fb44ceafce1b1b4e783b3fa9 100644
--- a/VECTO/VECTO.vbproj
+++ b/VECTO/VECTO.vbproj
@@ -82,6 +82,9 @@
     <CodeAnalysisFailOnMissingRules>false</CodeAnalysisFailOnMissingRules>
   </PropertyGroup>
   <ItemGroup>
+    <Reference Include="itextsharp">
+      <HintPath>..\Third Party Libraries\itextsharp\itextsharp.dll</HintPath>
+    </Reference>
     <Reference Include="Newtonsoft.Json">
       <HintPath>..\Third Party Libraries\JSON.Net\Bin\Net40\Newtonsoft.Json.dll</HintPath>
     </Reference>
@@ -110,8 +113,8 @@
   <ItemGroup>
     <Compile Include="ApplicationEvents.vb" />
     <Compile Include="cJSONparser.vb" />
-    <Compile Include="cVECTO.vb" />
-    <Compile Include="cVSUM.vb" />
+    <Compile Include="cDeclaration.vb" />
+    <Compile Include="cVRES.vb" />
     <Compile Include="GUI\F_FileSign.Designer.vb">
       <DependentUpon>F_FileSign.vb</DependentUpon>
     </Compile>
@@ -166,10 +169,8 @@
     <Compile Include="cConfig.vb" />
     <Compile Include="cDelaunayMap.vb" />
     <Compile Include="cDEV.vb" />
-    <Compile Include="cEmComp.vb" />
     <Compile Include="File Browser\cFileBrowser.vb" />
     <Compile Include="MODcalc\cVh.vb" />
-    <Compile Include="MODcalc\Em Calc.vb" />
     <Compile Include="File Browser\FB_Dialog.designer.vb">
       <DependentUpon>FB_Dialog.vb</DependentUpon>
     </Compile>
@@ -187,7 +188,7 @@
     <Compile Include="Input Files\cFLD.vb" />
     <Compile Include="Input Files\cMAP.vb" />
     <Compile Include="Input Files\cDRI.vb" />
-    <Compile Include="Input Files\cGEN.vb" />
+    <Compile Include="Input Files\cVECTO.vb" />
     <Compile Include="Input Files\cVEH.vb" />
     <Compile Include="GUI\F_VEH_GearDlog.Designer.vb">
       <DependentUpon>F_VEH_GearDlog.vb</DependentUpon>
@@ -202,10 +203,10 @@
     <Compile Include="GUI\F_ShutDown.vb">
       <SubType>Form</SubType>
     </Compile>
-    <Compile Include="GUI\F_GEN.Designer.vb">
-      <DependentUpon>F_GEN.vb</DependentUpon>
+    <Compile Include="GUI\F_VECTO.Designer.vb">
+      <DependentUpon>F_VECTO.vb</DependentUpon>
     </Compile>
-    <Compile Include="GUI\F_GEN.vb">
+    <Compile Include="GUI\F_VECTO.vb">
       <SubType>Form</SubType>
     </Compile>
     <Compile Include="cFile V3.vb" />
@@ -231,9 +232,8 @@
     <Compile Include="GUI\F_AboutBox.vb">
       <SubType>Form</SubType>
     </Compile>
-    <Compile Include="M_Lese.vb" />
     <Compile Include="M_MAIN.vb" />
-    <Compile Include="cERG.vb" />
+    <Compile Include="cVSUM.vb" />
     <Compile Include="GUI\F_MAINForm.vb">
       <SubType>Form</SubType>
     </Compile>
@@ -285,9 +285,9 @@
       <SubType>Designer</SubType>
       <DependentUpon>F_MAINForm.vb</DependentUpon>
     </EmbeddedResource>
-    <EmbeddedResource Include="GUI\F_GEN.resx">
+    <EmbeddedResource Include="GUI\F_VECTO.resx">
       <SubType>Designer</SubType>
-      <DependentUpon>F_GEN.vb</DependentUpon>
+      <DependentUpon>F_VECTO.vb</DependentUpon>
     </EmbeddedResource>
     <EmbeddedResource Include="GUI\F_ShutDown.resx">
       <SubType>Designer</SubType>
diff --git a/VECTO/VECTO_Global.vb b/VECTO/VECTO_Global.vb
index 9494f0733a23fe8c885b29bf6751a4224554e68d..4195413bdb8a47830e29ffb071270018f707496e 100644
--- a/VECTO/VECTO_Global.vb
+++ b/VECTO/VECTO_Global.vb
@@ -27,21 +27,21 @@ Module VECTO_Global
 
     Public LOGfile As System.IO.StreamWriter
 
-    Public GEN As cGEN
+    Public VEC As cVECTO
     Public VEH As cVEH
     Public MAP As cMAP
     Public DRI As cDRI
     Public FLD As List(Of cFLD)
     Public MODdata As cMOD
     Public Lic As vectolic.cLicense
-    Public ERG As cERG
+    Public VSUM As cVSUM
     Public DEV As cDEV
 
     Public ENG As cENG
     Public GBX As cGBX
-    Public VSUM As cVSUM
+    Public VRES As cVRES
 
-    Public VEC As cVECTO
+    Public Declaration As cDeclaration
 
     Public ProgBarCtrl As cProgBarCtrl
 
@@ -93,25 +93,6 @@ Module VECTO_Global
         End Select
     End Function
 
-    Public Function fExsComp(ByVal sK As String) As tExsComp
-        Dim x As Integer
-        sK = Trim(UCase(sK))
-
-        x = sK.IndexOf("_")
-
-        If x = -1 Then Return tExsComp.Undefined
-
-        sK = Left(sK, x + 1)
-
-        Select Case sK
-            Case sKey.EXS.Tgas
-                Return tExsComp.Tgas
-            Case Else
-                Return tExsComp.Undefined
-        End Select
-
-    End Function
-
     Public Function fAuxComp(ByVal sK As String) As tAuxComp
         Dim x As Integer
         sK = Trim(UCase(sK))
@@ -131,83 +112,6 @@ Module VECTO_Global
 
     End Function
 
-    Public Function fMapComp(ByVal sK As String) As tMapComp
-        sK = Trim(UCase(sK))
-        Select Case sK
-            Case sKey.MAP.FC
-                Return tMapComp.FC
-            Case sKey.MAP.NOx
-                Return tMapComp.NOx
-            Case sKey.MAP.HC
-                Return tMapComp.HC
-            Case sKey.MAP.CO
-                Return tMapComp.CO
-            Case sKey.MAP.PM
-                Return tMapComp.PM
-            Case sKey.MAP.PN
-                Return tMapComp.PN
-            Case sKey.MAP.NO
-                Return tMapComp.NO
-            Case sKey.MAP.MassF
-                Return tMapComp.MassFlow
-            Case sKey.MAP.Lambda
-                Return tMapComp.Lambda
-            Case sKey.MAP.Temp
-                Return tMapComp.ExhTemp
-            Case sKey.MAP.Qp_coolant
-                Return tMapComp.Qp_coolant
-            Case sKey.MAP.dP2s
-                Return tMapComp.TCdP2s
-            Case sKey.MAP.Pneg3s
-                Return tMapComp.TCPneg3s
-            Case sKey.MAP.Ppos3s
-                Return tMapComp.TCPpos3s
-            Case sKey.MAP.Ampl3s
-                Return tMapComp.TCAmpl3s
-            Case sKey.MAP.LW3p3s
-                Return tMapComp.TCLW3p3s
-            Case sKey.MAP.P40sABS
-                Return tMapComp.TCP40sABS
-            Case sKey.MAP.absdn2s
-                Return tMapComp.TCabsdn2s
-            Case sKey.MAP.P10sn10s3
-                Return tMapComp.TCP10sn10s3
-            Case sKey.MAP.dynV
-                Return tMapComp.TCdynV
-            Case sKey.MAP.dynAV
-                Return tMapComp.TCdynAV
-            Case sKey.MAP.dynDAV
-                Return tMapComp.TCdynDAV
-            Case sKey.MAP.Extrapol
-                Return tMapComp.Extrapol
-            Case sKey.MAP.Eta
-                Return tMapComp.Eta
-            Case Else
-                Return tMapComp.Undefined
-        End Select
-    End Function
-
-    Public Function fFldComp(ByVal sK As String) As tFldComp
-        sK = Trim(UCase(sK))
-        Select Case sK
-            Case sKey.FLD.PeTarget
-                Return tFldComp.PeTarget
-            Case sKey.FLD.PT1
-                Return tFldComp.PT1
-            Case Else
-                Return tMapComp.Undefined
-        End Select
-    End Function
-
-    Public Function fMapCompIsTC(ByVal ID As tMapComp) As Boolean
-        Select Case ID
-            Case tMapComp.TCPpos3s, tMapComp.TCPneg3s, tMapComp.TCAmpl3s, tMapComp.TCdP2s, tMapComp.TCP10sn10s3, tMapComp.TCP40sABS, tMapComp.TCabsdn2s, tMapComp.TCLW3p3s, tMapComp.TCdynV, tMapComp.TCdynAV, tMapComp.TCdynDAV
-                Return True
-            Case Else
-                Return False
-        End Select
-    End Function
-
 
     Public Function fCompSubStr(ByVal sK As String) As String
         Dim x As Integer
@@ -233,77 +137,62 @@ Module VECTO_Global
 
 #End Region
 
-#Region "Typ > Name Umwandlung"
-
-    Public Function fMapCompName(ByVal ID As tMapComp) As String
-        Select Case ID
-            Case tMapComp.CO
-                Return "CO"
-            Case tMapComp.Eta
-                Return "Eta"
-            Case tMapComp.ExhTemp
-                Return "ExhTemp"
-            Case tMapComp.Extrapol
-                Return "Extrapolation"
-            Case tMapComp.FC
-                Return "FC"
-            Case tMapComp.HC
-                Return "HC"
-            Case tMapComp.Lambda
-                Return "Lambda"
-            Case tMapComp.MassFlow
-                Return "MassFlow"
-            Case tMapComp.NO
-                Return "NO"
-            Case tMapComp.NOx
-                Return "NOx"
-            Case tMapComp.PM
-                Return "PM"
-            Case tMapComp.PN
-                Return "PN"
-            Case tMapComp.TCPpos3s
-                Return "dyn_Ppos3s"
-            Case tMapComp.TCPneg3s
-                Return "dyn_Pneg3s"
-            Case tMapComp.TCAmpl3s
-                Return "Ampl3s"
-            Case tMapComp.TCdP2s
-                Return "dP_2s"
-            Case tMapComp.TCP10sn10s3
-                Return "P10s_n10s3"
-            Case tMapComp.TCP40sABS
-                Return "P40sABS"
-            Case tMapComp.TCabsdn2s
-                Return "abs_dn2s"
-            Case tMapComp.TCLW3p3s
-                Return "LW3p3s"
-            Case tMapComp.TCdynV
-                Return "dynV"
-            Case tMapComp.TCdynAV
-                Return "dynAV"
-            Case tMapComp.TCdynDAV
-                Return "dynDAV"
-            Case tMapComp.Qp_coolant
-                Return "Qp_coolant"
-            Case Else
-                Return "fMapCompName() ERROR"
+#Region "Typ > Name Conversion"
+
+    Public Function ConvLoading(ByVal load As tLoading) As String
+        Select Case load
+            Case tLoading.FullLoaded
+                Return "Full Loading"
+
+            Case tLoading.RefLoaded
+                Return "Reference Loading"
+
+            Case tLoading.EmptyLoaded
+                Return "Empty Loading"
+
+            Case Else ' tLoading.UserDefLoaded
+                Return "User-defined Loading"
+
         End Select
     End Function
 
-    Public Function fPwCorName(ByVal PCmode As tIntpPeCorMode) As String
-        Select Case PCmode
-            Case tIntpPeCorMode.PeCorEmDrag
-                Return "PeCorEmDrag"
-            Case tIntpPeCorMode.PeCorNull
-                Return "PeCorNull"
-            Case tIntpPeCorMode.PeCorNullPmin
-                Return "PeCorNullPmin"
-            Case Else 'tIntpPeCorMode.PeCorOff
-                Return "Off"
+
+
+    Public Function ConvVehCat(ByVal VehCat As tVehCat) As String
+        Select Case VehCat
+            Case tVehCat.Citybus
+                Return "Citybus"
+            Case tVehCat.Coach
+                Return "Coach"
+            Case tVehCat.InterurbanBus
+                Return "InterurbanBus"
+            Case tVehCat.RigidTruck
+                Return "RigidTruck"
+            Case tVehCat.Tractor
+                Return "Tractor"
+            Case Else ' tVehCat.Undef
+                Return "not defined"
         End Select
     End Function
 
-    Public Function fAxleConfName(ByVal AxleConf As tAxleConf) As String
+    Public Function ConvVehCat(ByVal VehCat As String) As tVehCat
+        Select Case UCase(Trim(VehCat))
+            Case "CITYBUS"
+                Return tVehCat.Citybus
+            Case "COACH"
+                Return tVehCat.Coach
+            Case "INTERURBANBUS"
+                Return tVehCat.InterurbanBus
+            Case "RIGIDTRUCK"
+                Return tVehCat.RigidTruck
+            Case "TRACTOR"
+                Return tVehCat.Tractor
+            Case Else
+                Return tVehCat.Undef
+        End Select
+    End Function
+
+    Public Function ConvAxleConf(ByVal AxleConf As tAxleConf) As String
         Select Case AxleConf
             Case tAxleConf.a4x2
                 Return "4x2"
@@ -321,11 +210,136 @@ Module VECTO_Global
                 Return "8x4"
             Case tAxleConf.a8x6
                 Return "8x6"
-            Case Else ' tAxleConf.a8x8
+            Case Else  'tAxleConf.a8x8
                 Return "8x8"
         End Select
     End Function
 
+    Public Function ConvAxleConf(ByVal AxleConf As String) As tAxleConf
+        Select Case UCase(Trim(AxleConf))
+            Case "4X2"
+                Return tAxleConf.a4x2
+            Case "4X4"
+                Return tAxleConf.a4x4
+            Case "6X2"
+                Return tAxleConf.a6x2
+            Case "6X4"
+                Return tAxleConf.a6x4
+            Case "6X6"
+                Return tAxleConf.a6x6
+            Case "8X2"
+                Return tAxleConf.a8x2
+            Case "8X4"
+                Return tAxleConf.a8x4
+            Case "8X6"
+                Return tAxleConf.a8x6
+            Case Else '"8X8"
+                Return tAxleConf.a8x8
+        End Select
+    End Function
+
+    Public Function ConvMission(ByVal Mission As tMission) As String
+        Select Case Mission
+            Case tMission.LongHaul
+                Return "LongHaul"
+            Case tMission.RegionalDelivery
+                Return "RegionalDelivery"
+            Case tMission.UrbanDelivery
+                Return "UrbanDelivery"
+            Case tMission.MunicipalUtility
+                Return "MunicipalUtility"
+            Case tMission.Construction
+                Return "Construction"
+            Case tMission.HeavyUrban
+                Return "HeavyUrban"
+            Case tMission.Urban
+                Return "Urban"
+            Case tMission.Suburban
+                Return "Suburban"
+            Case tMission.Interurban
+                Return "Interurban"
+            Case tMission.Coach
+                Return "Coach"
+            Case Else
+                Return "not defined"
+        End Select
+    End Function
+
+    Public Function ConvMission(ByVal Mission As String) As tMission
+        Select Case Mission
+            Case "LongHaul"
+                Return tMission.LongHaul
+            Case "RegionalDelivery"
+                Return tMission.RegionalDelivery
+            Case "UrbanDelivery"
+                Return tMission.UrbanDelivery
+            Case "MunicipalUtility"
+                Return tMission.MunicipalUtility
+            Case "Construction"
+                Return tMission.Construction
+            Case "HeavyUrban"
+                Return tMission.HeavyUrban
+            Case "Urban"
+                Return tMission.Urban
+            Case "Suburban"
+                Return tMission.Suburban
+            Case "Interurban"
+                Return tMission.Interurban
+            Case "Coach"
+                Return tMission.Coach
+            Case Else
+                Return tMission.Undef
+        End Select
+    End Function
+
+
+
+    Public Function CdModeConv(ByVal CdMode As tCdMode) As String
+        Select Case CdMode
+            Case tCdMode.CdOfBeta
+                Return "CdOfBeta"
+            Case tCdMode.CdOfV
+                Return "CdOfV"
+            Case Else  'tCdMode.ConstCd0
+                Return "Off"
+        End Select
+    End Function
+
+    Public Function CdModeConv(ByVal CdMode As String) As tCdMode
+        Select Case UCase(Trim(CdMode))
+            Case "CDOFBETA"
+                Return tCdMode.CdOfBeta
+            Case "CDOFV"
+                Return tCdMode.CdOfV
+            Case Else  '"OFF"
+                Return tCdMode.ConstCd0
+        End Select
+    End Function
+
+
+
+    Public Function RtTypeConv(ByVal RtType As tRtType) As String
+        Select Case RtType
+            Case tRtType.Primary
+                Return "Primary"
+            Case tRtType.Secondary
+                Return "Secondary"
+            Case Else 'tRtType.None
+                Return "None"
+        End Select
+    End Function
+
+    Public Function RtTypeConv(ByVal RtType As String) As tRtType
+        Select Case UCase(Trim(RtType))
+            Case "PRIMARY"
+                Return tRtType.Primary
+            Case "SECONDARY"
+                Return tRtType.Secondary
+            Case Else  '"NONE"
+                Return tRtType.None
+        End Select
+    End Function
+
 #End Region
 
 
@@ -345,11 +359,7 @@ End Module
 
 
 Public Class csKey
-    Public MAP As csKeyMAP
     Public DRI As csKeyDRI
-    Public EXS As csKeyEXS
-    Public HEV As csKeyHEV
-    Public FLD As csKeyFLD
 
     Public WorkDir As String = "<WORKDIR>"
     Public HomePath As String = "<HOME>"
@@ -363,42 +373,12 @@ Public Class csKey
 
     Public PauxSply As String = "<AUX_"
 
+    Public EngDrag As String = "<DRAG>"
+
     Public Sub New()
-        MAP = New csKeyMAP
         DRI = New csKeyDRI
-        EXS = New csKeyEXS
-        HEV = New csKeyHEV
-        FLD = New csKeyFLD
     End Sub
 
-    Public Class csKeyMAP
-        Public FC As String = "<FC>"
-        Public NOx As String = "<NOX>"
-        Public HC As String = "<HC>"
-        Public CO As String = "<CO>"
-        Public PM As String = "<PM>"
-        Public PN As String = "<PN>"
-        Public NO As String = "<NO>"
-        Public MassF As String = "<MASSFLOW>"
-        Public Lambda As String = "<LAMBDA>"
-        Public Temp As String = "<TEMP>"
-        Public Qp_coolant As String = "<QP_COOLANT>"
-        Public dP2s As String = "<DP2S>"
-        Public Pneg3s As String = "<PNEG3S>"
-        Public Ppos3s As String = "<PPOS3S>"
-        Public Ampl3s As String = "<AMPL3S>"
-        Public LW3p3s As String = "<LW3P3S>"
-        Public P40sABS As String = "<P40SABS>"
-        Public absdn2s As String = "<ABSDN2S>"
-        Public P10sn10s3 As String = "<P10SN10S3>"
-        Public dynV As String = "<DYNV>"
-        Public dynAV As String = "<DYNAV>"
-        Public dynDAV As String = "<DYNDAV>"
-        Public Extrapol As String = "<E>"
-        Public Drag As String = "<DRAG>"
-        Public Eta As String = "<ETA>"
-    End Class
-
     Public Class csKeyDRI
         Public t As String = "<T>"
         Public V As String = "<V>"
@@ -415,20 +395,6 @@ Public Class csKey
         Public Torque As String = "<ME>"
     End Class
 
-    Public Class csKeyEXS
-        Public Tgas As String = "<TGAS_"
-    End Class
-
-    Public Class csKeyHEV
-        Public EtaMap As String = "<MAP>"
-    End Class
-
-    Public Class csKeyFLD
-        Public PT1 As String = "<PT1>"
-        Public PeTarget As String = "<PETARGET>"
-    End Class
-
-
 
 End Class
 
diff --git a/VECTO/VECTO_Types.vb b/VECTO/VECTO_Types.vb
index 7a42b6e7d15d722628ea7ac3ec965f32ee952e4c..df001456049d44f0022202eab3e002ba505314bc 100644
--- a/VECTO/VECTO_Types.vb
+++ b/VECTO/VECTO_Types.vb
@@ -48,45 +48,6 @@ Public Enum tJobStatus
     Undef
 End Enum
 
-
-
-Public Enum tEmNorm
-    x_h
-    x_hPnenn
-    x_kWh
-    x
-End Enum
-
-#Region "Input File Components"
-
-Public Enum tMapComp
-    FC
-    NOx
-    HC
-    CO
-    PM
-    PN
-    NO
-    MassFlow
-    ExhTemp
-    Lambda
-    TCdP2s
-    TCPneg3s
-    TCPpos3s
-    TCAmpl3s
-    TCLW3p3s
-    TCP40sABS
-    TCabsdn2s
-    TCP10sn10s3
-    TCdynV
-    TCdynAV
-    TCdynDAV
-    Undefined
-    Extrapol
-    Eta
-    Qp_coolant
-End Enum
-
 Public Enum tDriComp
     t
     V
@@ -104,26 +65,6 @@ Public Enum tDriComp
     Torque
 End Enum
 
-Public Enum tExsComp
-    Tgas
-    Undefined
-End Enum
-
-Public Enum tFldComp
-    PeTarget
-    PT1
-    Undefined
-End Enum
-
-#End Region
-
-Public Enum tIntpPeCorMode
-    PeCorOff
-    PeCorNull
-    PeCorEmDrag
-    PeCorNullPmin
-End Enum
-
 Public Enum tVehState
     Cruise
     Acc
@@ -138,6 +79,7 @@ Public Enum tEngState
     Load
     FullLoad
     Stopped
+    Undef
 End Enum
 
 Public Enum tEngClutch
@@ -171,17 +113,13 @@ Public Enum tGearbox
 End Enum
 
 
-
-
-#Region "VECTO Classifications"
-
-
 Public Enum tVehCat As Integer
-    Rigid = 0
+    RigidTruck = 0
     Tractor = 1
     Citybus = 2
     InterurbanBus = 3
     Coach = 4
+    Undef = 99
 End Enum
 
 Public Enum tAxleConf As Integer
@@ -194,68 +132,38 @@ Public Enum tAxleConf As Integer
     a8x4 = 6
     a8x6 = 7
     a8x8 = 8
+    Undef = 99
 End Enum
 
-Public Enum tVSUM
+Public Enum tLoading
     FullLoaded
     EmptyLoaded
     RefLoaded
     UserDefLoaded
 End Enum
 
-Public Enum tVECTOmode
-    Declaration
-    ProofOfConcept
-End Enum
-
 Public Enum tMission
-    LongHaul = 0
-    RegionalDelivery = 1
-    UrbanDelivery = 2
-    MunicipalUtility = 3
-    Construction = 4
-    HeavyUrban = 5
-    Urban = 6
-    Suburban = 7
-    Interurban = 8
-    Coach = 9
-End Enum
-
-#End Region
-
-
-
-
-
-
-
-#Region "HEV"
-
-Public Enum tBatLvl
-    OK
-    Low
-    High
-    Full
-    Empty
+    LongHaul
+    RegionalDelivery
+    UrbanDelivery
+    MunicipalUtility
+    Construction
+    HeavyUrban
+    Urban
+    Suburban
+    Interurban
+    Coach
+    Undef
 End Enum
 
-Public Enum tICElock
-    OnLock
-    OffLock
-    NoLock
+Public Enum tWHTCpart
+    Urban
+    Rural
+    Motorway
 End Enum
 
-Public Enum tHEVparMode
-    Assist
-    LPI
-    EV
-    ICEonly
-    Rekup
-    Undefined
-End Enum
 
 
-#End Region
 
 
 
diff --git a/VECTO/cConfig.vb b/VECTO/cConfig.vb
index 84b2f152e086bf85af4fb894ce52172b7df253ca..32bd3947bc37989ede1e7b43440916e20ac5d7ec 100644
--- a/VECTO/cConfig.vb
+++ b/VECTO/cConfig.vb
@@ -12,8 +12,6 @@
     Public BATCHoutSubD As Boolean
     Public WegKorJa As Boolean
     Public LogSize As Single
-    Public FZPsort As Boolean
-    Public FZPsortExp As Boolean
     Public AirDensity As Single
     Public OpenCmd As String
     Public OpenCmdName As String
@@ -21,14 +19,18 @@
     Public FuelDens As Single
     Public CO2perFC As Single
 
-    Public JSON As Boolean
-
     Public FirstRun As Boolean
 
     Public Sub New()
         SetDefault()
     End Sub
 
+    Public Sub DeclInit()
+        AirDensity = cDeclaration.AirDensity
+        FuelDens = cDeclaration.FuelDens
+        CO2perFC = cDeclaration.CO2perFC
+    End Sub
+
     Public Function ConfigLOAD() As Boolean
         Dim c As New cFile_V3
         Dim line As String()
@@ -89,11 +91,11 @@
 
         GnVorgab = CBool(c.ReadLine(0))
 
-        LogSize = CSng(c.ReadLine(0))
+        c.ReadLine()
 
-        FZPsort = CBool(c.ReadLine(0))
+        c.ReadLine()
 
-        FZPsortExp = CBool(c.ReadLine(0))
+        LogSize = CSng(c.ReadLine(0))
 
         BATCHoutpath = Trim(c.ReadLine(0))
 
@@ -116,10 +118,6 @@
 
         FirstRun = CBool(c.ReadLine(0))
 
-        If c.EndOfFile Then GoTo lbDone
-
-        JSON = CBool(c.ReadLine(0))
-
 
 
 lbDone:
@@ -144,8 +142,6 @@ lbEr:
         BATCHoutSubD = False
         WegKorJa = True
         LogSize = 2
-        FZPsort = True
-        FZPsortExp = False
         AirDensity = 1.2
         OpenCmd = "notepad"
         OpenCmdName = "Notepad"
@@ -157,8 +153,6 @@ lbEr:
 
         FirstRun = True
 
-        JSON = True
-
     End Sub
 
     Public Sub ConfigSAVE()
@@ -195,10 +189,10 @@ lbEr:
         c.WriteLine(Math.Abs(CInt(GnVorgab)))
         c.WriteLine("c Log file size limit [MB]")
         c.WriteLine(LogSize)
-        c.WriteLine("c ADVANCE Sort .fzp file 1/0")
-        c.WriteLine(Math.Abs(CInt(FZPsort)))
-        c.WriteLine("c ADVANCE Export sorted .fzp file 1/0")
-        c.WriteLine(Math.Abs(CInt(FZPsortExp)))
+        c.WriteLine("c NOT USED")
+        c.WriteLine("0")
+        c.WriteLine("c NOT USED")
+        c.WriteLine("0")
         c.WriteLine("c BATCH Output Path")
         c.WriteLine(BATCHoutpath)
         c.WriteLine("c BATCH Sub Dir Output 1/0")
@@ -220,10 +214,6 @@ lbEr:
         c.WriteLine("c First Run (Show Quick Start Guide Prompt)")
         c.WriteLine(Math.Abs(CInt(FirstRun)))
 
-        c.WriteLine("c In- and Output in JSON format")
-        c.WriteLine(Math.Abs(CInt(JSON)))
-
-
         c.Close()
         c = Nothing
     End Sub
diff --git a/VECTO/cCycleKin.vb b/VECTO/cCycleKin.vb
index cdf40763124974999ad28b785e163378e8d7cea8..e55cef4a70ee8974cf7a0459fe1c2be95e3ffe70 100644
--- a/VECTO/cCycleKin.vb
+++ b/VECTO/cCycleKin.vb
@@ -24,18 +24,18 @@ Public Class cCycleKin
     Private aNeg0 As Single
     Private AccNoise0 As Single
 
-    Private MyErgEntries As List(Of cErgEntry)
+    Private MyVSUMentries As List(Of cVSUMentry)
 
     Public Sub New()
-        MyErgEntries = New List(Of cErgEntry)
-        MyErgEntries.Add(New cErgEntry("a", "[m/s^2]"))
-        MyErgEntries.Add(New cErgEntry("a_pos", "[m/s^2]"))
-        MyErgEntries.Add(New cErgEntry("a_neg", "[m/s^2]"))
-        MyErgEntries.Add(New cErgEntry("Acc.Noise", "[m/s^2]"))
-        MyErgEntries.Add(New cErgEntry("pAcc", "[%]"))
-        MyErgEntries.Add(New cErgEntry("pDec", "[%]"))
-        MyErgEntries.Add(New cErgEntry("pCruise", "[%]"))
-        MyErgEntries.Add(New cErgEntry("pStop", "[%]"))
+        MyVSUMentries = New List(Of cVSUMentry)
+        MyVSUMentries.Add(New cVSUMentry("a", "[m/s^2]"))
+        MyVSUMentries.Add(New cVSUMentry("a_pos", "[m/s^2]"))
+        MyVSUMentries.Add(New cVSUMentry("a_neg", "[m/s^2]"))
+        MyVSUMentries.Add(New cVSUMentry("Acc.Noise", "[m/s^2]"))
+        MyVSUMentries.Add(New cVSUMentry("pAcc", "[%]"))
+        MyVSUMentries.Add(New cVSUMentry("pDec", "[%]"))
+        MyVSUMentries.Add(New cVSUMentry("pCruise", "[%]"))
+        MyVSUMentries.Add(New cVSUMentry("pStop", "[%]"))
     End Sub
 
     Public Function ValLine() As String
@@ -129,9 +129,9 @@ Public Class cCycleKin
 
     End Sub
 
-    Public ReadOnly Property ErgEntries As List(Of cErgEntry)
+    Public ReadOnly Property VSUMentries As List(Of cVSUMentry)
         Get
-            Return MyErgEntries
+            Return MyVSUMentries
         End Get
     End Property
 
diff --git a/VECTO/cDeclaration.vb b/VECTO/cDeclaration.vb
new file mode 100644
index 0000000000000000000000000000000000000000..c12c4e8911cc2f71c55b095966f49bd8a5637779
--- /dev/null
+++ b/VECTO/cDeclaration.vb
@@ -0,0 +1,542 @@
+Imports System.Collections.Generic
+
+Public Class cDeclaration
+    Public Active As Boolean
+    Public CurrentMission As cMission
+    Public Missions As Dictionary(Of tMission, cMission)
+    Public SegmentTable As cSegmentTable
+    Public SegRef As cSegmentTableEntry
+
+    Public Const SSspeed As Single = 5
+    Public Const SStime As Single = 5
+    Public Const SSdelay As Single = 5
+    Public Const LACa As Single = -0.5
+    Public Const LACvmin As Single = 50
+
+    Public Const TqResv As Single = 20
+    Public Const TqResvStart As Single = 20
+    Public Const StartSpeed As Single = 2
+    Public Const StartAcc As Single = 0.6
+    Public Const GbInertia As Single = 0
+
+    Public Const RRCTr As Single = 0.00555
+    Public Const FzISOTr As Single = 37500
+
+    Public Const AirDensity As Single = 1.17    'HILS Default Silberholz
+    Public Const FuelDens As Single = 0.832
+    Public Const CO2perFC As Single = 3.16
+
+    Public WHTCresults As Dictionary(Of tWHTCpart, Single)
+
+    Public Sub New()
+        Active = True
+    End Sub
+
+    Public Function Init() As Boolean
+
+        Dim file As New cFile_V3
+        Dim mc0 As cMission
+        Dim mt0 As tMission
+        Dim ste0 As cSegmentTableEntry
+        Dim line As String()
+        Dim i As Integer
+        Dim a As Integer
+        Dim s0 As String
+        Dim s As String()
+        Dim TrS As Single
+        Dim TrA As Single
+
+        Dim BodyTrWeightList As List(Of String)
+        Dim LoadingList As List(Of String)
+        Dim AxleShares As List(Of String)
+        Dim AxleSharesTr As List(Of String)
+        Dim l0 As List(Of Single)
+        Dim WHTCWF As List(Of String)
+        Dim dWHTCWF As Dictionary(Of tWHTCpart, Single)
+
+        'Initialize
+        Missions = New Dictionary(Of tMission, cMission)
+        SegmentTable = New cSegmentTable
+
+        If Not IO.Directory.Exists(MyDeclPath) Then
+            GUImsg(tMsgID.Err, "Failed to load Declaration Config!")
+            Return False
+        End If
+
+        'Init Missionlist
+        mc0 = New cMission
+        mc0.MissionID = tMission.LongHaul
+        mc0.NameStr = "Long Haul"
+        mc0.CyclePath = MyDeclPath & "MissionCycles\Long_Haul.vdri"
+        Missions.Add(mc0.MissionID, mc0)
+        SegmentTable.MissionList.Add(mc0.MissionID)
+
+        mc0 = New cMission
+        mc0.MissionID = tMission.RegionalDelivery
+        mc0.NameStr = "Regional Delivery"
+        mc0.CyclePath = MyDeclPath & "MissionCycles\Regional_Delivery.vdri"
+        Missions.Add(mc0.MissionID, mc0)
+        SegmentTable.MissionList.Add(mc0.MissionID)
+
+        mc0 = New cMission
+        mc0.MissionID = tMission.UrbanDelivery
+        mc0.NameStr = "Urban Delivery"
+        mc0.CyclePath = MyDeclPath & "MissionCycles\Urban_Delivery.vdri"
+        Missions.Add(mc0.MissionID, mc0)
+        SegmentTable.MissionList.Add(mc0.MissionID)
+
+        mc0 = New cMission
+        mc0.MissionID = tMission.MunicipalUtility
+        mc0.NameStr = "Municipal Utility"
+        mc0.CyclePath = MyDeclPath & "MissionCycles\Municipal_Utility.vdri"
+        Missions.Add(mc0.MissionID, mc0)
+        SegmentTable.MissionList.Add(mc0.MissionID)
+
+        mc0 = New cMission
+        mc0.MissionID = tMission.Construction
+        mc0.NameStr = "Construction"
+        mc0.CyclePath = MyDeclPath & "MissionCycles\Construction.vdri"
+        Missions.Add(mc0.MissionID, mc0)
+        SegmentTable.MissionList.Add(mc0.MissionID)
+
+        mc0 = New cMission
+        mc0.MissionID = tMission.HeavyUrban
+        mc0.NameStr = "HeavyUrban"
+        mc0.CyclePath = MyDeclPath & "MissionCycles\Citybus_Heavy_Urban.vdri"
+        Missions.Add(mc0.MissionID, mc0)
+        SegmentTable.MissionList.Add(mc0.MissionID)
+
+        mc0 = New cMission
+        mc0.MissionID = tMission.Urban
+        mc0.NameStr = "Urban"
+        mc0.CyclePath = MyDeclPath & "MissionCycles\Citybus_Urban.vdri"
+        Missions.Add(mc0.MissionID, mc0)
+        SegmentTable.MissionList.Add(mc0.MissionID)
+
+
+        mc0 = New cMission
+        mc0.MissionID = tMission.Suburban
+        mc0.NameStr = "Suburban"
+        mc0.CyclePath = MyDeclPath & "MissionCycles\Citybus_Suburban.vdri"
+        Missions.Add(mc0.MissionID, mc0)
+        SegmentTable.MissionList.Add(mc0.MissionID)
+
+        mc0 = New cMission
+        mc0.MissionID = tMission.Interurban
+        mc0.NameStr = "Interurban"
+        mc0.CyclePath = MyDeclPath & "MissionCycles\Interurban_Bus.vdri"
+        Missions.Add(mc0.MissionID, mc0)
+        SegmentTable.MissionList.Add(mc0.MissionID)
+
+
+        mc0 = New cMission
+        mc0.MissionID = tMission.Coach
+        mc0.NameStr = "Coach"
+        mc0.CyclePath = MyDeclPath & "MissionCycles\Coach.vdri"
+        Missions.Add(mc0.MissionID, mc0)
+        SegmentTable.MissionList.Add(mc0.MissionID)
+
+
+        'Segment Table
+        If Not file.OpenRead(MyDeclPath & "SegmentTable.csv") Then
+            GUImsg(tMsgID.Err, "Failed to load Declaration Config (Segment Table)!")
+            Return False
+        End If
+
+        Try
+            'Header
+            line = file.ReadLine
+
+            'Data
+            Do While Not file.EndOfFile
+                line = file.ReadLine
+
+                If CBool(line(0)) Then
+                    ste0 = New cSegmentTableEntry
+                    BodyTrWeightList = New List(Of String)
+                    LoadingList = New List(Of String)
+                    AxleShares = New List(Of String)
+                    AxleSharesTr = New List(Of String)
+                    WHTCWF = New List(Of String)
+
+                    ste0.VehCat = ConvVehCat(line(1))
+
+                    If ste0.VehCat = tVehCat.Undef Then
+                        file.Close()
+                        GUImsg(tMsgID.Err, "Failed to load Declaration Config (Segment Table)! " & line(1) & " is no valid Vehicle Configuration.")
+                        Return False
+                    End If
+
+                    ste0.AxleConf = ConvAxleConf(line(2))
+
+                    If ste0.AxleConf = tAxleConf.Undef Then
+                        file.Close()
+                        GUImsg(tMsgID.Err, "Failed to load Declaration Config (Segment Table)! " & line(2) & " is no valid Axle Configuration.")
+                        Return False
+                    End If
+
+                    ste0.MinGVW = CSng(line(3))
+                    ste0.MaxGVW = CSng(line(4))
+                    ste0.HDVclass = line(5)
+                    ste0.VACCfile = MyDeclPath & "VACC\" & line(6)
+                    ste0.VCDVfile = MyDeclPath & "VCDV\" & line(7)
+
+                    AxleShares.Add(line(8))    'Long Haul
+                    For Each mt0 In SegmentTable.MissionList  'Other cycles
+                        If mt0 <> tMission.LongHaul Then AxleShares.Add(line(9))
+                    Next
+
+                    AxleSharesTr.Add(line(10))   'Long Haul
+                    For Each mt0 In SegmentTable.MissionList  'Other cycles
+                        If mt0 <> tMission.LongHaul Then AxleSharesTr.Add(line(11))
+                    Next
+
+                    ste0.LongHaulRigidTrailer = (Trim(line(10)) <> "0/0" And Trim(line(11)) = "0/0" And ste0.VehCat = tVehCat.RigidTruck)
+
+                    i = 11
+                    For Each mt0 In SegmentTable.MissionList
+                        i += 1
+                        ste0.UseMission.Add(CBool(line(i)))
+                    Next
+                    For Each mt0 In SegmentTable.MissionList
+                        i += 1
+                        BodyTrWeightList.Add(line(i))
+                    Next
+                    For Each mt0 In SegmentTable.MissionList
+                        i += 1
+                        LoadingList.Add(line(i))
+                    Next
+
+                    For Each mt0 In SegmentTable.MissionList
+                        i += 1
+                        WHTCWF.Add(line(i))
+                    Next
+
+                    For i = 0 To SegmentTable.MissionList.Count - 1
+                        If ste0.UseMission(i) Then
+                            ste0.Missions.Add(SegmentTable.MissionList(i))
+                            ste0.Loading.Add(SegmentTable.MissionList(i), LoadingList(i))
+                            ste0.BodyTrWeight.Add(SegmentTable.MissionList(i), BodyTrWeightList(i))
+
+                            l0 = New List(Of Single)
+                            For Each s0 In AxleShares(i).Split("/")
+                                l0.Add(CSng(s0))
+                            Next
+                            ste0.AxleShares.Add(SegmentTable.MissionList(i), l0)
+
+                            l0 = New List(Of Single)
+
+                            TrS = AxleSharesTr(i).Split("/")(0)
+                            TrA = AxleSharesTr(i).Split("/")(1)
+
+                            For a = 1 To TrA
+                                l0.Add(TrS / TrA)
+                            Next
+
+                            ste0.AxleSharesTr.Add(SegmentTable.MissionList(i), l0)
+
+                            s = WHTCWF(i).Split("/")
+                            dWHTCWF = New Dictionary(Of tWHTCpart, Single)
+                            dWHTCWF.Add(tWHTCpart.Urban, CSng(s(0)) / 100)
+                            dWHTCWF.Add(tWHTCpart.Rural, CSng(s(1)) / 100)
+                            dWHTCWF.Add(tWHTCpart.Motorway, CSng(s(2)) / 100)
+
+                            ste0.WHTCWF.Add(SegmentTable.MissionList(i), dWHTCWF)
+
+                        End If
+                    Next
+
+                    SegmentTable.SegTableEntries.Add(ste0)
+
+                End If
+
+            Loop
+        Catch ex As Exception
+            file.Close()
+            GUImsg(tMsgID.Err, "Failed to load Declaration Config (Segment Table)! " & ex.Message)
+            Return False
+        End Try
+
+        Cfg.DeclInit()
+
+        GUImsg(tMsgID.Normal, "Declaration Config loaded.")
+
+        Return True
+
+    End Function
+
+    Public Function GetEngInertia(ByVal Displ As Single) As Single
+        Return 0.41 + 0.27 * (Displ / 1000)
+    End Function
+
+    Public Function TracInt(ByVal Gearbox As tGearbox) As Single
+        Select Case Gearbox
+            Case tGearbox.Manual
+                Return 1
+
+            Case tGearbox.SemiAutomatic
+                Return 0.8
+
+            Case Else 'tGearbox.Automatic
+                Return 0.8
+
+        End Select
+    End Function
+
+    Public Function SkipGears(ByVal Gearbox As tGearbox) As Boolean
+        If Gearbox = tGearbox.Automatic Then
+            Return False
+        Else
+            Return True
+        End If
+    End Function
+
+    Public Function ShiftInside(ByVal Gearbox As tGearbox) As Boolean
+        If Gearbox = tGearbox.SemiAutomatic Then
+            Return True
+        Else
+            Return False
+        End If
+    End Function
+
+    Public Function ShiftTime(ByVal Gearbox As tGearbox) As Single
+        Select Case Gearbox
+            Case tGearbox.Manual
+                Return 3
+
+            Case tGearbox.SemiAutomatic
+                Return 2
+
+            Case Else 'tGearbox.Automatic
+                Return 2
+
+        End Select
+    End Function
+
+    Public Function SetRef() As Boolean
+        Return SegmentTable.SetRef(SegRef, VEH.VehCat, VEH.AxleConf, VEH.MassMax)
+    End Function
+
+
+    ''' <summary>
+    ''' Init Vehicle for current mission. Must happen before setting loading in CalcInitLoad
+    ''' </summary>
+    ''' <param name="CycleIndex"></param>
+    ''' <returns></returns>
+    ''' <remarks></remarks>
+    Public Function CalcInitCycle(ByVal CycleIndex As Integer) As Boolean
+
+        CurrentMission = Missions(SegRef.Missions(CycleIndex))
+
+        If Not VEH.DeclInit Then Return False
+
+        Return True
+
+    End Function
+
+    ''' <summary>
+    ''' Set Loading. Mission-based initialisation (CalcInitCycle) must already be done before running this.
+    ''' </summary>
+    ''' <param name="Loading"></param>
+    ''' <returns></returns>
+    ''' <remarks></remarks>
+    Public Function CalcInitLoad(ByVal Loading As tLoading) As Boolean
+
+        If Not VEH.DeclInitLoad(Loading) Then Return False
+
+        Return True
+
+    End Function
+
+
+    Public Function WHTCinit() As Boolean
+        Dim path As String
+        Dim file As New cFile_V3
+        Dim line As String()
+        Dim nU As Single
+        Dim Tq As Single
+        Dim MsgSrc As String
+
+        MsgSrc = "WHTCcor/Init"
+
+        path = MyDeclPath & "WHTC.csv"
+        If Not file.OpenRead(path) Then
+            WorkerMsg(tMsgID.Err, "Failed to load WHTC cycle!", MsgSrc)
+            Return False
+        End If
+
+        DRI = New cDRI
+        DRI.Values = New Dictionary(Of tDriComp, List(Of Double))
+        DRI.Values.Add(tDriComp.nU, New List(Of Double))
+        DRI.Values.Add(tDriComp.Pe, New List(Of Double))
+        DRI.Nvorg = True
+        DRI.Pvorg = True
+
+        Do While Not file.EndOfFile
+            line = file.ReadLine
+
+            nU = line(1)
+            Tq = line(2)
+
+            'Denorm
+            nU = nU * 0.01 * (0.45 * ENG.Nlo + 0.45 * ENG.Npref + 0.1 * ENG.nHi - ENG.Nidle) * 2.0327 + ENG.Nidle
+
+            If Tq < 0 Then
+                Tq = -90000000000.0
+            Else
+                Tq = Tq * 0.01 * (FLD(0).Tq(nU))
+            End If
+
+            DRI.Values(tDriComp.nU).Add(nU)
+            DRI.Values(tDriComp.Pe).Add(nMtoPe(nU, Tq))
+
+        Loop
+
+        DRI.tDim = DRI.Values(tDriComp.nU).Count - 1
+
+        Return True
+
+    End Function
+
+    Public Sub WHTCcorrCalc()
+        Dim sum As Double
+        Dim Psum As Double
+        Dim i As Integer
+        Dim FC As List(Of Single)
+
+        WHTCresults = New Dictionary(Of tWHTCpart, Single)
+
+        FC = MODdata.lFC
+
+
+        'Urban
+        sum = 0
+        Psum = 0
+        For i = 0 To 899
+            sum += FC(i)
+            Psum += Math.Max(0, MODdata.Pe(i))
+        Next
+        WHTCresults.Add(tWHTCpart.Urban, sum / Psum)
+
+        'Rural
+        sum = 0
+        Psum = 0
+        For i = 900 To 1379
+            sum += FC(i)
+            Psum += Math.Max(0, MODdata.Pe(i))
+        Next
+        WHTCresults.Add(tWHTCpart.Rural, sum / Psum)
+
+        'Motorway
+        sum = 0
+        Psum = 0
+        For i = 1380 To 1799
+            sum += FC(i)
+            Psum += Math.Max(0, MODdata.Pe(i))
+        Next
+        WHTCresults.Add(tWHTCpart.Motorway, sum / Psum)
+
+    End Sub
+
+End Class
+
+Public Class cMission
+    Public MissionID As tMission
+    Public NameStr As String
+    Public CyclePath As String
+End Class
+
+Public Class cSegmentTable
+    Public SegTableEntries As New List(Of cSegmentTableEntry)
+    Public MissionList As New List(Of tMission)
+
+    Public Function SetRef(ByRef SegTableEntryRef As cSegmentTableEntry, ByVal VehCat As tVehCat, ByVal AxleConf As tAxleConf, ByVal MaxMass As Single) As Boolean
+        Dim s0 As cSegmentTableEntry
+
+        For Each s0 In SegTableEntries
+            If s0.VehCat = VehCat And s0.AxleConf = AxleConf And s0.MaxGVW > MaxMass And s0.MinGVW <= MaxMass Then
+                SegTableEntryRef = s0
+                Return True
+            End If
+        Next
+
+        SegTableEntryRef = Nothing
+        Return False
+
+    End Function
+
+End Class
+
+Public Class cSegmentTableEntry
+    Public VehCat As tVehCat
+    Public AxleConf As tAxleConf
+    Public MinGVW As Single
+    Public MaxGVW As Single
+    Public VehClass As String
+    Public Missions As New List(Of tMission)
+    Public UseMission As New List(Of Boolean)
+    Public HDVclass As String
+    Public VACCfile As String
+    Public VCDVfile As String
+    Public BodyTrWeight As New Dictionary(Of tMission, String)
+    Public Loading As New Dictionary(Of tMission, String)
+    Public AxleShares As New Dictionary(Of tMission, List(Of Single))
+    Public AxleSharesTr As New Dictionary(Of tMission, List(Of Single))
+    Public WHTCWF As New Dictionary(Of tMission, Dictionary(Of tWHTCpart, Single))
+    Public LongHaulRigidTrailer As Boolean
+
+    Public Function GetCycles() As List(Of String)
+        Dim l As New List(Of String)
+        Dim m As tMission
+
+        For Each m In Missions
+            l.Add(Declaration.Missions(m).CyclePath)
+        Next
+
+        Return l
+
+    End Function
+
+    Public Function GetBodyTrWeight(ByVal Mission As tMission) As Single
+
+        'Check if Config is valid
+        If BodyTrWeight.ContainsKey(Mission) AndAlso IsNumeric(BodyTrWeight(Mission)) Then
+            Return CSng(BodyTrWeight(Mission))
+        Else
+            Return -1
+        End If
+
+    End Function
+
+    Public Function GetLoading(ByVal Mission As tMission, ByVal MassMax As Single) As Single
+
+        'Check if Config is valid
+        If Loading.ContainsKey(Mission) Then
+            If Not (Loading(Mission) = "f" OrElse IsNumeric(Loading(Mission))) Then
+                Return -1
+            End If
+        Else
+            Return -1
+        End If
+
+        'Return Loading
+        If HDVclass < 4 Then
+            If Mission = tMission.LongHaul Then
+                Return 588.2 * MassMax * 1000 - 2511.8
+            Else
+                Return 394.1 * MassMax * 1000 - 1705.9
+            End If
+        Else
+            Return CSng(Loading(Mission))
+        End If
+
+    End Function
+
+
+
+End Class
+
+Public Class cReport
+    Private MyChart As
+End Class
+
diff --git a/VECTO/cERG.vb b/VECTO/cERG.vb
deleted file mode 100644
index 0960ab63ea7a58bd1dada11d7f2d03ccae002b5e..0000000000000000000000000000000000000000
--- a/VECTO/cERG.vb
+++ /dev/null
@@ -1,680 +0,0 @@
-Imports System.Collections.Generic
-
-Class cERG
-
-    Private Const FormatVersion As String = "1.0"
-
-    Private ERGpath As String
-    Private Ferg As System.IO.StreamWriter
-    Private HeadInitialized As Boolean
-
-    Private ErgEntries As Dictionary(Of String, cErgEntry)
-    Private ErgEntryList As List(Of String)     'Wird benötigt weil Dictionary nicht sortiert ist
-
-    Private ergJSON As cJSON
-    Private ResList As List(Of Dictionary(Of String, Object))
-
-
-    Public Sub New()
-        HeadInitialized = False
-        ERGpath = ""
-    End Sub
-
-    Public Function ErgHead() As String
-        Dim s As New System.Text.StringBuilder
-        Dim key As String
-        Dim First As Boolean
-
-        First = True
-        For Each key In ErgEntryList
-            If Not First Then s.Append(",")
-            s.Append(ErgEntries(key).Head)
-            First = False
-        Next
-
-        Return s.ToString
-
-    End Function
-
-    Public Function ErgUnits() As String
-        Dim s As New System.Text.StringBuilder
-        Dim First As Boolean
-        Dim key As String
-
-        First = True
-        For Each key In ErgEntryList
-            If Not First Then s.Append(",")
-            s.Append(ErgEntries(key).Unit)
-            First = False
-        Next
-
-        Return s.ToString
-
-    End Function
-
-    Public Function ErgLine() As String
-        Dim ErgEntry As cErgEntry
-        Dim s As New System.Text.StringBuilder
-        Dim t1 As Integer
-        Dim Vquer As Single
-        Dim sum As Double
-        Dim t As Integer
-        Dim Em0 As cEmComp
-        Dim key As String
-        Dim First As Boolean
-
-        For Each ErgEntry In ErgEntries.Values
-            ErgEntry.ValueString = Nothing
-        Next
-
-        t1 = MODdata.tDim
-
-        'Vehicle type-independent
-        ErgEntries("\\T").ValueString = (t1 + 1)
-
-        'Length, Speed, Slope
-        If Not GEN.EngOnly Then
-
-            'Average-Speed. calculation
-            sum = 0
-            For t = 0 To t1
-                sum += MODdata.Vh.V(t)
-            Next
-            Vquer = 3.6 * sum / (t1 + 1)
-
-            ErgEntries("\\S").ValueString = (Vquer * (t1 + 1) / 3600)
-            ErgEntries("\\V").ValueString = Vquer
-
-            'altitude change
-            ErgEntries("\\G").ValueString = MODdata.Vh.AltIntp(Vquer * (t1 + 1) / 3.6) - MODdata.Vh.AltIntp(0)
-
-            'Auxiliary energy consumption
-            If GEN.AuxDef Then
-                For Each key In GEN.AuxPaths.Keys
-                    sum = 0
-                    For t = 0 To t1
-                        sum += MODdata.Paux(key)(t)
-                    Next
-                    ErgEntries("\\Eaux_" & UCase(key)).ValueString = sum / 3600
-                Next
-            End If
-
-
-        End If
-
-        'Emissions
-        For Each Em0 In MODdata.Em.EmComp.Values
-
-            'Dump x/h if ADVANCE mode -or- EngineOnly -or- Units not in x/h and therefore Conversion into x/km is not possible
-            If Em0.WriteOutput Then
-
-                If FCerror Then
-                    If Em0.NormID = tEmNorm.x Or GEN.EngOnly Then
-                        ErgEntries(Em0.IDstring).ValueString = "ERROR"
-                    Else
-                        ErgEntries(Em0.IDstring & "_km").ValueString = "ERROR"
-                    End If
-                Else
-                    If Em0.NormID = tEmNorm.x Or GEN.EngOnly Then
-                        ErgEntries(Em0.IDstring).ValueString = Em0.FinalAvg
-                    Else
-                        ErgEntries(Em0.IDstring & "_km").ValueString = (Em0.FinalAvg / Vquer)
-                    End If
-                End If
-
-            End If
-
-        Next
-
-        'Power, Revolutions
-        'sum = 0
-        'For t = 0 To t1
-        '    sum += MODdata.Pe(t)
-        'Next
-        'ErgEntries("\\Pe_norm").ValueString = (sum / (t1 + 1))
-
-        'sum = 0
-        'For t = 0 To t1
-        '    sum += MODdata.nn(t)
-        'Next
-        'ErgEntries("\\n_norm").ValueString = (sum / (t1 + 1))
-
-        'Ppos
-        sum = 0
-        For t = 0 To t1
-            sum += Math.Max(0, MODdata.Pe(t))
-        Next
-        ErgEntries("\\Ppos").ValueString = (sum / (t1 + 1))
-
-        'Pneg
-        sum = 0
-        For t = 0 To t1
-            sum += Math.Min(0, MODdata.Pe(t))
-        Next
-        ErgEntries("\\Pneg").ValueString = (sum / (t1 + 1))
-
-
-
-        'Only Entire-vehicle (not EngOnly)
-        If Not GEN.EngOnly Then
-
-            'Pbrake-norm
-            sum = 0
-            For t = 0 To t1
-                sum += MODdata.Pbrake(t)
-            Next
-            ErgEntries("\\Pbrake").ValueString = (sum / (t1 + 1))
-
-            'Eair
-            sum = 0
-            For t = 0 To t1
-                sum += MODdata.Pluft(t)
-            Next
-            ErgEntries("\\Eair").ValueString = (-sum / 3600)
-
-            'Eroll
-            sum = 0
-            For t = 0 To t1
-                sum += MODdata.Proll(t)
-            Next
-            ErgEntries("\\Eroll").ValueString = (-sum / 3600)
-
-            'Egrad
-            sum = 0
-            For t = 0 To t1
-                sum += MODdata.Pstg(t)
-            Next
-            ErgEntries("\\Egrad").ValueString = (-sum / 3600)
-
-            'Eacc
-            sum = 0
-            For t = 0 To t1
-                sum += MODdata.Pa(t) + MODdata.PaGB(t) + MODdata.PaEng(t)
-            Next
-            ErgEntries("\\Eacc").ValueString = (-sum / 3600)
-
-            'Eaux
-            sum = 0
-            For t = 0 To t1
-                sum += MODdata.PauxSum(t)
-            Next
-            ErgEntries("\\Eaux").ValueString = (-sum / 3600)
-
-            'Ebrake
-            sum = 0
-            For t = 0 To t1
-                sum += MODdata.Pbrake(t)
-            Next
-            ErgEntries("\\Ebrake").ValueString = (sum / 3600)
-
-            'Etransm
-            sum = 0
-            For t = 0 To t1
-                sum += MODdata.PlossDiff(t) + MODdata.PlossGB(t)
-            Next
-            ErgEntries("\\Etransm").ValueString = (-sum / 3600)
-
-            'Masse, Loading
-            ErgEntries("\\Mass").ValueString = (VEH.Mass + VEH.MassExtra)
-            ErgEntries("\\Loading").ValueString = VEH.Loading
-
-            'CylceKin
-            For Each ErgEntry In MODdata.CylceKin.ErgEntries
-                ErgEntries("\\" & ErgEntry.Head).ValueString = MODdata.CylceKin.GetValueString(ErgEntry.Head)
-            Next
-
-            'EposICE
-            sum = 0
-            For t = 0 To t1
-                sum += Math.Max(0, MODdata.Pe(t))
-            Next
-            ErgEntries("\\EposICE").ValueString = (sum / 3600)
-
-            'EnegICE
-            sum = 0
-            For t = 0 To t1
-                sum += Math.Min(0, MODdata.Pe(t))
-            Next
-            ErgEntries("\\EnegICE").ValueString = (sum / 3600)
-
-        End If
-
-        'Create Output-string:
-        First = True
-
-        For Each key In ErgEntryList
-            If Not First Then s.Append(",")
-            s.Append(ErgEntries(key).ValueString)
-            First = False
-        Next
-
-        Return s.ToString
-
-    End Function
-
-    Private Function HeadInit() As Boolean
-        Dim MsgSrc As String
-
-        MsgSrc = "SUMALL/Output"
-
-        'Open file
-        Try
-            Ferg = My.Computer.FileSystem.OpenTextFileWriter(ERGpath, True, FileFormat)
-            Ferg.AutoFlush = True
-        Catch ex As Exception
-            WorkerMsg(tMsgID.Err, "Cannot access .vsum file (" & ERGpath & ")", MsgSrc)
-            Return False
-        End Try
-
-        '*** Header / Units
-        Ferg.WriteLine("Job,Input File,Cycle," & ErgHead())
-        Ferg.WriteLine("[-],[-],[-]," & ErgUnits())
-
-        'Close file (will open after each job)
-        Ferg.Close()
-
-        HeadInitialized = True
-
-        Return True
-
-    End Function
-
-    Public Function AusgERG(ByVal NrOfRunStr As String, ByVal GenFilename As String, ByVal CycleFilename As String, ByVal AbortedByError As Boolean) As Boolean
-        Dim str As String
-        Dim MsgSrc As String
-        Dim dic As Dictionary(Of String, Object)
-        Dim dic0 As Dictionary(Of String, Object)
-        Dim dic1 As Dictionary(Of String, Object)
-        Dim key As String
-
-        MsgSrc = "SUMALL/Output"
-
-        If Not HeadInitialized Then
-            If Not HeadInit() Then Return False
-        End If
-
-        'JSON
-        dic = New Dictionary(Of String, Object)
-
-        'Open file
-        Try
-            Ferg = My.Computer.FileSystem.OpenTextFileWriter(ERGpath, True, FileFormat)
-            Ferg.AutoFlush = True
-        Catch ex As Exception
-            WorkerMsg(tMsgID.Err, "Cannot access .vsum file (" & ERGpath & ")", MsgSrc)
-            Return False
-        End Try
-
-        str = NrOfRunStr & "," & GenFilename & "," & CycleFilename & ","
-        dic.Add("Job", GenFilename)
-        dic.Add("Cycle", CycleFilename)
-
-        If AbortedByError Then
-            Ferg.WriteLine(str & "Aborted due to Error!")
-            dic.Add("AbortedByError", True)
-        Else
-            Ferg.WriteLine(str & ErgLine())
-            dic.Add("AbortedByError", False)
-
-            dic1 = New Dictionary(Of String, Object)
-            For Each key In ErgEntryList
-                dic0 = New Dictionary(Of String, Object)
-                dic0.Add("Value", ErgEntries(key).ValueString)
-                dic0.Add("Unit", ErgEntries(key).Unit)
-                dic1.Add(ErgEntries(key).Head, dic0)
-            Next
-            dic.Add("Results", dic1)
-
-        End If
-
-        ResList.Add(dic)
-
-
-        'Close file
-        Ferg.Close()
-        Ferg = Nothing
-
-        Return True
-
-    End Function
-
-    Public Function WriteJSON() As Boolean
-
-        ergJSON.Content("Body").add("Results", ResList)
-
-        Try
-            Return ergJSON.WriteFile(ERGpath & ".json")
-        Catch ex As Exception
-            Return False
-        End Try
-
-    End Function
-
-    Private Sub AddToErg(ByVal IDstring As String, ByVal Head As String, ByVal Unit As String)
-        If Not ErgEntries.ContainsKey(IDstring) Then
-            ErgEntries.Add(IDstring, New cErgEntry(Head, Unit))
-            ErgEntryList.Add(IDstring)
-        End If
-    End Sub
-
-    Private Sub AddToErg(ByVal IDstring As String, ByVal Head As String, ByVal Unit As String, ByVal PerKm As Boolean)
-        If PerKm Then
-            If Not ErgEntries.ContainsKey(IDstring & "_km") Then
-                ErgEntries.Add(IDstring & "_km", New cErgEntry(Head, Unit))
-                ErgEntryList.Add(IDstring & "_km")
-            End If
-        Else
-            If Not ErgEntries.ContainsKey(IDstring) Then
-                ErgEntries.Add(IDstring, New cErgEntry(Head, Unit))
-                ErgEntryList.Add(IDstring)
-            End If
-        End If
-
-    End Sub
-
-    Public Function Init(ByVal GenFile As String) As Boolean
-        Dim GENs As New List(Of String)
-        Dim str As String
-        Dim str1 As String
-        Dim iGEN As Integer
-        Dim file As New cFile_V3
-        Dim GEN0 As cGEN
-        Dim MAP0 As cMAP
-        Dim ENG0 As cENG
-        Dim Em0 As cEmComp
-        Dim HEVorEVdone As Boolean
-        Dim EVdone As Boolean
-        Dim EngOnly As Boolean
-        Dim NonEngOnly As Boolean
-        Dim ErgEntry As cErgEntry
-        Dim CylceKin As cCycleKin
-        Dim i1 As Integer
-        Dim i2 As Integer
-        Dim iDim As Integer
-        Dim dic As Dictionary(Of String, Object)
-
-
-        Dim MsgSrc As String
-
-        MsgSrc = "SUMALL/Init"
-
-        'Check if file exists
-        If Not IO.File.Exists(GenFile) Then
-            WorkerMsg(tMsgID.Err, "Job file not found! (" & GenFile & ")", MsgSrc)
-            Return False
-        End If
-
-        'Define Output-path
-        If (PHEMmode = tPHEMmode.ModeBATCH) Then
-            Select Case UCase(Cfg.BATCHoutpath)
-                Case sKey.WorkDir
-                    ERGpath = Cfg.WorkDPath & fFILE(GenFile, False) & "_BATCH.vsum"
-                Case sKey.GenPath
-                    ERGpath = fFileWoExt(GenFile) & "_BATCH.vsum"
-                Case Else
-                    ERGpath = Cfg.BATCHoutpath & fFILE(GenFile, False) & "_BATCH.vsum"
-            End Select
-        Else
-            ERGpath = fFileWoExt(GenFile) & ".vsum"
-        End If
-
-        'Open file
-        Try
-            'Open file
-            Ferg = My.Computer.FileSystem.OpenTextFileWriter(ERGpath, False, FileFormat)
-            Ferg.AutoFlush = True
-        Catch ex As Exception
-            WorkerMsg(tMsgID.Err, "Cannot write to .vsum file (" & ERGpath & ")", MsgSrc)
-            Return False
-        End Try
-
-        'JSON
-        ergJSON = New cJSON
-
-        dic = New Dictionary(Of String, Object)
-        dic.Add("CreatedBy", Lic.LicString & " (" & Lic.GUID & ")")
-        dic.Add("Date", Now.ToString)
-        dic.Add("AppVersion", VECTOvers)
-        dic.Add("FileVersion", FormatVersion)
-        ergJSON.Content.Add("Header", dic)
-        ergJSON.Content.Add("Body", New Dictionary(Of String, Object))
-        dic = New Dictionary(Of String, Object)
-        dic.Add("Air Density [kg/m3]", Cfg.AirDensity)
-        dic.Add("Distance Correction", Cfg.WegKorJa)
-        ergJSON.Content("Body").add("Settings", dic)
-
-        ResList = New List(Of Dictionary(Of String, Object))
-
-        'Info
-        Ferg.WriteLine("VECTO results")
-        Ferg.WriteLine("VECTO " & VECTOvers)
-        Ferg.WriteLine(Now.ToString)
-        Ferg.WriteLine("air density [kg/m3]: " & Cfg.AirDensity)
-        If Cfg.WegKorJa Then
-            Ferg.WriteLine("Distance Correction ON")
-        Else
-            Ferg.WriteLine("Distance Correction OFF")
-        End If
-
-        'Close file (will open after each job)
-        Ferg.Close()
-
-        'Add file to signing list
-        Lic.FileSigning.AddFile(ERGpath)
-        If Cfg.JSON Then Lic.FileSigning.AddFile(ERGpath & ".json")
-
-
-        ErgEntries = New Dictionary(Of String, cErgEntry)
-        ErgEntryList = New List(Of String)
-
-
-        '********************** GEN-Liste raussuchen. Bei ADVANCE aus Flotte sonst aus Jobliste '********************** |@@| Select GEN-list for ADVANCE either from Fleet or from Job-list '**********************
-        For Each str In JobFileList
-            GENs.Add(fFileRepl(str))
-        Next
-        iGEN = GENs.Count - 1
-
-
-        '********************** Create Erg-entries '**********************
-        EVdone = False
-        HEVorEVdone = False
-        EngOnly = False
-        NonEngOnly = False
-
-        'Vehicle type-independent
-        AddToErg("\\T", "time", "[s]")
-
-        'For each GEN-file check Mode and Map
-        For Each str In GENs
-
-            GEN0 = New cGEN
-
-            GEN0.FilePath = str
-
-            Try
-                If Not GEN0.ReadFile Then
-                    WorkerMsg(tMsgID.Err, "Can't read .gen file '" & str & "' !", MsgSrc)
-                    Return False
-                End If
-            Catch ex As Exception
-                WorkerMsg(tMsgID.Err, "File read error! (" & str & ")", MsgSrc)
-                Return False
-            End Try
-
-            If GEN0.EngOnly Then
-
-                If Not EngOnly Then
-
-                    'nothing...
-
-                    EngOnly = True
-
-                End If
-
-            Else
-
-                If Not NonEngOnly Then
-
-                    AddToErg("\\S", "distance", "[km]")
-                    AddToErg("\\V", "speed", "[km/h]")
-                    AddToErg("\\G", "∆altitude", "[m]")
-
-                    NonEngOnly = True
-
-                End If
-
-                'Auxiliary energy consumption
-                If GEN0.AuxDef Then
-                    For Each str1 In GEN0.AuxPaths.Keys
-                        AddToErg("\\Eaux_" & UCase(str1), "Eaux_" & str1, "[kWh]")
-                    Next
-                End If
-
-            End If
-
-            'Conventional vehicles ...
-            'AddToErg("\\n_norm", "n_norm", "[-]")
-            'AddToErg("\\Pe_norm", "Pe_norm", "[-]")
-            AddToErg("\\Ppos", "Ppos", "[kW]")
-            AddToErg("\\Pneg", "Pneg", "[kW]")
-
-            'From the Engine-Map
-            ENG0 = New cENG
-            ENG0.FilePath = GEN0.PathENG
-
-            Try
-                If Not ENG0.ReadFile Then Return False
-            Catch ex As Exception
-                WorkerMsg(tMsgID.Err, "File read error! (" & GEN0.PathENG & ")", MsgSrc)
-                Return False
-            End Try
-
-            MAP0 = New cMAP
-            MAP0.FilePath = ENG0.PathMAP
-
-            Try
-                If Not MAP0.ReadFile(False) Then Return False 'Fehlermeldungen werden auch bei "MsgOutput = False" ausgegeben
-            Catch ex As Exception
-                WorkerMsg(tMsgID.Err, "File read error! (" & ENG0.PathMAP & ")", MsgSrc)
-                Return False
-            End Try
-
-
-            For Each str1 In MAP0.EmList
-
-                Em0 = MAP0.EmComponents(str1)
-
-                If Em0.WriteOutput Then
-
-                    'Dump x/h if ADVANCE mode -or- EngineOnly -or- Units not in x/h and therefore Conversion into x/km is not possible
-                    If Em0.NormID = tEmNorm.x Or GEN0.EngOnly Then
-                        AddToErg(Em0.IDstring, Em0.Name, Em0.Unit, False)
-                    Else
-                        AddToErg(Em0.IDstring, Em0.Name, "[" & Em0.RawUnit & "/km]", True)
-                    End If
-
-                End If
-
-            Next
-
-
-
-
-        Next
-
-
-        If EngOnly Then
-
-            'currently nothing
-
-        End If
-
-        If NonEngOnly Then
-
-            'Vehicle-related fields
-            AddToErg("\\Pbrake", "Pbrake", "[kW]")
-            AddToErg("\\EposICE", "EposICE", "[kWh]")
-            AddToErg("\\EnegICE", "EnegICE", "[kWh]")
-            AddToErg("\\Eair", "Eair", "[kWh]")
-            AddToErg("\\Eroll", "Eroll", "[kWh]")
-            AddToErg("\\Egrad", "Egrad", "[kWh]")
-            AddToErg("\\Eacc", "Eacc", "[kWh]")
-            AddToErg("\\Eaux", "Eaux", "[kWh]")
-            AddToErg("\\Ebrake", "Ebrake", "[kWh]")
-            AddToErg("\\Etransm", "Etransm", "[kWh]")
-            AddToErg("\\Mass", "Mass", "[kg]")
-            AddToErg("\\Loading", "Loading", "[kg]")
-
-            'CylceKin
-            CylceKin = New cCycleKin
-            For Each ErgEntry In CylceKin.ErgEntries
-                AddToErg("\\" & ErgEntry.Head, ErgEntry.Head, ErgEntry.Unit)
-            Next
-
-        End If
-
-        'ErgListe sortieren damit g/km und g/h nebeneinander liegen |@@| Sort ErgListe so that g/km and g/h are side-by-side
-        iDim = ErgEntryList.Count - 1
-
-        For i1 = 0 To iDim - 1
-            str = ErgEntries(ErgEntryList(i1)).Head
-            For i2 = i1 + 1 To iDim
-                If ErgEntries(ErgEntryList(i2)).Head = str Then
-                    ErgEntryList.Insert(i1 + 1, ErgEntryList(i2))
-                    ErgEntryList.RemoveAt(i2 + 1)
-                End If
-            Next
-        Next
-
-        'Sort Aux
-        For i1 = 0 To iDim - 1
-            str = ErgEntries(ErgEntryList(i1)).Head
-            If str.Length > 4 AndAlso Left(str, 4) = "Eaux" Then
-                For i2 = i1 + 1 To iDim
-                    If ErgEntries(ErgEntryList(i2)).Head.Length > 4 AndAlso Left(ErgEntries(ErgEntryList(i2)).Head, 4) = "Eaux" Then
-                        ErgEntryList.Insert(i1 + 1, ErgEntryList(i2))
-                        ErgEntryList.RemoveAt(i2 + 1)
-                    End If
-                Next
-            End If
-        Next
-
-        Return True
-
-    End Function
-
-    Public ReadOnly Property ErgFile As String
-        Get
-            Return ERGpath
-        End Get
-    End Property
-
-End Class
-
-Public Class cErgEntry
-    Public Head As String
-    Public Unit As String
-    Public MyVal As Object
-
-    Public Sub New(ByVal HeadStr As String, ByVal UnitStr As String)
-        Head = HeadStr
-        Unit = UnitStr
-        MyVal = Nothing
-    End Sub
-
-    Public Property ValueString As Object
-        Get
-            If MyVal Is Nothing Then
-                Return "-"
-            Else
-                Return MyVal
-            End If
-        End Get
-        Set(value As Object)
-            MyVal = value
-        End Set
-    End Property
-
-
-
-End Class
diff --git a/VECTO/cEmComp.vb b/VECTO/cEmComp.vb
deleted file mode 100644
index 1c1b13c25005ce1c29e011aea819bcf48b6a0bae..0000000000000000000000000000000000000000
--- a/VECTO/cEmComp.vb
+++ /dev/null
@@ -1,80 +0,0 @@
-Public Class cEmComp
-
-    Public Name As String
-
-    'IDstring:
-    '   Def-Komponente: IDstring = sKey (upper case)
-    '   Cstm-Komponente (tMapComp.Undefined): IDstring = Name (upper case)
-    Public IDstring As String
-
-    Public Unit As String
-    Public NormID As tEmNorm
-    Public MapCompID As tMapComp = tMapComp.Undefined
-    Public Col As Integer
-    Public RawVals As System.Collections.Generic.List(Of Single)
-    Public FinalVals As System.Collections.Generic.List(Of Single)
-
-    Public WriteOutput As Boolean
-
-    'Totals/Average Values
-    Public FinalAvg As Single       'Durchschnittswert [g/h]
-    Private FinalSum As Single       'Summe [g]
-    Private FinalAvgPos As Single    'Durchschnittswert ohne negative Werte [g/h]
-    Private FinalSumPos As Single    'Summe ohne negative Werte [g]
-
-    Public Sub New()
-        RawVals = New System.Collections.Generic.List(Of Single)
-        FinalVals = RawVals
-        NormID = tEmNorm.x
-        WriteOutput = True
-    End Sub
-
-    Public ReadOnly Property RawUnit As String
-        Get
-            Dim txt As String
-
-            txt = Me.Unit
-            txt = txt.Replace("[", "")
-            txt = txt.Replace("]", "")
-
-            If NormID = tEmNorm.x OrElse Not txt.Contains("/") Then
-                Return txt
-            Else
-                Return Left(txt, txt.IndexOf("/"))
-            End If
-
-        End Get
-    End Property
-
-    Public Sub SumCalc()
-        Dim x As Single
-        Dim sum As Double
-        Dim sumPos As Double
-
-        sum = 0
-        sumPos = 0
-        For Each x In FinalVals
-            sum += x
-            sumPos += Math.Max(x, 0)
-        Next
-
-        'Averaged
-        FinalAvg = CSng(sum / FinalVals.Count)
-        FinalAvgPos = CSng(sumPos / FinalVals.Count)
-
-        'Total (g/h converted into g)
-        Select Case NormID
-            Case tEmNorm.x
-                FinalSum = sum
-                FinalSumPos = sumPos
-            Case Else 'tEmNorm.x_h, tEmNorm.x_hPnenn, tEmNorm.x_kWh
-                FinalSum = sum / 3600
-                FinalSumPos = sumPos / 3600
-        End Select
-
-    End Sub
-
-
-
-
-End Class
diff --git a/VECTO/cVECTO.vb b/VECTO/cVECTO.vb
deleted file mode 100644
index ddd87c96f54ef730fb7e1cc658232485a3394ba0..0000000000000000000000000000000000000000
--- a/VECTO/cVECTO.vb
+++ /dev/null
@@ -1,154 +0,0 @@
-Imports System.Collections.Generic
-
-Public Class cVECTO
-    Public Mode As tVECTOmode
-    Public CurrentMission As cMission
-    Public Missions As Dictionary(Of tMission, cMission)
-    Public SegmentTable As cSegmentTable
-
-
-    Public Sub New()
-        Mode = tVECTOmode.Declaration
-    End Sub
-
-    Public Function Init() As Boolean
-
-        Dim file As New cFile_V3
-        Dim m0 As cMission
-        Dim s0 As cSegmentTableEntry
-        Dim line As String()
-        Dim i As Integer
-
-        'Initialize
-        Missions = New Dictionary(Of tMission, cMission)
-        SegmentTable = New cSegmentTable
-
-        If Not IO.Directory.Exists(MyDeclPath) Then
-            GUImsg(tMsgID.Err, "Failed to load Declaration Config!")
-            Return False
-        End If
-
-        'Missions
-        If Not file.OpenRead(MyDeclPath & "Missions.csv") Then
-            GUImsg(tMsgID.Err, "Failed to load Declaration Config (Mission Definitions)!")
-            Return False
-        End If
-
-        Try
-            'Header
-            line = file.ReadLine
-            'Data
-            Do While Not file.EndOfFile
-                m0 = New cMission
-                line = file.ReadLine
-                m0.MissionID = CType(CInt(line(0)), tMission)
-                m0.NameStr = line(1)
-                m0.CyclePath = MyDeclPath & line(2)
-                Missions.Add(m0.MissionID, m0)
-            Loop
-        Catch ex As Exception
-            GUImsg(tMsgID.Err, "Failed to load Declaration Config (Mission Definitions)!")
-            file.Close()
-            Return False
-        End Try
-
-        file.Close()
-
-        'Segment Table
-        If Not file.OpenRead(MyDeclPath & "SegmentTable.csv") Then
-            GUImsg(tMsgID.Err, "Failed to load Declaration Config (Segment Table)!")
-            Return False
-        End If
-
-        Try
-            'Header
-            line = file.ReadLine
-            'Data
-            Do While Not file.EndOfFile
-                line = file.ReadLine
-                s0 = New cSegmentTableEntry
-                s0.VehCat = CType(CInt(line(0)), tVehCat)
-                s0.AxleConf = CType(CInt(line(1)), tAxleConf)
-                s0.MaxGVW = CSng(line(2))
-                s0.VehClass = line(3)
-                For i = 4 To 13
-                    If Trim(UCase(line((i)))) = "X" Or Trim(UCase(line((i)))) = "XX" Then
-                        s0.MissionList.Add(CType(CInt(i - 4), tMission))
-                    End If
-                Next
-                SegmentTable.SegTableEntries.Add(s0)
-            Loop
-        Catch ex As Exception
-            file.Close()
-            GUImsg(tMsgID.Err, "Failed to load Declaration Config (Segment Table)!")
-            Return False
-        End Try
-
-        GUImsg(tMsgID.Normal, "Declaration Config loaded.")
-
-        Return True
-
-    End Function
-
-
-
-
-
-
-
-End Class
-
-Public Class cMission
-    Public MissionID As tMission
-    Public NameStr As String
-    Public CyclePath As String
-End Class
-
-Public Class cSegmentTable
-    Public SegTableEntries As New List(Of cSegmentTableEntry)
-
-    Public Function ConfigIsValid(ByVal VehCat As tVehCat, ByVal AxleConf As tAxleConf, ByVal MaxGVW As Single) As Boolean
-        Dim s0 As cSegmentTableEntry
-
-        For Each s0 In SegTableEntries
-            If s0.VehCat = VehCat And s0.AxleConf = AxleConf And s0.MaxGVW > MaxGVW Then
-                Return True
-            End If
-        Next
-
-        Return False
-
-    End Function
-
-    Public Function SetRef(ByRef SegTableEntryRef As cSegmentTableEntry, ByVal VehCat As tVehCat, ByVal AxleConf As tAxleConf, ByVal MaxGVW As Single) As Boolean
-        Dim s0 As cSegmentTableEntry
-
-        For Each s0 In SegTableEntries
-            If s0.VehCat = VehCat And s0.AxleConf = AxleConf And s0.MaxGVW > MaxGVW Then
-                SegTableEntryRef = s0
-                Return True
-            End If
-        Next
-
-        SegTableEntryRef = Nothing
-        Return False
-
-    End Function
-
-
-End Class
-
-
-Public Class cSegmentTableEntry
-    Public VehCat As tVehCat
-    Public AxleConf As tAxleConf
-    Public MaxGVW As Single
-    Public VehClass As String
-    Public MissionList As New List(Of tMission)
-
-
-
-End Class
-
-
-
diff --git a/VECTO/cVRES.vb b/VECTO/cVRES.vb
new file mode 100644
index 0000000000000000000000000000000000000000..c0fc448d5f0eed4b51064088653f207f1110d82c
--- /dev/null
+++ b/VECTO/cVRES.vb
@@ -0,0 +1,255 @@
+Imports System.Collections.Generic
+Imports iTextSharp.text.pdf
+Imports System.IO
+
+
+
+
+
+Public Class cVRES
+
+    Public FilePath As String
+
+    Public SingleResults As New List(Of cVRESsingle)
+
+    Public Sub New()
+        ResetMe()
+    End Sub
+
+    Public Sub ResetMe()
+        SingleResults.Clear()
+    End Sub
+
+    Public Function SetVals(ByVal VREStype As tLoading) As Boolean
+        Dim VRESsingleRef As cVRESsingle
+        Dim t1 As Integer
+        Dim t As Integer
+        Dim MsgSrc As String
+        Dim Vquer As Single
+        Dim sum As Double
+
+        MsgSrc = "SUM/SetVals"
+
+        t1 = MODdata.tDim
+
+        'Average Speed calculation
+        sum = 0
+        For t = 0 To t1
+            sum += MODdata.Vh.V(t)
+        Next
+        Vquer = 3.6 * sum / (t1 + 1)
+
+        If Vquer = 0 Then
+            WorkerMsg(tMsgID.Err, "Average Speed = 0 ?!", MsgSrc)
+            Return False
+        End If
+
+        VRESsingleRef = New cVRESsingle
+
+        VRESsingleRef.DescStr = ConvLoading(VREStype)
+
+        VRESsingleRef.Loading = VEH.Loading / 1000
+        VRESsingleRef.FCl100km = (100 * MODdata.FCavg / Vquer) / (Cfg.FuelDens * 1000)
+        If VRESsingleRef.Loading > 0 Then VRESsingleRef.FCl100tkm = VRESsingleRef.FCl100km / VRESsingleRef.Loading
+        VRESsingleRef.CO2gkm = Cfg.CO2perFC * (MODdata.FCavg / Vquer)
+        If VRESsingleRef.Loading > 0 Then VRESsingleRef.CO2gtkm = VRESsingleRef.CO2gkm / VRESsingleRef.Loading
+        VRESsingleRef.AvgSpeed = Vquer
+
+        VRESsingleRef.FCerror = MODdata.FCerror
+
+        SingleResults.Add(VRESsingleRef)
+
+        Return True
+
+    End Function
+
+
+    Public Function Output() As Boolean
+        Dim file As New cFile_V3
+        Dim MsgSrc As String
+        Dim x As Integer
+        Dim VRESsingleRef As cVRESsingle
+        Dim pdfTemplate As String
+        Dim pdfout As String
+        Dim pdfReader As PdfReader
+        Dim pdfStamper As PdfStamper
+
+
+        MsgSrc = "SUM/Output"
+
+        If Not file.OpenWrite(FilePath & ".vres", vbTab) Then
+            WorkerMsg(tMsgID.Err, "Can't write to " & FilePath & ".vres", MsgSrc)
+            Return False
+        End If
+
+        file.WriteLine(" _    ________________________ ")
+        file.WriteLine("| |  /   ____  ______  __  __ \")
+        file.WriteLine("| | / / __/ / /     / / / / / /")
+        file.WriteLine("| |/ / /___/ /___  / / / /_/ / ")
+        file.WriteLine("|___/_____/\____/ /_/  \____/  ")
+
+        x = CInt((31 - 4 - Len(VECTOvers)) / 2)
+        file.WriteLine(Space(x) & "~ " & VECTOvers & " ~" & Space(x))
+        file.WriteLine(" ")
+        file.WriteLine("Date:" & vbTab & Now.ToString)
+        file.WriteLine(" ")
+        file.WriteLine("Specifications")
+
+        If Declaration.Active Then
+            file.WriteLine(vbTab & "Mission: " & vbTab & Declaration.CurrentMission.NameStr)
+            file.WriteLine(vbTab & "HDV Class: " & vbTab & Declaration.SegRef.HDVclass)
+        Else
+            file.WriteLine(vbTab & "Cycle: " & vbTab & fFILE(CurrentCycleFile, False))
+        End If
+
+        file.WriteLine(" ")
+        file.WriteLine("Results:")
+        file.WriteLine(" ")
+        file.WriteLine(vbTab & "Efficiency Index (FCrel): " & vbTab & "N/A")
+        file.WriteLine(" ")
+        file.WriteLine("Single Results:")
+
+        For Each VRESsingleRef In SingleResults
+            file.WriteLine(vbTab & VRESsingleRef.DescStr)
+            file.WriteLine(vbTab & vbTab & "Loading: " & vbTab & VRESsingleRef.Loading & vbTab & "[t]")
+            file.WriteLine(vbTab & vbTab & "Average Speed: " & vbTab & VRESsingleRef.AvgSpeed.ToString & vbTab & "[km/h]")
+            file.WriteLine(vbTab & vbTab & "Fuel Consumption" & vbTab & vbTab & "CO2 Emissions")
+
+            If VRESsingleRef.FCerror Then
+                file.WriteLine(vbTab & vbTab & "ERROR")
+            Else
+                file.WriteLine(vbTab & vbTab & VRESsingleRef.FCl100km.ToString("#.0") & vbTab & "[l/100km]" & vbTab & VRESsingleRef.CO2gkm.ToString("#.0") & vbTab & "[g/km]")
+                If VRESsingleRef.Loading = 0 Then
+                    file.WriteLine(vbTab & vbTab & "-" & vbTab & "[l/100tkm]" & vbTab & "-" & vbTab & "[g/tkm]")
+                Else
+                    file.WriteLine(vbTab & vbTab & VRESsingleRef.FCl100tkm.ToString("#.0") & vbTab & "[l/100tkm]" & vbTab & VRESsingleRef.CO2gtkm.ToString("#.0") & vbTab & "[g/tkm]")
+                End If
+            End If
+
+
+        Next
+
+        file.Close()
+
+        'Add file to signing list                                                           
+        Lic.FileSigning.AddFile(FilePath & ".vres")
+
+        'pdf Output
+        If Declaration.Active Then
+
+            pdfTemplate = MyDeclPath & "reptemp.pdf"
+            pdfout = FilePath & ".pdf"
+
+            Try
+
+                pdfReader = New PdfReader(pdfTemplate)
+                pdfStamper = New PdfStamper(pdfReader, New FileStream(pdfout, FileMode.Create))
+
+                Dim pdfFormFields As AcroFields = pdfStamper.AcroFields
+
+
+                pdfFormFields.SetField("version", VECTOvers)
+                pdfFormFields.SetField("date", Now.ToString)
+                pdfFormFields.SetField("mission", Declaration.CurrentMission.NameStr)
+                pdfFormFields.SetField("HDVclass", Declaration.SegRef.HDVclass)
+
+                VRESsingleRef = SingleResults(1)
+                pdfFormFields.SetField("load1", VRESsingleRef.Loading.ToString & " [t]")
+                pdfFormFields.SetField("speed1", VRESsingleRef.AvgSpeed.ToString("#.0") & " [km/h]")
+                pdfFormFields.SetField("FC11", VRESsingleRef.FCl100km.ToString("#.0") & " [l/100km]")
+                pdfFormFields.SetField("FC12", VRESsingleRef.FCl100tkm.ToString("#.0") & " [l/100tkm]")
+
+                pdfFormFields.SetField("CO211", VRESsingleRef.CO2gkm.ToString("#.0") & " [g/km]")
+                pdfFormFields.SetField("CO212", VRESsingleRef.CO2gtkm.ToString("#.0") & " [g/tkm]")
+
+                VRESsingleRef = SingleResults(0)
+                pdfFormFields.SetField("load2", VRESsingleRef.Loading.ToString & " [t]")
+                pdfFormFields.SetField("speed2", VRESsingleRef.AvgSpeed.ToString("#.0") & " [km/h]")
+                pdfFormFields.SetField("FC21", VRESsingleRef.FCl100km.ToString("#.0") & " [l/100km]")
+                pdfFormFields.SetField("FC22", "- [l/100tkm]")
+
+                pdfFormFields.SetField("CO221", VRESsingleRef.CO2gkm.ToString("#.0") & " [g/km]")
+                pdfFormFields.SetField("CO222", "- [g/tkm]")
+
+                VRESsingleRef = SingleResults(2)
+                pdfFormFields.SetField("load3", VRESsingleRef.Loading.ToString & " [t]")
+                pdfFormFields.SetField("speed3", VRESsingleRef.AvgSpeed.ToString("#.0") & " [km/h]")
+                pdfFormFields.SetField("FC31", VRESsingleRef.FCl100km.ToString("#.0") & " [l/100km]")
+                pdfFormFields.SetField("FC32", VRESsingleRef.FCl100tkm.ToString("#.0") & " [l/100tkm]")
+
+                pdfFormFields.SetField("CO231", VRESsingleRef.CO2gkm.ToString("#.0") & " [g/km]")
+                pdfFormFields.SetField("CO232", VRESsingleRef.CO2gtkm.ToString("#.0") & " [g/tkm]")
+
+
+                ' flatten the form to remove editting options, set it to false
+                ' to leave the form open to subsequent manual edits
+                pdfStamper.FormFlattening = True
+
+                ' close the pdf
+                pdfStamper.Close()
+
+            Catch ex As Exception
+
+                WorkerMsg(tMsgID.Err, "Failed to write pdf file (" & pdfout & ")!", MsgSrc)
+
+            End Try
+
+
+
+
+
+
+        End If
+
+  
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+        Return True
+
+
+
+    End Function
+
+End Class
+
+Public Class cVRESsingle
+    Public Loading As Single
+    Public AvgSpeed As Single
+    Public FCl100km As Single
+    Public FCl100tkm As Single
+    Public CO2gkm As Single
+    Public CO2gtkm As Single
+    Public DescStr As String
+    Public FCerror As Boolean
+
+    Public Sub ResetMe()
+        FCl100km = 0
+        FCl100tkm = 0
+        CO2gkm = 0
+        CO2gtkm = 0
+        DescStr = ""
+    End Sub
+
+
+End Class
diff --git a/VECTO/cVSUM.vb b/VECTO/cVSUM.vb
index ce20c630dc877680787077ab37f71767e3e68780..ace570c53058c61b4d870710e226b45d0287424a 100644
--- a/VECTO/cVSUM.vb
+++ b/VECTO/cVSUM.vb
@@ -1,179 +1,652 @@
 Imports System.Collections.Generic
 
-Public Class cVSUM
+Class cVSUM
 
-    Public FilePath As String
+    Private Const FormatVersion As String = "1.0"
 
-    Public VehConfig As String
-    Public EffIdx As Single
+    Private VSUMpath As String
+    Private Fvsum As System.IO.StreamWriter
+    Private HeadInitialized As Boolean
 
-    Public SingleResults As New List(Of cVSUMsingle)
+    Private VSUMentries As Dictionary(Of String, cVSUMentry)
+    Private VSUMentryList As List(Of String)     'Wird benötigt weil Dictionary nicht sortiert ist
 
+    Private vsumJSON As cJSON
+    Private ResList As List(Of Dictionary(Of String, Object))
 
 
     Public Sub New()
-        ResetMe()
+        HeadInitialized = False
+        VSUMpath = ""
     End Sub
 
-    Public Sub ResetMe()
-        VehConfig = ""
-        EffIdx = 0
-        SingleResults.Clear()
-    End Sub
+    Public Function VSUMhead() As String
+        Dim s As New System.Text.StringBuilder
+        Dim key As String
+        Dim First As Boolean
+
+        First = True
+        For Each key In VSUMentryList
+            If Not First Then s.Append(",")
+            s.Append(VSUMentries(key).Head)
+            First = False
+        Next
+
+        Return s.ToString
+
+    End Function
+
+    Public Function VSUMunits() As String
+        Dim s As New System.Text.StringBuilder
+        Dim First As Boolean
+        Dim key As String
+
+        First = True
+        For Each key In VSUMentryList
+            If Not First Then s.Append(",")
+            s.Append(VSUMentries(key).Unit)
+            First = False
+        Next
 
-    Public Function SetVals(ByVal VSUMtype As tVSUM) As Boolean
-        Dim Em0 As cEmComp
-        Dim VSUMsingleRef As cVSUMsingle
+        Return s.ToString
+
+    End Function
+
+    Public Function VSUMline() As String
+        Dim VSUMentry As cVSUMentry
+        Dim s As New System.Text.StringBuilder
         Dim t1 As Integer
-        Dim t As Integer
-        Dim MsgSrc As String
         Dim Vquer As Single
         Dim sum As Double
+        Dim t As Integer
+        Dim key As String
+        Dim First As Boolean
+
+        For Each VSUMentry In VSUMentries.Values
+            VSUMentry.ValueString = Nothing
+        Next
 
-        MsgSrc = "SUM/SetVals"
+        t1 = MODdata.tDim
+
+        'Vehicle type-independent
+        VSUMentries("\\T").ValueString = (t1 + 1)
+
+        'Length, Speed, Slope
+        If Not VEC.EngOnly Then
+
+            'Average-Speed. calculation
+            sum = 0
+            For t = 0 To t1
+                sum += MODdata.Vh.V(t)
+            Next
+            Vquer = 3.6 * sum / (t1 + 1)
+
+            VSUMentries("\\S").ValueString = (Vquer * (t1 + 1) / 3600)
+            VSUMentries("\\V").ValueString = Vquer
+
+            'altitude change
+            VSUMentries("\\G").ValueString = MODdata.Vh.AltIntp(Vquer * (t1 + 1) / 3.6) - MODdata.Vh.AltIntp(0)
+
+            'Auxiliary energy consumption
+            If VEC.AuxDef Then
+                For Each key In VEC.AuxPaths.Keys
+                    sum = 0
+                    For t = 0 To t1
+                        sum += MODdata.Paux(key)(t)
+                    Next
+                    VSUMentries("\\Eaux_" & UCase(key)).ValueString = sum / 3600
+                Next
+            End If
 
-        VehConfig = fAxleConfName(VEH.AxleConf)
-        EffIdx = 0
 
-        If Not MODdata.Em.EmDefComp.ContainsKey(tMapComp.FC) Then
-            WorkerMsg(tMsgID.Err, sKey.MAP.FC & " not found!", MsgSrc)
-            Return False
         End If
 
-        Em0 = MODdata.Em.EmDefComp(tMapComp.FC)
-        t1 = MODdata.tDim
+        'FC
+        If MODdata.FCerror Then
+            If VEC.EngOnly Then
+                VSUMentries("FC_h").ValueString = "ERROR"
+            Else
+                VSUMentries("FC_km").ValueString = "ERROR"
+            End If
+
+            If Declaration.Active Then
+                If VEC.EngOnly Then
+                    VSUMentries("FCc_h").ValueString = "ERROR"
+                Else
+                    VSUMentries("FCc_km").ValueString = "ERROR"
+                End If
+            End If
+
+        Else
+            If VEC.EngOnly Then
+                VSUMentries("FC_h").ValueString = MODdata.FCavg
+            Else
+                VSUMentries("FC_km").ValueString = (MODdata.FCavg / Vquer)
+            End If
+
+            If Declaration.Active Then
+                If VEC.EngOnly Then
+                    VSUMentries("FCc_h").ValueString = MODdata.FCavg * MODdata.CorrFactor
+                Else
+                    VSUMentries("FCc_km").ValueString = (MODdata.FCavg * MODdata.CorrFactor / Vquer)
+                End If
+            End If
+
+        End If
 
-        'Average Speed calculation
+        'Power, Revolutions
+
+        'Ppos
         sum = 0
         For t = 0 To t1
-            sum += MODdata.Vh.V(t)
+            sum += Math.Max(0, MODdata.Pe(t))
         Next
-        Vquer = 3.6 * sum / (t1 + 1)
+        VSUMentries("\\Ppos").ValueString = (sum / (t1 + 1))
+
+        'Pneg
+        sum = 0
+        For t = 0 To t1
+            sum += Math.Min(0, MODdata.Pe(t))
+        Next
+        VSUMentries("\\Pneg").ValueString = (sum / (t1 + 1))
+
+
+
+        'Only Entire-vehicle (not EngOnly)
+        If Not VEC.EngOnly Then
+
+            'Pbrake-norm
+            sum = 0
+            For t = 0 To t1
+                sum += MODdata.Pbrake(t)
+            Next
+            VSUMentries("\\Pbrake").ValueString = (sum / (t1 + 1))
+
+            'Eair
+            sum = 0
+            For t = 0 To t1
+                sum += MODdata.Pluft(t)
+            Next
+            VSUMentries("\\Eair").ValueString = (-sum / 3600)
+
+            'Eroll
+            sum = 0
+            For t = 0 To t1
+                sum += MODdata.Proll(t)
+            Next
+            VSUMentries("\\Eroll").ValueString = (-sum / 3600)
+
+            'Egrad
+            sum = 0
+            For t = 0 To t1
+                sum += MODdata.Pstg(t)
+            Next
+            VSUMentries("\\Egrad").ValueString = (-sum / 3600)
+
+            'Eacc
+            sum = 0
+            For t = 0 To t1
+                sum += MODdata.Pa(t) + MODdata.PaGB(t) + MODdata.PaEng(t)
+            Next
+            VSUMentries("\\Eacc").ValueString = (-sum / 3600)
+
+            'Eaux
+            sum = 0
+            For t = 0 To t1
+                sum += MODdata.PauxSum(t)
+            Next
+            VSUMentries("\\Eaux").ValueString = (-sum / 3600)
+
+            'Ebrake
+            sum = 0
+            For t = 0 To t1
+                sum += MODdata.Pbrake(t)
+            Next
+            VSUMentries("\\Ebrake").ValueString = (sum / 3600)
+
+            'Etransm
+            sum = 0
+            For t = 0 To t1
+                sum += MODdata.PlossDiff(t) + MODdata.PlossGB(t)
+            Next
+            VSUMentries("\\Etransm").ValueString = (-sum / 3600)
+
+            'Masse, Loading
+            VSUMentries("\\Mass").ValueString = (VEH.Mass + VEH.MassExtra)
+            VSUMentries("\\Loading").ValueString = VEH.Loading
+
+            'CylceKin
+            For Each VSUMentry In MODdata.CylceKin.VSUMentries
+                VSUMentries("\\" & VSUMentry.Head).ValueString = MODdata.CylceKin.GetValueString(VSUMentry.Head)
+            Next
+
+            'EposICE
+            sum = 0
+            For t = 0 To t1
+                sum += Math.Max(0, MODdata.Pe(t))
+            Next
+            VSUMentries("\\EposICE").ValueString = (sum / 3600)
+
+            'EnegICE
+            sum = 0
+            For t = 0 To t1
+                sum += Math.Min(0, MODdata.Pe(t))
+            Next
+            VSUMentries("\\EnegICE").ValueString = (sum / 3600)
 
-        If Vquer = 0 Then
-            WorkerMsg(tMsgID.Err, "Average Speed = 0 ?!", MsgSrc)
-            Return False
         End If
 
-        VSUMsingleRef = New cVSUMsingle
+        'Create Output-string:
+        First = True
+
+        For Each key In VSUMentryList
+            If Not First Then s.Append(",")
+            s.Append(VSUMentries(key).ValueString)
+            First = False
+        Next
+
+        Return s.ToString
+
+    End Function
+
+    Private Function HeadInit() As Boolean
+        Dim MsgSrc As String
+
+        MsgSrc = "SUMALL/Output"
 
-        Select Case VSUMtype
-            Case tVSUM.EmptyLoaded
-                VSUMsingleRef.DescStr = "Empty Loading"
+        'Open file
+        Try
+            Fvsum = My.Computer.FileSystem.OpenTextFileWriter(VSUMpath, True, FileFormat)
+            Fvsum.AutoFlush = True
+        Catch ex As Exception
+            WorkerMsg(tMsgID.Err, "Cannot access .vsum file (" & VSUMpath & ")", MsgSrc)
+            Return False
+        End Try
 
-            Case tVSUM.FullLoaded
-                VSUMsingleRef.DescStr = "Full Loading"
+        '*** Header / Units
+        Fvsum.WriteLine("Job,Input File,Cycle," & VSUMhead())
+        Fvsum.WriteLine("[-],[-],[-]," & VSUMunits())
 
-            Case tVSUM.RefLoaded
-                VSUMsingleRef.DescStr = "Reference Loading"
+        'Close file (will open after each job)
+        Fvsum.Close()
 
-            Case Else ' tVSUM.UserDefLoaded
-                VSUMsingleRef.DescStr = "User-defined Loading"
-        End Select
+        HeadInitialized = True
 
-        VSUMsingleRef.Loading = VEH.Loading / 1000
-        VSUMsingleRef.FCl100km = (100 * Em0.FinalAvg / Vquer) / (Cfg.FuelDens * 1000)
-        If VSUMsingleRef.Loading > 0 Then VSUMsingleRef.FCl100tkm = VSUMsingleRef.FCl100km / VSUMsingleRef.Loading
-        VSUMsingleRef.CO2gkm = Cfg.CO2perFC * (Em0.FinalAvg / Vquer)
-        If VSUMsingleRef.Loading > 0 Then VSUMsingleRef.CO2gtkm = VSUMsingleRef.CO2gkm / VSUMsingleRef.Loading
-        VSUMsingleRef.AvgSpeed = Vquer
+        Return True
 
-        VSUMsingleRef.FCerror = FCerror
+    End Function
+
+    Public Function AusgVSUM(ByVal NrOfRunStr As String, ByVal GenFilename As String, ByVal CycleFilename As String, ByVal AbortedByError As Boolean) As Boolean
+        Dim str As String
+        Dim MsgSrc As String
+        Dim dic As Dictionary(Of String, Object)
+        Dim dic0 As Dictionary(Of String, Object)
+        Dim dic1 As Dictionary(Of String, Object)
+        Dim key As String
 
-        SingleResults.Add(VSUMsingleRef)
+        MsgSrc = "SUMALL/Output"
+
+        If Not HeadInitialized Then
+            If Not HeadInit() Then Return False
+        End If
+
+        'JSON
+        dic = New Dictionary(Of String, Object)
+
+        'Open file
+        Try
+            Fvsum = My.Computer.FileSystem.OpenTextFileWriter(VSUMpath, True, FileFormat)
+            Fvsum.AutoFlush = True
+        Catch ex As Exception
+            WorkerMsg(tMsgID.Err, "Cannot access .vsum file (" & VSUMpath & ")", MsgSrc)
+            Return False
+        End Try
+
+        str = NrOfRunStr & "," & GenFilename & "," & CycleFilename & ","
+        dic.Add("Job", GenFilename)
+        dic.Add("Cycle", CycleFilename)
+
+        If AbortedByError Then
+            Fvsum.WriteLine(str & "Aborted due to Error!")
+            dic.Add("AbortedByError", True)
+        Else
+            Fvsum.WriteLine(str & VSUMline())
+            dic.Add("AbortedByError", False)
+
+            dic1 = New Dictionary(Of String, Object)
+            For Each key In VSUMentryList
+                dic0 = New Dictionary(Of String, Object)
+                dic0.Add("Value", VSUMentries(key).ValueString)
+                dic0.Add("Unit", VSUMentries(key).Unit)
+                dic1.Add(VSUMentries(key).Head, dic0)
+            Next
+            dic.Add("Results", dic1)
+
+        End If
+
+        ResList.Add(dic)
+
+
+        'Close file
+        Fvsum.Close()
+        Fvsum = Nothing
 
         Return True
 
     End Function
 
+    Public Function WriteJSON() As Boolean
 
-    Public Function Output() As Boolean
+        vsumJSON.Content("Body").add("Results", ResList)
+
+        Try
+            Return vsumJSON.WriteFile(VSUMpath & ".json")
+        Catch ex As Exception
+            Return False
+        End Try
+
+    End Function
+
+    Private Sub AddToVSUM(ByVal IDstring As String, ByVal Head As String, ByVal Unit As String)
+        If Not VSUMentries.ContainsKey(IDstring) Then
+            VSUMentries.Add(IDstring, New cVSUMentry(Head, Unit))
+            VSUMentryList.Add(IDstring)
+        End If
+    End Sub
+
+    Public Function Init(ByVal GenFile As String) As Boolean
+        Dim GENs As New List(Of String)
+        Dim str As String
+        Dim str1 As String
+        Dim iGEN As Integer
         Dim file As New cFile_V3
+        Dim GEN0 As cVECTO
+        Dim MAP0 As cMAP
+        Dim ENG0 As cENG
+        Dim HEVorEVdone As Boolean
+        Dim EVdone As Boolean
+        Dim EngOnly As Boolean
+        Dim NonEngOnly As Boolean
+        Dim VSUMentry As cVSUMentry
+        Dim CylceKin As cCycleKin
+        Dim i1 As Integer
+        Dim i2 As Integer
+        Dim iDim As Integer
+        Dim dic As Dictionary(Of String, Object)
+
+
         Dim MsgSrc As String
-        Dim x As Integer
-        Dim VSUMsingleRef As cVSUMsingle
 
+        MsgSrc = "SUMALL/Init"
 
-        MsgSrc = "SUM/Output"
+        'Check if file exists
+        If Not IO.File.Exists(GenFile) Then
+            WorkerMsg(tMsgID.Err, "Job file not found! (" & GenFile & ")", MsgSrc)
+            Return False
+        End If
+
+        'Define Output-path
+        If (PHEMmode = tPHEMmode.ModeBATCH) Then
+            Select Case UCase(Cfg.BATCHoutpath)
+                Case sKey.WorkDir
+                    VSUMpath = Cfg.WorkDPath & fFILE(GenFile, False) & "_BATCH.vsum"
+                Case sKey.GenPath
+                    VSUMpath = fFileWoExt(GenFile) & "_BATCH.vsum"
+                Case Else
+                    VSUMpath = Cfg.BATCHoutpath & fFILE(GenFile, False) & "_BATCH.vsum"
+            End Select
+        Else
+            VSUMpath = fFileWoExt(GenFile) & ".vsum"
+        End If
 
-        If Not file.OpenWrite(FilePath, vbTab) Then
-            WorkerMsg(tMsgID.Err, "Can't write to " & FilePath, MsgSrc)
+        'Open file
+        Try
+            'Open file
+            Fvsum = My.Computer.FileSystem.OpenTextFileWriter(VSUMpath, False, FileFormat)
+            Fvsum.AutoFlush = True
+        Catch ex As Exception
+            WorkerMsg(tMsgID.Err, "Cannot write to .vsum file (" & VSUMpath & ")", MsgSrc)
             Return False
+        End Try
+
+        'JSON
+        vsumJSON = New cJSON
+
+        dic = New Dictionary(Of String, Object)
+        dic.Add("CreatedBy", Lic.LicString & " (" & Lic.GUID & ")")
+        dic.Add("Date", Now.ToString)
+        dic.Add("AppVersion", VECTOvers)
+        dic.Add("FileVersion", FormatVersion)
+        vsumJSON.Content.Add("Header", dic)
+        vsumJSON.Content.Add("Body", New Dictionary(Of String, Object))
+        dic = New Dictionary(Of String, Object)
+        dic.Add("Air Density [kg/m3]", Cfg.AirDensity)
+        dic.Add("Distance Correction", Cfg.WegKorJa)
+        vsumJSON.Content("Body").add("Settings", dic)
+
+        ResList = New List(Of Dictionary(Of String, Object))
+
+        'Info
+        Fvsum.WriteLine("VECTO results")
+        Fvsum.WriteLine("VECTO " & VECTOvers)
+        Fvsum.WriteLine(Now.ToString)
+        Fvsum.WriteLine("air density [kg/m3]: " & Cfg.AirDensity)
+        If Cfg.WegKorJa Then
+            Fvsum.WriteLine("Distance Correction ON")
+        Else
+            Fvsum.WriteLine("Distance Correction OFF")
         End If
 
-        file.WriteLine(" _    ________________________ ")
-        file.WriteLine("| |  /   ____  ______  __  __ \")
-        file.WriteLine("| | / / __/ / /     / / / / / /")
-        file.WriteLine("| |/ / /___/ /___  / / / /_/ / ")
-        file.WriteLine("|___/_____/\____/ /_/  \____/  ")
-
-        x = CInt((31 - 4 - Len(VECTOvers)) / 2)
-        file.WriteLine(Space(x) & "~ " & VECTOvers & " ~" & Space(x))
-        file.WriteLine(" ")
-        file.WriteLine("Date:" & vbTab & Now.ToString)
-        file.WriteLine(" ")
-        file.WriteLine("Specifications")
-        'TODO: Mission without Cycle-name
-        file.WriteLine(vbTab & "Mission: " & vbTab & fFILE(CurrentCycleFile, False))
-        file.WriteLine(vbTab & "Vehicle Class: " & vbTab & VehConfig)
-        'TODO: Test Setup
-        file.WriteLine(vbTab & "Vehicle Setup: " & vbTab & "")
-        file.WriteLine(" ")
-        file.WriteLine("Results from CO2-Simulator:")
-        file.WriteLine(" ")
-        file.WriteLine(vbTab & "Efficiency Index (FCrel): " & vbTab & EffIdx.ToString)
-        file.WriteLine(" ")
-        file.WriteLine("Single Results:")
-
-        For Each VSUMsingleRef In SingleResults
-            file.WriteLine(vbTab & VSUMsingleRef.DescStr)
-            file.WriteLine(vbTab & vbTab & "Loading: " & vbTab & VSUMsingleRef.Loading & vbTab & "[t]")
-            file.WriteLine(vbTab & vbTab & "Average Speed: " & vbTab & VSUMsingleRef.AvgSpeed.ToString & vbTab & "[km/h]")
-            file.WriteLine(vbTab & vbTab & "Fuel Consumption" & vbTab & vbTab & "CO2 Emissions")
-
-            If VSUMsingleRef.FCerror Then
-                file.WriteLine(vbTab & vbTab & "ERROR")
+        'Close file (will open after each job)
+        Fvsum.Close()
+
+        'Add file to signing list
+        Lic.FileSigning.AddFile(VSUMpath)
+        Lic.FileSigning.AddFile(VSUMpath & ".json")
+
+
+        VSUMentries = New Dictionary(Of String, cVSUMentry)
+        VSUMentryList = New List(Of String)
+
+
+        '********************** GEN-Liste raussuchen. Bei ADVANCE aus Flotte sonst aus Jobliste '********************** |@@| Select GEN-list for ADVANCE either from Fleet or from Job-list '**********************
+        For Each str In JobFileList
+            GENs.Add(fFileRepl(str))
+        Next
+        iGEN = GENs.Count - 1
+
+
+        '********************** Create VSUM-Entries '**********************
+        EVdone = False
+        HEVorEVdone = False
+        EngOnly = False
+        NonEngOnly = False
+
+        'Vehicle type-independent
+        AddToVSUM("\\T", "time", "[s]")
+
+        'For each GEN-file check Mode and Map
+        For Each str In GENs
+
+            GEN0 = New cVECTO
+
+            GEN0.FilePath = str
+
+            Try
+                If Not GEN0.ReadFile Then
+                    WorkerMsg(tMsgID.Err, "Can't read .gen file '" & str & "' !", MsgSrc)
+                    Return False
+                End If
+            Catch ex As Exception
+                WorkerMsg(tMsgID.Err, "File read error! (" & str & ")", MsgSrc)
+                Return False
+            End Try
+
+            If GEN0.EngOnly Then
+
+                If Not EngOnly Then
+
+                    'nothing...
+
+                    EngOnly = True
+
+                End If
+
             Else
-                file.WriteLine(vbTab & vbTab & VSUMsingleRef.FCl100km.ToString("#.0") & vbTab & "[l/100km]" & vbTab & VSUMsingleRef.CO2gkm.ToString("#.0") & vbTab & "[g/km]")
-                If VSUMsingleRef.Loading = 0 Then
-                    file.WriteLine(vbTab & vbTab & "-" & vbTab & "[l/100tkm]" & vbTab & "-" & vbTab & "[g/tkm]")
-                Else
-                    file.WriteLine(vbTab & vbTab & VSUMsingleRef.FCl100tkm.ToString("#.0") & vbTab & "[l/100tkm]" & vbTab & VSUMsingleRef.CO2gtkm.ToString("#.0") & vbTab & "[g/tkm]")
+
+                If Not NonEngOnly Then
+
+                    AddToVSUM("\\S", "distance", "[km]")
+                    AddToVSUM("\\V", "speed", "[km/h]")
+                    AddToVSUM("\\G", "∆altitude", "[m]")
+
+                    NonEngOnly = True
+
                 End If
+
+                'Auxiliary energy consumption
+                If GEN0.AuxDef Then
+                    For Each str1 In GEN0.AuxPaths.Keys
+                        AddToVSUM("\\Eaux_" & UCase(str1), "Eaux_" & str1, "[kWh]")
+                    Next
+                End If
+
             End If
 
+            'Conventional vehicles ...
+            AddToVSUM("\\Ppos", "Ppos", "[kW]")
+            AddToVSUM("\\Pneg", "Pneg", "[kW]")
+
+            'From the Engine-Map
+            ENG0 = New cENG
+            ENG0.FilePath = GEN0.PathENG
+
+            Try
+                If Not ENG0.ReadFile Then Return False
+            Catch ex As Exception
+                WorkerMsg(tMsgID.Err, "File read error! (" & GEN0.PathENG & ")", MsgSrc)
+                Return False
+            End Try
+
+            MAP0 = New cMAP
+            MAP0.FilePath = ENG0.PathMAP
+
+            Try
+                If Not MAP0.ReadFile(False) Then Return False 'Fehlermeldungen werden auch bei "MsgOutput = False" ausgegeben
+            Catch ex As Exception
+                WorkerMsg(tMsgID.Err, "File read error! (" & ENG0.PathMAP & ")", MsgSrc)
+                Return False
+            End Try
+
+            If GEN0.EngOnly Then
+                AddToVSUM("FC_h", "FC", "[g/h]")
+            Else
+                AddToVSUM("FC_km", "FC", "[g/km]")
+            End If
+
+            If Declaration.Active Then
+                If GEN0.EngOnly Then
+                    AddToVSUM("FCc_h", "FC corrected", "[g/h]")
+                Else
+                    AddToVSUM("FCc_km", "FC corrected", "[g/km]")
+                End If
+            End If
 
         Next
 
-        file.Close()
 
-        'Add file to signing list
-        Lic.FileSigning.AddFile(FilePath)
+        If EngOnly Then
 
+            'currently nothing
+
+        End If
+
+        If NonEngOnly Then
+
+            'Vehicle-related fields
+            AddToVSUM("\\Pbrake", "Pbrake", "[kW]")
+            AddToVSUM("\\EposICE", "EposICE", "[kWh]")
+            AddToVSUM("\\EnegICE", "EnegICE", "[kWh]")
+            AddToVSUM("\\Eair", "Eair", "[kWh]")
+            AddToVSUM("\\Eroll", "Eroll", "[kWh]")
+            AddToVSUM("\\Egrad", "Egrad", "[kWh]")
+            AddToVSUM("\\Eacc", "Eacc", "[kWh]")
+            AddToVSUM("\\Eaux", "Eaux", "[kWh]")
+            AddToVSUM("\\Ebrake", "Ebrake", "[kWh]")
+            AddToVSUM("\\Etransm", "Etransm", "[kWh]")
+            AddToVSUM("\\Mass", "Mass", "[kg]")
+            AddToVSUM("\\Loading", "Loading", "[kg]")
+
+            'CylceKin
+            CylceKin = New cCycleKin
+            For Each VSUMentry In CylceKin.VSUMentries
+                AddToVSUM("\\" & VSUMentry.Head, VSUMentry.Head, VSUMentry.Unit)
+            Next
+
+        End If
+
+        'ErgListe sortieren damit g/km und g/h nebeneinander liegen |@@| Sort ErgListe so that g/km and g/h are side-by-side
+        iDim = VSUMentryList.Count - 1
+
+        For i1 = 0 To iDim - 1
+            str = VSUMentries(VSUMentryList(i1)).Head
+            For i2 = i1 + 1 To iDim
+                If VSUMentries(VSUMentryList(i2)).Head = str Then
+                    VSUMentryList.Insert(i1 + 1, VSUMentryList(i2))
+                    VSUMentryList.RemoveAt(i2 + 1)
+                End If
+            Next
+        Next
+
+        'Sort Aux
+        For i1 = 0 To iDim - 1
+            str = VSUMentries(VSUMentryList(i1)).Head
+            If str.Length > 4 AndAlso Left(str, 4) = "Eaux" Then
+                For i2 = i1 + 1 To iDim
+                    If VSUMentries(VSUMentryList(i2)).Head.Length > 4 AndAlso Left(VSUMentries(VSUMentryList(i2)).Head, 4) = "Eaux" Then
+                        VSUMentryList.Insert(i1 + 1, VSUMentryList(i2))
+                        VSUMentryList.RemoveAt(i2 + 1)
+                    End If
+                Next
+            End If
+        Next
 
         Return True
 
     End Function
 
+    Public ReadOnly Property VSUMfile As String
+        Get
+            Return VSUMpath
+        End Get
+    End Property
+
 End Class
 
-Public Class cVSUMsingle
-    Public Loading As Single
-    Public AvgSpeed As Single
-    Public FCl100km As Single
-    Public FCl100tkm As Single
-    Public CO2gkm As Single
-    Public CO2gtkm As Single
-    Public DescStr As String
-    Public FCerror As Boolean
-
-    Public Sub ResetMe()
-        FCl100km = 0
-        FCl100tkm = 0
-        CO2gkm = 0
-        CO2gtkm = 0
-        DescStr = ""
+Public Class cVSUMentry
+    Public Head As String
+    Public Unit As String
+    Public MyVal As Object
+
+    Public Sub New(ByVal HeadStr As String, ByVal UnitStr As String)
+        Head = HeadStr
+        Unit = UnitStr
+        MyVal = Nothing
     End Sub
 
+    Public Property ValueString As Object
+        Get
+            If MyVal Is Nothing Then
+                Return "-"
+            Else
+                Return MyVal
+            End If
+        End Get
+        Set(value As Object)
+            MyVal = value
+        End Set
+    End Property
+
+
 
 End Class