diff --git a/Documentation/User Manual/5-input-and-output-files/VVEH.md b/Documentation/User Manual/5-input-and-output-files/VVEH.md
index b5e832bf74b381680b7b9fb6d10b3c984d203132..56e0ecf7458e38e510b0ae74ab5b13e64b417b72 100644
--- a/Documentation/User Manual/5-input-and-output-files/VVEH.md	
+++ b/Documentation/User Manual/5-input-and-output-files/VVEH.md	
@@ -9,7 +9,7 @@ Refers to other files:
 
 * [Cross Wind Correction (VCDV, VCDB)](#cross-wind-correction)
 * [Retarder Loss Map (VRLM)](#retarder-loss-torque-input-file-.vrlm)
-
+* [Transmission Loss Map (for AngularGear) (VTLM)](#transmission-loss-map)
 
 **Example:**
 
@@ -38,6 +38,11 @@ Refers to other files:
       "Ratio": 1.0,
       "File": "Retarder.vrlm"
     },
+    "AngularGear": {
+      "Type" : "Separate",
+      "Ratio": 1.0,
+      "LossMap": "AngleGear.vtlm"
+    },
     "AxleConfig": {
       "Type": "4x2",
       "Axles": [
diff --git a/Generic Vehicles/Declaration Mode/40t Long Haul Truck/40t_Long_Haul_Truck.vveh b/Generic Vehicles/Declaration Mode/40t Long Haul Truck/40t_Long_Haul_Truck.vveh
index b292f7ecb61b4c26ab91c7f0d65074c1d0630597..f48fb7f645e6f79dca0c015a4a8ba322be8da286 100644
--- a/Generic Vehicles/Declaration Mode/40t Long Haul Truck/40t_Long_Haul_Truck.vveh	
+++ b/Generic Vehicles/Declaration Mode/40t Long Haul Truck/40t_Long_Haul_Truck.vveh	
@@ -1,8 +1,8 @@
 {
   "Header": {
-    "CreatedBy": "Raphael Luz IVT TU-Graz (14fea510-e457-4bf6-860f-a9514dc327f1)",
-    "Date": "02.07.2015 13:55:39",
-    "AppVersion": "2.2 beta-2",
+    "CreatedBy": " ()",
+    "Date": "11.07.2016 17:58:02",
+    "AppVersion": "2.2",
     "FileVersion": 7
   },
   "Body": {
@@ -13,6 +13,7 @@
     "Loading": 0.0,
     "MassMax": 40.0,
     "CdA": 6.2985,
+    "CdA2": 6.2985,
     "rdyn": 488.2675,
     "Rim": "5° DC Rims",
     "CdCorrMode": "CdOfVdecl",
@@ -22,6 +23,11 @@
       "Ratio": 1.0,
       "File": "Retarder.vrlm"
     },
+    "AngularGear": {
+      "Type": "None",
+      "Ratio": 0.0,
+      "LossMap": "<NOFILE>"
+    },
     "AxleConfig": {
       "Type": "4x2",
       "Axles": [
diff --git a/VECTO/GUI/F_MAINForm.vb b/VECTO/GUI/F_MAINForm.vb
index 2b9b370babfda0cdd6e80da84c33bc398ee90709..2dd4bd2df39f1a09775176e220075dcbd9f90fe3 100644
--- a/VECTO/GUI/F_MAINForm.vb
+++ b/VECTO/GUI/F_MAINForm.vb
@@ -1,4 +1,4 @@
-'
+'
 ' This file is part of VECTO.
 '
 ' Copyright © 2012-2016 European Union
@@ -766,7 +766,7 @@ Public Class F_MAINForm
 						If F_VEH.WindowState = FormWindowState.Minimized Then F_VEH.WindowState = FormWindowState.Normal
 						F_VEH.BringToFront()
 					End If
-					F_VEH.openVEH(File)
+					F_VEH.OpenVehicle(File)
 				Case ".VENG"
 					If Not F_ENG.Visible Then
 						F_ENG.Show()
diff --git a/VECTO/GUI/F_VECTO.vb b/VECTO/GUI/F_VECTO.vb
index 90eba9275e25cc27753b910fbbb551d3feb89e70..e751fcbb255e5605034cd3c66ec3e3f6bdd6fef1 100644
--- a/VECTO/GUI/F_VECTO.vb
+++ b/VECTO/GUI/F_VECTO.vb
@@ -246,7 +246,7 @@ Public Class F_VECTO
 			F_VEH.BringToFront()
 		End If
 
-		If Not Trim(f) = "" Then F_VEH.openVEH(f)
+		If Not Trim(f) = "" Then F_VEH.OpenVehicle(f)
 	End Sub
 
 	'Open Engine Editor
diff --git a/VECTO/GUI/F_VEH.Designer.vb b/VECTO/GUI/F_VEH.Designer.vb
index 714812e65d6d55f682be377ef4fca402b83847e6..e4a1433afb9e08843601a2163ed0000729d301d2 100644
--- a/VECTO/GUI/F_VEH.Designer.vb
+++ b/VECTO/GUI/F_VEH.Designer.vb
@@ -109,6 +109,14 @@ Partial Class F_VEH
 		Me.OpenWithToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
 		Me.ShowInFolderToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
 		Me.PnAll = New System.Windows.Forms.Panel()
+		Me.GroupBox2 = New System.Windows.Forms.GroupBox()
+		Me.Panel1 = New System.Windows.Forms.Panel()
+		Me.Label4 = New System.Windows.Forms.Label()
+		Me.Label10 = New System.Windows.Forms.Label()
+		Me.tbAngularGearRatio = New System.Windows.Forms.TextBox()
+		Me.btAngularGearLossMapBrowse = New System.Windows.Forms.Button()
+		Me.tbAngularGearLossMapPath = New System.Windows.Forms.TextBox()
+		Me.cbAngularGearType = New System.Windows.Forms.ComboBox()
 		Me.PicVehicle = New System.Windows.Forms.PictureBox()
 		Me.Label8 = New System.Windows.Forms.Label()
 		Me.GroupBox6.SuspendLayout()
@@ -125,6 +133,8 @@ Partial Class F_VEH
 		CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit()
 		Me.CmOpenFile.SuspendLayout()
 		Me.PnAll.SuspendLayout()
+		Me.GroupBox2.SuspendLayout()
+		Me.Panel1.SuspendLayout()
 		CType(Me.PicVehicle, System.ComponentModel.ISupportInitialize).BeginInit()
 		Me.SuspendLayout()
 		'
@@ -195,7 +205,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(394, 693)
+		Me.ButOK.Location = New System.Drawing.Point(421, 721)
 		Me.ButOK.Name = "ButOK"
 		Me.ButOK.Size = New System.Drawing.Size(75, 23)
 		Me.ButOK.TabIndex = 5
@@ -206,7 +216,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(475, 693)
+		Me.ButCancel.Location = New System.Drawing.Point(502, 721)
 		Me.ButCancel.Name = "ButCancel"
 		Me.ButCancel.Size = New System.Drawing.Size(75, 23)
 		Me.ButCancel.TabIndex = 6
@@ -216,7 +226,7 @@ Partial Class F_VEH
 		'Label14
 		'
 		Me.Label14.AutoSize = True
-		Me.Label14.Location = New System.Drawing.Point(235, 22)
+		Me.Label14.Location = New System.Drawing.Point(231, 22)
 		Me.Label14.Name = "Label14"
 		Me.Label14.Size = New System.Drawing.Size(25, 13)
 		Me.Label14.TabIndex = 24
@@ -225,7 +235,7 @@ Partial Class F_VEH
 		'Label31
 		'
 		Me.Label31.AutoSize = True
-		Me.Label31.Location = New System.Drawing.Point(229, 31)
+		Me.Label31.Location = New System.Drawing.Point(225, 31)
 		Me.Label31.Name = "Label31"
 		Me.Label31.Size = New System.Drawing.Size(25, 13)
 		Me.Label31.TabIndex = 24
@@ -234,7 +244,7 @@ Partial Class F_VEH
 		'Label35
 		'
 		Me.Label35.AutoSize = True
-		Me.Label35.Location = New System.Drawing.Point(172, 7)
+		Me.Label35.Location = New System.Drawing.Point(168, 7)
 		Me.Label35.Name = "Label35"
 		Me.Label35.Size = New System.Drawing.Size(29, 13)
 		Me.Label35.TabIndex = 24
@@ -252,20 +262,24 @@ Partial Class F_VEH
 		'
 		'TbCdFile
 		'
+		Me.TbCdFile.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.TbCdFile.Enabled = False
 		Me.TbCdFile.Location = New System.Drawing.Point(6, 46)
 		Me.TbCdFile.Name = "TbCdFile"
-		Me.TbCdFile.Size = New System.Drawing.Size(459, 20)
+		Me.TbCdFile.Size = New System.Drawing.Size(504, 20)
 		Me.TbCdFile.TabIndex = 1
 		'
 		'BtCdFileBrowse
 		'
+		Me.BtCdFileBrowse.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
 		Me.BtCdFileBrowse.Enabled = False
-		Me.BtCdFileBrowse.Location = New System.Drawing.Point(471, 44)
+		Me.BtCdFileBrowse.Image = Global.VECTO.My.Resources.Resources.Open_icon
+		Me.BtCdFileBrowse.Location = New System.Drawing.Point(510, 43)
 		Me.BtCdFileBrowse.Name = "BtCdFileBrowse"
-		Me.BtCdFileBrowse.Size = New System.Drawing.Size(32, 23)
+		Me.BtCdFileBrowse.Size = New System.Drawing.Size(24, 24)
 		Me.BtCdFileBrowse.TabIndex = 2
-		Me.BtCdFileBrowse.Text = "..."
 		Me.BtCdFileBrowse.UseVisualStyleBackColor = True
 		'
 		'GroupBox6
@@ -275,20 +289,21 @@ 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(6, 432)
+		Me.GroupBox6.Location = New System.Drawing.Point(6, 444)
 		Me.GroupBox6.Name = "GroupBox6"
-		Me.GroupBox6.Size = New System.Drawing.Size(538, 74)
-		Me.GroupBox6.TabIndex = 4
+		Me.GroupBox6.Size = New System.Drawing.Size(562, 74)
+		Me.GroupBox6.TabIndex = 5
 		Me.GroupBox6.TabStop = False
 		Me.GroupBox6.Text = "Cross Wind Correction"
 		'
 		'BtCdFileOpen
 		'
+		Me.BtCdFileOpen.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
 		Me.BtCdFileOpen.Enabled = False
 		Me.BtCdFileOpen.Image = Global.VECTO.My.Resources.Resources.application_export_icon_small
-		Me.BtCdFileOpen.Location = New System.Drawing.Point(509, 44)
+		Me.BtCdFileOpen.Location = New System.Drawing.Point(533, 43)
 		Me.BtCdFileOpen.Name = "BtCdFileOpen"
-		Me.BtCdFileOpen.Size = New System.Drawing.Size(23, 23)
+		Me.BtCdFileOpen.Size = New System.Drawing.Size(24, 24)
 		Me.BtCdFileOpen.TabIndex = 3
 		Me.BtCdFileOpen.TabStop = False
 		Me.BtCdFileOpen.UseVisualStyleBackColor = True
@@ -308,7 +323,7 @@ Partial Class F_VEH
 		Me.ToolStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ToolStripBtNew, Me.ToolStripBtOpen, Me.ToolStripBtSave, Me.ToolStripBtSaveAs, Me.ToolStripSeparator3, Me.ToolStripBtSendTo, Me.ToolStripSeparator1, Me.ToolStripButton1})
 		Me.ToolStrip1.Location = New System.Drawing.Point(0, 0)
 		Me.ToolStrip1.Name = "ToolStrip1"
-		Me.ToolStrip1.Size = New System.Drawing.Size(562, 25)
+		Me.ToolStrip1.Size = New System.Drawing.Size(589, 25)
 		Me.ToolStrip1.TabIndex = 29
 		Me.ToolStrip1.Text = "ToolStrip1"
 		'
@@ -387,9 +402,9 @@ Partial Class F_VEH
 		Me.GroupBox7.Controls.Add(Me.BtRtBrowse)
 		Me.GroupBox7.Controls.Add(Me.TbRtPath)
 		Me.GroupBox7.Controls.Add(Me.CbRtType)
-		Me.GroupBox7.Location = New System.Drawing.Point(6, 345)
+		Me.GroupBox7.Location = New System.Drawing.Point(6, 327)
 		Me.GroupBox7.Name = "GroupBox7"
-		Me.GroupBox7.Size = New System.Drawing.Size(538, 81)
+		Me.GroupBox7.Size = New System.Drawing.Size(278, 111)
 		Me.GroupBox7.TabIndex = 3
 		Me.GroupBox7.TabStop = False
 		Me.GroupBox7.Text = "Retarder Losses"
@@ -399,16 +414,16 @@ Partial Class F_VEH
 		Me.PnRt.Controls.Add(Me.Label45)
 		Me.PnRt.Controls.Add(Me.LbRtRatio)
 		Me.PnRt.Controls.Add(Me.TbRtRatio)
-		Me.PnRt.Location = New System.Drawing.Point(272, 12)
+		Me.PnRt.Location = New System.Drawing.Point(6, 46)
 		Me.PnRt.Name = "PnRt"
-		Me.PnRt.Size = New System.Drawing.Size(238, 34)
+		Me.PnRt.Size = New System.Drawing.Size(266, 34)
 		Me.PnRt.TabIndex = 1
 		'
 		'Label45
 		'
 		Me.Label45.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
 		Me.Label45.AutoSize = True
-		Me.Label45.Location = New System.Drawing.Point(220, 10)
+		Me.Label45.Location = New System.Drawing.Point(243, 10)
 		Me.Label45.Name = "Label45"
 		Me.Label45.Size = New System.Drawing.Size(16, 13)
 		Me.Label45.TabIndex = 10
@@ -416,9 +431,9 @@ Partial Class F_VEH
 		'
 		'LbRtRatio
 		'
-		Me.LbRtRatio.Location = New System.Drawing.Point(13, 10)
+		Me.LbRtRatio.Location = New System.Drawing.Point(17, 10)
 		Me.LbRtRatio.Name = "LbRtRatio"
-		Me.LbRtRatio.Size = New System.Drawing.Size(139, 17)
+		Me.LbRtRatio.Size = New System.Drawing.Size(167, 17)
 		Me.LbRtRatio.TabIndex = 5
 		Me.LbRtRatio.Text = "LbRtRatio"
 		Me.LbRtRatio.TextAlign = System.Drawing.ContentAlignment.TopRight
@@ -426,7 +441,7 @@ Partial Class F_VEH
 		'TbRtRatio
 		'
 		Me.TbRtRatio.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
-		Me.TbRtRatio.Location = New System.Drawing.Point(158, 7)
+		Me.TbRtRatio.Location = New System.Drawing.Point(186, 7)
 		Me.TbRtRatio.Name = "TbRtRatio"
 		Me.TbRtRatio.Size = New System.Drawing.Size(56, 20)
 		Me.TbRtRatio.TabIndex = 0
@@ -434,20 +449,19 @@ Partial Class F_VEH
 		'BtRtBrowse
 		'
 		Me.BtRtBrowse.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
-		Me.BtRtBrowse.Location = New System.Drawing.Point(500, 52)
+		Me.BtRtBrowse.Image = Global.VECTO.My.Resources.Resources.Open_icon
+		Me.BtRtBrowse.Location = New System.Drawing.Point(249, 82)
 		Me.BtRtBrowse.Name = "BtRtBrowse"
-		Me.BtRtBrowse.Size = New System.Drawing.Size(32, 23)
+		Me.BtRtBrowse.Size = New System.Drawing.Size(24, 24)
 		Me.BtRtBrowse.TabIndex = 3
-		Me.BtRtBrowse.Text = "..."
 		Me.BtRtBrowse.UseVisualStyleBackColor = True
 		'
 		'TbRtPath
 		'
-		Me.TbRtPath.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _
-			Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
-		Me.TbRtPath.Location = New System.Drawing.Point(5, 54)
+		Me.TbRtPath.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
+		Me.TbRtPath.Location = New System.Drawing.Point(5, 84)
 		Me.TbRtPath.Name = "TbRtPath"
-		Me.TbRtPath.Size = New System.Drawing.Size(489, 20)
+		Me.TbRtPath.Size = New System.Drawing.Size(244, 20)
 		Me.TbRtPath.TabIndex = 2
 		'
 		'CbRtType
@@ -457,7 +471,7 @@ Partial Class F_VEH
 		Me.CbRtType.Items.AddRange(New Object() {"Included in Transmission Loss Maps", "Primary Retarder", "Secondary Retarder"})
 		Me.CbRtType.Location = New System.Drawing.Point(6, 19)
 		Me.CbRtType.Name = "CbRtType"
-		Me.CbRtType.Size = New System.Drawing.Size(223, 21)
+		Me.CbRtType.Size = New System.Drawing.Size(266, 21)
 		Me.CbRtType.TabIndex = 0
 		'
 		'Label46
@@ -472,7 +486,7 @@ Partial Class F_VEH
 		'Label50
 		'
 		Me.Label50.AutoSize = True
-		Me.Label50.Location = New System.Drawing.Point(229, 5)
+		Me.Label50.Location = New System.Drawing.Point(225, 5)
 		Me.Label50.Name = "Label50"
 		Me.Label50.Size = New System.Drawing.Size(25, 13)
 		Me.Label50.TabIndex = 24
@@ -496,26 +510,28 @@ Partial Class F_VEH
 		Me.GroupBox8.Controls.Add(Me.ButAxlAdd)
 		Me.GroupBox8.Location = New System.Drawing.Point(6, 133)
 		Me.GroupBox8.Name = "GroupBox8"
-		Me.GroupBox8.Size = New System.Drawing.Size(538, 206)
+		Me.GroupBox8.Size = New System.Drawing.Size(562, 190)
 		Me.GroupBox8.TabIndex = 2
 		Me.GroupBox8.TabStop = False
 		Me.GroupBox8.Text = "Axles / Wheels"
 		'
 		'PnWheelDiam
 		'
+		Me.PnWheelDiam.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+			Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
 		Me.PnWheelDiam.Controls.Add(Me.Label13)
 		Me.PnWheelDiam.Controls.Add(Me.TBrdyn)
 		Me.PnWheelDiam.Controls.Add(Me.Label35)
-		Me.PnWheelDiam.Location = New System.Drawing.Point(321, 163)
+		Me.PnWheelDiam.Location = New System.Drawing.Point(321, 151)
 		Me.PnWheelDiam.Name = "PnWheelDiam"
-		Me.PnWheelDiam.Size = New System.Drawing.Size(204, 33)
+		Me.PnWheelDiam.Size = New System.Drawing.Size(228, 34)
 		Me.PnWheelDiam.TabIndex = 5
 		'
 		'CbRim
 		'
 		Me.CbRim.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
 		Me.CbRim.FormattingEnabled = True
-		Me.CbRim.Location = New System.Drawing.Point(131, 167)
+		Me.CbRim.Location = New System.Drawing.Point(131, 155)
 		Me.CbRim.Name = "CbRim"
 		Me.CbRim.Size = New System.Drawing.Size(184, 21)
 		Me.CbRim.TabIndex = 4
@@ -523,7 +539,7 @@ Partial Class F_VEH
 		'Label7
 		'
 		Me.Label7.AutoSize = True
-		Me.Label7.Location = New System.Drawing.Point(6, 170)
+		Me.Label7.Location = New System.Drawing.Point(6, 157)
 		Me.Label7.Name = "Label7"
 		Me.Label7.Size = New System.Drawing.Size(119, 13)
 		Me.Label7.TabIndex = 46
@@ -532,18 +548,18 @@ Partial Class F_VEH
 		'Label6
 		'
 		Me.Label6.AutoSize = True
-		Me.Label6.Location = New System.Drawing.Point(405, 132)
+		Me.Label6.Location = New System.Drawing.Point(450, 121)
 		Me.Label6.Name = "Label6"
-		Me.Label6.Size = New System.Drawing.Size(121, 13)
+		Me.Label6.Size = New System.Drawing.Size(106, 13)
 		Me.Label6.TabIndex = 3
-		Me.Label6.Text = "Double-Click to edit axle"
+		Me.Label6.Text = "(Double-Click to Edit)"
 		'
 		'ButAxlRem
 		'
 		Me.ButAxlRem.Image = Global.VECTO.My.Resources.Resources.minus_circle_icon
-		Me.ButAxlRem.Location = New System.Drawing.Point(41, 127)
+		Me.ButAxlRem.Location = New System.Drawing.Point(28, 121)
 		Me.ButAxlRem.Name = "ButAxlRem"
-		Me.ButAxlRem.Size = New System.Drawing.Size(29, 23)
+		Me.ButAxlRem.Size = New System.Drawing.Size(24, 24)
 		Me.ButAxlRem.TabIndex = 2
 		Me.ButAxlRem.UseVisualStyleBackColor = True
 		'
@@ -558,7 +574,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(526, 102)
+		Me.LvRRC.Size = New System.Drawing.Size(550, 102)
 		Me.LvRRC.TabIndex = 0
 		Me.LvRRC.TabStop = False
 		Me.LvRRC.UseCompatibleStateImageBehavior = False
@@ -601,9 +617,9 @@ Partial Class F_VEH
 		'ButAxlAdd
 		'
 		Me.ButAxlAdd.Image = Global.VECTO.My.Resources.Resources.plus_circle_icon
-		Me.ButAxlAdd.Location = New System.Drawing.Point(6, 127)
+		Me.ButAxlAdd.Location = New System.Drawing.Point(5, 121)
 		Me.ButAxlAdd.Name = "ButAxlAdd"
-		Me.ButAxlAdd.Size = New System.Drawing.Size(29, 23)
+		Me.ButAxlAdd.Size = New System.Drawing.Size(24, 24)
 		Me.ButAxlAdd.TabIndex = 1
 		Me.ButAxlAdd.UseVisualStyleBackColor = True
 		'
@@ -612,7 +628,7 @@ Partial Class F_VEH
 		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(136, 80)
+		Me.CbAxleConfig.Location = New System.Drawing.Point(153, 80)
 		Me.CbAxleConfig.Name = "CbAxleConfig"
 		Me.CbAxleConfig.Size = New System.Drawing.Size(89, 21)
 		Me.CbAxleConfig.TabIndex = 1
@@ -633,17 +649,18 @@ Partial Class F_VEH
 		Me.Label5.Location = New System.Drawing.Point(13, 117)
 		Me.Label5.Name = "Label5"
 		Me.Label5.Size = New System.Drawing.Size(134, 13)
-		Me.Label5.TabIndex = 31
+		Me.Label5.TabIndex = 2
 		Me.Label5.Text = "Gross Vehicle Mass Rating"
 		'
 		'Label9
 		'
 		Me.Label9.AutoSize = True
-		Me.Label9.Location = New System.Drawing.Point(201, 117)
+		Me.Label9.Location = New System.Drawing.Point(197, 117)
 		Me.Label9.Name = "Label9"
 		Me.Label9.Size = New System.Drawing.Size(16, 13)
-		Me.Label9.TabIndex = 24
+		Me.Label9.TabIndex = 3
 		Me.Label9.Text = "[t]"
+		Me.Label9.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
 		'
 		'TbMassMass
 		'
@@ -655,9 +672,9 @@ Partial Class F_VEH
 		'StatusStrip1
 		'
 		Me.StatusStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.LbStatus})
-		Me.StatusStrip1.Location = New System.Drawing.Point(0, 719)
+		Me.StatusStrip1.Location = New System.Drawing.Point(0, 747)
 		Me.StatusStrip1.Name = "StatusStrip1"
-		Me.StatusStrip1.Size = New System.Drawing.Size(562, 22)
+		Me.StatusStrip1.Size = New System.Drawing.Size(589, 22)
 		Me.StatusStrip1.SizingGrip = False
 		Me.StatusStrip1.TabIndex = 36
 		Me.StatusStrip1.Text = "StatusStrip1"
@@ -670,7 +687,7 @@ Partial Class F_VEH
 		'
 		'TbHDVclass
 		'
-		Me.TbHDVclass.Location = New System.Drawing.Point(153, 142)
+		Me.TbHDVclass.Location = New System.Drawing.Point(153, 140)
 		Me.TbHDVclass.Name = "TbHDVclass"
 		Me.TbHDVclass.ReadOnly = True
 		Me.TbHDVclass.Size = New System.Drawing.Size(25, 20)
@@ -698,7 +715,7 @@ Partial Class F_VEH
 		'Label22
 		'
 		Me.Label22.AutoSize = True
-		Me.Label22.Location = New System.Drawing.Point(229, 57)
+		Me.Label22.Location = New System.Drawing.Point(225, 57)
 		Me.Label22.Name = "Label22"
 		Me.Label22.Size = New System.Drawing.Size(25, 13)
 		Me.Label22.TabIndex = 24
@@ -712,7 +729,7 @@ Partial Class F_VEH
 		Me.GroupBox1.Controls.Add(Me.Label14)
 		Me.GroupBox1.Location = New System.Drawing.Point(6, 3)
 		Me.GroupBox1.Name = "GroupBox1"
-		Me.GroupBox1.Size = New System.Drawing.Size(266, 124)
+		Me.GroupBox1.Size = New System.Drawing.Size(278, 124)
 		Me.GroupBox1.TabIndex = 0
 		Me.GroupBox1.TabStop = False
 		Me.GroupBox1.Text = "Weight / Loading"
@@ -736,9 +753,9 @@ Partial Class F_VEH
 		'GrAirRes
 		'
 		Me.GrAirRes.Controls.Add(Me.PnCdATrTr)
-		Me.GrAirRes.Location = New System.Drawing.Point(278, 3)
+		Me.GrAirRes.Location = New System.Drawing.Point(290, 3)
 		Me.GrAirRes.Name = "GrAirRes"
-		Me.GrAirRes.Size = New System.Drawing.Size(266, 124)
+		Me.GrAirRes.Size = New System.Drawing.Size(278, 48)
 		Me.GrAirRes.TabIndex = 1
 		Me.GrAirRes.TabStop = False
 		Me.GrAirRes.Text = "Air Resistance"
@@ -751,13 +768,13 @@ Partial Class F_VEH
 		Me.PnCdATrTr.Dock = System.Windows.Forms.DockStyle.Fill
 		Me.PnCdATrTr.Location = New System.Drawing.Point(3, 16)
 		Me.PnCdATrTr.Name = "PnCdATrTr"
-		Me.PnCdATrTr.Size = New System.Drawing.Size(260, 105)
+		Me.PnCdATrTr.Size = New System.Drawing.Size(272, 29)
 		Me.PnCdATrTr.TabIndex = 0
 		'
 		'Label38
 		'
 		Me.Label38.AutoSize = True
-		Me.Label38.Location = New System.Drawing.Point(109, 6)
+		Me.Label38.Location = New System.Drawing.Point(105, 6)
 		Me.Label38.Name = "Label38"
 		Me.Label38.Size = New System.Drawing.Size(24, 13)
 		Me.Label38.TabIndex = 24
@@ -769,7 +786,7 @@ Partial Class F_VEH
 		Me.PictureBox1.Image = Global.VECTO.My.Resources.Resources.VECTO_VEH
 		Me.PictureBox1.Location = New System.Drawing.Point(12, 28)
 		Me.PictureBox1.Name = "PictureBox1"
-		Me.PictureBox1.Size = New System.Drawing.Size(538, 40)
+		Me.PictureBox1.Size = New System.Drawing.Size(569, 40)
 		Me.PictureBox1.TabIndex = 37
 		Me.PictureBox1.TabStop = False
 		'
@@ -793,6 +810,7 @@ Partial Class F_VEH
 		'
 		'PnAll
 		'
+		Me.PnAll.Controls.Add(Me.GroupBox2)
 		Me.PnAll.Controls.Add(Me.GrAirRes)
 		Me.PnAll.Controls.Add(Me.GroupBox1)
 		Me.PnAll.Controls.Add(Me.GroupBox8)
@@ -800,13 +818,91 @@ Partial Class F_VEH
 		Me.PnAll.Controls.Add(Me.GroupBox6)
 		Me.PnAll.Location = New System.Drawing.Point(6, 172)
 		Me.PnAll.Name = "PnAll"
-		Me.PnAll.Size = New System.Drawing.Size(552, 514)
+		Me.PnAll.Size = New System.Drawing.Size(575, 544)
 		Me.PnAll.TabIndex = 4
 		'
+		'GroupBox2
+		'
+		Me.GroupBox2.Controls.Add(Me.Panel1)
+		Me.GroupBox2.Controls.Add(Me.btAngularGearLossMapBrowse)
+		Me.GroupBox2.Controls.Add(Me.tbAngularGearLossMapPath)
+		Me.GroupBox2.Controls.Add(Me.cbAngularGearType)
+		Me.GroupBox2.Location = New System.Drawing.Point(290, 327)
+		Me.GroupBox2.Name = "GroupBox2"
+		Me.GroupBox2.Size = New System.Drawing.Size(278, 111)
+		Me.GroupBox2.TabIndex = 4
+		Me.GroupBox2.TabStop = False
+		Me.GroupBox2.Text = "Angular Gear"
+		'
+		'Panel1
+		'
+		Me.Panel1.Controls.Add(Me.Label4)
+		Me.Panel1.Controls.Add(Me.Label10)
+		Me.Panel1.Controls.Add(Me.tbAngularGearRatio)
+		Me.Panel1.Location = New System.Drawing.Point(6, 46)
+		Me.Panel1.Name = "Panel1"
+		Me.Panel1.Size = New System.Drawing.Size(266, 34)
+		Me.Panel1.TabIndex = 1
+		'
+		'Label4
+		'
+		Me.Label4.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+		Me.Label4.AutoSize = True
+		Me.Label4.Location = New System.Drawing.Point(243, 10)
+		Me.Label4.Name = "Label4"
+		Me.Label4.Size = New System.Drawing.Size(16, 13)
+		Me.Label4.TabIndex = 10
+		Me.Label4.Text = "[-]"
+		'
+		'Label10
+		'
+		Me.Label10.Location = New System.Drawing.Point(17, 11)
+		Me.Label10.Name = "Label10"
+		Me.Label10.Size = New System.Drawing.Size(167, 18)
+		Me.Label10.TabIndex = 5
+		Me.Label10.Text = "Ratio"
+		Me.Label10.TextAlign = System.Drawing.ContentAlignment.TopRight
+		'
+		'tbAngularGearRatio
+		'
+		Me.tbAngularGearRatio.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+		Me.tbAngularGearRatio.Location = New System.Drawing.Point(186, 7)
+		Me.tbAngularGearRatio.Name = "tbAngularGearRatio"
+		Me.tbAngularGearRatio.Size = New System.Drawing.Size(56, 20)
+		Me.tbAngularGearRatio.TabIndex = 0
+		'
+		'btAngularGearLossMapBrowse
+		'
+		Me.btAngularGearLossMapBrowse.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
+		Me.btAngularGearLossMapBrowse.Image = Global.VECTO.My.Resources.Resources.Open_icon
+		Me.btAngularGearLossMapBrowse.Location = New System.Drawing.Point(249, 82)
+		Me.btAngularGearLossMapBrowse.Name = "btAngularGearLossMapBrowse"
+		Me.btAngularGearLossMapBrowse.Size = New System.Drawing.Size(24, 24)
+		Me.btAngularGearLossMapBrowse.TabIndex = 3
+		Me.btAngularGearLossMapBrowse.UseVisualStyleBackColor = True
+		'
+		'tbAngularGearLossMapPath
+		'
+		Me.tbAngularGearLossMapPath.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
+		Me.tbAngularGearLossMapPath.Location = New System.Drawing.Point(5, 84)
+		Me.tbAngularGearLossMapPath.Name = "tbAngularGearLossMapPath"
+		Me.tbAngularGearLossMapPath.Size = New System.Drawing.Size(244, 20)
+		Me.tbAngularGearLossMapPath.TabIndex = 2
+		'
+		'cbAngularGearType
+		'
+		Me.cbAngularGearType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
+		Me.cbAngularGearType.FormattingEnabled = True
+		Me.cbAngularGearType.Items.AddRange(New Object() {"No Angular Gear", "Separate Angular Gear", "Included in Transmission Loss Maps"})
+		Me.cbAngularGearType.Location = New System.Drawing.Point(6, 19)
+		Me.cbAngularGearType.Name = "cbAngularGearType"
+		Me.cbAngularGearType.Size = New System.Drawing.Size(266, 21)
+		Me.cbAngularGearType.TabIndex = 0
+		'
 		'PicVehicle
 		'
 		Me.PicVehicle.BackColor = System.Drawing.Color.LightGray
-		Me.PicVehicle.Location = New System.Drawing.Point(250, 74)
+		Me.PicVehicle.Location = New System.Drawing.Point(281, 74)
 		Me.PicVehicle.Name = "PicVehicle"
 		Me.PicVehicle.Size = New System.Drawing.Size(300, 88)
 		Me.PicVehicle.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage
@@ -816,10 +912,10 @@ Partial Class F_VEH
 		'Label8
 		'
 		Me.Label8.AutoSize = True
-		Me.Label8.Location = New System.Drawing.Point(89, 145)
+		Me.Label8.Location = New System.Drawing.Point(89, 143)
 		Me.Label8.Name = "Label8"
 		Me.Label8.Size = New System.Drawing.Size(58, 13)
-		Me.Label8.TabIndex = 40
+		Me.Label8.TabIndex = 10
 		Me.Label8.Text = "HDV Class"
 		'
 		'F_VEH
@@ -828,7 +924,7 @@ 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(562, 741)
+		Me.ClientSize = New System.Drawing.Size(589, 769)
 		Me.Controls.Add(Me.Label8)
 		Me.Controls.Add(Me.TbHDVclass)
 		Me.Controls.Add(Me.PicVehicle)
@@ -873,6 +969,10 @@ Partial Class F_VEH
 		CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit()
 		Me.CmOpenFile.ResumeLayout(False)
 		Me.PnAll.ResumeLayout(False)
+		Me.GroupBox2.ResumeLayout(False)
+		Me.GroupBox2.PerformLayout()
+		Me.Panel1.ResumeLayout(False)
+		Me.Panel1.PerformLayout()
 		CType(Me.PicVehicle, System.ComponentModel.ISupportInitialize).EndInit()
 		Me.ResumeLayout(False)
 		Me.PerformLayout()
@@ -955,4 +1055,12 @@ Partial Class F_VEH
 	Friend WithEvents Label8 As System.Windows.Forms.Label
 	Friend WithEvents PnCdATrTr As System.Windows.Forms.Panel
 	Friend WithEvents Label38 As System.Windows.Forms.Label
+	Friend WithEvents GroupBox2 As System.Windows.Forms.GroupBox
+	Friend WithEvents Label4 As System.Windows.Forms.Label
+	Friend WithEvents Label10 As System.Windows.Forms.Label
+	Friend WithEvents tbAngularGearRatio As System.Windows.Forms.TextBox
+	Friend WithEvents btAngularGearLossMapBrowse As System.Windows.Forms.Button
+	Friend WithEvents tbAngularGearLossMapPath As System.Windows.Forms.TextBox
+	Friend WithEvents cbAngularGearType As System.Windows.Forms.ComboBox
+	Friend WithEvents Panel1 As System.Windows.Forms.Panel
 End Class
diff --git a/VECTO/GUI/F_VEH.resx b/VECTO/GUI/F_VEH.resx
index afc65da6332f6269d7ed1eb1f8f2e237c3a870bc..994b92ac355e7506d9b05229d838bf53ec7ff58e 100644
--- a/VECTO/GUI/F_VEH.resx
+++ b/VECTO/GUI/F_VEH.resx
@@ -126,6 +126,9 @@
   <metadata name="CmOpenFile.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>258, 21</value>
   </metadata>
+  <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>57</value>
+  </metadata>
   <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
   <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
diff --git a/VECTO/GUI/F_VEH.vb b/VECTO/GUI/F_VEH.vb
index d14a30b06b7e60db168f389e0b67de0963fab355..ef7d6a4570c77f045dd821253e2ff53f3b38f519 100644
--- a/VECTO/GUI/F_VEH.vb
+++ b/VECTO/GUI/F_VEH.vb
@@ -10,23 +10,22 @@
 ' See the LICENSE.txt for the specific language governing permissions and limitations.
 Option Infer On
 
-
 Imports System.IO
 Imports System.Text.RegularExpressions
 
 ''' <summary>
 ''' Vehicle Editor.
 ''' </summary>
-''' <remarks></remarks>
 Public Class F_VEH
-	Dim AxlDlog As F_VEH_Axle
-	Private HDVclass As String
-	Dim VehFile As String
+	Private _axlDlog As F_VEH_Axle
+	Private _hdVclass As String
+	Private _vehFile As String
+	Private _changed As Boolean = False
+	Private _cmFiles As String()
+
 	Public AutoSendTo As Boolean = False
 	Public JobDir As String = ""
 
-	Private Changed As Boolean = False
-
 	'Close - Check for unsaved changes
 	Private Sub F_VEH_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
 		If e.CloseReason <> CloseReason.ApplicationExitCall And e.CloseReason <> CloseReason.WindowsShutDown Then
@@ -45,32 +44,32 @@ Public Class F_VEH
 		CbCdMode.Enabled = Not Cfg.DeclMode
 		PnWheelDiam.Enabled = Not Cfg.DeclMode
 
-		AxlDlog = New F_VEH_Axle
+		_axlDlog = New F_VEH_Axle
 
 		CbRim.Items.Add("-")
 		For Each txt In Declaration.RimsList
 			CbRim.Items.Add(txt)
 		Next
 
-		Changed = False
+		_changed = False
 
-		newVEH()
+		NewVehicle()
 	End Sub
 
 	'Set HDVclasss
-	Private Sub SetHDVclass()
-		Dim VehC = CType(CbCat.SelectedIndex, tVehCat)
-		Dim AxlC = CType(CbAxleConfig.SelectedIndex, tAxleConf)
-		Dim MaxMass = CSng(fTextboxToNumString(TbMassMass.Text))
+	Private Sub SetHdVclass()
+		Dim vehC = CType(CbCat.SelectedIndex, tVehCat)
+		Dim axlC = CType(CbAxleConfig.SelectedIndex, tAxleConf)
+		Dim maxMass = CSng(fTextboxToNumString(TbMassMass.Text))
 
-		Dim s0 As cSegmentTableEntry = Declaration.SegmentTable.SetRef(VehC, AxlC, MaxMass)
-		HDVclass = "-"
+		Dim s0 As cSegmentTableEntry = Declaration.SegmentTable.SetRef(vehC, axlC, maxMass)
+		_hdVclass = "-"
 		If Not s0 Is Nothing Then
-			HDVclass = s0.HDVclass
+			_hdVclass = s0.HDVclass
 		End If
 
-		TbHDVclass.Text = HDVclass
-		PicVehicle.Image = Image.FromFile(Declaration.ConvPicPath(HDVclass, False))
+		TbHDVclass.Text = _hdVclass
+		PicVehicle.Image = Image.FromFile(Declaration.ConvPicPath(_hdVclass, False))
 	End Sub
 
 
@@ -84,7 +83,7 @@ Public Class F_VEH
 		Dim s0 = Declaration.SegmentTable.SetRef(vehC, axlC, maxMass)
 
 		If Not s0 Is Nothing Then
-			HDVclass = s0.HDVclass
+			_hdVclass = s0.HDVclass
 			Dim axleCount As Short = s0.AxleShares(s0.Missions(0)).Count
 			Dim i0 = LvRRC.Items.Count
 
@@ -101,10 +100,9 @@ Public Class F_VEH
 					LvRRC.Items.Add(lvi)
 				Next
 
-			ElseIf AxleCount < LvRRC.Items.Count Then
-				For i = AxleCount To LvRRC.Items.Count - 1
+			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
 
@@ -112,7 +110,7 @@ Public Class F_VEH
 
 		Else
 			PnAll.Enabled = False
-			HDVclass = "-"
+			_hdVclass = "-"
 		End If
 
 		TbMassExtra.Text = "-"
@@ -139,12 +137,12 @@ Public Class F_VEH
 
 	'New
 	Private Sub ToolStripBtNew_Click(sender As Object, e As EventArgs) Handles ToolStripBtNew.Click
-		newVEH()
+		NewVehicle()
 	End Sub
 
 	'Open
 	Private Sub ToolStripBtOpen_Click(sender As Object, e As EventArgs) Handles ToolStripBtOpen.Click
-		If fbVEH.OpenDialog(VehFile) Then openVEH(fbVEH.Files(0))
+		If fbVEH.OpenDialog(_vehFile) Then OpenVehicle(fbVEH.Files(0))
 	End Sub
 
 	'Save
@@ -162,7 +160,7 @@ Public Class F_VEH
 
 		If ChangeCheckCancel() Then Exit Sub
 
-		If VehFile = "" Then
+		If _vehFile = "" Then
 			If MsgBox("Save file now?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
 				If Not SaveOrSaveAs(True) Then Exit Sub
 			Else
@@ -179,18 +177,15 @@ Public Class F_VEH
 			F_VECTO.WindowState = FormWindowState.Normal
 		End If
 
-		F_VECTO.TbVEH.Text = fFileWoDir(VehFile, JobDir)
+		F_VECTO.TbVEH.Text = fFileWoDir(_vehFile, JobDir)
 	End Sub
 
 	'Help
 	Private Sub ToolStripButton1_Click(sender As Object, e As EventArgs) Handles ToolStripButton1.Click
 		If File.Exists(MyAppPath & "User Manual\help.html") Then
-			Dim BrowserRegistryString As String =
-					My.Computer.Registry.ClassesRoot.OpenSubKey("\http\shell\open\command\").GetValue("").ToString
-			Dim DefaultBrowserPath As String =
-					Regex.Match(BrowserRegistryString, "(\"".*?\"")").Captures(0).ToString
-			Process.Start(DefaultBrowserPath,
-						String.Format("""{0}{1}""", MyAppPath, "User Manual\help.html#vehicle-editor"))
+			Dim registryString = My.Computer.Registry.ClassesRoot.OpenSubKey("\http\shell\open\command\").GetValue("").ToString
+			Dim defaultBrowserPath = Regex.Match(registryString, "(\"".*?\"")").Captures(0).ToString
+			Process.Start(defaultBrowserPath, String.Format("""{0}{1}""", MyAppPath, "User Manual\help.html#vehicle-editor"))
 		Else
 			MsgBox("User Manual not found!", MsgBoxStyle.Critical)
 		End If
@@ -209,20 +204,19 @@ Public Class F_VEH
 	End Sub
 
 	'Save or Save As function = true if file is saved
-	Private Function SaveOrSaveAs(SaveAs As Boolean) As Boolean
-		If VehFile = "" Or SaveAs Then
-			If fbVEH.SaveDialog(VehFile) Then
-				VehFile = fbVEH.Files(0)
+	Private Function SaveOrSaveAs(saveAs As Boolean) As Boolean
+		If _vehFile = "" Or saveAs Then
+			If fbVEH.SaveDialog(_vehFile) Then
+				_vehFile = fbVEH.Files(0)
 			Else
 				Return False
 			End If
 		End If
-		Return saveVEH(VehFile)
+		Return SaveVehicle(_vehFile)
 	End Function
 
 	'New VEH
-	Private Sub newVEH()
-
+	Private Sub NewVehicle()
 		If ChangeCheckCancel() Then Exit Sub
 
 		TbMass.Text = ""
@@ -234,7 +228,11 @@ Public Class F_VEH
 		TbCdFile.Text = ""
 
 		CbRtType.SelectedIndex = 0
-		TbRtRatio.Text = "1"
+		TbRtRatio.Text = ""
+		TbRtPath.Text = ""
+
+		CbRtType.SelectedIndex = 0
+		TbRtRatio.Text = ""
 		TbRtPath.Text = ""
 
 		CbCat.SelectedIndex = 0
@@ -247,38 +245,30 @@ Public Class F_VEH
 
 		CbRim.SelectedIndex = 0
 
-
 		DeclInit()
 
-
-		VehFile = ""
+		_vehFile = ""
 		Text = "VEH Editor"
 		LbStatus.Text = ""
 
-		Changed = False
+		_changed = False
 	End Sub
 
 	'Open VEH
-	Sub openVEH(file As String)
-		Dim i As Int16
-		Dim VEH0 As cVEH
+	Sub OpenVehicle(file As String)
 		Dim inertia As Single
 
-		Dim a0 As cVEH.cAxle
-		Dim lvi As ListViewItem
-
 		If ChangeCheckCancel() Then Exit Sub
 
-		VEH0 = New cVEH
+		Dim veh = New cVEH
+		veh.FilePath = file
 
-		VEH0.FilePath = file
-
-		If Not VEH0.ReadFile Then
+		If Not veh.ReadFile Then
 			MsgBox("Cannot read " & file & "!")
 			Exit Sub
 		End If
 
-		If Cfg.DeclMode <> VEH0.SavedInDeclMode Then
+		If Cfg.DeclMode <> veh.SavedInDeclMode Then
 			Select Case WrongMode()
 				Case 1
 					Close()
@@ -286,34 +276,35 @@ Public Class F_VEH
 					F_MAINForm.OpenVectoFile(file)
 				Case -1
 					Exit Sub
-				Case Else '0
-					'Continue...
 			End Select
 		End If
 
-		TbMass.Text = VEH0.Mass
-		TbMassExtra.Text = VEH0.MassExtra
-		TbLoad.Text = VEH0.Loading
-		TBrdyn.Text = VEH0.rdyn
-		CbRim.Text = VEH0.Rim
+		TbMass.Text = veh.Mass
+		TbMassExtra.Text = veh.MassExtra
+		TbLoad.Text = veh.Loading
+		TBrdyn.Text = veh.rdyn
+		CbRim.Text = veh.Rim
 
 
-		CbCdMode.SelectedIndex = CType(VEH0.CdMode, Integer)
-		TbCdFile.Text = VEH0.CdFile.OriginalPath
+		CbCdMode.SelectedIndex = CType(veh.CdMode, Integer)
+		TbCdFile.Text = veh.CdFile.OriginalPath
 
-		CbRtType.SelectedIndex = CType(VEH0.RtType, Integer)
-		TbRtRatio.Text = CStr(VEH0.RtRatio)
-		TbRtPath.Text = CStr(VEH0.RtFile.OriginalPath)
+		CbRtType.SelectedIndex = CType(veh.RtType, Integer)
+		TbRtRatio.Text = veh.RtRatio
+		TbRtPath.Text = veh.RtFile.OriginalPath
 
+		cbAngularGearType.SelectedIndex = CType(veh.AngularGearType, Integer)
+		tbAngularGearRatio.Text = veh.AngularGearRatio
+		tbAngularGearLossMapPath.Text = veh.AngularGearLossMapFile.OriginalPath
 
-		CbCat.SelectedIndex = CType(VEH0.VehCat, Integer)
+		CbCat.SelectedIndex = CType(veh.VehCat, Integer)
 
 
 		LvRRC.Items.Clear()
-		i = 0
-		For Each a0 In VEH0.Axles
+		Dim i = 0
+		For Each a0 In veh.Axles
 			i += 1
-			lvi = New ListViewItem
+			Dim lvi = New ListViewItem
 			lvi.SubItems(0).Text = i.ToString
 
 			If Cfg.DeclMode Then
@@ -345,36 +336,36 @@ Public Class F_VEH
 			LvRRC.Items.Add(lvi)
 		Next
 
-		TbMassMass.Text = VEH0.MassMax
-		TbMassExtra.Text = VEH0.MassExtra
+		TbMassMass.Text = veh.MassMax
+		TbMassExtra.Text = veh.MassExtra
 
-		CbAxleConfig.SelectedIndex = CType(VEH0.AxleConf, Integer)
+		CbAxleConfig.SelectedIndex = CType(veh.AxleConf, Integer)
 
-		TBcdA.Text = VEH0.CdA0
+		TBcdA.Text = veh.CdA0
 
 		DeclInit()
 
 		fbVEH.UpdateHistory(file)
 		Text = fFILE(file, True)
 		LbStatus.Text = ""
-		VehFile = file
+		_vehFile = file
 		Activate()
 
-		Changed = False
+		_changed = False
 	End Sub
 
 	'Save VEH
-	Private Function saveVEH(file As String) As Boolean
+	Private Function SaveVehicle(file As String) As Boolean
 
-		Dim veh0 = New cVEH
-		veh0.FilePath = file
+		Dim veh = New cVEH
+		veh.FilePath = file
 
-		veh0.Mass = CSng(fTextboxToNumString(TbMass.Text))
-		veh0.MassExtra = CSng(fTextboxToNumString(TbMassExtra.Text))
-		veh0.Loading = CSng(fTextboxToNumString(TbLoad.Text))
+		veh.Mass = CSng(fTextboxToNumString(TbMass.Text))
+		veh.MassExtra = CSng(fTextboxToNumString(TbMassExtra.Text))
+		veh.Loading = CSng(fTextboxToNumString(TbLoad.Text))
 
-		veh0.CdA0 = CSng(fTextboxToNumString(TBcdA.Text))
-		veh0.CdA02 = veh0.CdA0
+		veh.CdA0 = CSng(fTextboxToNumString(TBcdA.Text))
+		veh.CdA02 = veh.CdA0
 
 		Dim vehC = CType(CbCat.SelectedIndex, tVehCat)
 		Dim axlC = CType(CbAxleConfig.SelectedIndex, tAxleConf)
@@ -383,22 +374,27 @@ Public Class F_VEH
 		If Not s0 Is Nothing Then
 			If s0.HDVclass = "2" Then
 				' CdA Addition for T1 Trailer
-				veh0.CdA02 += 1.1
+				veh.CdA02 += 1.1
 			End If
 			If s0.HDVclass = "4" OrElse s0.HDVclass = "9" Then
 				' CdA Addition for T2 Trailer
-				veh0.CdA02 += 0.6
+				veh.CdA02 += 0.6
 			End If
 		End If
 
-		veh0.Rim = CbRim.Text
-		veh0.rdyn = CSng(fTextboxToNumString(TBrdyn.Text))
-		veh0.CdMode = CType(CbCdMode.SelectedIndex, tCdMode)
-		veh0.CdFile.Init(fPATH(file), TbCdFile.Text)
-		veh0.RtType = CType(CbRtType.SelectedIndex, tRtType)
-		veh0.RtRatio = CSng(fTextboxToNumString(TbRtRatio.Text))
-		veh0.RtFile.Init(fPATH(file), TbRtPath.Text)
-		veh0.VehCat = CType(CbCat.SelectedIndex, tVehCat)
+		veh.Rim = CbRim.Text
+		veh.rdyn = CSng(fTextboxToNumString(TBrdyn.Text))
+		veh.CdMode = CType(CbCdMode.SelectedIndex, tCdMode)
+		veh.CdFile.Init(fPATH(file), TbCdFile.Text)
+		veh.RtType = CType(CbRtType.SelectedIndex, tRtType)
+		veh.RtRatio = CSng(fTextboxToNumString(TbRtRatio.Text))
+		veh.RtFile.Init(fPATH(file), TbRtPath.Text)
+
+		veh.AngularGearType = CType(cbAngularGearType.SelectedIndex, tAngularGearType)
+		veh.AngularGearRatio = CSng(fTextboxToNumString(tbAngularGearRatio.Text))
+		veh.AngularGearLossMapFile.Init(fPATH(file), tbAngularGearLossMapPath.Text)
+
+		veh.VehCat = CType(CbCat.SelectedIndex, tVehCat)
 
 		Dim axleShareCheck As Double
 		For Each LV0 In LvRRC.Items
@@ -410,7 +406,7 @@ Public Class F_VEH
 			a0.FzISO = fTextboxToNumString(LV0.SubItems(4).Text)
 			a0.Wheels = LV0.SubItems(5).Text
 			a0.Inertia = fTextboxToNumString(LV0.SubItems(6).Text)
-			veh0.Axles.Add(a0)
+			veh.Axles.Add(a0)
 		Next
 
 		If Not Cfg.DeclMode AndAlso Math.Abs(axleShareCheck - 1) > 0.000001 Then
@@ -418,12 +414,12 @@ Public Class F_VEH
 			Return False
 		End If
 
-		veh0.MassMax = CSng(fTextboxToNumString(TbMassMass.Text))
-		veh0.MassExtra = CSng(fTextboxToNumString(TbMassExtra.Text))
-		veh0.AxleConf = CType(CbAxleConfig.SelectedIndex, tAxleConf)
+		veh.MassMax = CSng(fTextboxToNumString(TbMassMass.Text))
+		veh.MassExtra = CSng(fTextboxToNumString(TbMassExtra.Text))
+		veh.AxleConf = CType(CbAxleConfig.SelectedIndex, tAxleConf)
 
 		'---------------------------------------------------------------------------------
-		If Not veh0.SaveFile Then
+		If Not veh.SaveFile Then
 			MsgBox("Cannot safe to " & file, MsgBoxStyle.Critical)
 			Return False
 		End If
@@ -439,7 +435,7 @@ Public Class F_VEH
 		Text = fFILE(file, True)
 		LbStatus.Text = ""
 
-		Changed = False
+		_changed = False
 
 		Return True
 	End Function
@@ -486,13 +482,13 @@ Public Class F_VEH
 			ex = "vcdb"
 		End If
 
-		If fbCDx.OpenDialog(fFileRepl(TbCdFile.Text, fPATH(VehFile)), False, ex) Then _
-			TbCdFile.Text = fFileWoDir(fbCDx.Files(0), fPATH(VehFile))
+		If fbCDx.OpenDialog(fFileRepl(TbCdFile.Text, fPATH(_vehFile)), False, ex) Then _
+			TbCdFile.Text = fFileWoDir(fbCDx.Files(0), fPATH(_vehFile))
 	End Sub
 
 	'Open Cd File
 	Private Sub BtCdFileOpen_Click(sender As Object, e As EventArgs) Handles BtCdFileOpen.Click
-		OpenFiles(fFileRepl(TbCdFile.Text, fPATH(VehFile)))
+		OpenFiles(fFileRepl(TbCdFile.Text, fPATH(_vehFile)))
 	End Sub
 
 #End Region
@@ -525,9 +521,8 @@ Public Class F_VEH
 
 	'Rt File Browse
 	Private Sub BtRtBrowse_Click(sender As Object, e As EventArgs) Handles BtRtBrowse.Click
-
-		If fbRLM.OpenDialog(fFileRepl(TbRtPath.Text, fPATH(VehFile))) Then _
-			TbRtPath.Text = fFileWoDir(fbRLM.Files(0), fPATH(VehFile))
+		If fbRLM.OpenDialog(fFileRepl(TbRtPath.Text, fPATH(_vehFile))) Then _
+			TbRtPath.Text = fFileWoDir(fbRLM.Files(0), fPATH(_vehFile))
 	End Sub
 
 #End Region
@@ -535,23 +530,23 @@ Public Class F_VEH
 #Region "Track changes"
 
 	Private Sub Change()
-		If Not Changed Then
+		If Not _changed Then
 			LbStatus.Text = "Unsaved changes in current file"
-			Changed = True
+			_changed = True
 		End If
 	End Sub
 
 	' "Save changes? "... Returns True if user aborts
 	Private Function ChangeCheckCancel() As Boolean
 
-		If Changed Then
+		If _changed Then
 			Select Case MsgBox("Save changes ?", MsgBoxStyle.YesNoCancel)
 				Case MsgBoxResult.Yes
 					Return Not SaveOrSaveAs(False)
 				Case MsgBoxResult.Cancel
 					Return True
 				Case Else 'MsgBoxResult.No
-					Changed = False
+					_changed = False
 					Return False
 			End Select
 
@@ -567,22 +562,21 @@ Public Class F_VEH
 		Change()
 	End Sub
 
-	Private Sub CbRim_SelectedIndexChanged(sender As Object, e As EventArgs) _
-		Handles CbRim.SelectedIndexChanged
+	Private Sub CbRim_SelectedIndexChanged(sender As Object, e As EventArgs) Handles CbRim.SelectedIndexChanged
 		Change()
 		DeclInit()
 	End Sub
 
 	Private Sub TBcw_TextChanged(sender As Object, e As EventArgs) _
 		Handles TbLoad.TextChanged, TBrdyn.TextChanged, TBcdA.TextChanged, TbCdFile.TextChanged, TbRtPath.TextChanged,
-				TbRtRatio.TextChanged
+				TbRtRatio.TextChanged, tbAngularGearRatio.TextChanged, tbAngularGearLossMapPath.TextChanged,
+				cbAngularGearType.SelectedIndexChanged
 		Change()
 	End Sub
 
-	Private Sub CbCat_SelectedIndexChanged(sender As Object, e As EventArgs) _
-		Handles CbCat.SelectedIndexChanged
+	Private Sub CbCat_SelectedIndexChanged(sender As Object, e As EventArgs) Handles CbCat.SelectedIndexChanged
 		Change()
-		SetHDVclass()
+		SetHdVclass()
 		DeclInit()
 	End Sub
 
@@ -594,14 +588,14 @@ Public Class F_VEH
 	Private Sub TbMassMax_TextChanged(sender As Object, e As EventArgs) Handles TbMassMass.TextChanged
 		SetMaxLoad()
 		Change()
-		SetHDVclass()
+		SetHdVclass()
 		DeclInit()
 	End Sub
 
 	Private Sub CbAxleConfig_SelectedIndexChanged(sender As Object, e As EventArgs) _
 		Handles CbAxleConfig.SelectedIndexChanged
 		Change()
-		SetHDVclass()
+		SetHdVclass()
 		DeclInit()
 	End Sub
 
@@ -623,22 +617,22 @@ Public Class F_VEH
 	Private Sub ButAxlAdd_Click(sender As Object, e As EventArgs) Handles ButAxlAdd.Click
 		Dim lv0 As ListViewItem
 
-		AxlDlog.Clear()
+		_axlDlog.Clear()
 
-		If AxlDlog.ShowDialog = DialogResult.OK Then
+		If _axlDlog.ShowDialog = DialogResult.OK Then
 			lv0 = New ListViewItem
 
 			lv0.SubItems(0).Text = LvRRC.Items.Count + 1
-			lv0.SubItems.Add(Trim(AxlDlog.TbAxleShare.Text))
-			If AxlDlog.CbTwinT.Checked Then
+			lv0.SubItems.Add(Trim(_axlDlog.TbAxleShare.Text))
+			If _axlDlog.CbTwinT.Checked Then
 				lv0.SubItems.Add("yes")
 			Else
 				lv0.SubItems.Add("no")
 			End If
-			lv0.SubItems.Add(Trim(AxlDlog.TbRRC.Text))
-			lv0.SubItems.Add(Trim(AxlDlog.TbFzISO.Text))
-			lv0.SubItems.Add(Trim(AxlDlog.CbWheels.Text))
-			lv0.SubItems.Add(Trim(AxlDlog.TbI_wheels.Text))
+			lv0.SubItems.Add(Trim(_axlDlog.TbRRC.Text))
+			lv0.SubItems.Add(Trim(_axlDlog.TbFzISO.Text))
+			lv0.SubItems.Add(Trim(_axlDlog.CbWheels.Text))
+			lv0.SubItems.Add(Trim(_axlDlog.TbI_wheels.Text))
 
 			LvRRC.Items.Add(lv0)
 
@@ -699,24 +693,24 @@ Public Class F_VEH
 
 		Dim lv0 = LvRRC.SelectedItems(0)
 
-		AxlDlog.TbAxleShare.Text = lv0.SubItems(1).Text
-		AxlDlog.CbTwinT.Checked = (lv0.SubItems(2).Text = "yes")
-		AxlDlog.TbRRC.Text = lv0.SubItems(3).Text
-		AxlDlog.TbFzISO.Text = lv0.SubItems(4).Text
-		AxlDlog.TbI_wheels.Text = lv0.SubItems(6).Text
-		AxlDlog.CbWheels.Text = lv0.SubItems(5).Text
+		_axlDlog.TbAxleShare.Text = lv0.SubItems(1).Text
+		_axlDlog.CbTwinT.Checked = (lv0.SubItems(2).Text = "yes")
+		_axlDlog.TbRRC.Text = lv0.SubItems(3).Text
+		_axlDlog.TbFzISO.Text = lv0.SubItems(4).Text
+		_axlDlog.TbI_wheels.Text = lv0.SubItems(6).Text
+		_axlDlog.CbWheels.Text = lv0.SubItems(5).Text
 
-		If AxlDlog.ShowDialog = DialogResult.OK Then
-			lv0.SubItems(1).Text = AxlDlog.TbAxleShare.Text
-			If AxlDlog.CbTwinT.Checked Then
+		If _axlDlog.ShowDialog = DialogResult.OK Then
+			lv0.SubItems(1).Text = _axlDlog.TbAxleShare.Text
+			If _axlDlog.CbTwinT.Checked Then
 				lv0.SubItems(2).Text = "yes"
 			Else
 				lv0.SubItems(2).Text = "no"
 			End If
-			lv0.SubItems(3).Text = AxlDlog.TbRRC.Text
-			lv0.SubItems(4).Text = AxlDlog.TbFzISO.Text
-			lv0.SubItems(5).Text = AxlDlog.CbWheels.Text
-			lv0.SubItems(6).Text = AxlDlog.TbI_wheels.Text
+			lv0.SubItems(3).Text = _axlDlog.TbRRC.Text
+			lv0.SubItems(4).Text = _axlDlog.TbFzISO.Text
+			lv0.SubItems(5).Text = _axlDlog.CbWheels.Text
+			lv0.SubItems(6).Text = _axlDlog.TbI_wheels.Text
 
 			Change()
 			DeclInit()
@@ -727,26 +721,25 @@ Public Class F_VEH
 
 #Region "Open File Context Menu"
 
-	Private CmFiles As String()
 
 	Private Sub OpenFiles(ParamArray files() As String)
 		If files.Length = 0 Then Exit Sub
 
-		CmFiles = files
+		_cmFiles = files
 		OpenWithToolStripMenuItem.Text = "Open with " & Cfg.OpenCmdName
 		CmOpenFile.Show(Cursor.Position)
 	End Sub
 
 	Private Sub OpenWithToolStripMenuItem_Click(sender As Object, e As EventArgs) _
 		Handles OpenWithToolStripMenuItem.Click
-		If Not FileOpenAlt(CmFiles(0)) Then MsgBox("Failed to open file!")
+		If Not FileOpenAlt(_cmFiles(0)) Then MsgBox("Failed to open file!")
 	End Sub
 
 	Private Sub ShowInFolderToolStripMenuItem_Click(sender As Object, e As EventArgs) _
 		Handles ShowInFolderToolStripMenuItem.Click
-		If File.Exists(CmFiles(0)) Then
+		If File.Exists(_cmFiles(0)) Then
 			Try
-				Process.Start("explorer", "/select,""" & CmFiles(0) & "")
+				Process.Start("explorer", "/select,""" & _cmFiles(0) & "")
 			Catch ex As Exception
 				MsgBox("Failed to open file!")
 			End Try
@@ -756,5 +749,33 @@ Public Class F_VEH
 	End Sub
 
 #End Region
+
+
+#Region "Angular Gear"
+
+	Private Sub cbAngularGearType_SelectedIndexChanged(sender As Object, e As EventArgs) _
+		Handles cbAngularGearType.SelectedIndexChanged
+		Select Case cbAngularGearType.SelectedIndex
+			Case 1 'Separate Angular Gear
+				tbAngularGearRatio.Enabled = True
+				btAngularGearLossMapBrowse.Enabled = True
+				tbAngularGearLossMapPath.Enabled = True
+			Case Else 'Losses included in Transmission, None
+				tbAngularGearRatio.Text = "0"
+				tbAngularGearRatio.Enabled = False
+				btAngularGearLossMapBrowse.Enabled = False
+				tbAngularGearLossMapPath.Text = ""
+				tbAngularGearLossMapPath.Enabled = False
+		End Select
+
+		Change()
+	End Sub
+
+	Private Sub btAngularGearLossMapBrowse_Click(sender As Object, e As EventArgs) Handles btAngularGearLossMapBrowse.Click
+		If fbTLM.OpenDialog(fFileRepl(TbRtPath.Text, fPATH(_vehFile))) Then _
+			tbAngularGearLossMapPath.Text = fFileWoDir(fbTLM.Files(0), fPATH(_vehFile))
+	End Sub
+
+#End Region
 End Class
 
diff --git a/VECTO/Input Files/cVEH.vb b/VECTO/Input Files/cVEH.vb
index 97f84ee26b0cc3fa28c2473d50cfb885ddc66acc..4763a6b7037038f4eaa32d47aa0c9bc0655e5214 100644
--- a/VECTO/Input Files/cVEH.vb	
+++ b/VECTO/Input Files/cVEH.vb	
@@ -56,6 +56,9 @@ Public Class cVEH
 	Private MyFileList As List(Of String)
 
 	Public SavedInDeclMode As Boolean
+	Public AngularGearType As tAngularGearType
+	Public AngularGearRatio As Single
+	Public AngularGearLossMapFile As cSubPath
 
 
 	Public Class cAxle
@@ -78,6 +81,9 @@ Public Class cVEH
 		'Retarder
 		If Me.RtType <> tRtType.None Then MyFileList.Add(Me.RtFile.FullPath)
 
+		'Angular Gear
+		If AngularGearType <> tAngularGearType.None Then MyFileList.Add(Me.AngularGearLossMapFile.FullPath)
+
 		Return True
 	End Function
 
@@ -89,6 +95,7 @@ Public Class cVEH
 		CdX = New List(Of Single)
 		CdY = New List(Of Single)
 		RtFile = New cSubPath
+		AngularGearLossMapFile = New cSubPath()
 		RtnU = New List(Of Single)
 		RtM = New List(Of Single)
 		Axles = New List(Of cAxle)
@@ -113,10 +120,16 @@ Public Class cVEH
 		Rim = ""
 
 		RtType = tRtType.None
-		RtRatio = 0
+		RtRatio = 1
 		RtnU.Clear()
 		RtM.Clear()
 		RtFile.Clear()
+		AngularGearLossMapFile.Clear()
+
+		AngularGearType = tAngularGearType.None
+		AngularGearLossMapFile.Clear()
+		AngularGearRatio = 1
+
 		Axles.Clear()
 		VehCat = tVehCat.Undef
 		MassMax = 0
@@ -215,6 +228,18 @@ Public Class cVEH
 					RtFile.Init(MyPath, JSON.Content("Body")("Retarder")("File"))
 			End If
 
+			If JSON.Content("Body")("AngularGear") Is Nothing Then
+				AngularGearType = tAngularGearType.None
+			Else
+				AngularGearType = AngularGearTypeConverter(JSON.Content("Body")("AngularGear")("Type").ToString)
+
+				If Not JSON.Content("Body")("AngularGear")("Ratio") Is Nothing Then _
+					AngularGearRatio = JSON.Content("Body")("AngularGear")("Ratio")
+				If Not JSON.Content("Body")("AngularGear")("LossMap") Is Nothing Then _
+					AngularGearLossMapFile.Init(MyPath, JSON.Content("Body")("AngularGear")("LossMap"))
+			End If
+
+
 			VehCat = ConvVehCat(JSON.Content("Body")("VehCat").ToString)
 			AxleConf = ConvAxleConf(JSON.Content("Body")("AxleConfig")("Type").ToString)
 
@@ -287,6 +312,10 @@ Public Class cVEH
 				{"Type", RtTypeConv(RtType)},
 				{"Ratio", RtRatio},
 				{"File", RtFile.PathOrDummy}}},
+			{"AngularGear", New Dictionary(Of String, Object) From {
+				{"Type", AngularGearTypeConverter(AngularGearType)},
+				{"Ratio", AngularGearRatio},
+				{"LossMap", AngularGearLossMapFile.PathOrDummy}}},
 			{"AxleConfig", New Dictionary(Of String, Object) From {
 				{"Type", ConvAxleConf(AxleConf)},
 				{"Axles", (From axle In Axles Select New Dictionary(Of String, Object) From {
@@ -295,7 +324,8 @@ Public Class cVEH
 					{"AxleWeightShare", axle.Share},
 					{"TwinTyres", axle.TwinTire},
 					{"RRCISO", axle.RRC},
-					{"FzISO", axle.FzISO}})}}}}
+					{"FzISO", axle.FzISO}})}}}
+			}
 
 		json.Content.Add("Body", dic)
 		Return json.WriteFile(sFilePath)
