diff --git a/Documentation/Comparison Vecto Results.xlsx b/Documentation/Comparison Vecto Results.xlsx
new file mode 100644
index 0000000000000000000000000000000000000000..abbb9e7a9fce1ca2b636ccf11e088c73b1164916
Binary files /dev/null and b/Documentation/Comparison Vecto Results.xlsx differ
diff --git a/VECTO/GUI/GearboxGearDialog.vb b/VECTO/GUI/GearboxGearDialog.vb
index 98aaaae8b3bc0769176e32dea1cc1fb71684507c..e4b2381f3d279b79f962480bb137531e1a206573 100644
--- a/VECTO/GUI/GearboxGearDialog.vb
+++ b/VECTO/GUI/GearboxGearDialog.vb
@@ -73,7 +73,7 @@ Public Class GearboxGearDialog
 					If(String.IsNullOrWhiteSpace(TbMaxTorque.Text), Nothing, TbMaxTorque.Text.ToDouble().SI(Of NewtonMeter))
 					}
 			Dim results As IList(Of ValidationResult) =
-					gearData.Validate(If(Cfg.DeclMode, ExecutionMode.Declaration, ExecutionMode.Engineering), GearboxType)
+					gearData.Validate(If(Cfg.DeclMode, ExecutionMode.Declaration, ExecutionMode.Engineering), GearboxType, False)
 
 			If (results.Any()) Then
 				Return results.Select(Function(r) r.ErrorMessage + String.Join(", ", r.MemberNames.Distinct())).ToList()
diff --git a/VECTO/GUI/VehicleAxleDialog.vb b/VECTO/GUI/VehicleAxleDialog.vb
index fefd712c245e86d1999898e5ac5b943aa02a870a..dc6487f4a4009e396cc3f952d5712c79de3ab5bf 100644
--- a/VECTO/GUI/VehicleAxleDialog.vb
+++ b/VECTO/GUI/VehicleAxleDialog.vb
@@ -59,7 +59,7 @@ Public Class VehicleAxleDialog
 				}
 
 		Dim results As IList(Of ValidationResult) =
-				axleData.Validate(If(Cfg.DeclMode, ExecutionMode.Declaration, ExecutionMode.Engineering), Nothing)
+				axleData.Validate(If(Cfg.DeclMode, ExecutionMode.Declaration, ExecutionMode.Engineering), Nothing, False)
 
 		If results.Any() Then
 			Dim messages As IEnumerable(Of String) =
diff --git a/VECTO/Input Files/Engine.vb b/VECTO/Input Files/Engine.vb
index 464423448d2265ccbf385815d814f42e168e65d5..063053471f23f52498b76d1b8d546f1b234718d2 100644
--- a/VECTO/Input Files/Engine.vb	
+++ b/VECTO/Input Files/Engine.vb	
@@ -149,7 +149,7 @@ Public Class Engine
 	Public Function SaveFile() As Boolean
 
 		Dim validationResults As IList(Of ValidationResult) =
-				Validate(If(Cfg.DeclMode, ExecutionMode.Declaration, ExecutionMode.Engineering), Nothing)
+				Validate(If(Cfg.DeclMode, ExecutionMode.Declaration, ExecutionMode.Engineering), Nothing, False)
 
 		If validationResults.Count > 0 Then
 			Dim messages As IEnumerable(Of String) =
@@ -229,13 +229,14 @@ Public Class Engine
 	' ReSharper disable once UnusedMember.Global  -- used for Validation
 	Public Shared Function ValidateEngine(engine As Engine, validationContext As ValidationContext) As ValidationResult
 		Dim engineData As CombustionEngineData
-		Dim modeService As ExecutionModeServiceContainer = TryCast(validationContext.GetService(GetType(ExecutionMode)), 
-																	ExecutionModeServiceContainer)
-		Dim mode As ExecutionMode = If(modeService Is Nothing, ExecutionMode.Declaration, modeService.Mode)
 
-		Dim gbxtypeService As GearboxTypeServiceContainer =
-				TryCast(validationContext.GetService(GetType(GearboxTypeServiceContainer)), GearboxTypeServiceContainer)
-		Dim gbxType As GearboxType? = If(gbxtypeService Is Nothing, GearboxType.MT, gbxtypeService.Type)
+
+		Dim modeService As VectoValidationModeServiceContainer =
+				TryCast(validationContext.GetService(GetType(VectoValidationModeServiceContainer)), 
+						VectoValidationModeServiceContainer)
+		Dim mode As ExecutionMode = If(modeService Is Nothing, ExecutionMode.Declaration, modeService.Mode)
+		Dim emsCycle As Boolean = (modeService IsNot Nothing) AndAlso modeService.IsEMSCycle
+		Dim gbxType As GearboxType? = If(modeService Is Nothing, GearboxType.MT, modeService.GearboxType)
 
 		Try
 			If mode = ExecutionMode.Declaration Then
@@ -248,7 +249,7 @@ Public Class Engine
 			End If
 
 			Dim result As IList(Of ValidationResult) =
-					engineData.Validate(If(Cfg.DeclMode, ExecutionMode.Declaration, ExecutionMode.Engineering), gbxType)
+					engineData.Validate(If(Cfg.DeclMode, ExecutionMode.Declaration, ExecutionMode.Engineering), gbxType, emsCycle)
 
 			If Not result.Any() Then Return ValidationResult.Success
 
diff --git a/VECTO/Input Files/Gearbox.vb b/VECTO/Input Files/Gearbox.vb
index 3b9b02216ca954729ff8d4559eab1a4f1d996e33..48aeba42f93ffe902d3815b7b90a32c7a9d11282 100644
--- a/VECTO/Input Files/Gearbox.vb	
+++ b/VECTO/Input Files/Gearbox.vb	
@@ -109,7 +109,7 @@ Public Class Gearbox
 	Public Function SaveFile() As Boolean
 
 		Dim validationResults As IList(Of ValidationResult) =
-				Validate(If(Cfg.DeclMode, ExecutionMode.Declaration, ExecutionMode.Engineering), Type)
+				Validate(If(Cfg.DeclMode, ExecutionMode.Declaration, ExecutionMode.Engineering), Type, False)
 
 		If validationResults.Count > 0 Then
 			Dim messages As IEnumerable(Of String) =
@@ -186,9 +186,11 @@ Public Class Gearbox
 
 	' ReSharper disable once UnusedMember.Global -- used by Validation
 	Public Shared Function ValidateGearbox(gearbox As Gearbox, validationContext As ValidationContext) As ValidationResult
-		Dim modeService As ExecutionModeServiceContainer = TryCast(validationContext.GetService(GetType(ExecutionMode)), 
-																	ExecutionModeServiceContainer)
+		Dim modeService As VectoValidationModeServiceContainer =
+				TryCast(validationContext.GetService(GetType(VectoValidationModeServiceContainer)), 
+						VectoValidationModeServiceContainer)
 		Dim mode As ExecutionMode = If(modeService Is Nothing, ExecutionMode.Declaration, modeService.Mode)
+		Dim emsCycle As Boolean = (modeService IsNot Nothing) AndAlso modeService.IsEMSCycle
 
 		Dim axlegearData As AxleGearData
 		Dim gearboxData As GearboxData
@@ -226,14 +228,15 @@ Public Class Gearbox
 			End If
 
 			Dim result As IList(Of ValidationResult) =
-					gearboxData.Validate(If(Cfg.DeclMode, ExecutionMode.Declaration, ExecutionMode.Engineering), gearbox.Type)
+					gearboxData.Validate(If(Cfg.DeclMode, ExecutionMode.Declaration, ExecutionMode.Engineering), gearbox.Type, emsCycle)
 			If result.Any() Then
 				Return _
 					New ValidationResult("Gearbox Configuration is invalid. ",
 										result.Select(Function(r) r.ErrorMessage + String.Join(Environment.NewLine, r.MemberNames)).ToList())
 			End If
 
-			result = axlegearData.Validate(If(Cfg.DeclMode, ExecutionMode.Declaration, ExecutionMode.Engineering), gearbox.Type)
+			result = axlegearData.Validate(If(Cfg.DeclMode, ExecutionMode.Declaration, ExecutionMode.Engineering), gearbox.Type,
+											emsCycle)
 			If result.Any() Then
 				Return _
 					New ValidationResult("Axlegear Configuration is invalid. ",
diff --git a/VECTO/Input Files/VectoJob.vb b/VECTO/Input Files/VectoJob.vb
index 7efc024c87b30476cec2dd3bd22ab12ebac42f33..4f02fa750970ef3d7002ab28cabf595ec00e0177 100644
--- a/VECTO/Input Files/VectoJob.vb	
+++ b/VECTO/Input Files/VectoJob.vb	
@@ -109,7 +109,7 @@ Public Class VectoJob
 	Public Function SaveFile() As Boolean
 		Dim validationResults As IList(Of ValidationResult) =
 				Validate(If(Cfg.DeclMode, ExecutionMode.Declaration, ExecutionMode.Engineering),
-						If(GearboxInputData Is Nothing, GearboxType.MT, GearboxInputData.Type))
+						If(GearboxInputData Is Nothing, GearboxType.MT, GearboxInputData.Type), False)
 
 		If validationResults.Count > 0 Then
 			Dim messages As IEnumerable(Of String) =
@@ -308,8 +308,9 @@ Public Class VectoJob
 
 	' ReSharper disable once UnusedMember.Global -- used by Validation
 	Public Shared Function ValidateJob(vectoJob As VectoJob, validationContext As ValidationContext) As ValidationResult
-		Dim modeService As ExecutionModeServiceContainer = TryCast(validationContext.GetService(GetType(ExecutionMode)), 
-																	ExecutionModeServiceContainer)
+		Dim modeService As VectoValidationModeServiceContainer =
+				TryCast(validationContext.GetService(GetType(VectoValidationModeServiceContainer)), 
+						VectoValidationModeServiceContainer)
 		Dim mode As ExecutionMode = If(modeService Is Nothing, ExecutionMode.Declaration, modeService.Mode)
 
 		If mode = ExecutionMode.Engineering AndAlso vectoJob.EngineOnly Then
@@ -402,7 +403,7 @@ Public Class VectoJob
 
 
 			result = jobData.Validate(If(Cfg.DeclMode, ExecutionMode.Declaration, ExecutionMode.Engineering),
-									jobData.GearboxData.Type)
+									jobData.GearboxData.Type, False)
 			If result.Any() Then
 				Return _
 					New ValidationResult("Vecto Job Configuration is invalid. ", result.Select(Function(r) r.ErrorMessage).ToList())
diff --git a/VECTO/Input Files/Vehicle.vb b/VECTO/Input Files/Vehicle.vb
index 283f575a72e5bcd043129d614f3e4f718cad44b7..0c3cd378155d50cf8368ab64adb373707ccd3563 100644
--- a/VECTO/Input Files/Vehicle.vb	
+++ b/VECTO/Input Files/Vehicle.vb	
@@ -95,12 +95,12 @@ Public Class Vehicle
 		Dim ptoData As PTOData = Nothing
 		Dim angledriveData As AngledriveData
 
-		Dim modeService As ExecutionModeServiceContainer = TryCast(validationContext.GetService(GetType(ExecutionMode)), 
-																	ExecutionModeServiceContainer)
+		Dim modeService As VectoValidationModeServiceContainer =
+				TryCast(validationContext.GetService(GetType(VectoValidationModeServiceContainer)), 
+						VectoValidationModeServiceContainer)
 		Dim mode As ExecutionMode = If(modeService Is Nothing, ExecutionMode.Declaration, modeService.Mode)
-		Dim gbxtypeService As GearboxTypeServiceContainer =
-				TryCast(validationContext.GetService(GetType(GearboxTypeServiceContainer)), GearboxTypeServiceContainer)
-		Dim gbxType As GearboxType? = If(gbxtypeService Is Nothing, Nothing, gbxtypeService.Type)
+		Dim emsCycle As Boolean = (modeService IsNot Nothing) AndAlso modeService.IsEMSCycle
+		Dim gbxType As GearboxType? = If(modeService Is Nothing, Nothing, modeService.GearboxType)
 
 		Try
 			If mode = ExecutionMode.Declaration Then
@@ -120,14 +120,15 @@ Public Class Vehicle
 			End If
 
 			Dim result As IList(Of ValidationResult) =
-					vehicleData.Validate(If(Cfg.DeclMode, ExecutionMode.Declaration, ExecutionMode.Engineering), gbxType)
+					vehicleData.Validate(If(Cfg.DeclMode, ExecutionMode.Declaration, ExecutionMode.Engineering), gbxType, emsCycle)
 			If result.Any() Then
 				Return _
 					New ValidationResult("Vehicle Configuration is invalid. ",
 										result.Select(Function(r) r.ErrorMessage + String.Join(Environment.NewLine, r.MemberNames)).ToList())
 			End If
 
