diff --git a/VECTO3GUI/Helper/Converter/ComponentTitleConverter.cs b/VECTO3GUI/Helper/Converter/ComponentTitleConverter.cs
index fd4dc4aabe682023d87c69e7674fcdec1e3509c2..ea667204afb689defdd31cca7872a1e95ec0fd86 100644
--- a/VECTO3GUI/Helper/Converter/ComponentTitleConverter.cs
+++ b/VECTO3GUI/Helper/Converter/ComponentTitleConverter.cs
@@ -3,6 +3,7 @@ using System.Collections.Generic;
 using System.Globalization;
 using System.Linq;
 using System.Text;
+using System.Text.RegularExpressions;
 using System.Threading.Tasks;
 using System.Windows.Data;
 using VECTO3GUI.Util;
@@ -15,7 +16,7 @@ namespace VECTO3GUI.Helper.Converter
 		{
 			if (value is Component) {
 				var component = (Component)value;
-				return component.GetLabel();
+				return Regex.Replace(component.GetLabel(), "(\\B[A-Z])", " $1"); ;
 			}
 
 			return value;
diff --git a/VECTO3GUI/Model/TempDataObject/AirdragComponentData.cs b/VECTO3GUI/Model/TempDataObject/AirdragComponentData.cs
index c573a43cb27b8de5b995363b8902bd7bd22f5afb..dc8b32e9caa64f99742b060b892077200f2532ec 100644
--- a/VECTO3GUI/Model/TempDataObject/AirdragComponentData.cs
+++ b/VECTO3GUI/Model/TempDataObject/AirdragComponentData.cs
@@ -3,6 +3,7 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Utils;
 using VECTO3GUI.ViewModel.Interfaces;
 
@@ -22,6 +23,8 @@ namespace VECTO3GUI.Model.TempDataObject
 		public SquareMeter DeclaredCdxA { get; set; }
 		public string AppVersion { get; set; }
 
+		public DigestData DigestValue { get; set; }
+
 		#endregion
 
 
@@ -51,6 +54,7 @@ namespace VECTO3GUI.Model.TempDataObject
 			viewModel.DeclaredCdxA = DeclaredCdxA;
 			viewModel.CdxA_0 = CdxA_0;
 			viewModel.TransferredCdxA = TransferredCdxA;
+			viewModel.DigestValue = DigestValue;
 		}
 
 		public void ClearValues(IAirdragViewModel viewModel)
@@ -63,6 +67,7 @@ namespace VECTO3GUI.Model.TempDataObject
 			viewModel.DeclaredCdxA = default(SquareMeter);
 			viewModel.CdxA_0 = default(SquareMeter);
 			viewModel.TransferredCdxA = default(SquareMeter);
+			viewModel.DigestValue = default(DigestData);
 		}
 
 		private void SetValues(IAirdragViewModel viewModel)
@@ -75,6 +80,7 @@ namespace VECTO3GUI.Model.TempDataObject
 			DeclaredCdxA = viewModel.DeclaredCdxA;
 			CdxA_0 = viewModel.CdxA_0;
 			TransferredCdxA = viewModel.TransferredCdxA;
+			DigestValue = viewModel.DigestValue;
 		}
 	}
 }
diff --git a/VECTO3GUI/Model/TempDataObject/VehicleBusComponentData.cs b/VECTO3GUI/Model/TempDataObject/VehicleBusComponentData.cs
index d78200e7db94382244556d21af8a4d122d3a7b5f..32f254bd8569303f05be3a0cc8b9b4a1fee2f844 100644
--- a/VECTO3GUI/Model/TempDataObject/VehicleBusComponentData.cs
+++ b/VECTO3GUI/Model/TempDataObject/VehicleBusComponentData.cs
@@ -5,6 +5,7 @@ using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using TUGraz.VectoCommon.BusAuxiliaries;
+using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
 using VECTO3GUI.ViewModel.Impl;
@@ -26,9 +27,10 @@ namespace VECTO3GUI.Model.TempDataObject
 		public VehicleCode VehicleCode { get; set; }
 		public Kilogram CurbMassChassis { get; set; }
 		public Kilogram TechnicalPermissibleMaximumLadenMass { get; set; }
+		public TankSystem? NgTankSystem { get; set; }
 		public int NumberOfPassengersLowerDeck { get; set; }
 		public int NumberOfPassengersUpperDeck { get; set; }
-		public FloorType FloorType { get; set; }
+		public bool LowEntry { get; set; }
 		public Meter HeightIntegratedBody { get; set; }
 		public Meter VehicleLength { get; set; }
 		public Meter VehicleWidth { get; set; }
@@ -65,9 +67,10 @@ namespace VECTO3GUI.Model.TempDataObject
 			viewModel.VehicleCode = VehicleCode;
 			viewModel.CurbMassChassis = CurbMassChassis;
 			viewModel.TechnicalPermissibleMaximumLadenMass = TechnicalPermissibleMaximumLadenMass;
+			viewModel.NgTankSystem = NgTankSystem;
 			viewModel.NumberOfPassengersLowerDeck = NumberOfPassengersLowerDeck;
 			viewModel.NumberOfPassengersUpperDeck = NumberOfPassengersUpperDeck;
-			viewModel.FloorType = FloorType;
+			viewModel.LowEntry = LowEntry;
 			viewModel.HeightIntegratedBody = HeightIntegratedBody;
 			viewModel.VehicleLength = VehicleLength;
 			viewModel.VehicleWidth = VehicleWidth;
@@ -87,9 +90,10 @@ namespace VECTO3GUI.Model.TempDataObject
 			viewModel.VehicleCode = default(VehicleCode);
 			viewModel.CurbMassChassis = default(Kilogram);
 			viewModel.TechnicalPermissibleMaximumLadenMass = default(Kilogram);
+			viewModel.NgTankSystem = default(TankSystem);
 			viewModel.NumberOfPassengersLowerDeck = default(int);
 			viewModel.NumberOfPassengersUpperDeck = default(int);
-			viewModel.FloorType = default(FloorType);
+			viewModel.LowEntry = LowEntry;
 			viewModel.HeightIntegratedBody = default(Meter);
 			viewModel.VehicleLength = default(Meter);
 			viewModel.VehicleWidth = default(Meter);
@@ -110,9 +114,10 @@ namespace VECTO3GUI.Model.TempDataObject
 			VehicleCode = vehicleBus.VehicleCode;
 			CurbMassChassis = vehicleBus.CurbMassChassis;
 			TechnicalPermissibleMaximumLadenMass = vehicleBus.TechnicalPermissibleMaximumLadenMass;