diff --git a/VECTO/VECTO_Global.vb b/VECTO/VECTO_Global.vb
index 9eab4688b6976511aef84aab13a4d9715de82946..146dd4d0ae99339b00d251917380f5482dbe1a32 100644
--- a/VECTO/VECTO_Global.vb
+++ b/VECTO/VECTO_Global.vb
@@ -390,8 +390,31 @@ Module VECTO_Global
 		End Select
 	End Function
 
-	Public Function RtTypeConv(RtType As String) As tRtType
-		Select Case UCase(Trim(RtType))
+	Public Function AngularGearTypeConverter(type As tAngularGearType) As String
+		Select Case type
+			Case tAngularGearType.SeparateAngularGear
+				Return "Separate"
+			Case tAngularGearType.IncludedInTransmission
+				Return "Included"
+			Case Else
+				Return "None"
+		End Select
+	End Function
+
+	Public Function AngularGearTypeConverter(type As String) As tAngularGearType
+		Select Case type
+			Case "Separate"
+				Return tAngularGearType.SeparateAngularGear
+			Case "Included"
+				Return tAngularGearType.IncludedInTransmission
+			Case Else
+				Return tAngularGearType.None
+		End Select
+	End Function
+
+
+	Public Function RtTypeConv(rtType As String) As tRtType
+		Select Case UCase(Trim(rtType))
 			Case "PRIMARY"
 				Return tRtType.Primary
 			Case "SECONDARY"
