diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs
index bea99479f4b34027f0fe134735e2090e2208eafb..adb2f1401bf8f88750eb5dc4c91842ea8260a164 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs
@@ -143,6 +143,8 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 			if (data.LossMap == null && useEfficiencyFallback) {
 				axleLossMap = TransmissionLossMapReader.Create(data.Efficiency, data.Ratio, "AxleGear");
 			} else {
+				if (data.LossMap == null)
+					throw new Exception("LossMap for AxleGear is missing.");
 				axleLossMap = TransmissionLossMapReader.Create(data.LossMap, data.Ratio, "AxleGear");
 			}
 			if (axleLossMap == null) {
diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
index 96dfeee4584008519c09735c203a6cda7bac2b9b..532aee372e9da258a7e36edea05199432ca455f1 100644
--- a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
@@ -115,7 +115,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 			var engine = new CombustionEngine(container, data.EngineData, pt1Disabled: true);
 			var idleController = GetIdleController(data.PTO, engine);
 
-			powertrain.AddComponent(engine, idleController, container)
+			powertrain.AddComponent(engine, idleController)
 				.AddAuxiliaries(container, data);
 
 			return container;
@@ -146,7 +146,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 			var engine = new CombustionEngine(container, data.EngineData);
 			var idleController = GetIdleController(data.PTO, engine);
 
-			powertrain.AddComponent(engine, idleController, container)
+			powertrain.AddComponent(engine, idleController)
 				.AddAuxiliaries(container, data);
 			_modData.HasTorqueConverter = data.GearboxData.Type.AutomaticTransmission();
 
@@ -173,7 +173,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 				.AddComponent(new CycleClutch(container));
 
 			var engine = new CombustionEngine(container, data.EngineData);
-			powertrain.AddComponent(engine, GetIdleController(data.PTO, engine), container)
+			powertrain.AddComponent(engine, GetIdleController(data.PTO, engine))
 				.AddAuxiliaries(container, data);
 
 			return container;
@@ -205,7 +205,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 			var idleController = GetIdleController(data.PTO, engine);
 			cycle.IdleController = idleController as IdleControllerSwitcher;
 
-			powertrain.AddComponent(engine, idleController, container)
+			powertrain.AddComponent(engine, idleController)
 				.AddAuxiliaries(container, data);
 
 			_modData.HasTorqueConverter = data.GearboxData.Type.AutomaticTransmission();
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/PowertrainDrivingCycle.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/PowertrainDrivingCycle.cs
index 60dd67a49fb885c2654ed684b760e36154039097..f399f17c7e159a8d55cd190f4bd0ea88078f75e1 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/PowertrainDrivingCycle.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/PowertrainDrivingCycle.cs
@@ -49,7 +49,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 	/// </summary>
 	public class PowertrainDrivingCycle :
 		StatefulProviderComponent<PowertrainDrivingCycle.DummyState, ISimulationOutPort, ITnInPort, ITnOutPort>,
-		IDrivingCycleInfo, ISimulationOutPort, ITnInProvider
+		IDrivingCycleInfo, ISimulationOutPort, ITnInProvider, ITnInPort
 	{
 		public class DummyState {}
 
diff --git a/VectoCore/VectoCore/Utils/ProviderExtensions.cs b/VectoCore/VectoCore/Utils/ProviderExtensions.cs
index 0eb11c65e20e444df066a28b6f938d572e8b833e..2da24048abdea1f8759c38db1bf3ce7c883ce4bf 100644
--- a/VectoCore/VectoCore/Utils/ProviderExtensions.cs
+++ b/VectoCore/VectoCore/Utils/ProviderExtensions.cs
@@ -94,10 +94,14 @@ namespace TUGraz.VectoCore.Utils
 		}
 
 		public static CombustionEngine AddComponent(this IPowerTrainComponent prev, CombustionEngine next,
-			IIdleController idleController, IVehicleContainer container)
+			IIdleController idleController = null)
 		{
 			prev.InPort().Connect(next.OutPort());
 
+			if (idleController == null) {
+				idleController = next.IdleController;
+			}
+
 			var clutch = prev as IClutch;
 			if (clutch != null) {
 				clutch.IdleController = idleController;
diff --git a/VectoCore/VectoCoreTest/Integration/ATPowerTrain.cs b/VectoCore/VectoCoreTest/Integration/ATPowerTrain.cs
index 5ec64c0977ad1b510293baf904608168ddebf82e..92dd53ef330a1ed3dcbdb06107a0445bedb78347 100644
--- a/VectoCore/VectoCoreTest/Integration/ATPowerTrain.cs
+++ b/VectoCore/VectoCoreTest/Integration/ATPowerTrain.cs
@@ -71,7 +71,7 @@ namespace TUGraz.VectoCore.Tests.Integration
 				.AddComponent(new AxleGear(container, axleGearData))
 				.AddComponent(new DummyRetarder(container))
 				.AddComponent(new ATGearbox(container, gearboxData, new ATShiftStrategy(gearboxData, container)))
-				.AddComponent(engine, null, container);
+				.AddComponent(engine);
 
 			var aux = new EngineAuxiliary(container);
 			aux.AddConstant("", 0.SI<Watt>());
diff --git a/VectoCore/VectoCoreTest/Integration/CoachAdvancedAuxPowertrain.cs b/VectoCore/VectoCoreTest/Integration/CoachAdvancedAuxPowertrain.cs
index 58c13d773afa0938350a375a7af645b2392800cb..a5b06d00f6b2a71c86164c6dfc3141e985518f48 100644
--- a/VectoCore/VectoCoreTest/Integration/CoachAdvancedAuxPowertrain.cs
+++ b/VectoCore/VectoCoreTest/Integration/CoachAdvancedAuxPowertrain.cs
@@ -95,7 +95,7 @@ namespace TUGraz.VectoCore.Tests.Integration
 				.AddComponent(new DummyRetarder(container))
 				.AddComponent(new Gearbox(container, gearboxData, new AMTShiftStrategy(gearboxData, container)))
 				.AddComponent(new Clutch(container, engineData))
-				.AddComponent(engine, null, container);
+				.AddComponent(engine);
 
 			var aux = new BusAuxiliariesAdapter(container, AdvancedAuxFile, "Coach",
 				vehicleData.TotalVehicleWeight(), engineData.ConsumptionMap, engineData.IdleSpeed);
diff --git a/VectoCore/VectoCoreTest/Integration/CoachPowerTrain.cs b/VectoCore/VectoCoreTest/Integration/CoachPowerTrain.cs
index 163f6a994972e47bd2ce167e8f81a1890b2d61a0..e766329acc85b7e02b819eeb6ac2e731d22ceafd 100644
--- a/VectoCore/VectoCoreTest/Integration/CoachPowerTrain.cs
+++ b/VectoCore/VectoCoreTest/Integration/CoachPowerTrain.cs
@@ -98,7 +98,7 @@ namespace TUGraz.VectoCore.Tests.Integration
 				.AddComponent(new DummyRetarder(container))
 				.AddComponent(new Gearbox(container, gearboxData, new AMTShiftStrategy(gearboxData, container)))
 				.AddComponent(clutch)
-				.AddComponent(engine, null, container);
+				.AddComponent(engine);
 
 			var aux = new EngineAuxiliary(container);
 			aux.AddConstant("", 0.SI<Watt>());
diff --git a/VectoCore/VectoCoreTest/Integration/SimulationRuns/FullPowertrain.cs b/VectoCore/VectoCoreTest/Integration/SimulationRuns/FullPowertrain.cs
index c40bb4b769ba521de3d1e61acb6624c7b77792fa..0c72d1788bd7632c57ce429111510aff3615e162 100644
--- a/VectoCore/VectoCoreTest/Integration/SimulationRuns/FullPowertrain.cs
+++ b/VectoCore/VectoCoreTest/Integration/SimulationRuns/FullPowertrain.cs
@@ -90,7 +90,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
 				.AddComponent(new AxleGear(container, axleGearData))
 				.AddComponent(new Gearbox(container, gearboxData, new AMTShiftStrategy(gearboxData, container)))
 				.AddComponent(new Clutch(container, engineData))
-				.AddComponent(new CombustionEngine(container, engineData), null, container);
+				.AddComponent(new CombustionEngine(container, engineData));
 
 			cyclePort.Initialize();
 
@@ -146,7 +146,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
 				.AddComponent(new AxleGear(container, axleGearData))
 				.AddComponent(new Gearbox(container, gearboxData, new AMTShiftStrategy(gearboxData, container)))
 				.AddComponent(new Clutch(container, engineData))
-				.AddComponent(new CombustionEngine(container, engineData), null, container);
+				.AddComponent(new CombustionEngine(container, engineData));
 
 			cyclePort.Initialize();
 
@@ -216,7 +216,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
 				.AddComponent(new AxleGear(container, axleGearData))
 				.AddComponent(new Gearbox(container, gearboxData, new AMTShiftStrategy(gearboxData, container)))
 				.AddComponent(new Clutch(container, engineData))
-				.AddComponent(new CombustionEngine(container, engineData), null, container);
+				.AddComponent(new CombustionEngine(container, engineData));
 
 			cyclePort.Initialize();
 
diff --git a/VectoCore/VectoCoreTest/Integration/SimulationRuns/MinimalPowertrain.cs b/VectoCore/VectoCoreTest/Integration/SimulationRuns/MinimalPowertrain.cs
index cd4ae9eb25891fdbc4af866b365af01dfcc8d7c3..50d20f6e7f5890c0fefd27372d402e3c04bfe69f 100644
--- a/VectoCore/VectoCoreTest/Integration/SimulationRuns/MinimalPowertrain.cs
+++ b/VectoCore/VectoCoreTest/Integration/SimulationRuns/MinimalPowertrain.cs
@@ -83,7 +83,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
 				.AddComponent(new Wheels(container, vehicleData.DynamicTyreRadius, vehicleData.WheelsInertia))
 				.AddComponent(new AxleGear(container, axleGearData))
 				.AddComponent(new Clutch(container, engineData))
-				.AddComponent(engine, null, container);
+				.AddComponent(engine);
 
 			var gbx = new MockGearbox(container);
 
@@ -131,7 +131,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
 				.AddComponent(new Brakes(container))
 				.AddComponent(new AxleGear(container, axleGearData))
 				.AddComponent(new Clutch(container, engineData))
-				.AddComponent(new CombustionEngine(container, engineData), null, container);
+				.AddComponent(new CombustionEngine(container, engineData));
 			//engine.IdleController.RequestPort = clutch.IdleControlPort;
 
 			var gbx = new MockGearbox(container);
@@ -202,7 +202,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
 				.AddComponent(new Brakes(container))
 				.AddComponent(new AxleGear(container, axleGearData))
 				.AddComponent(new Clutch(container, engineData))
-				.AddComponent(new CombustionEngine(container, engineData), null, container);
+				.AddComponent(new CombustionEngine(container, engineData));
 			//engine.IdleController.RequestPort = clutch.IdleControlPort;
 
 			var gbx = new MockGearbox(container);
diff --git a/VectoCore/VectoCoreTest/Integration/Truck40tPowerTrain.cs b/VectoCore/VectoCoreTest/Integration/Truck40tPowerTrain.cs
index 6704bad3a447b769cbe0211b1bc2b5457a4892e4..83d65c1a60c0f76486f3e68145a1db42343d28c9 100644
--- a/VectoCore/VectoCoreTest/Integration/Truck40tPowerTrain.cs
+++ b/VectoCore/VectoCoreTest/Integration/Truck40tPowerTrain.cs
@@ -119,7 +119,7 @@ namespace TUGraz.VectoCore.Tests.Integration
 				.AddComponent(new DummyRetarder(container))
 				.AddComponent(new Gearbox(container, gearboxData, gbxStrategy))
 				.AddComponent(clutch)
-				.AddComponent(engine, null, container);
+				.AddComponent(engine);
 
 			var aux = new EngineAuxiliary(container);
 			aux.AddConstant("", 0.SI<Watt>());
diff --git a/VectoCore/VectoCoreTest/Models/Simulation/LossMapRangeValidationTest.cs b/VectoCore/VectoCoreTest/Models/Simulation/LossMapRangeValidationTest.cs
index 8d23f7038bc7b89b9ab78c73391511f22449f297..2642fba0c99b40d74ba9fc055b9944254859408f 100644
--- a/VectoCore/VectoCoreTest/Models/Simulation/LossMapRangeValidationTest.cs
+++ b/VectoCore/VectoCoreTest/Models/Simulation/LossMapRangeValidationTest.cs
@@ -174,14 +174,14 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation
 			var ratios = new[] { 14.93, 11.64, 9.02, 7.04, 5.64, 4.4, 3.39, 2.65, 2.05, 1.6, 1.28, 1.0 };
 			return new GearboxData {
 				Gears = ratios.Select((ratio, i) =>
-					Tuple.Create((uint)i,
-						new GearData {
-							MaxTorque = 2300.SI<NewtonMeter>(),
-							LossMap = TransmissionLossMapReader.ReadFromFile(!ratio.IsEqual(1.0) ? directlossMap : indirectLossMap, ratio,
-								string.Format("Gear {0}", i)),
-							Ratio = ratio,
-							ShiftPolygon = ShiftPolygonReader.ReadFromFile(ShiftPolygonFile)
-						}))
+						Tuple.Create((uint)i,
+							new GearData {
+								MaxTorque = 2300.SI<NewtonMeter>(),
+								LossMap = TransmissionLossMapReader.ReadFromFile(!ratio.IsEqual(1.0) ? directlossMap : indirectLossMap, ratio,
+									string.Format("Gear {0}", i)),
+								Ratio = ratio,
+								ShiftPolygon = ShiftPolygonReader.ReadFromFile(ShiftPolygonFile)
+							}))
 					.ToDictionary(k => k.Item1 + 1, v => v.Item2)
 			};
 		}