+			NgTankSystem = vehicleBus.NgTankSystem ;
 			NumberOfPassengersLowerDeck = vehicleBus.NumberOfPassengersLowerDeck;
 			NumberOfPassengersUpperDeck = vehicleBus.NumberOfPassengersUpperDeck;
-			FloorType = vehicleBus.FloorType;
+			LowEntry = vehicleBus.LowEntry;
 			HeightIntegratedBody = vehicleBus.HeightIntegratedBody;
 			VehicleLength = vehicleBus.VehicleLength;
 			VehicleWidth = vehicleBus.VehicleWidth;
diff --git a/VECTO3GUI/Util/Component.cs b/VECTO3GUI/Util/Component.cs
index 62391d60f24e22908b7baee98668ccefd334e599..88bb0ef93df8217e0829f9bd27d61b9bb76cef6c 100644
--- a/VECTO3GUI/Util/Component.cs
+++ b/VECTO3GUI/Util/Component.cs
@@ -1,4 +1,6 @@
-namespace VECTO3GUI.Util {
+using TUGraz.VectoCommon.Resources;
+
+namespace VECTO3GUI.Util {
 	public enum Component
 	{
 		Vehicle = 1,
@@ -27,28 +29,28 @@
 				case Component.Vehicle:
 				case Component.PrimaryBusVehicle:
 				case Component.CompleteBusVehicle:
-					return nameof(Component.Vehicle);
+					return XMLNames.Component_Vehicle;
 				case Component.Engine:
-					return nameof(Component.Engine);
+					return XMLNames.Component_Engine;
 				case Component.Gearbox:
-					return nameof(Component.Gearbox);
+					return XMLNames.Component_Gearbox;
 				case Component.TorqueConverter:
-					return "Torque Converter";
+					return XMLNames.Component_TorqueConverter;
 				case Component.Retarder:
-					return "Retarder";
+					return XMLNames.Component_Retarder;
 				case Component.Angledrive:
-					return "Angle Drive";
+					return XMLNames.Component_Angledrive;
 				case Component.Axlegear:
-					return "Axle Gear";
+					return XMLNames.Component_Axlegear;
 				case Component.PTO:
-					return "Power Take Off";
+					return XMLNames.Vehicle_PTO;
 				case Component.Airdrag:
-					return "Air Drag";
+					return XMLNames.Component_AirDrag;
 				case Component.Axles:
-					return "Axle";
+					return XMLNames.AxleWheels_Axles_Axle;
 				case Component.Auxiliaries:
 				case Component.BusAuxiliaries:
-					return "Auxiliary";
+					return XMLNames.Component_Auxiliaries;
 				case Component.Cycle:
 					return nameof(Component.Cycle);
 			}
diff --git a/VECTO3GUI/Util/XML/XMLCompletedBus.cs b/VECTO3GUI/Util/XML/XMLCompletedBus.cs
new file mode 100644
index 0000000000000000000000000000000000000000..b81c9201b965e69fc7fb88da32135affa21469f3
--- /dev/null
+++ b/VECTO3GUI/Util/XML/XMLCompletedBus.cs
@@ -0,0 +1,205 @@
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+using Castle.Core.Internal;
+using TUGraz.IVT.VectoXML.Writer;
+using TUGraz.VectoCommon.BusAuxiliaries;
+using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Resources;
+using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider;
+using VECTO3GUI.ViewModel.Interfaces;
+
+
+namespace VECTO3GUI.Util.XML
+{
+	public class XMLCompletedBus
+	{
+		private string _declarationDefinition;
+		private string _schemaVersion;
+		private XNamespace _xsi;
+		private XNamespace _tns;
+		private XNamespace _v26;
+		private XNamespace _v21;
+		private XNamespace _v20;
+		private XNamespace _di;
+		private XNamespace _rootNamespace;
+
+
+		public XMLCompletedBus()
+		{
+			Init();
+		}
+
+		private void Init()
+		{
+			_declarationDefinition = "urn:tugraz:ivt:VectoAPI:DeclarationDefinitions";
+			_schemaVersion = "2.0";
+			_xsi = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance");
+
+			_tns = "urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0";
+			_v26 = _declarationDefinition + ":DEV:v2.6";
+			_v21 = _declarationDefinition + ":v2.1";
+			_v20 = _declarationDefinition + ":v2.0";
+			_di = "http://www.w3.org/2000/09/xmldsig#";
+			_rootNamespace = "urn:tugraz:ivt:VectoAPI:DeclarationJob";
+		}
+
+		public XDocument GenerateCompletedBusDocument(Dictionary<Component, object> inputData)
+		{
+			var doc = new XDocument();
+
+			doc.Add(
+				new XElement(_tns + XMLNames.VectoInputDeclaration,
+					new XAttribute("schemaVersion", _schemaVersion),
+					new XAttribute(XNamespace.Xmlns + "xsi", _xsi.NamespaceName),
+					new XAttribute("xmlns", _v21),
+					new XAttribute(XNamespace.Xmlns +"tns", _tns),
+					new XAttribute(XNamespace.Xmlns +"v2.6", _v26),
+					new XAttribute(XNamespace.Xmlns +"v2.1", _v21), 
+					new XAttribute(XNamespace.Xmlns +"v2.0", _v20),
+					new XAttribute(XNamespace.Xmlns +"di", _di),
+					new XAttribute(_xsi + "schemaLocation", 
+						$"{_rootNamespace} {AbstractXMLWriter.SchemaLocationBaseUrl}VectoDeclarationJob.xsd"),
+					GetVehicle(inputData)
+				));
+			return doc;
+		}
+		
+		private XElement GetVehicle(Dictionary<Component, object> inputData)
+		{
+			var vehicleData = (ICompleteVehicleBus)inputData[Component.CompleteBusVehicle];
+
+
+
+			return new XElement(_v20 + XMLNames.Component_Vehicle,
+					new XAttribute(XMLNames.Component_ID_Attr, vehicleData.VIN),
+					new XAttribute(_xsi + "type", XMLDeclarationCompletedBusDataProviderV26.XSD_TYPE),// "CompletedVehicleDeclarationType"
+					new XAttribute("xmlns", _v26),
+
+					new XElement(_v26 + XMLNames.Component_Manufacturer, vehicleData.Manufacturer),
+					new XElement(_v26 + XMLNames.Component_ManufacturerAddress, vehicleData?.ManufacturerAddress),
+					new XElement(_v26 + XMLNames.Component_Model, vehicleData.Model),
+					new XElement(_v26 + XMLNames.Vehicle_VIN, vehicleData.VIN),
+					new XElement(_v26 + XMLNames.Component_Date, vehicleData.Date.ToString("s") + "Z"),
+					new XElement(_v26 + XMLNames.Vehicle_LegislativeClass, vehicleData.LegislativeClass.GetLabel()),
+					new XElement(_v26 + XMLNames.Vehicle_RegisteredClass, vehicleData.RegisteredClass.GetLabel()),
+					new XElement(_v26 + XMLNames.Vehicle_VehicleCode, vehicleData.VehicleCode.GetLabel()),
+					new XElement(_v26 + XMLNames.Vehicle_CurbMassChassis, vehicleData.CurbMassChassis.ToXMLFormat(0)),
+					new XElement(_v26 + XMLNames.TPMLM, vehicleData.TechnicalPermissibleMaximumLadenMass.ToXMLFormat(0)),
+					vehicleData.NgTankSystem == null ? null : new XElement(_v26 + XMLNames.Vehicle_NgTankSystem, vehicleData.NgTankSystem),
+					new XElement(_v26 + "RegisteredPassengers",
+						new XElement(_v26 + XMLNames.Bus_LowerDeck, vehicleData.NumberOfPassengersLowerDeck),
+						new XElement(_v26 + XMLNames.Bus_UpperDeck, vehicleData.NumberOfPassengersUpperDeck)
+					),
+					new XElement(_v26 + XMLNames.Bus_LowEntry, vehicleData.LowEntry),
+					new XElement(_v26 + XMLNames.Bus_HeighIntegratedBody, vehicleData.HeightIntegratedBody.ToXMLFormat(3)),
+					new XElement(_v26 + XMLNames.Bus_VehicleLength, vehicleData.VehicleLength.ToXMLFormat(3)),
+					new XElement(_v26 + XMLNames.Bus_VehicleWidth, vehicleData.VehicleWidth.ToXMLFormat(3)),
+					new XElement(_v26 + XMLNames.Bus_EntranceHeight, vehicleData.EntranceHeight.ToXMLFormat(3)),
+					new XElement(_v26 + XMLNames.BusAux_PneumaticSystem_DoorDriveTechnology, vehicleData.DoorDriveTechnology.GetLabel().ToLower()),
+
+					new XElement(_v26 + XMLNames.Vehicle_Components,
+							new XAttribute(_xsi + "type", XMLDeclarationCompleteBusComponentsDataProviderV26.XSD_TYPE),//"CompletedVehicleComponentsDeclarationType"
+							GetComponentXElements(inputData)
+						)
+			);
+		}
+
+		private XElement[] GetComponentXElements(Dictionary<Component, object> inputData)
+		{
+			var result = inputData.ContainsKey(Component.Airdrag) ? new XElement[2] : new XElement[1];
+
+			if (result.Length == 2) {
+				result[0] = GetAirdrag((IAirdrag)inputData[Component.Airdrag]);
+				result[1] = GetAuxiliary((IAuxiliariesBus)inputData[Component.Auxiliaries]);
+			} else {
+				result[0] = GetAuxiliary((IAuxiliariesBus)inputData[Component.Auxiliaries]); 
+			}
+		
+			return result;
+		}
+		
+		private XElement GetAirdrag(IAirdrag airdrag)
+		{
+			return new XElement(_v26 + XMLNames.Component_AirDrag, 
+				new XAttribute("xmlns", _v20),
+				
+				new XElement(_v20 + XMLNames.ComponentDataWrapper, 
+					new XAttribute(XMLNames.Component_ID_Attr, airdrag.DigestValue.Reference),
+					new XAttribute(_xsi + "type", XMLDeclarationAirdragDataProviderV10.XSD_TYPE), // "AirDragDataDeclarationType"
+					
+					new XElement(_v20 + XMLNames.Component_Manufacturer, airdrag.Manufacturer),
+					new XElement(_v20 + XMLNames.Component_Model, airdrag.Model),
+					new XElement(_v20 + XMLNames.Component_CertificationNumber, airdrag.CertificationNumber),
+					new XElement(_v20 + XMLNames.Component_Date, airdrag.Date),
+					new XElement(_v20 + XMLNames.Component_AppVersion, airdrag.AppVersion),
+					new XElement(_v20 + "CdxA_0", airdrag.CdxA_0.ToXMLFormat()),
+					new XElement(_v20 + "TransferredCdxA", airdrag.TransferredCdxA.ToXMLFormat()),
+					new XElement(_v20 + XMLNames.AirDrag_DeclaredCdxA, airdrag.DeclaredCdxA.ToXMLFormat())),
+				
+				new XElement(_v20 + XMLNames.DI_Signature,
+					new XElement(_di +XMLNames.DI_Signature_Reference,
+						new XAttribute(XMLNames.DI_Signature_Reference_URI_Attr, airdrag.DigestValue.Reference),
+						new XElement(_di + XMLNames.DI_Signature_Reference_Transforms,
+							new XElement(_di + XMLNames.DI_Signature_Reference_Transforms_Transform, 
+								new XAttribute(XMLNames.DI_Signature_Algorithm_Attr, airdrag.DigestValue.CanonicalizationMethods[0])),
+							new XElement(_di + XMLNames.DI_Signature_Reference_Transforms_Transform,
+								new XAttribute(XMLNames.DI_Signature_Algorithm_Attr, airdrag.DigestValue.CanonicalizationMethods[1]))
+						),
+						new XElement(_di + XMLNames.DI_Signature_Reference_DigestMethod,
+							new XAttribute(XMLNames.DI_Signature_Algorithm_Attr, airdrag.DigestValue.DigestMethod)),
+						new XElement(_di + XMLNames.DI_Signature_Reference_DigestValue, airdrag.DigestValue.DigestValue))
+						)
+				);
+		}
+
+		private XElement GetAuxiliary(IAuxiliariesBus auxBus)
+		{
+			return new XElement(_v26 + XMLNames.Component_Auxiliaries,
+					new XElement(_v26 + XMLNames.ComponentDataWrapper,
+						new XAttribute(_xsi +"type", XMLDeclarationCompleteBusAuxiliariesDataProviderV26.XSD_TYPE),//"CompletedVehicleAuxiliaryDataDeclarationType"
+
+						new XElement(_v26 + XMLNames.BusAux_ElectricSystem,
+							GetAlternatorTechnology(auxBus?.AlternatorTechnologies),
+							new XElement(_v26 + "LEDLights",
+								new XElement(_v26 + XMLNames.Bus_Dayrunninglights, auxBus?.DayrunninglightsLED),
+								new XElement(_v26 + XMLNames.Bus_Headlights, auxBus?.HeadlightsLED),
+								new XElement(_v26 + XMLNames.Bus_Positionlights, auxBus?.PositionlightsLED),
+								new XElement(_v26 + XMLNames.Bus_Brakelights, auxBus?.BrakelightsLED),
+								new XElement(_v26 + XMLNames.Bus_Interiorlights, auxBus?.InteriorLightsLED))),
+							new XElement(_v26 + XMLNames.BusAux_PneumaticSystem,
+								new XElement(_v26 + XMLNames.BusAux_PneumaticSystem_DoorDriveTechnology)),
+							new XElement(_v26 + "HVAC",
+								new XElement(_v26 + XMLNames.Bus_SystemConfiguration, auxBus?.SystemConfiguration.GetXmlFormat()),
+								new XElement(_v26 + XMLNames.Bus_CompressorType,
+									new XElement(_v26 + XMLNames.Bus_DriverAC, auxBus?.CompressorTypeDriver.GetLabel()),
+									new XElement(_v26 + XMLNames.Bus_PassengerAC, auxBus?.CompressorTypePassenger.GetLabel())),
+								new XElement(_v26 + XMLNames.Bus_AuxiliaryHeaterPower, auxBus?.AuxHeaterPower.ToXMLFormat()),
+								new XElement(_v26 + XMLNames.Bus_DoubleGlasing, auxBus?.DoubleGlasing),
+								new XElement(_v26 + XMLNames.Bus_HeatPump, auxBus?.HeatPump),
+								new XElement(_v26 + XMLNames.Bus_AdjustableAuxiliaryHeater, auxBus?.AdjustableAuxiliaryHeater), 
+								new XElement(_v26 + XMLNames.Bus_SeparateAirDistributionDucts, auxBus?.SeparateAirDistributionDucts)
+								)
+							)
+			);
+		}
+		
+		private XElement[] GetAlternatorTechnology(IList<string> alternatorTechnologies)
+		{
+			if (alternatorTechnologies.IsNullOrEmpty())
+				return null;
+
+			var result = new XElement[alternatorTechnologies.Count];
+
+			for (int i = 0; i < alternatorTechnologies.Count; i++) {
+				result [i] = new XElement(_v26 + XMLNames.BusAux_ElectricSystem_AlternatorTechnology, alternatorTechnologies[i]);	
+			}
+
+			return result;
+		}
+	}
+}
diff --git a/VECTO3GUI/VECTO3GUI.csproj b/VECTO3GUI/VECTO3GUI.csproj
index b317f30f7d4bb8f3d64f2d942b8f393a1c80e18d..cc6925660946f92a0fa9b379eaa09443f001b617 100644
--- a/VECTO3GUI/VECTO3GUI.csproj
+++ b/VECTO3GUI/VECTO3GUI.csproj
@@ -178,6 +178,7 @@
     <Compile Include="Util\TableDataConverter.cs" />
     <Compile Include="Util\VectoParameterAttribute.cs" />
     <Compile Include="Util\ViewModelFactory.cs" />
+    <Compile Include="Util\XML\XMLCompletedBus.cs" />
     <Compile Include="ViewModel\Adapter\Declaration\AbstractDeclarationAdapter.cs" />
     <Compile Include="ViewModel\Adapter\Declaration\AirdragDeclarationAdapter.cs" />
     <Compile Include="ViewModel\Adapter\Declaration\AngledriveDeclarationAdapter.cs" />
diff --git a/VECTO3GUI/ViewModel/Impl/AbstractJobViewModel.cs b/VECTO3GUI/ViewModel/Impl/AbstractJobViewModel.cs
index 89188b1085a41399bdc0c74b42e3aae8d39edccf..db2d12879ac09cc44c5ee99fc6f3083723aa8103 100644
--- a/VECTO3GUI/ViewModel/Impl/AbstractJobViewModel.cs
+++ b/VECTO3GUI/ViewModel/Impl/AbstractJobViewModel.cs
@@ -13,6 +13,10 @@ namespace VECTO3GUI.ViewModel.Impl
 	{
 		protected bool IsDeclarationMode;
 		private IComponentViewModel _currentComponent;
+		private ICommand _saveJobCommand;
+		private ICommand _closeJobCommand;
+		private ICommand _saveToJobCommand;
+
 
 		public override bool DeclarationMode
 		{
@@ -27,19 +31,32 @@ namespace VECTO3GUI.ViewModel.Impl
 			}
 		}
 
-		public ICommand SaveJob { get { return new RelayCommand(DoSaveJob); } }
+		public ICommand SaveJob
+		{
+			get { return _saveJobCommand ?? (_saveJobCommand =  new RelayCommand(DoSaveJob)); }
+		}
 
 		protected abstract void DoSaveJob();
 
-		public ICommand CloseJob { get { return new RelayCommand<UserControl>(DoCloseJob);} }
+		public ICommand CloseJob
+		{
+			get { return _closeJobCommand ?? (_closeJobCommand = new RelayCommand<Window>(DoCloseJob));}
+		}
 
-		protected virtual void DoCloseJob(UserControl ctl)
+		protected abstract void DoCloseJob(Window window);
+
+
+		public ICommand SaveToJob
 		{
-			Window.GetWindow(ctl).Close();
+			get { return _saveToJobCommand ?? (_saveToJobCommand = new RelayCommand(DoSaveToJob)); }
 		}
 
+		protected abstract void DoSaveToJob();
 
-		public ICommand EditComponent { get { return new RelayCommand<Component>(DoEditComponent); } }
+		public ICommand EditComponent
+		{
+			get { return new RelayCommand<Component>(DoEditComponent); }
+		}
 
 		protected virtual void DoEditComponent(Component component)
 		{
diff --git a/VECTO3GUI/ViewModel/Impl/AirdragViewModel.cs b/VECTO3GUI/ViewModel/Impl/AirdragViewModel.cs
index 2fb91a5acc046f0439315e1f6c3e87e458fb113a..20504eda8d0ebf7d265941d45132d91e65425101 100644
--- a/VECTO3GUI/ViewModel/Impl/AirdragViewModel.cs
+++ b/VECTO3GUI/ViewModel/Impl/AirdragViewModel.cs
@@ -155,6 +155,7 @@ namespace VECTO3GUI.ViewModel.Impl
 			}
 		}
 
+		public DigestData DigestValue { get; set; }
 
 		#endregion
 
@@ -188,6 +189,7 @@ namespace VECTO3GUI.ViewModel.Impl
 			Date = airdrag.Date;
 			AppVersion = airdrag.AppVersion;
 			SetAirdragArea(airdrag);
+			DigestValue = airdrag.DigestValue;
 
 			_componentData = new AirdragComponentData(this);
 			ClearChangedProperties();
diff --git a/VECTO3GUI/ViewModel/Impl/CompleteVehicleBusJobViewModel.cs b/VECTO3GUI/ViewModel/Impl/CompleteVehicleBusJobViewModel.cs
index 388455e30cd78aba0c8f6b44fd5af70876736980..0e0246630aa09367626f172971fa32ae12b388c0 100644
--- a/VECTO3GUI/ViewModel/Impl/CompleteVehicleBusJobViewModel.cs
+++ b/VECTO3GUI/ViewModel/Impl/CompleteVehicleBusJobViewModel.cs
@@ -3,13 +3,16 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using System.Windows;
 using System.Windows.Input;
 using Ninject;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCore.Models.SimulationComponent.Impl;
+using TUGraz.VectoCore.OutputData.XML.DeclarationJobs;
 using VECTO3GUI.Model.TempDataObject;
 using VECTO3GUI.ViewModel.Interfaces;
 using VECTO3GUI.Util;
+using VECTO3GUI.Util.XML;
 
 namespace VECTO3GUI.ViewModel.Impl
 {
@@ -19,9 +22,6 @@ namespace VECTO3GUI.ViewModel.Impl
 		
 		private ICommand _saveComponentCommand;
 		private ICommand _resetComponentCommand;
-		private ICommand _saveJobCommand;
-		private ICommand _saveJobToCommand;
-		private ICommand _exitCommand;
 
 		#endregion
 
@@ -48,12 +48,7 @@ namespace VECTO3GUI.ViewModel.Impl
 		
 
 
-		public ICommand SaveJobCommand
-		{
-			get {
-				return _saveJobCommand ??
-						(_saveJobCommand = new RelayCommand(DoSaveJob));}
-		}
+
 		
 		protected override void DoSaveJob()
 		{
@@ -62,6 +57,23 @@ namespace VECTO3GUI.ViewModel.Impl
 				{ Component.Airdrag, _subModels[Component.Airdrag].SaveComponentData()},
 				{ Component.Auxiliaries, _subModels[Component.Auxiliaries].SaveComponentData()}
 			};
+
+
+			//var completedXml = new XMLCompletedBus();
+			//var xmlDoc =  completedXml.GenerateCompletedBusDocument(CompleteVehicleBusData);
+
+			//var writer = new XMLCompletedBusWriter();
+			//writer.WriteCompletedBusXml(filePath, xmlDoc);
+		}
+
+		protected override void DoCloseJob(Window window)
+		{
+			window?.Close();
+		}
+
+		protected override void DoSaveToJob()
+		{
+			
 		}
 
 		public ICommand SaveComponent
diff --git a/VECTO3GUI/ViewModel/Impl/CompleteVehicleBusViewModel.cs b/VECTO3GUI/ViewModel/Impl/CompleteVehicleBusViewModel.cs
index f5c52e837d3f5ef80c774860e98b2bef50a97ad6..0f525e97a151e605f78abc77dd54152439dedf2d 100644
--- a/VECTO3GUI/ViewModel/Impl/CompleteVehicleBusViewModel.cs
+++ b/VECTO3GUI/ViewModel/Impl/CompleteVehicleBusViewModel.cs
@@ -33,9 +33,10 @@ namespace VECTO3GUI.ViewModel.Impl
 		private VehicleCode _vehicleCode;
 		private Kilogram _curbMassChassis;
 		private Kilogram _technicalPermissibleMaximumLadenMass;
+		private TankSystem? _ngTankSystem;
 		private int _numberOfPassengersLowerDeck;
 		private int _numberOfPassengersUpperDeck;
-		private FloorType _floorType;
+		private bool _lowEntry;
 		private Meter _heightIntegratedBody;
 		private Meter _vehicleLength;
 		private Meter _vehicleWidth;
@@ -148,6 +149,16 @@ namespace VECTO3GUI.ViewModel.Impl
 				IsDataChanged(_technicalPermissibleMaximumLadenMass, _componentData);
 			}
 		}