diff --git a/VECTO/VECTO_Types.vb b/VECTO/VECTO_Types.vb
index a1ec2b0ae2aefe0eeee3282c0f6d2341362a8077..53bc7b0c64eeaaac61aa70ce1fa2af8d8c44e6be 100644
--- a/VECTO/VECTO_Types.vb
+++ b/VECTO/VECTO_Types.vb
@@ -14,170 +14,171 @@
 ''' </summary>
 ''' <remarks></remarks>
 Public Enum tFbExtMode As Integer
-    ForceExt = 0
-    MultiExt = 1
-    SingleExt = 2
+	ForceExt = 0
+	MultiExt = 1
+	SingleExt = 2
 End Enum
 
 Public Enum tWorkMsgType
-    StatusBar
-    StatusListBox
-    ProgBars
-    JobStatus
-    CycleStatus
-    InitProgBar
-    Abort
+	StatusBar
+	StatusListBox
+	ProgBars
+	JobStatus
+	CycleStatus
+	InitProgBar
+	Abort
 End Enum
 
 Public Enum tMsgID
-    NewJob
-    Normal
-    Warn
-    Err
+	NewJob
+	Normal
+	Warn
+	Err
 End Enum
 
 
 Public Enum tCalcResult
-    Err
-    Abort
-    Done
+	Err
+	Abort
+	Done
 End Enum
 
 Public Enum tJobStatus
