diff --git a/VectoCommon/VectoCommon/InputData/DigestData.cs b/VectoCommon/VectoCommon/InputData/DigestData.cs
index 20f7568d7a66007c1dec334d164d5d48cb9a546d..4de38125894f732fdc51440f8518621cfb0d2fa7 100644
--- a/VectoCommon/VectoCommon/InputData/DigestData.cs
+++ b/VectoCommon/VectoCommon/InputData/DigestData.cs
@@ -41,8 +41,8 @@ namespace TUGraz.VectoCommon.InputData {
 
 		public DigestData(XmlNode xmlNode)
 		{
-			Reference = xmlNode.SelectSingleNode(ReferenceUriAttrXPath)?.InnerXml;
-			var nodes = xmlNode.SelectNodes(TransformAlgorithmAttrXPath);
+			Reference = xmlNode?.SelectSingleNode(ReferenceUriAttrXPath)?.InnerXml;
+			var nodes = xmlNode?.SelectNodes(TransformAlgorithmAttrXPath);
 			var c14n = new List<string>();
 			if (nodes != null) {
 				for (var i = 0; i < nodes.Count; i++) {
@@ -50,8 +50,8 @@ namespace TUGraz.VectoCommon.InputData {
 				}
 			}
 			CanonicalizationMethods = c14n.ToArray();
-			DigestMethod = xmlNode.SelectSingleNode(DigestMethodAlgorithmAttrXPath)?.InnerXml;
-			DigestValue = xmlNode.SelectSingleNode(DigestValueElementXPath)?.InnerXml;
+			DigestMethod = xmlNode?.SelectSingleNode(DigestMethodAlgorithmAttrXPath)?.InnerXml;
+			DigestValue = xmlNode?.SelectSingleNode(DigestValueElementXPath)?.InnerXml;
 		}
 
 		public DigestData(XNode xmlNode)
diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs
index 7bce4ac8bf3dbee908a981ea0a15fbdface89dd8..5f850e1944d795cca5c052286938ca6c2d70ec43 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs
@@ -148,7 +148,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 			}
 		}
 
-		public virtual IList<IAxleEngineeringInputData> Axles
+		public virtual IList<IAxleEngineeringInputData> AxlesEngineering
 		{
 			get { return AxleWheels().Cast<IAxleEngineeringInputData>().ToList(); }
 		}
@@ -553,10 +553,6 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 
 		#endregion
 