-			result = retarderData.Validate(If(Cfg.DeclMode, ExecutionMode.Declaration, ExecutionMode.Engineering), gbxType)
+			result = retarderData.Validate(If(Cfg.DeclMode, ExecutionMode.Declaration, ExecutionMode.Engineering), gbxType,
+											emsCycle)
 			If result.Any() Then
 				Return _
 					New ValidationResult("Retarder Configuration is invalid. ",
@@ -135,7 +136,8 @@ Public Class Vehicle
 			End If
 
 			If vehicle.AngledriveType = AngledriveType.SeparateAngledrive Then
-				result = angledriveData.Validate(If(Cfg.DeclMode, ExecutionMode.Declaration, ExecutionMode.Engineering), gbxType)
+				result = angledriveData.Validate(If(Cfg.DeclMode, ExecutionMode.Declaration, ExecutionMode.Engineering), gbxType,
+												emsCycle)
 				If result.Any() Then
 					Return _
 						New ValidationResult("AngleDrive Configuration is invalid. ",
@@ -144,7 +146,7 @@ Public Class Vehicle
 			End If
 
 			If Not vehicle.PTOTransmissionType = "None" Then
-				result = ptoData.Validate(If(Cfg.DeclMode, ExecutionMode.Declaration, ExecutionMode.Engineering), gbxType)
+				result = ptoData.Validate(If(Cfg.DeclMode, ExecutionMode.Declaration, ExecutionMode.Engineering), gbxType, emsCycle)
 				If result.Any() Then
 					Return _
 						New ValidationResult("PTO Configuration is invalid. ",
@@ -195,7 +197,7 @@ Public Class Vehicle
 		SavedInDeclMode = Cfg.DeclMode
 
 		Dim validationResults As IList(Of ValidationResult) =
-				Validate(If(Cfg.DeclMode, ExecutionMode.Declaration, ExecutionMode.Engineering), Nothing)
+				Validate(If(Cfg.DeclMode, ExecutionMode.Declaration, ExecutionMode.Engineering), Nothing, False)
 
 		If validationResults.Count > 0 Then
 			Dim messages As IEnumerable(Of String) =
diff --git a/VectoCommon/VectoCommon/Utils/Validation.cs b/VectoCommon/VectoCommon/Utils/Validation.cs
index c41577c4c1cf831ace657428b086cd296ffb9c84..42436a1e9ca5955f0aea4ade89ffb075250c314b 100644
--- a/VectoCommon/VectoCommon/Utils/Validation.cs
+++ b/VectoCommon/VectoCommon/Utils/Validation.cs
@@ -52,15 +52,18 @@ namespace TUGraz.VectoCommon.Utils
 		/// <param name="entity">The entity.</param>
 		/// <param name="mode">validate the entity for the given execution mode</param>
 		/// <param name="gbxType"></param>
+		/// <param name="cycleType"></param>
 		/// <returns>Null, if the validation was successfull. Otherwise a list of ValidationResults with the ErrorMessages.</returns>
-		public static IList<ValidationResult> Validate<T>(this T entity, ExecutionMode mode, GearboxType? gbxType)
+		public static IList<ValidationResult> Validate<T>(this T entity, ExecutionMode mode, GearboxType? gbxType,
+			bool emsCycle)
 		{
 			if (entity == null) {
 				return new[] { new ValidationResult(string.Format("null value given for {0}", typeof(T))) };
 			}
 			var context = new ValidationContext(entity);
-			context.ServiceContainer.AddService(typeof(ExecutionMode), new ExecutionModeServiceContainer(mode));
-			context.ServiceContainer.AddService(typeof(GearboxTypeServiceContainer), new GearboxTypeServiceContainer(gbxType));
+			context.ServiceContainer.AddService(typeof(VectoValidationModeServiceContainer),
+				new VectoValidationModeServiceContainer(mode, gbxType, emsCycle));
+
 			var results = new List<ValidationResult>();
 			Validator.TryValidateObject(entity, context, results, true);
 
@@ -136,27 +139,21 @@ namespace TUGraz.VectoCommon.Utils
 		}
 	}
 
-	public class ExecutionModeServiceContainer
+	public class VectoValidationModeServiceContainer
 	{
-		public ExecutionModeServiceContainer(ExecutionMode mode)
-		{
-			Mode = mode;
-		}
-
 		public ExecutionMode Mode { get; protected set; }
-	}
+		public GearboxType? GearboxType { get; protected set; }
+		public bool IsEMSCycle { get; protected set; }
 
-	public class GearboxTypeServiceContainer
-	{
-		public GearboxTypeServiceContainer(GearboxType? type)
+		public VectoValidationModeServiceContainer(ExecutionMode mode, GearboxType? gbxType, bool isEMSCycle = false)
 		{
-			Type = type;
+			Mode = mode;
+			GearboxType = gbxType;
+			IsEMSCycle = isEMSCycle;
 		}
-
-
-		public GearboxType? Type { get; protected set; }
 	}
 
+
 	/// <summary>
 	/// Determines that the attributed object should be validated recursively.
 	/// </summary>
@@ -176,11 +173,11 @@ namespace TUGraz.VectoCommon.Utils
 				return ValidationResult.Success;
 			}
 
-			var modeService = validationContext.GetService(typeof(ExecutionMode)) as ExecutionModeServiceContainer;
-			var mode = modeService != null ? modeService.Mode : ExecutionMode.Declaration;
-
-			var gbxTypeService = validationContext.GetService(typeof(GearboxTypeServiceContainer)) as GearboxTypeServiceContainer;
-			var gbxType = gbxTypeService != null ? gbxTypeService.Type : GearboxType.MT;
+			var validationService =
+				validationContext.GetService(typeof(VectoValidationModeServiceContainer)) as VectoValidationModeServiceContainer;
+			var mode = validationService != null ? validationService.Mode : ExecutionMode.Declaration;
+			var gbxType = validationService != null ? validationService.GearboxType : GearboxType.MT;
+			var isEmsCycle = validationService != null && validationService.IsEMSCycle;
 
 			var enumerable = value as IEnumerable;
 			if (enumerable != null) {
@@ -192,8 +189,8 @@ namespace TUGraz.VectoCommon.Utils
 							var baseType = valueType.GetGenericTypeDefinition();
 							if (baseType == typeof(KeyValuePair<,>)) {
 								var kvResults = new List<ValidationResult>();
-								kvResults.AddRange(valueType.GetProperty("Key").GetValue(element).Validate(mode, gbxType));
-								kvResults.AddRange(valueType.GetProperty("Value").GetValue(element).Validate(mode, gbxType));
+								kvResults.AddRange(valueType.GetProperty("Key").GetValue(element).Validate(mode, gbxType, isEmsCycle));
+								kvResults.AddRange(valueType.GetProperty("Value").GetValue(element).Validate(mode, gbxType, isEmsCycle));
 								if (kvResults.Any()) {
 									return new ValidationResult(
 										string.Format("{1}[{0}] in {1} invalid: {2}", valueType.GetProperty("Key").GetValue(element),
@@ -203,7 +200,7 @@ namespace TUGraz.VectoCommon.Utils
 							}
 						}
 
-						var results = element.Validate(mode, gbxType);
+						var results = element.Validate(mode, gbxType, isEmsCycle);
 						if (results.Any()) {
 							return new ValidationResult(
 								string.Format("{1}[{0}] in {1} invalid: {2}", i, validationContext.DisplayName,
@@ -213,7 +210,7 @@ namespace TUGraz.VectoCommon.Utils
 					i++;
 				}
 			} else {
-				var results = value.Validate(mode, gbxType);
+				var results = value.Validate(mode, gbxType, isEmsCycle);
 				if (!results.Any()) {
 					return ValidationResult.Success;
 				}
@@ -247,6 +244,7 @@ namespace TUGraz.VectoCommon.Utils
 	public class SIRangeAttribute : RangeAttribute
 	{
 		private ExecutionMode? _mode;
+		private bool? _emsMission;
 		private string _unit = "-";
 
 		/// <summary>
@@ -255,9 +253,72 @@ namespace TUGraz.VectoCommon.Utils
 		/// <param name="minimum">The minimum.</param>
 		/// <param name="maximum">The maximum.</param>
 		/// <param name="mode">if specified the validation is only performed in the corresponding mode</param>
-		public SIRangeAttribute(int minimum, int maximum, ExecutionMode mode) : base(minimum, maximum)
+		public SIRangeAttribute(int minimum, int maximum, ExecutionMode mode)
+			: base(minimum, maximum)
+		{
+			_mode = mode;
+		}
+
+		/// <summary>
+		/// Checks the Min-Max Range of SI Objects.
+		/// </summary>
+		/// <param name="minimum">The minimum.</param>
+		/// <param name="maximum">The maximum.</param>
+		public SIRangeAttribute(int minimum, int maximum)
+			: base(minimum, maximum) {}
+
+		/// <summary>
+		/// Checks the Min-Max Range of SI Objects.
+		/// </summary>
+		/// <param name="minimum">The minimum.</param>
+		/// <param name="maximum">The maximum.</param>
+		/// <param name="mode">if specified the validation is only performed in the corresponding mode</param>
+		public SIRangeAttribute(double minimum, double maximum, ExecutionMode mode)
+			: base(minimum, maximum)
+		{
+			_mode = mode;
+		}
+
+		/// <summary>
+		/// Checks the Min-Max Range of SI Objects.
+		/// </summary>
+		/// <param name="minimum">The minimum.</param>
+		/// <param name="maximum">The maximum.</param>
+		public SIRangeAttribute(double minimum, double maximum)
+			: base(minimum, maximum) {}
+
+		/// <summary>
+		/// Checks the Min-Max Range of SI Objects.
+		/// </summary>
+		/// <param name="minimum">The minimum.</param>
+		/// <param name="maximum">The maximum.</param>
+		/// <param name="mode">if specified the validation is only performed in the corresponding mode</param>
+		public SIRangeAttribute(SI minimum, SI maximum, ExecutionMode mode)
+			: base(minimum.Value(), maximum.Value())
+		{
+			_mode = mode;
+		}
+
+		/// <summary>
+		/// Checks the Min-Max Range of SI Objects.
+		/// </summary>
+		/// <param name="minimum">The minimum.</param>
+		/// <param name="maximum">The maximum.</param>
+		public SIRangeAttribute(SI minimum, SI maximum)
+			: base(minimum.Value(), maximum.Value()) {}
+
+		/// <summary>
+		/// Checks the Min-Max Range of SI Objects.
+		/// </summary>
+		/// <param name="minimum">The minimum.</param>
+		/// <param name="maximum">The maximum.</param>
+		/// <param name="mode">if specified the validation is only performed in the corresponding mode</param>
+		/// <param name="emsMission">Validation only applies if the mission is an EMS mission</param>
+		public SIRangeAttribute(int minimum, int maximum, ExecutionMode mode, bool emsMission)
+			: base(minimum, maximum)
 		{
 			_mode = mode;
+			_emsMission = emsMission;
 		}
 
 		/// <summary>
@@ -265,7 +326,11 @@ namespace TUGraz.VectoCommon.Utils
 		/// </summary>
 		/// <param name="minimum">The minimum.</param>
 		/// <param name="maximum">The maximum.</param>
-		public SIRangeAttribute(int minimum, int maximum) : base(minimum, maximum) {}
+		/// <param name="emsMission">Validation only applies if the mission is an EMS mission</param>
+		public SIRangeAttribute(int minimum, int maximum, bool emsMission) : base(minimum, maximum)
+		{
+			_emsMission = emsMission;
+		}
 
 		/// <summary>
 		/// Checks the Min-Max Range of SI Objects.
@@ -273,9 +338,12 @@ namespace TUGraz.VectoCommon.Utils
 		/// <param name="minimum">The minimum.</param>
 		/// <param name="maximum">The maximum.</param>
 		/// <param name="mode">if specified the validation is only performed in the corresponding mode</param>
-		public SIRangeAttribute(double minimum, double maximum, ExecutionMode mode) : base(minimum, maximum)
+		/// <param name="emsMission">Validation only applies if the mission is an EMS mission</param>
+		public SIRangeAttribute(double minimum, double maximum, ExecutionMode mode, bool emsMission)
+			: base(minimum, maximum)
 		{
 			_mode = mode;
+			_emsMission = emsMission;
 		}
 
 		/// <summary>
@@ -283,7 +351,11 @@ namespace TUGraz.VectoCommon.Utils
 		/// </summary>
 		/// <param name="minimum">The minimum.</param>
 		/// <param name="maximum">The maximum.</param>
-		public SIRangeAttribute(double minimum, double maximum) : base(minimum, maximum) {}
+		/// <param name="emsMission">Validation only applies if the mission is an EMS mission</param>
+		public SIRangeAttribute(double minimum, double maximum, bool emsMission) : base(minimum, maximum)
+		{
+			_emsMission = emsMission;
+		}
 
 		/// <summary>
 		/// Checks the Min-Max Range of SI Objects.
@@ -291,9 +363,12 @@ namespace TUGraz.VectoCommon.Utils
 		/// <param name="minimum">The minimum.</param>
 		/// <param name="maximum">The maximum.</param>
 		/// <param name="mode">if specified the validation is only performed in the corresponding mode</param>
-		public SIRangeAttribute(SI minimum, SI maximum, ExecutionMode mode) : base(minimum.Value(), maximum.Value())
+		/// <param name="emsMission">Validation only applies if the mission is an EMS mission</param>
+		public SIRangeAttribute(SI minimum, SI maximum, ExecutionMode mode, bool emsMission)
+			: base(minimum.Value(), maximum.Value())
 		{
 			_mode = mode;
+			_emsMission = emsMission;
 		}
 
 		/// <summary>
@@ -301,7 +376,11 @@ namespace TUGraz.VectoCommon.Utils
 		/// </summary>
 		/// <param name="minimum">The minimum.</param>
 		/// <param name="maximum">The maximum.</param>
-		public SIRangeAttribute(SI minimum, SI maximum) : base(minimum.Value(), maximum.Value()) {}
+		/// <param name="emsMission">Validation only applies if the mission is an EMS mission</param>
+		public SIRangeAttribute(SI minimum, SI maximum, bool emsMission) : base(minimum.Value(), maximum.Value())
+		{
+			_emsMission = emsMission;
+		}
 
 		/// <summary>
 		/// Validates that an SI Object is inside the min-max range.
@@ -318,14 +397,19 @@ namespace TUGraz.VectoCommon.Utils
 			if (si != null) {
 				_unit = si.GetUnitString();
 			}
-
-			var modeService = validationContext.GetService(typeof(ExecutionMode)) as ExecutionModeServiceContainer;
-			var mode = modeService == null ? (ExecutionMode?)null : modeService.Mode;
-			if (mode == null) {
-				return base.IsValid(si != null ? si.Value() : value, validationContext);
-			}
-			if (_mode == null || (_mode != null && (_mode.Value == mode))) {
-				return base.IsValid(si != null ? si.Value() : value, validationContext);
+			var validationService =
+				validationContext.GetService(typeof(VectoValidationModeServiceContainer)) as VectoValidationModeServiceContainer;
+			var mode = validationService != null ? validationService.Mode : (ExecutionMode?)null;
+			var emsMode = validationService != null && validationService.IsEMSCycle;
+
+			if (!_emsMission.HasValue || _emsMission.Value == emsMode) {
+				if (mode == null) {
+					return base.IsValid(si != null ? si.Value() : value, validationContext);
+				}
+				if (_mode == null || (_mode != null && (_mode.Value == mode))) {
+					return base.IsValid(si != null ? si.Value() : value, validationContext);
+				}
+				return ValidationResult.Success;
 			}
 			return ValidationResult.Success;
 		}
@@ -333,6 +417,7 @@ namespace TUGraz.VectoCommon.Utils
 		public override string FormatErrorMessage(string name)
 		{
 			const string unitString = "{0} [{1}]";
+
 			return string.Format(ErrorMessageString, name, string.Format(unitString, Minimum, _unit),
 				string.Format(unitString, Maximum, _unit));
 		}
diff --git a/VectoCore/VectoCore/Configuration/Constants.cs b/VectoCore/VectoCore/Configuration/Constants.cs
index cba7ea910b3815f7e131f0fe5a7a2edc40fdce43..3df392f60f5228f5ee77997c3776f13acfe7e76f 100644
--- a/VectoCore/VectoCore/Configuration/Constants.cs
+++ b/VectoCore/VectoCore/Configuration/Constants.cs
@@ -167,6 +167,7 @@ namespace TUGraz.VectoCore.Configuration
 			public static readonly Meter GearboxLookaheadForAccelerationEstimation = 100.SI<Meter>();
 
 			public static Kilogram MaximumGrossVehicleWeight = 40000.SI<Kilogram>();
+			public static Kilogram MaximumGrossVehicleWeightEMS = 60000.SI<Kilogram>();
 
 			// the torque converter characteristics curve has to be defined up to this speed ratio
 			public const double RequiredTorqueConverterSpeedRatio = 2.2;
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs
index 87f34b29e060f9c5d2abe829059cff5d04d3204f..705bd8b7de19b8b9f29cf291128a11683cf89f91 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs
@@ -43,6 +43,7 @@ using TUGraz.VectoCore.Models.Simulation.Data;
 using TUGraz.VectoCore.Models.SimulationComponent.Data;
 using TUGraz.VectoCore.Models.SimulationComponent.Data.Engine;
 using TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox;
+using TUGraz.VectoCore.OutputData;
 using TUGraz.VectoCore.Utils;
 
 namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
@@ -93,15 +94,17 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 			}
 
 			var retVal = SetCommonVehicleData(data);
-			retVal.TrailerGrossVehicleWeight = mission.TrailerGrossVehicleWeight;
-			retVal.BodyAndTrailerWeight = mission.BodyCurbWeight + mission.TrailerCurbWeight;
+			retVal.TrailerGrossVehicleWeight = mission.Trailer.Sum(t => t.TrailerGrossVehicleWeight).DefaultIfNull(0);
+			retVal.BodyAndTrailerWeight = mission.BodyCurbWeight + mission.Trailer.Sum(t => t.TrailerCurbWeight).DefaultIfNull(0);
 			retVal.CurbWeight += retVal.BodyAndTrailerWeight;
+
 			retVal.Loading = loading;
+			var drivenIndex = DrivenAxleIndex(data.Axles);
 			retVal.DynamicTyreRadius =
-				DeclarationData.Wheels.Lookup(data.Axles[DeclarationData.PoweredAxle()].Wheels).DynamicTyreRadius; // TODO!
-			retVal.CargoVolume = mission.MissionType != MissionType.Construction ? mission.CargoVolume : 0.SI<CubicMeter>();
+				DeclarationData.Wheels.Lookup(data.Axles[drivenIndex].Wheels).DynamicTyreRadius;
+			retVal.CargoVolume = mission.MissionType != MissionType.Construction ? mission.TotalCargoVolume : 0.SI<CubicMeter>();
 
-			var aerodynamicDragArea = data.AirDragArea + mission.DeltaCdA;
+			var aerodynamicDragArea = data.AirDragArea + mission.Trailer.Sum(t => t.DeltaCdA).DefaultIfNull(0);
 
 			retVal.CrossWindCorrectionCurve =
 				new CrosswindCorrectionCdxALookup(aerodynamicDragArea,
@@ -127,23 +130,31 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 				axleData.Add(axle);
 			}
 
-			axleData.AddRange(mission.TrailerAxleWeightDistribution.Select(tmp => {
-				var wheel = mission.TrailerType != TrailerType.None
-					? DeclarationData.StandardBodies.Lookup(mission.TrailerType.ToString()).Wheels
-					: DeclarationData.Wheels.Lookup(DeclarationData.Trailer.WheelsType);
-				return new Axle {
+			foreach (var trailer in mission.Trailer) {
+				axleData.AddRange(trailer.TrailerWheels.Select(trailerWheel => new Axle {
 					AxleType = AxleType.Trailer,
-					AxleWeightShare = tmp,
+					AxleWeightShare = trailer.TrailerAxleWeightShare / trailer.TrailerWheels.Count,
 					TwinTyres = DeclarationData.Trailer.TwinTyres,
 					RollResistanceCoefficient = DeclarationData.Trailer.RollResistanceCoefficient,
 					TyreTestLoad = DeclarationData.Trailer.TyreTestLoad.SI<Newton>(),
-					Inertia = wheel.Inertia
-				};
-			}));
+					Inertia = trailerWheel.Inertia
+				}));
+			}
 			retVal.AxleData = axleData;
 			return retVal;
 		}
 
+		private static int DrivenAxleIndex(IList<IAxleDeclarationInputData> axles)
+		{
+			for (var i = 0; i < axles.Count; i++) {
+				if (axles[i].AxleType != AxleType.VehicleDriven) {
+					continue;
+				}
+				return i;
+			}
+			return DeclarationData.PoweredAxle();
+		}
+
 		internal CombustionEngineData CreateEngineData(IEngineDeclarationInputData engine, GearboxType gearboxType)
 		{
 			if (!engine.SavedInDeclarationMode) {
@@ -249,6 +260,8 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 					DemandType = AuxiliaryDemandType.Constant,
 					Technology = auxData.Technology
 				};
+
+				mission = mission.GetNonEMSMissionType();
 				switch (auxType) {
 					case AuxiliaryType.Fan:
 						aux.PowerDemand = DeclarationData.Fan.Lookup(mission, auxData.Technology.FirstOrDefault());
diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeVectoRunDataFactory.cs
index 09a63d5cbc9981403704f7d68597a8dea79c7278..5a9745188299ed856d3f61645882812d0d9428e7 100644
--- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeVectoRunDataFactory.cs
+++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeVectoRunDataFactory.cs
@@ -34,6 +34,7 @@ using System.Linq;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
+using TUGraz.VectoCore.Configuration;
 using TUGraz.VectoCore.InputData.Reader.ComponentData;
 using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter;
 using TUGraz.VectoCore.Models.Declaration;
@@ -91,8 +92,11 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
 				};
 				Report.InitializeReport(powertrainConfig, segment);
 			}
-
+			var maxEnginePower = engineData.FullLoadCurve.FullLoadStationaryPower(engineData.FullLoadCurve.PreferredSpeed);
 			foreach (var mission in segment.Missions) {
+				if (mission.MissionType.IsEMS() && maxEnginePower.IsSmaller(DeclarationData.MinEnginePowerForEMS)) {
+					continue;
+				}
 				DrivingCycleData cycle;
 				lock (CyclesCacheLock) {
 					if (CyclesCache.ContainsKey(mission.MissionType)) {
@@ -121,8 +125,9 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
 						Report = Report,
 						Mission = mission,
 					};
-					simulationRunData.EngineData.WHTCCorrectionFactor = DeclarationData.WHTCCorrection.Lookup(mission.MissionType,
-						engineData.WHTCRural, engineData.WHTCUrban, engineData.WHTCMotorway) * engineData.ColdHotCorrectionFactor;
+					simulationRunData.EngineData.WHTCCorrectionFactor = DeclarationData.WHTCCorrection.Lookup(
+						mission.MissionType.GetNonEMSMissionType(), engineData.WHTCRural, engineData.WHTCUrban, engineData.WHTCMotorway) *
+																		engineData.ColdHotCorrectionFactor;
 					//simulationRunData.Cycle.Name = mission.MissionType.ToString();
 					simulationRunData.VehicleData.VehicleClass = segment.VehicleClass;
 					yield return simulationRunData;
diff --git a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs
index 8d1f35e7334954fe24810951eb51dc4b760dcf36..67388a5ee2818b74ee53cc6fac16e3a3ee350dbb 100644
--- a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs
+++ b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs
@@ -48,6 +48,8 @@ namespace TUGraz.VectoCore.Models.Declaration
 	{
 		public const string DeclarationDataResourcePrefix = "TUGraz.VectoCore.Resources.Declaration";
 
+		public static readonly Watt MinEnginePowerForEMS = 300e3.SI<Watt>();
+
 		private static DeclarationData _instance;
 		private Segments _segments;
 		private Wheels _wheels;
@@ -63,6 +65,7 @@ namespace TUGraz.VectoCore.Models.Declaration
 		private Payloads _payloads;
 		private PTOTransmission _pto;
 
+		
 		public static PTOTransmission PTOTransmission
 		{
 			get { return Instance()._pto ?? (Instance()._pto = new PTOTransmission()); }
@@ -221,7 +224,7 @@ namespace TUGraz.VectoCore.Models.Declaration
 			public const double RollResistanceCoefficient = 0.00555;
 			public const double TyreTestLoad = 37500;
 			public const bool TwinTyres = false;
-			public const string WheelsType = "385/65 R 22.5";
+			//public const string WheelsType = "385/65 R 22.5";
 		}
 
 		public static class Engine
diff --git a/VectoCore/VectoCore/Models/Declaration/Mission.cs b/VectoCore/VectoCore/Models/Declaration/Mission.cs
index 7df3a8328840c6573bd95e35ff6c5d35fa547e7e..0c59348141f39b7aceb8995f5afd25102d78abbe 100644
--- a/VectoCore/VectoCore/Models/Declaration/Mission.cs
+++ b/VectoCore/VectoCore/Models/Declaration/Mission.cs
@@ -65,22 +65,21 @@ namespace TUGraz.VectoCore.Models.Declaration
 		public MissionType MissionType;
 		public string CrossWindCorrectionParameters;
 		public double[] AxleWeightDistribution;
-		public double[] TrailerAxleWeightDistribution;
+
 
 		public Kilogram CurbWeight;
 		public Kilogram BodyCurbWeight;
 		public Kilogram BodyGrossVehicleWeight;
-		public TrailerType TrailerType;
-		public Kilogram TrailerCurbWeight;
-		public Kilogram TrailerGrossVehicleWeight;
+
 		public Stream CycleFile;
-		public SquareMeter DeltaCdA;
+
+		public List<MissionTrailer> Trailer;
 
 		public Kilogram MinLoad;
 		public Kilogram RefLoad;
 		public Kilogram MaxLoad;
 
-		public CubicMeter CargoVolume;
+		public CubicMeter TotalCargoVolume;
 
 		public Dictionary<LoadingType, Kilogram> Loadings
 		{
@@ -94,10 +93,34 @@ namespace TUGraz.VectoCore.Models.Declaration
 		}
 	}
 
+	public class MissionTrailer
+	{
+		public TrailerType TrailerType;
+		public Kilogram TrailerCurbWeight;
+		public Kilogram TrailerGrossVehicleWeight;
+		public List<Wheels.Entry> TrailerWheels;
+		public double TrailerAxleWeightShare;
+		public SquareMeter DeltaCdA;
+		public CubicMeter CargoVolume;
+	}
+
 	public enum TrailerType
 	{
-		None,
+		//None,
 		T1,
-		T2
+		T2,
+		ST1,
+		Dolly
+	}
+
+	public static class TrailterTypeHelper
+	{
+		public static TrailerType Parse(string trailer)
+		{
+			if ("d".Equals(trailer, StringComparison.InvariantCultureIgnoreCase)) {
+				return TrailerType.Dolly;
+			}
+			return trailer.ParseEnum<TrailerType>();
+		}
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Models/Declaration/MissionType.cs b/VectoCore/VectoCore/Models/Declaration/MissionType.cs
index 8ccc72b7b96b46651a1bcafc2cd0b158713f896a..8052e790aacd5dd04aef165f11b3af26988d5f32 100644
--- a/VectoCore/VectoCore/Models/Declaration/MissionType.cs
+++ b/VectoCore/VectoCore/Models/Declaration/MissionType.cs
@@ -34,7 +34,9 @@ namespace TUGraz.VectoCore.Models.Declaration
 	public enum MissionType
 	{
 		LongHaul,
+		LongHaulEMS,
 		RegionalDelivery,
+		RegionalDeliveryEMS,
 		UrbanDelivery,
 		MunicipalUtility,
 		Construction,
@@ -51,5 +53,21 @@ namespace TUGraz.VectoCore.Models.Declaration
 		{
 			return self.ToString().ToLowerInvariant();
 		}
+
+		public static bool IsEMS(this MissionType self)
+		{
+			return self == MissionType.LongHaulEMS || self == MissionType.RegionalDeliveryEMS;
+		}
+
+		public static MissionType GetNonEMSMissionType(this MissionType self)
+		{
+			if (self == MissionType.LongHaulEMS) {
+				return MissionType.LongHaul;
+			}
+			if (self == MissionType.RegionalDeliveryEMS) {
+				return MissionType.RegionalDelivery;
+			}
+			return self;
+		}
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Models/Declaration/Segments.cs b/VectoCore/VectoCore/Models/Declaration/Segments.cs
index 99495073ea211e1f835cbda37cb8a6b99f7320e1..2795c521c8ddd43fad00872b0a6a784960f93dca 100644
--- a/VectoCore/VectoCore/Models/Declaration/Segments.cs
+++ b/VectoCore/VectoCore/Models/Declaration/Segments.cs
@@ -37,6 +37,7 @@ using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Configuration;
+using TUGraz.VectoCore.OutputData;
 using TUGraz.VectoCore.Utils;
 
 namespace TUGraz.VectoCore.Models.Declaration
@@ -53,8 +54,7 @@ namespace TUGraz.VectoCore.Models.Declaration
 
 		protected override string ErrorMessage
 		{
-			get
-			{
+			get {
 				return
 					"ERROR: Could not find the declaration segment for vehicle. Category: {0}, AxleConfiguration: {1}, GrossVehicleWeight: {2}";
 			}
@@ -126,32 +126,49 @@ namespace TUGraz.VectoCore.Models.Declaration
 			foreach (var missionType in missionTypes.Where(m => row.Field<string>(m.ToString()) != "-")) {
 				var body = DeclarationData.StandardBodies.Lookup(row.Field<string>("body"));
 
-				var trailerIsUsed = ShouldTrailerBeUsed(row, missionType);
-				var trailerField = row.Field<string>("trailer");
-				var trailerType = trailerIsUsed && !string.IsNullOrWhiteSpace(trailerField)
-					? trailerField.ParseEnum<TrailerType>()
-					: TrailerType.None;
-				var trailer = trailerIsUsed
-					? DeclarationData.StandardBodies.Lookup(trailerField)
-					: StandardBodies.Empty;
+				var maxGVW = Constants.SimulationSettings.MaximumGrossVehicleWeight;
+				var trailers = new List<MissionTrailer>();
+				if (missionType.IsEMS()) {
+					maxGVW = Constants.SimulationSettings.MaximumGrossVehicleWeightEMS;
+					var trailerList = row.Field<string>("ems").Split('+');
+					var trailerWeightShares = row.Field<string>("traileraxles" + GetMissionSuffix(missionType)).Split('/');
+					if (trailerList.Length != trailerWeightShares.Length) {
+						throw new VectoException(
+							"Error in segmentation table: number of trailers and list of weight shares does not match!");
+					}
+					trailers.AddRange(trailerWeightShares.Select((t, i) => CreateTrailer(trailerList[i], t.ToDouble() / 100.0, i == 0)));
+				} else {
+					if (ShouldTrailerBeUsed(row, missionType)) {
+						var trailerValue = row.Field<string>("trailer");
+						if (string.IsNullOrWhiteSpace(trailerValue)) {
+							throw new VectoException("Error in segmentation table: trailer weight share is defined but not trailer type!");
+						}
+						trailers.Add(CreateTrailer(trailerValue, GetTrailerAxleWeightDistribution(row, missionType), true));
+					}
+				}
 
-				var semiTrailerField = row.Field<string>("semitrailer");
-				var semiTrailer = !string.IsNullOrWhiteSpace(semiTrailerField)
-					? DeclarationData.StandardBodies.Lookup(semiTrailerField)
-					: StandardBodies.Empty;
 
-				trailer += semiTrailer;
+				//var semiTrailerField = row.Field<string>("semitrailer");
+				//var semiTrailer = !string.IsNullOrWhiteSpace(semiTrailerField)
+				//	? DeclarationData.StandardBodies.Lookup(semiTrailerField)
+				//	: StandardBodies.Empty;
+
+				//trailer += semiTrailer;
 
 				// limit gvw to MaxGVW (40t)
-				var gvw = VectoMath.Min(grossVehicleWeight + trailer.GrossVehicleWeight,
-					Constants.SimulationSettings.MaximumGrossVehicleWeight);
-				var maxLoad = gvw - curbWeight - body.CurbWeight - trailer.CurbWeight;
+				var gvw =
+					VectoMath.Min(
+						grossVehicleWeight + trailers.Sum(t => t.TrailerGrossVehicleWeight).DefaultIfNull(0),
+						maxGVW);
+				var maxLoad = gvw - curbWeight - body.CurbWeight -
+							trailers.Sum(t => t.TrailerCurbWeight).DefaultIfNull(0);
 
 				var refLoadValue = row.ParseDoubleOrGetDefault(missionType.ToString(), double.NaN);
 				Kilogram refLoad;
 				if (double.IsNaN(refLoadValue)) {
 					refLoad = DeclarationData.GetPayloadForGrossVehicleWeight(grossVehicleWeight, missionType) +
-							DeclarationData.GetPayloadForTrailerWeight(trailer.GrossVehicleWeight, trailer.CurbWeight);
+							trailers.Sum(t => DeclarationData.GetPayloadForTrailerWeight(t.TrailerGrossVehicleWeight, t.TrailerCurbWeight))
+								.DefaultIfNull(0);
 				} else {
 					refLoad = refLoadValue.SI<Kilogram>();
 				}
@@ -160,23 +177,20 @@ namespace TUGraz.VectoCore.Models.Declaration
 
 				var mission = new Mission {
 					MissionType = missionType,
-					CrossWindCorrectionParameters = row.Field<string>("crosswindcorrection" + GetMissionSuffix(missionType)),
+					CrossWindCorrectionParameters = row.Field<string>("crosswindcorrection" + GetMissionSuffix(missionType, true)),
 					CycleFile =
-						RessourceHelper.ReadStream(DeclarationData.DeclarationDataResourcePrefix + ".MissionCycles." + missionType +
+						RessourceHelper.ReadStream(DeclarationData.DeclarationDataResourcePrefix + ".MissionCycles." +
+													missionType.ToString().Replace("EMS", "") +
 													Constants.FileExtensions.CycleFile),
 					AxleWeightDistribution = GetAxleWeightDistribution(row, missionType),
 					CurbWeight = curbWeight,
 					BodyCurbWeight = body.CurbWeight,
 					BodyGrossVehicleWeight = grossVehicleWeight,
-					TrailerType = trailerType,
-					TrailerCurbWeight = trailer.CurbWeight,
-					TrailerGrossVehicleWeight = trailer.GrossVehicleWeight,
-					DeltaCdA = trailer.DeltaCrossWindArea,
+					Trailer = trailers,
 					MinLoad = 0.SI<Kilogram>(),
 					MaxLoad = maxLoad,
 					RefLoad = refLoad,
-					TrailerAxleWeightDistribution = GetTrailerAxleWeightDistribution(row, missionType),
-					CargoVolume = body.CargoVolume + trailer.CargoVolume,
+					TotalCargoVolume = body.CargoVolume + trailers.Sum(t => t.CargoVolume).DefaultIfNull(0),
 				};
 				missions.Add(mission);
 			}
@@ -191,15 +205,14 @@ namespace TUGraz.VectoCore.Models.Declaration
 			return !string.IsNullOrWhiteSpace(row.Field<string>("traileraxles" + GetMissionSuffix(missionType)));
 		}
 
-		private static double[] GetTrailerAxleWeightDistribution(DataRow row, MissionType missionType)
+		private static double GetTrailerAxleWeightDistribution(DataRow row, MissionType missionType)
 		{
 			var trailerAxles =
-				row.Field<string>("traileraxles" + GetMissionSuffix(missionType)).Split('/');
-			if (!string.IsNullOrWhiteSpace(trailerAxles[0])) {
-				var count = int.Parse(trailerAxles[1]);
-				return (trailerAxles[0].ToDouble() / 100.0 / count).Repeat(count).ToArray();
+				row.Field<string>("traileraxles" + GetMissionSuffix(missionType));
+			if (!string.IsNullOrWhiteSpace(trailerAxles)) {
+				return trailerAxles.ToDouble() / 100.0;
 			}
-			return new double[0];
+			return 0;
 		}
 
 		private static double[] GetAxleWeightDistribution(DataRow row, MissionType missionType)
@@ -209,9 +222,28 @@ namespace TUGraz.VectoCore.Models.Declaration
 					.Split('/').ToDouble().Select(x => x / 100.0).ToArray();
 		}
 
-		private static string GetMissionSuffix(MissionType missionType)
+		private static string GetMissionSuffix(MissionType missionType, bool ignoreEMS = false)
 		{
-			return missionType == MissionType.LongHaul ? "-longhaul" : "-other";
+			return "-" +
+					(missionType.IsEMS() && ignoreEMS
+						? ""
+						: (missionType.GetNonEMSMissionType() == MissionType.LongHaul ? "longhaul" : "other")) +
+					(missionType.IsEMS() ? "ems" : "");
+		}
+
+		private static MissionTrailer CreateTrailer(string trailerValue, double axleWeightShare, bool firstTrailer)
+		{
+			var trailerType = TrailterTypeHelper.Parse(trailerValue);
+			var trailer = DeclarationData.StandardBodies.Lookup(trailerType.ToString());
+			return new MissionTrailer {
+				TrailerType = trailerType,
+				TrailerWheels = trailer.Wheels,
+				TrailerAxleWeightShare = axleWeightShare,
+				TrailerCurbWeight = trailer.CurbWeight,
+				TrailerGrossVehicleWeight = trailer.GrossVehicleWeight,
+				DeltaCdA = trailer.DeltaCrossWindArea[firstTrailer ? 0 : 1],
+				CargoVolume = trailer.CargoVolume
+			};
 		}
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Models/Declaration/StandardBodies.cs b/VectoCore/VectoCore/Models/Declaration/StandardBodies.cs
index 184bf9cb48a971f2b4cbbf6b1e93c56a9199cb84..8c66898676d76c4c737461ba8a5b37b9014e08d2 100644
--- a/VectoCore/VectoCore/Models/Declaration/StandardBodies.cs
+++ b/VectoCore/VectoCore/Models/Declaration/StandardBodies.cs
@@ -29,6 +29,8 @@
 *   Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology
 */
 
+using System;
+using System.Collections.Generic;
 using System.Data;
 using System.Linq;
 using TUGraz.VectoCommon.Utils;
@@ -40,9 +42,9 @@ namespace TUGraz.VectoCore.Models.Declaration
 	{
 		public Kilogram CurbWeight;
 		public Kilogram GrossVehicleWeight;
-		public SquareMeter DeltaCrossWindArea;
+		public SquareMeter[] DeltaCrossWindArea;
 		public string Name;
-		public Wheels.Entry Wheels;
+		public List<Wheels.Entry> Wheels;
 		public CubicMeter CargoVolume;
 
 		public Kilogram MaxPayLoad
@@ -50,8 +52,13 @@ namespace TUGraz.VectoCore.Models.Declaration
 			get { return GrossVehicleWeight - CurbWeight; }
 		}
 
-		public StandardBody(string name, Kilogram curbWeight, Kilogram grossVehicleWeight, SquareMeter deltaCrossWindArea,
-			Wheels.Entry wheels, CubicMeter volume)
+		public StandardBody(string name, Kilogram curbWeight, Kilogram grossVehicleWeight, SquareMeter[] deltaCrossWindArea,
+			Wheels.Entry wheels, int axleCount, CubicMeter volume) :
+				this(name, curbWeight, grossVehicleWeight, deltaCrossWindArea,
+					wheels == null ? new List<Wheels.Entry>() : Enumerable.Repeat(wheels, axleCount).ToList(), volume) {}
+
+		private StandardBody(string name, Kilogram curbWeight, Kilogram grossVehicleWeight, SquareMeter[] deltaCrossWindArea,
+			List<Wheels.Entry> wheels, CubicMeter volume)
 		{
 			Name = name;
 			CurbWeight = curbWeight;
@@ -61,14 +68,15 @@ namespace TUGraz.VectoCore.Models.Declaration
 			CargoVolume = volume;
 		}
 
-
-		public static StandardBody operator +(StandardBody first, StandardBody second)
-		{
-			return new StandardBody(first.Name + second.Name, first.CurbWeight + second.CurbWeight,
-				first.GrossVehicleWeight + second.GrossVehicleWeight,
-				first.DeltaCrossWindArea + second.DeltaCrossWindArea,
-				null, first.CargoVolume + second.CargoVolume);
-		}
+		//public static StandardBody operator +(StandardBody first, StandardBody second)
+		//{
+		//	var wheels = new List<Wheels.Entry>(first.Wheels);
+		//	wheels.AddRange(second.Wheels);
+		//	return new StandardBody(first.Name + second.Name, first.CurbWeight + second.CurbWeight,
+		//		first.GrossVehicleWeight + second.GrossVehicleWeight,
+		//		first.DeltaCrossWindArea + second.DeltaCrossWindArea,
+		//		wheels, first.CargoVolume + second.TotalCargoVolume);
+		//}
 	}
 
 	/// <summary>
@@ -83,7 +91,7 @@ namespace TUGraz.VectoCore.Models.Declaration
 	public sealed class StandardBodies : LookupData<string, StandardBody>
 	{
 		public static readonly StandardBody Empty = new StandardBody("", 0.SI<Kilogram>(), 0.SI<Kilogram>(),
-			0.SI<SquareMeter>(), null, 0.SI<CubicMeter>());
+			new[] { 0.SI<SquareMeter>(), 0.SI<SquareMeter>() }, null, 0, 0.SI<CubicMeter>());
 
 		protected override string ResourceId
 		{
@@ -102,15 +110,23 @@ namespace TUGraz.VectoCore.Models.Declaration
 
 		protected override void ParseData(DataTable table)
 		{
-			Data = table.Rows.Cast<DataRow>().Select(k => new StandardBody(
-				k.Field<string>("name"),
-				k.ParseDoubleOrGetDefault("curbmass").SI<Kilogram>(),
-				k.ParseDoubleOrGetDefault("maxgrossmass").SI<Kilogram>(),
-				k.ParseDoubleOrGetDefault("deltacdxafortraileroperationinlonghaul").SI<SquareMeter>(),
-				!string.IsNullOrWhiteSpace(k.Field<string>("wheels"))
-					? DeclarationData.Wheels.Lookup(k.Field<string>("wheels"))
-					: null,
-				k.ParseDouble("cargovolume").SI<CubicMeter>()))
+			Data = table.Rows.Cast<DataRow>().Select(k => {
+				var deltaCdxAStr = k.Field<string>("deltacdxafortraileroperationinlonghaul");
+				var deltaCdxA = new[] { 0.SI<SquareMeter>(), 0.SI<SquareMeter>() };
+				if (!deltaCdxAStr.Equals("-")) {
+					deltaCdxA = deltaCdxAStr.Split('/').Select(x => x.ToDouble().SI<SquareMeter>()).ToArray();
+				}
+				return new StandardBody(
+					k.Field<string>("name"),
+					k.ParseDoubleOrGetDefault("curbmass").SI<Kilogram>(),
+					k.ParseDoubleOrGetDefault("maxgrossmass").SI<Kilogram>(),
+					deltaCdxA,
+					!string.IsNullOrWhiteSpace(k.Field<string>("wheels"))
+						? DeclarationData.Wheels.Lookup(k.Field<string>("wheels"))
+						: null,
+					Int32.Parse(k.Field<string>("axlecount")),
+					k.ParseDouble("cargovolume").SI<CubicMeter>());
+			})
 				.ToDictionary(kv => kv.Name);
 		}
 	}
diff --git a/VectoCore/VectoCore/Models/Declaration/WHTCCorrection.cs b/VectoCore/VectoCore/Models/Declaration/WHTCCorrection.cs
index dd4107bf9e6a2dd5346b514d7ccacf129ef6a21a..f647443cc000e6535018ee90393f963bb30a913e 100644
--- a/VectoCore/VectoCore/Models/Declaration/WHTCCorrection.cs
+++ b/VectoCore/VectoCore/Models/Declaration/WHTCCorrection.cs
@@ -62,6 +62,9 @@ namespace TUGraz.VectoCore.Models.Declaration
 			protected override void ParseData(DataTable table)
 			{
 				foreach (MissionType mission in Enum.GetValues(typeof(MissionType))) {
+					if (mission.IsEMS()) {
+						continue;
+					}
 					var values = table.Columns[mission.ToString().ToLower()].Values<string>().ToDouble().ToArray();
 					Data[mission] = new Entry { Urban = values[0], Rural = values[1], Motorway = values[2] };
 				}
diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs
index ac24271e10680039ab3f8562ff9644864d8cc49d..048c4413ce7c7a186d788d48bffc7fe8fb045cf4 100644
--- a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs
@@ -42,6 +42,7 @@ using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Configuration;
 using TUGraz.VectoCore.InputData;
 using TUGraz.VectoCore.InputData.Reader.Impl;
+using TUGraz.VectoCore.Models.Declaration;
 using TUGraz.VectoCore.Models.SimulationComponent.Data;
 using TUGraz.VectoCore.OutputData;
 using TUGraz.VectoCore.OutputData.ModFilter;
@@ -180,7 +181,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 						throw new ArgumentOutOfRangeException("CycleType unknown:" + data.Cycle.CycleType);
 				}
 
-				var validationErrors = run.Validate(_mode, data.GearboxData == null ? (GearboxType?)null : data.GearboxData.Type);
+				var validationErrors = run.Validate(_mode, data.GearboxData == null ? (GearboxType?)null : data.GearboxData.Type, data.Mission != null && data.Mission.MissionType.IsEMS());
 				if (validationErrors.Any()) {
 					throw new VectoException("Validation of Run-Data Failed: " +
 											string.Join("\n", validationErrors.Select(r => r.ErrorMessage + string.Join("; ", r.MemberNames))));
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/Gearbox/GearData.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/Gearbox/GearData.cs
index bef80d665a8268563dd21d50cb1cbe3f5a28cc3d..2f0f7332970df1762646b4b8e599fcd3709dce97 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Data/Gearbox/GearData.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/Gearbox/GearData.cs
@@ -77,17 +77,17 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox
 		// ReSharper disable once UnusedMember.Global -- used via validation
 		public static ValidationResult ValidateGearData(GearData gearData, ValidationContext context)
 		{
-			var modeService = context.GetService(typeof(ExecutionMode)) as ExecutionModeServiceContainer;
-			var mode = modeService == null ? ExecutionMode.Declaration : modeService.Mode;
-
-			var gbxTypeService = context.GetService(typeof(GearboxTypeServiceContainer)) as GearboxTypeServiceContainer;
-			var gbxType = gbxTypeService == null ? GearboxType.MT : gbxTypeService.Type;
+			var validationService =
+				context.GetService(typeof(VectoValidationModeServiceContainer)) as VectoValidationModeServiceContainer;
+			var mode = validationService != null ? validationService.Mode : ExecutionMode.Declaration;
+			var gbxType = validationService != null ? validationService.GearboxType : GearboxType.MT;
+			var emsMission = validationService != null && validationService.IsEMSCycle;
 
 			if (gearData.HasTorqueConverter) {
 				if (gearData.TorqueConverterShiftPolygon == null) {
 					return new ValidationResult("Shift Polygon for Torque Converter Gear required!");
 				}
-				var result = gearData.TorqueConverterShiftPolygon.Validate(mode, gbxType);
+				var result = gearData.TorqueConverterShiftPolygon.Validate(mode, gbxType, emsMission);
 				if (result.Any()) {
 					return new ValidationResult(string.Format("Validation of GearData failed"), result.Select(x => x.ErrorMessage));
 				}
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/Gearbox/ShiftPolygon.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/Gearbox/ShiftPolygon.cs
index 9b41a3a89c317a321258b886c7b0ba1beeb6c4a8..3069a63cae0014d01309ab42e67e4641f9f4dcd4 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Data/Gearbox/ShiftPolygon.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/Gearbox/ShiftPolygon.cs
@@ -145,11 +145,13 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox
 		// ReSharper disable once UnusedMember.Global -- used via validation
 		public static ValidationResult ValidateShiftPolygon(ShiftPolygon shiftPolygon, ValidationContext validationContext)
 		{
-			var gbxTypeService = validationContext.GetService(typeof(GearboxTypeServiceContainer)) as GearboxTypeServiceContainer;
-			var gbxType = gbxTypeService == null ? null : gbxTypeService.Type;
+			var validationService =
+				validationContext.GetService(typeof(VectoValidationModeServiceContainer)) as VectoValidationModeServiceContainer;
+			var gbxType = validationService != null ? validationService.GearboxType : null;
 
-			if (gbxType == null || gbxType.Value.AutomaticTransmission())
+			if (gbxType == null || gbxType.Value.AutomaticTransmission()) {
 				return ValidationResult.Success;
+			}
 
 			return shiftPolygon.Downshift.Pairwise(Tuple.Create)
 				.Any(
@@ -182,7 +184,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox
 				// vertical line
 				return double.MaxValue.SI<NewtonMeter>();
 			}
-			return VectoMath.Interpolate(section.Item1.AngularSpeed, section.Item2.AngularSpeed, section.Item1.Torque, 
+			return VectoMath.Interpolate(section.Item1.AngularSpeed, section.Item2.AngularSpeed, section.Item1.Torque,
 				section.Item2.Torque, inAngularVelocity);
 		}
 	}
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/GearboxData.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/GearboxData.cs
index e52acfa68889644ba9fdbe4502350739ec92d1d5..d13afec5cd6d6849eac38bbf8daf335832bd04d5 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Data/GearboxData.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/GearboxData.cs
@@ -109,13 +109,14 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 		{
 			var mode = GetExecutionMode(validationContext);
 			//var gbxType = GetGearboxType(validationContext);
+			var emsMission = GetEmsMode(validationContext);
 
 			var result = new List<ValidationResult>();
 			if (gearboxData.Type.AutomaticTransmission()) {
 				gearboxData.TorqueConverterData.RequiredSpeedRatio =
 					Math.Round(Constants.SimulationSettings.RequiredTorqueConverterSpeedRatio / gearboxData.Gears[1].Ratio *
 								gearboxData.Gears[1].TorqueConverterRatio, 4);
-				result.AddRange(gearboxData.TorqueConverterData.Validate(mode, gearboxData.Type));
+				result.AddRange(gearboxData.TorqueConverterData.Validate(mode, gearboxData.Type, emsMission));
 				//result.AddRange(gearboxData.PowershiftShiftTime.Validate(mode, gearboxData.Type));
 				//result.AddRange(gearboxData.PowershiftInertiaFactor.Validate(mode, gearboxData.Type));
 				validationContext.MemberName = "PowershiftInertiaFactor";
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/SimulationComponentData.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/SimulationComponentData.cs
index 344747dfddadb6bc78702a81a3c19675f9a47abf..6cb49c1effcb8f81571b27dc8519a560d97aa982 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Data/SimulationComponentData.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/SimulationComponentData.cs
@@ -57,9 +57,16 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 
 		protected static ExecutionMode GetExecutionMode(ValidationContext context)
 		{
-			var modeService = context.GetService(typeof(ExecutionMode)) as ExecutionModeServiceContainer;
-			return modeService == null ? ExecutionMode.Declaration : modeService.Mode;
+			var validationService =
+				context.GetService(typeof(VectoValidationModeServiceContainer)) as VectoValidationModeServiceContainer;
+			return validationService == null ? ExecutionMode.Declaration : validationService.Mode;
 		}
 
+		protected static bool GetEmsMode(ValidationContext context)
+		{
+			var validationService =
+				context.GetService(typeof(VectoValidationModeServiceContainer)) as VectoValidationModeServiceContainer;
+			return validationService != null && validationService.IsEMSCycle;
+		}
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/VehicleData.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/VehicleData.cs
index b5f7b71c78658100949956fe1a1845a818aeb9aa..b9f7ab828b2389ac04dd262bc32eabd77f12dbf6 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Data/VehicleData.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/VehicleData.cs
@@ -75,17 +75,18 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 		/// (+ Curb Weight of Standard-Body if it has one)
 		/// (+ Curb Weight of Trailer if it has one)
 		/// </summary>
-		[Required, SIRange(500, 40000)]
+		[Required, SIRange(500, 40000, emsMission: false),
+		SIRange(0, 60000, emsMission: true)]
 		public Kilogram CurbWeight { get; internal set; }
 
-
 		/// <summary>
 		/// Curb Weight of Standard-Body (if it has one)
 		/// + Curb Weight of Trailer (if it has one)
 		/// </summary>
 		public Kilogram BodyAndTrailerWeight { get; internal set; }
 
-		[Required, SIRange(0, 40000)]
+		[Required, SIRange(0, 40000, emsMission: false),
+		SIRange(0, 60000, emsMission: true)]
 		public Kilogram Loading { get; internal set; }
 
 		[SIRange(0, 500)]
@@ -95,14 +96,16 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 		/// The Gross Vehicle Weight of the Vehicle.
 		/// </summary>
 		[Required,
-		SIRange(3500, 40000, ExecutionMode.Declaration),
+		SIRange(3500, 40000, ExecutionMode.Declaration, emsMission: false),
+		SIRange(0, 60000, ExecutionMode.Declaration, emsMission: true),
 		SIRange(0, 1000000, ExecutionMode.Engineering)]
 		public Kilogram GrossVehicleWeight { get; internal set; }
 
 		/// <summary>
 		/// The Gross Vehicle Weight of the Trailer (if the vehicle has one).
 		/// </summary>
-		[Required, SIRange(0, 40000)]
+		[Required, SIRange(0, 40000, emsMission: false),
+		SIRange(0, 60000, emsMission: true)]
 		public Kilogram TrailerGrossVehicleWeight { get; internal set; }
 
 		[Required, SIRange(0.1, 0.7)]
@@ -185,6 +188,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 		public static ValidationResult ValidateVehicleData(VehicleData vehicleData, ValidationContext validationContext)
 		{
 			var mode = GetExecutionMode(validationContext);
+			var emsCycle = GetEmsMode(validationContext);
 
 			if (vehicleData.AxleData.Count < 1) {
 				return new ValidationResult("At least two axles need to be specified");
@@ -210,7 +214,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
 
 			// total gvw is limited by max gvw (40t)
 			var gvwTotal = VectoMath.Min(vehicleData.GrossVehicleWeight + vehicleData.TrailerGrossVehicleWeight,
-				Constants.SimulationSettings.MaximumGrossVehicleWeight);
+				emsCycle
+					? Constants.SimulationSettings.MaximumGrossVehicleWeightEMS
+					: Constants.SimulationSettings.MaximumGrossVehicleWeight);
 			if (mode != ExecutionMode.Declaration) {
 				return ValidationResult.Success;
 			}
diff --git a/VectoCore/VectoCore/OutputData/PDF/PDFDeclarationReport.cs b/VectoCore/VectoCore/OutputData/PDF/PDFDeclarationReport.cs
index 7ec70b93e499ff48df8fd12b3c0462a333c634b2..2c372d3fa6f3aa92cf448d6e106940770dc61b29 100644
--- a/VectoCore/VectoCore/OutputData/PDF/PDFDeclarationReport.cs
+++ b/VectoCore/VectoCore/OutputData/PDF/PDFDeclarationReport.cs
@@ -152,7 +152,7 @@ namespace TUGraz.VectoCore.OutputData.PDF
 				CreateTitlePage(Missions)
 			};
 			//tasks.AddRange(
-			pages.AddRange(Missions.OrderBy(m => m.Key)
+			pages.AddRange(Missions.Where(m => !m.Key.IsEMS()).OrderBy(m => m.Key)
 				.Select((m, i) => CreateCyclePage(m.Value, i + 2, Missions.Count + 1)));
 
 			//Task.WaitAll(tasks.Cast<Task>().ToArray());
@@ -186,7 +186,7 @@ namespace TUGraz.VectoCore.OutputData.PDF
 		{
 			var stream = new MemoryStream();
 			var resourceName = string.Format("{0}.Report.title{1}CyclesTemplate.pdf",
-				DeclarationData.DeclarationDataResourcePrefix, missions.Count);
+				DeclarationData.DeclarationDataResourcePrefix, missions.Count(m => !m.Key.IsEMS()));
 			var inputStream = RessourceHelper.ReadStream(resourceName);
 			var reader = new PdfReader(inputStream);
 			var stamper = new PdfStamper(reader, stream);
@@ -208,9 +208,10 @@ namespace TUGraz.VectoCore.OutputData.PDF
 			pdfFields.SetField("PageNr", string.Format("Page {0} of {1}", 1, missions.Count + 1));
 
 			var i = 1;
-			foreach (var results in missions.Values.OrderBy(m => m.Mission.MissionType)) {
-				var trailerSuffix = results.Mission.TrailerType != TrailerType.None
-					? string.Format(" with {0} Trailer", results.Mission.TrailerType)
+			foreach (var results in missions.Where(m => !m.Key.IsEMS()).Select(m => m.Value).OrderBy(m => m.Mission.MissionType)) {
+				var trailerSuffix = results.Mission.Trailer.Count > 0
+					? string.Format(" with {0} Trailer",
+						string.Join(" + ", results.Mission.Trailer.Select(t => t.TrailerType.ToString())))
 					: "";
 				pdfFields.SetField("Mission" + i, results.Mission.MissionType + trailerSuffix);
 
@@ -244,7 +245,7 @@ namespace TUGraz.VectoCore.OutputData.PDF
 			img.SetAbsolutePosition(360, 75);
 			content.AddImage(img);
 
-			img = GetVehicleImage(Segment, TrailerType.None);
+			img = GetVehicleImage(Segment, new List<MissionTrailer>());
 			img.ScaleAbsolute(180, 50);
 			img.SetAbsolutePosition(30, 475);
 			content.AddImage(img);
@@ -284,8 +285,9 @@ namespace TUGraz.VectoCore.OutputData.PDF
 			pdfFields.SetField("HDVclass", "HDV Class " + Segment.VehicleClass.GetClassNumber());
 			pdfFields.SetField("PageNr", string.Format("Page {0} of {1}", currentPageNr, pageCount));
 
-			var trailerSuffix = results.Mission.TrailerType != TrailerType.None
-				? string.Format(" with {0} Trailer", results.Mission.TrailerType)
+			var trailerSuffix = results.Mission.Trailer.Count > 0
+				? string.Format(" with {0} Trailer",
+					string.Join(" + ", results.Mission.Trailer.Select(t => t.TrailerType.ToString())))
 				: "";
 			pdfFields.SetField("Mission", results.Mission.MissionType + trailerSuffix);
 
@@ -310,7 +312,7 @@ namespace TUGraz.VectoCore.OutputData.PDF
 
 			var content = stamper.GetOverContent(1);
 
-			var img = GetVehicleImage(Segment, results.Mission.TrailerType);
+			var img = GetVehicleImage(Segment, results.Mission.Trailer);
 			img.ScaleAbsolute(180, 50);
 			img.SetAbsolutePosition(600, 475);
 			content.AddImage(img);
@@ -613,31 +615,34 @@ namespace TUGraz.VectoCore.OutputData.PDF
 		/// <summary>
 		/// Gets the appropriate vehicle image.
 		/// </summary>
-		private static Image GetVehicleImage(Segment segment, TrailerType trailerType)
+		private static Image GetVehicleImage(Segment segment, List<MissionTrailer> trailerType)
 		{
-			var name = "Undef.png";
-			var withTrailer = trailerType != TrailerType.None;
+			var name = "Undef";
+			var withTrailer = trailerType.Count > 0;
+			var emsTrailer = trailerType.Count > 1;
 			switch (segment.VehicleClass) {
 				case VehicleClass.Class1:
 				case VehicleClass.Class2:
 				case VehicleClass.Class3:
-					name = withTrailer ? "4x2rt.png" : "4x2r.png";
+					name = withTrailer ? "4x2rt" : "4x2r";
 					break;
 				case VehicleClass.Class4:
-					name = withTrailer ? "4x2rt.png" : "4x2r.png";
+					name = withTrailer ? "4x2rt" : "4x2r";
 					break;
 				case VehicleClass.Class5:
-					name = "4x2tt.png";
+					name = "4x2tt" + (emsTrailer ? "_ems" : "");
 					break;
 				case VehicleClass.Class9:
-					name = withTrailer ? "6x2rt.png" : "6x2r.png";
+				case VehicleClass.Class11:
+					name = withTrailer ? "6x2rt" : "6x2r" + (emsTrailer ? "_ems" : "");
 					break;
 				case VehicleClass.Class10:
-					name = "6x2tt.png";
+				case VehicleClass.Class12:
+					name = "6x2tt" + (emsTrailer ? "_ems" : "");
 					break;
 			}
 
-			var hdvClassImagePath = DeclarationData.DeclarationDataResourcePrefix + ".Report." + name;
+			var hdvClassImagePath = DeclarationData.DeclarationDataResourcePrefix + ".Report." + name + ".png";
 			var hdvClassImage = RessourceHelper.ReadStream(hdvClassImagePath);
 			return Image.GetInstance(hdvClassImage);
 		}
diff --git a/VectoCore/VectoCore/Resources/Declaration/Body_Trailers_Weights.csv b/VectoCore/VectoCore/Resources/Declaration/Body_Trailers_Weights.csv
index f48c09b984c9c1a378e1ce74be9b1e8d010a2cf6..4662ec2f104a65e2b9ed86365df5d5d6a38b8a9f 100644
--- a/VectoCore/VectoCore/Resources/Declaration/Body_Trailers_Weights.csv
+++ b/VectoCore/VectoCore/Resources/Declaration/Body_Trailers_Weights.csv
@@ -1,12 +1,12 @@
-name,curb mass,max gross mass,delta CdxA for trailer operation in long haul,Wheels,cargo volume,remark
-#,[kg],[kg],[m淫,,[m設,
-B1,1600,-,-,,36.5,---
-B2,1900,-,-,,45.2,---
-B3,2000,-,-,,47.7,---
-B4,2100,-,-,,49.4,---
-B5,2200,-,-,,51.9,"""B6"" changed to ""B5"" as ""old B5"" not applicable anymore"
-T1,3400,10500,0.6,235/75 R17.5,39.8,
-T2,5400,18000,0.6,385/65 R22.5,49.5,
-ST1,7500,24000,-,,91.0,relevant for fully loaded is GVM of tractor semitrailer combination = 40000kg
-ST1-v2,7500,-,-,,91.0,
-Dolly,2500,-,-,,0.0,only relevant for EMS
+name   , curb mass , max gross mass , delta CdxA for trailer operation in long haul , Axle count , Wheels       , cargo volume , remark
+#      , [kg]      , [kg]           , [m淫 first trailer/second+ trailer (EMS)      , #          ,              , [m設         ,
+B1     , 1600      , -              , -                                             , 0          ,              , 36.5         , ---
+B2     , 1900      , -              , -                                             , 0          ,              , 45.2         , ---
+B3     , 2000      , -              , -                                             , 0          ,              , 47.7         , ---
+B4     , 2100      , -              , -                                             , 0          ,              , 49.4         , ---
+B5     , 2200      , -              , -                                             , 0          ,              , 51.9         , """B6"" changed to ""B5"" as ""old B5"" not applicable anymore"
+T1     , 3400      , 10500          , 1.3/0.6                                       , 2          , 235/75 R17.5 , 39.8         ,
+T2     , 5400      , 18000          , 1.5/0.6                                       , 2          , 385/65 R22.5 , 49.5         ,
+ST1    , 7500      , 24000          , 0/1.2                                         , 3          , 385/65 R22.5 , 91.0         , relevant for fully loaded is GVM of tractor semitrailer combination = 40000kg
+ST1-v2 , 7500      , -              , 0/1.2                                         , 3          , 385/65 R22.5 , 91.0         ,
+Dolly  , 2500      , 12000          , 0/0                                           , 2          , 315/70 R22.5 , 0.0          , only relevant for EMS
diff --git a/VectoCore/VectoCore/Resources/Declaration/SegmentTable.csv b/VectoCore/VectoCore/Resources/Declaration/SegmentTable.csv
index c211e5d6d572c30340bd44cfd4e9a90ef4deccd8..fb5770455265888e6250f4920c43056e4e162bbc 100644
--- a/VectoCore/VectoCore/Resources/Declaration/SegmentTable.csv
+++ b/VectoCore/VectoCore/Resources/Declaration/SegmentTable.csv
@@ -1,29 +1,29 @@
-Valid,Vehicle Category,Axle Conf.,GVW_Min,GVW_Max,HDV class,Body,Trailer,Semitrailer,.vacc file,Cross Wind Correction - Long haul,Cross Wind Correction - Other,Truck Axles - Long haul,Truck Axles - Other,Trailer Axles - Long haul,Trailer Axles - Other,Long haul,Regional delivery,Urban delivery,Municipal utility,Construction,Heavy Urban,Urban,Suburban,Interurban,Coach,CdxA_Construction
-# @@@quam below 7.5t is not considered by VECTO atm. @@@ 0    ,RigidTruck      ,4x2       ,0      ,7.5    ,0        ,    ,       ,           ,Truck.vacc,                                 ,RigidSolo                    ,                       ,                   ,                         ,                     ,-        ,pc(R)            ,pc(R)         ,-                ,-           ,-          ,-    ,-       ,-         ,-,     ,
-1    ,RigidTruck      ,4x2       ,7.5    ,10     ,1        ,B1  ,       ,           ,Truck.vacc,                                 ,RigidSolo                    ,                       ,45/55              ,                         ,                     ,-        ,pc(R)            ,pc(R)         ,-                ,-           ,-          ,-    ,-       ,-         ,-     ,
-1    ,Tractor         ,4x2       ,7.5    ,10     ,1        ,B1  ,       ,           ,Truck.vacc,                                 ,RigidSolo                    ,                       ,45/55              ,                         ,                     ,-        ,pc(R)            ,pc(R)         ,-                ,-           ,-          ,-    ,-       ,-         ,-     ,
-1    ,RigidTruck      ,4x2       ,10     ,12     ,2        ,B2  ,T1     ,           ,Truck.vacc,RigidTrailer                     ,RigidSolo                    ,22.5/32.5              ,45/55              ,45/1                     ,                     ,pc(R)    ,pc(R)            ,pc(R)         ,-                ,-           ,-          ,-    ,-       ,-         ,-     ,
-1    ,Tractor         ,4x2       ,10     ,12     ,2        ,B2  ,T1     ,           ,Truck.vacc,RigidTrailer                     ,RigidSolo                    ,22.5/32.5              ,45/55              ,45/1                     ,                     ,pc(R)    ,pc(R)            ,pc(R)         ,-                ,-           ,-          ,-    ,-       ,-         ,-     ,
-1    ,RigidTruck      ,4x2       ,12     ,16     ,3        ,B3  ,       ,           ,Truck.vacc,                                 ,RigidSolo                    ,                       ,40/60              ,                         ,                     ,-        ,pc(R)            ,pc(R)         ,-                ,-           ,-          ,-    ,-       ,-         ,-     ,
-1    ,Tractor         ,4x2       ,12     ,16     ,3        ,B3  ,       ,           ,Truck.vacc,                                 ,RigidSolo                    ,                       ,40/60              ,                         ,                     ,-        ,pc(R)            ,pc(R)         ,-                ,-           ,-          ,-    ,-       ,-         ,-     ,
-1    ,RigidTruck      ,4x2       ,16     ,99     ,4        ,B4  ,T2     ,           ,Truck.vacc,RigidTrailer                     ,RigidSolo                    ,20/30                  ,45/55              ,50/2                     ,                     ,14000    ,4400             ,-             ,4400             ,-           ,-          ,-    ,-       ,-         ,-     ,
-1    ,Tractor         ,4x2       ,16     ,99     ,5        ,    ,       ,ST1        ,Truck.vacc,TractorSemitrailer               ,TractorSemitrailer           ,20/25                  ,25/25              ,55/3                     ,50/3                 ,19300    ,12900            ,-             ,-                ,-           ,-          ,-    ,-       ,-         ,-     ,
-0    ,RigidTruck      ,4x4       ,7.5    ,16     ,6        ,    ,       ,           ,Truck.vacc,                                 ,RigidSolo                    ,                       ,                   ,                         ,                     ,-        ,-                ,-             ,???              ,???         ,-          ,-    ,-       ,-         ,-     ,
-0    ,RigidTruck      ,4x4       ,16     ,99     ,7        ,    ,       ,           ,Truck.vacc,                                 ,RigidSolo                    ,                       ,                   ,                         ,                     ,-        ,-                ,-             ,-                ,???         ,-          ,-    ,-       ,-         ,-     ,
-0    ,Tractor         ,4x4       ,16     ,99     ,8        ,    ,       ,           ,Truck.vacc,                                 ,TractorSemitrailer           ,                       ,                   ,                         ,                     ,-        ,-                ,-             ,-                ,???         ,-          ,-    ,-       ,-         ,-     ,
-1    ,RigidTruck      ,6x2       ,0      ,99     ,9        ,B5  ,T2     ,           ,Truck.vacc,RigidTrailer                     ,RigidSolo                    ,20/30/15               ,35/40/25           ,35/2                     ,                     ,19300    ,7100             ,-             ,7100             ,-           ,-          ,-    ,-       ,-         ,-     ,
-1    ,Tractor         ,6x2       ,0      ,99     ,10       ,    ,       ,ST1        ,Truck.vacc,TractorSemitrailer               ,TractorSemitrailer           ,15/10/20               ,20/10/20           ,55/3                     ,50/3                 ,19300    ,12900            ,-             ,-                ,-           ,-          ,-    ,-       ,-         ,-     ,
-1    ,RigidTruck      ,6x4       ,0      ,99     ,11       ,B5  ,T2     ,           ,Truck.vacc,RigidTrailer                     ,RigidSolo                    ,20/22.5/22.5           ,35/35/30           ,35/2                     ,                     ,19300    ,7100             ,-             ,7100             ,7100        ,-          ,-    ,-       ,-         ,-     ,8.5
-1    ,Tractor         ,6x4       ,0      ,99     ,12       ,    ,       ,ST1        ,Truck.vacc,TractorSemitrailer               ,TractorSemitrailer           ,15/15/15               ,20/15/15           ,55/3                     ,50/3                 ,19300    ,12900            ,-             ,-                ,12900       ,-          ,-    ,-       ,-         ,-     ,8.8
-0    ,RigidTruck      ,6x6       ,0      ,99     ,13       ,    ,       ,           ,Truck.vacc,                                 ,RigidSolo                    ,                       ,                   ,                         ,                     ,-        ,-                ,-             ,-                ,???         ,-          ,-    ,-       ,-         ,-     ,
-0    ,Tractor         ,6x6       ,0      ,99     ,14       ,    ,       ,           ,Truck.vacc,                                 ,TractorSemitrailer           ,                       ,                   ,                         ,                     ,-        ,-                ,-             ,-                ,???         ,-          ,-    ,-       ,-         ,-     ,
-0    ,RigidTruck      ,8x2       ,0      ,99     ,15       ,    ,       ,           ,Truck.vacc,                                 ,RigidSolo                    ,                       ,                   ,                         ,                     ,-        ,???              ,-             ,-                ,-           ,-          ,-    ,-       ,-         ,-     ,
-1    ,RigidTruck      ,8x4       ,0      ,99     ,16       ,    ,       ,           ,Truck.vacc,                                 ,RigidSolo                    ,                       ,25/25/25/25        ,                         ,                     ,-        ,-                ,-             ,-                ,12900       ,-          ,-    ,-       ,-         ,-     ,
-0    ,RigidTruck      ,8x6       ,0      ,99     ,17       ,    ,       ,           ,Truck.vacc,                                 ,RigidSolo                    ,                       ,                   ,                         ,                     ,-        ,-                ,-             ,-                ,???         ,-          ,-    ,-       ,-         ,-     ,9.0
-0    ,RigidTruck      ,8x8       ,0      ,99     ,17       ,    ,       ,           ,Truck.vacc,                                 ,RigidSolo                    ,                       ,                   ,                         ,                     ,-        ,-                ,-             ,-                ,???         ,-          ,-    ,-       ,-         ,-     ,
-0    ,CityBus         ,4x2       ,0      ,18     ,B1       ,    ,       ,           ,          ,                                 ,CoachBus                     ,                       ,                   ,                         ,                     ,-        ,-                ,-             ,-                ,-           ,???        ,???  ,???     ,-         ,-     ,
-0    ,InterurbanBus   ,4x2       ,0      ,18     ,B2       ,    ,       ,           ,          ,                                 ,CoachBus                     ,                       ,                   ,                         ,                     ,-        ,-                ,-             ,-                ,-           ,-          ,-    ,-       ,???       ,-     ,
-0    ,Coach           ,4x2       ,0      ,18     ,B3       ,    ,       ,           ,          ,                                 ,CoachBus                     ,                       ,                   ,                         ,                     ,-        ,-                ,-             ,-                ,-           ,-          ,-    ,-       ,-         ,???   ,
-0    ,CityBus         ,6x2       ,18     ,99     ,B4       ,    ,       ,           ,          ,                                 ,CoachBus                     ,                       ,                   ,                         ,                     ,-        ,-                ,-             ,-                ,-           ,???        ,???  ,???     ,-         ,-     ,
-0    ,InterurbanBus   ,6x2       ,18     ,99     ,B5       ,    ,       ,           ,          ,                                 ,CoachBus                     ,                       ,                   ,                         ,                     ,-        ,-                ,-             ,-                ,-           ,-          ,-    ,-       ,???       ,-     ,
-0    ,Coach           ,6x2       ,18     ,99     ,B6       ,    ,       ,           ,          ,                                 ,CoachBus                     ,                       ,                   ,                         ,                     ,-        ,-                ,-             ,-                ,-           ,-          ,-    ,-       ,-         ,???   ,
\ No newline at end of file
+Valid,Vehicle Category,Axle Conf.,GVW_Min,GVW_Max,HDV class,Body,Trailer,EMS    ,.vacc file,Cross Wind Correction - Long haul,Cross Wind Correction - EMS,Cross Wind Correction - Other,Truck Axles - Long haul,Truck Axles - Other,Trailer Axles - Long haul,Trailer Axles - Other,Truck Axles - Long haul EMS,Truck Axles - Other EMS  ,Trailer Axles - Long haul EMS,Trailer Axles - Other EMS  ,Long haul,Long haul EMS,Regional delivery,Regional delivery EMS,Urban delivery,Municipal utility,Construction,Heavy Urban,Urban,Suburban,Interurban,Coach,CdxA_Construction
+## 0    ,RigidTruck      ,4x2       ,0      ,7.5    ,0        ,    ,       ,       ,Truck.vacc,                                 ,                           ,RigidSolo                    ,                       ,                   ,                         ,                     ,                           ,                         ,                             ,                           ,-        ,             ,pc(R)            ,                     ,pc(R)         ,-                ,-           ,-          ,-    ,-       ,-         ,-,     ,
+1    ,RigidTruck      ,4x2       ,7.5    ,10     ,1        ,B1  ,       ,       ,Truck.vacc,                                 ,                           ,RigidSolo                    ,                       ,45/55              ,                         ,                     ,                           ,                         ,                             ,                           ,-        ,-            ,pc(R)            ,-                    ,pc(R)         ,-                ,-           ,-          ,-    ,-       ,-         ,-     ,
+1    ,Tractor         ,4x2       ,7.5    ,10     ,1        ,B1  ,       ,       ,Truck.vacc,                                 ,                           ,RigidSolo                    ,                       ,45/55              ,                         ,                     ,                           ,                         ,                             ,                           ,-        ,-            ,pc(R)            ,-                    ,pc(R)         ,-                ,-           ,-          ,-    ,-       ,-         ,-     ,
+1    ,RigidTruck      ,4x2       ,10     ,12     ,2        ,B2  ,T1     ,       ,Truck.vacc,RigidTrailer                     ,                           ,RigidSolo                    ,22.5/32.5              ,45/55              ,45                       ,                     ,                           ,                         ,                             ,                           ,pc(R)    ,-            ,pc(R)            ,-                    ,pc(R)         ,-                ,-           ,-          ,-    ,-       ,-         ,-     ,
+1    ,Tractor         ,4x2       ,10     ,12     ,2        ,B2  ,T1     ,       ,Truck.vacc,RigidTrailer                     ,                           ,RigidSolo                    ,22.5/32.5              ,45/55              ,45                       ,                     ,                           ,                         ,                             ,                           ,pc(R)    ,-            ,pc(R)            ,-                    ,pc(R)         ,-                ,-           ,-          ,-    ,-       ,-         ,-     ,
+1    ,RigidTruck      ,4x2       ,12     ,16     ,3        ,B3  ,       ,       ,Truck.vacc,                                 ,                           ,RigidSolo                    ,                       ,40/60              ,                         ,                     ,                           ,                         ,                             ,                           ,-        ,-            ,pc(R)            ,-                    ,pc(R)         ,-                ,-           ,-          ,-    ,-       ,-         ,-     ,
+1    ,Tractor         ,4x2       ,12     ,16     ,3        ,B3  ,       ,       ,Truck.vacc,                                 ,                           ,RigidSolo                    ,                       ,40/60              ,                         ,                     ,                           ,                         ,                             ,                           ,-        ,-            ,pc(R)            ,-                    ,pc(R)         ,-                ,-           ,-          ,-    ,-       ,-         ,-     ,
+1    ,RigidTruck      ,4x2       ,16     ,99     ,4        ,B4  ,T2     ,       ,Truck.vacc,RigidTrailer                     ,                           ,RigidSolo                    ,20/30                  ,45/55              ,50                       ,                     ,                           ,                         ,                             ,                           ,14000    ,-            ,4400             ,-                    ,-             ,4400             ,-           ,-          ,-    ,-       ,-         ,-     ,
+1    ,Tractor         ,4x2       ,16     ,99     ,5        ,    ,ST1    ,ST1+T2 ,Truck.vacc,TractorSemitrailer               ,RigidTrailer               ,TractorSemitrailer           ,20/25                  ,25/25              ,55                       ,50                   ,15/20                      ,17.5/25                  ,40/25                        ,35/22.5                    ,19300    ,26500        ,12900            ,17500                ,-             ,-                ,-           ,-          ,-    ,-       ,-         ,-     ,
+0    ,RigidTruck      ,4x4       ,7.5    ,16     ,6        ,    ,       ,       ,Truck.vacc,                                 ,                           ,RigidSolo                    ,                       ,                   ,                         ,                     ,                           ,                         ,                             ,                           ,-        ,-            ,-                ,-                    ,-             ,???              ,???         ,-          ,-    ,-       ,-         ,-     ,
+0    ,RigidTruck      ,4x4       ,16     ,99     ,7        ,    ,       ,       ,Truck.vacc,                                 ,                           ,RigidSolo                    ,                       ,                   ,                         ,                     ,                           ,                         ,                             ,                           ,-        ,-            ,-                ,-                    ,-             ,-                ,???         ,-          ,-    ,-       ,-         ,-     ,
+0    ,Tractor         ,4x4       ,16     ,99     ,8        ,    ,       ,       ,Truck.vacc,                                 ,                           ,TractorSemitrailer           ,                       ,                   ,                         ,                     ,                           ,                         ,                             ,                           ,-        ,-            ,-                ,-                    ,-             ,-                ,???         ,-          ,-    ,-       ,-         ,-     ,
+1    ,RigidTruck      ,6x2       ,0      ,99     ,9        ,B5  ,T2     ,D+ST1  ,Truck.vacc,RigidTrailer                     ,RigidTrailer               ,RigidSolo                    ,20/30/15               ,35/40/25           ,35                       ,                     ,15/20/10                   ,17.5/20/10               ,22.5/32.5                    ,22.5/30                    ,19300    ,26500        ,7100             ,17500                ,-             ,7100             ,-           ,-          ,-    ,-       ,-         ,-     ,
+1    ,Tractor         ,6x2       ,0      ,99     ,10       ,    ,ST1    ,ST1+T2 ,Truck.vacc,TractorSemitrailer               ,RigidTrailer               ,TractorSemitrailer           ,15/10/20               ,20/10/20           ,55                       ,50                   ,12.5/15/10                 ,15/15/10                 ,37.5/25                      ,35/25                      ,19300    ,26500        ,12900            ,17500                ,-             ,-                ,-           ,-          ,-    ,-       ,-         ,-     ,
+1    ,RigidTruck      ,6x4       ,0      ,99     ,11       ,B5  ,T2     ,D+ST1  ,Truck.vacc,RigidTrailer                     ,RigidTrailer               ,RigidSolo                    ,20/22.5/22.5           ,35/35/30           ,35                       ,                     ,15/20/10                   ,17.5/20/10               ,22.5/32.5                    ,22.5/30                    ,19300    ,26500        ,7100             ,17500                ,-             ,7100             ,7100        ,-          ,-    ,-       ,-         ,-     ,8.5
+1    ,Tractor         ,6x4       ,0      ,99     ,12       ,    ,ST1    ,ST1+T2 ,Truck.vacc,TractorSemitrailer               ,RigidTrailer               ,TractorSemitrailer           ,15/15/15               ,20/15/15           ,55                       ,50                   ,12.5/15/10                 ,15/15/10                 ,37.5/25                      ,35/25                      ,19300    ,26500        ,12900            ,17500                ,-             ,-                 ,12900       ,-          ,-    ,-       ,-         ,-     ,8.8
+0    ,RigidTruck      ,6x6       ,0      ,99     ,13       ,    ,       ,       ,Truck.vacc,                                 ,                           ,RigidSolo                    ,                       ,                   ,                         ,                     ,                           ,                         ,                             ,                           ,-        ,-            ,-                ,-                    ,-             ,-                ,???         ,-          ,-    ,-       ,-         ,-     ,
+0    ,Tractor         ,6x6       ,0      ,99     ,14       ,    ,       ,       ,Truck.vacc,                                 ,                           ,TractorSemitrailer           ,                       ,                   ,                         ,                     ,                           ,                         ,                             ,                           ,-        ,-            ,-                ,-                    ,-             ,-                ,???         ,-          ,-    ,-       ,-         ,-     ,
+0    ,RigidTruck      ,8x2       ,0      ,99     ,15       ,    ,       ,       ,Truck.vacc,                                 ,                           ,RigidSolo                    ,                       ,                   ,                         ,                     ,                           ,                         ,                             ,                           ,-        ,-            ,???              ,-                    ,-             ,-                ,-           ,-          ,-    ,-       ,-         ,-     ,
+1    ,RigidTruck      ,8x4       ,0      ,99     ,16       ,    ,       ,       ,Truck.vacc,                                 ,                           ,RigidSolo                    ,                       ,25/25/25/25        ,                         ,                     ,                           ,                         ,                             ,                           ,-        ,-            ,-                ,-                    ,-             ,-                ,12900       ,-          ,-    ,-       ,-         ,-     ,
+0    ,RigidTruck      ,8x6       ,0      ,99     ,17       ,    ,       ,       ,Truck.vacc,                                 ,                           ,RigidSolo                    ,                       ,                   ,                         ,                     ,                           ,                         ,                             ,                           ,-        ,-            ,-                ,-                    ,-             ,-                ,???         ,-          ,-    ,-       ,-         ,-     ,9.0
+0    ,RigidTruck      ,8x8       ,0      ,99     ,17       ,    ,       ,       ,Truck.vacc,                                 ,                           ,RigidSolo                    ,                       ,                   ,                         ,                     ,                           ,                         ,                             ,                           ,-        ,-            ,-                ,-                    ,-             ,-                ,???         ,-          ,-    ,-       ,-         ,-     ,
+0    ,CityBus         ,4x2       ,0      ,18     ,B1       ,    ,       ,       ,          ,                                 ,                           ,CoachBus                     ,                       ,                   ,                         ,                     ,                           ,                         ,                             ,                           ,-        ,-            ,-                ,-                    ,-             ,-                ,-           ,???        ,???  ,???     ,-         ,-     ,
+0    ,InterurbanBus   ,4x2       ,0      ,18     ,B2       ,    ,       ,       ,          ,                                 ,                           ,CoachBus                     ,                       ,                   ,                         ,                     ,                           ,                         ,                             ,                           ,-        ,-            ,-                ,-                    ,-             ,-                ,-           ,-          ,-    ,-       ,???       ,-     ,
+0    ,Coach           ,4x2       ,0      ,18     ,B3       ,    ,       ,       ,          ,                                 ,                           ,CoachBus                     ,                       ,                   ,                         ,                     ,                           ,                         ,                             ,                           ,-        ,-            ,-                ,-                    ,-             ,-                ,-           ,-          ,-    ,-       ,-         ,???   ,
+0    ,CityBus         ,6x2       ,18     ,99     ,B4       ,    ,       ,       ,          ,                                 ,                           ,CoachBus                     ,                       ,                   ,                         ,                     ,                           ,                         ,                             ,                           ,-        ,-            ,-                ,-                    ,-             ,-                ,-           ,???        ,???  ,???     ,-         ,-     ,
+0    ,InterurbanBus   ,6x2       ,18     ,99     ,B5       ,    ,       ,       ,          ,                                 ,                           ,CoachBus                     ,                       ,                   ,                         ,                     ,                           ,                         ,                             ,                           ,-        ,-            ,-                ,-                    ,-             ,-                ,-           ,-          ,-    ,-       ,???       ,-     ,
+0    ,Coach           ,6x2       ,18     ,99     ,B6       ,    ,       ,       ,          ,                                 ,                           ,CoachBus                     ,                       ,                   ,                         ,                     ,                           ,                         ,                             ,                           ,-        ,-            ,-                ,-                    ,-             ,-                ,-           ,-          ,-    ,-       ,-         ,???   ,
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Resources/Declaration/VAUX/ES-Tech.csv b/VectoCore/VectoCore/Resources/Declaration/VAUX/ES-Tech.csv
index 699348660812e4f0122fc0040cc06431ca267e9a..74a7d9a7ab4797eea65807e4a5ac7b7b22d54d6c 100644
--- a/VectoCore/VectoCore/Resources/Declaration/VAUX/ES-Tech.csv
+++ b/VectoCore/VectoCore/Resources/Declaration/VAUX/ES-Tech.csv
@@ -1,3 +1,3 @@
-Technology, Long haul, Regional delivery, Urban delivery, Municipal utility, Construction
-Standard technology, 1200, 1000, 1000, 1000, 1000
-"Standard technology - LED headlights, all", 1150, 950, 950, 950, 950
+Technology                                       , Long haul , Regional delivery , Urban delivery , Municipal utility , Construction
+Standard technology                              , 1200      , 1000              , 1000           , 1000              , 1000
+"Standard technology - LED headlights, all"      , 1150      , 950               , 950            , 950               , 950
diff --git a/VectoCore/VectoCore/Resources/Declaration/VAUX/Fan-Tech.csv b/VectoCore/VectoCore/Resources/Declaration/VAUX/Fan-Tech.csv
index 2b84f3480cf73f4dcb2fb9516af33baebfeddc17..2e1f9ace7e8cfb474600b9563d26d94e7514b040 100644
--- a/VectoCore/VectoCore/Resources/Declaration/VAUX/Fan-Tech.csv
+++ b/VectoCore/VectoCore/Resources/Declaration/VAUX/Fan-Tech.csv
@@ -1,12 +1,12 @@
-Technology,Long haul,Regional delivery,Urban delivery,Municipal utility,Construction
-Crankshaft mounted - Electronically controlled visco clutch,618,671,516,566,1037
-Crankshaft mounted - Bimetallic controlled visco clutch,818,871,676,766,1277
-Crankshaft mounted - Discrete step clutch,668,721,616,616,1157
-Crankshaft mounted - On/off clutch,718,771,666,666,1237
-Belt driven or driven via transm. - Electronically controlled visco clutch,989,1044,833,933,1478
-Belt driven or driven via transm. - Bimetallic controlled visco clutch,1189,1244,993,1133,1718
-Belt driven or driven via transm. - Discrete step clutch,1039,1094,983,983,1598
-Belt driven or driven via transm. - On/off clutch,1089,1144,1033,1033,1678
-Hydraulic driven - Variable displacement pump,938,1155,832,917,1872
-Hydraulic driven - Constant displacement pump,1200,1400,1000,1100,2300
-Hydraulic driven - Electronically controlled,700,800,600,600,1400
+Technology                                                                 , Long haul , Regional delivery , Urban delivery , Municipal utility , Construction
+Crankshaft mounted - Electronically controlled visco clutch                , 618       , 671               , 516            , 566               , 1037
+Crankshaft mounted - Bimetallic controlled visco clutch                    , 818       , 871               , 676            , 766               , 1277
+Crankshaft mounted - Discrete step clutch                                  , 668       , 721               , 616            , 616               , 1157
+Crankshaft mounted - On/off clutch                                         , 718       , 771               , 666            , 666               , 1237
+Belt driven or driven via transm. - Electronically controlled visco clutch , 989       , 1044              , 833            , 933               , 1478
+Belt driven or driven via transm. - Bimetallic controlled visco clutch     , 1189      , 1244              , 993            , 1133              , 1718
+Belt driven or driven via transm. - Discrete step clutch                   , 1039      , 1094              , 983            , 983               , 1598
+Belt driven or driven via transm. - On/off clutch                          , 1089      , 1144              , 1033           , 1033              , 1678
+Hydraulic driven - Variable displacement pump                              , 938       , 1155              , 832            , 917               , 1872
+Hydraulic driven - Constant displacement pump                              , 1200      , 1400              , 1000           , 1100              , 2300
+Hydraulic driven - Electronically controlled                               , 700       , 800               , 600            , 600               , 1400
diff --git a/VectoCore/VectoCore/Resources/Declaration/VAUX/HVAC-Table.csv b/VectoCore/VectoCore/Resources/Declaration/VAUX/HVAC-Table.csv
index 93962b78bbd055128725016421f4585e976ee00c..faddf16733ed5d12e1ec51045ec4f3b157038405 100644
--- a/VectoCore/VectoCore/Resources/Declaration/VAUX/HVAC-Table.csv
+++ b/VectoCore/VectoCore/Resources/Declaration/VAUX/HVAC-Table.csv
@@ -1,11 +1,11 @@
-HDV Class,Long haul,Regional delivery,Urban delivery,Municipal utility,Construction
-1,,150,150,,
-2,200,200,150,,
-3,,200,150,,
-4,350,200,,300,
-5,350,200,,,
-9,350,200,,300,
-10,350,200,,,
-11,350,200,,300,200
-12,350,200,,,200
-16,,,,,200
+HDV Class , Long haul , Regional delivery , Urban delivery , Municipal utility , Construction
+1         ,           , 150               , 150            ,                   ,
+2         , 200       , 200               , 150            ,                   ,
+3         ,           , 200               , 150            ,                   ,
+4         , 350       , 200               ,                , 300               ,
+5         , 350       , 200               ,                ,                   ,
+9         , 350       , 200               ,                , 300               ,
+10        , 350       , 200               ,                ,                   ,
+11        , 350       , 200               ,                , 300               , 200
+12        , 350       , 200               ,                ,                   , 200
+16        ,           ,                   ,                ,                   , 200
diff --git a/VectoCore/VectoCore/Resources/Declaration/VAUX/PS-Table.csv b/VectoCore/VectoCore/Resources/Declaration/VAUX/PS-Table.csv
index 916cf5a81a11dbad8fac464eb74e0b6622a58bf4..69050d1fedbf453aee5ff97a079a77cce840a892 100644
--- a/VectoCore/VectoCore/Resources/Declaration/VAUX/PS-Table.csv
+++ b/VectoCore/VectoCore/Resources/Declaration/VAUX/PS-Table.csv
@@ -1,29 +1,29 @@
-Technology,Long Haul,Regional Delivery,Urban  Delivery,Municipal utility,Construction
-Small,1400,1300,1200,1200,1300
-Small + ESS,900,800,800,800,800
-Small + visco clutch,800,700,700,700,700
-Small + mech. clutch,600,600,650,650,600
-Small + ESS + AMS,500,400,500,500,400
-Small + visco clutch + AMS,400,300,400,400,300
-Small + mech. clutch + AMS,200,200,350,350,200
-Medium Supply 1-stage,1600,1400,1350,1350,1500
-Medium Supply 1-stage + ESS,1000,900,900,900,900
-Medium Supply 1-stage + visco clutch,850,800,800,800,750
-Medium Supply 1-stage + mech. clutch,600,550,550,550,600
-Medium Supply 1-stage + ESS + AMS,600,700,700,700,500
-Medium Supply 1-stage + visco clutch + AMS,450,600,600,600,350
-Medium Supply 1-stage + mech. clutch + AMS,200,350,350,350,200
-Medium Supply 2-stage,2100,1750,1700,1700,2100
-Medium Supply 2-stage + ESS,1100,1050,1000,1000,1000
-Medium Supply 2-stage + visco clutch,1000,850,800,800,900
-Medium Supply 2-stage + mech. clutch,700,650,600,600,800
-Medium Supply 2-stage + ESS + AMS,700,850,800,800,500
-Medium Supply 2-stage + visco clutch + AMS,600,650,600,600,400
-Medium Supply 2-stage + mech. clutch + AMS,300,450,400,400,300
-Large Supply,4300,3600,3500,3500,4100
-Large Supply + ESS,1600,1300,1200,1200,1500
-Large Supply + visco clutch,1300,1100,1000,1000,1200
-Large Supply + mech. clutch,800,800,700,700,900
-Large Supply + ESS + AMS,1100,1000,1000,1000,1000
-Large Supply + visco clutch + AMS,800,800,800,800,700
-Large Supply + mech. clutch + AMS,300,500,500,500,400
+Technology                                 , Long Haul , Regional Delivery , Urban  Delivery , Municipal utility , Construction
+Small                                      , 1400      , 1300              , 1200            , 1200              , 1300
+Small + ESS                                , 900       , 800               , 800             , 800               , 800
+Small + visco clutch                       , 800       , 700               , 700             , 700               , 700
+Small + mech. clutch                       , 600       , 600               , 650             , 650               , 600
+Small + ESS + AMS                          , 500       , 400               , 500             , 500               , 400
+Small + visco clutch + AMS                 , 400       , 300               , 400             , 400               , 300
+Small + mech. clutch + AMS                 , 200       , 200               , 350             , 350               , 200
+Medium Supply 1-stage                      , 1600      , 1400              , 1350            , 1350              , 1500
+Medium Supply 1-stage + ESS                , 1000      , 900               , 900             , 900               , 900
+Medium Supply 1-stage + visco clutch       , 850       , 800               , 800             , 800               , 750
+Medium Supply 1-stage + mech. clutch       , 600       , 550               , 550             , 550               , 600
+Medium Supply 1-stage + ESS + AMS          , 600       , 700               , 700             , 700               , 500
+Medium Supply 1-stage + visco clutch + AMS , 450       , 600               , 600             , 600               , 350
+Medium Supply 1-stage + mech. clutch + AMS , 200       , 350               , 350             , 350               , 200
+Medium Supply 2-stage                      , 2100      , 1750              , 1700            , 1700              , 2100
+Medium Supply 2-stage + ESS                , 1100      , 1050              , 1000            , 1000              , 1000
+Medium Supply 2-stage + visco clutch       , 1000      , 850               , 800             , 800               , 900
+Medium Supply 2-stage + mech. clutch       , 700       , 650               , 600             , 600               , 800
+Medium Supply 2-stage + ESS + AMS          , 700       , 850               , 800             , 800               , 500
+Medium Supply 2-stage + visco clutch + AMS , 600       , 650               , 600             , 600               , 400
+Medium Supply 2-stage + mech. clutch + AMS , 300       , 450               , 400             , 400               , 300
+Large Supply                               , 4300      , 3600              , 3500            , 3500              , 4100
+Large Supply + ESS                         , 1600      , 1300              , 1200            , 1200              , 1500
+Large Supply + visco clutch                , 1300      , 1100              , 1000            , 1000              , 1200
+Large Supply + mech. clutch                , 800       , 800               , 700             , 700               , 900
+Large Supply + ESS + AMS                   , 1100      , 1000              , 1000            , 1000              , 1000
+Large Supply + visco clutch + AMS          , 800       , 800               , 800             , 800               , 700
+Large Supply + mech. clutch + AMS          , 300       , 500               , 500             , 500               , 400
diff --git a/VectoCore/VectoCore/Resources/Declaration/VAUX/SP-Axles.csv b/VectoCore/VectoCore/Resources/Declaration/VAUX/SP-Axles.csv
index 10f0a576ec75bae5b336277d9571fd2a53e23580..24038186f1aa4c9407c9a755e80968b4279b7b33 100644
--- a/VectoCore/VectoCore/Resources/Declaration/VAUX/SP-Axles.csv
+++ b/VectoCore/VectoCore/Resources/Declaration/VAUX/SP-Axles.csv
@@ -1,5 +1,5 @@
-Steered axles,Long haul,Regional delivery,Urban delivery,Municipal utility,construction
-1,100/100/100,100/100/100,100/100/100,100/100/100,100/100/100
-2,100/70/70,100/70/70,100/70/70,100/70/70,100/70/70
-3,100/50/50,100/50/50,100/50/50,100/50/50,100/50/50
-4,100/50/50,100/50/50,100/50/50,100/50/50,100/50/50
+Steered axles , Long haul   , Regional delivery , Urban delivery , Municipal utility , construction
+1             , 100/100/100 , 100/100/100       , 100/100/100    , 100/100/100       , 100/100/100
+2             , 100/70/70   , 100/70/70         , 100/70/70      , 100/70/70         , 100/70/70
+3             , 100/50/50   , 100/50/50         , 100/50/50      , 100/50/50         , 100/50/50
+4             , 100/50/50   , 100/50/50         , 100/50/50      , 100/50/50         , 100/50/50
diff --git a/VectoCore/VectoCore/Resources/Declaration/VAUX/SP-Table.csv b/VectoCore/VectoCore/Resources/Declaration/VAUX/SP-Table.csv
index 66a43eee79e97a7462474bd77ac78691bfc808da..ec4bf35e3489ad34c9f78ab982163ba76a3aab1f 100644
--- a/VectoCore/VectoCore/Resources/Declaration/VAUX/SP-Table.csv
+++ b/VectoCore/VectoCore/Resources/Declaration/VAUX/SP-Table.csv
@@ -1,14 +1,14 @@
-HDV Class,Long haul,Regional delivery,Urban delivery,Municipal utility,Construction
-1,,240/20/20,220/20/30,,
-2,340/30/0,290/30/20,260/20/30,,
-3,,310/30/30,280/30/40,,
-4,510/100/0,490/40/40,,430/30/50,
-5,600/120/0,540/90/40,480/80/60,,
-6,,,,,
-7,,,,,
-8,,,,,
-9,600/120/0,490/60/40,,430/30/50,
-10,450/120/0,440/90/40,,,
-11,600/120/0,490/60/40,,430/30/50,640/50/80
-12,450/120/0,440/90/40,,,640/50/80
-16,,,,,640/50/80
+HDV Class , Long haul , Regional delivery , Urban delivery , Municipal utility , Construction
+1         ,           , 240/20/20         , 220/20/30      ,                   ,
+2         , 340/30/0  , 290/30/20         , 260/20/30      ,                   ,
+3         ,           , 310/30/30         , 280/30/40      ,                   ,
+4         , 510/100/0 , 490/40/40         ,                , 430/30/50         ,
+5         , 600/120/0 , 540/90/40         , 480/80/60      ,                   ,
+6         ,           ,                   ,                ,                   ,
+7         ,           ,                   ,                ,                   ,
+8         ,           ,                   ,                ,                   ,
+9         , 600/120/0 , 490/60/40         ,                , 430/30/50         ,
+10        , 450/120/0 , 440/90/40         ,                ,                   ,
+11        , 600/120/0 , 490/60/40         ,                , 430/30/50         , 640/50/80
+12        , 450/120/0 , 440/90/40         ,                ,                   , 640/50/80
+16        ,           ,                   ,                ,                   , 640/50/80
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Resources/Declaration/VAUX/SP-Tech.csv b/VectoCore/VectoCore/Resources/Declaration/VAUX/SP-Tech.csv
index 494581d6c09dce30c428ab1b6880079aaf34b87f..ff71ce2110ca70ab0dbfb53530fd0cd7b01fbcfd 100644
--- a/VectoCore/VectoCore/Resources/Declaration/VAUX/SP-Tech.csv
+++ b/VectoCore/VectoCore/Resources/Declaration/VAUX/SP-Tech.csv
@@ -1,7 +1,7 @@
-Technology,UF,B,S
-Fixed displacement,1,1,1
-Fixed displacement with elec. control,0.95,1,1
-Dual displacement,0.85,0.85,0.85
-Variable displacement mech. controlled,0.75,0.75,0.75
-Variable displacement elec. controlled,0.6,0.6,0.6
-Electric,0,1.5,1
+Technology                             , UF   , B    , S
+Fixed displacement                     , 1    , 1    , 1
+Fixed displacement with elec. control  , 0.95 , 1    , 1
+Dual displacement                      , 0.85 , 0.85 , 0.85
+Variable displacement mech. controlled , 0.75 , 0.75 , 0.75
+Variable displacement elec. controlled , 0.6  , 0.6  , 0.6
+Electric                               , 0    , 1.5  , 1
diff --git a/VectoCore/VectoCoreTest/FileIO/SimulationDataReaderTest.cs b/VectoCore/VectoCoreTest/FileIO/SimulationDataReaderTest.cs
index 445158d5d7f742a5672671ed1efd8afa552fc294..4e49f6c4d4909b2cab65c3ea8c003d11f5f7b814 100644
--- a/VectoCore/VectoCoreTest/FileIO/SimulationDataReaderTest.cs
+++ b/VectoCore/VectoCoreTest/FileIO/SimulationDataReaderTest.cs
@@ -75,7 +75,7 @@ namespace TUGraz.VectoCore.Tests.FileIO
 			AssertHelper.AreRelativeEqual(0.40726954, runData.VehicleData.DynamicTyreRadius);
 
 			Assert.AreEqual(VehicleClass.Class2, runData.VehicleData.VehicleClass);
-			Assert.AreEqual(3, runData.VehicleData.AxleData.Count);
+			Assert.AreEqual(4, runData.VehicleData.AxleData.Count);
 			Assert.AreEqual(6, runData.VehicleData.AxleData[0].Inertia.Value(), Tolerance);
 
 			Assert.AreEqual(true, runData.DriverData.LookAheadCoasting.Enabled);
diff --git a/VectoCore/VectoCoreTest/Integration/FullCycleDeclarationTest.cs b/VectoCore/VectoCoreTest/Integration/FullCycleDeclarationTest.cs
index c8c4ab8527c33b7d55bfbcafce5feb6c8ee2c343..1968c1d4f27c35927789bcf3fc65685bb99bbf03 100644
--- a/VectoCore/VectoCoreTest/Integration/FullCycleDeclarationTest.cs
+++ b/VectoCore/VectoCoreTest/Integration/FullCycleDeclarationTest.cs
@@ -208,7 +208,7 @@ namespace TUGraz.VectoCore.Tests.Integration
 			var jobContainer = new JobContainer(sumData);
 			jobContainer.AddRuns(factory);
 
-			var i = 5;
+			var i = 8;
 			jobContainer.Runs[i].Run.Run();
 			Assert.IsTrue(jobContainer.Runs[i].Run.FinishedWithoutErrors,
 				string.Format("{0}", jobContainer.Runs[i].ExecException));
diff --git a/VectoCore/VectoCoreTest/Integration/Truck40tPowerTrain.cs b/VectoCore/VectoCoreTest/Integration/Truck40tPowerTrain.cs
index 1e10dc65ad6d7fba53802d76ff1abd5c6fca8d6a..f6969dcbb7a3b7ed616096c17f8eb337d7d1264f 100644
--- a/VectoCore/VectoCoreTest/Integration/Truck40tPowerTrain.cs
+++ b/VectoCore/VectoCoreTest/Integration/Truck40tPowerTrain.cs
@@ -176,6 +176,7 @@ namespace TUGraz.VectoCore.Tests.Integration
 
 		private static VehicleData CreateVehicleData(Kilogram massExtra, Kilogram loading)
 		{
+			var wheelsType = "385/65 R 22.5";
 			var axles = new List<Axle> {
 				new Axle {
 					AxleWeightShare = 0.2,
@@ -198,21 +199,21 @@ namespace TUGraz.VectoCore.Tests.Integration
 					TwinTyres = DeclarationData.Trailer.TwinTyres,
 					RollResistanceCoefficient = DeclarationData.Trailer.RollResistanceCoefficient,
 					TyreTestLoad = DeclarationData.Trailer.TyreTestLoad.SI<Newton>(),
-					Inertia = DeclarationData.Wheels.Lookup(DeclarationData.Trailer.WheelsType).Inertia
+					Inertia = DeclarationData.Wheels.Lookup(wheelsType).Inertia
 				},
 				new Axle {
 					AxleWeightShare = 0.55 / 3,
 					TwinTyres = DeclarationData.Trailer.TwinTyres,
 					RollResistanceCoefficient = DeclarationData.Trailer.RollResistanceCoefficient,
 					TyreTestLoad = DeclarationData.Trailer.TyreTestLoad.SI<Newton>(),
-					Inertia = DeclarationData.Wheels.Lookup(DeclarationData.Trailer.WheelsType).Inertia
+					Inertia = DeclarationData.Wheels.Lookup(wheelsType).Inertia
 				},
 				new Axle {
 					AxleWeightShare = 0.55 / 3,
 					TwinTyres = DeclarationData.Trailer.TwinTyres,
 					RollResistanceCoefficient = DeclarationData.Trailer.RollResistanceCoefficient,
 					TyreTestLoad = DeclarationData.Trailer.TyreTestLoad.SI<Newton>(),
-					Inertia = DeclarationData.Wheels.Lookup(DeclarationData.Trailer.WheelsType).Inertia
+					Inertia = DeclarationData.Wheels.Lookup(wheelsType).Inertia
 				}
 			};
 			return new VehicleData {
diff --git a/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs b/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs
index 09b51ff28c0c8dc9bda0beb281c11b6f18b75445..b64c7f5f4007ce2b350cf15935d71f6d5b13830a 100644
--- a/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs
+++ b/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs
@@ -43,6 +43,7 @@ using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter;
 using TUGraz.VectoCore.InputData.Reader.Impl;
 using TUGraz.VectoCore.Models.Declaration;
 using TUGraz.VectoCore.Models.SimulationComponent.Data;
+using TUGraz.VectoCore.OutputData;
 using TUGraz.VectoCore.Tests.Utils;
 
 namespace TUGraz.VectoCore.Tests.Models.Declaration
@@ -538,9 +539,9 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration
 				Assert.AreEqual(expectedBodyWeight, segment.Missions[0].BodyCurbWeight.Value());
 			}
 			if (expectedTrailerWeight.HasValue) {
-				var trailerMission = segment.Missions.Where(m => m.TrailerType != TrailerType.None).ToList();
+				var trailerMission = segment.Missions.Where(m => m.Trailer.Count > 0).ToList();
 				if (trailerMission.Count > 0) {
-					Assert.AreEqual(expectedTrailerWeight, trailerMission.First().TrailerCurbWeight.Value());
+					Assert.AreEqual(expectedTrailerWeight, trailerMission.First().Trailer.First().TrailerCurbWeight.Value());
 				}
 			}
 		}
@@ -561,15 +562,15 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration
 		TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 18000, 0, VehicleClass.Class4,
 			new[] { 98.9, 49.4, 49.4 }),
 		TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 18000, 0, VehicleClass.Class5,
-			new[] { 91.0, 91.0 }),
+			new[] { 91.0, 140.5, 91.0, 140.5 }),
 		TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 16000, 0, VehicleClass.Class9,
-			new[] { 101.4, 51.9, 51.9 }),
+			new[] { 101.4, 142.9, 51.9, 142.9, 51.9 }),
 		TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x2, 16000, 0, VehicleClass.Class10,
-			new[] { 91.0, 91.0 }),
+			new[] { 91.0, 140.5, 91.0, 140.5 }),
 		TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x4, 40000, 0, VehicleClass.Class11,
-			new[] { 101.4, 51.9, 51.9, 51.9 }),
+			new[] { 101.4, 142.9, 51.9, 142.9, 51.9, 51.9 }),
 		TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x4, 99000, 0, VehicleClass.Class12,
-			new[] { 91.0, 91.0, 91.0 }),
+			new[] { 91.0, 140.5, 91.0, 140.5, 91.0 }),
 		TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_8x4, 99000, 0, VehicleClass.Class16,
 			new[] { 0.0 })
 		]
@@ -582,7 +583,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration
 			Assert.AreEqual(expectedClass, segment.VehicleClass);
 			Assert.AreEqual(expectedCargoVolume.Length, segment.Missions.Length);
 			for (var i = 0; i < expectedCargoVolume.Length; i++) {
-				Assert.AreEqual(expectedCargoVolume[i], segment.Missions[i].CargoVolume.Value());
+				Assert.AreEqual(expectedCargoVolume[i], segment.Missions[i].TotalCargoVolume.Value());
 			}
 		}
 
@@ -611,21 +612,24 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration
 
 			AssertMission(segment.Missions[0], vehicleData: vehicleData, missionType: MissionType.LongHaul,
 				cosswindCorrection: "RigidTrailer", axleWeightDistribution: new[] { 0.225, 0.325 },
-				trailerAxleWeightDistribution: new[] { 0.45 }, bodyCurbWeight: 1900, trailerCurbWeight: 3400,
-				trailerType: TrailerType.T1, minLoad: 0, refLoad: 9813.2353, trailerGrossVehicleWeight: 10500, deltaCdA: 0.6,
-				maxLoad: 11250);
+				trailerAxleWeightDistribution: new[] { 0.45 }, trailerAxleCount: new[] { 2 }, bodyCurbWeight: 1900,
+				trailerCurbWeight: new[] { 3400.0 },
+				trailerType: new[] { TrailerType.T1 }, minLoad: 0, refLoad: 9813.2353, trailerGrossVehicleWeight: new[] { 10500.0 },
+				deltaCdA: 1.3, maxLoad: 11250);
 
 			AssertMission(segment.Missions[1], vehicleData: vehicleData, missionType: MissionType.RegionalDelivery,
 				cosswindCorrection: "RigidSolo", axleWeightDistribution: new[] { 0.45, 0.55 },
-				trailerAxleWeightDistribution: new double[] { }, bodyCurbWeight: 1900, trailerCurbWeight: 0,
-				trailerType: TrailerType.None, minLoad: 0, refLoad: 2984.1176, trailerGrossVehicleWeight: 0, deltaCdA: 0,
-				maxLoad: 4150);
+				trailerAxleWeightDistribution: new double[] { }, trailerAxleCount: new int[] { }, bodyCurbWeight: 1900,
+				trailerCurbWeight: new double[] { },
+				trailerType: new TrailerType[] { }, minLoad: 0, refLoad: 2984.1176, trailerGrossVehicleWeight: new double[] { },
+				deltaCdA: 0, maxLoad: 4150);
 
 			AssertMission(segment.Missions[2], vehicleData: vehicleData, missionType: MissionType.UrbanDelivery,
 				cosswindCorrection: "RigidSolo", axleWeightDistribution: new[] { 0.45, 0.55 },
-				trailerAxleWeightDistribution: new double[] { }, bodyCurbWeight: 1900, trailerCurbWeight: 0,
-				trailerType: TrailerType.None, minLoad: 0, refLoad: 2984.1176, trailerGrossVehicleWeight: 0, deltaCdA: 0,
-				maxLoad: 4150);
+				trailerAxleWeightDistribution: new double[] { }, trailerAxleCount: new int[] { }, bodyCurbWeight: 1900,
+				trailerCurbWeight: new double[] { },
+				trailerType: new TrailerType[] { }, minLoad: 0, refLoad: 2984.1176, trailerGrossVehicleWeight: new double[] { },
+				deltaCdA: 0, maxLoad: 4150);
 		}
 
 		/// <summary>
