diff --git a/VectoCore/Exceptions/VectoExceptions.cs b/VectoCore/Exceptions/VectoExceptions.cs
index f8d2788729c93587b39e011d6554055345385b64..818972fb275fb0add42d373a2c7027e2872ce48a 100644
--- a/VectoCore/Exceptions/VectoExceptions.cs
+++ b/VectoCore/Exceptions/VectoExceptions.cs
@@ -1,4 +1,5 @@
 using System;
+using System.IO;
 
 namespace TUGraz.VectoCore.Exceptions
 {
@@ -29,6 +30,10 @@ namespace TUGraz.VectoCore.Exceptions
 	{
 		public UnsupportedFileVersionException(string message) : base(message) {}
 		public UnsupportedFileVersionException(string message, Exception inner) : base(message, inner) {}
+
+		public UnsupportedFileVersionException(string filename, int version, Exception inner = null)
+			: base(string.Format("Unsupported Version of {0} file. Got Version {1}",
+				Path.GetExtension(filename), version), inner) {}
 	}
 
 	/// <summary>
diff --git a/VectoCore/FileIO/InputFileReader.cs b/VectoCore/FileIO/InputFileReader.cs
index 8c91cd6e93933b3ac33648a1cde7a06122cce64a..fb1543c2bef9de4cd733625ba51b79bdb273086d 100644
--- a/VectoCore/FileIO/InputFileReader.cs
+++ b/VectoCore/FileIO/InputFileReader.cs
@@ -21,7 +21,7 @@ namespace TUGraz.VectoCore.FileIO
 		protected VersionInfo GetFileVersion(string jsonStr)
 		{
 			var data = new { Header = new { FileVersion = -1 }, Body = new { SavedInDeclMode = false } };
-			JsonConvert.PopulateObject(jsonStr, data);
+			data = JsonConvert.DeserializeAnonymousType(jsonStr, data);
 			return new VersionInfo { SavedInDeclarationMode = data.Body.SavedInDeclMode, Version = data.Header.FileVersion };
 		}
 
diff --git a/VectoCore/Models/DeclarationData.cs b/VectoCore/Models/DeclarationData.cs
index 569e6b0091d2f3092f3c620c1e015dd57caeccca..9bd99b5e22b848739df91187896f7c365d6f3517 100644
--- a/VectoCore/Models/DeclarationData.cs
+++ b/VectoCore/Models/DeclarationData.cs
@@ -1,4 +1,10 @@
-using TUGraz.VectoCore.Models.Declaration;
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Globalization;
+using System.Linq;
+using System.Reflection;
+using TUGraz.VectoCore.Models.Declaration;
 using TUGraz.VectoCore.Models.SimulationComponent.Data;
 using TUGraz.VectoCore.Utils;
 
@@ -8,6 +14,8 @@ namespace TUGraz.VectoCore.Models
 	{
 		private static DeclarationData _instance;
 
+		public Segments Segments;
+
 		public Wheels Wheels { get; private set; }
 
 		public Rims Rims { get; private set; }
@@ -16,6 +24,7 @@ namespace TUGraz.VectoCore.Models
 		{
 			Wheels = new Wheels();
 			Rims = new Rims();
+			Segments = new Segments();
 		}
 
 		public static DeclarationData Instance()
@@ -23,13 +32,110 @@ namespace TUGraz.VectoCore.Models
 			return _instance ?? (_instance = new DeclarationData());
 		}
 
-		public static Segment GetSegment(VehicleCategory vehicleCategory, AxleConfiguration axleConfiguration,
-			Kilogram grossVehicleMassRating)
+		public Segment GetSegment(VehicleCategory vehicleCategory, AxleConfiguration axleConfiguration,
+			Kilogram grossVehicleMassRating, Kilogram curbWeight)
+		{
+			return Segments.Lookup(vehicleCategory, axleConfiguration, grossVehicleMassRating, curbWeight);
+		}
+	}
+
+	public enum MissionType
+	{
+		LongHaul,
+		RegionalDelivery,
+		UrbanDelivery,
+		MunicipalDelivery,
+		Construction,
+		HeavyUrban,
+		Urban,
+		Suburban,
+		Interurban,
+		Coach
+	}
+
+	public class Segments
+	{
+		private const string ResourceId = "TUGraz.VectoCore.Resources.Declaration.SegmentTable.csv";
+
+		private readonly DataTable _segmentTable;
+
+		internal Segments()
+		{
+			var myAssembly = Assembly.GetExecutingAssembly();
+			var file = myAssembly.GetManifestResourceStream(ResourceId);
+			_segmentTable = VectoCSVFile.ReadStream(file);
+
+			// normalize column names, remove whitespaces and lowercase
+			foreach (DataColumn col in _segmentTable.Columns) {
+				_segmentTable.Columns[col.ColumnName].ColumnName = col.ColumnName.ToLower().Replace(" ", "");
+			}
+		}
+
+		public Segment Lookup(VehicleCategory vehicleCategory, AxleConfiguration axleConfiguration,
+			Kilogram grossVehicleMassRating, Kilogram curbWeight)
 		{
-			throw new System.NotImplementedException();
+			var row = _segmentTable.Rows.Cast<DataRow>().First(r => r.Field<string>("tvehcat") == vehicleCategory.ToString()
+																	&& r.Field<string>("taxleconf") == axleConfiguration.ToString()
+																	&& r.Field<double>("ggw_min").SI<Ton>() <= grossVehicleMassRating.Double()
+																	&& r.Field<double>("ggw_max").SI<Ton>() > grossVehicleMassRating.Double());
+			var segment = new Segment();
+			segment.HDVClass = row.Field<string>("hdv_class");
+			segment.VACC = row.Field<string>("vacc");
+
+			var missions = new List<Mission>();
+
+			foreach (var missionType in Enum.GetValues(typeof(MissionType)).Cast<MissionType>()) {
+				if (row.Field<bool>(missionType.ToString())) {
+					var mission = new Mission();
+					mission.MissionType = missionType;
+
+					List<double> axles;
+					string[] trailerAxles;
+
+					if (missionType == MissionType.LongHaul) {
+						mission.VCDV = row.Field<string>("vcdv-" + missionType.ToString().ToLower());
+						axles = row.Field<string>("rigid/truckaxles-longhaul").Split('/').Select(double.Parse).ToList();
+						trailerAxles = row.Field<string>("traileraxles-" + missionType.ToString().ToLower()).Split('/');
+					} else {
+						mission.VCDV = row.Field<string>("vcdv-other");
+						axles = row.Field<string>("rigid/truckaxles-other").Split('/').Select(double.Parse).ToList();
+						trailerAxles = row.Field<string>("traileraxles-" + missionType.ToString().ToLower()).Split('/');
+					}
+
+					var weightPercent = double.Parse(trailerAxles[0]);
+					var count = int.Parse(trailerAxles[1]);
+					if (count > 0) {
+						axles.AddRange(Enumerable.Repeat(weightPercent / count, count));
+					}
+
+					mission.AxleWeightDistribution = axles.ToArray();
+
+					mission.MassExtra = row.Field<double>("massextra-" + missionType.ToString().ToLower()).SI<Kilogram>();
+
+					mission.MinLoad = 0.SI<Kilogram>();
+
+					if (row.Field<string>("refload-" + missionType.ToString().ToLower()) == "f") {
+						if (mission.MissionType == MissionType.LongHaul) {
+							mission.RefLoad = 588.2 * grossVehicleMassRating - 2511.8;
+						} else {
+							mission.RefLoad = 394.1 * grossVehicleMassRating - 1705.9;
+						}
+					} else {
+						mission.RefLoad = row.Field<double>("refload-" + missionType.ToString().ToLower()).SI<Kilogram>();
+					}
+
+					mission.MaxLoad = grossVehicleMassRating - mission.MassExtra - curbWeight;
+					//todo: rename cycle files to equal the enumeration
+					mission.CycleFile = missionType + ".vdri";
+					missions.Add(mission);
+				}
+			}
+			segment.Missions = missions.ToArray();
+			return segment;
 		}
 	}
 