-    Running
-    Queued
-    OK
-    Err
-    Warn
-    Undef
+	Running
+	Queued
+	OK
+	Err
+	Warn
+	Undef
 End Enum
 
 Public Enum tDriComp
-    t
-    V
-    Grad
-    Alt
-    nU
-    Gears
-    Padd
-    Pe
-    VairVres
-    VairBeta
-    Undefined
-    s
-    StopTime
-    Torque
-    Pwheel
+	t
+	V
+	Grad
+	Alt
+	nU
+	Gears
+	Padd
+	Pe
+	VairVres
+	VairBeta
+	Undefined
+	s
+	StopTime
+	Torque
+	Pwheel
 End Enum
 
 Public Enum tVehState
-    Cruise
-    Acc
-    Dec
-    Stopped
+	Cruise
+	Acc
+	Dec
+	Stopped
 End Enum
 
 Public Enum tEngState
-    Idle
-    Drag
-    FullDrag
-    Load
-    FullLoad
-    Stopped
-    Undef
+	Idle
+	Drag
+	FullDrag
+	Load
+	FullLoad
+	Stopped
+	Undef
 End Enum
 
 Public Enum tEngClutch
-    Closed
-    Opened
-    Slipping
+	Closed
+	Opened
+	Slipping
 End Enum
 
 Public Enum tAuxComp