@@ -650,15 +654,15 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration
 
 			AssertMission(segment.Missions[0], vehicleData: vehicleData, missionType: MissionType.RegionalDelivery,
 				cosswindCorrection: "RigidSolo", axleWeightDistribution: new[] { 0.4, 0.6 },
-				trailerAxleWeightDistribution: new double[] { }, bodyCurbWeight: 2000, trailerCurbWeight: 0,
-				trailerType: TrailerType.None, minLoad: 0, refLoad: 3811.7647, trailerGrossVehicleWeight: 0, deltaCdA: 0,
-				maxLoad: 6150);
+				trailerAxleWeightDistribution: new double[] { }, trailerAxleCount: new int[] { }, bodyCurbWeight: 2000,
+				trailerCurbWeight: new double[] { }, trailerType: new TrailerType[] { }, minLoad: 0, refLoad: 3811.7647,
+				trailerGrossVehicleWeight: new double[] { }, deltaCdA: 0, maxLoad: 6150);
 
 			AssertMission(segment.Missions[1], vehicleData: vehicleData, missionType: MissionType.UrbanDelivery,
 				cosswindCorrection: "RigidSolo", axleWeightDistribution: new[] { 0.4, 0.6 },
-				trailerAxleWeightDistribution: new double[] { }, bodyCurbWeight: 2000, trailerCurbWeight: 0,
-				trailerType: TrailerType.None, minLoad: 0, refLoad: 3811.7647, trailerGrossVehicleWeight: 0, deltaCdA: 0,
-				maxLoad: 6150);
+				trailerAxleWeightDistribution: new double[] { }, trailerAxleCount: new int[] { }, bodyCurbWeight: 2000,
+				trailerCurbWeight: new double[] { }, trailerType: new TrailerType[] { }, minLoad: 0, refLoad: 3811.7647,
+				trailerGrossVehicleWeight: new double[] { }, deltaCdA: 0, maxLoad: 6150);
 		}
 
 		/// <summary>