+
 	public class Segment
 	{
 		public string HDVClass { get; internal set; }
@@ -39,12 +145,13 @@ namespace TUGraz.VectoCore.Models
 
 	public class Mission
 	{
+		public MissionType MissionType { get; set; }
 		public string VCDV { get; set; }
-		public string Name { get; set; }
 		public double[] AxleWeightDistribution { get; set; }
-		public double MassExtra { get; set; }
+		public Kilogram MassExtra { get; set; }
 		public Kilogram RefLoad { get; set; }
+		public Kilogram MinLoad { get; set; }
+		public Kilogram MaxLoad { get; set; }
 		public string CycleFile { get; set; }
-		public Kilogram[] Loadings { get; set; }
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs b/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs
index d56f4ac81bbd75fefd8987cf97a018a016af1267..6915fb646286326f9cedbfb4692ee4eeef0d9541 100644
--- a/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs
+++ b/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs
@@ -218,7 +218,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 					return;
 				}
 
-				var vehicleData = EngineeringModeSimulationComponentFactory.Instance().CreateVehicleData(vehicleFile);
+				var vehicleData = EngineeringModeFactory.Instance().CreateVehicleData(vehicleFile);
 				//VehicleData.ReadFromFile(vehicleFile);
 				_vehicle = new Vehicle(_container, vehicleData);
 			}