-    Psupply
-    Undefined
+	Psupply
+	Undefined
 End Enum
 
 Public Enum tCdMode
-    ConstCd0 = 0
+	ConstCd0 = 0
 	CdOfVeng = 1
 	CdOfVdecl = 2
 	CdOfBeta = 3
 End Enum
 
 Public Enum tRtType
-    None = 0
-    Primary = 1
-    Secondary = 2
+	None = 0
+	Primary = 1
+	Secondary = 2
+End Enum
+
+Public Enum tAngularGearType
+	None = 0
+	SeparateAngularGear = 1
+	IncludedInTransmission = 2
 End Enum
 
 Public Enum tGearbox
-    Manual = 0
-    SemiAutomatic = 1
-    Automatic = 2
-    Custom = 3
+	Manual = 0
+	SemiAutomatic = 1
+	Automatic = 2
+	Custom = 3
 End Enum
 
 Public Enum tVehCat As Integer
-    Undef = 0
-    RigidTruck = 1
-    Tractor = 2
-    Citybus = 3
-    InterurbanBus = 4
-    Coach = 5
+	Undef = 0
+	RigidTruck = 1
+	Tractor = 2
+	Citybus = 3
+	InterurbanBus = 4
+	Coach = 5
 End Enum
 
 Public Enum tAxleConf As Integer