+		public TankSystem? NgTankSystem
+		{
+			get { return _ngTankSystem; }
+			set
+			{
+				if (!SetProperty(ref _ngTankSystem, value))
+					return;
+				IsDataChanged(_ngTankSystem, _componentData);
+			}
+		}
 		public int NumberOfPassengersLowerDeck
 		{
 			get { return _numberOfPassengersLowerDeck; }
@@ -168,16 +179,18 @@ namespace VECTO3GUI.ViewModel.Impl
 				IsDataChanged(_numberOfPassengersUpperDeck, _componentData);
 			}
 		}
-		public FloorType FloorType
+
+		public bool LowEntry
 		{
-			get { return _floorType; }
+			get { return _lowEntry; }
 			set
 			{
-				if (!SetProperty(ref _floorType, value))
+				if (!SetProperty(ref _lowEntry, value)) 
 					return;
-				IsDataChanged(_floorType, _componentData);
+				IsDataChanged(_lowEntry, _componentData);
 			}
 		}
+
 		public Meter HeightIntegratedBody
 		{
 			get { return _heightIntegratedBody; }
@@ -232,9 +245,9 @@ namespace VECTO3GUI.ViewModel.Impl
 
 		public AllowedEntry<LegislativeClass>[] AllowedLegislativeClasses { get; private set; }
 		public AllowedEntry<VehicleCode>[] AllowedVehicleCodes { get; private set; }
-		public AllowedEntry<FloorType>[] AllowedFloorTypes { get; private set; }
 		public AllowedEntry<ConsumerTechnology>[] AllowedConsumerTechnologies { get; private set; }
 		public AllowedEntry<RegistrationClass>[] AllowedRegisteredClasses { get; private set; }
+		public AllowedEntry<TankSystem>[] AllowedTankSystems { get; private set; }
 
 		#endregion
 
@@ -267,9 +280,10 @@ namespace VECTO3GUI.ViewModel.Impl
 			VehicleCode = vehicle.VehicleCode;
 			CurbMassChassis = vehicle.CurbMassChassis;
 			TechnicalPermissibleMaximumLadenMass = vehicle.GrossVehicleMassRating;
+			NgTankSystem = vehicle.TankSystem;
 			NumberOfPassengersLowerDeck = vehicle.NumberOfPassengersLowerDeck;
 			NumberOfPassengersUpperDeck = vehicle.NuberOfPassengersUpperDeck;
-			FloorType = vehicle.FloorType;
+			LowEntry = vehicle.FloorType == FloorType.LowFloor; 
 			HeightIntegratedBody = vehicle.Height;
 			VehicleLength = vehicle.Length;
 			VehicleWidth = vehicle.Width;
@@ -289,19 +303,21 @@ namespace VECTO3GUI.ViewModel.Impl
 			AllowedVehicleCodes = Enum.GetValues(typeof(VehicleCode)).Cast<VehicleCode>()
 				.Select(vc => AllowedEntry.Create(vc, vc.GetLabel())).ToArray();
 
-			var highFloor = AllowedEntry.Create(FloorType.HighFloor, FloorType.HighFloor.GetLabel());
-			var lowFloor = AllowedEntry.Create(FloorType.LowFloor, FloorType.LowFloor.GetLabel());
-			AllowedFloorTypes = new []{ highFloor, lowFloor };
-
 			AllowedConsumerTechnologies = Enum.GetValues(typeof(ConsumerTechnology)).Cast<ConsumerTechnology>()
 				.Select(sc => AllowedEntry.Create(sc, sc.GetLabel())).ToArray();
 
 			AllowedRegisteredClasses = Enum.GetValues(typeof(RegistrationClass)).Cast<RegistrationClass>()
 				.Select(vc => AllowedEntry.Create(vc, vc.GetLabel())).ToArray();
+			
+			var tankSystems = Enum.GetValues(typeof(TankSystem)).Cast<TankSystem>().ToArray();
+			var tank = new AllowedEntry<TankSystem> [tankSystems.Length+1];
 
-			AllowedRegisteredClasses =
-				AllowedRegisteredClasses.Where(val => val.Value != RegistrationClass.unknown).ToArray();
+			tank[0] = AllowedEntry.Create(TankSystem.Compressed, null);
+			for (int i = 1; i < tankSystems.Length + 1; i++) {
+				tank[i] = AllowedEntry.Create(tankSystems[i-1], tankSystems[i-1].ToString());
+			}
 
+			AllowedTankSystems = tank;
 		}
 
 		#endregion