-		#region Implementation of IAxlesEngineeringInputData
-
-		public IList<IAxleEngineeringInputData> AxlesEngineering { get; }
-
-		#endregion
+		
 	}
 }
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/AbstractCommonComponentType.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/AbstractCommonComponentType.cs
index bbea1649bb544ca9f0f89b6b696d8ee0da277fcd..12e8ad9e9a591385abaedc895a1cf5f6bdba16c6 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/AbstractCommonComponentType.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/AbstractCommonComponentType.cs
@@ -52,12 +52,12 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider {
 
 		public virtual string CertificationNumber
 		{
-			get { return "N.A."; }
+			get { return GetString(XMLNames.Component_CertificationNumber); }
 		}
 
 		public virtual DigestData DigestValue
 		{
-			get { return null; }
+			get { return new DigestData(GetNode(XMLNames.DI_Signature, required:false)); }
 		}
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/AbstractXMLType.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/AbstractXMLType.cs
index 3d41006f8c8e75ee25bd88851cdc005598c8bd9c..1fa555e394a1ae5d08aa94d5e54b645a874a2e55 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/AbstractXMLType.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/AbstractXMLType.cs
@@ -27,6 +27,10 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider {
 		{
 			var node = GetNode(nodeName, required: fallbackValue != null);
 
+			if (node == null && fallbackValue == null) {
+				throw new VectoException("Node {0} not found in input data", nodeName);
+			}
+
 			return node?.InnerText.ToDouble() ?? fallbackValue.Value;
 		}
 
@@ -34,6 +38,10 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider {
 		{
 			var node = GetNode(nodePath, required: fallbackValue == null);
 
+			if (node == null && fallbackValue == null) {
+				throw new VectoException("Node {0} not found in input data", string.Join("/", nodePath));
+			}
+
 			return node?.InnerText.ToDouble() ?? fallbackValue.Value;
 		}
 
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLComponentReader.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLComponentReader.cs
index b08f7f2570ff498b7444fca784ac25122ef4ce58..a8c6f3afc8fd50dd0e467752e7de166748649a1e 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLComponentReader.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLComponentReader.cs
@@ -53,7 +53,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 		public IAirdragDeclarationInputData AirdragInputData
 		{
 			get {
-				return _airdragInputData ?? (_airdragInputData = CreateComponent(XMLNames.Component_AirDrag, AirdragCreator));
+				return _airdragInputData ?? (_airdragInputData = CreateComponent(XMLNames.Component_AirDrag, AirdragCreator, true));
 			}
 		}
 		
@@ -165,6 +165,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 
 		protected IAirdragDeclarationInputData AirdragCreator(string version, XmlNode componentNode, string sourceFile)
 		{
+			if (version == null) {
+				return new XMLDeclarationAirdragDataProviderV10(Vehicle, null, sourceFile);
+			}
 			return Factory.CreateAirdragData(version, Vehicle, componentNode, sourceFile);
 		}
 
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringVehicleDataProvider.cs
index 6b5a34cd195ed18ce06b73e1ec98bfdecf7f761a..24d044a6add3d1b65c77225863e8bf22a31b19d7 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringVehicleDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringVehicleDataProvider.cs
@@ -50,7 +50,7 @@ using XmlDocumentType = TUGraz.VectoCore.Utils.XmlDocumentType;
 namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering
 {
 	public class XMLEngineeringVehicleDataProvider : AbstractEngineeringXMLComponentDataProvider,
-		IVehicleEngineeringInputData, IPTOTransmissionInputData, IVehicleComponentsEngineering, IAuxiliariesEngineeringInputData
+		IVehicleEngineeringInputData, IPTOTransmissionInputData, IVehicleComponentsEngineering, IAxlesEngineeringInputData
 	{
 		protected internal XMLEngineeringAuxiliaryDataProvider XMLEngineeringAuxiliaryData;
 		protected internal XMLEngineeringAxlegearDataProvider AxlegearData;
@@ -175,7 +175,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering
 			get { return AxleConfigurationHelper.Parse(GetElementValue(XMLNames.Vehicle_AxleConfiguration)); }
 		}
 
-		public IList<IAxleEngineeringInputData> Axles
+		public IList<IAxleEngineeringInputData> AxlesEngineering
 		{
 			get { return AxleEngineeringInput().Cast<IAxleEngineeringInputData>().ToList(); }
 		}
@@ -193,48 +193,53 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering
 		
 		private IEnumerable<AxleInputData> AxleEngineeringInput()
 		{
-			var axlePath = Helper.Query(
-				XMLNames.Vehicle_Components,
-				XMLNames.Component_AxleWheels,
-				XMLNames.ComponentDataWrapper,
-				XMLNames.AxleWheels_Axles,
-				XMLNames.AxleWheels_Axles_Axle);
-			var axles =
-				Navigator.Select(Helper.Query(XBasePath, axlePath), Manager);
-
-			var retVal = new AxleInputData[axles.Count];
-
-			while (axles.MoveNext()) {
-				var axleNumber = axles.Current.GetAttribute(XMLNames.AxleWheels_Axles_Axle_AxleNumber_Attr, "").ToInt();
-				if (axleNumber < 1 || axleNumber > retVal.Length) {
-					throw new VectoException("Axle #{0} exceeds axle count", axleNumber);
-				}
-				if (retVal[axleNumber - 1] != null) {
-					throw new VectoException("Axle #{0} defined multiple times!", axleNumber);
-				}
-				var dimension = axles.Current.SelectSingleNode(Helper.Query(XMLNames.AxleWheels_Axles_Axle_Dimension), Manager);
-				var rollResistance = axles.Current.SelectSingleNode(Helper.Query(XMLNames.AxleWheels_Axles_Axle_RRCISO), Manager);
-				var tyreTestLoad = axles.Current.SelectSingleNode(Helper.Query(XMLNames.AxleWheels_Axles_Axle_FzISO), Manager);
-				var weightShare = axles.Current.SelectSingleNode(Helper.Query(XMLNames.AxleWheels_Axles_Axle_WeightShare), Manager);
-				var inertia = axles.Current.SelectSingleNode(Helper.Query(XMLNames.AxleWheels_Axles_Axle_Inertia), Manager);
-				var axleType = axles.Current.SelectSingleNode(Helper.NSPrefix(XMLNames.AxleWheels_Axles_Axle_AxleType), Manager);
-				var twinTyres = axles.Current.SelectSingleNode(Helper.NSPrefix(XMLNames.AxleWheels_Axles_Axle_TwinTyres), Manager);
-				var steered = axles.Current.SelectSingleNode(Helper.NSPrefix(XMLNames.AxleWheels_Axles_Axle_Steered), Manager);
-
-				retVal[axleNumber - 1] = new AxleInputData {
-					AxleType = axleType == null ? AxleType.VehicleNonDriven : axleType.Value.ParseEnum<AxleType>(),
-					TwinTyres = twinTyres != null && XmlConvert.ToBoolean(twinTyres.Value),
-					Steered = steered != null && XmlConvert.ToBoolean(steered.Value),
-					AxleWeightShare = weightShare == null ? 0 : weightShare.ValueAsDouble,
-					Tyre = new TyreInputData() {
-						TyreTestLoad = tyreTestLoad == null ? null : tyreTestLoad.Value.ToDouble().SI<Newton>(),
-						RollResistanceCoefficient = rollResistance == null ? double.NaN : rollResistance.Value.ToDouble(),
-						Dimension = dimension == null ? null : dimension.Value,
-						Inertia = inertia == null ? null : inertia.ValueAsDouble.SI<KilogramSquareMeter>(),
+			
+				var axlePath = Helper.Query(
+					XMLNames.Vehicle_Components,
+					XMLNames.Component_AxleWheels,
+					XMLNames.ComponentDataWrapper,
+					XMLNames.AxleWheels_Axles,
+					XMLNames.AxleWheels_Axles_Axle);
+				var axles =
+					Navigator.Select(Helper.Query(XBasePath, axlePath), Manager);
+
+				var retVal = new AxleInputData[axles.Count];
+
+				while (axles.MoveNext()) {
+					var axleNumber = axles.Current.GetAttribute(XMLNames.AxleWheels_Axles_Axle_AxleNumber_Attr, "").ToInt();
+					if (axleNumber < 1 || axleNumber > retVal.Length) {
+						throw new VectoException("Axle #{0} exceeds axle count", axleNumber);
 					}
-				};
-			}
-			return retVal;
+					if (retVal[axleNumber - 1] != null) {
+						throw new VectoException("Axle #{0} defined multiple times!", axleNumber);
+					}
+
+					var dimension = axles.Current.SelectSingleNode(Helper.Query(XMLNames.AxleWheels_Axles_Axle_Dimension), Manager);
+					var rollResistance = axles.Current.SelectSingleNode(Helper.Query(XMLNames.AxleWheels_Axles_Axle_RRCISO), Manager);
+					var tyreTestLoad = axles.Current.SelectSingleNode(Helper.Query(XMLNames.AxleWheels_Axles_Axle_FzISO), Manager);
+					var weightShare = axles.Current.SelectSingleNode(
+						Helper.Query(XMLNames.AxleWheels_Axles_Axle_WeightShare), Manager);
+					var inertia = axles.Current.SelectSingleNode(Helper.Query(XMLNames.AxleWheels_Axles_Axle_Inertia), Manager);
+					var axleType = axles.Current.SelectSingleNode(Helper.NSPrefix(XMLNames.AxleWheels_Axles_Axle_AxleType), Manager);
+					var twinTyres = axles.Current.SelectSingleNode(Helper.NSPrefix(XMLNames.AxleWheels_Axles_Axle_TwinTyres), Manager);
+					var steered = axles.Current.SelectSingleNode(Helper.NSPrefix(XMLNames.AxleWheels_Axles_Axle_Steered), Manager);
+
+					retVal[axleNumber - 1] = new AxleInputData {
+						AxleType = axleType == null ? AxleType.VehicleNonDriven : axleType.Value.ParseEnum<AxleType>(),
+						TwinTyres = twinTyres != null && XmlConvert.ToBoolean(twinTyres.Value),
+						Steered = steered != null && XmlConvert.ToBoolean(steered.Value),
+						AxleWeightShare = weightShare == null ? 0 : weightShare.ValueAsDouble,
+						Tyre = new TyreInputData() {
+							TyreTestLoad = tyreTestLoad == null ? null : tyreTestLoad.Value.ToDouble().SI<Newton>(),
+							RollResistanceCoefficient = rollResistance == null ? double.NaN : rollResistance.Value.ToDouble(),
+							Dimension = dimension == null ? null : dimension.Value,
+							Inertia = inertia == null ? null : inertia.ValueAsDouble.SI<KilogramSquareMeter>(),
+						}
+					};
+				}
+
+				return retVal;
+			
 		}
 
 		public double RetarderRatio
@@ -270,18 +275,18 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering
 
 		IAuxiliariesEngineeringInputData IVehicleComponentsEngineering.AuxiliaryInputData
 		{
-			get { return this; }
+			get { return XMLEngineeringAuxiliaryData; }
 		}
 
-		public IAuxiliariesEngineeringInputData AuxiliaryInputData()
+		public IAuxiliariesEngineeringInputData AuxiliaryInputData
 		{
-			return XMLEngineeringAuxiliaryData;
+			get { return XMLEngineeringAuxiliaryData; }
 		}
 
 		public IRetarderInputData RetarderInputData { get; private set; }
 
 		public IPTOTransmissionInputData PTOTransmissionInputData { get; private set; }
-		public IAxlesEngineeringInputData AxleWheels { get; }
+		public IAxlesEngineeringInputData AxleWheels { get { return this; } }
 		public bool VocationalVehicle { get { return false; } }
 		public bool SleeperCab { get { return true; } }
 		public TankSystem? TankSystem { get; }
@@ -291,7 +296,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering
 		public bool DualFuelVehicle { get { return false; } }
 		public Watt MaxNetPower1 { get { return null; } }
 		public Watt MaxNetPower2 { get { return null; } }
-		public IVehicleComponentsDeclaration Components { get; }
+		public IVehicleComponentsDeclaration Components { get { return null; } }
 
 		#region "FactoryMethods"
 
@@ -424,13 +429,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering
 
 		#endregion
 
-		#region Implementation of IAuxiliariesEngineeringInputData
-
-		public IList<IAuxiliaryEngineeringInputData> Auxiliaries { get; }
-		public AuxiliaryModel AuxiliaryAssembly { get; }
-		public string AuxiliaryVersion { get; }
-		public string AdvancedAuxiliaryFilePath { get; }
+		
 
-		#endregion
 	}
 }
diff --git a/VectoCore/VectoCore/Utils/XMLDefinitions.cs b/VectoCore/VectoCore/Utils/XMLDefinitions.cs
index e4e34a174960d13096b41aaa476cf7f35cecddca..3df538d0cb277efc984b1cfb97cff2dddfcaa631 100644
--- a/VectoCore/VectoCore/Utils/XMLDefinitions.cs
+++ b/VectoCore/VectoCore/Utils/XMLDefinitions.cs
@@ -1,5 +1,6 @@
 using System;
 using System.Collections.Generic;
+using System.Linq;
 
 namespace TUGraz.VectoCore.Utils
 {
@@ -52,55 +53,27 @@ namespace TUGraz.VectoCore.Utils
 
 
 		// mapping of document type + version => supported schema files (+version)
-		private static Dictionary<Tuple<XmlDocumentType, string>, IList<string>> schemaFilenames = new Dictionary<Tuple<XmlDocumentType, string>, IList<string>>();
+		//private static Dictionary<Tuple<XmlDocumentType, string>, IList<string>> schemaFilenames = new Dictionary<Tuple<XmlDocumentType, string>, IList<string>>();
 
-		static XMLDefinitions()
-		{
-			RegisterKnownXMLSchemas();
-		}
-
-		private static void RegisterKnownXMLSchemas()
-		{
-			var declarationJob10 = Tuple.Create(XmlDocumentType.DeclarationJobData, "1.0");
-			RegisterXMLSchema(declarationJob10, "VectoInput.1.0.xsd");
-
-			var declarationComponent10 = Tuple.Create(XmlDocumentType.DeclarationComponentData, "1.0");
-			RegisterXMLSchema(declarationComponent10, "VectoComponent.1.0.xsd");
-
-			var engineeringInput07 = Tuple.Create(XmlDocumentType.EngineeringJobData, "0.7");
-			RegisterXMLSchema(engineeringInput07, "VectoEngineeringInput.0.7.xsd");
-
-			var engineeringInput10 = Tuple.Create(XmlDocumentType.EngineeringJobData, "1.0");
-			RegisterXMLSchema(engineeringInput10, "VectoEngineeringInput.1.0.xsd");
-			RegisterXMLSchema(engineeringInput10, "VectoEngineeringDefinitionsTEST.1.1.xsd");
-
-			var engineeringComponent10 = Tuple.Create(XmlDocumentType.EngineeringComponentData, "1.0");
-			RegisterXMLSchema(engineeringComponent10, "VectoEngineeringInput.1.0.xsd");
+		private static Dictionary<XmlDocumentType, Tuple<string, string[]>> schemaFilenames = new Dictionary<XmlDocumentType, Tuple<string, string[]>>() {
+			{XmlDocumentType.DeclarationJobData, Tuple.Create("VectoInput{0}.xsd", new [] {"1.0"}) },
+			{XmlDocumentType.DeclarationComponentData, Tuple.Create("VectoComponent{0}.xsd", new [] {"1.0"}) },
+			{XmlDocumentType.EngineeringJobData, Tuple.Create("VectoEngineeringInput{0}.xsd", new [] {"0.7"}) },
+			{XmlDocumentType.EngineeringComponentData, Tuple.Create("VectoEngineeringInput{0}.xsd", new [] {"0.7"}) },
+			{XmlDocumentType.ManufacturerReport, Tuple.Create("VectoOutputManufacturer{0}.xsd", new [] {"0.4", "0.5", "0.6", "0.7"}) },
+			{XmlDocumentType.CustomerReport , Tuple.Create("VectoOutputCustomer{0}.xsd", new [] {"0.4", "0.5", "0.7"})},
+			{XmlDocumentType.MonitoringReport , Tuple.Create("VectoMonitoring{0}.xsd", new [] {"0.7"})},
+		};
 
-			var manufacturerReport = Tuple.Create(XmlDocumentType.ManufacturerReport, "0.5");
-			RegisterXMLSchema(manufacturerReport, String.Format("VectoOutputManufacturer.{0}.xsd", "0.5"));
-
-			var customerReport = Tuple.Create(XmlDocumentType.CustomerReport, "0.5");
-			RegisterXMLSchema(customerReport, String.Format("VectoOutputCustomer.{0}.xsd", "0.5"));
-
-
-		}
-
-		private static void RegisterXMLSchema(Tuple<XmlDocumentType, string> doctypeversion, string schemafile)
-		{
-			if (!schemaFilenames.ContainsKey(doctypeversion)) {
-				schemaFilenames[doctypeversion] = new List<string>();
-			}
-			schemaFilenames[doctypeversion].Add(schemafile);
-		}
 
-		public static IEnumerable<string> GetSchemaFilenames(XmlDocumentType type, string version)
+		
+		public static string GetSchemaFilename(XmlDocumentType type, string version)
 		{
-			var key = Tuple.Create(type, version);
-			if (!schemaFilenames.ContainsKey(key)) {
-				throw new Exception(String.Format("Invalid argument {0} - only use single flags", type));
+			if (!schemaFilenames.ContainsKey(type)) {
+				throw new Exception(string.Format("Invalid argument {0} - only use single flags", type));
 			}
-			return schemaFilenames[key];
+			var entry = schemaFilenames[type];
+			return !entry.Item2.Contains(version) ? null : string.Format(entry.Item1, string.IsNullOrWhiteSpace(version) ? "" : "." + version);
 		}
 
 	}
diff --git a/VectoCore/VectoCore/Utils/XMLValidator.cs b/VectoCore/VectoCore/Utils/XMLValidator.cs
index 1abd89f4361e1e35832fc804fbacada933d8c1d1..0e20748ac5a0438138f51f958b476349b3a99ea3 100644
--- a/VectoCore/VectoCore/Utils/XMLValidator.cs
+++ b/VectoCore/VectoCore/Utils/XMLValidator.cs
@@ -55,24 +55,29 @@ namespace TUGraz.VectoCore.Utils
 			_valid = false;
 		}
 
-		public XMLValidator(XmlReader document, Action<bool> resultaction = null, Action<XmlSeverityType, ValidationEvent> validationErrorAction = null):this(resultaction,validationErrorAction)
+		public XMLValidator(
+			XmlReader document, Action<bool> resultaction = null,
+			Action<XmlSeverityType, ValidationEvent> validationErrorAction = null) : this(resultaction, validationErrorAction)
 		{
 			_doc = new XmlDocument();
-			_doc.Load(document);	
+			_doc.Load(document);
 		}
 
-		public XMLValidator(XmlDocument document, Action<bool> resultaction = null, Action<XmlSeverityType, ValidationEvent> validationErrorAction = null) : this(resultaction, validationErrorAction)
+		public XMLValidator(
+			XmlDocument document, Action<bool> resultaction = null,
+			Action<XmlSeverityType, ValidationEvent> validationErrorAction = null) : this(resultaction, validationErrorAction)
 		{
 			_doc = document;
 		}
 
 		public bool ValidateXML(XmlDocumentType docType)
-		{ 
+		{
 			_valid = true;
 			if (_doc.DocumentElement == null) {
 				throw new Exception("empty XML document");
 			}
-			var version =  XMLHelper.GetSchemaVersion(_doc.DocumentElement);
+
+			var version = XMLHelper.GetSchemaVersion(_doc.DocumentElement);
 			_doc.Schemas = GetXMLSchema(docType, version);
 			_doc.Validate(ValidationCallBack);
 			return _valid;
@@ -101,20 +106,23 @@ namespace TUGraz.VectoCore.Utils
 					continue;
 				}
 
-				var schemaFile = XMLDefinitions.GetSchemaFilenames(entry, version);
-				foreach (var schema in schemaFile) {
-					Stream resource;
-					try {
-						resource = RessourceHelper.LoadResourceAsStream(RessourceHelper.ResourceType.XMLSchema, schema);
-					} catch (Exception e) {
-						throw new Exception(
-							string.Format("Unknown XML schema! version: {0}, xml document type: {1} ({2})", entry, version, schemaFile), e);
-					}
-
-					var reader = XmlReader.Create(resource, new XmlReaderSettings(), "schema://");
-					xset.Add(XmlSchema.Read(reader, null));
+				var schemaFile = XMLDefinitions.GetSchemaFilename(entry, version);
+				if (schemaFile == null) {
+					continue;
 				}
+
+				Stream resource;
+				try {
+					resource = RessourceHelper.LoadResourceAsStream(RessourceHelper.ResourceType.XMLSchema, schemaFile);
+				} catch (Exception e) {
+					throw new Exception(
+						string.Format("Unknown XML schema! version: {0}, xml document type: {1} ({2})", entry, version, schemaFile), e);
+				}
+
+				var reader = XmlReader.Create(resource, new XmlReaderSettings(), "schema://");
+				xset.Add(XmlSchema.Read(reader, null));
 			}
+
 			xset.Compile();
 			return xset;
 		}
diff --git a/VectoCore/VectoCore/VectoCore.csproj b/VectoCore/VectoCore/VectoCore.csproj
index b65af679a51689c5ce5767e18c739e294b0552b9..9648a934843667d3e34397aa06c0d78c8bc0693a 100644
--- a/VectoCore/VectoCore/VectoCore.csproj
+++ b/VectoCore/VectoCore/VectoCore.csproj
@@ -176,7 +176,6 @@
     <Compile Include="InputData\FileIO\XML\Declaration\Reader\IXMLADASReader.cs" />
     <Compile Include="InputData\FileIO\XML\Declaration\Reader\IXMLComponentReader.cs" />
     <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLDeclarationInputData.cs" />
-    <Compile Include="InputData\FileIO\XML\Declaration\Impl\AbstractDeclarationXMLComponentDataProvider.cs" />
     <Compile Include="InputData\FileIO\XML\Declaration\Factory\IDeclarationInjectFactory.cs" />
     <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLDeclarationVehicleData.cs" />
     <Compile Include="InputData\FileIO\XML\Declaration\NinjectModules\XMLDeclarationInputDataV10InjectModule.cs" />
@@ -192,19 +191,10 @@
     <Compile Include="InputData\FileIO\XML\Declaration\IXMLDeclarationInputDataReader.cs" />
     <Compile Include="InputData\FileIO\XML\IXMLInputDataReader.cs" />
     <Compile Include="Utils\Ninject\UseFirstArgumentAsInstanceProvider.cs" />
-    <Compile Include="InputData\FileIO\XML\Declaration\Impl\XMLDeclarationAirdragDataProvider.cs" />
-    <Compile Include="InputData\FileIO\XML\Declaration\Impl\XMLDeclarationAngledriveDataProvider.cs" />
-    <Compile Include="InputData\FileIO\XML\Declaration\Impl\XMLDeclarationAuxiliaryDataProvider.cs" />
-    <Compile Include="InputData\FileIO\XML\Declaration\Impl\XMLDeclarationAxlegearDataProvider.cs" />
-    <Compile Include="InputData\FileIO\XML\Declaration\Impl\XMLDeclarationEngineDataProvider.cs" />
-    <Compile Include="InputData\FileIO\XML\Declaration\Impl\XMLDeclarationGearboxDataProvider.cs" />
-    <Compile Include="InputData\FileIO\XML\Declaration\Impl\XMLDeclarationJobInputDataProvider.cs" />
     <Compile Include="InputData\FileIO\XML\Declaration\XMLDeclarationReaderInjectModule.cs" />
-    <Compile Include="InputData\FileIO\XML\Declaration\Impl\XMLDeclarationRetarderDataProvider.cs" />
-    <Compile Include="InputData\FileIO\XML\Declaration\Impl\XMLDeclarationTorqueConverterDataProvider.cs" />
     <Compile Include="InputData\FileIO\XML\Declaration\DataProvider\XMLDeclarationVehicleDataProvider.cs" />
     <Compile Include="InputData\FileIO\XML\Declaration\DataProvider\XMLDeclarationInputDataProvider.cs" />
-    <Compile Include="InputData\FileIO\XML\Declaration\Impl\XMLManufacturerReportReader.cs" />
+    <Compile Include="InputData\FileIO\XMLReports\XMLManufacturerReportReader.cs" />
     <Compile Include="InputData\FileIO\XML\Engineering\AbstractEngineeringXMLComponentDataProvider.cs" />
     <Compile Include="InputData\FileIO\XML\Engineering\XMLEngineeringAirdragDataProvider.cs" />
     <Compile Include="InputData\FileIO\XML\Engineering\XMLEngineeringAngledriveDataProvider.cs" />
diff --git a/VectoCore/VectoCoreTest/FileIO/JsonWriteTest.cs b/VectoCore/VectoCoreTest/FileIO/JsonWriteTest.cs
index 869a72a2d16b9e2740f4cb9e7351279c8eec6270..f2e7bd9ba6be3461bf1ced277955ee7c9dc0e4c9 100644
--- a/VectoCore/VectoCoreTest/FileIO/JsonWriteTest.cs
+++ b/VectoCore/VectoCoreTest/FileIO/JsonWriteTest.cs
@@ -70,7 +70,7 @@ namespace TUGraz.VectoCore.Tests.FileIO
 			//Assert.AreEqual(vehicleInput, savedInprovider.JobInputData.Vehicle);
 
 			AssertHelper.PublicPropertiesEqual(typeof(IVehicleDeclarationInputData),vehicleInput, savedInprovider.JobInputData.Vehicle, 
-				new [] {"Source", "GearboxInputData", "EngineInputData", "TorqueConverterInputData", "AxleGearInputData"});
+				new [] {"Source", "GearboxInputData", "EngineInputData", "TorqueConverterInputData", "AxleGearInputData", "Identifier" });
 		}
 		
 
diff --git a/VectoCore/VectoCoreTest/Models/Simulation/PowerTrainBuilderTest.cs b/VectoCore/VectoCoreTest/Models/Simulation/PowerTrainBuilderTest.cs
index 30af5946d35ef3315e6b81db41ea66cdf2018925..8ce9760e71e2a0da962a843c0dfa5ca3634241d4 100644
--- a/VectoCore/VectoCoreTest/Models/Simulation/PowerTrainBuilderTest.cs
+++ b/VectoCore/VectoCoreTest/Models/Simulation/PowerTrainBuilderTest.cs
@@ -29,6 +29,7 @@
 *   Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology
 */
 
+using System.IO;
 using System.Linq;
 using NUnit.Framework;
 using TUGraz.VectoCommon.Exceptions;
@@ -54,6 +55,14 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation
 		public const string JobFileDeclNoAngular = @"TestData\Jobs\40t_Long_Haul_Truck_NoAng.vecto";
 		public const string JobFileDeclAngEfficiency = @"TestData\Jobs\40t_Long_Haul_Truck with AngleEfficiency.vecto";
 
+
+		
+		[OneTimeSetUp]
+		public void RunBeforeAnyTests()
+		{
+			Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory);
+		}
+
 		[Category("LongRunning")]
 		[TestCase(JobFile, 12),
 		TestCase(JobFileNoAngular, 11),