@@ -686,19 +690,21 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration
 
 			AssertMission(segment.Missions[0], vehicleData: vehicleData, missionType: MissionType.LongHaul,
 				cosswindCorrection: "RigidTrailer", axleWeightDistribution: new[] { 0.2, 0.3 },
-				trailerAxleWeightDistribution: new[] { 0.25, 0.25 }, bodyCurbWeight: 2100, trailerCurbWeight: 5400,
-				trailerType: TrailerType.T2, minLoad: 0, refLoad: 14000, trailerGrossVehicleWeight: 18000, deltaCdA: 0.6,
-				maxLoad: 21000);
+				trailerAxleWeightDistribution: new[] { 0.5 }, trailerAxleCount: new[] { 2 }, bodyCurbWeight: 2100,
+				trailerCurbWeight: new[] { 5400.0 }, trailerType: new[] { TrailerType.T2 }, minLoad: 0, refLoad: 14000,
+				trailerGrossVehicleWeight: new[] { 18000.0 }, deltaCdA: 1.5, maxLoad: 21000);
 
 			AssertMission(segment.Missions[1], vehicleData: vehicleData, missionType: MissionType.RegionalDelivery,
 				cosswindCorrection: "RigidSolo", axleWeightDistribution: new[] { 0.45, 0.55 },
-				trailerAxleWeightDistribution: new double[] { }, bodyCurbWeight: 2100, trailerCurbWeight: 0,
-				trailerType: TrailerType.None, minLoad: 0, refLoad: 4400, trailerGrossVehicleWeight: 0, deltaCdA: 0, maxLoad: 8400);
+				trailerAxleWeightDistribution: new double[] { }, trailerAxleCount: new int[] { }, bodyCurbWeight: 2100,
+				trailerCurbWeight: new double[] { }, trailerType: new TrailerType[] { }, minLoad: 0, refLoad: 4400,
+				trailerGrossVehicleWeight: new double[] { }, deltaCdA: 0, maxLoad: 8400);
 
 			AssertMission(segment.Missions[2], vehicleData: vehicleData, missionType: MissionType.MunicipalUtility,
 				cosswindCorrection: "RigidSolo", axleWeightDistribution: new[] { 0.45, 0.55 },
-				trailerAxleWeightDistribution: new double[] { }, bodyCurbWeight: 2100, trailerCurbWeight: 0,
-				trailerType: TrailerType.None, minLoad: 0, refLoad: 4400, trailerGrossVehicleWeight: 0, deltaCdA: 0, maxLoad: 8400);
+				trailerAxleWeightDistribution: new double[] { }, trailerAxleCount: new int[] { }, bodyCurbWeight: 2100,
+				trailerCurbWeight: new double[] { }, trailerType: new TrailerType[] { }, minLoad: 0, refLoad: 4400,
+				trailerGrossVehicleWeight: new double[] { }, deltaCdA: 0, maxLoad: 8400);
 		}
 
 		/// <summary>
