diff --git a/Documentation/XML/VectoParameters.html b/Documentation/XML/VectoParameters.html
index 3f14d0685465c8728e82d5fb9feaf927275e7eee..85b56480635151eb4b62496ddd3f039022b82018 100644
--- a/Documentation/XML/VectoParameters.html
+++ b/Documentation/XML/VectoParameters.html
@@ -222,7 +222,7 @@ div.filter span.hidden span.icon {max-width: 256px;max-height: 256px;background-
 &lt;!--/*--&gt;</root><!--*/--></style></head><body>
 		<h1>Vecto Input Parameters</h1>
 		<div class="schemaVersion">Schema Version: 0.6 1.0 1.0</div>
-		<div class="generated">Generated: 06.12.2017 17:01</div>
+		<div class="generated">Generated: 15.12.2017 10:50</div>
 		<div class="nextParameter">Next free parameter: 269</div>
 		<table border="1" class="parameters">
 			<thead>
@@ -1144,9 +1144,9 @@ div.filter span.hidden span.icon {max-width: 256px;max-height: 256px;background-
 					<td class="xmltype">tns:TyreDimensionType</td>
 					<td class="comment">
 						<div class="declaration">
-					Allowed values: <span class="enumEntry">"9 R22.5"</span>, <span class="enumEntry">"9.00 R20"</span>, <span class="enumEntry">"9.5 R17.5"</span>, <span class="enumEntry">"10 R17.5"</span>, <span class="enumEntry">"10 R22.5"</span>, <span class="enumEntry">"10.00 R20"</span>, <span class="enumEntry">"11 R22.5"</span>, <span class="enumEntry">"11.00 R20"</span>, <span class="enumEntry">"11.00 R22"</span>, <span class="enumEntry">"12 R22.5"</span>, <span class="enumEntry">"12.00 R20"</span>, <span class="enumEntry">"12.00 R24"</span>, <span class="enumEntry">"12.5 R20"</span>, <span class="enumEntry">"13 R22.5"</span>, <span class="enumEntry">"14.00 R20"</span>, <span class="enumEntry">"14.5 R20"</span>, <span class="enumEntry">"16.00 R20"</span>, <span class="enumEntry">"205/75 R17.5"</span>, <span class="enumEntry">"215/75 R17.5"</span>, <span class="enumEntry">"225/70 R17.5"</span>, <span class="enumEntry">"225/75 R17.5"</span>, <span class="enumEntry">"235/75 R17.5"</span>, <span class="enumEntry">"245/70 R17.5"</span>, <span class="enumEntry">"245/70 R19.5"</span>, <span class="enumEntry">"255/70 R22.5"</span>, <span class="enumEntry">"265/70 R17.5"</span>, <span class="enumEntry">"265/70 R19.5"</span>, <span class="enumEntry">"275/70 R22.5"</span>, <span class="enumEntry">"275/80 R22.5"</span>, <span class="enumEntry">"285/60 R22.5"</span>, <span class="enumEntry">"285/70 R19.5"</span>, <span class="enumEntry">"295/55 R22.5"</span>, <span class="enumEntry">"295/60 R22.5"</span>, <span class="enumEntry">"295/80 R22.5"</span>, <span class="enumEntry">"305/60 R22.5"</span>, <span class="enumEntry">"305/70 R19.5"</span>, <span class="enumEntry">"305/70 R22.5"</span>, <span class="enumEntry">"305/75 R24.5"</span>, <span class="enumEntry">"315/45 R22.5"</span>, <span class="enumEntry">"315/60 R22.5"</span>, <span class="enumEntry">"315/70 R22.5"</span>, <span class="enumEntry">"315/80 R22.5"</span>, <span class="enumEntry">"325/95 R24"</span>, <span class="enumEntry">"335/80 R20"</span>, <span class="enumEntry">"355/50 R22.5"</span>, <span class="enumEntry">"365/70 R22.5"</span>, <span class="enumEntry">"365/80 R20"</span>, <span class="enumEntry">"365/85 R20"</span>, <span class="enumEntry">"375/45 R22.5"</span>, <span class="enumEntry">"375/50 R22.5"</span>, <span class="enumEntry">"375/90 R22.5"</span>, <span class="enumEntry">"385/55 R22.5"</span>, <span class="enumEntry">"385/65 R22.5"</span>, <span class="enumEntry">"395/85 R20"</span>, <span class="enumEntry">"425/65 R22.5"</span>, <span class="enumEntry">"495/45 R22.5"</span>, <span class="enumEntry">"525/65 R22.5"</span></div>
+					Allowed values: <span class="enumEntry">"9 R22.5"</span>, <span class="enumEntry">"9.00 R20"</span>, <span class="enumEntry">"9.5 R17.5"</span>, <span class="enumEntry">"10 R17.5"</span>, <span class="enumEntry">"10 R22.5"</span>, <span class="enumEntry">"10.00 R20"</span>, <span class="enumEntry">"11 R22.5"</span>, <span class="enumEntry">"11.00 R20"</span>, <span class="enumEntry">"12 R22.5"</span>, <span class="enumEntry">"12.00 R20"</span>, <span class="enumEntry">"12.00 R24"</span>, <span class="enumEntry">"12.5 R20"</span>, <span class="enumEntry">"13 R22.5"</span>, <span class="enumEntry">"14.00 R20"</span>, <span class="enumEntry">"14.5 R20"</span>, <span class="enumEntry">"16.00 R20"</span>, <span class="enumEntry">"205/75 R17.5"</span>, <span class="enumEntry">"215/75 R17.5"</span>, <span class="enumEntry">"225/70 R17.5"</span>, <span class="enumEntry">"225/75 R17.5"</span>, <span class="enumEntry">"235/75 R17.5"</span>, <span class="enumEntry">"245/70 R17.5"</span>, <span class="enumEntry">"245/70 R19.5"</span>, <span class="enumEntry">"255/70 R22.5"</span>, <span class="enumEntry">"265/70 R17.5"</span>, <span class="enumEntry">"265/70 R19.5"</span>, <span class="enumEntry">"275/70 R22.5"</span>, <span class="enumEntry">"275/80 R22.5"</span>, <span class="enumEntry">"285/60 R22.5"</span>, <span class="enumEntry">"285/70 R19.5"</span>, <span class="enumEntry">"295/55 R22.5"</span>, <span class="enumEntry">"295/60 R22.5"</span>, <span class="enumEntry">"295/80 R22.5"</span>, <span class="enumEntry">"305/60 R22.5"</span>, <span class="enumEntry">"305/70 R19.5"</span>, <span class="enumEntry">"305/70 R22.5"</span>, <span class="enumEntry">"305/75 R24.5"</span>, <span class="enumEntry">"315/45 R22.5"</span>, <span class="enumEntry">"315/60 R22.5"</span>, <span class="enumEntry">"315/70 R22.5"</span>, <span class="enumEntry">"315/80 R22.5"</span>, <span class="enumEntry">"325/95 R24"</span>, <span class="enumEntry">"335/80 R20"</span>, <span class="enumEntry">"355/50 R22.5"</span>, <span class="enumEntry">"365/70 R22.5"</span>, <span class="enumEntry">"365/80 R20"</span>, <span class="enumEntry">"365/85 R20"</span>, <span class="enumEntry">"375/45 R22.5"</span>, <span class="enumEntry">"375/50 R22.5"</span>, <span class="enumEntry">"375/90 R22.5"</span>, <span class="enumEntry">"385/55 R22.5"</span>, <span class="enumEntry">"385/65 R22.5"</span>, <span class="enumEntry">"395/85 R20"</span>, <span class="enumEntry">"425/65 R22.5"</span>, <span class="enumEntry">"495/45 R22.5"</span>, <span class="enumEntry">"525/65 R20.5"</span></div>
 						<div class="engineering">
-					Allowed values: <span class="enumEntry">"9 R22.5"</span>, <span class="enumEntry">"9.00 R20"</span>, <span class="enumEntry">"9.5 R17.5"</span>, <span class="enumEntry">"10 R17.5"</span>, <span class="enumEntry">"10 R22.5"</span>, <span class="enumEntry">"10.00 R20"</span>, <span class="enumEntry">"11 R22.5"</span>, <span class="enumEntry">"11.00 R20"</span>, <span class="enumEntry">"11.00 R22"</span>, <span class="enumEntry">"12 R22.5"</span>, <span class="enumEntry">"12.00 R20"</span>, <span class="enumEntry">"12.00 R24"</span>, <span class="enumEntry">"12.5 R20"</span>, <span class="enumEntry">"13 R22.5"</span>, <span class="enumEntry">"14.00 R20"</span>, <span class="enumEntry">"14.5 R20"</span>, <span class="enumEntry">"16.00 R20"</span>, <span class="enumEntry">"205/75 R17.5"</span>, <span class="enumEntry">"215/75 R17.5"</span>, <span class="enumEntry">"225/70 R17.5"</span>, <span class="enumEntry">"225/75 R17.5"</span>, <span class="enumEntry">"235/75 R17.5"</span>, <span class="enumEntry">"245/70 R17.5"</span>, <span class="enumEntry">"245/70 R19.5"</span>, <span class="enumEntry">"255/70 R22.5"</span>, <span class="enumEntry">"265/70 R17.5"</span>, <span class="enumEntry">"265/70 R19.5"</span>, <span class="enumEntry">"275/70 R22.5"</span>, <span class="enumEntry">"275/80 R22.5"</span>, <span class="enumEntry">"285/60 R22.5"</span>, <span class="enumEntry">"285/70 R19.5"</span>, <span class="enumEntry">"295/55 R22.5"</span>, <span class="enumEntry">"295/60 R22.5"</span>, <span class="enumEntry">"295/80 R22.5"</span>, <span class="enumEntry">"305/60 R22.5"</span>, <span class="enumEntry">"305/70 R19.5"</span>, <span class="enumEntry">"305/70 R22.5"</span>, <span class="enumEntry">"305/75 R24.5"</span>, <span class="enumEntry">"315/45 R22.5"</span>, <span class="enumEntry">"315/60 R22.5"</span>, <span class="enumEntry">"315/70 R22.5"</span>, <span class="enumEntry">"315/80 R22.5"</span>, <span class="enumEntry">"325/95 R24"</span>, <span class="enumEntry">"335/80 R20"</span>, <span class="enumEntry">"355/50 R22.5"</span>, <span class="enumEntry">"365/70 R22.5"</span>, <span class="enumEntry">"365/80 R20"</span>, <span class="enumEntry">"365/85 R20"</span>, <span class="enumEntry">"375/45 R22.5"</span>, <span class="enumEntry">"375/50 R22.5"</span>, <span class="enumEntry">"375/90 R22.5"</span>, <span class="enumEntry">"385/55 R22.5"</span>, <span class="enumEntry">"385/65 R22.5"</span>, <span class="enumEntry">"395/85 R20"</span>, <span class="enumEntry">"425/65 R22.5"</span>, <span class="enumEntry">"495/45 R22.5"</span>, <span class="enumEntry">"525/65 R22.5"</span></div>
+					Allowed values: <span class="enumEntry">"9 R22.5"</span>, <span class="enumEntry">"9.00 R20"</span>, <span class="enumEntry">"9.5 R17.5"</span>, <span class="enumEntry">"10 R17.5"</span>, <span class="enumEntry">"10 R22.5"</span>, <span class="enumEntry">"10.00 R20"</span>, <span class="enumEntry">"11 R22.5"</span>, <span class="enumEntry">"11.00 R20"</span>, <span class="enumEntry">"12 R22.5"</span>, <span class="enumEntry">"12.00 R20"</span>, <span class="enumEntry">"12.00 R24"</span>, <span class="enumEntry">"12.5 R20"</span>, <span class="enumEntry">"13 R22.5"</span>, <span class="enumEntry">"14.00 R20"</span>, <span class="enumEntry">"14.5 R20"</span>, <span class="enumEntry">"16.00 R20"</span>, <span class="enumEntry">"205/75 R17.5"</span>, <span class="enumEntry">"215/75 R17.5"</span>, <span class="enumEntry">"225/70 R17.5"</span>, <span class="enumEntry">"225/75 R17.5"</span>, <span class="enumEntry">"235/75 R17.5"</span>, <span class="enumEntry">"245/70 R17.5"</span>, <span class="enumEntry">"245/70 R19.5"</span>, <span class="enumEntry">"255/70 R22.5"</span>, <span class="enumEntry">"265/70 R17.5"</span>, <span class="enumEntry">"265/70 R19.5"</span>, <span class="enumEntry">"275/70 R22.5"</span>, <span class="enumEntry">"275/80 R22.5"</span>, <span class="enumEntry">"285/60 R22.5"</span>, <span class="enumEntry">"285/70 R19.5"</span>, <span class="enumEntry">"295/55 R22.5"</span>, <span class="enumEntry">"295/60 R22.5"</span>, <span class="enumEntry">"295/80 R22.5"</span>, <span class="enumEntry">"305/60 R22.5"</span>, <span class="enumEntry">"305/70 R19.5"</span>, <span class="enumEntry">"305/70 R22.5"</span>, <span class="enumEntry">"305/75 R24.5"</span>, <span class="enumEntry">"315/45 R22.5"</span>, <span class="enumEntry">"315/60 R22.5"</span>, <span class="enumEntry">"315/70 R22.5"</span>, <span class="enumEntry">"315/80 R22.5"</span>, <span class="enumEntry">"325/95 R24"</span>, <span class="enumEntry">"335/80 R20"</span>, <span class="enumEntry">"355/50 R22.5"</span>, <span class="enumEntry">"365/70 R22.5"</span>, <span class="enumEntry">"365/80 R20"</span>, <span class="enumEntry">"365/85 R20"</span>, <span class="enumEntry">"375/45 R22.5"</span>, <span class="enumEntry">"375/50 R22.5"</span>, <span class="enumEntry">"375/90 R22.5"</span>, <span class="enumEntry">"385/55 R22.5"</span>, <span class="enumEntry">"385/65 R22.5"</span>, <span class="enumEntry">"395/85 R20"</span>, <span class="enumEntry">"425/65 R22.5"</span>, <span class="enumEntry">"495/45 R22.5"</span>, <span class="enumEntry">"525/65 R20.5"</span></div>
 						<br>
 						<span class="optionalEngineering">optional in Engineering mode</span>
 					</td>
@@ -1765,7 +1765,7 @@ div.filter span.hidden span.icon {max-width: 256px;max-height: 256px;background-
 					<td class="xmltype">tns:AuxPSTechnologyType</td>
 					<td class="comment">
 						<div class="declaration">
-					Allowed values: <span class="enumEntry">"Small"</span>, <span class="enumEntry">"Small + ESS"</span>, <span class="enumEntry">"Small + visco clutch "</span>, <span class="enumEntry">"Small + mech. clutch"</span>, <span class="enumEntry">"Small + ESS + AMS"</span>, <span class="enumEntry">"Small + visco clutch + AMS"</span>, <span class="enumEntry">"Small + mech. clutch + AMS"</span>, <span class="enumEntry">"Medium Supply 1-stage"</span>, <span class="enumEntry">"Medium Supply 1-stage + ESS"</span>, <span class="enumEntry">"Medium Supply 1-stage + visco clutch "</span>, <span class="enumEntry">"Medium Supply 1-stage + mech. clutch"</span>, <span class="enumEntry">"Medium Supply 1-stage + ESS + AMS"</span>, <span class="enumEntry">"Medium Supply 1-stage + visco clutch + AMS"</span>, <span class="enumEntry">"Medium Supply 1-stage + mech. clutch + AMS"</span>, <span class="enumEntry">"Medium Supply 2-stage"</span>, <span class="enumEntry">"Medium Supply 2-stage + ESS"</span>, <span class="enumEntry">"Medium Supply 2-stage + visco clutch "</span>, <span class="enumEntry">"Medium Supply 2-stage + mech. clutch"</span>, <span class="enumEntry">"Medium Supply 2-stage + ESS + AMS"</span>, <span class="enumEntry">"Medium Supply 2-stage + visco clutch + AMS"</span>, <span class="enumEntry">"Medium Supply 2-stage + mech. clutch + AMS"</span>, <span class="enumEntry">"Large Supply"</span>, <span class="enumEntry">"Large Supply + ESS"</span>, <span class="enumEntry">"Large Supply + visco clutch "</span>, <span class="enumEntry">"Large Supply + mech. clutch"</span>, <span class="enumEntry">"Large Supply + ESS + AMS"</span>, <span class="enumEntry">"Large Supply + visco clutch + AMS"</span>, <span class="enumEntry">"Large Supply + mech. clutch + AMS"</span>, <span class="enumEntry">"Vacuum pump"</span></div>
+					Allowed values: <span class="enumEntry">"Small"</span>, <span class="enumEntry">"Small + ESS"</span>, <span class="enumEntry">"Small + visco clutch"</span>, <span class="enumEntry">"Small + mech. clutch"</span>, <span class="enumEntry">"Small + ESS + AMS"</span>, <span class="enumEntry">"Small + visco clutch + AMS"</span>, <span class="enumEntry">"Small + mech. clutch + AMS"</span>, <span class="enumEntry">"Medium Supply 1-stage"</span>, <span class="enumEntry">"Medium Supply 1-stage + ESS"</span>, <span class="enumEntry">"Medium Supply 1-stage + visco clutch"</span>, <span class="enumEntry">"Medium Supply 1-stage + mech. clutch"</span>, <span class="enumEntry">"Medium Supply 1-stage + ESS + AMS"</span>, <span class="enumEntry">"Medium Supply 1-stage + visco clutch + AMS"</span>, <span class="enumEntry">"Medium Supply 1-stage + mech. clutch + AMS"</span>, <span class="enumEntry">"Medium Supply 2-stage"</span>, <span class="enumEntry">"Medium Supply 2-stage + ESS"</span>, <span class="enumEntry">"Medium Supply 2-stage + visco clutch"</span>, <span class="enumEntry">"Medium Supply 2-stage + mech. clutch"</span>, <span class="enumEntry">"Medium Supply 2-stage + ESS + AMS"</span>, <span class="enumEntry">"Medium Supply 2-stage + visco clutch + AMS"</span>, <span class="enumEntry">"Medium Supply 2-stage + mech. clutch + AMS"</span>, <span class="enumEntry">"Large Supply"</span>, <span class="enumEntry">"Large Supply + ESS"</span>, <span class="enumEntry">"Large Supply + visco clutch"</span>, <span class="enumEntry">"Large Supply + mech. clutch"</span>, <span class="enumEntry">"Large Supply + ESS + AMS"</span>, <span class="enumEntry">"Large Supply + visco clutch + AMS"</span>, <span class="enumEntry">"Large Supply + mech. clutch + AMS"</span>, <span class="enumEntry">"Vacuum pump"</span></div>
 						<div class="engineering"></div>
 						<br>
 					</td>
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs
index c5803432b4a36e04193e76f99a2b533b6a533ae1..c3e9d134a0414b6843d72084586a84b612c47d96 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs
@@ -50,6 +50,8 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 {
 	public class DeclarationDataAdapter : AbstractSimulationDataAdapter
 	{
+		public static readonly GearboxType[] SupportedGearboxTypes = {GearboxType.MT, GearboxType.AMT, GearboxType.ATPowerSplit, GearboxType.ATSerial};
+
 		public DriverData CreateDriverData()
 		{
 			var lookAheadData = new DriverData.LACData {
@@ -208,13 +210,9 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 				WarnDeclarationMode("GearboxData");
 			}
 			var retVal = SetCommonGearboxData(gearbox);
-			switch (gearbox.Type) {
-				case GearboxType.DrivingCycle:
-				case GearboxType.ATPowerSplit:
-					throw new VectoSimulationException(
-						"Unsupported gearbox type: {0}!", retVal.Type);
-				//case GearboxType.Custom:
-				//	throw new VectoSimulationException("Custom Transmission not supported in DeclarationMode!");
+
+			if (!SupportedGearboxTypes.Contains(gearbox.Type)) {
+				throw new VectoSimulationException("Unsupported gearbox type: {0}!", retVal.Type);
 			}
 			var gearsInput = gearbox.Gears;
 			if (gearsInput.Count < 1) {
diff --git a/VectoCore/VectoCore/Models/Declaration/Segments.cs b/VectoCore/VectoCore/Models/Declaration/Segments.cs
index 90f976b59604dd6d751d3406e5db9125d63bd304..9addc962a26e3f4b34f53534e03c6dbad8d9c2a7 100644
--- a/VectoCore/VectoCore/Models/Declaration/Segments.cs
+++ b/VectoCore/VectoCore/Models/Declaration/Segments.cs
@@ -70,6 +70,11 @@ namespace TUGraz.VectoCore.Models.Declaration
 			return Lookup(vehicleCategory, axleConfiguration, grossVehicleMassRating, curbWeight, false);
 		}
 
+		public VehicleCategory[] GetVehicleCategories(bool declarationOnly = true)
+		{
+			return _segmentTable.AsEnumerable().Where(r => !declarationOnly || r.Field<string>("valid") == "1").Select(r => EnumHelper.ParseEnum<VehicleCategory>(r.Field<string>("vehiclecategory"))).Distinct().ToArray();
+		}
+
 		public Segment Lookup(VehicleCategory vehicleCategory, AxleConfiguration axleConfiguration,
 			Kilogram grossVehicleMassRating, Kilogram curbWeight, bool considerInvalid)
 		{
diff --git a/VectoCore/VectoCore/Resources/Declaration/VAUX/Fan-Tech.csv b/VectoCore/VectoCore/Resources/Declaration/VAUX/Fan-Tech.csv
index 2e1f9ace7e8cfb474600b9563d26d94e7514b040..10e393a595fddeb9d65763c1a564eccbe92cd7da 100644
--- a/VectoCore/VectoCore/Resources/Declaration/VAUX/Fan-Tech.csv
+++ b/VectoCore/VectoCore/Resources/Declaration/VAUX/Fan-Tech.csv
@@ -9,4 +9,4 @@ Belt driven or driven via transm. - Discrete step clutch                   , 103
 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
+Electrically driven - Electronically controlled                            , 700       , 800               , 600            , 600               , 1400
\ No newline at end of file
diff --git a/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.1.0.xsd b/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.1.0.xsd
index 6a79fb6d9297410757c06a342c2601c8aa32fda2..8df2c90fcff96b48cd641268ebc2000ab5e7bf44 100644
--- a/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.1.0.xsd
+++ b/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.1.0.xsd
@@ -1268,28 +1268,28 @@
 		<xs:restriction base="xs:string">
 			<xs:enumeration value="Small"/>
 			<xs:enumeration value="Small + ESS"/>
-			<xs:enumeration value="Small + visco clutch "/>
+			<xs:enumeration value="Small + visco clutch"/>
 			<xs:enumeration value="Small + mech. clutch"/>
 			<xs:enumeration value="Small + ESS + AMS"/>
 			<xs:enumeration value="Small + visco clutch + AMS"/>
 			<xs:enumeration value="Small + mech. clutch + AMS"/>
 			<xs:enumeration value="Medium Supply 1-stage"/>
 			<xs:enumeration value="Medium Supply 1-stage + ESS"/>
-			<xs:enumeration value="Medium Supply 1-stage + visco clutch "/>
+			<xs:enumeration value="Medium Supply 1-stage + visco clutch"/>
 			<xs:enumeration value="Medium Supply 1-stage + mech. clutch"/>
 			<xs:enumeration value="Medium Supply 1-stage + ESS + AMS"/>
 			<xs:enumeration value="Medium Supply 1-stage + visco clutch + AMS"/>
 			<xs:enumeration value="Medium Supply 1-stage + mech. clutch + AMS"/>
 			<xs:enumeration value="Medium Supply 2-stage"/>
 			<xs:enumeration value="Medium Supply 2-stage + ESS"/>
-			<xs:enumeration value="Medium Supply 2-stage + visco clutch "/>
+			<xs:enumeration value="Medium Supply 2-stage + visco clutch"/>
 			<xs:enumeration value="Medium Supply 2-stage + mech. clutch"/>
 			<xs:enumeration value="Medium Supply 2-stage + ESS + AMS"/>
 			<xs:enumeration value="Medium Supply 2-stage + visco clutch + AMS"/>
 			<xs:enumeration value="Medium Supply 2-stage + mech. clutch + AMS"/>
 			<xs:enumeration value="Large Supply"/>
 			<xs:enumeration value="Large Supply + ESS"/>
-			<xs:enumeration value="Large Supply + visco clutch "/>
+			<xs:enumeration value="Large Supply + visco clutch"/>
 			<xs:enumeration value="Large Supply + mech. clutch"/>
 			<xs:enumeration value="Large Supply + ESS + AMS"/>
 			<xs:enumeration value="Large Supply + visco clutch + AMS"/>
@@ -2221,7 +2221,6 @@ ToDo: -0.00
 			<xs:enumeration value="10.00 R20"/>
 			<xs:enumeration value="11 R22.5"/>
 			<xs:enumeration value="11.00 R20"/>
-			<xs:enumeration value="11.00 R22"/>
 			<xs:enumeration value="12 R22.5"/>
 			<xs:enumeration value="12.00 R20"/>
 			<xs:enumeration value="12.00 R24"/>
@@ -2269,7 +2268,7 @@ ToDo: -0.00
 			<xs:enumeration value="395/85 R20"/>
 			<xs:enumeration value="425/65 R22.5"/>
 			<xs:enumeration value="495/45 R22.5"/>
-			<xs:enumeration value="525/65 R22.5"/>
+			<xs:enumeration value="525/65 R20.5"/>
 		</xs:restriction>
 	</xs:simpleType>
 	<xs:simpleType name="TyreFzISOType">
diff --git a/VectoCore/VectoCore/Utils/XMLValidator.cs b/VectoCore/VectoCore/Utils/XMLValidator.cs
index 6685d58442405759cae3df16c565011f0c43cf4b..220ae58dcda0daad0d0667a3052a1408df0a9b9c 100644
--- a/VectoCore/VectoCore/Utils/XMLValidator.cs
+++ b/VectoCore/VectoCore/Utils/XMLValidator.cs
@@ -76,20 +76,12 @@ namespace TUGraz.VectoCore.Utils
 		public bool ValidateXML(XmlDocumentType docType)
 		{ 
 			_valid = true;
-			//try {
-				if (_doc.DocumentElement == null) {
-					throw new Exception("empty XML document");
-				}
-				var version = _doc.DocumentElement.GetAttribute("schemaVersion");
-				_doc.Schemas = GetXMLSchema(docType, version);
-				_doc.Validate(ValidationCallBack);
-			//} catch (Exception e) {
-			//	_valid = false;
-			//	_validationErrorAction(XmlSeverityType.Error, new ValidationEvent() {
-					
-			//		Exception = e
-			//	});
-			//}
+			if (_doc.DocumentElement == null) {
+				throw new Exception("empty XML document");
+			}
+			var version = _doc.DocumentElement.GetAttribute("schemaVersion");
+			_doc.Schemas = GetXMLSchema(docType, version);
+			_doc.Validate(ValidationCallBack);
 			return _valid;
 		}
 
diff --git a/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs b/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs
index 3a429221b67df3554b2a5afab384a0e20815f947..61a0645fdf3e034617af78430cc59693cc6d969b 100644
--- a/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs
+++ b/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs
@@ -341,7 +341,8 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration
 		TestCase("Belt driven or driven via transm. - On/off clutch", new[] { 1089, 1144, 1033, 1033, 1678 }),
 		TestCase("Hydraulic driven - Variable displacement pump", new[] { 938, 1155, 832, 917, 1872 }),
 		TestCase("Hydraulic driven - Constant displacement pump", new[] { 1200, 1400, 1000, 1100, 2300 }),
-		TestCase("Hydraulic driven - Electronically controlled", new[] { 700, 800, 600, 600, 1400 }),]
+		TestCase("Electrically driven - Electronically controlled", new[] {700, 800, 600, 600, 1400})]
+
 		public void AuxFanTechTest(string technology, int[] expected)
 		{
 			for (var i = 0; i < _missions.Length; i++) {
diff --git a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs
index 929de813d7be1196ef47eb89adea42026b840633..0d88cb16b4c050591b0c9989b958e7308d8c2aa4 100644
--- a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs
+++ b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs
@@ -29,10 +29,12 @@
 *   Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology
 */
 
+using System;
 using System.Collections.Generic;
 using System.IO;
 using System.Linq;
 using System.Xml;
+using System.Xml.XPath;
 using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Resources;
@@ -49,10 +51,11 @@ using TUGraz.VectoCore.OutputData.FileIO;
 using TUGraz.VectoCore.Tests.Utils;
 using TUGraz.VectoCore.Utils;
 using NUnit.Framework;
+using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter;
 
 namespace TUGraz.VectoCore.Tests.XML
 {
-    [TestFixture]
+	[TestFixture]
 	public class XMLDeclarationInputTest
 	{
 		const string SampleVehicleDecl = "TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample.xml";
@@ -92,7 +95,7 @@ namespace TUGraz.VectoCore.Tests.XML
 
 			Assert.AreEqual("560.00", fcMapTable.Rows[0][0]);
 			var fcMap = FuelConsumptionMapReader.Create(fcMapTable);
-            Assert.AreEqual(1256.SI(Unit.SI.Gramm.Per.Hour).Value(),
+			Assert.AreEqual(1256.SI(Unit.SI.Gramm.Per.Hour).Value(),
 				fcMap.GetFuelConsumption(0.SI<NewtonMeter>(), 560.RPMtoRad()).Value.Value());
 
 			var fldTable = engineDataProvider.FullLoadCurve;
@@ -103,6 +106,39 @@ namespace TUGraz.VectoCore.Tests.XML
 			var fldMap = FullLoadCurveReader.Create(fldTable, true);
 		}
 
+		[TestCase()]
+		public void TestEngineFuelTypes()
+		{
+			var fuelTypes = GetEnumOptions("FuelTypeType", "1.0");
+			foreach (var fuel in fuelTypes) {
+				var reader = XmlReader.Create(SampleVehicleDecl);
+
+				var doc = new XmlDocument();
+				doc.Load(reader);
+				var nav = doc.CreateNavigator();
+				var manager = new XmlNamespaceManager(nav.NameTable);
+				var helper = new XPathHelper(ExecutionMode.Declaration);
+				helper.AddNamespaces(manager);
+
+				var technology = nav.SelectSingleNode(helper.QueryAbs(
+						helper.NSPrefix(XMLNames.VectoInputDeclaration,
+							Constants.XML.RootNSPrefix),
+						XMLNames.Component_Vehicle,
+						XMLNames.Vehicle_Components,
+						XMLNames.Component_Engine, XMLNames.ComponentDataWrapper, XMLNames.Engine_FuelType),
+					manager);
+				technology.SetValue(fuel);
+				var modified = XmlReader.Create(new StringReader(nav.OuterXml));
+
+				var inputDataProvider = new XMLDeclarationInputDataProvider(modified,
+					true);
+				var techInput = inputDataProvider.JobInputData.Vehicle.EngineInputData.FuelType;
+				Assert.AreEqual(fuel, techInput.ToXMLFormat());
+
+				Assert.NotNull(DeclarationData.FuelData.Lookup(techInput));
+			}
+		}
+
 		[TestCase]
 		public void TestXMLInputGbx()
 		{
@@ -147,7 +183,9 @@ namespace TUGraz.VectoCore.Tests.XML
 			var lossMap = TransmissionLossMapReader.Create(lossMapData, axlegearDataProvider.Ratio, "AxleGear");
 			Assert.IsNotNull(lossMap);
 
-			AssertHelper.Exception<VectoException>(() => { var tmp = axlegearDataProvider.Efficiency; });
+			AssertHelper.Exception<VectoException>(() => {
+				var tmp = axlegearDataProvider.Efficiency;
+			});
 		}
 
 		[TestCase]
@@ -182,7 +220,7 @@ namespace TUGraz.VectoCore.Tests.XML
 			var axles = vehicleDataProvider.Axles;
 
 			var tyre = axles[0].Tyre;
-			Assert.AreEqual("315/70 R22.5",tyre.Dimension);
+			Assert.AreEqual("315/70 R22.5", tyre.Dimension);
 			Assert.AreEqual(0.0055, tyre.RollResistanceCoefficient);
 			Assert.AreEqual(31300, tyre.TyreTestLoad.Value());
 			Assert.AreEqual("e12*0815/8051*2017/05E0000*00", tyre.CertificationNumber);
@@ -214,7 +252,7 @@ namespace TUGraz.VectoCore.Tests.XML
 				XMLNames.ComponentDataWrapper,
 				XMLNames.AxleWheels_Axles,
 				helper.QueryConstraint(XMLNames.AxleWheels_Axles_Axle, "1", null, string.Empty)
-				), manager);
+			), manager);
 			firstAxle.MoveToAttribute(XMLNames.AxleWheels_Axles_Axle_AxleNumber_Attr, string.Empty);
 			firstAxle.SetTypedValue(2);
 
@@ -224,7 +262,9 @@ namespace TUGraz.VectoCore.Tests.XML
 			var inputDataProvider = new XMLDeclarationInputDataProvider(modified, true);
 			var vehicleDataProvider = inputDataProvider.JobInputData.Vehicle;
 
-			AssertHelper.Exception<VectoException>(() => { var axles = vehicleDataProvider.Axles; });
+			AssertHelper.Exception<VectoException>(() => {
+				var axles = vehicleDataProvider.Axles;
+			});
 		}
 
 		[TestCase]
@@ -247,7 +287,7 @@ namespace TUGraz.VectoCore.Tests.XML
 				XMLNames.ComponentDataWrapper,
 				XMLNames.AxleWheels_Axles,
 				helper.QueryConstraint(XMLNames.AxleWheels_Axles_Axle, "1", null, string.Empty)
-				), manager);
+			), manager);
 			firstAxle.MoveToAttribute(XMLNames.AxleWheels_Axles_Axle_AxleNumber_Attr, string.Empty);
 			firstAxle.SetTypedValue(0);
 
@@ -255,7 +295,9 @@ namespace TUGraz.VectoCore.Tests.XML
 			var modified = XmlReader.Create(new StringReader(nav.OuterXml));
 
 			AssertHelper.Exception<VectoException>(
-				() => { var inputDataProvider = new XMLDeclarationInputDataProvider(modified, true); });
+				() => {
+					var inputDataProvider = new XMLDeclarationInputDataProvider(modified, true);
+				});
 		}
 
 		[TestCase]