-    Undef = 0
-    a4x2 = 1
-    a4x4 = 2
-    a6x2 = 3
-    a6x4 = 4
-    a6x6 = 5
-    a8x2 = 6
-    a8x4 = 7
-    a8x6 = 8
-    a8x8 = 9
+	Undef = 0
+	a4x2 = 1
+	a4x4 = 2
+	a6x2 = 3
+	a6x4 = 4
+	a6x6 = 5
+	a8x2 = 6
+	a8x4 = 7
+	a8x6 = 8
+	a8x8 = 9
 End Enum
 
 Public Enum tLoading
-    FullLoaded
-    EmptyLoaded
-    RefLoaded
-    UserDefLoaded
+	FullLoaded
+	EmptyLoaded
+	RefLoaded
+	UserDefLoaded
 End Enum
 
 Public Enum tMission
-    LongHaul
-    RegionalDelivery
-    UrbanDelivery
-    MunicipalUtility
-    Construction
-    HeavyUrban
-    Urban
-    Suburban
-    Interurban
-    Coach
-    Undef
+	LongHaul
+	RegionalDelivery
+	UrbanDelivery
+	MunicipalUtility
+	Construction
+	HeavyUrban
+	Urban
+	Suburban
+	Interurban
+	Coach
+	Undef
 End Enum
 
 Public Enum tWHTCpart
-    Urban
-    Rural
-    Motorway
+	Urban
+	Rural
+	Motorway
 End Enum
 
 Public Enum tAux
-    Fan
-    SteerPump
-    HVAC
-    ElectricSys
-    PneumSys
+	Fan
+	SteerPump
+	HVAC
+	ElectricSys
+	PneumSys
 End Enum
 
 
-
-
-
-
-
diff --git a/VectoCommon/VectoCommon/Models/AngleGearType.cs b/VectoCommon/VectoCommon/Models/AngleGearType.cs
new file mode 100644
index 0000000000000000000000000000000000000000..babeaec975665790ddda2558df793d089b088153
--- /dev/null
+++ b/VectoCommon/VectoCommon/Models/AngleGearType.cs
@@ -0,0 +1,9 @@
+namespace TUGraz.VectoCommon.Models
+{
+	public enum AngleGearType
+	{
+		None,
+		SeparateAngleGear,
+		LossesIncludedInTransmission,
+	}
+}
\ No newline at end of file
diff --git a/VectoCommon/VectoCommon/VectoCommon.csproj b/VectoCommon/VectoCommon/VectoCommon.csproj
index f5af0adb6fb585a46a68a2b988b88da43e3c73e8..aa149ebe75be1a2a01f948bcabcec3d8ad8b8ac2 100644
--- a/VectoCommon/VectoCommon/VectoCommon.csproj
+++ b/VectoCommon/VectoCommon/VectoCommon.csproj
@@ -50,6 +50,7 @@
     <Compile Include="InputData\EngineeringInputData.cs" />
     <Compile Include="InputData\IInputDataProvider.cs" />
     <Compile Include="InputData\IntegrityStatus.cs" />
+    <Compile Include="Models\AngleGearType.cs" />
     <Compile Include="Models\AuxiliaryModel.cs" />
     <Compile Include="Models\AxleConfiguration.cs" />
     <Compile Include="Models\CrossWindCorrectionMode.cs" />
diff --git a/VectoCore/VectoCoreTest/FileIO/JsonTest.cs b/VectoCore/VectoCoreTest/FileIO/JsonTest.cs
index 2c75113db6268b751c10204680892358410abe1a..dc51918ed204cd0ec3c4ce00c1a09f4e97bbf703 100644
--- a/VectoCore/VectoCoreTest/FileIO/JsonTest.cs
+++ b/VectoCore/VectoCoreTest/FileIO/JsonTest.cs
@@ -36,6 +36,8 @@ using Newtonsoft.Json;
 using Newtonsoft.Json.Linq;
 using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.InputData.FileIO.JSON;
 using TUGraz.VectoCore.Tests.Utils;
 
@@ -45,6 +47,7 @@ namespace TUGraz.VectoCore.Tests.FileIO
 	public class JsonTest
 	{
 		private const string TestJobFile = @"Testdata\Jobs\40t_Long_Haul_Truck.vecto";
+		private const string TestVehicleFile = @"Testdata\Components\24t Coach.vveh";
 
 		[TestMethod]
 		public void ReadJobTest()
@@ -52,7 +55,7 @@ namespace TUGraz.VectoCore.Tests.FileIO
 			var job = JSONInputDataFactory.ReadJsonJob(TestJobFile);
 
 			Assert.IsNotNull(job);
-//			AssertHelper.Exception<InvalidFileFormatException>(() => );
+			//			AssertHelper.Exception<InvalidFileFormatException>(() => );
 		}
 
 		[TestMethod]
@@ -92,7 +95,9 @@ namespace TUGraz.VectoCore.Tests.FileIO
 			((JObject)json["Body"]).Property("Cycles").Remove();
 
 			AssertHelper.Exception<InvalidFileFormatException>(
-				() => { var tmp = new JSONInputDataV2(json, TestJobFile).Cycles; }, "Key Cycles not found");
+				() => {
+					var tmp = new JSONInputDataV2(json, TestJobFile).Cycles;
+				}, "Key Cycles not found");
 		}
 
 		[TestMethod]
@@ -118,7 +123,6 @@ namespace TUGraz.VectoCore.Tests.FileIO
 			}, "AccelerationCurve (VACC) required");
 		}
 
-
 		[TestMethod]
 		public void UseDeclarationDriverAccCurveTest()
 		{
@@ -150,11 +154,12 @@ namespace TUGraz.VectoCore.Tests.FileIO
 			((JObject)json["Body"]).Property("OverSpeedEcoRoll").Remove();
 
 			AssertHelper.Exception<VectoException>(
-				() => { var tmp = new JSONInputDataV2(json, TestJobFile).DriverInputData.OverSpeedEcoRoll; },
+				() => {
+					var tmp = new JSONInputDataV2(json, TestJobFile).DriverInputData.OverSpeedEcoRoll;
+				},
 				"Key OverSpeedEcoRoll not found");
 		}
 
-
 		[TestMethod]
 		public void TestReadingElectricTechlist()
 		{
@@ -169,167 +174,177 @@ namespace TUGraz.VectoCore.Tests.FileIO
 				}
 			}
 		}
-	}
 
+		[TestMethod]
+		public void TestReadAngleGear()
+		{
+			var json = (JObject)JToken.ReadFrom(new JsonTextReader(File.OpenText(TestVehicleFile)));
+			var angleGear = json["Body"]["AngleGear"].Value<string>();
+
+			var angleGearType = angleGear.ParseEnum<AngleGearType>();
+
+			Assert.AreEqual(AngleGearType.LossesIncludedInTransmission, angleGearType);
+
+			Assert.Fail("not implemented");
+		}
+	}
 