@@ -722,48 +728,308 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration
 			var data = AccelerationCurveReader.ReadFromStream(segment.AccelerationFile);
 			TestAcceleration(data);
 
-			Assert.AreEqual(2, segment.Missions.Length);
+			Assert.AreEqual(4, segment.Missions.Length);
 
 			AssertMission(segment.Missions[0], vehicleData: vehicleData, missionType: MissionType.LongHaul,
 				cosswindCorrection: "TractorSemitrailer", axleWeightDistribution: new[] { 0.2, 0.25 },
-				trailerAxleWeightDistribution: (0.55 / 3).Repeat(3).ToArray(), bodyCurbWeight: 0, trailerCurbWeight: 7500,
-				trailerType: TrailerType.None, minLoad: 0, refLoad: 19300, trailerGrossVehicleWeight: 24000, deltaCdA: 0,
-				maxLoad: 25000);
+				trailerAxleWeightDistribution: new[] { 0.55 }, trailerAxleCount: new[] { 3 }, bodyCurbWeight: 0,
+				trailerCurbWeight: new[] { 7500.0 }, trailerType: new[] { TrailerType.ST1 }, minLoad: 0, refLoad: 19300,
+				trailerGrossVehicleWeight: new[] { 24000.0 }, deltaCdA: 0, maxLoad: 25000);
 