@@ -278,7 +320,7 @@ namespace TUGraz.VectoCore.Tests.XML
 				XMLNames.ComponentDataWrapper,
 				XMLNames.AxleWheels_Axles,
 				helper.QueryConstraint(XMLNames.AxleWheels_Axles_Axle, "1", null, string.Empty)
-				), manager);
+			), manager);
 			firstAxle.MoveToAttribute(XMLNames.AxleWheels_Axles_Axle_AxleNumber_Attr, string.Empty);
 			firstAxle.SetTypedValue(3);
 
@@ -288,7 +330,9 @@ namespace TUGraz.VectoCore.Tests.XML
 			var inputDataProvider = new XMLDeclarationInputDataProvider(modified, true);
 			var vehicleDataProvider = inputDataProvider.JobInputData.Vehicle;
 
-			AssertHelper.Exception<VectoException>(() => { var axles = vehicleDataProvider.Axles; });
+			AssertHelper.Exception<VectoException>(() => {
+				var axles = vehicleDataProvider.Axles;
+			});
 		}
 
 		[TestCase]
@@ -310,7 +354,7 @@ namespace TUGraz.VectoCore.Tests.XML
 			Assert.AreEqual("Standard technology - LED headlights, all", aux3.Technology.First());
 		}
 
-		
+
 		[TestCase]
 		public void TestVehicleInput()
 		{
@@ -388,7 +432,9 @@ namespace TUGraz.VectoCore.Tests.XML
 			Assert.AreEqual(6, angledriveDataProvider.LossMap.Rows.Count);
 			Assert.AreEqual("-10000.00", angledriveDataProvider.LossMap.Rows[0][1]);
 
-			AssertHelper.Exception<VectoException>(() => { var tmp = angledriveDataProvider.Efficiency; });
+			AssertHelper.Exception<VectoException>(() => {
+				var tmp = angledriveDataProvider.Efficiency;
+			});
 		}
 
 		[TestCase]
