diff --git a/VectoCommon/VectoCommon/Models/RetarderType.cs b/VectoCommon/VectoCommon/Models/RetarderType.cs
index 5094c03963974c4735e7254e073415fdf98545b3..cf17f5789741907cb96225e1f04d1037bfc58905 100644
--- a/VectoCommon/VectoCommon/Models/RetarderType.cs
+++ b/VectoCommon/VectoCommon/Models/RetarderType.cs
@@ -34,8 +34,9 @@ namespace TUGraz.VectoCommon.Models
 	public enum RetarderType
 	{
 		None,
-		Primary,
-		Secondary,
+		TransmissionInputRetarder,
+		TransmissionOutputRetarder,
+		EngineRetarder,
 		LossesIncludedInTransmission
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs
index 8eed4136237b989b6dc397bbae616437b2d79918..6263b3a1eef2d730a0472127c4a45c88377274e5 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs
@@ -34,6 +34,7 @@ using System.Collections.Generic;
 using System.Data;
 using System.Linq;
 using Newtonsoft.Json.Linq;
+using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
@@ -148,10 +149,19 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 		{
 			get
 			{
-				return
-					(RetarderType)
-						Enum.Parse(typeof(RetarderType),
-							Body.GetEx(JsonKeys.Vehicle_Retarder).GetEx<string>(JsonKeys.Vehicle_Retarder_Type), true);
+				var retarderType = Body.GetEx(JsonKeys.Vehicle_Retarder).GetEx<string>(JsonKeys.Vehicle_Retarder_Type);
+				try {
+					return retarderType.ParseEnum<RetarderType>();
+				} catch (Exception) {
+					switch (retarderType.ToLower()) {
+						case "primary":
+							return RetarderType.TransmissionInputRetarder;
+						case "secondary":
+							return RetarderType.TransmissionOutputRetarder;
+						default:
+							throw new VectoException("Unknown retarder type {0}", retarderType);
+					}
+				}
 			}
 		}
 
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs
index 9110544bd593abc67cc6a92ec33791d9fa658982..158ab2ae7272e7c57ec0e038c6090ccf4dc81566 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs
@@ -89,8 +89,9 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 					Type = data.Type,
 				};
 				switch (retarder.Type) {
-					case RetarderType.Primary:
-					case RetarderType.Secondary:
+				//case RetarderType.EngineRetarder:
+				case RetarderType.TransmissionInputRetarder:
+				case RetarderType.TransmissionOutputRetarder:
 						retarder.LossMap = RetarderLossMap.Create(data.LossMap);
 						retarder.Ratio = data.Ratio;
 						break;
@@ -149,9 +150,9 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 			try {
 				axleLossMap = TransmissionLossMap.Create(data.LossMap, data.Ratio, "AxleGear");
 			} catch (InvalidFileFormatException) {
-				if (useEfficiencyFallback)
+				if (useEfficiencyFallback) {
 					axleLossMap = TransmissionLossMap.Create(data.Efficiency, data.Ratio, "AxleGear");
-				else {
+				} else {
 					throw;
 				}
 			}
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs
index 7b0dbf77772be552ac2007dc68d63f8e5e6fa539..175dd7d4e2d2426743674434802f2e061efd2d5e 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs
@@ -36,7 +36,6 @@ using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
-using TUGraz.VectoCore.InputData.Reader.DataObjectAdaper;
 using TUGraz.VectoCore.Models.Declaration;
 using TUGraz.VectoCore.Models.Simulation.Data;
 using TUGraz.VectoCore.Models.SimulationComponent.Data;
diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/EngineOnlyVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/EngineOnlyVectoRunDataFactory.cs
index a021cb8994b45400fbc5ea5ff7ccfcdb2d943f79..2d17c6f02a38d7a8c7553d64c76aa87421462ecc 100644
--- a/VectoCore/VectoCore/InputData/Reader/Impl/EngineOnlyVectoRunDataFactory.cs
+++ b/VectoCore/VectoCore/InputData/Reader/Impl/EngineOnlyVectoRunDataFactory.cs
@@ -33,7 +33,6 @@ using System.Collections.Generic;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter;
-using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter;
 using TUGraz.VectoCore.Models.Simulation.Data;
 using TUGraz.VectoCore.Models.SimulationComponent.Data;
 
diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringModeVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringModeVectoRunDataFactory.cs
index 6ee20e09932ae21b6a9d40c6455e126df5eb6cab..5d9dc695b3a11313a6b87bc330858dc7f7fd8f5e 100644
--- a/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringModeVectoRunDataFactory.cs
+++ b/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringModeVectoRunDataFactory.cs
@@ -35,7 +35,6 @@ using System.Runtime.CompilerServices;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter;
-using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter;
 using TUGraz.VectoCore.Models.Simulation.Data;
 using TUGraz.VectoCore.Models.SimulationComponent.Data;
 
diff --git a/VectoCore/VectoCore/Models/Declaration/StandardBodies.cs b/VectoCore/VectoCore/Models/Declaration/StandardBodies.cs
index a47daf0ee7c6af5fb460766087c23db7e44e638d..aeecd0fbeff54fdcaa1f3dca7d6ce6eeafa79b77 100644
--- a/VectoCore/VectoCore/Models/Declaration/StandardBodies.cs
+++ b/VectoCore/VectoCore/Models/Declaration/StandardBodies.cs
@@ -38,7 +38,7 @@ using TUGraz.VectoCore.Utils;
 
 namespace TUGraz.VectoCore.Models.Declaration
 {
-	internal sealed class StandardBody
+	public sealed class StandardBody
 	{
 		public StandardBody(Kilogram curbWeight, Kilogram grossVehicleWeight, SquareMeter deltaCrossWindArea,
 			Wheels.WheelsEntry wheels)
@@ -79,7 +79,7 @@ namespace TUGraz.VectoCore.Models.Declaration
 	///     DeltaCrossWindArea,
 	///     Wheels
 	/// </summary>
-	internal sealed class StandardBodies : LookupData<string, StandardBody>
+	public sealed class StandardBodies : LookupData<string, StandardBody>
 	{
 		private const string ResourceId = "TUGraz.VectoCore.Resources.Declaration.Body_Trailers_Weights.csv";
 
diff --git a/VectoCore/VectoCore/Utils/ProviderExtensions.cs b/VectoCore/VectoCore/Utils/ProviderExtensions.cs
index 294757a699bc4cb6545a429ca14541f2e034520f..7abcea559cc15d88385754b5df0b4d5ed551c6a5 100644
--- a/VectoCore/VectoCore/Utils/ProviderExtensions.cs
+++ b/VectoCore/VectoCore/Utils/ProviderExtensions.cs
@@ -83,8 +83,9 @@ namespace TUGraz.VectoCore.Utils
 
 		public static IPowerTrainComponent AddComponent(this IPowerTrainComponent prev, IPowerTrainComponent next)
 		{
-			if (next == null)
+			if (next == null) {
 				return prev;
+			}
 
 			prev.InPort().Connect(next.OutPort());
 			return next;
@@ -95,26 +96,26 @@ namespace TUGraz.VectoCore.Utils
 			prev.InPort().Connect(next.OutPort());
 
 			var clutch = prev as IClutch;
-			if (clutch != null)
+			if (clutch != null) {
 				next.IdleController.RequestPort = clutch.IdleControlPort;
+			}
 			return next;
 		}
 
 		public static IPowerTrainComponent AddRetarderAndGearbox(this IPowerTrainComponent prev, RetarderData data,
-			IGearbox gearbox,
-			IVehicleContainer container)
+			IGearbox gearbox, IVehicleContainer container)
 		{
 			switch (data.Type) {
-				case RetarderType.Primary:
+				case RetarderType.TransmissionOutputRetarder:
 					return prev.AddComponent(new Retarder(container, data.LossMap, data.Ratio)).AddComponent(gearbox);
-				case RetarderType.Secondary:
+				case RetarderType.TransmissionInputRetarder:
 					return prev.AddComponent(gearbox).AddComponent(new Retarder(container, data.LossMap, data.Ratio));
 				case RetarderType.None:
 					return prev.AddComponent(new DummyRetarder(container)).AddComponent(gearbox);
 				case RetarderType.LossesIncludedInTransmission:
 					return prev.AddComponent(new DummyRetarder(container)).AddComponent(gearbox);
 				default:
-					throw new ArgumentOutOfRangeException();
+					throw new ArgumentOutOfRangeException(data.Type.ToString());
 			}
 		}
 	}
diff --git a/VectoCore/VectoCoreTest/Models/SimulationComponentData/ValidationTest.cs b/VectoCore/VectoCoreTest/Models/SimulationComponentData/ValidationTest.cs
index 3229e84b96db8dac694aa143d15d6ece4a6b45df..0e305dcc184d150f9b5dbed482297f48f469ca37 100644
--- a/VectoCore/VectoCoreTest/Models/SimulationComponentData/ValidationTest.cs
+++ b/VectoCore/VectoCoreTest/Models/SimulationComponentData/ValidationTest.cs
@@ -38,7 +38,6 @@ using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.InputData.Reader;
 using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter;
-using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter;
 using TUGraz.VectoCore.Models.Simulation.Data;
 using TUGraz.VectoCore.Models.Simulation.Impl;
 using TUGraz.VectoCore.Models.SimulationComponent.Data;
diff --git a/VectoCore/VectoCoreTest/Utils/MockSimulationDataFactory.cs b/VectoCore/VectoCoreTest/Utils/MockSimulationDataFactory.cs
index 8ad35333c5136035b52fe638715948ffb20bd2bf..422b40d4e1d867ea0c146466904dd2dfd1fa1254 100644
--- a/VectoCore/VectoCoreTest/Utils/MockSimulationDataFactory.cs
+++ b/VectoCore/VectoCoreTest/Utils/MockSimulationDataFactory.cs
@@ -34,7 +34,6 @@ using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.InputData.FileIO.JSON;
 using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter;
-using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter;
 using TUGraz.VectoCore.Models.SimulationComponent.Data;
 
 namespace TUGraz.VectoCore.Tests.Utils