diff --git a/VECTO3GUI/ViewModel/Impl/DeclarationJobViewModel.cs b/VECTO3GUI/ViewModel/Impl/DeclarationJobViewModel.cs
index 890983a2b9b3a6406001bdb34f5800b4b1fc8d5f..d7243c341a4ae4fac8ebaf417733b094c38792fe 100644
--- a/VECTO3GUI/ViewModel/Impl/DeclarationJobViewModel.cs
+++ b/VECTO3GUI/ViewModel/Impl/DeclarationJobViewModel.cs
@@ -65,7 +65,17 @@ namespace VECTO3GUI.ViewModel.Impl
 			var tmp = writer.GenerateVectoJob(ModelData);
 		}
 
-		
+		protected override void DoCloseJob(Window window)
+		{
+			throw new NotImplementedException();
+		}
+
+		protected override void DoSaveToJob()
+		{
+			throw new NotImplementedException();
+		}
+
+
 		public IInputDataProvider InputDataProvider
 		{
 			get { return _inputData; }
diff --git a/VECTO3GUI/ViewModel/Impl/EngineOnlyJobViewModel.cs b/VECTO3GUI/ViewModel/Impl/EngineOnlyJobViewModel.cs
index 01446b17ab24018b00bf923c9a2dd3c0328cf60b..9791a60004e7707815d9aef2579f837687dae1d8 100644
--- a/VECTO3GUI/ViewModel/Impl/EngineOnlyJobViewModel.cs
+++ b/VECTO3GUI/ViewModel/Impl/EngineOnlyJobViewModel.cs
@@ -1,6 +1,9 @@
-using System.Windows.Input;
+using System.Windows;
+using System.Windows.Input;
 using Ninject;
+using TUGraz.VectoCommon.BusAuxiliaries;
 using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCore.Utils;
 using VECTO3GUI.Util;
 using VECTO3GUI.ViewModel.Interfaces;
@@ -52,6 +55,16 @@ namespace VECTO3GUI.ViewModel.Impl
 			throw new System.NotImplementedException();
 		}
 