@@ -476,7 +522,9 @@ namespace TUGraz.VectoCore.Tests.XML
 
 			var inputDataProvider = new XMLDeclarationInputDataProvider(modified, true);
 
-			AssertHelper.Exception<VectoException>(() => { var tmp = inputDataProvider.JobInputData.Vehicle.RetarderInputData.Ratio; });
+			AssertHelper.Exception<VectoException>(() => {
+				var tmp = inputDataProvider.JobInputData.Vehicle.RetarderInputData.Ratio;
+			});
 		}
 
 		[TestCase]
@@ -517,14 +565,9 @@ namespace TUGraz.VectoCore.Tests.XML
 		[TestCase]
 		public void TestRetarderTypes()
 		{
-			var retarderTypes = new Dictionary<string, RetarderType>() {
-				{ "None", RetarderType.None },
-				{ "Losses included in Gearbox", RetarderType.LossesIncludedInTransmission },
-				{ "Engine Retarder", RetarderType.EngineRetarder },
-				{ "Transmission Input Retarder", RetarderType.TransmissionInputRetarder },
-				{ "Transmission Output Retarder", RetarderType.TransmissionOutputRetarder }
-			}
-				;
+			var retarderTypes = GetEnumOptions("RetarderTypeType", "1.0");
+			Assert.IsTrue(retarderTypes.Length > 0);
+
 			foreach (var retarderType in retarderTypes) {
 				var reader = XmlReader.Create(SampleVehicleDecl);
 
@@ -539,30 +582,20 @@ namespace TUGraz.VectoCore.Tests.XML
 					helper.NSPrefix(XMLNames.VectoInputDeclaration, Constants.XML.RootNSPrefix),
 					XMLNames.Component_Vehicle,
 					XMLNames.Vehicle_RetarderType), manager);