-//	[TestClass]
-//	public class JsonTest
-//	{
-//		private const string jsonExpected = @"{
-//  ""CreatedBy"": ""Michael Krisper"",
-//  ""Date"": ""2015-11-17T11:49:03Z"",
-//  ""AppVersion"": ""3.0.1.320"",
-//  ""FileVersion"": 7
-//}";
-
-//		private const string jsonExpected2 = @"{
-//  ""CreatedBy"": ""Michael Krisper"",
-//  ""Date"": ""2015-01-07T11:49:03Z"",
-//  ""AppVersion"": ""3.0.1.320"",
-//  ""FileVersion"": 7
-//}";
-
-
-//		[TestMethod]
-//		public void TestJsonHeaderEquality()
-//		{
-//			var h1 = new JsonDataHeader {
-//				AppVersion = "MyVecto3",
-//				CreatedBy = "UnitTest",
-//				Date = new DateTime(1970, 1, 1),
-//				FileVersion = 3
-//			};
-//			var h2 = new JsonDataHeader {
-//				AppVersion = "MyVecto3",
-//				CreatedBy = "UnitTest",
-//				Date = new DateTime(1970, 1, 1),
-//				FileVersion = 3
-//			};
-//			Assert.AreEqual(h1, h1);
-//			Assert.AreEqual(h1, h2);
-//			Assert.AreNotEqual(h1, null);
-//			Assert.AreNotEqual(h1, "hello world");
-//		}
-
-//		[TestMethod]
-//		public void Test_Json_DateFormat_German()
-//		{
-//			var json = @"{
-//  ""CreatedBy"": ""Michael Krisper"",
-//  ""Date"": ""17.11.2015 11:49:03"",
-//  ""AppVersion"": ""3.0.1.320"",
-//  ""FileVersion"": 7
-//}";
-//			var header = JsonConvert.DeserializeObject<JsonDataHeader>(json);
-
-//			Assert.AreEqual("3.0.1.320", header.AppVersion);
-//			Assert.AreEqual(7u, header.FileVersion);
-//			Assert.AreEqual("Michael Krisper", header.CreatedBy);
-//			Assert.AreEqual(new DateTime(2015, 11, 17, 11, 49, 3, DateTimeKind.Utc), header.Date);
-
-//			var jsonCompare = JsonConvert.SerializeObject(header, Formatting.Indented);
-//			Assert.AreEqual(jsonExpected, jsonCompare);
-//		}
-
-//		[TestMethod]
-//		public void Test_Json_DateFormat_German2()
-//		{
-//			var json = @"{
-//  ""CreatedBy"": ""Michael Krisper"",
-//  ""Date"": ""7.1.2015 11:49:03"",
-//  ""AppVersion"": ""3.0.1.320"",
-//  ""FileVersion"": 7
-//}";
-//			var header = JsonConvert.DeserializeObject<JsonDataHeader>(json);
-
-//			Assert.AreEqual("3.0.1.320", header.AppVersion);
-//			Assert.AreEqual(7u, header.FileVersion);
-//			Assert.AreEqual("Michael Krisper", header.CreatedBy);
-//			Assert.AreEqual(new DateTime(2015, 1, 7, 11, 49, 3, DateTimeKind.Utc), header.Date);
-
-//			var jsonCompare = JsonConvert.SerializeObject(header, Formatting.Indented);
-//			Assert.AreEqual(jsonExpected2, jsonCompare);
-//		}
-
-//		[TestMethod]
-//		public void Test_Json_DateFormat_English()
-//		{
-//			var json = @"{
-//  ""CreatedBy"": ""Michael Krisper"",
-//  ""Date"": ""11/17/2015 11:49:03 AM"",
-//  ""AppVersion"": ""3.0.1.320"",
-//  ""FileVersion"": 7
-//}";
-//			var header = JsonConvert.DeserializeObject<JsonDataHeader>(json);
-
-//			Assert.AreEqual("3.0.1.320", header.AppVersion);
-//			Assert.AreEqual(7u, header.FileVersion);
-//			Assert.AreEqual("Michael Krisper", header.CreatedBy);
-//			Assert.AreEqual(new DateTime(2015, 11, 17, 11, 49, 3, DateTimeKind.Utc), header.Date);
-
-//			var jsonCompare = JsonConvert.SerializeObject(header, Formatting.Indented);
-//			Assert.AreEqual(jsonExpected, jsonCompare);
-//		}
-
-//		[TestMethod]
-//		public void Test_Json_DateFormat_English2()
-//		{
-//			var json = @"{
-//  ""CreatedBy"": ""Michael Krisper"",
-//  ""Date"": ""1/7/2015 11:49:03 AM"",
-//  ""AppVersion"": ""3.0.1.320"",
-//  ""FileVersion"": 7
-//}";
-//			var header = JsonConvert.DeserializeObject<JsonDataHeader>(json);
-
-//			Assert.AreEqual("3.0.1.320", header.AppVersion);
-//			Assert.AreEqual(7u, header.FileVersion);
-//			Assert.AreEqual("Michael Krisper", header.CreatedBy);
-//			Assert.AreEqual(new DateTime(2015, 1, 7, 11, 49, 3, DateTimeKind.Utc), header.Date);
-
-//			var jsonCompare = JsonConvert.SerializeObject(header, Formatting.Indented);
-//			Assert.AreEqual(jsonExpected2, jsonCompare);
-//		}
-
-
-//		[TestMethod]
-//		public void Test_Json_DateFormat_ISO8601()
-//		{
-//			var json = @"{
-//  ""CreatedBy"": ""Michael Krisper"",
-//  ""Date"": ""2015-11-17T11:49:03Z"",
-//  ""AppVersion"": ""3.0.1.320"",
-//  ""FileVersion"": 7
-//}";
-//			var header = JsonConvert.DeserializeObject<JsonDataHeader>(json);
-
-//			Assert.AreEqual("3.0.1.320", header.AppVersion);
-//			Assert.AreEqual(7u, header.FileVersion);
-//			Assert.AreEqual("Michael Krisper", header.CreatedBy);
-//			Assert.AreEqual(new DateTime(2015, 11, 17, 11, 49, 3, DateTimeKind.Utc), header.Date);
-
-//			var jsonCompare = JsonConvert.SerializeObject(header, Formatting.Indented);
-//			Assert.AreEqual(json, jsonCompare);
-//		}
-
-//		[TestMethod]
-//		public void Test_Json_DateFormat_ISO8601_CET()
-//		{
-//			var json = @"{
-//  ""CreatedBy"": ""Michael Krisper"",
-//  ""Date"": ""2015-11-17T11:49:03+01:00"",
-//  ""AppVersion"": ""3.0.1.320"",
-//  ""FileVersion"": 7
-//}";
-//			var header = JsonConvert.DeserializeObject<JsonDataHeader>(json);
-
-//			Assert.AreEqual("3.0.1.320", header.AppVersion);
-//			Assert.AreEqual(7u, header.FileVersion);
-//			Assert.AreEqual("Michael Krisper", header.CreatedBy);
-//			Assert.AreEqual(new DateTime(2015, 11, 17, 11, 49, 3, DateTimeKind.Utc), header.Date);
-
-//			var jsonCompare = JsonConvert.SerializeObject(header, Formatting.Indented);
-//			Assert.AreEqual(json, jsonCompare);
-//		}
-//	}
+	//	[TestClass]
+	//	public class JsonTest
+	//	{
+	//		private const string jsonExpected = @"{
+	//  ""CreatedBy"": ""Michael Krisper"",
+	//  ""Date"": ""2015-11-17T11:49:03Z"",
+	//  ""AppVersion"": ""3.0.1.320"",
+	//  ""FileVersion"": 7
+	//}";
+
+	//		private const string jsonExpected2 = @"{
+	//  ""CreatedBy"": ""Michael Krisper"",
+	//  ""Date"": ""2015-01-07T11:49:03Z"",
+	//  ""AppVersion"": ""3.0.1.320"",
+	//  ""FileVersion"": 7
+	//}";
+
+	//		[TestMethod]
+	//		public void TestJsonHeaderEquality()
+	//		{
+	//			var h1 = new JsonDataHeader {
+	//				AppVersion = "MyVecto3",
+	//				CreatedBy = "UnitTest",
+	//				Date = new DateTime(1970, 1, 1),
+	//				FileVersion = 3
+	//			};
+	//			var h2 = new JsonDataHeader {
+	//				AppVersion = "MyVecto3",
+	//				CreatedBy = "UnitTest",
+	//				Date = new DateTime(1970, 1, 1),
+	//				FileVersion = 3
+	//			};
+	//			Assert.AreEqual(h1, h1);
+	//			Assert.AreEqual(h1, h2);
+	//			Assert.AreNotEqual(h1, null);
+	//			Assert.AreNotEqual(h1, "hello world");
+	//		}
+
+	//		[TestMethod]
+	//		public void Test_Json_DateFormat_German()
+	//		{
+	//			var json = @"{
+	//  ""CreatedBy"": ""Michael Krisper"",
+	//  ""Date"": ""17.11.2015 11:49:03"",
+	//  ""AppVersion"": ""3.0.1.320"",
+	//  ""FileVersion"": 7
+	//}";
+	//			var header = JsonConvert.DeserializeObject<JsonDataHeader>(json);
+
+	//			Assert.AreEqual("3.0.1.320", header.AppVersion);
+	//			Assert.AreEqual(7u, header.FileVersion);
+	//			Assert.AreEqual("Michael Krisper", header.CreatedBy);
+	//			Assert.AreEqual(new DateTime(2015, 11, 17, 11, 49, 3, DateTimeKind.Utc), header.Date);
+
+	//			var jsonCompare = JsonConvert.SerializeObject(header, Formatting.Indented);
+	//			Assert.AreEqual(jsonExpected, jsonCompare);
+	//		}
+
+	//		[TestMethod]
+	//		public void Test_Json_DateFormat_German2()
+	//		{
+	//			var json = @"{
+	//  ""CreatedBy"": ""Michael Krisper"",
+	//  ""Date"": ""7.1.2015 11:49:03"",
+	//  ""AppVersion"": ""3.0.1.320"",
+	//  ""FileVersion"": 7
+	//}";
+	//			var header = JsonConvert.DeserializeObject<JsonDataHeader>(json);
+
+	//			Assert.AreEqual("3.0.1.320", header.AppVersion);
+	//			Assert.AreEqual(7u, header.FileVersion);
+	//			Assert.AreEqual("Michael Krisper", header.CreatedBy);
+	//			Assert.AreEqual(new DateTime(2015, 1, 7, 11, 49, 3, DateTimeKind.Utc), header.Date);
+
+	//			var jsonCompare = JsonConvert.SerializeObject(header, Formatting.Indented);
+	//			Assert.AreEqual(jsonExpected2, jsonCompare);
+	//		}
+
+	//		[TestMethod]
+	//		public void Test_Json_DateFormat_English()
+	//		{
+	//			var json = @"{
+	//  ""CreatedBy"": ""Michael Krisper"",
+	//  ""Date"": ""11/17/2015 11:49:03 AM"",
+	//  ""AppVersion"": ""3.0.1.320"",
+	//  ""FileVersion"": 7
+	//}";
+	//			var header = JsonConvert.DeserializeObject<JsonDataHeader>(json);
+
+	//			Assert.AreEqual("3.0.1.320", header.AppVersion);
+	//			Assert.AreEqual(7u, header.FileVersion);
+	//			Assert.AreEqual("Michael Krisper", header.CreatedBy);
+	//			Assert.AreEqual(new DateTime(2015, 11, 17, 11, 49, 3, DateTimeKind.Utc), header.Date);
+
+	//			var jsonCompare = JsonConvert.SerializeObject(header, Formatting.Indented);
+	//			Assert.AreEqual(jsonExpected, jsonCompare);
+	//		}
+
+	//		[TestMethod]
+	//		public void Test_Json_DateFormat_English2()
+	//		{
+	//			var json = @"{
+	//  ""CreatedBy"": ""Michael Krisper"",
+	//  ""Date"": ""1/7/2015 11:49:03 AM"",
+	//  ""AppVersion"": ""3.0.1.320"",
+	//  ""FileVersion"": 7
+	//}";
+	//			var header = JsonConvert.DeserializeObject<JsonDataHeader>(json);
+
+	//			Assert.AreEqual("3.0.1.320", header.AppVersion);
+	//			Assert.AreEqual(7u, header.FileVersion);
+	//			Assert.AreEqual("Michael Krisper", header.CreatedBy);
+	//			Assert.AreEqual(new DateTime(2015, 1, 7, 11, 49, 3, DateTimeKind.Utc), header.Date);
+
+	//			var jsonCompare = JsonConvert.SerializeObject(header, Formatting.Indented);
+	//			Assert.AreEqual(jsonExpected2, jsonCompare);
+	//		}
+
+	//		[TestMethod]
+	//		public void Test_Json_DateFormat_ISO8601()
+	//		{
+	//			var json = @"{
+	//  ""CreatedBy"": ""Michael Krisper"",
+	//  ""Date"": ""2015-11-17T11:49:03Z"",
+	//  ""AppVersion"": ""3.0.1.320"",
+	//  ""FileVersion"": 7
+	//}";
+	//			var header = JsonConvert.DeserializeObject<JsonDataHeader>(json);
+
+	//			Assert.AreEqual("3.0.1.320", header.AppVersion);
+	//			Assert.AreEqual(7u, header.FileVersion);
+	//			Assert.AreEqual("Michael Krisper", header.CreatedBy);
+	//			Assert.AreEqual(new DateTime(2015, 11, 17, 11, 49, 3, DateTimeKind.Utc), header.Date);
+
+	//			var jsonCompare = JsonConvert.SerializeObject(header, Formatting.Indented);
+	//			Assert.AreEqual(json, jsonCompare);
+	//		}
+
+	//		[TestMethod]
+	//		public void Test_Json_DateFormat_ISO8601_CET()
+	//		{
+	//			var json = @"{
+	//  ""CreatedBy"": ""Michael Krisper"",
+	//  ""Date"": ""2015-11-17T11:49:03+01:00"",
+	//  ""AppVersion"": ""3.0.1.320"",
+	//  ""FileVersion"": 7
+	//}";
+	//			var header = JsonConvert.DeserializeObject<JsonDataHeader>(json);
+
+	//			Assert.AreEqual("3.0.1.320", header.AppVersion);
+	//			Assert.AreEqual(7u, header.FileVersion);
+	//			Assert.AreEqual("Michael Krisper", header.CreatedBy);
+	//			Assert.AreEqual(new DateTime(2015, 11, 17, 11, 49, 3, DateTimeKind.Utc), header.Date);
+
+	//			var jsonCompare = JsonConvert.SerializeObject(header, Formatting.Indented);
+	//			Assert.AreEqual(json, jsonCompare);
+	//		}
+	//	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/TestData/Components/24t Coach.vveh b/VectoCore/VectoCoreTest/TestData/Components/24t Coach.vveh
index 5f1793c50ad591e866e840aa2559c5a2d3db35ea..4951d9ed78b5388b0f539c228206b669765d46c9 100644
--- a/VectoCore/VectoCoreTest/TestData/Components/24t Coach.vveh	
+++ b/VectoCore/VectoCoreTest/TestData/Components/24t Coach.vveh	
@@ -1,55 +1,60 @@
 {
-  "Header": {
-    "CreatedBy": "Raphael Luz IVT TU-Graz (85407225-fc3f-48a8-acda-c84a05df6837)",
-    "Date": "29.07.2014 16:59:13",
-    "AppVersion": "2.0.4-beta",
-    "FileVersion": 7
-  },
-  "Body": {
-    "SavedInDeclMode": false,
-    "VehCat": "Coach",
-    "CurbWeight": 15700.0,
-    "CurbWeightExtra": 0.0,
-    "Loading": 3300.0,
-    "MassMax": 24.0,
-    "CdA": 3.2634,
-    "rdyn": 520.0,
-    "Rim": "-",
-    "CdCorrMode": "CdofVdecl",
-    "CdCorrFile": "24t Coach.vcdv",
-    "Retarder": {
-      "Type": "Secondary",
-      "Ratio": 1.0,
-      "File": "Retarder.vrlm"
-    },
-    "AxleConfig": {
-      "Type": "6x2",
-      "Axles": [
-        {
-          "Inertia": 21.66667,
-          "Wheels": "-",
-          "AxleWeightShare": 0.4375,
-          "TwinTyres": false,
-          "RRCISO": 0.0055,
-          "FzISO": 62538.75
-        },
-        {
-          "Inertia": 10.83333,
-          "Wheels": "-",
-          "AxleWeightShare": 0.375,
-          "TwinTyres": true,
-          "RRCISO": 0.0065,
-          "FzISO": 52532.55
-        },
-        {
-          "Inertia": 21.66667,
-          "Wheels": "-",
-          "AxleWeightShare": 0.1875,
-          "TwinTyres": false,
-          "RRCISO": 0.0055,
-          "FzISO": 62538.75
-        }
-      ]
-    }
-  }
+	"Header": {
+		"CreatedBy": "Raphael Luz IVT TU-Graz (85407225-fc3f-48a8-acda-c84a05df6837)",
+		"Date": "29.07.2014 16:59:13",
+		"AppVersion": "2.0.4-beta",
+		"FileVersion": 7
+	},
+	"Body": {
+		"SavedInDeclMode": false,
+		"VehCat": "Coach",
+		"CurbWeight": 15700.0,
+		"CurbWeightExtra": 0.0,
+		"Loading": 3300.0,
+		"MassMax": 24.0,
+		"CdA": 3.2634,
+		"rdyn": 520.0,
+		"Rim": "-",
+		"CdCorrMode": "CdofVdecl",
+		"CdCorrFile": "24t Coach.vcdv",
+		"Retarder": {
+			"Type": "Secondary",
+			"Ratio": 1.0,
+			"File": "Retarder.vrlm"
+		},
+		"AngularGear": {
+			"Type" : "SeparateAngleGear",
+			"Ratio": 3.5,
+			"LossMap": "AngleGear.vtlm"
+		},
+		"AxleConfig": {
+			"Type": "6x2",
+			"Axles": [
+				{
+					"Inertia": 21.66667,
+					"Wheels": "-",
+					"AxleWeightShare": 0.4375,
+					"TwinTyres": false,
+					"RRCISO": 0.0055,
+					"FzISO": 62538.75
+				},
+				{
+					"Inertia": 10.83333,
+					"Wheels": "-",
+					"AxleWeightShare": 0.375,
+					"TwinTyres": true,
+					"RRCISO": 0.0065,
+					"FzISO": 52532.55
+				},
+				{
+					"Inertia": 21.66667,
+					"Wheels": "-",
+					"AxleWeightShare": 0.1875,
+					"TwinTyres": false,
+					"RRCISO": 0.0055,
+					"FzISO": 62538.75
+				}
+			]
+		}
+	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/TestData/Components/AngleGear.vtlm b/VectoCore/VectoCoreTest/TestData/Components/AngleGear.vtlm
new file mode 100644
index 0000000000000000000000000000000000000000..7fcde5d9ca1deb5ec6d506152e8348cb966e74fd
--- /dev/null
+++ b/VectoCore/VectoCoreTest/TestData/Components/AngleGear.vtlm
@@ -0,0 +1,289 @@
+Input Speed [rpm],Input Torque [Nm],Torque Loss [Nm] # this is a comment
+# rpm, Nm, Nm
+# this is a comment
+0,-2500,77.5  # this is a comment
+0,-1500,62.5
+0,-500,47.5
+0,500,47.5
+0,1500,62.5
+0,2500,77.5
+0,3500,92.5
+0,4500,107.5
+# this is a comment
+0,5500,122.5
+0,6500,137.5
+0,7500,152.5
+0,8500,167.5
+0,9500,182.5
+0,10500,197.5
+0,11500,212.5
+0,12500,227.5
+0,13500,242.5
+0,14500,257.5
+0,15500,272.5
+200,-2500,77.5
+200,-1500,62.5
+200,-500,47.5
+200,500,47.5
+200,1500,62.5
+200,2500,77.5
+200,3500,92.5
+200,4500,107.5
+200,5500,122.5
+200,6500,137.5
+200,7500,152.5
+200,8500,167.5
+200,9500,182.5
+200,10500,197.5
+200,11500,212.5
+200,12500,227.5
+200,13500,242.5
+200,14500,257.5
+200,15500,272.5
+400,-2500,77.5
+400,-1500,62.5
+400,-500,47.5
+400,500,47.5
+400,1500,62.5
+400,2500,77.5
+400,3500,92.5
+400,4500,107.5
+400,5500,122.5
+400,6500,137.5
+400,7500,152.5
+400,8500,167.5
+400,9500,182.5
+400,10500,197.5
+400,11500,212.5
+400,12500,227.5
+400,13500,242.5
+400,14500,257.5
+400,15500,272.5
+600,-2500,77.5
+600,-1500,62.5
+600,-500,47.5
+600,500,47.5
+600,1500,62.5
+600,2500,77.5
+600,3500,92.5
+600,4500,107.5
+600,5500,122.5
+600,6500,137.5
+600,7500,152.5
+600,8500,167.5
+600,9500,182.5
+600,10500,197.5
+600,11500,212.5
+600,12500,227.5
+600,13500,242.5
+600,14500,257.5
+600,15500,272.5
+800,-2500,77.5
+800,-1500,62.5
+800,-500,47.5
+800,500,47.5
+800,1500,62.5
+800,2500,77.5
+800,3500,92.5
+800,4500,107.5
+800,5500,122.5
+800,6500,137.5
+800,7500,152.5
+800,8500,167.5
+800,9500,182.5
+800,10500,197.5
+800,11500,212.5
+800,12500,227.5
+800,13500,242.5
+800,14500,257.5
+800,15500,272.5
+1000,-2500,77.5
+1000,-1500,62.5
+1000,-500,47.5
+1000,500,47.5
+1000,1500,62.5
+1000,2500,77.5
+1000,3500,92.5
+1000,4500,107.5
+1000,5500,122.5
+1000,6500,137.5
+1000,7500,152.5
+1000,8500,167.5
+1000,9500,182.5
+1000,10500,197.5
+1000,11500,212.5
+1000,12500,227.5
+1000,13500,242.5
+1000,14500,257.5
+1000,15500,272.5
+1200,-2500,77.5
+1200,-1500,62.5
+1200,-500,47.5
+1200,500,47.5
+1200,1500,62.5
+1200,2500,77.5
+1200,3500,92.5
+1200,4500,107.5
+1200,5500,122.5
+1200,6500,137.5
+1200,7500,152.5
+1200,8500,167.5
+1200,9500,182.5
+1200,10500,197.5
+1200,11500,212.5
+1200,12500,227.5
+1200,13500,242.5
+1200,14500,257.5
+1200,15500,272.5
+1400,-2500,77.5
+1400,-1500,62.5
+1400,-500,47.5
+1400,500,47.5
+1400,1500,62.5
+1400,2500,77.5
+1400,3500,92.5
+1400,4500,107.5
+1400,5500,122.5
+1400,6500,137.5
+1400,7500,152.5
+1400,8500,167.5
+1400,9500,182.5
+1400,10500,197.5
+1400,11500,212.5
+1400,12500,227.5
+1400,13500,242.5
+1400,14500,257.5
+1400,15500,272.5
+1600,-2500,77.5
+1600,-1500,62.5
+1600,-500,47.5
+1600,500,47.5
+1600,1500,62.5
+1600,2500,77.5
+1600,3500,92.5
+1600,4500,107.5
+1600,5500,122.5
+1600,6500,137.5
+1600,7500,152.5
+1600,8500,167.5
+1600,9500,182.5
+1600,10500,197.5
+1600,11500,212.5
+1600,12500,227.5
+1600,13500,242.5
+1600,14500,257.5
+1600,15500,272.5
+1800,-2500,77.5
+1800,-1500,62.5
+1800,-500,47.5
+1800,500,47.5
+1800,1500,62.5
+1800,2500,77.5
+1800,3500,92.5
+1800,4500,107.5
+1800,5500,122.5
+1800,6500,137.5
+1800,7500,152.5
+1800,8500,167.5
+1800,9500,182.5
+1800,10500,197.5
+1800,11500,212.5
+1800,12500,227.5
+1800,13500,242.5
+1800,14500,257.5
+1800,15500,272.5
+2000,-2500,77.5
+2000,-1500,62.5
+2000,-500,47.5
+2000,500,47.5
+2000,1500,62.5
+2000,2500,77.5
+2000,3500,92.5
+2000,4500,107.5
+2000,5500,122.5
+2000,6500,137.5
+2000,7500,152.5
+2000,8500,167.5
+2000,9500,182.5
+2000,10500,197.5
+2000,11500,212.5
+2000,12500,227.5
+2000,13500,242.5
+2000,14500,257.5
+2000,15500,272.5
+2200,-2500,77.5
+2200,-1500,62.5
+2200,-500,47.5
+2200,500,47.5
+2200,1500,62.5
+2200,2500,77.5
+2200,3500,92.5
+2200,4500,107.5
+2200,5500,122.5
+2200,6500,137.5
+2200,7500,152.5
+2200,8500,167.5
+2200,9500,182.5
+2200,10500,197.5
+2200,11500,212.5
+2200,12500,227.5
+2200,13500,242.5
+2200,14500,257.5
+2200,15500,272.5
+2400,-2500,77.5
+2400,-1500,62.5
+2400,-500,47.5
+2400,500,47.5
+2400,1500,62.5
+2400,2500,77.5
+2400,3500,92.5
+2400,4500,107.5
+2400,5500,122.5
+2400,6500,137.5
+2400,7500,152.5
+2400,8500,167.5
+2400,9500,182.5
+2400,10500,197.5
+2400,11500,212.5
+2400,12500,227.5
+2400,13500,242.5
+2400,14500,257.5
+2400,15500,272.5
+2600,-2500,77.5
+2600,-1500,62.5
+2600,-500,47.5
+2600,500,47.5
+2600,1500,62.5
+2600,2500,77.5
+2600,3500,92.5
+2600,4500,107.5
+2600,5500,122.5
+2600,6500,137.5
+2600,7500,152.5
+2600,8500,167.5
+2600,9500,182.5
+2600,10500,197.5
+2600,11500,212.5
+2600,12500,227.5
+2600,13500,242.5
+2600,14500,257.5
+2600,15500,272.5
+3600,-2500,77.5
+3600,-1500,62.5
+3600,-500,47.5
+3600,500,47.5
+3600,1500,62.5
+3600,2500,77.5
+3600,3500,92.5
+3600,4500,107.5
+3600,5500,122.5
+3600,6500,137.5
+3600,7500,152.5
+3600,8500,167.5
+3600,9500,182.5
+3600,10500,197.5
+3600,11500,212.5
+3600,12500,227.5
+3600,13500,242.5
+3600,14500,257.5
+3600,15500,272.5
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/VectoCoreTest.csproj b/VectoCore/VectoCoreTest/VectoCoreTest.csproj
index 0087d1e5dcd63344372e8f158ba6759084f9f0fd..b2810a14052190d5a7812f838ecb9ee0c060eef3 100644
--- a/VectoCore/VectoCoreTest/VectoCoreTest.csproj
+++ b/VectoCore/VectoCoreTest/VectoCoreTest.csproj
@@ -288,6 +288,9 @@
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
     <None Include="TestData\Components\Indirect Gear.vtlm" />
+    <None Include="TestData\Components\AngleGear.vtlm">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
     <None Include="TestData\Components\Retarder.vrlm">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>