+		protected override void DoCloseJob(Window window)
+		{
+			throw new System.NotImplementedException();
+		}
+
+		protected override void DoSaveToJob()
+		{
+			throw new System.NotImplementedException();
+		}
+
 		#endregion
 	}
 }
diff --git a/VECTO3GUI/ViewModel/Impl/PrimaryVehicleBusJobViewModel.cs b/VECTO3GUI/ViewModel/Impl/PrimaryVehicleBusJobViewModel.cs
index e0b97c66b02e5c93d3fa1a410e23c767ca152998..f70e430fb85658852d0bc504413224d8ec91c5c6 100644
--- a/VECTO3GUI/ViewModel/Impl/PrimaryVehicleBusJobViewModel.cs
+++ b/VECTO3GUI/ViewModel/Impl/PrimaryVehicleBusJobViewModel.cs
@@ -3,6 +3,7 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using System.Windows;
 using Ninject;
 using TUGraz.VectoCommon.InputData;
 using VECTO3GUI.Util;
@@ -29,6 +30,16 @@ namespace VECTO3GUI.ViewModel.Impl
 			throw new NotImplementedException();
 		}
 
+		protected override void DoCloseJob(Window window)
+		{
+			throw new NotImplementedException();
+		}
+
+		protected override void DoSaveToJob()
+		{
+			throw new NotImplementedException();
+		}
+
 		public string JobFile
 		{
 			get { return string.Empty; }
diff --git a/VECTO3GUI/ViewModel/Interfaces/IAirdrag.cs b/VECTO3GUI/ViewModel/Interfaces/IAirdrag.cs
index 139be6414173dab94f664faa42cba5b3a629b76a..9d28b8a68a3ddf97d127fb88035228bca6a2f91f 100644
--- a/VECTO3GUI/ViewModel/Interfaces/IAirdrag.cs
+++ b/VECTO3GUI/ViewModel/Interfaces/IAirdrag.cs
@@ -3,6 +3,7 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Utils;
 
 namespace VECTO3GUI.ViewModel.Interfaces
@@ -14,5 +15,6 @@ namespace VECTO3GUI.ViewModel.Interfaces
 		SquareMeter TransferredCdxA { get; set; }
 		SquareMeter DeclaredCdxA { get; set; }
 		string AppVersion { get; set; }
+		DigestData DigestValue { get; set; }
 	}
 }