-				xmlRetarderType.SetValue(retarderType.Key);
+				xmlRetarderType.SetValue(retarderType);
 
 				var modified = XmlReader.Create(new StringReader(nav.OuterXml));
 
 				var inputDataProvider = new XMLDeclarationInputDataProvider(modified, true);
 
-				Assert.AreEqual(retarderType.Value, inputDataProvider.JobInputData.Vehicle.RetarderInputData.Type);
+				Assert.AreEqual(retarderType, inputDataProvider.JobInputData.Vehicle.RetarderInputData.Type.ToXMLFormat());
 			}
 		}
 
 		[TestCase]
 		public void TestAxleConfigurationTypes()
 		{
-			var axleConfigurations = new Dictionary<string, AxleConfiguration>() {
-				{ "4x2", AxleConfiguration.AxleConfig_4x2 },
-				//{ "4x4", AxleConfiguration.AxleConfig_4x4 },
-				{ "6x2", AxleConfiguration.AxleConfig_6x2 },
-				{ "6x4", AxleConfiguration.AxleConfig_6x4 },
-				//{ "6x6", AxleConfiguration.AxleConfig_6x6 },
-				//{ "8x2", AxleConfiguration.AxleConfig_8x2 },
-				{ "8x4", AxleConfiguration.AxleConfig_8x4 },
-				//{ "8x6", AxleConfiguration.AxleConfig_8x6 },
-				//{ "8x8", AxleConfiguration.AxleConfig_8x8 }
-			};
+			var axleConfigurations = GetEnumOptions("VehicleAxleConfigurationDeclarationType", "1.0");
 			foreach (var axleConfiguration in axleConfigurations) {
 				var reader = XmlReader.Create(SampleVehicleDecl);
 
@@ -573,30 +606,25 @@ namespace TUGraz.VectoCore.Tests.XML
 				var helper = new XPathHelper(ExecutionMode.Declaration);
 				helper.AddNamespaces(manager);
 
-				var xmlRetarderType = nav.SelectSingleNode(helper.QueryAbs(
+				var xmlAxleConf = nav.SelectSingleNode(helper.QueryAbs(
 					helper.NSPrefix(XMLNames.VectoInputDeclaration, Constants.XML.RootNSPrefix),
 					XMLNames.Component_Vehicle,
 					XMLNames.Vehicle_AxleConfiguration), manager);
-				xmlRetarderType.SetValue(axleConfiguration.Key);
+				xmlAxleConf.SetValue(axleConfiguration);
 
 				var modified = XmlReader.Create(new StringReader(nav.OuterXml));
 
 				var inputDataProvider = new XMLDeclarationInputDataProvider(modified, true);
 
-				Assert.AreEqual(axleConfiguration.Value, inputDataProvider.JobInputData.Vehicle.AxleConfiguration);
+				Assert.AreEqual(axleConfiguration, inputDataProvider.JobInputData.Vehicle.AxleConfiguration.GetName());
 			}
 		}
 
 		[TestCase]
 		public void TestVehicleCategoryTypes()
 		{
-			var vehicleCategories = new Dictionary<string, VehicleCategory>() {
-				{ "Rigid Truck", VehicleCategory.RigidTruck },
-				{ "Tractor", VehicleCategory.Tractor },
-				//{ "City Bus", VehicleCategory.CityBus },
-				//{ "Interurban Bus", VehicleCategory.InterurbanBus },
-				//{ "Coach", VehicleCategory.Coach }
-			};
+			var vehicleCategories = GetEnumOptions("VehicleCategoryDeclarationType", "1.0");
+			var allowedCategories = DeclarationData.Segments.GetVehicleCategories();
 			foreach (var vehicleCategory in vehicleCategories) {
 				var reader = XmlReader.Create(SampleVehicleDecl);
 
@@ -611,13 +639,15 @@ namespace TUGraz.VectoCore.Tests.XML
 					helper.NSPrefix(XMLNames.VectoInputDeclaration, Constants.XML.RootNSPrefix),
 					XMLNames.Component_Vehicle,
 					XMLNames.Vehicle_VehicleCategory), manager);
-				xmlRetarderType.SetValue(vehicleCategory.Key);
+				xmlRetarderType.SetValue(vehicleCategory);
 
 				var modified = XmlReader.Create(new StringReader(nav.OuterXml));
 
 				var inputDataProvider = new XMLDeclarationInputDataProvider(modified, true);
 
-				Assert.AreEqual(vehicleCategory.Value, inputDataProvider.JobInputData.Vehicle.VehicleCategory);
+				var vehCategory = inputDataProvider.JobInputData.Vehicle.VehicleCategory;
+				Assert.AreEqual(vehicleCategory, vehCategory.ToXMLFormat());
+				Assert.IsTrue(allowedCategories.Contains(vehCategory));
 			}
 		}
 