-			AssertMission(segment.Missions[1], vehicleData: vehicleData, missionType: MissionType.RegionalDelivery,
+			AssertMission(segment.Missions[1], vehicleData: vehicleData, missionType: MissionType.LongHaulEMS,
+				cosswindCorrection: "RigidTrailer", axleWeightDistribution: new[] { 0.15, 0.2 },
+				trailerAxleWeightDistribution: new[] { 0.40, 0.25 }, trailerAxleCount: new[] { 3, 2 }, bodyCurbWeight: 0,
+				trailerCurbWeight: new[] { 7500.0, 5400 }, trailerType: new[] { TrailerType.ST1, TrailerType.T2 }, minLoad: 0,
+				refLoad: 26500, trailerGrossVehicleWeight: new[] { 24000.0, 18000 }, deltaCdA: 0.6, maxLoad: 39600, ems: true);
+
+			AssertMission(segment.Missions[2], vehicleData: vehicleData, missionType: MissionType.RegionalDelivery,
 				cosswindCorrection: "TractorSemitrailer", axleWeightDistribution: new[] { 0.25, 0.25 },
-				trailerAxleWeightDistribution: (0.5 / 3).Repeat(3).ToArray(), bodyCurbWeight: 0, trailerCurbWeight: 7500,
-				trailerType: TrailerType.None, minLoad: 0, refLoad: 12900, trailerGrossVehicleWeight: 24000, deltaCdA: 0,
-				maxLoad: 25000);
+				trailerAxleWeightDistribution: new[] { 0.5 }, trailerAxleCount: new[] { 3 }, bodyCurbWeight: 0,
+				trailerCurbWeight: new[] { 7500.0 }, trailerType: new[] { TrailerType.ST1 }, minLoad: 0, refLoad: 12900,
+				trailerGrossVehicleWeight: new[] { 24000.0 }, deltaCdA: 0, maxLoad: 25000);
+
+			AssertMission(segment.Missions[3], vehicleData: vehicleData, missionType: MissionType.RegionalDeliveryEMS,
+				cosswindCorrection: "RigidTrailer", axleWeightDistribution: new[] { 0.175, 0.25 },
+				trailerAxleWeightDistribution: new[] { 0.35, 0.225 }, trailerAxleCount: new[] { 3, 2 }, bodyCurbWeight: 0,
+				trailerCurbWeight: new[] { 7500.0, 5400 }, trailerType: new[] { TrailerType.ST1, TrailerType.T2 }, minLoad: 0,
+				refLoad: 17500, trailerGrossVehicleWeight: new[] { 24000.0, 18000 }, deltaCdA: 0.6, maxLoad: 39600, ems: true);
+		}
+
+
+		/// <summary>
+		/// Segment 9: fixed reference weight, trailer always used
+		/// </summary>
+		[TestCase]
+		public void Segment9Test()
+		{
+			var vehicleData = new {
+				VehicleCategory = VehicleCategory.RigidTruck,
+				AxleConfiguration = AxleConfiguration.AxleConfig_6x2,
+				GrossVehicleMassRating = 24000.SI<Kilogram>(),
+				CurbWeight = 7500.SI<Kilogram>()
+			};
+
+			var segment = DeclarationData.Segments.Lookup(vehicleData.VehicleCategory, vehicleData.AxleConfiguration,
+				vehicleData.GrossVehicleMassRating, vehicleData.CurbWeight);
+
+			Assert.AreEqual(VehicleClass.Class9, segment.VehicleClass);
+
+			var data = AccelerationCurveReader.ReadFromStream(segment.AccelerationFile);
+			TestAcceleration(data);
+
+			Assert.AreEqual(5, segment.Missions.Length);
+
+			AssertMission(segment.Missions[0], vehicleData: vehicleData, missionType: MissionType.LongHaul,
+				cosswindCorrection: "RigidTrailer", axleWeightDistribution: new[] { 0.2, 0.3, 0.15 },
+				trailerAxleWeightDistribution: new[] { 0.35 }, trailerAxleCount: new[] { 2 }, bodyCurbWeight: 2200,
+				trailerCurbWeight: new[] { 5400.0 }, trailerType: new[] { TrailerType.T2 }, minLoad: 0, refLoad: 19300,
+				trailerGrossVehicleWeight: new[] { 18000.0 }, deltaCdA: 1.5, maxLoad: 24900);
+
+			AssertMission(segment.Missions[1], vehicleData: vehicleData, missionType: MissionType.LongHaulEMS,
+				cosswindCorrection: "RigidTrailer", axleWeightDistribution: new[] { 0.15, 0.2, 0.1 },
+				trailerAxleWeightDistribution: new[] { 0.225, 0.325 }, trailerAxleCount: new[] { 2, 3 }, bodyCurbWeight: 2200,
+				trailerCurbWeight: new[] { 2500, 7500.0 }, trailerType: new[] { TrailerType.Dolly, TrailerType.ST1 }, minLoad: 0,
+				refLoad: 26500, trailerGrossVehicleWeight: new[] { 12000.0, 24000 }, deltaCdA: 1.2, maxLoad: 40300, ems: true);
+
+			AssertMission(segment.Missions[2], vehicleData: vehicleData, missionType: MissionType.RegionalDelivery,
+				cosswindCorrection: "RigidSolo", axleWeightDistribution: new[] { 0.35, 0.4, 0.25 },
+				trailerAxleWeightDistribution: new double[] { }, trailerAxleCount: new int[] { }, bodyCurbWeight: 2200,
+				trailerCurbWeight: new double[] { }, trailerType: new TrailerType[] { }, minLoad: 0,
+				refLoad: 7100, trailerGrossVehicleWeight: new double[] { }, deltaCdA: 0, maxLoad: 14300);
+
+			AssertMission(segment.Missions[3], vehicleData: vehicleData, missionType: MissionType.RegionalDeliveryEMS,
+				cosswindCorrection: "RigidTrailer", axleWeightDistribution: new[] { 0.175, 0.2, 0.1 },
+				trailerAxleWeightDistribution: new[] { 0.225, 0.3 }, trailerAxleCount: new[] { 2, 3 }, bodyCurbWeight: 2200,
+				trailerCurbWeight: new[] { 2500, 7500.0 }, trailerType: new[] { TrailerType.Dolly, TrailerType.ST1 }, minLoad: 0,
+				refLoad: 17500, trailerGrossVehicleWeight: new[] { 12000.0, 24000 }, deltaCdA: 1.2, maxLoad: 40300, ems: true);
+
+			AssertMission(segment.Missions[4], vehicleData: vehicleData, missionType: MissionType.MunicipalUtility,
+				cosswindCorrection: "RigidSolo", axleWeightDistribution: new[] { 0.35, 0.4, 0.25 },
+				trailerAxleWeightDistribution: new double[] { }, trailerAxleCount: new int[] { }, bodyCurbWeight: 2200,
+				trailerCurbWeight: new double[] { }, trailerType: new TrailerType[] { }, minLoad: 0,
+				refLoad: 7100, trailerGrossVehicleWeight: new double[] { }, deltaCdA: 0, maxLoad: 14300);
+		}
+
+		/// <summary>
+		/// Segment 10: fixed reference weight, trailer always used
+		/// </summary>
+		[TestCase]
+		public void Segment10Test()
+		{
+			var vehicleData = new {
+				VehicleCategory = VehicleCategory.Tractor,
+				AxleConfiguration = AxleConfiguration.AxleConfig_6x2,
+				GrossVehicleMassRating = 24000.SI<Kilogram>(),
+				CurbWeight = 7500.SI<Kilogram>()
+			};
+
+			var segment = DeclarationData.Segments.Lookup(vehicleData.VehicleCategory, vehicleData.AxleConfiguration,
+				vehicleData.GrossVehicleMassRating, vehicleData.CurbWeight);
+
+			Assert.AreEqual(VehicleClass.Class10, segment.VehicleClass);
+
+			var data = AccelerationCurveReader.ReadFromStream(segment.AccelerationFile);
+			TestAcceleration(data);
+
+			Assert.AreEqual(4, segment.Missions.Length);
+
+			AssertMission(segment.Missions[0], vehicleData: vehicleData, missionType: MissionType.LongHaul,
+				cosswindCorrection: "TractorSemitrailer", axleWeightDistribution: new[] { 0.15, 0.1, 0.2 },
+				trailerAxleWeightDistribution: new[] { 0.55 }, trailerAxleCount: new[] { 3 }, bodyCurbWeight: 0,
+				trailerCurbWeight: new[] { 7500.0 }, trailerType: new[] { TrailerType.ST1 }, minLoad: 0, refLoad: 19300,
+				trailerGrossVehicleWeight: new[] { 24000.0 }, deltaCdA: 0, maxLoad: 25000);
+
+			AssertMission(segment.Missions[1], vehicleData: vehicleData, missionType: MissionType.LongHaulEMS,
+				cosswindCorrection: "RigidTrailer", axleWeightDistribution: new[] { 0.125, 0.15, 0.1 },
+				trailerAxleWeightDistribution: new[] { 0.375, 0.25 }, trailerAxleCount: new[] { 3, 2 }, bodyCurbWeight: 0,
+				trailerCurbWeight: new[] { 7500.0, 5400 }, trailerType: new[] { TrailerType.ST1, TrailerType.T2 }, minLoad: 0,
+				refLoad: 26500, trailerGrossVehicleWeight: new[] { 24000.0, 18000 }, deltaCdA: 0.6, maxLoad: 39600, ems: true);
+
+			AssertMission(segment.Missions[2], vehicleData: vehicleData, missionType: MissionType.RegionalDelivery,
+				cosswindCorrection: "TractorSemitrailer", axleWeightDistribution: new[] { 0.2, 0.1, 0.2 },
+				trailerAxleWeightDistribution: new[] { 0.5 }, trailerAxleCount: new[] { 3 }, bodyCurbWeight: 0,
+				trailerCurbWeight: new[] { 7500.0 }, trailerType: new[] { TrailerType.ST1 }, minLoad: 0, refLoad: 12900,
+				trailerGrossVehicleWeight: new[] { 24000.0 }, deltaCdA: 0, maxLoad: 25000);
+
+			AssertMission(segment.Missions[3], vehicleData: vehicleData, missionType: MissionType.RegionalDeliveryEMS,
+				cosswindCorrection: "RigidTrailer", axleWeightDistribution: new[] { 0.15, 0.15, 0.1 },
+				trailerAxleWeightDistribution: new[] { 0.35, 0.25 }, trailerAxleCount: new[] { 3, 2 }, bodyCurbWeight: 0,
+				trailerCurbWeight: new[] { 7500.0, 5400 }, trailerType: new[] { TrailerType.ST1, TrailerType.T2 }, minLoad: 0,
+				refLoad: 17500, trailerGrossVehicleWeight: new[] { 24000.0, 18000 }, deltaCdA: 0.6, maxLoad: 39600, ems: true);
+		}
+
+		/// <summary>
+		/// Segment 11: fixed reference weight, trailer always used
+		/// </summary>
+		[TestCase]
+		public void Segment11Test()
+		{
+			var vehicleData = new {
+				VehicleCategory = VehicleCategory.RigidTruck,
+				AxleConfiguration = AxleConfiguration.AxleConfig_6x4,
+				GrossVehicleMassRating = 24000.SI<Kilogram>(),
+				CurbWeight = 7500.SI<Kilogram>()
+			};
+
+			var segment = DeclarationData.Segments.Lookup(vehicleData.VehicleCategory, vehicleData.AxleConfiguration,
+				vehicleData.GrossVehicleMassRating, vehicleData.CurbWeight);
+
+			Assert.AreEqual(VehicleClass.Class11, segment.VehicleClass);
+
+			var data = AccelerationCurveReader.ReadFromStream(segment.AccelerationFile);
+			TestAcceleration(data);
+
+			Assert.AreEqual(6, segment.Missions.Length);
+
+			AssertMission(segment.Missions[0], vehicleData: vehicleData, missionType: MissionType.LongHaul,
+				cosswindCorrection: "RigidTrailer", axleWeightDistribution: new[] { 0.2, 0.225, 0.225 },
+				trailerAxleWeightDistribution: new[] { 0.35 }, trailerAxleCount: new[] { 2 }, bodyCurbWeight: 2200,
+				trailerCurbWeight: new[] { 5400.0 }, trailerType: new[] { TrailerType.T2 }, minLoad: 0, refLoad: 19300,
+				trailerGrossVehicleWeight: new[] { 18000.0 }, deltaCdA: 1.5, maxLoad: 24900);
+
+			AssertMission(segment.Missions[1], vehicleData: vehicleData, missionType: MissionType.LongHaulEMS,
+				cosswindCorrection: "RigidTrailer", axleWeightDistribution: new[] { 0.15, 0.2, 0.1 },
+				trailerAxleWeightDistribution: new[] { 0.225, 0.325 }, trailerAxleCount: new[] { 2, 3 }, bodyCurbWeight: 2200,
+				trailerCurbWeight: new[] { 2500, 7500.0 }, trailerType: new[] { TrailerType.Dolly, TrailerType.ST1 }, minLoad: 0,
+				refLoad: 26500, trailerGrossVehicleWeight: new[] { 12000.0, 24000 }, deltaCdA: 1.2, maxLoad: 40300, ems: true);
+
+			AssertMission(segment.Missions[2], vehicleData: vehicleData, missionType: MissionType.RegionalDelivery,
+				cosswindCorrection: "RigidSolo", axleWeightDistribution: new[] { 0.35, 0.35, 0.3 },
+				trailerAxleWeightDistribution: new double[] { }, trailerAxleCount: new int[] { }, bodyCurbWeight: 2200,
+				trailerCurbWeight: new double[] { }, trailerType: new TrailerType[] { }, minLoad: 0,
+				refLoad: 7100, trailerGrossVehicleWeight: new double[] { }, deltaCdA: 0, maxLoad: 14300);
+
+			AssertMission(segment.Missions[3], vehicleData: vehicleData, missionType: MissionType.RegionalDeliveryEMS,
+				cosswindCorrection: "RigidTrailer", axleWeightDistribution: new[] { 0.175, 0.2, 0.1 },
+				trailerAxleWeightDistribution: new[] { 0.225, 0.3 }, trailerAxleCount: new[] { 2, 3 }, bodyCurbWeight: 2200,
+				trailerCurbWeight: new[] { 2500, 7500.0 }, trailerType: new[] { TrailerType.Dolly, TrailerType.ST1 }, minLoad: 0,
+				refLoad: 17500, trailerGrossVehicleWeight: new[] { 12000.0, 24000 }, deltaCdA: 1.2, maxLoad: 40300, ems: true);
+
+			AssertMission(segment.Missions[4], vehicleData: vehicleData, missionType: MissionType.MunicipalUtility,
+				cosswindCorrection: "RigidSolo", axleWeightDistribution: new[] { 0.35, 0.35, 0.3 },
+				trailerAxleWeightDistribution: new double[] { }, trailerAxleCount: new int[] { }, bodyCurbWeight: 2200,
+				trailerCurbWeight: new double[] { }, trailerType: new TrailerType[] { }, minLoad: 0,
+				refLoad: 7100, trailerGrossVehicleWeight: new double[] { }, deltaCdA: 0, maxLoad: 14300);
+
+			AssertMission(segment.Missions[5], vehicleData: vehicleData, missionType: MissionType.Construction,
+				cosswindCorrection: "RigidSolo", axleWeightDistribution: new[] { 0.35, 0.35, 0.3 },
+				trailerAxleWeightDistribution: new double[] { }, trailerAxleCount: new int[] { }, bodyCurbWeight: 2200,
+				trailerCurbWeight: new double[] { }, trailerType: new TrailerType[] { }, minLoad: 0,
+				refLoad: 7100, trailerGrossVehicleWeight: new double[] { }, deltaCdA: 0, maxLoad: 14300);
+		}
+
+		/// <summary>
+		/// Segment 10: fixed reference weight, trailer always used
+		/// </summary>
+		[TestCase]
+		public void Segment12Test()
+		{
+			var vehicleData = new {
+				VehicleCategory = VehicleCategory.Tractor,
+				AxleConfiguration = AxleConfiguration.AxleConfig_6x4,
+				GrossVehicleMassRating = 24000.SI<Kilogram>(),
+				CurbWeight = 7500.SI<Kilogram>()
+			};
+
+			var segment = DeclarationData.Segments.Lookup(vehicleData.VehicleCategory, vehicleData.AxleConfiguration,
+				vehicleData.GrossVehicleMassRating, vehicleData.CurbWeight);
+
+			Assert.AreEqual(VehicleClass.Class12, segment.VehicleClass);
+
+			var data = AccelerationCurveReader.ReadFromStream(segment.AccelerationFile);
+			TestAcceleration(data);
+
+			Assert.AreEqual(5, segment.Missions.Length);
+
+			AssertMission(segment.Missions[0], vehicleData: vehicleData, missionType: MissionType.LongHaul,
+				cosswindCorrection: "TractorSemitrailer", axleWeightDistribution: new[] { 0.15, 0.15, 0.15 },
+				trailerAxleWeightDistribution: new[] { 0.55 }, trailerAxleCount: new[] { 3 }, bodyCurbWeight: 0,
+				trailerCurbWeight: new[] { 7500.0 }, trailerType: new[] { TrailerType.ST1 }, minLoad: 0, refLoad: 19300,
+				trailerGrossVehicleWeight: new[] { 24000.0 }, deltaCdA: 0, maxLoad: 25000);
+
+			AssertMission(segment.Missions[1], vehicleData: vehicleData, missionType: MissionType.LongHaulEMS,
+				cosswindCorrection: "RigidTrailer", axleWeightDistribution: new[] { 0.125, 0.15, 0.1 },
+				trailerAxleWeightDistribution: new[] { 0.375, 0.25 }, trailerAxleCount: new[] { 3, 2 }, bodyCurbWeight: 0,
+				trailerCurbWeight: new[] { 7500.0, 5400 }, trailerType: new[] { TrailerType.ST1, TrailerType.T2 }, minLoad: 0,
+				refLoad: 26500, trailerGrossVehicleWeight: new[] { 24000.0, 18000 }, deltaCdA: 0.6, maxLoad: 39600, ems: true);
+
+			AssertMission(segment.Missions[2], vehicleData: vehicleData, missionType: MissionType.RegionalDelivery,
+				cosswindCorrection: "TractorSemitrailer", axleWeightDistribution: new[] { 0.2, 0.15, 0.15 },
+				trailerAxleWeightDistribution: new[] { 0.5 }, trailerAxleCount: new[] { 3 }, bodyCurbWeight: 0,
+				trailerCurbWeight: new[] { 7500.0 }, trailerType: new[] { TrailerType.ST1 }, minLoad: 0, refLoad: 12900,
+				trailerGrossVehicleWeight: new[] { 24000.0 }, deltaCdA: 0, maxLoad: 25000);
+
+			AssertMission(segment.Missions[3], vehicleData: vehicleData, missionType: MissionType.RegionalDeliveryEMS,
+				cosswindCorrection: "RigidTrailer", axleWeightDistribution: new[] { 0.15, 0.15, 0.1 },
+				trailerAxleWeightDistribution: new[] { 0.35, 0.25 }, trailerAxleCount: new[] { 3, 2 }, bodyCurbWeight: 0,
+				trailerCurbWeight: new[] { 7500.0, 5400 }, trailerType: new[] { TrailerType.ST1, TrailerType.T2 }, minLoad: 0,
+				refLoad: 17500, trailerGrossVehicleWeight: new[] { 24000.0, 18000 }, deltaCdA: 0.6, maxLoad: 39600, ems: true);
+		}
+
+		/// <summary>
+		/// Segment 9: fixed reference weight, trailer always used
+		/// </summary>
+		[TestCase]
+		public void Segment16Test()
+		{
+			var vehicleData = new {
+				VehicleCategory = VehicleCategory.RigidTruck,
+				AxleConfiguration = AxleConfiguration.AxleConfig_8x4,
+				GrossVehicleMassRating = 36000.SI<Kilogram>(),
+				CurbWeight = 7500.SI<Kilogram>()
+			};
+
+			var segment = DeclarationData.Segments.Lookup(vehicleData.VehicleCategory, vehicleData.AxleConfiguration,
+				vehicleData.GrossVehicleMassRating, vehicleData.CurbWeight);
+
+			Assert.AreEqual(VehicleClass.Class16, segment.VehicleClass);
+
+			var data = AccelerationCurveReader.ReadFromStream(segment.AccelerationFile);
+			TestAcceleration(data);
+
+			Assert.AreEqual(1, segment.Missions.Length);
+
+			AssertMission(segment.Missions[0], vehicleData: vehicleData, missionType: MissionType.Construction,
+				cosswindCorrection: "RigidSolo", axleWeightDistribution: new[] { 0.25, 0.25, 0.25, 0.25 },
+				trailerAxleWeightDistribution: new double[] { }, trailerAxleCount: new int[] { }, bodyCurbWeight: 0,
+				trailerCurbWeight: new double[] { }, trailerType: new TrailerType[] { }, minLoad: 0, refLoad: 12900,
+				trailerGrossVehicleWeight: new double[] { }, deltaCdA: 0, maxLoad: 28500);
 		}
 
 		public static void AssertMission(Mission m, dynamic vehicleData, MissionType missionType, string cosswindCorrection,
-			double[] axleWeightDistribution, double[] trailerAxleWeightDistribution, double bodyCurbWeight,
-			double trailerCurbWeight, TrailerType trailerType, double minLoad, double refLoad, double maxLoad,
-			double trailerGrossVehicleWeight, double deltaCdA)
+			double[] axleWeightDistribution, double[] trailerAxleWeightDistribution, int[] trailerAxleCount,
+			double bodyCurbWeight,
+			double[] trailerCurbWeight, TrailerType[] trailerType, double minLoad, double refLoad, double maxLoad,
+			double[] trailerGrossVehicleWeight, double deltaCdA, bool ems = false)
 		{
 			Assert.AreEqual(missionType, m.MissionType);
 			Assert.AreEqual(cosswindCorrection, m.CrossWindCorrectionParameters);
 			CollectionAssert.AreEqual(axleWeightDistribution, m.AxleWeightDistribution,
 				"Axle distribution not equal.\nexpected: {0}\nactual: {1}", string.Join(",", axleWeightDistribution),
 				string.Join(",", m.AxleWeightDistribution));
-			CollectionAssert.AreEqual(trailerAxleWeightDistribution, m.TrailerAxleWeightDistribution,
+			CollectionAssert.AreEqual(trailerAxleWeightDistribution, m.Trailer.Select(t => t.TrailerAxleWeightShare),
 				"Trailer axle distribution not equal.\nexpected: {0}\nactual: {1}", string.Join(",", trailerAxleWeightDistribution),
-				string.Join(",", m.TrailerAxleWeightDistribution));
+				string.Join(",", m.Trailer.Select(t => t.TrailerAxleWeightShare)));
 			Assert.AreEqual(bodyCurbWeight.SI<Kilogram>(), m.BodyCurbWeight);
-			Assert.AreEqual(trailerCurbWeight.SI<Kilogram>(), m.TrailerCurbWeight);
-			Assert.AreEqual(trailerType, m.TrailerType);
-
+			CollectionAssert.AreEqual(trailerCurbWeight, m.Trailer.Select(t => t.TrailerCurbWeight.Value()));
+			CollectionAssert.AreEqual(trailerType, m.Trailer.Select(t => t.TrailerType));
+			CollectionAssert.AreEqual(trailerAxleCount, m.Trailer.Select(t => t.TrailerWheels.Count));
 			Assert.IsNotNull(m.CycleFile);
 			Assert.IsTrue(!string.IsNullOrEmpty(new StreamReader(m.CycleFile).ReadLine()));
 			Assert.AreEqual(minLoad.SI<Kilogram>(), m.MinLoad);
 			AssertHelper.AreRelativeEqual(refLoad, m.RefLoad);
 			Assert.AreEqual(maxLoad.SI<Kilogram>(), m.MaxLoad);
-			Assert.AreEqual(trailerGrossVehicleWeight.SI<Kilogram>(), m.TrailerGrossVehicleWeight);
-			Assert.AreEqual(VectoMath.Min(vehicleData.GrossVehicleMassRating + m.TrailerGrossVehicleWeight, 40000.SI<Kilogram>())
-							- m.BodyCurbWeight - m.TrailerCurbWeight - vehicleData.CurbWeight,
+			CollectionAssert.AreEqual(trailerGrossVehicleWeight, m.Trailer.Select(t => t.TrailerGrossVehicleWeight.Value()));
+			Assert.AreEqual(
+				VectoMath.Min(
+					vehicleData.GrossVehicleMassRating +
+					m.Trailer.Sum(t => t.TrailerGrossVehicleWeight).DefaultIfNull(0),
+					ems ? 60000.SI<Kilogram>() : 40000.SI<Kilogram>())
+				- m.BodyCurbWeight - m.Trailer.Sum(t => t.TrailerCurbWeight).DefaultIfNull(0) -
+				vehicleData.CurbWeight,
 				m.MaxLoad);
-			Assert.AreEqual(deltaCdA.SI<SquareMeter>(), m.DeltaCdA);
+			Assert.AreEqual(deltaCdA.SI<SquareMeter>(),
+				m.Trailer.Sum(t => t.DeltaCdA).DefaultIfNull(0));
 		}
 
 		private static void EqualAcceleration(AccelerationCurveData data, double velocity, double acceleration,
@@ -804,7 +1070,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration
 
 			var runs = dataReader.NextRun().ToList();
 			Assert.AreEqual(9, runs.Count);
-			var withT1 = new[] { 6.0, 6.0, 4.5 };
+			var withT1 = new[] { 6.0, 6.0, 4.5, 4.5 };
 			CollectionAssert.AreEqual(withT1, runs[0].VehicleData.AxleData.Select(a => a.Inertia.Value()));
 			CollectionAssert.AreEqual(withT1, runs[1].VehicleData.AxleData.Select(a => a.Inertia.Value()));
 			CollectionAssert.AreEqual(withT1, runs[2].VehicleData.AxleData.Select(a => a.Inertia.Value()));
@@ -849,16 +1115,29 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration
 			var dataReader = new DeclarationModeVectoRunDataFactory(dataProvider, null);
 
 			var runs = dataReader.NextRun().ToList();
-			Assert.AreEqual(6, runs.Count);
-			var withT1 = new[] { 14.9, 14.9, 19.2, 19.2, 19.2 };
-			CollectionAssert.AreEqual(withT1, runs[0].VehicleData.AxleData.Select(a => a.Inertia.Value()));
-			CollectionAssert.AreEqual(withT1, runs[1].VehicleData.AxleData.Select(a => a.Inertia.Value()));
-			CollectionAssert.AreEqual(withT1, runs[2].VehicleData.AxleData.Select(a => a.Inertia.Value()));
 
-			var bodyOnly = new[] { 14.9, 14.9, 19.2, 19.2, 19.2 };
-			CollectionAssert.AreEqual(bodyOnly, runs[3].VehicleData.AxleData.Select(a => a.Inertia.Value()));
-			CollectionAssert.AreEqual(bodyOnly, runs[4].VehicleData.AxleData.Select(a => a.Inertia.Value()));
-			CollectionAssert.AreEqual(bodyOnly, runs[5].VehicleData.AxleData.Select(a => a.Inertia.Value()));
+			Assert.AreEqual(VehicleClass.Class5, runs[0].VehicleData.VehicleClass);
+			Assert.AreEqual(12, runs.Count);
+
+			//var bodyOnly = new[] { 14.9, 14.9 };
+			var withST1 = new[] { 14.9, 14.9, 19.2, 19.2, 19.2 };
+			var withST1andT2 = new[] { 14.9, 14.9, 19.2, 19.2, 19.2, 19.2, 19.2 };
+
+			CollectionAssert.AreEqual(withST1, runs[0].VehicleData.AxleData.Select(a => a.Inertia.Value()));
+			CollectionAssert.AreEqual(withST1, runs[1].VehicleData.AxleData.Select(a => a.Inertia.Value()));
+			CollectionAssert.AreEqual(withST1, runs[2].VehicleData.AxleData.Select(a => a.Inertia.Value()));
+
+			CollectionAssert.AreEqual(withST1andT2, runs[3].VehicleData.AxleData.Select(a => a.Inertia.Value()));
+			CollectionAssert.AreEqual(withST1andT2, runs[4].VehicleData.AxleData.Select(a => a.Inertia.Value()));
+			CollectionAssert.AreEqual(withST1andT2, runs[5].VehicleData.AxleData.Select(a => a.Inertia.Value()));
+
+			CollectionAssert.AreEqual(withST1, runs[6].VehicleData.AxleData.Select(a => a.Inertia.Value()));
+			CollectionAssert.AreEqual(withST1, runs[7].VehicleData.AxleData.Select(a => a.Inertia.Value()));
+			CollectionAssert.AreEqual(withST1, runs[8].VehicleData.AxleData.Select(a => a.Inertia.Value()));
+
+			CollectionAssert.AreEqual(withST1andT2, runs[9].VehicleData.AxleData.Select(a => a.Inertia.Value()));
+			CollectionAssert.AreEqual(withST1andT2, runs[10].VehicleData.AxleData.Select(a => a.Inertia.Value()));
+			CollectionAssert.AreEqual(withST1andT2, runs[11].VehicleData.AxleData.Select(a => a.Inertia.Value()));
 		}
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/Models/SimulationComponent/GearboxTest.cs b/VectoCore/VectoCoreTest/Models/SimulationComponent/GearboxTest.cs
index c5490509372da21b4d1afa51935bc88c5a683e88..110c4f0a627cdcdff5b2a1d999b45af769a260db 100644
--- a/VectoCore/VectoCoreTest/Models/SimulationComponent/GearboxTest.cs
+++ b/VectoCore/VectoCoreTest/Models/SimulationComponent/GearboxTest.cs
@@ -141,7 +141,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			var vehicle = new VehicleContainer(ExecutionMode.Engineering);
 			var axleGearData = MockSimulationDataFactory.CreateAxleGearDataFromFile(AxleGearValidRangeDataFile);
 			var axleGear = new AxleGear(vehicle, axleGearData);
-			Assert.AreEqual(0, axleGear.Validate(ExecutionMode.Declaration, null).Count);
+			Assert.AreEqual(0, axleGear.Validate(ExecutionMode.Declaration, null, false).Count);
 		}
 
 		[TestCase]