diff --git a/VECTO3GUI/ViewModel/Interfaces/ICompleteVehicleBus.cs b/VECTO3GUI/ViewModel/Interfaces/ICompleteVehicleBus.cs
index 10049057fff6327017181a0fd5f3f63f191a8f14..d50ebcc1907caec1c5600efbc391dae293417959 100644
--- a/VECTO3GUI/ViewModel/Interfaces/ICompleteVehicleBus.cs
+++ b/VECTO3GUI/ViewModel/Interfaces/ICompleteVehicleBus.cs
@@ -4,6 +4,7 @@ using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using TUGraz.VectoCommon.BusAuxiliaries;
+using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
 
@@ -21,9 +22,10 @@ namespace VECTO3GUI.ViewModel.Interfaces
 		VehicleCode VehicleCode { get; set; }
 		Kilogram CurbMassChassis { get; set; }
 		Kilogram TechnicalPermissibleMaximumLadenMass { get; set; }
+		TankSystem? NgTankSystem { get; set; }
 		int NumberOfPassengersLowerDeck { get; set; }
 		int NumberOfPassengersUpperDeck { get; set; }
-		FloorType FloorType { get; set; }
+		bool LowEntry { get; set; }
 		Meter HeightIntegratedBody { get; set; }
 		Meter VehicleLength { get; set; }
 		Meter VehicleWidth { get; set; }
