diff --git a/Documentation/User Manual/1-user-interface/D_VECTO-Job-Editor.md b/Documentation/User Manual/1-user-interface/D1_VECTO-Job-Editor.md
similarity index 100%
rename from Documentation/User Manual/1-user-interface/D_VECTO-Job-Editor.md
rename to Documentation/User Manual/1-user-interface/D1_VECTO-Job-Editor.md
diff --git a/Documentation/User Manual/1-user-interface/D2_VTP-Job-Editor.md b/Documentation/User Manual/1-user-interface/D2_VTP-Job-Editor.md
new file mode 100644
index 0000000000000000000000000000000000000000..28a384e45767473d8e7f0902d9d3cc3ce0bc841f
--- /dev/null
+++ b/Documentation/User Manual/1-user-interface/D2_VTP-Job-Editor.md	
@@ -0,0 +1,57 @@
+##VTP-Job Editor
+
+
+![](pics/VTP-Job.png)
+
+
+###Description
+
+The [VTP job file (.vecto)](#vtp-job-file) includes all informations to run a VECTO calculation. It defines the vehicle and the driving cycle(s) to be used for calculation. In summary it defines:
+
+-   Filepath to the Vehicle File (.xml)](#vehicle-editor which defines all relevant parameters, including all components
+-   Driving Cycles
+
+
+###Relative File Paths
+
+It is recommended to use relative filepaths. This way the Job File and all input files can be moved without having to update the paths. Example: "Vehicles\\Vehicle1.xml" points to the "Vehicles" subdirectory of the Job File's directoy.
+
+VECTO automatically uses relative paths if the input file (e.g. Vehicle File) is in the same directory as the Job File. (*Note:* The Job File must be saved before browsing for input files.)
+
+
+
+Cycles
+:	List of cycles used for calculation. The .vdri format is described [here](#driving-cycles-.vdri).
+**Double-click** an entry to open the file (see [File Open Command](#settings)).
+**Click** selected items to edit file paths.
+
+: ![addcycle](pics/plus-circle-icon.png) Add cycle (.vdri)
+: ![remcycle](pics/minus-circle-icon.png) Remove the selected cycle from the list
+
+
+
+###Chart Area
+
+If a valid Vehicle File is loaded into the Editor the main vehicle parameters like HDV class and axle configuration are shown here. The plot shows the full load curve(s) and sampling points of the fuel consumption map. 
+
+###Controls
+
+![new](pics/blue-document-icon.png) New Job File
+:	Create a new empty .vecto file
+
+![open](pics/Open-icon.png) Open existing Job File
+:	Open an existing .vecto file
+
+![save](pics/Actions-document-save-icon.png) ***Save current Job File***
+
+![SaveAs](pics/Actions-document-save-as-icon.png) ***Save Job File as...***
+
+![sendto](pics/export-icon.png) Send current file to Job List in [Main Form](#main-form)
+:	**Note:** The file will be sent to the Job List automatically when saved.
+
+![](pics/browse.png) ***Browse for vehicle file***
+
+![OK](pics/OK.png) Save and close file
+:	File will be added to Job List in the [Main Form](#main-form).
+
+![Cancel](pics/Cancel.png) ***Cancel without saving***
diff --git a/Documentation/User Manual/2-calculation-modes/calculation-modes.md b/Documentation/User Manual/2-calculation-modes/calculation-modes.md
index 1470a6a08ef289981dad68318dd4a7d08a75fcce..942b7f3d890f85d89cc248c78a4b90fda1c772ce 100644
--- a/Documentation/User Manual/2-calculation-modes/calculation-modes.md	
+++ b/Documentation/User Manual/2-calculation-modes/calculation-modes.md	
@@ -8,6 +8,9 @@ VECTO supports different calculation modes for declaring a vehicle, validation o
 - [**Engineering Mode**](#engineering-mode)
     : This mode is for experimenting and validation of a vehicle. There exist several options how the driving cycle may be defined (Target speed, Measured Speed, Pwheel).
 
+- [**Verification Test Mode**](#verification-test-mode)
+    : This mode is for simulating a vehicle defined in declaration mode for the purpose of verification tests. This mode is similar to the PWheel simulation in engineering mode.
+
 - [**Engine Only Mode**](#engine-only-mode)
     : This mode is for validation of a measured engine component. Only the engine is simulated in this mode.
 
diff --git a/Documentation/User Manual/2-calculation-modes/declaration.md b/Documentation/User Manual/2-calculation-modes/declaration.md
index 6746e598e04899d071af9f4f780dabab78f85680..e9978f4846db25955b064e742c99cebd7b821c9d 100644
--- a/Documentation/User Manual/2-calculation-modes/declaration.md	
+++ b/Documentation/User Manual/2-calculation-modes/declaration.md	
@@ -14,5 +14,5 @@ Declaration Mode can be activated in the [Options Tab](#main-form).
 
 -   Modal results (.vmod). One file for each vehicle/cycle/loading combination. Modal results are only written if the modal output is enabled in the 'Options' tab on the [Main Window](#main-form)
 -   Sum results (.vsum). One file for each invocation of VECTO.
--   Results overview (.pdf). One file for each job.
+-   Results (.xml). One file for each job.
 
diff --git a/Documentation/User Manual/2-calculation-modes/verification-test.md b/Documentation/User Manual/2-calculation-modes/verification-test.md
new file mode 100644
index 0000000000000000000000000000000000000000..45356638f5b6573183a6f44100b4806940d52a06
--- /dev/null
+++ b/Documentation/User Manual/2-calculation-modes/verification-test.md	
@@ -0,0 +1,14 @@
+##Verification Test Mode
+
+The purpose of the verification test is to simulate a vehicle defined in declaration mode on a measured real-driving cycle. This simulation mode uses its own [cyle format](#verification-test-cycle), requiring mainly vehicle speed, wheel speed, wheel torque, engine-fan speed, and engine speed. VECTO then calculates the appropriate gear and simulates the cycle. Auxiliary power is according to the technologies defined in the vehicle. However, the engine fan auxiliary is ignored and the power demand for the engine fan is calcuated based on the engine-fan speed. The power demand for the other auxiliaries depends on the vehicle's actual speed. The fuel consumption is calculated using the engine speed from the driving cycle and the torque demand as given in the cycle, adding the losses of all powertrain components.
+
+###Requirements
+
+-   One or more checked job files in the Job List
+-   Each job must include a vehicle in declaration mode (XML)
+-   Each job file must include at least one driving cycle
+
+###Results
+
+-   Modal results (.vmod). One file for each vehicle/cycle combination. Modal results are only written if the modal output is enabled in the 'Options' tab on the [Main Window](#main-form)
+-   Sum results (.vsum). One file for each invocation of VECTO.
diff --git a/Documentation/User Manual/5-input-and-output-files/VDRI.md b/Documentation/User Manual/5-input-and-output-files/VDRI.md
index 37367f547e2fb1c0373824492ff07232c34ea76c..5888c1a51e60f0eba17ea9629f211bff033846d9 100644
--- a/Documentation/User Manual/5-input-and-output-files/VDRI.md	
+++ b/Documentation/User Manual/5-input-and-output-files/VDRI.md	
@@ -5,6 +5,7 @@ The basic file format is [Vecto-CSV](#csv) and the file type ending is ".vdri".
 
 ###Driving Cycle Types
 - **Declaration Mode**: [Target speed, distance-based](#declaration-mode-cycles)
+- **Verification Test Mode**: [Measured driving cycle, time-based](#verification-test-cycle)
 - **Engineering Mode**:
 	- [Target speed, distance-based](#engineering-mode-target-speed-distance-based-cycle)
 	- [Measured speed, time-based](#engineering-mode-measured-speed-time-based-cycle)
@@ -30,6 +31,45 @@ In Declaration Mode driving cycles are automatically chosen depending on vehicle
 - Urban: 40km
 - Urban Delivery: 28km
 
+###Verification Test Cycle
+This kind of cycle is used for simulating vehicles defined in declaration mode (xml) on a real driving cycle.
+
+Header: **\<t>, \<v>, \<n\_eng>,\<n\_fan>, \<tq\_left>, \<tq\_right>, \<n\_wh\_left>, \<n\_wh\_right>***, \<fc>, \<gear>*
+
+**Bold columns** are mandatory. *Italic columns* are optional. Only the listed columns are allowed (no other columns!).<br />
+Units are optional and are enclosed in [square-brackets] after the header-column. Comments may be written with a preceding hash-sign "#".
+
+| Identifier     | Unit     | Description                                                                                                                                                                                                                                                                                            |
+| -------------  | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| **t**          | [s]      | The absolute time. Must always be increasing.                                                                                                                                                                                                                                                          |
+| **v**          | [km/h]   | The actual velocity of the vehicle. Must be >= 0 km/h.                                                                                                                                                                                                                                                 |
+| **n_eng**      | [rpm]    | The actual engine speed. Must be >= 0 rpm.                                                                                                                                                                                                                                                             |
+| **n_fan**      | [rpm]    | The actual engine-fan speed. Must be >= 0 rpm.                                                                                                                                                                                                                                                         |
+| **tq_left**    | [Nm]     | The actual torque at the driven wheel (left side)                                                                                                                                                                                                                                                      |
+| **tq_right**   | [Nm]     | The actual torque at the driven wheel (left side)                                                                                                                                                                                                                                                      |
+| **n_wh_left**  | [rpm]    | The actual wheel speed of the driven wheel (left side). Must be >= 0 rpm.                                                                                                                                                                                                                              |
+| **n_wh_right** | [rpm]    | The actual wheel speed of the driven wheel (right side). Must be >= 0 rpm.                                                                                                                                                                                                                             |
+| *fc*           | [g/h]    | Fuel consumption                                                                                                                                                                                                                                                                                       |
+| *gear*         | [-]      | The actual gear                                                                                                                                                                                                                                                                                        |
+
+**Example:**
+
+| \<t> [s]  | \<v> [km/h]  | \<n_eng> [rpm]  | \<n_fan> [rpm]  | \<tq_left> [Nm]  | \<tq_right> [Nm]  | \<n_wh_left> [rpm]  | \<n_wh_right> [rpm]  | \<fc> [g/h]  | \<gear>  |
+| --------- | ------------ | --------------- | --------------- | ---------------- | ----------------- | ------------------- | -------------------- | ------------ | -------- | 	
+| 0         | 0            | 599.7           | 727.3           | 319.1            | 429.8             | 0.78                | 0.78                 | 836          | 3        |
+| 0.5       | 0            | 600.2           | 727.3           | 316.7            | 430.0             | 0.78                | 0.78                 | 836          | 3        |
+| 1         | 0            | 600.1           | 726.9           | 319.9            | 430.8             | 0.78                | 0.78                 | 836          | 3        |
+| 1.5       | 0            | 599.9           | 726.6           | 317.4            | 431.1             | 0.78                | 0.79                 | 836          | 3        |
+| 2         | 0            | 600.1           | 726.2           | 319.5            | 421.7             | 0.78                | 0.78                 | 836          | 3        |
+| 2.5       | 0            | 599.7           | 726             | 319.0            | 434.1             | 0.78                | 0.78                 | 836          | 3        |
+| 3         | 0            | 600.2           | 725.4           | 322.2            | 428.5             | 0.78                | 0.78                 | 836          | 3        |
+| 3.5       | 0            | 599.9           | 724.7           | 317.3            | 430.4             | 0.78                | 0.78                 | 836          | 3        |
+| 4         | 0            | 599.5           | 724.0           | 320.9            | 428.0             | 0.78                | 0.78                 | 836          | 3        |
+| 4.5       | 0            | 599.9           | 723.4           | 187.0            | 247.6             | 0.78                | 0.78                 | 836          | 3        |
+| 5         | 0            | 598.7           | 722.5           | 156.9            | 171.5             | 0.78                | 0.78                 | 1003.2       | 3        |
+
+
+
 ###Engineering Mode: Target-Speed, Distance-Based Cycle
 This driving cycle defines the target speed over distance. Vecto tries to achieve and maintain this target speed.
 
diff --git a/Documentation/User Manual/5-input-and-output-files/VECTO-VTP.md b/Documentation/User Manual/5-input-and-output-files/VECTO-VTP.md
new file mode 100644
index 0000000000000000000000000000000000000000..095ab03f0981bf56b34202bce9fed702da931353
--- /dev/null
+++ b/Documentation/User Manual/5-input-and-output-files/VECTO-VTP.md	
@@ -0,0 +1,41 @@
+## VTP-Job File
+
+File for the definition of a verification test job in vecto. A job contains everything what is needed to run a simulation. Can be created with the [Verifcation Test Job Editor](#vtp-job-editor).
+
+- File format is [JSON](#json).
+- Filetype ending is ".vecto"
+
+Refers to other files:
+
+* [Vehicle (XML)](#vehicle-file-.vveh)
+* [Gearbox (VGBX)](#gearbox-file-.vgbx)
+* [Driving Cycle (VDRI)](#driving-cycles-.vdri)
+
+
+
+**Example:**
+
+~~~json
+{
+  "Header": {
+    "CreatedBy": "VECTO 3.2",
+    "Date": "2017-11-14T13:16:31.7337506Z",
+    "AppVersion": "3",
+    "FileVersion": 4
+  },
+  "Body": {
+    "SavedInDeclMode": false,
+    "DeclarationVehicle": "SampleVehicle.xml",
+    "FanPowerCoefficients": [
+      0.00000055,
+      14.62,
+      108.5
+    ],
+    "FanDiameter": 0.225,
+    "Cycles": [
+      "VTP-cycle.vdri"
+    ]
+  }
+}
+~~~
+
diff --git a/Documentation/User Manual/convert.bat b/Documentation/User Manual/convert.bat
index 12ba5d5aecc9c4adfd8c95998d53766b3a4fe3a2..48632dc34037ee0e72aa5e19e98649ca3ae64360 100644
--- a/Documentation/User Manual/convert.bat	
+++ b/Documentation/User Manual/convert.bat	
@@ -9,7 +9,11 @@ for /f %%f in (files.txt) do set LIST=!LIST! "%%f"
 
 
 REM pandoc --verbose  -f markdown+raw_html %LIST% -s -S --toc --toc-depth=2 --self-contained --email-obfuscation=none --section-divs --mathjax=includes/mathjax.js -c includes/style.css -c includes/print.css -B includes/header.html -A includes/footer.html -o help.html  -H includes/jquery.js -H includes/jquery-ui.js -H includes/include.js
-%LOCALAPPDATA%\Pandoc\pandoc --verbose  -f markdown+raw_html %LIST% -s  --toc --toc-depth=2 --self-contained --email-obfuscation=none --section-divs --webtex -c includes/style.css -c includes/print.css -B includes/header.html -A includes/footer.html -o help.html  -H includes/jquery.js -H includes/jquery-ui.js -H includes/include.js
+
+REM %LOCALAPPDATA%\Pandoc\pandoc --verbose  -f markdown+raw_html %LIST% -s  --toc --toc-depth=2 --self-contained --email-obfuscation=none --section-divs --webtex -c includes/style.css -c includes/print.css -B includes/header.html -A includes/footer.html -o help.html  -H includes/jquery.js -H includes/jquery-ui.js -H includes/include.js
+
+%LOCALAPPDATA%\Pandoc\pandoc --verbose  -f markdown+raw_html %LIST% -s -S --toc --toc-depth=2 --self-contained --email-obfuscation=none --section-divs --webtex -c includes/style.css -c includes/print.css -B includes/header.html -A includes/footer.html -o help.html  -H includes/jquery.js -H includes/jquery-ui.js -H includes/include.js
+
 
 REM pandoc %LIST% -s -S --toc --toc-depth=2 --self-contained --email-obfuscation=none --section-divs --webtex  -c includes/style.css -B includes/header.html -A includes/footer.html -o help.html  -H includes/jquery.js -H includes/jquery-ui.js -H includes/include.js
 REM pandoc %LIST% -s -S --toc --toc-depth=2 --self-contained --email-obfuscation=none --section-divs --webtex="https://latex.codecogs.com/svg.latex?\large "  -c includes/style.css -B includes/header.html -A includes/footer.html -o help.html  -H includes/jquery.js -H includes/jquery-ui.js -H includes/include.js
diff --git a/Documentation/User Manual/files.txt b/Documentation/User Manual/files.txt
index 9957ec50e13bef47af00b2752f01b7a2a9b17915..f54be18c1b83ccb679f46d9eb38480b12ca7f3b3 100644
--- a/Documentation/User Manual/files.txt	
+++ b/Documentation/User Manual/files.txt	
@@ -2,7 +2,8 @@
 1-user-interface/A_index.md
 1-user-interface/B_mainform.md
 1-user-interface/C_settings.md
-1-user-interface/D_VECTO-Job-Editor.md
+1-user-interface/D1_VECTO-Job-Editor.md
+1-user-interface/D2_VTP-Job-Editor.md
 1-user-interface/E_VECTO-Editor_Aux.md
 1-user-interface/K0_VECTO-AdvancedAux.md
 1-user-interface/K1_VECTO-AdvancedAux_EL.md
@@ -17,6 +18,7 @@
 2-calculation-modes/calculation-modes.md
 2-calculation-modes/engineering.md
 2-calculation-modes/declaration.md
+2-calculation-modes/verification-test.md
 2-calculation-modes/engine-only.md
 3-simulation-models/simulation-models.md
 3-simulation-models/powertrain.md
@@ -44,6 +46,7 @@
 5-input-and-output-files/CSV.md
 5-input-and-output-files/JSON.md
 5-input-and-output-files/VECTO.md
+5-input-and-output-files/VECTO-VTP.md
 5-input-and-output-files/VVEH.md
 5-input-and-output-files/VCDV.md
 5-input-and-output-files/VCDB.md
diff --git a/VectoCore/VectoCore/InputData/Reader/DrivingCycleDataReader.cs b/VectoCore/VectoCore/InputData/Reader/DrivingCycleDataReader.cs
index 00e58a6f581faac559f2a1b0920d24564615def8..11d1e19fac351e3b565e059f9cfe4eea38e62851 100644
--- a/VectoCore/VectoCore/InputData/Reader/DrivingCycleDataReader.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DrivingCycleDataReader.cs
@@ -732,7 +732,7 @@ namespace TUGraz.VectoCore.InputData.Reader
 							row.ParseDoubleOrGetDefault(Fields.AdditionalAuxPowerDemand).SI(Unit.SI.Kilo.Watt).Cast<Watt>(),
 						EngineSpeed = row.ParseDouble(Fields.EngineSpeedSuffix).RPMtoRad(),
 						WheelAngularVelocity = wheelSpeed,
-						Torque = (row.ParseDouble(Fields.WheelTorqueLeft).SI<NewtonMeter>() * row.ParseDouble(Fields.WheelSpeedLeft).RPMtoRad() + row.ParseDouble(Fields.WheelTorqueRight).SI<NewtonMeter>() * row.ParseDouble(Fields.WheelSpeedRight).RPMtoRad()) / wheelSpeed, 
+						Torque = wheelSpeed.IsEqual(0, 1e-3) ? 0.SI<NewtonMeter>() : (row.ParseDouble(Fields.WheelTorqueLeft).SI<NewtonMeter>() * row.ParseDouble(Fields.WheelSpeedLeft).RPMtoRad() + row.ParseDouble(Fields.WheelTorqueRight).SI<NewtonMeter>() * row.ParseDouble(Fields.WheelSpeedRight).RPMtoRad()) / wheelSpeed, 
 						FanSpeed = row.ParseDouble(Fields.FanSpeed).RPMtoRad(),
 						Gear = (uint)row.ParseDoubleOrGetDefault(Fields.Gear),
 						Fuelconsumption = row.ParseDoubleOrGetDefault(Fields.FuelConsumption).SI(Unit.SI.Gramm.Per.Hour).Cast<KilogramPerSecond>(),
diff --git a/VectoCore/VectoCore/Models/Simulation/IVehicleContainer.cs b/VectoCore/VectoCore/Models/Simulation/IVehicleContainer.cs
index b14b1af37372091bb66b52f666a527c72db53975..38548b02517ba68567e7faa3e4529b03d6656f60 100644
--- a/VectoCore/VectoCore/Models/Simulation/IVehicleContainer.cs
+++ b/VectoCore/VectoCore/Models/Simulation/IVehicleContainer.cs
@@ -29,48 +29,48 @@
 *   Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology
 */
 
-using System;
-using System.ComponentModel.DataAnnotations;
-using TUGraz.VectoCommon.Utils;
-using TUGraz.VectoCore.Models.Connector.Ports;
-using TUGraz.VectoCore.Models.Simulation.Data;
-using TUGraz.VectoCore.Models.Simulation.DataBus;
-using TUGraz.VectoCore.Models.Simulation.Impl;
-using TUGraz.VectoCore.Models.SimulationComponent;
-using TUGraz.VectoCore.OutputData;
-
-namespace TUGraz.VectoCore.Models.Simulation
-{
-	/// <summary>
-	/// Defines Methods for adding components, commiting a simulation step and finishing the simulation.
-	/// Also defines interfaces for all cockpit access to data.
-	/// </summary>
-	public interface IVehicleContainer : IDataBus
-	{
-		IModalDataContainer ModalData { get; }
-
-		[Required, ValidateObject]
-		VectoRunData RunData { get; }
-
-		ISimulationOutPort GetCycleOutPort();
-
-		VectoRun.Status RunStatus { get; set; }
-
-		/// <summary>
-		/// Adds a component to the vehicle container.
-		/// </summary>
-		/// <param name="component"></param>
-		void AddComponent(VectoSimulationComponent component);
-
-		/// <summary>
-		/// Commits the current simulation step.
-		/// </summary>
-		void CommitSimulationStep(Second time, Second simulationInterval);
-
-		/// <summary>
-		/// Finishes the simulation.
-		/// </summary>
-		/// <param name="exception"></param>
-		void FinishSimulationRun(Exception exception = null);
-	}
+using System;
+using System.ComponentModel.DataAnnotations;
+using TUGraz.VectoCommon.Utils;
+using TUGraz.VectoCore.Models.Connector.Ports;
+using TUGraz.VectoCore.Models.Simulation.Data;
+using TUGraz.VectoCore.Models.Simulation.DataBus;
+using TUGraz.VectoCore.Models.Simulation.Impl;
+using TUGraz.VectoCore.Models.SimulationComponent;
+using TUGraz.VectoCore.OutputData;
+
+namespace TUGraz.VectoCore.Models.Simulation
+{
+	/// <summary>
+	/// Defines Methods for adding components, commiting a simulation step and finishing the simulation.
+	/// Also defines interfaces for all cockpit access to data.
+	/// </summary>
+	public interface IVehicleContainer : IDataBus
+	{
+		IModalDataContainer ModalData { get; }
+
+		[Required, ValidateObject]
+		VectoRunData RunData { get; }
+
+		ISimulationOutPort GetCycleOutPort();
+
+		VectoRun.Status RunStatus { get; set; }
+
+		/// <summary>
+		/// Adds a component to the vehicle container.
+		/// </summary>
+		/// <param name="component"></param>
+		void AddComponent(VectoSimulationComponent component);
+
+		/// <summary>
+		/// Commits the current simulation step.
+		/// </summary>
+		void CommitSimulationStep(Second time, Second simulationInterval);
+
+		/// <summary>
+		/// Finishes the simulation.
+		/// </summary>
+		/// <param name="exception"></param>
+		void FinishSimulationRun(Exception exception = null);
+	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/VTPCycle.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/VTPCycle.cs
index 957d0479aad6aff14b10169cb6a6138cc6f7e143..3a1f6d5df5611b0b1641f03d38d36cf64bc86e5f 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/VTPCycle.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/VTPCycle.cs
@@ -13,144 +13,144 @@ using TUGraz.VectoCore.Utils;
 
 namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 {
-    internal class VTPCycle : PWheelCycle
-    {
-        private uint StartGear;
-
-        public VTPCycle(VehicleContainer container, IDrivingCycleData cycle, double axleGearRatio,
-            VehicleData vehicleData, Dictionary<uint, double> gearRatios) : base(container, cycle) { }
-
-        public override IResponse Initialize()
-        {
-            SelectStartGear();
-            return base.Initialize();
-        }
-
-        private void SelectStartGear()
-        {
-            var transmissionRatio = RunData.AxleGearData.AxleGear.Ratio *
-                                    (RunData.AngledriveData == null ? 1.0 : RunData.AngledriveData.Angledrive.Ratio) /
-                                    RunData.VehicleData.DynamicTyreRadius;
-            var cardanStartSpeed = (RunData.GearboxData.StartSpeed * transmissionRatio).Cast<PerSecond>();
-            var minEngineSpeed = (RunData.EngineData.FullLoadCurves[0].RatedSpeed - RunData.EngineData.IdleSpeed) *
-                                 Constants.SimulationSettings.ClutchClosingSpeedNorm + RunData.EngineData.IdleSpeed;
-            var wheelStartTorque =
-            (RunData.VehicleData.VehicleCategory == VehicleCategory.Tractor
-                ? 40000.SI<Kilogram>()
-                : RunData.VehicleData.GrossVehicleWeight) * RunData.GearboxData.StartAcceleration *
-            RunData.VehicleData.DynamicTyreRadius;
-            var wheelStartSpeed = RunData.GearboxData.StartSpeed / RunData.VehicleData.DynamicTyreRadius;
-            CycleIterator.LeftSample.WheelAngularVelocity = wheelStartSpeed;
-            var maxStartGear = 1u;
-            foreach (var gearData in RunData.GearboxData.Gears.Reverse()) {
-                if (cardanStartSpeed * gearData.Value.Ratio > minEngineSpeed) {
-                     maxStartGear = gearData.Key;
-                    break;
-                }
-            }
-            for (var gear = maxStartGear; gear > 1; gear--) {
-                var inAngularSpeed = cardanStartSpeed * RunData.GearboxData.Gears[gear].Ratio;
-
-                var ratedSpeed = DataBus.EngineRatedSpeed;
-                if (inAngularSpeed > ratedSpeed || inAngularSpeed.IsEqual(0)) {
-                    continue;
-                }
-
-                var response = Initialize(gear, wheelStartTorque, wheelStartSpeed);
-
-                var fullLoadPower = response.DynamicFullLoadPower; //EnginePowerRequest - response.DeltaFullLoad;
-                var reserve = 1 - response.EnginePowerRequest / fullLoadPower;
-
-                if (response.EngineSpeed > DataBus.EngineIdleSpeed && reserve >= RunData.GearboxData.StartTorqueReserve) {
-                    StartGear = gear;
-                    return;
-                }
-            }
-            StartGear = 1;
-        }
-
-        internal ResponseDryRun Initialize(uint gear, NewtonMeter outTorque, PerSecond outAngularVelocity)
-        {
-            CycleIterator.RightSample.Gear = gear;
-           //var inAngularVelocity = outAngularVelocity * RunData.GearboxData.Gears[gear].Ratio;
-            //var torqueLossResult = RunData.GearboxData.Gears[gear].LossMap.GetTorqueLoss(outAngularVelocity, outTorque);
-            //var inTorque = outTorque / RunData.GearboxData.Gears[gear].Ratio + torqueLossResult.Value;
-
-            var response =
-                (ResponseDryRun)
-                NextComponent.Request(0.SI<Second>(), Constants.SimulationSettings.TargetTimeInterval, outTorque,
-                    outAngularVelocity, true);
-            
-            //var fullLoad = DataBus.EngineStationaryFullPower(inAngularVelocity);
-
-            return new ResponseDryRun {
-                Source = this,
-                EnginePowerRequest = response.EnginePowerRequest,
-                EngineSpeed = response.EngineSpeed,
-                DynamicFullLoadPower = response.DynamicFullLoadPower,
-                ClutchPowerRequest = response.ClutchPowerRequest,
-                GearboxPowerRequest = outTorque * outAngularVelocity,
-                //DeltaFullLoad = response.EnginePowerRequest - fullLoad
-            };
-        }
-
-        protected override void InitializeCycleData()
-        {
-            FirstRun = false;
+	internal class VTPCycle : PWheelCycle
+	{
+		private uint StartGear;
+
+		public VTPCycle(VehicleContainer container, IDrivingCycleData cycle, double axleGearRatio,
+			VehicleData vehicleData, Dictionary<uint, double> gearRatios) : base(container, cycle) { }
+
+		public override IResponse Initialize()
+		{
+			SelectStartGear();
+			return base.Initialize();
+		}
+
+		private void SelectStartGear()
+		{
+			var transmissionRatio = RunData.AxleGearData.AxleGear.Ratio *
+									(RunData.AngledriveData == null ? 1.0 : RunData.AngledriveData.Angledrive.Ratio) /
+									RunData.VehicleData.DynamicTyreRadius;
+			var cardanStartSpeed = (RunData.GearboxData.StartSpeed * transmissionRatio).Cast<PerSecond>();
+			var minEngineSpeed = (RunData.EngineData.FullLoadCurves[0].RatedSpeed - RunData.EngineData.IdleSpeed) *
+								Constants.SimulationSettings.ClutchClosingSpeedNorm + RunData.EngineData.IdleSpeed;
+			var wheelStartTorque =
+				(RunData.VehicleData.VehicleCategory == VehicleCategory.Tractor
+					? 40000.SI<Kilogram>()
+					: RunData.VehicleData.GrossVehicleWeight) * RunData.GearboxData.StartAcceleration *
+				RunData.VehicleData.DynamicTyreRadius;
+			var wheelStartSpeed = RunData.GearboxData.StartSpeed / RunData.VehicleData.DynamicTyreRadius;
+			CycleIterator.LeftSample.WheelAngularVelocity = wheelStartSpeed;
+			var maxStartGear = 1u;
+			foreach (var gearData in RunData.GearboxData.Gears.Reverse())
+				if (cardanStartSpeed * gearData.Value.Ratio > minEngineSpeed) {
+					maxStartGear = gearData.Key;
+					break;
+				}
+			for (var gear = maxStartGear; gear > 1; gear--) {
+				var inAngularSpeed = cardanStartSpeed * RunData.GearboxData.Gears[gear].Ratio;
+
+				var ratedSpeed = DataBus.EngineRatedSpeed;
+				if (inAngularSpeed > ratedSpeed || inAngularSpeed.IsEqual(0))
+					continue;
+
+				var response = Initialize(gear, wheelStartTorque, wheelStartSpeed);
+
+				var fullLoadPower = response.DynamicFullLoadPower; //EnginePowerRequest - response.DeltaFullLoad;
+				var reserve = 1 - response.EnginePowerRequest / fullLoadPower;
+
+				if (response.EngineSpeed > DataBus.EngineIdleSpeed && reserve >= RunData.GearboxData.StartTorqueReserve) {
+					StartGear = gear;
+					return;
+				}
+			}
+			StartGear = 1;
+		}
+
+		internal ResponseDryRun Initialize(uint gear, NewtonMeter outTorque, PerSecond outAngularVelocity)
+		{
+			CycleIterator.RightSample.Gear = gear;
+			//var inAngularVelocity = outAngularVelocity * RunData.GearboxData.Gears[gear].Ratio;
+			//var torqueLossResult = RunData.GearboxData.Gears[gear].LossMap.GetTorqueLoss(outAngularVelocity, outTorque);
+			//var inTorque = outTorque / RunData.GearboxData.Gears[gear].Ratio + torqueLossResult.Value;
+
+			var response =
+				(ResponseDryRun)
+				NextComponent.Request(0.SI<Second>(), Constants.SimulationSettings.TargetTimeInterval, outTorque,
+					outAngularVelocity, true);
+
+			//var fullLoad = DataBus.EngineStationaryFullPower(inAngularVelocity);
+
+			return new ResponseDryRun {
+				Source = this,
+				EnginePowerRequest = response.EnginePowerRequest,
+				EngineSpeed = response.EngineSpeed,
+				DynamicFullLoadPower = response.DynamicFullLoadPower,
+				ClutchPowerRequest = response.ClutchPowerRequest,
+				GearboxPowerRequest = outTorque * outAngularVelocity,
+				//DeltaFullLoad = response.EnginePowerRequest - fullLoad
+			};
+		}
+
+		protected override void InitializeCycleData()
+		{
+			FirstRun = false;
 			var minEngineSpeed = (RunData.EngineData.FullLoadCurves[0].RatedSpeed - RunData.EngineData.IdleSpeed) *
 								Constants.SimulationSettings.ClutchClosingSpeedNorm + RunData.EngineData.IdleSpeed;
 
 			var gearRatios = RunData.GearboxData.Gears.ToDictionary(g => g.Key, g => g.Value.Ratio);
 
-            var stopped = false;
-           
-            foreach (var entry in Data.Entries) {
-                stopped = stopped || entry.VehicleTargetSpeed.IsEqual(0.KMPHtoMeterPerSecond(),
-                              0.3.KMPHtoMeterPerSecond());
-                entry.AngularVelocity =
-                    entry.VehicleTargetSpeed.IsEqual(0.KMPHtoMeterPerSecond(), 0.3.KMPHtoMeterPerSecond())
-                        ? 0.RPMtoRad()
-                        : entry.WheelAngularVelocity;
+			var stopped = false;
 
-				var cardanSpeed = entry.WheelAngularVelocity *
-                                  RunData.AxleGearData.AxleGear.Ratio * (RunData.AngledriveData?.Angledrive.Ratio ?? 1);
-                if (cardanSpeed.IsEqual(0, 1)) {
-                    entry.Gear = 0;
-                    continue;
-                }
-                var ratio = (entry.EngineSpeed / cardanSpeed).Value();
-                var gear = gearRatios.Aggregate((x, y) =>
-                    Math.Abs(x.Value / ratio - 1) < Math.Abs(y.Value / ratio - 1) ? x : y).Key;
-
-                
-                //entry.Gear = entry.EngineSpeed < (RunData.EngineData.IdleSpeed + 50.RPMtoRad()) && entry.VehicleTargetSpeed < 5.KMPHtoMeterPerSecond() ? 0 :  gear;
-                if (stopped && gear < StartGear)
-                    entry.Gear = StartGear;
-                else
-                    entry.Gear = gear == 1 && cardanSpeed * gearRatios[1] <= minEngineSpeed ? 0 : gear;
-                if (gear > StartGear)
-                    stopped = false;
-            }
-        }
-
-        public override bool VehicleStopped
-        {
-            get
-            {
-                if (CycleIterator.LeftSample.Gear == 0)
-                    return true;
-                if (CycleIterator.LeftSample.Gear != StartGear)
-                    return false;
-
-                var transmissionRatio = RunData.AxleGearData.AxleGear.Ratio *
-                                        (RunData.AngledriveData?.Angledrive.Ratio ?? 1.0);
-                return CycleIterator.LeftSample.WheelAngularVelocity * transmissionRatio *
-                       RunData.GearboxData.Gears[CycleIterator.LeftSample.Gear].Ratio < DataBus.EngineIdleSpeed;
-                //return CycleIterator.LeftSample.VehicleTargetSpeed.IsEqual(0.KMPHtoMeterPerSecond(),
-                //    0.3.KMPHtoMeterPerSecond());
-            }
-        }
-
-    }
+			foreach (var entry in Data.Entries) {
+				stopped = stopped || entry.VehicleTargetSpeed.IsEqual(0.KMPHtoMeterPerSecond(),
+							0.3.KMPHtoMeterPerSecond());
+				entry.AngularVelocity =
+					entry.VehicleTargetSpeed.IsEqual(0.KMPHtoMeterPerSecond(), 0.3.KMPHtoMeterPerSecond())
+						? 0.RPMtoRad()
+						: entry.WheelAngularVelocity;
 
+				var cardanSpeed = entry.WheelAngularVelocity *
+								RunData.AxleGearData.AxleGear.Ratio * (RunData.AngledriveData?.Angledrive.Ratio ?? 1);
+				if (cardanSpeed.IsEqual(0.RPMtoRad(), 1.RPMtoRad())) {
+					entry.Gear = 0;
+					continue;
+				}
+				var ratio = (entry.EngineSpeed / cardanSpeed).Value();
+				var gear = gearRatios.Aggregate((x, y) =>
+					Math.Abs(x.Value / ratio - 1) < Math.Abs(y.Value / ratio - 1) ? x : y).Key;
+
+
+				//entry.Gear = entry.EngineSpeed < (RunData.EngineData.IdleSpeed + 50.RPMtoRad()) && entry.VehicleTargetSpeed < 5.KMPHtoMeterPerSecond() ? 0 :  gear;
+				if (stopped && gear <= StartGear) {
+					entry.Gear = entry.VehicleTargetSpeed.IsEqual(0.KMPHtoMeterPerSecond(),
+						0.3.KMPHtoMeterPerSecond())
+						? 0
+						: StartGear;
+				} else {
+					entry.Gear = gear == 1 && cardanSpeed * gearRatios[1] <= minEngineSpeed ? 0 : gear;
+				}
+				if (gear > StartGear)
+					stopped = false;
+			}
+		}
+
+		public override bool VehicleStopped
+		{
+			get
+			{
+				if (CycleIterator.LeftSample.Gear == 0)
+					return true;
+				if (CycleIterator.LeftSample.Gear != StartGear)
+					return false;
+
+				var transmissionRatio = RunData.AxleGearData.AxleGear.Ratio *
+										(RunData.AngledriveData?.Angledrive.Ratio ?? 1.0);
+				return CycleIterator.LeftSample.WheelAngularVelocity * transmissionRatio *
+						RunData.GearboxData.Gears[CycleIterator.LeftSample.Gear].Ratio < DataBus.EngineIdleSpeed;
+				//return CycleIterator.LeftSample.VehicleTargetSpeed.IsEqual(0.KMPHtoMeterPerSecond(),
+				//    0.3.KMPHtoMeterPerSecond());
+			}
+		}
+	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/Integration/EPTP/EPTPTest.cs b/VectoCore/VectoCoreTest/Integration/EPTP/EPTPTest.cs
index a18db88d3800543d743d4e4431ac95d15780c446..ee514abd82feec1f09d8a4e22c7f81389a1ed491 100644
--- a/VectoCore/VectoCoreTest/Integration/EPTP/EPTPTest.cs
+++ b/VectoCore/VectoCoreTest/Integration/EPTP/EPTPTest.cs
@@ -28,11 +28,11 @@ namespace TUGraz.VectoCore.Tests.Integration.EPTP
             
             jobContainer.AddRuns(runsFactory);
 
-            //var i = 0;
-            //jobContainer.Runs[i].Run.Run();
-            //Assert.IsTrue(jobContainer.Runs[i].Run.FinishedWithoutErrors);
+			//var i = 0;
+			//jobContainer.Runs[i].Run.Run();
+			//Assert.IsTrue(jobContainer.Runs[i].Run.FinishedWithoutErrors);
 
-            jobContainer.Execute();
+			jobContainer.Execute();
             jobContainer.WaitFinished();
 
             Assert.AreEqual(true, jobContainer.AllCompleted);