@@ -150,7 +150,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			var vehicle = new VehicleContainer(ExecutionMode.Engineering);
 			var axleGearData = MockSimulationDataFactory.CreateAxleGearDataFromFile(AxleGearInvalidRangeDataFile);
 			var axleGear = new AxleGear(vehicle, axleGearData);
-			var errors = axleGear.Validate(ExecutionMode.Declaration, null);
+			var errors = axleGear.Validate(ExecutionMode.Declaration, null, false);
 			Assert.AreEqual(1, errors.Count);
 		}
 
diff --git a/VectoCore/VectoCoreTest/Models/SimulationComponentData/ValidationTest.cs b/VectoCore/VectoCoreTest/Models/SimulationComponentData/ValidationTest.cs
index 18b98f885c862469ed28b94cb0a3959de207fe4b..d77cd1a9d6d72e404dc1d8ff709e6c700e222060 100644
--- a/VectoCore/VectoCoreTest/Models/SimulationComponentData/ValidationTest.cs
+++ b/VectoCore/VectoCoreTest/Models/SimulationComponentData/ValidationTest.cs
@@ -94,7 +94,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData
 			};
 			data.FullLoadCurve.EngineData = data;
 
-			var results = data.Validate(ExecutionMode.Declaration, null);
+			var results = data.Validate(ExecutionMode.Declaration, null, false);
 			Assert.IsFalse(results.Any(), "Validation Failed: " + string.Join("; ", results.Select(r => r.ErrorMessage)));
 			Assert.IsTrue(data.IsValid());
 		}