diff --git a/VECTO3GUI/ViewModel/Interfaces/ICompleteVehicleBusViewModel.cs b/VECTO3GUI/ViewModel/Interfaces/ICompleteVehicleBusViewModel.cs
index 5a473c45dd18ba098acc90c38652b491fed9defe..58cb9e56c6915dd7c03688a672dc1a5b7e45402f 100644
--- a/VECTO3GUI/ViewModel/Interfaces/ICompleteVehicleBusViewModel.cs
+++ b/VECTO3GUI/ViewModel/Interfaces/ICompleteVehicleBusViewModel.cs
@@ -1,5 +1,6 @@
 using System;
 using TUGraz.VectoCommon.BusAuxiliaries;
+using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
 using VECTO3GUI.Util;
@@ -10,8 +11,8 @@ namespace VECTO3GUI.ViewModel.Interfaces
 	{
 		AllowedEntry<LegislativeClass>[] AllowedLegislativeClasses { get; }
 		AllowedEntry<VehicleCode>[] AllowedVehicleCodes { get; }
-		AllowedEntry<FloorType>[] AllowedFloorTypes { get; }
 		AllowedEntry<ConsumerTechnology>[] AllowedConsumerTechnologies { get; }
 		AllowedEntry<RegistrationClass>[] AllowedRegisteredClasses { get; }
+		AllowedEntry<TankSystem>[] AllowedTankSystems { get; }
 	}
 }
diff --git a/VECTO3GUI/ViewModel/Interfaces/IJobEditViewModel.cs b/VECTO3GUI/ViewModel/Interfaces/IJobEditViewModel.cs
index a9a2ccb682a1ba2fb7767b104f40055ac5e120e0..062c08f3896903cdc4b000efc813d985eae364aa 100644
--- a/VECTO3GUI/ViewModel/Interfaces/IJobEditViewModel.cs
+++ b/VECTO3GUI/ViewModel/Interfaces/IJobEditViewModel.cs
@@ -18,7 +18,8 @@ namespace VECTO3GUI.ViewModel.Interfaces
 		IComponentViewModel CurrentComponent { get; }
 
 		ICommand SaveJob { get; }
-
+		ICommand SaveToJob { get; }
 		ICommand CloseJob { get; }
+
 	}
 }
diff --git a/VECTO3GUI/Views/ComponentViews/Declaration/CompleteVehicleBusView.xaml b/VECTO3GUI/Views/ComponentViews/Declaration/CompleteVehicleBusView.xaml
index 35b62657adccf57ebd938b1285db56cfa3802681..2c4a6804415048e0d56de2a35e583a1f3e6a93be 100644
--- a/VECTO3GUI/Views/ComponentViews/Declaration/CompleteVehicleBusView.xaml
+++ b/VECTO3GUI/Views/ComponentViews/Declaration/CompleteVehicleBusView.xaml
@@ -27,7 +27,7 @@
             <RowDefinition/>
         </Grid.RowDefinitions>
 
-        <GroupBox Header="Vehicle Data" Grid.Row="1" Grid.Column="1" Width="420" Height="650" HorizontalAlignment="Left" VerticalAlignment="Top">
+        <GroupBox Header="Vehicle Data" Grid.Row="1" Grid.Column="1" Width="420" Height="680" HorizontalAlignment="Left" VerticalAlignment="Top">
             <StackPanel Orientation="Vertical" Width="400" HorizontalAlignment="Left" Grid.IsSharedSizeScope="True" VerticalAlignment="Center">
                 <StackPanel Orientation="Vertical" DockPanel.Dock="Top" Grid.IsSharedSizeScope="True">
 
@@ -55,7 +55,7 @@
                         Value="{Binding RegisteredClass}"/>-->
 
                     <customControls:ComboParameter
-                        Caption="Vehicle Code"
+                        Caption="Registered Class"
                         CaptionWidthGroup="vehicleLbl" UnitWidthGroup="unitWidth"
                         Value="{Binding RegisteredClass}"
                         AllowedValues="{Binding AllowedRegisteredClasses}" />
@@ -75,6 +75,12 @@
                         Caption="Permissible Maximum Laden Mass" Unit="{helper:SIUnit TechnicalPermissibleMaximumLadenMass}" CaptionWidthGroup="vehicleLbl" UnitWidthGroup="unitWidth"
                         Value="{Binding TechnicalPermissibleMaximumLadenMass, Converter={converter:SIValueConverter}, ConverterParameter=int}" />
 
+                    <customControls:ComboParameter
+                        Caption="Tank System"
+                        CaptionWidthGroup="vehicleLbl" UnitWidthGroup="unitWidth"
+                        Value="{Binding NgTankSystem}"
+                        AllowedValues="{Binding AllowedTankSystems}" />
+
                     <customControls:VectoParameterControl
                         Caption="Passengers Lower Deck" Unit="" CaptionWidthGroup="vehicleLbl" UnitWidthGroup="unitWidth"
                         Value="{Binding NumberOfPassengersLowerDeck}" />
@@ -83,11 +89,11 @@
                         Caption="Passengers Upper Deck" Unit="" CaptionWidthGroup="vehicleLbl" UnitWidthGroup="unitWidth"
                         Value="{Binding NumberOfPassengersUpperDeck}" />
 
-                    <customControls:ComboParameter
-                        Caption="Floor Type"
-                        CaptionWidthGroup="vehicleLbl" UnitWidthGroup="unitWidth"
-                        Value="{Binding FloorType}"
-                        AllowedValues="{Binding AllowedFloorTypes}" />
+                    <customControls:CheckboxParameter
+                        Caption="Low Entry" CaptionWidthGroup="vehicleLbl"
+                        Unit="" UnitWidthGroup="unitWidth"
+                        Value="{Binding LowEntry}"/>
+
 
                     <customControls:VectoParameterControl
                         Caption="Height Integrated Body" Unit="{helper:SIUnit HeightIntegratedBody}" CaptionWidthGroup="vehicleLbl" UnitWidthGroup="unitWidth"