@@ -625,8 +655,8 @@ namespace TUGraz.VectoCore.Tests.XML
 		[TestCase]
 		public void TestWheelsTypes()
 		{
-			var retarderTypes = new Dictionary<string, RetarderType>() { };
-			foreach (var retarderType in retarderTypes) {
+			var wheelDimensions = GetEnumOptions("TyreDimensionType", "1.0");
+			foreach (var wheelDimension in wheelDimensions) {
 				var reader = XmlReader.Create(SampleVehicleDecl);
 
 				var doc = new XmlDocument();
@@ -636,94 +666,97 @@ namespace TUGraz.VectoCore.Tests.XML
 				var helper = new XPathHelper(ExecutionMode.Declaration);
 				helper.AddNamespaces(manager);
 
-				var xmlRetarderType = nav.SelectSingleNode(helper.QueryAbs(
-					helper.NSPrefix(XMLNames.VectoInputDeclaration,
-						Constants.XML.RootNSPrefix),
-					XMLNames.Component_Vehicle,
-					XMLNames.Vehicle_RetarderType),
+				var tyredimensionNode = nav.SelectSingleNode(helper.QueryAbs(
+						helper.NSPrefix(XMLNames.VectoInputDeclaration,
+							Constants.XML.RootNSPrefix),
+						XMLNames.Component_Vehicle, XMLNames.Vehicle_Components, XMLNames.Component_AxleWheels,
+						XMLNames.ComponentDataWrapper,
+						XMLNames.AxleWheels_Axles, XMLNames.AxleWheels_Axles_Axle, XMLNames.AxleWheels_Axles_Axle_Tyre,
+						XMLNames.ComponentDataWrapper, XMLNames.AxleWheels_Axles_Axle_Dimension),
 					manager);
-				xmlRetarderType.SetValue(retarderType.Key);
+				tyredimensionNode.SetValue(wheelDimension);
 
 				var modified = XmlReader.Create(new StringReader(nav.OuterXml));
 
 				var inputDataProvider = new XMLDeclarationInputDataProvider(modified,
 					true);
 
-				Assert.AreEqual(retarderType.Value,
-					inputDataProvider.JobInputData.Vehicle.RetarderInputData.Type);
+				var tyreDimension = inputDataProvider.JobInputData.Vehicle.Axles.First().Tyre.Dimension;
+				Assert.AreEqual(wheelDimension, tyreDimension);
+				Assert.IsTrue(DeclarationData.Wheels.GetWheelsDimensions().Contains(tyreDimension), "Unknown tyre dimension {0}",
+					tyreDimension);
 			}
 		}
 
 		[TestCase]
 		public void TestPTOTypeTypes()
 		{
-			var ptoTypes = new string[][] {
-				new[] { "none", "none" },
-				new[] { "only one engaged gearwheel above oil level", "none" },
-				new[] { "only the drive shaft of the PTO", "shift claw, synchronizer, sliding gearwheel" },
-				new[] { "only the drive shaft of the PTO", "multi-disc clutch" },
-				new[] { "only the drive shaft of the PTO", "multi-disc clutch, oil pump" },
-				new[] { "drive shaft and/or up to 2 gear wheels", "shift claw, synchronizer, sliding gearwheel" },
-				new[] { "drive shaft and/or up to 2 gear wheels", "multi-disc clutch" },
-				new[] { "drive shaft and/or up to 2 gear wheels", "multi-disc clutch, oil pump" },
-				new[] { "drive shaft and/or more than 2 gear wheels", "shift claw, synchronizer, sliding gearwheel" },
-				new[] { "drive shaft and/or more than 2 gear wheels", "multi-disc clutch" },
-				new[] { "drive shaft and/or more than 2 gear wheels", "multi-disc clutch, oil pump" },
-			};
-			foreach (var ptoType in ptoTypes) {
-				var reader = XmlReader.Create(SampleVehicleDecl);
-
-				var doc = new XmlDocument();
-				doc.Load(reader);
-				var nav = doc.CreateNavigator();
-				var manager = new XmlNamespaceManager(nav.NameTable);
-				var helper = new XPathHelper(ExecutionMode.Declaration);
-				helper.AddNamespaces(manager);
-
-				var ptoGearWheels = nav.SelectSingleNode(helper.QueryAbs(
-					helper.NSPrefix(XMLNames.VectoInputDeclaration,
-						Constants.XML.RootNSPrefix),
-					XMLNames.Component_Vehicle,
-					XMLNames.Vehicle_PTO,
-					XMLNames.Vehicle_PTO_ShaftsGearWheels),
-					manager);
-				ptoGearWheels.SetValue(ptoType[0]);
-				var ptoOther = nav.SelectSingleNode(helper.QueryAbs(
-					helper.NSPrefix(XMLNames.VectoInputDeclaration,
-						Constants.XML.RootNSPrefix),
-					XMLNames.Component_Vehicle,
-					XMLNames.Vehicle_PTO,
-					XMLNames.Vehicle_PTO_OtherElements),
-					manager);
-				ptoOther.SetValue(ptoType[1]);
-
-				var modified = XmlReader.Create(new StringReader(nav.OuterXml));
-
-				var inputDataProvider = new XMLDeclarationInputDataProvider(modified,
-					true);
-
-				if (ptoType[0] == "none") {
-					Assert.AreEqual("None",
-						inputDataProvider.JobInputData.Vehicle.PTOTransmissionInputData.PTOTransmissionType);
-				} else if (ptoType[0] == "only one engaged gearwheel above oil level") {
-					Assert.AreEqual(ptoType[0],
-						inputDataProvider.JobInputData.Vehicle.PTOTransmissionInputData.PTOTransmissionType);
-				} else {
-					Assert.AreEqual(string.Format("{0} - {1}", ptoType[0], ptoType[1]),
-						inputDataProvider.JobInputData.Vehicle.PTOTransmissionInputData.PTOTransmissionType);
+			var ptoGearWheels = GetEnumOptions("PTOShaftsGearWheelsType", "1.0");
+			var ptoOthers = GetEnumOptions("PTOOtherElementsType", "1.0");
+
+			foreach (var ptoGearWheel in ptoGearWheels) {
+				foreach (var ptoOther in ptoOthers) {
+					if (ptoGearWheel == "none" || ptoGearWheel == "only one engaged gearwheel above oil level") {
+						if (ptoOther != "none") {
+							continue;
+						}
+					} else {
+						if (ptoOther == "none") {
+							continue;
+						}
+					}
+					var reader = XmlReader.Create(SampleVehicleDecl);
+
+					var doc = new XmlDocument();
+					doc.Load(reader);
+					var nav = doc.CreateNavigator();
+					var manager = new XmlNamespaceManager(nav.NameTable);
+					var helper = new XPathHelper(ExecutionMode.Declaration);
+					helper.AddNamespaces(manager);
+
+					var ptoGearWheelsNode = nav.SelectSingleNode(helper.QueryAbs(
+							helper.NSPrefix(XMLNames.VectoInputDeclaration,
+								Constants.XML.RootNSPrefix),
+							XMLNames.Component_Vehicle,
+							XMLNames.Vehicle_PTO,
+							XMLNames.Vehicle_PTO_ShaftsGearWheels),
+						manager);
+					ptoGearWheelsNode.SetValue(ptoGearWheel);
+					var ptoOtherNode = nav.SelectSingleNode(helper.QueryAbs(
+							helper.NSPrefix(XMLNames.VectoInputDeclaration,
+								Constants.XML.RootNSPrefix),
+							XMLNames.Component_Vehicle,
+							XMLNames.Vehicle_PTO,
+							XMLNames.Vehicle_PTO_OtherElements),
+						manager);
+					ptoOtherNode.SetValue(ptoOther);
+
+					var modified = XmlReader.Create(new StringReader(nav.OuterXml));
+
+					var inputDataProvider = new XMLDeclarationInputDataProvider(modified,
+						true);
+
+					if (ptoGearWheel == "none") {
+						Assert.AreEqual("None",
+							inputDataProvider.JobInputData.Vehicle.PTOTransmissionInputData.PTOTransmissionType);
+					} else if (ptoGearWheel == "only one engaged gearwheel above oil level") {
+						Assert.AreEqual(ptoGearWheel,
+							inputDataProvider.JobInputData.Vehicle.PTOTransmissionInputData.PTOTransmissionType);
+					} else {
+						Assert.AreEqual(string.Format("{0} - {1}", ptoGearWheel, ptoOther),
+							inputDataProvider.JobInputData.Vehicle.PTOTransmissionInputData.PTOTransmissionType);
+					}
+					Assert.NotNull(DeclarationData.PTOTransmission.Lookup(inputDataProvider.JobInputData.Vehicle
+						.PTOTransmissionInputData
+						.PTOTransmissionType));
 				}
-				DeclarationData.PTOTransmission.Lookup(inputDataProvider.JobInputData.Vehicle.PTOTransmissionInputData.PTOTransmissionType);
 			}
 		}
 
 		[TestCase]
 		public void TestAngledriveTypes()
 		{
-			var angledriveTypes = new Dictionary<string, AngledriveType>() {
-				{ "None", AngledriveType.None },
-				{ "Losses included in Gearbox", AngledriveType.LossesIncludedInGearbox },
-				{ "Separate Angledrive", AngledriveType.SeparateAngledrive }
-			};
+			var angledriveTypes = GetEnumOptions("AngledriveTypeType", "1.0");
 			foreach (var angleDrive in angledriveTypes) {
 				var reader = XmlReader.Create(SampleVehicleDecl);
 
@@ -734,32 +767,27 @@ namespace TUGraz.VectoCore.Tests.XML
 				var helper = new XPathHelper(ExecutionMode.Declaration);
 				helper.AddNamespaces(manager);
 
-				var xmlRetarderType = nav.SelectSingleNode(helper.QueryAbs(
-					helper.NSPrefix(XMLNames.VectoInputDeclaration,
-						Constants.XML.RootNSPrefix),
-					XMLNames.Component_Vehicle,
-					XMLNames.Vehicle_AngledriveType),
+				var angledriveNode = nav.SelectSingleNode(helper.QueryAbs(
+						helper.NSPrefix(XMLNames.VectoInputDeclaration,
+							Constants.XML.RootNSPrefix),
+						XMLNames.Component_Vehicle,
+						XMLNames.Vehicle_AngledriveType),
 					manager);
-				xmlRetarderType.SetValue(angleDrive.Key);
+				angledriveNode.SetValue(angleDrive);
 
 				var modified = XmlReader.Create(new StringReader(nav.OuterXml));
 
 				var inputDataProvider = new XMLDeclarationInputDataProvider(modified,
 					true);
 
-				Assert.AreEqual(angleDrive.Value, inputDataProvider.JobInputData.Vehicle.AngledriveInputData.Type);
+				Assert.AreEqual(angleDrive, inputDataProvider.JobInputData.Vehicle.AngledriveInputData.Type.ToXMLFormat());
 			}
 		}
 
 		[TestCase]
 		public void TestGearboxTypes()
 		{
-			var gearboxTypes = new Dictionary<string, GearboxType>() {
-				{ "SMT", GearboxType.MT },
-				{ "AMT", GearboxType.AMT },
-				{ "APT-S", GearboxType.ATSerial },
-				{ "APT-P", GearboxType.ATPowerSplit }
-			};
+			var gearboxTypes = GetEnumOptions("GearboxTransmissionTypeType", "1.0");
 			foreach (var gearboxType in gearboxTypes) {
 				var reader = XmlReader.Create(SampleVehicleDecl);
 
@@ -771,22 +799,24 @@ namespace TUGraz.VectoCore.Tests.XML
 				helper.AddNamespaces(manager);
 
 				var xmlRetarderType = nav.SelectSingleNode(helper.QueryAbs(
-					helper.NSPrefix(XMLNames.VectoInputDeclaration,
-						Constants.XML.RootNSPrefix),
-					XMLNames.Component_Vehicle,
-					XMLNames.Vehicle_Components,
-					XMLNames.Component_Gearbox,
-					XMLNames.ComponentDataWrapper,
-					XMLNames.Gearbox_TransmissionType),
+						helper.NSPrefix(XMLNames.VectoInputDeclaration,
+							Constants.XML.RootNSPrefix),
+						XMLNames.Component_Vehicle,
+						XMLNames.Vehicle_Components,
+						XMLNames.Component_Gearbox,
+						XMLNames.ComponentDataWrapper,
+						XMLNames.Gearbox_TransmissionType),
 					manager);
-				xmlRetarderType.SetValue(gearboxType.Key);
+				xmlRetarderType.SetValue(gearboxType);
 
 				var modified = XmlReader.Create(new StringReader(nav.OuterXml));
 
 				var inputDataProvider = new XMLDeclarationInputDataProvider(modified,
 					true);
 
-				Assert.AreEqual(gearboxType.Value, inputDataProvider.JobInputData.Vehicle.GearboxInputData.Type);
+				var gbxType = inputDataProvider.JobInputData.Vehicle.GearboxInputData.Type;
+				Assert.AreEqual(gearboxType, gbxType.ToXMLFormat());
+				Assert.IsTrue(DeclarationDataAdapter.SupportedGearboxTypes.Contains(gbxType));
 			}
 		}
 
@@ -821,10 +851,101 @@ namespace TUGraz.VectoCore.Tests.XML
 
 			var inputDataProvider = new XMLDeclarationInputDataProvider(reader, true);
 
-			Assert.AreEqual(CertificationMethod.Option2, inputDataProvider.JobInputData.Vehicle.GearboxInputData.CertificationMethod);
-			Assert.AreEqual(CertificationMethod.Measured, inputDataProvider.JobInputData.Vehicle.AxleGearInputData.CertificationMethod);
-			Assert.AreEqual(CertificationMethod.Measured, inputDataProvider.JobInputData.Vehicle.RetarderInputData.CertificationMethod);
-			Assert.AreEqual(CertificationMethod.Measured, inputDataProvider.JobInputData.Vehicle.AirdragInputData.CertificationMethod);
+			Assert.AreEqual(CertificationMethod.Option2,
+				inputDataProvider.JobInputData.Vehicle.GearboxInputData.CertificationMethod);
+			Assert.AreEqual(CertificationMethod.Measured,
+				inputDataProvider.JobInputData.Vehicle.AxleGearInputData.CertificationMethod);
+			Assert.AreEqual(CertificationMethod.Measured,
+				inputDataProvider.JobInputData.Vehicle.RetarderInputData.CertificationMethod);
+			Assert.AreEqual(CertificationMethod.Measured,
+				inputDataProvider.JobInputData.Vehicle.AirdragInputData.CertificationMethod);
+		}
+
+		[TestCase]
+		public void TestAuxFanTechTypes()
+		{
+			TestAuxTech(AuxiliaryType.Fan, GetEnumOptions("AuxFanTechnologyType", "1.0"), DeclarationData.Fan);
+		}
+
+		[TestCase]
+		public void TestAuxElectricSystemTechTypes()
+		{
+			TestAuxTech(AuxiliaryType.ElectricSystem, GetEnumOptions("AuxESTechnologyType", "1.0"),
+				DeclarationData.ElectricSystem);
+		}
+
+		[TestCase]
+		public void TestAuxSteeringPumpTechTypes()
+		{
+			TestAuxTech(AuxiliaryType.SteeringPump, GetEnumOptions("AuxSPTechnologyType", "1.0"), DeclarationData.SteeringPump);
+		}
+
+		[TestCase]
+		public void TestAuxPneumaticSystemTechTypes()
+		{
+			TestAuxTech(AuxiliaryType.PneumaticSystem, GetEnumOptions("AuxPSTechnologyType", "1.0"),
+				DeclarationData.PneumaticSystem);
+		}
+
+		[TestCase]
+		public void TestAuxHVACTechTypes()
+		{
+			TestAuxTech(AuxiliaryType.HVAC, GetEnumOptions("AuxHVACTechnologyType", "1.0"),
+				DeclarationData.HeatingVentilationAirConditioning);
+		}
+
+		private string[] GetEnumOptions(string xmlType, string schemaVersion)
+		{
+			Stream resource;
+			var schemaFile = string.Format("VectoDeclarationDefinitions{0}.xsd", "." + schemaVersion);
+			try {
+				resource = RessourceHelper.LoadResourceAsStream(RessourceHelper.ResourceType.XMLSchema, schemaFile);
+			} catch (Exception e) {
+				throw new Exception(string.Format("Unknown XML schema! version: {0}, xsd: {1}", schemaVersion, schemaFile), e);
+			}
+			var reader = new XPathDocument(resource);
+			var nav = reader.CreateNavigator();
+			var nodes = nav.Select(
+				string.Format("//*[local-name()='simpleType' and @name='{0}']//*[local-name()='enumeration']/@value", xmlType));
+			var retVal = new List<string>();
+			foreach (var node in nodes) {
+				retVal.Add(node.ToString());
+			}
+			return retVal.ToArray();
+		}
+
+		private void TestAuxTech(AuxiliaryType aux, string[] techs, IDeclarationAuxiliaryTable auxLookup)
+		{
+			foreach (var tech in techs) {
+				var reader = XmlReader.Create(SampleVehicleDecl);
+
+				var doc = new XmlDocument();
+				doc.Load(reader);
+				var nav = doc.CreateNavigator();
+				var manager = new XmlNamespaceManager(nav.NameTable);
+				var helper = new XPathHelper(ExecutionMode.Declaration);
+				helper.AddNamespaces(manager);
+
+				var technology = nav.SelectSingleNode(helper.QueryAbs(
+						helper.NSPrefix(XMLNames.VectoInputDeclaration,
+							Constants.XML.RootNSPrefix),
+						XMLNames.Component_Vehicle,
+						XMLNames.Vehicle_Components,
+						XMLNames.Component_Auxiliaries, XMLNames.ComponentDataWrapper, aux.ToString(),
+						XMLNames.Auxiliaries_Auxiliary_Technology),
+					manager);
+				technology.SetValue(tech);
+				var modified = XmlReader.Create(new StringReader(nav.OuterXml));
+
+				var inputDataProvider = new XMLDeclarationInputDataProvider(modified,
+					true);
+				var techInput = inputDataProvider.JobInputData.Vehicle.AuxiliaryInputData().Auxiliaries.Where(x => x.Type == aux)
+					.First().Technology.First();
+				Assert.AreEqual(tech, techInput);
+
+				Assert.IsTrue(auxLookup.GetTechnologies().Contains(techInput), "technology '{0}' for aux type '{1}' not known!",
+					techInput, aux);
+			}
 		}
 	}
-}
+}
\ No newline at end of file