diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputData.cs
index 8cfcec5b7c21d0b5c82d8bd33405da61f5bee7aa..b3901d1f6dc20b76b3231df2b80b5554936ac5bb 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputData.cs
@@ -211,13 +211,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 
 		public IAngularGearInputData AngularGearInputData
 		{
-			get
-			{
-				if (AngularGear == null) {
-					throw new InvalidFileFormatException("AngularGear not found");
-				}
-				return AngularGear;
-			}
+			get { return AngularGear; }
 		}
 
 		IEngineDeclarationInputData IDeclarationInputDataProvider.EngineInputData
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs
index d13b1314011b313f30f88d60dcd073ecb72e20a6..9edd4bbae188c5438d29664a7ab4ebcf3251210c 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs
@@ -30,7 +30,6 @@
 */
 
 using System;
-using System.Collections.Generic;
 using System.Linq;
 using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.InputData;
@@ -170,6 +169,12 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 			};
 		}
 
+		/// <summary>
+		/// Creates an AngularGearData or returns null if there is no angular gear.
+		/// </summary>
+		/// <param name="data"></param>
+		/// <param name="useEfficiencyFallback">if true, the Efficiency value is used if no LossMap is found.</param>
+		/// <returns></returns>
 		internal AngularGearData CreateAngularGearData(IAngularGearInputData data, bool useEfficiencyFallback)
 		{
 			try {
@@ -178,47 +183,41 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 					type = data.Type;
 				} catch (Exception) {
 					Log.Info("AngularGear not found. Assuming None.");
-					// ignored
 				}
 
-				var angularGear = new AngularGearData {
-					SavedInDeclarationMode = data.SavedInDeclarationMode,
-					Vendor = data.Vendor,
-					ModelName = data.ModelName,
-					Creator = data.Creator,
-					Date = data.Date,
-					TypeId = data.TypeId,
-					DigestValue = data.DigestValue,
-					IntegrityStatus = data.IntegrityStatus,
-					Type = type,
-					AngularGear = new TransmissionData()
-				};
-
-				switch (angularGear.Type) {
+				switch (type) {
 					case AngularGearType.SeparateAngularGear:
+						var angularGear = new AngularGearData {
+							SavedInDeclarationMode = data.SavedInDeclarationMode,
+							Vendor = data.Vendor,
+							ModelName = data.ModelName,
+							Creator = data.Creator,
+							Date = data.Date,
+							TypeId = data.TypeId,
+							DigestValue = data.DigestValue,
+							IntegrityStatus = data.IntegrityStatus,
+							Type = type,
+							AngularGear = new TransmissionData { Ratio = data.Ratio }
+						};
 						try {
 							angularGear.AngularGear.LossMap = TransmissionLossMap.Create(data.LossMap, data.Ratio, "AngularGear");
-						} catch (VectoException) {
-							if (useEfficiencyFallback)
+						} catch (VectoException ex) {
+							Log.Info("AngularGear Loss Map not found.");
+							if (useEfficiencyFallback) {
+								Log.Info("AngularGear Trying with Efficiency instead of Loss Map.");
 								angularGear.AngularGear.LossMap = TransmissionLossMap.Create(data.Efficiency, data.Ratio, "AngularGear");
-							else {
-								throw;
+							} else {
+								throw new VectoException("AngularGear: LossMap or Efficiency not found.", ex);
 							}
 						}
-						angularGear.AngularGear.Ratio = data.Ratio;
-						break;
+						return angularGear;
 
 					case AngularGearType.LossesIncludedInGearbox:
 					case AngularGearType.None:
-						angularGear.AngularGear.Ratio = 1;
-						// if no angular gear or already included: Create LossMap with 100% efficiency
-						angularGear.AngularGear.LossMap = TransmissionLossMap.Create(1, angularGear.AngularGear.Ratio,
-							"Zero Losses AngularGear");
-						break;
+						return null;
 					default:
 						throw new ArgumentOutOfRangeException("data", "Unknown AngularGear Type.");
 				}
-				return angularGear;
 			} catch (Exception e) {
 				throw new VectoException("Error while reading AngularGear data: {0}", e.Message);
 			}
diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
index cfb843741a4f1228226993209f4e77750fe5052c..01df33ae4f3dac5fc410a822c4a4e30e539a0657 100644
--- a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
@@ -104,7 +104,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 			new PWheelCycle(container, data.Cycle, data.AxleGearData.AxleGear.Ratio,
 				gearbox.ModelData.Gears.ToDictionary(g => g.Key, g => g.Value.Ratio))
 				.AddComponent(new AxleGear(container, data.AxleGearData))
-				.AddComponent(new AngularGear(container, data.AngularGearData))
+				.AddComponent(data.AngularGearData != null ? new AngularGear(container, data.AngularGearData) : null)
 				.AddRetarderAndGearbox(data.Retarder, gearbox, container)
 				.AddComponent(new CycleClutch(container))
 				.AddComponent(new CombustionEngine(container, data.EngineData, pt1Disabled: true))
@@ -128,7 +128,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 				.AddComponent(new Wheels(container, data.VehicleData.DynamicTyreRadius, data.VehicleData.WheelsInertia))
 				.AddComponent(new Brakes(container))
 				.AddComponent(new AxleGear(container, data.AxleGearData))
-				.AddComponent(new AngularGear(container, data.AngularGearData))
+				.AddComponent(data.AngularGearData != null ? new AngularGear(container, data.AngularGearData) : null)
 				.AddRetarderAndGearbox(data.Retarder, GetGearbox(container, data.GearboxData), container)
 				.AddComponent(new Clutch(container, data.EngineData, engine.IdleController))
 				.AddComponent(engine)
@@ -151,7 +151,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 				.AddComponent(new Wheels(container, data.VehicleData.DynamicTyreRadius, data.VehicleData.WheelsInertia))
 				.AddComponent(new Brakes(container))
 				.AddComponent(new AxleGear(container, data.AxleGearData))
-				.AddComponent(new AngularGear(container, data.AngularGearData))
+				.AddComponent(data.AngularGearData != null ? new AngularGear(container, data.AngularGearData) : null)
 				.AddRetarderAndGearbox(data.Retarder, new CycleGearbox(container, data.GearboxData), container)
 				.AddComponent(new CycleClutch(container))
 				.AddComponent(new CombustionEngine(container, data.EngineData))
@@ -178,7 +178,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 				.AddComponent(new Wheels(container, data.VehicleData.DynamicTyreRadius, data.VehicleData.WheelsInertia))
 				.AddComponent(new Brakes(container))
 				.AddComponent(new AxleGear(container, data.AxleGearData))
-				.AddComponent(new AngularGear(container, data.AngularGearData))
+				.AddComponent(data.AngularGearData != null ? new AngularGear(container, data.AngularGearData) : null)
 				.AddRetarderAndGearbox(data.Retarder, GetGearbox(container, data.GearboxData), container)
 				.AddComponent(new Clutch(container, data.EngineData, engine.IdleController))
 				.AddComponent(engine)
diff --git a/VectoCore/VectoCore/Utils/ProviderExtensions.cs b/VectoCore/VectoCore/Utils/ProviderExtensions.cs
index 835d4448011e3397964899ffdcc30385fcf29561..294757a699bc4cb6545a429ca14541f2e034520f 100644
--- a/VectoCore/VectoCore/Utils/ProviderExtensions.cs
+++ b/VectoCore/VectoCore/Utils/ProviderExtensions.cs
@@ -83,6 +83,9 @@ namespace TUGraz.VectoCore.Utils
 
 		public static IPowerTrainComponent AddComponent(this IPowerTrainComponent prev, IPowerTrainComponent next)
 		{
+			if (next == null)
+				return prev;
+
 			prev.InPort().Connect(next.OutPort());
 			return next;
 		}