diff --git a/VectoCore/Models/SimulationComponent/Factories/DeclarationModeFactory.cs b/VectoCore/Models/SimulationComponent/Factories/DeclarationModeFactory.cs
index 7f6f568f11de181318d6d8e7757d6d8dfd512bbc..a54ef5873cc63e130afbd11fa4ca7a34e696e80e 100644
--- a/VectoCore/Models/SimulationComponent/Factories/DeclarationModeFactory.cs
+++ b/VectoCore/Models/SimulationComponent/Factories/DeclarationModeFactory.cs
@@ -33,8 +33,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Factories
 				case 5:
 					return CreateVehicleData(Path.GetDirectoryName(filename), Deserialize<VehicleFileV5Declaration>(json));
 				default:
-					throw new UnsupportedFileVersionException(string.Format("Unsupported Version of {0} file. Got Version {1}",
-						Path.GetExtension(filename), fileInfo.Version));
+					throw new UnsupportedFileVersionException(filename, fileInfo.Version);
 			}
 		}
 
@@ -62,8 +61,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Factories
 				case 5:
 					return CreateVectoJobData(Path.GetDirectoryName(filename), Deserialize<VectoJobFileV2Declaration>(json));
 				default:
-					throw new UnsupportedFileVersionException(string.Format("Unsupported Version of {0} file. Got Version {1}",
-						Path.GetExtension(filename), fileInfo.Version));
+					throw new UnsupportedFileVersionException(filename, fileInfo.Version);
 			}
 		}
 