@@ -129,7 +129,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData
 
 			var engineData = dao.CreateEngineData(data, null);
 
-			var results = engineData.Validate(ExecutionMode.Declaration, null);
+			var results = engineData.Validate(ExecutionMode.Declaration, null, false);
 			Assert.IsFalse(results.Any(), "Validation failed: " + string.Join("; ", results.Select(r => r.ErrorMessage)));
 			Assert.IsTrue(engineData.IsValid());
 		}
@@ -167,7 +167,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData
 
 			var engineData = dao.CreateEngineData(data, GearboxType.AMT);
 
-			var results = engineData.Validate(ExecutionMode.Declaration, null);
+			var results = engineData.Validate(ExecutionMode.Declaration, null, false);
 			Assert.IsFalse(results.Any(), "Validation failed: " + string.Join("; ", results.Select(r => r.ErrorMessage)));
 
 			Assert.IsTrue(engineData.IsValid());
@@ -207,10 +207,10 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData
 					},
 				}
 			};
-			var result = vehicleData.Validate(ExecutionMode.Engineering, null);
+			var result = vehicleData.Validate(ExecutionMode.Engineering, null, false);
 			Assert.IsTrue(!result.Any(), "validation should have succeded but failed." + string.Concat(result));
 
-			result = vehicleData.Validate(ExecutionMode.Declaration, null);
+			result = vehicleData.Validate(ExecutionMode.Declaration, null, false);
 			Assert.IsTrue(result.Any(), "validation should have failed, but succeeded.");
 		}
 
@@ -277,10 +277,10 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData
 				AxleGearData = axleGearData
 			};
 
-			var results = data.Validate(ExecutionMode.Declaration, null);
+			var results = data.Validate(ExecutionMode.Declaration, null, false);
 			Assert.IsTrue(results.Any(), "Validation should have failed, but succeded.");
 
-			results = vehicleData.Validate(ExecutionMode.Engineering, null);
+			results = vehicleData.Validate(ExecutionMode.Engineering, null, false);
 			Assert.IsTrue(!results.Any());
 		}
 
@@ -316,7 +316,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData
 				AxleGearData = axleGearData
 			};
 
-			var results = data.Validate(ExecutionMode.Declaration, null);
+			var results = data.Validate(ExecutionMode.Declaration, null, false);
 			Assert.IsTrue(results.Any(), "Validation should have failed, but succeded.");
 		}
 
@@ -326,7 +326,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData
 		[TestMethod]
 		public void Validation_Test()
 		{
-			var results = new DataObject().Validate(ExecutionMode.Declaration, null);
+			var results = new DataObject().Validate(ExecutionMode.Declaration, null, false);
 
 			// every field and property should be tested except private parent fields and properties and 
 			// (4*4+1) * 2 = 17*2= 34 - 4 private parent fields (+2 public field and property which are tested twice) = 32
@@ -344,7 +344,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData
 				}
 			};
 
-			var results = container.Validate(ExecutionMode.Declaration, null);
+			var results = container.Validate(ExecutionMode.Declaration, null, false);
 			Assert.AreEqual(1, results.Count);
 		}
 
@@ -367,7 +367,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData
 					VectoCSVFile.ReadStream(
 						InputDataHelper.InputDataAsStream("engine torque,downshift rpm [rpm],upshift rpm [rpm]	", vgbs)));
 
-			var results = shiftPolygon.Validate(ExecutionMode.Declaration, GearboxType.MT);
+			var results = shiftPolygon.Validate(ExecutionMode.Declaration, GearboxType.MT, false);
 			Assert.IsFalse(results.Any());
 
 			// change columns
@@ -376,7 +376,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData
 					VectoCSVFile.ReadStream(
 						InputDataHelper.InputDataAsStream("engine torque,upshift rpm [rpm], downshift rpm [rpm]	", vgbs)));
 
-			results = shiftPolygon.Validate(ExecutionMode.Declaration, GearboxType.MT);
+			results = shiftPolygon.Validate(ExecutionMode.Declaration, GearboxType.MT, false);
 			Assert.IsTrue(results.Any());
 		}
 
@@ -396,7 +396,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData
 					VectoCSVFile.ReadStream(
 						InputDataHelper.InputDataAsStream("engine torque,downshift rpm [rpm],upshift rpm [rpm]	", vgbs)));
 
-			var results = shiftPolygon.Validate(ExecutionMode.Declaration, GearboxType.ATSerial);
+			var results = shiftPolygon.Validate(ExecutionMode.Declaration, GearboxType.ATSerial, false);
 			Assert.IsFalse(results.Any());
 
 			// change columns
@@ -405,7 +405,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData
 					VectoCSVFile.ReadStream(
 						InputDataHelper.InputDataAsStream("engine torque,upshift rpm [rpm], downshift rpm [rpm]	", vgbs)));
 
-			results = shiftPolygon.Validate(ExecutionMode.Declaration, GearboxType.ATSerial);
+			results = shiftPolygon.Validate(ExecutionMode.Declaration, GearboxType.ATSerial, false);
 			Assert.IsFalse(results.Any());
 		}