diff --git a/VECTO3GUI/Views/JoblistTabView.xaml b/VECTO3GUI/Views/JoblistTabView.xaml
index d46a64eb0f381fea8a9846397a83f102f9709ac0..87664c951cfceb097cca296f0bf8f5fee8061890 100644
--- a/VECTO3GUI/Views/JoblistTabView.xaml
+++ b/VECTO3GUI/Views/JoblistTabView.xaml
@@ -26,10 +26,11 @@
             <StackPanel Orientation="Vertical">
                 <Menu>
                     <MenuItem Header="File">
-                        <MenuItem Header="Save"/>
-                        <MenuItem Header="Save to"/>
+                        <MenuItem Header="Save" Command="{Binding SaveJob}"/>
+                        <MenuItem Header="Save to" Command="{Binding SaveToJob}"/>
                         <Separator HorizontalAlignment="Stretch" Background="Gray"/>
-                        <MenuItem Header="Exit"/>
+                        <MenuItem Header="Exit" Command="{Binding CloseJob}" 
+                                  CommandParameter="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}"/>
                     </MenuItem>
                 </Menu>
                 <Separator HorizontalAlignment="Stretch" Background="Gray"/>
diff --git a/VectoCommon/VectoCommon/BusAuxiliaries/BusHVACSystemConfiguration.cs b/VectoCommon/VectoCommon/BusAuxiliaries/BusHVACSystemConfiguration.cs
index eaaf9e83e03d29ceace954ab9eeb786bf2ff7257..c9663d789575f3116e7cdf0ea37c5655f909afbd 100644
--- a/VectoCommon/VectoCommon/BusAuxiliaries/BusHVACSystemConfiguration.cs
+++ b/VectoCommon/VectoCommon/BusAuxiliaries/BusHVACSystemConfiguration.cs
@@ -51,5 +51,33 @@ namespace TUGraz.VectoCommon.BusAuxiliaries {
 					return BusHVACSystemConfiguration.Unknown.ToString();
 			}
 		}
+
+		public static string GetXmlFormat(this BusHVACSystemConfiguration havacConfiguration)
+		{
+			switch (havacConfiguration)
+			{
+				case BusHVACSystemConfiguration.Configuration1:
+					return "1";
+				case BusHVACSystemConfiguration.Configuration2:
+					return "2";
+				case BusHVACSystemConfiguration.Configuration3:
+					return "3";
+				case BusHVACSystemConfiguration.Configuration4:
+					return "4";
+				case BusHVACSystemConfiguration.Configuration5:
+					return "5";
+				case BusHVACSystemConfiguration.Configuration6:
+					return "6";
+				case BusHVACSystemConfiguration.Configuration7:
+					return "7";
+				case BusHVACSystemConfiguration.Configuration8:
+					return "8";
+				case BusHVACSystemConfiguration.Configuration9:
+					return "9";
+				default:
+					return "0";
+			}
+		}
+
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs
index 940884541bf7dc1b72d2a486ee160473015bbe54..fb510ae838d1171695c579822fd578195efb773b 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs
@@ -644,6 +644,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 			IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) : base(jobData, xmlNode, sourceFile)
 		{
 			SourceType = DataSourceType.XMLEmbedded;
+			
 		}
 
 		
@@ -810,7 +811,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 
 		public override TankSystem? TankSystem
 		{
-			get { return GetString(XMLNames.Vehicle_NgTankSystem).ParseEnum<TankSystem>(); }
+			get { return GetNode(XMLNames.Vehicle_NgTankSystem, required: false)?.ToString().ParseEnum<TankSystem>(); }
 		}
 
 		public override int NumberOfPassengersLowerDeck
@@ -854,6 +855,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 
 		#endregion
 
+		
 		public override FloorType FloorType
 		{
 			get { return GetBool(XMLNames.Bus_LowEntry) ? FloorType.LowFloor : FloorType.HighFloor; }
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationJobs/XMLCompletedBusWriter.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationJobs/XMLCompletedBusWriter.cs
new file mode 100644
index 0000000000000000000000000000000000000000..783cb5fe39f44f4c1777fdab9a54c99091b7d407
--- /dev/null
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationJobs/XMLCompletedBusWriter.cs
@@ -0,0 +1,39 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Xml;
+using System.Xml.Linq;
+using Castle.Core.Internal;
+
+
+namespace TUGraz.VectoCore.OutputData.XML.DeclarationJobs
+{
+	public class XMLCompletedBusWriter
+	{
+		private XmlWriterSettings _xmlWriterSettings;
+		private StringBuilder _stringBuilder;
+
+
+		public XMLCompletedBusWriter()
+		{
+			_xmlWriterSettings = new XmlWriterSettings{Indent = true};
+			_stringBuilder = new StringBuilder();
+		}
+		
+		public bool WriteCompletedBusXml(string filePath, XDocument xmlDocument)
+		{
+			if (filePath.IsNullOrEmpty())
+				return false;
+			
+			using (var xmlWriter = XmlWriter.Create(_stringBuilder, _xmlWriterSettings))
+			{
+				xmlDocument.WriteTo(xmlWriter);
+				xmlWriter.Flush();
+			}
+
+			xmlDocument.Save(filePath);
+			return true;
+		}
+	}
+}
diff --git a/VectoCore/VectoCore/VectoCore.csproj b/VectoCore/VectoCore/VectoCore.csproj
index 7e0866e6ed37620f00d81e42e3e76aac5823d3b2..dfeb57fa754fe50844ce7c1cae2005fcc0d27941 100644
--- a/VectoCore/VectoCore/VectoCore.csproj
+++ b/VectoCore/VectoCore/VectoCore.csproj
@@ -387,6 +387,7 @@
     <Compile Include="OutputData\FileIO\BusAuxWriter.cs" />
     <Compile Include="OutputData\FileIO\JSONFileWriter.cs" />
     <Compile Include="OutputData\XML\AbstractXMLManufacturerReport.cs" />
+    <Compile Include="OutputData\XML\DeclarationJobs\XMLCompletedBusWriter.cs" />
     <Compile Include="OutputData\XML\Engineering\Factory\EngineeringWriterFactory.cs" />
     <Compile Include="OutputData\XML\Engineering\Factory\IEngineeringWriterInjectFactory.cs" />
     <Compile Include="OutputData\XML\Engineering\Interfaces\IXMLEngineeringComponentWriter.cs" />
@@ -942,9 +943,7 @@
       <Name>VectoHashing</Name>
     </ProjectReference>
   </ItemGroup>
-  <ItemGroup>
-    <Folder Include="OutputData\XML\DeclarationJobs\" />
-  </ItemGroup>
+  <ItemGroup />
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.