diff --git a/VectoCore/Models/SimulationComponent/Factories/EngineeringModeSimulationComponentFactory.cs b/VectoCore/Models/SimulationComponent/Factories/EngineeringModeFactory.cs
similarity index 80%
rename from VectoCore/Models/SimulationComponent/Factories/EngineeringModeSimulationComponentFactory.cs
rename to VectoCore/Models/SimulationComponent/Factories/EngineeringModeFactory.cs
index 310604e719f46febc67edb9a64b1bf21ab3ac5ed..786d0279312d8689a384b5fc0afa7d5054186ce3 100644
--- a/VectoCore/Models/SimulationComponent/Factories/EngineeringModeSimulationComponentFactory.cs
+++ b/VectoCore/Models/SimulationComponent/Factories/EngineeringModeFactory.cs
@@ -8,33 +8,38 @@ using TUGraz.VectoCore.Utils;
 
 namespace TUGraz.VectoCore.Models.SimulationComponent.Factories
 {
-	public class EngineeringModeSimulationComponentFactory : InputFileReader
+	public class EngineeringModeFactory : InputFileReader
 	{
-		protected static EngineeringModeSimulationComponentFactory _instance;
+		protected static EngineeringModeFactory _instance;
 
-		public static EngineeringModeSimulationComponentFactory Instance()
+		public static EngineeringModeFactory Instance()
 		{
-			return _instance ?? (_instance = new EngineeringModeSimulationComponentFactory());
+			return _instance ?? (_instance = new EngineeringModeFactory());
+		}
+
+		private void CheckEngineeringMode(string fileName, VersionInfo fileInfo)
+		{
+			if (fileInfo.SavedInDeclarationMode) {
+				Log.WarnFormat("File {0} was saved in Declaration Mode but is used for Engineering Mode!", fileName);
+			}
 		}
 
 		public VehicleData CreateVehicleData(string fileName)
 		{
 			var json = File.ReadAllText(fileName);
 			var fileInfo = GetFileVersion(json);
+			CheckEngineeringMode(fileName, fileInfo);
 
-			if (fileInfo.Item2) {
-				Log.WarnFormat("File {0} was saved in Declaration Mode but is used for Engineering Mode!", fileName);
-			}
-
-			switch (fileInfo.Item1) {
+			switch (fileInfo.Version) {
 				case 5:
 					var data = JsonConvert.DeserializeObject<VehicleFileV5Engineering>(json);
 					return CreateVehicleData(Path.GetDirectoryName(fileName), data.Body);
 				default:
-					throw new UnsupportedFileVersionException("Unsupported Version of .vveh file. Got Version " + fileInfo.Item1);
+					throw new UnsupportedFileVersionException(fileName, fileInfo.Version);
 			}
 		}
 
+
 		protected VehicleData CreateVehicleData(string basePath, VehicleFileV5Engineering.DataBodyEng data)
 		{
 			return new VehicleData {
diff --git a/VectoCore/Resources/Declaration/SegmentTable.csv b/VectoCore/Resources/Declaration/SegmentTable.csv
new file mode 100644
index 0000000000000000000000000000000000000000..ed3ff4b8c2e8b72a1d0cbb58da7af290114ba932
--- /dev/null
+++ b/VectoCore/Resources/Declaration/SegmentTable.csv
@@ -0,0 +1,26 @@
+Valid,tVehCat,tAxleConf,GVW_Min,GVW_Max,HDV_Class,VACC,VCDV - Long Haul,VCDV - Other,Rigid/Truck Axles - Long haul,Rigid/Truck Axles - Other,Trailer Axles - Long haul,Trailer Axles - Other,LongHaul,RegionalDelivery,UrbanDelivery,MunicipalUtility,Construction,HeavyUrban,Urban,Suburban,Interurban,Coach,MassExtra - LongHaul,MassExtra - RegionalDelivery,MassExtra - UrbanDelivery,MassExtra - MunicipalUtility,MassExtra - Construction,MassExtra - HeavyUrban,MassExtra - Urban,MassExtra - Suburban,MassExtra - Interurban,MassExtra - Coach,RefLoad - LongHaul,RefLoad - RegionalDelivery,RefLoad - UrbanDelivery,RefLoad - MunicipalUtility,RefLoad - Construction,RefLoad - HeavyUrban,RefLoad - Urban,RefLoad - Suburban,RefLoad - Interurban,RefLoad - Coach,WHTCWF - LongHaul,WHTCWF - RegionalDelivery,WHTCWF - UrbanDelivery,WHTCWF - MunicipalUtility,WHTCWF - Construction,WHTCWF - HeavyUrban,WHTCWF - Urban,WHTCWF - Suburban,WHTCWF - Interurban,WHTCWF - Coach
+0,RigidTruck,4x2,0,7.5,0,Truck.vacc,-,RigidSolo.vcdv,???,???,0/0,0/0,0,1,1,0,0,0,0,0,0,0,-,???,???,-,-,-,-,-,-,-,-,???,???,-,-,-,-,-,-,-,11/0/89,17/30/53,69/27/4,98/0/2,62/32/6,100/0/0,100/0/0,100/0/0,45/36/19,0/22/78
+1,RigidTruck,4x2,7.5,10,1,Truck.vacc,-,RigidSolo.vcdv,-,45/55,0/0,0/0,0,1,1,0,0,0,0,0,0,0,-,1600,1600,-,-,-,-,-,-,-,-,f,f,-,-,-,-,-,-,-,11/0/89,17/30/53,69/27/4,98/0/2,62/32/6,100/0/0,100/0/0,100/0/0,45/36/19,0/22/78
+1,RigidTruck,4x2,10,12,2,Truck.vacc,RigidSolo.vcdv,RigidSolo.vcdv,40/60,45/55,0/0,0/0,1,1,1,0,0,0,0,0,0,0,1900,1900,1900,-,-,-,-,-,-,-,f,f,f,-,-,-,-,-,-,-,11/0/89,17/30/53,69/27/4,98/0/2,62/32/6,100/0/0,100/0/0,100/0/0,45/36/19,0/22/78
+1,RigidTruck,4x2,12,16,3,Truck.vacc,-,RigidSolo.vcdv,-,40/60,0/0,0/0,0,1,1,0,0,0,0,0,0,0,-,2000,2000,-,-,-,-,-,-,-,-,f,f,-,-,-,-,-,-,-,11/0/89,17/30/53,69/27/4,98/0/2,62/32/6,100/0/0,100/0/0,100/0/0,45/36/19,0/22/78
+1,RigidTruck,4x2,16,99,4,Truck.vacc,RigidTrailer.vcdv,RigidSolo.vcdv,20/30,45/55,50/2,0/0,1,1,0,1,0,0,0,0,0,0,7500,2100,-,2100,-,-,-,-,-,-,14000,4400,-,4400,-,-,-,-,-,-,11/0/89,17/30/53,69/27/4,98/0/2,62/32/6,100/0/0,100/0/0,100/0/0,45/36/19,0/22/78
+1,Tractor,4x2,16,99,5,Truck.vacc,TractorSemitrailer.vcdv,TractorSemitrailer.vcdv,20/25,25/25,55/3,50/3,1,1,0,0,0,0,0,0,0,0,7500,7500,-,-,-,-,-,-,-,-,19300,12900,-,-,-,-,-,-,-,-,11/0/89,17/30/53,69/27/4,98/0/2,62/32/6,100/0/0,100/0/0,100/0/0,45/36/19,0/22/78
+0,RigidTruck,4x4,7.5,16,6,Truck.vacc,-,RigidSolo.vcdv,???,???,0/0,0/0,0,0,0,1,1,0,0,0,0,0,-,-,-,???,???,-,-,-,-,-,-,-,-,???,???,-,-,-,-,-,11/0/89,17/30/53,69/27/4,98/0/2,62/32/6,100/0/0,100/0/0,100/0/0,45/36/19,0/22/78
+0,RigidTruck,4x4,16,99,7,Truck.vacc,-,RigidSolo.vcdv,???,???,0/0,0/0,0,0,0,0,1,0,0,0,0,0,-,-,-,-,B5,-,-,-,-,-,-,-,-,-,4300,-,-,-,-,-,11/0/89,17/30/53,69/27/4,98/0/2,62/32/6,100/0/0,100/0/0,100/0/0,45/36/19,0/22/78
+0,Tractor,4x4,16,99,8,Truck.vacc,-,TractorSemitrailer.vcdv,???,???,0/0,0/0,0,0,0,0,1,0,0,0,0,0,-,-,-,-,???,-,-,-,-,-,-,-,-,-,???,-,-,-,-,-,11/0/89,17/30/53,69/27/4,98/0/2,62/32/6,100/0/0,100/0/0,100/0/0,45/36/19,0/22/78
+1,RigidTruck,6x2,0,99,9,Truck.vacc,RigidTrailer.vcdv,RigidSolo.vcdv,20/30/15,35/40/25,35/2,0/0,1,1,0,1,0,0,0,0,0,0,7600,2200,-,2200,-,-,-,-,-,-,17900,7100,-,7100,-,-,-,-,-,-,11/0/89,17/30/53,69/27/4,98/0/2,62/32/6,100/0/0,100/0/0,100/0/0,45/36/19,0/22/78
+1,Tractor,6x2,0,99,10,Truck.vacc,TractorSemitrailer.vcdv,TractorSemitrailer.vcdv,15/10/20,20/10/20,55/2,50/2,1,1,0,0,0,0,0,0,0,0,7500,7500,-,-,-,-,-,-,-,-,19000,12700,-,-,-,-,-,-,-,-,11/0/89,17/30/53,69/27/4,98/0/2,62/32/6,100/0/0,100/0/0,100/0/0,45/36/19,0/22/78
+0,RigidTruck,6x4,0,99,11,Truck.vacc,-,RigidSolo.vcdv,???,???,0/0,0/0,0,0,0,0,1,0,0,0,0,0,-,-,-,-,B7,-,-,-,-,-,-,-,-,-,7600,-,-,-,-,-,11/0/89,17/30/53,69/27/4,98/0/2,62/32/6,100/0/0,100/0/0,100/0/0,45/36/19,0/22/78
+0,Tractor,6x4,0,99,12,Truck.vacc,-,TractorSemitrailer.vcdv,???,???,0/0,0/0,0,0,0,0,1,0,0,0,0,0,-,-,-,-,ST2,-,-,-,-,-,-,-,-,-,12100,-,-,-,-,-,11/0/89,17/30/53,69/27/4,98/0/2,62/32/6,100/0/0,100/0/0,100/0/0,45/36/19,0/22/78
+0,RigidTruck,6x6,0,99,13,Truck.vacc,-,RigidSolo.vcdv,???,???,0/0,0/0,0,0,0,0,1,0,0,0,0,0,-,-,-,-,0,-,-,-,-,-,-,-,-,-,???,-,-,-,-,-,11/0/89,17/30/53,69/27/4,98/0/2,62/32/6,100/0/0,100/0/0,100/0/0,45/36/19,0/22/78
+0,Tractor,6x6,0,99,14,Truck.vacc,-,TractorSemitrailer.vcdv,???,???,0/0,0/0,0,0,0,0,1,0,0,0,0,0,-,-,-,-,0,-,-,-,-,-,-,-,-,-,???,-,-,-,-,-,11/0/89,17/30/53,69/27/4,98/0/2,62/32/6,100/0/0,100/0/0,100/0/0,45/36/19,0/22/78
+0,RigidTruck,8x2,0,99,15,Truck.vacc,-,RigidSolo.vcdv,???,???,0/0,0/0,0,1,0,0,0,0,0,0,0,0,-,???,-,-,-,-,-,-,-,-,-,???,-,-,-,-,-,-,-,-,11/0/89,17/30/53,69/27/4,98/0/2,62/32/6,100/0/0,100/0/0,100/0/0,45/36/19,0/22/78
+0,RigidTruck,8x4,0,99,16,Truck.vacc,-,RigidSolo.vcdv,???,???,0/0,0/0,0,0,0,0,1,0,0,0,0,0,-,-,-,-,B9,-,-,-,-,-,-,-,-,-,11600,-,-,-,-,-,11/0/89,17/30/53,69/27/4,98/0/2,62/32/6,100/0/0,100/0/0,100/0/0,45/36/19,0/22/78
+0,RigidTruck,8x6,0,99,17,Truck.vacc,-,RigidSolo.vcdv,???,???,0/0,0/0,0,0,0,0,1,0,0,0,0,0,-,-,-,-,???,-,-,-,-,-,-,-,-,-,???,-,-,-,-,-,11/0/89,17/30/53,69/27/4,98/0/2,62/32/6,100/0/0,100/0/0,100/0/0,45/36/19,0/22/78
+0,RigidTruck,8x8,0,99,17,Truck.vacc,-,-,???,???,0/0,0/0,0,0,0,0,1,0,0,0,0,0,-,-,-,-,???,-,-,-,-,-,-,-,-,-,???,-,-,-,-,-,11/0/89,17/30/53,69/27/4,98/0/2,62/32/6,100/0/0,100/0/0,100/0/0,45/36/19,0/22/78
+0,CityBus,4x2,0,18,B1,N/A,-,CoachBus.vcdv,???,???,0/0,0/0,0,0,0,0,0,1,1,1,0,0,-,-,-,-,-,???,???,???,-,-,-,-,-,-,-,???,???,???,-,-,11/0/89,17/30/53,69/27/4,98/0/2,62/32/6,100/0/0,100/0/0,100/0/0,45/36/19,0/22/78
+0,InterurbanBus,4x2,0,18,B2,N/A,-,CoachBus.vcdv,???,???,0/0,0/0,0,0,0,0,0,0,0,0,1,0,-,-,-,-,-,-,-,-,???,-,-,-,-,-,-,-,-,-,???,-,11/0/89,17/30/53,69/27/4,98/0/2,62/32/6,100/0/0,100/0/0,100/0/0,45/36/19,0/22/78
+0,Coach,4x2,0,18,B3,N/A,-,CoachBus.vcdv,???,???,0/0,0/0,0,0,0,0,0,0,0,0,0,1,-,-,-,-,-,-,-,-,-,???,-,-,-,-,-,-,-,-,-,???,11/0/89,17/30/53,69/27/4,98/0/2,62/32/6,100/0/0,100/0/0,100/0/0,45/36/19,0/22/78
+0,CityBus,6x2,18,99,B4,N/A,-,CoachBus.vcdv,???,???,0/0,0/0,0,0,0,0,0,1,1,1,0,0,-,-,-,-,-,???,???,???,-,-,-,-,-,-,-,???,???,???,-,-,11/0/89,17/30/53,69/27/4,98/0/2,62/32/6,100/0/0,100/0/0,100/0/0,45/36/19,0/22/78
+0,InterurbanBus,6x2,18,99,B5,N/A,-,CoachBus.vcdv,???,???,0/0,0/0,0,0,0,0,0,0,0,0,1,0,-,-,-,-,-,-,-,-,???,-,-,-,-,-,-,-,-,-,???,-,11/0/89,17/30/53,69/27/4,98/0/2,62/32/6,100/0/0,100/0/0,100/0/0,45/36/19,0/22/78
+0,Coach,6x2,18,99,B6,N/A,-,CoachBus.vcdv,???,???,0/0,0/0,0,0,0,0,0,0,0,0,0,1,-,-,-,-,-,-,-,-,-,???,-,-,-,-,-,-,-,-,-,???,11/0/89,17/30/53,69/27/4,98/0/2,62/32/6,100/0/0,100/0/0,100/0/0,45/36/19,0/22/78
diff --git a/VectoCore/VectoCore.csproj b/VectoCore/VectoCore.csproj
index de31a10e38d54565c203bc733b5da7ab2603f692..e94212d1d4eb916b0cc11e45be961bef3d3744a4 100644
--- a/VectoCore/VectoCore.csproj
+++ b/VectoCore/VectoCore.csproj
@@ -142,7 +142,7 @@
     <Compile Include="Models\SimulationComponent\Data\RetarderLossMap.cs" />
     <Compile Include="Models\SimulationComponent\Data\VehicleData.cs" />
     <Compile Include="Models\SimulationComponent\Factories\DeclarationModeFactory.cs" />
-    <Compile Include="Models\SimulationComponent\Factories\EngineeringModeSimulationComponentFactory.cs" />
+    <Compile Include="Models\SimulationComponent\Factories\EngineeringModeFactory.cs" />
     <Compile Include="Models\SimulationComponent\IClutch.cs" />
     <Compile Include="Models\SimulationComponent\IEngineOnlyDrivingCycle.cs" />
     <Compile Include="Models\SimulationComponent\IDriverDemandDrivingCycle.cs" />
@@ -207,6 +207,7 @@
     <None Include="packages.config" />
     <EmbeddedResource Include="Resources\Declaration\Rims.csv" />
     <EmbeddedResource Include="Resources\Declaration\Wheels.csv" />
+    <EmbeddedResource Include="Resources\Declaration\SegmentTable.csv" />
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
diff --git a/VectoCoreTest/Models/DeclarationDataTest.cs b/VectoCoreTest/Models/DeclarationDataTest.cs
index dacd84f8c23e5872c246bd66e83c8ff237e12b00..04408e500a253ea42780df8eafb3116bb92d8bd2 100644
--- a/VectoCoreTest/Models/DeclarationDataTest.cs
+++ b/VectoCoreTest/Models/DeclarationDataTest.cs
@@ -43,6 +43,7 @@ namespace TUGraz.VectoCore.Tests.Models
 			//var job = factory.ReadJobFile("12t Delivery Truck.vecto");
 			//var vehicleData = factory.ReadVehicleData(job.VehicleFile);
 
+			//mock vehicleData
 			var vehicleData = new {
 				VehicleCategory = VehicleCategory.RigidTruck,
 				AxleConfiguration = AxleConfiguration.AxleConfig4x2,
@@ -50,8 +51,8 @@ namespace TUGraz.VectoCore.Tests.Models
 				CurbWeight = 5850.SI<Kilogram>()
 			};
 
-			var segment = DeclarationData.GetSegment(vehicleData.VehicleCategory, vehicleData.AxleConfiguration,
-				vehicleData.GrossVehicleMassRating);
+			var segment = DeclarationData.Instance().GetSegment(vehicleData.VehicleCategory, vehicleData.AxleConfiguration,
+				vehicleData.GrossVehicleMassRating, vehicleData.CurbWeight);
 
 
 			Assert.AreEqual(2, segment.HDVClass);
@@ -59,49 +60,41 @@ namespace TUGraz.VectoCore.Tests.Models
 			Assert.AreEqual(3, segment.Missions.Length);
 
 			var longHaulMission = segment.Missions[0];
-			Assert.AreEqual("LongHaul", longHaulMission.Name);
+			Assert.AreEqual(MissionType.LongHaul, longHaulMission.MissionType);
 			Assert.AreEqual("RigidSolo.vcdv", longHaulMission.VCDV);
 			Assert.AreEqual(new[] { 40, 60 }, longHaulMission.AxleWeightDistribution);
-			Assert.AreEqual(1900, longHaulMission.MassExtra);
-			Assert.AreEqual(588.2 * vehicleData.GrossVehicleMassRating - 2511.8, longHaulMission.RefLoad);
+			Assert.AreEqual(1900.SI<Kilogram>(), longHaulMission.MassExtra);
 			Assert.AreEqual("Long_Haul.vdri", longHaulMission.CycleFile);
-
-			Assert.AreEqual(
-				new[] {
-					0.SI<Kilogram>(), longHaulMission.RefLoad,
-					vehicleData.GrossVehicleMassRating - longHaulMission.MassExtra - vehicleData.CurbWeight
-				},
-				longHaulMission.Loadings);
+			Assert.AreEqual(0.SI<Kilogram>(), longHaulMission.MinLoad);
+			Assert.AreEqual(588.2 * vehicleData.GrossVehicleMassRating - 2511.8, longHaulMission.RefLoad);
+			Assert.AreEqual(vehicleData.GrossVehicleMassRating - longHaulMission.MassExtra - vehicleData.CurbWeight,
+				longHaulMission.MaxLoad);
 
 			var regionalDeliveryMission = segment.Missions[1];
-			Assert.AreEqual("RegionalDelivery", regionalDeliveryMission.Name);
+			Assert.AreEqual("RegionalDelivery", regionalDeliveryMission.MissionType);
 			Assert.AreEqual("RigidSolo.vcdv", regionalDeliveryMission.VCDV);
 			Assert.AreEqual(new[] { 45, 55 }, regionalDeliveryMission.AxleWeightDistribution);
-			Assert.AreEqual(1900, regionalDeliveryMission.MassExtra);
-			Assert.AreEqual(394.1 * vehicleData.GrossVehicleMassRating - 1705.9, regionalDeliveryMission.RefLoad);
+			Assert.AreEqual(1900.SI<Kilogram>(), regionalDeliveryMission.MassExtra);
+
 			Assert.AreEqual("Regional_Delivery.vdri", regionalDeliveryMission.CycleFile);
 
-			Assert.AreEqual(
-				new[] {
-					0.SI<Kilogram>(), regionalDeliveryMission.RefLoad,
-					vehicleData.GrossVehicleMassRating - regionalDeliveryMission.MassExtra - vehicleData.CurbWeight
-				},
-				regionalDeliveryMission.Loadings);
+			Assert.AreEqual(0.SI<Kilogram>(), regionalDeliveryMission.MinLoad);
+			Assert.AreEqual(394.1 * vehicleData.GrossVehicleMassRating - 1705.9, regionalDeliveryMission.RefLoad);
+			Assert.AreEqual(vehicleData.GrossVehicleMassRating - regionalDeliveryMission.MassExtra - vehicleData.CurbWeight,
+				regionalDeliveryMission.MaxLoad);
 
 			var urbanDeliveryMission = segment.Missions[1];
-			Assert.AreEqual("UrbanDelivery", urbanDeliveryMission.Name);
+			Assert.AreEqual("UrbanDelivery", urbanDeliveryMission.MissionType);
 			Assert.AreEqual("RigidSolo.vcdv", urbanDeliveryMission.VCDV);
 			Assert.AreEqual(new[] { 45, 55 }, urbanDeliveryMission.AxleWeightDistribution);
-			Assert.AreEqual(1900, urbanDeliveryMission.MassExtra);
-			Assert.AreEqual(394.1 * vehicleData.GrossVehicleMassRating - 1705.9, urbanDeliveryMission.RefLoad);
+			Assert.AreEqual(1900.SI<Kilogram>(), urbanDeliveryMission.MassExtra);
+
 			Assert.AreEqual("Urban_Delivery.vdri", urbanDeliveryMission.CycleFile);
 
-			Assert.AreEqual(
-				new[] {
-					0.SI<Kilogram>(), urbanDeliveryMission.RefLoad,
-					vehicleData.GrossVehicleMassRating - urbanDeliveryMission.MassExtra - vehicleData.CurbWeight
-				},
-				urbanDeliveryMission.Loadings);
+			Assert.AreEqual(0.SI<Kilogram>(), urbanDeliveryMission.MinLoad);
+			Assert.AreEqual(394.1 * vehicleData.GrossVehicleMassRating - 1705.9, urbanDeliveryMission.RefLoad);
+			Assert.AreEqual(vehicleData.GrossVehicleMassRating - urbanDeliveryMission.MassExtra - vehicleData.CurbWeight,
+				urbanDeliveryMission.MaxLoad);
 
 
 			//var runs = new List<IVectoSimulator>();
diff --git a/VectoCoreTest/Models/SimulationComponent/VehicleTest.cs b/VectoCoreTest/Models/SimulationComponent/VehicleTest.cs
index 71fae28a04951b850088933aeb3fb5c024593418..30c5ea32495d94fa710064c44a1c316250b36053 100644
--- a/VectoCoreTest/Models/SimulationComponent/VehicleTest.cs
+++ b/VectoCoreTest/Models/SimulationComponent/VehicleTest.cs
@@ -19,7 +19,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 		{
 			var container = new VehicleContainer();
 
-			var vehicleData = EngineeringModeSimulationComponentFactory.Instance().CreateVehicleData(VehicleDataFile);
+			var vehicleData = EngineeringModeFactory.Instance().CreateVehicleData(VehicleDataFile);
 			//VehicleData.ReadFromFile(VehicleDataFile);
 			//vehicleData.CrossWindCorrection = VehicleData.CrossWindCorrectionMode.NoCorrection;
 			var vehicle = new Vehicle(container, vehicleData, 17.210535);
diff --git a/VectoCoreTest/Models/SimulationComponent/WheelsTest.cs b/VectoCoreTest/Models/SimulationComponent/WheelsTest.cs
index 8d5c1056c1c0454405c39b43f0a8f1ec39fe0b2e..9a874c5931e895f3ed3d28f4b77cd8b164b4424f 100644
--- a/VectoCoreTest/Models/SimulationComponent/WheelsTest.cs
+++ b/VectoCoreTest/Models/SimulationComponent/WheelsTest.cs
@@ -19,7 +19,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 		public void WheelsRequestTest()
 		{
 			var container = new VehicleContainer();
-			var vehicleData = EngineeringModeSimulationComponentFactory.Instance().CreateVehicleData(VehicleDataFile);
+			var vehicleData = EngineeringModeFactory.Instance().CreateVehicleData(VehicleDataFile);
 
 			IWheels wheels = new Wheels(container, vehicleData.DynamicTyreRadius);
 			var mockPort = new MockTnOutPort();
diff --git a/VectoCoreTest/Models/SimulationComponentData/VehicleDataTest.cs b/VectoCoreTest/Models/SimulationComponentData/VehicleDataTest.cs
index ba8e708d358a118eaa1dc0d1cc58386fbbb00936..1ec79b7715cd6dddd8743bb288a21a37d2765b42 100644
--- a/VectoCoreTest/Models/SimulationComponentData/VehicleDataTest.cs
+++ b/VectoCoreTest/Models/SimulationComponentData/VehicleDataTest.cs
@@ -12,7 +12,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData
 		[TestMethod]
 		public void ReadVehicleFileTest()
 		{
-			var vehicleData = EngineeringModeSimulationComponentFactory.Instance().CreateVehicleData(VehicleDataFile);
+			var vehicleData = EngineeringModeFactory.Instance().CreateVehicleData(VehicleDataFile);
 				//VehicleData.ReadFromFile(VehicleDataFile);
 
 			Assert.AreEqual(VehicleCategory.Coach, vehicleData.VehicleCategory);