diff --git a/VECTO3GUI2020/App.xaml.cs b/VECTO3GUI2020/App.xaml.cs
index 7475864d68bb7ac004fc538fce28a7ddd985a8b9..b1e0c92422bfea0b053112b001f3d9574838dc58 100644
--- a/VECTO3GUI2020/App.xaml.cs
+++ b/VECTO3GUI2020/App.xaml.cs
@@ -17,9 +17,8 @@ namespace VECTO3GUI2020
     {
 
         private IKernel container;
-		private IKernel multiStageChildContainer;
 
-        protected override void OnStartup(StartupEventArgs e)
+		protected override void OnStartup(StartupEventArgs e)
         {
             base.OnStartup(e);
             ConfigureContainer();
@@ -37,7 +36,7 @@ namespace VECTO3GUI2020
 				new XMLWriterFactoryModule(),
                 new FactoryModule(),
                 new MultistageModule()
-			) ;
+			);
 
 
 
@@ -55,20 +54,11 @@ namespace VECTO3GUI2020
 
         private void ConfigureMainWindow()
         {
-            //Windows to test controls
-            //var testwindow = container.Get<Test>();
-            //testwindow.Show();
-
-
-
-            var mainwindow = container.Get<MainWindow>();
+			var mainwindow = container.Get<MainWindow>();
             this.MainWindow = mainwindow;
 			Application.Current.MainWindow = mainwindow;
             this.MainWindow.Show();
-
-
-
-        }
+		}
 
     }
 
diff --git a/VECTO3GUI2020/Helper/DialogHelper.cs b/VECTO3GUI2020/Helper/DialogHelper.cs
index 190866f8a6e2fe1eebb9703db9deca096a41a2d3..9609208a1d3ef0c2dfbe981952a0478ece06a7d2 100644
--- a/VECTO3GUI2020/Helper/DialogHelper.cs
+++ b/VECTO3GUI2020/Helper/DialogHelper.cs
@@ -120,9 +120,9 @@ namespace VECTO3GUI2020.Helper
 			return MessageBox.Show(messageBoxText, caption, button, icon);
 		}
 
-		public MessageBoxResult ShowMessageBox(string messageBoxTest, string caption)
+		public MessageBoxResult ShowMessageBox(string messageBoxText, string caption)
 		{
-			return MessageBox.Show(messageBoxTest, caption);
+			return MessageBox.Show(messageBoxText, caption);
 		}
 
 		public string SaveToDialog(string initialDirectory, string filter)
@@ -205,10 +205,10 @@ namespace VECTO3GUI2020.Helper
 		/// <summary>
 		/// Displays a messagebox
 		/// </summary>
-		/// <param name="messageBoxTest"></param>
+		/// <param name="messageBoxText"></param>
 		/// <param name="caption"></param>
 		/// <returns></returns>
-		MessageBoxResult ShowMessageBox(string messageBoxTest, string caption);
+		MessageBoxResult ShowMessageBox(string messageBoxText, string caption);
 
 
 		string SaveToDialog(string initialDirectory = null, string filter = "All files (*.*|*.*");
diff --git a/VECTO3GUI2020/Ninject/IMultistageDependencies.cs b/VECTO3GUI2020/Ninject/IMultistageDependencies.cs
index bc5671491c7ab8d4f854be1583524a0e9e892288..33a375cbb7dc549465730fcc0d49487d789d06fe 100644
--- a/VECTO3GUI2020/Ninject/IMultistageDependencies.cs
+++ b/VECTO3GUI2020/Ninject/IMultistageDependencies.cs
@@ -12,10 +12,8 @@ namespace VECTO3GUI2020.Ninject
 	public interface IMultistageDependencies
 	{
 		Lazy<IDialogHelper> DialogHelperLazy { get; }
-		Lazy<IXMLInputDataReader> InputDataReaderLazy { get; }
 
 		IDialogHelper DialogHelper { get; }
-		IXMLInputDataReader InputDataReader { get; }
 		IDeclarationInjectFactory InjectFactory { get; }
 		IComponentViewModelFactory ComponentViewModelFactory { get; }
 
diff --git a/VECTO3GUI2020/Ninject/MultistageLazyDependencies.cs b/VECTO3GUI2020/Ninject/MultistageLazyDependencies.cs
index 9468ee481300a52eee98ec43fb30c03f56d4cb59..b268e93677b245278571010fde2f3383fdf23595 100644
--- a/VECTO3GUI2020/Ninject/MultistageLazyDependencies.cs
+++ b/VECTO3GUI2020/Ninject/MultistageLazyDependencies.cs
@@ -17,10 +17,6 @@ namespace VECTO3GUI2020.Ninject
 		public IDialogHelper DialogHelper => _dialogHelper.Value;
 
 
-		private readonly Lazy<IXMLInputDataReader> _inputDataReader;
-		public Lazy<IXMLInputDataReader> InputDataReaderLazy => _inputDataReader;
-		public IXMLInputDataReader InputDataReader => _inputDataReader.Value;
-
 		//private readonly Lazy<XMLValidator> _xmlValidator = new Lazy<XMLValidator>(() => {return });
 		//public Lazy<XMLValidator> XMLValidatorLazy => _xmlValidator;
 		//public XMLValidator XMLValidator => _xmlValidator.Value;
@@ -36,15 +32,13 @@ namespace VECTO3GUI2020.Ninject
 		private readonly Lazy<IDeclarationInjectFactory> _injectFactory;
 		private readonly Lazy<IComponentViewModelFactory> _componentViewModelFactory;
 		public MultistageLazyDependencies(
-			Lazy<IDialogHelper> dialogHelper, 
-			Lazy<IXMLInputDataReader> inputDataReader, 
+			Lazy<IDialogHelper> dialogHelper,
 			Lazy<IDeclarationInjectFactory> injectFactory, 
 			Lazy<IComponentViewModelFactory> componentViewModelFactory,
 			Lazy<IXMLWriterFactory> xmlWriterFactory,
 			Lazy<IMultiStageViewModelFactory> viewModelFactory)
 		{
 			_dialogHelper = dialogHelper;
-			_inputDataReader = inputDataReader;
 			_componentViewModelFactory = componentViewModelFactory;
 			_injectFactory = injectFactory;
 			_xmlWriterFactory = xmlWriterFactory;
diff --git a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLVehicleWriter.cs b/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLVehicleWriter.cs
index 47b010a3725167ad694ae8c71f1170031affc8e3..9d254753c89d11e0c3f77d45c9ac6b8f47b666ab 100644
--- a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLVehicleWriter.cs
+++ b/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLVehicleWriter.cs
@@ -240,8 +240,7 @@ namespace VECTO3GUI2020.Util.XML.Implementation
 
 			_Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_NumberPassengersLowerDeck, _inputData.NumberOfPassengersLowerDeck));
 			_Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_NumberPassengersUpperDeck, _inputData.NumberOfPassengersUpperDeck));
-
-			_Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_VehicleCode, _inputData.VehicleCode.ToXMLFormat()));
+			_Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_BodyworkCode, _inputData.VehicleCode.ToXMLFormat()));
 
 			_Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_LowEntry, _inputData.LowEntry));
 
@@ -257,7 +256,7 @@ namespace VECTO3GUI2020.Util.XML.Implementation
 					? _inputData.DoorDriveTechnology.ToXMLFormat()
 					: null));
 
-			_Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_DeclarationType, _inputData.VehicleDeclarationType));
+			_Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_VehicleDeclarationType, _inputData.VehicleDeclarationType));
 
 			if (_inputData.ADAS != null) {
 				var adasNamespace = XMLNamespaces.V23;
diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs
index c24da66929e18e8cdef9752fab1ee663caf01adc..f8647ffb1a012719179a0190cfc07b41ebab0c2d 100644
--- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs
+++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs
@@ -1,6 +1,7 @@
 using System;
 using System.Collections.Generic;
 using System.Diagnostics;
+using System.IO;
 using System.Linq;
 using System.Runtime.CompilerServices;
 using System.Windows;
@@ -163,17 +164,29 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 			var xDoc = xElement.CreateWrapperDocument(XMLNamespaces.V28);
 			Debug.WriteLine(xElement.CreateWrapperDocument(XMLNamespaces.V28).ToString());
 
-			var validator = new XMLValidator(xDoc.ToXmlDocument());
+			
 			var valid = false;
+			var validationError = "";
 			try {
+				var validator = new XMLValidator(xDoc.ToXmlDocument());
 				valid = validator.ValidateXML(XmlDocumentType.DeclarationJobData);
+				validationError = validator.ValidationError;
 			} catch (Exception e) {
-				_dialogHelper.Value.ShowMessageBox(e.Message, "Error");
+				_dialogHelper.Value.ShowMessageBox(messageBoxText:(e.Message + "\n" + e.InnerException), caption:"Error saving File");
 			}
 			if (!valid) {
-				_dialogHelper.Value.ShowMessageBox($"Invalid Document: {validator.ValidationError}", "Error");
-				//xDoc.Save(filename, SaveOptions.OmitDuplicateNamespaces);
-				//LoadVehicleData(filename);
+				_dialogHelper.Value.ShowMessageBox($"Invalid Document: {validationError}", "Error");
+				var tempFile = Path.GetTempFileName();
+				try {
+					xDoc.Save(tempFile, SaveOptions.OmitDuplicateNamespaces);
+					LoadVehicleData(tempFile);
+					File.Delete(tempFile);
+				} catch (Exception e) {
+					_dialogHelper.Value.ShowMessageBox(e.Message, "Error");
+					throw;
+				}
+		
+
 			} else {
 				xDoc.Save(filename, SaveOptions.OmitDuplicateNamespaces);
 				LoadVehicleData(filename);
@@ -183,7 +196,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 
 		private ICommand _loadVehicleDataCommand;
 		private readonly Lazy<IDialogHelper> _dialogHelper;
-		private readonly Lazy<IXMLInputDataReader> _inputDataReader;
+		private readonly IXMLInputDataReader _inputDataReader;
 		private string _vehicleInputDataFilePath = null;
 		private readonly IMultistageDependencies _multistageDependencies;
 		private readonly DataSource _dataSource;
@@ -209,20 +222,18 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 
 		private bool LoadVehicleData(string fileName)
 		{
-			IDeclarationInputDataProvider inputData;
-			IVehicleDeclarationInputData vehicleInputData;
 			try {
-				inputData = (IDeclarationInputDataProvider)_inputDataReader.Value.CreateDeclaration(fileName);
-				vehicleInputData = inputData.JobInputData.Vehicle;
+				var inputData = (IDeclarationInputDataProvider)_inputDataReader.Create(fileName);
+				var vehicleInputData = inputData.JobInputData.Vehicle;
 				_manufacturingStageViewModel.SetInputData(vehicleInputData);
 
 				VehicleInputDataFilePath = fileName;
 			} catch (Exception e) {
 				_dialogHelper.Value.ShowMessageBox(e.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
-				return true;
+				return false;
 			}
 
-			return false;
+			return true;
 		}
 
 		public string VehicleInputDataFilePath
@@ -233,7 +244,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 		#endregion
 
 
-		public MultiStageJobViewModel_v0_1(IMultistageBusInputDataProvider inputData, IMultiStageViewModelFactory vmFactory, IMultistageDependencies multistageDependencies )
+		public MultiStageJobViewModel_v0_1(IMultistageBusInputDataProvider inputData, IMultiStageViewModelFactory vmFactory, IMultistageDependencies multistageDependencies, IXMLInputDataReader inputDataReader)
 		{
 			_dataSource = inputData.DataSource;
 			_jobInputData = inputData.JobInputData;
@@ -242,7 +253,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 			_manufacturingStages =_jobInputData.ManufacturingStages;
 			_primaryVehicle = _jobInputData.PrimaryVehicle;
 			_dialogHelper = multistageDependencies.DialogHelperLazy;
-			_inputDataReader = multistageDependencies.InputDataReaderLazy;
+			_inputDataReader = inputDataReader;
 			_manufacturingStageViewModel =
 				vmFactory.GetManufacturingStageViewModel(_consolidateManufacturingStage);
 			_multistageDependencies = multistageDependencies;
diff --git a/Vecto3GUI2020Test/ViewModelTests/LoadAndSaveVehicleData.cs b/Vecto3GUI2020Test/ViewModelTests/LoadAndSaveVehicleData.cs
index f02da4bbe75be1d903ced5c0be99f5487e147979..276894badc7f4d2849fc489f15eb3249b4c73c25 100644
--- a/Vecto3GUI2020Test/ViewModelTests/LoadAndSaveVehicleData.cs
+++ b/Vecto3GUI2020Test/ViewModelTests/LoadAndSaveVehicleData.cs
@@ -2,6 +2,7 @@ using System;
 using System.IO;
 using System.Linq;
 using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
 using System.Xml;
 using Castle.DynamicProxy.Generators.Emitters.SimpleAST;
 using Moq;
@@ -10,6 +11,8 @@ using NUnit.Framework;
 using TUGraz.VectoCommon.BusAuxiliaries;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCore.InputData.FileIO.XML;
+using TUGraz.VectoCore.InputData.FileIO.XML.Declaration;
 using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider;
 using TUGraz.VectoCore.Models.Simulation.Impl;
 using TUGraz.VectoCore.Models.SimulationComponent.Strategies;
@@ -50,7 +53,7 @@ namespace Vecto3GUI2020Test
 			deleteFile(fileName);
 			_kernel.Rebind<IDialogHelper>().ToConstant(getMockDialogHelper(fileToSave:fileName).Object);
 			manufacturingStage.SaveInputDataAsCommand.Execute(null);
-			Assert.True(checkFileExists(fileName));
+			Assert.True(checkFileNameExists(fileName));
 		}
 
 
@@ -71,7 +74,7 @@ namespace Vecto3GUI2020Test
 			_kernel.Rebind<IDialogHelper>().ToConstant(getMockDialogHelper(fileToSave: saveFileName).Object);
 			manstage.SaveInputDataAsCommand.Execute(null);
 
-			Assert.False(checkFileExists(saveFileName));
+			Assert.False(checkFileNameExists(saveFileName));
 
 		}
 
@@ -105,6 +108,49 @@ namespace Vecto3GUI2020Test
 			loadFile(consolidated_multiple_stages_airdrag);
 		}
 
+		[Test]
+		public void loadAndSaveFullInputDataSample()
+		{
+			var vm = loadFile(primary_vehicle_only);
+			var multiStageJobViewModel = vm.MultiStageJobViewModel as MultiStageJobViewModel_v0_1;
+
+
+			var fileToSave = "loadAndSaveFullInputDataTest.xml";
+			var mockDialogHelper = getMockDialogHelper(stageInputFullSample, fileToSave);
+			multiStageJobViewModel.LoadVehicleDataCommand.Execute(null);
+
+			var manufacturingStageViewModel =
+				multiStageJobViewModel.ManufacturingStageViewModel as ManufacturingStageViewModel_v0_1;
+
+			var vehicleViewModel =
+				manufacturingStageViewModel.VehicleViewModel as DeclarationInterimStageBusVehicleViewModel_v2_8;
+
+			vehicleViewModel.AirdragModifiedMultistage = true;
+			Assert.AreEqual(ConsumerTechnology.Electrically, vehicleViewModel.DoorDriveTechnology);
+			Assert.AreEqual(ConsumerTechnology.Electrically, vm.MultiStageJobViewModel.VehicleInputData.DoorDriveTechnology);
+
+			Assert.IsNotNull(multiStageJobViewModel.VehicleInputData.ManufacturerAddress);
+
+			var fileExists = checkFilePathExists(mockDialogHelper.Object.OpenXMLFileDialog());
+			Assert.IsTrue(fileExists);
+			File.Delete(mockDialogHelper.Object.SaveToXMLDialog());
+
+
+		}
+
+		[Test]
+		public void loadVehicleInputDataOnly()
+		{
+			string inputPath = Path.Combine(DirPath, stageInputFullSample);
+			var inputDataReader = _kernel.Get<IXMLInputDataReader>();
+			var inputData = (IDeclarationInputDataProvider)inputDataReader.Create(inputPath);
+			var vehicleInputData = inputData.JobInputData.Vehicle;
+			//_manufacturingStageViewModel.SetInputData(vehicleInputData);
+
+
+			Assert.AreEqual(ConsumerTechnology.Electrically, vehicleInputData.DoorDriveTechnology);
+		}
+
 		[Test]
 		public void loadInputFileConsolidatedOneStage()
 		{
@@ -134,6 +180,8 @@ namespace Vecto3GUI2020Test
 			Assert.Null(vehicleViewModel_v2_8.WidthInMm);
 			Assert.Null(vehicleViewModel_v2_8.EntranceHeightInMm);
 
+
+
 			Assert.Null(vehicleViewModel_v2_8.ConsolidatedHeightInMm);
 			Assert.Null(vehicleViewModel_v2_8.ConsolidatedLengthInMm);
 			Assert.Null(vehicleViewModel_v2_8.ConsolidatedWidthInMm);
@@ -193,6 +241,8 @@ namespace Vecto3GUI2020Test
 					MultiStageJobViewModel_v0_1;
 			Assert.NotNull(multiStageViewModel);
 
+			var manStageViewModel = multiStageViewModel.ManufacturingStageViewModel as ManufacturingStageViewModel_v0_1;
+
 			var vehicleInputData = Path.GetFullPath(DirPath + "vecto_vehicle-stage_input_full-sample.xml");
 			Assert.IsTrue(File.Exists(vehicleInputData));
 
@@ -203,7 +253,7 @@ namespace Vecto3GUI2020Test
 
 			multiStageViewModel.LoadVehicleDataCommand.Execute(null);
 
-			var vehicle = multiStageViewModel.VehicleInputData as DeclarationInterimStageBusVehicleViewModel_v2_8;
+			var vehicle = manStageViewModel.VehicleViewModel as DeclarationInterimStageBusVehicleViewModel_v2_8;
 			Assert.NotNull(vehicle);
 
 			Assert.AreEqual("VEH-1234567890", vehicle.Identifier);
@@ -234,6 +284,9 @@ namespace Vecto3GUI2020Test
 			Assert.AreEqual(VehicleDeclarationType.interim, vehicle.VehicleDeclarationType);
 
 
+			Assert.AreEqual(newMultistageJobViewModel.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle.DoorDriveTechnology, vehicle.DoorDriveTechnology);
+
+
 			var airdrag = vehicle.MultistageAirdragViewModel;
 			Assert.NotNull(airdrag.AirDragViewModel.XMLSource);
 
diff --git a/Vecto3GUI2020Test/ViewModelTests/ViewModelTestBase.cs b/Vecto3GUI2020Test/ViewModelTests/ViewModelTestBase.cs
index ba22491418a29039c6c6bf0d2c40100dfcff173e..74d553fab9808d09a1189ce891551ce1000bd72a 100644
--- a/Vecto3GUI2020Test/ViewModelTests/ViewModelTestBase.cs
+++ b/Vecto3GUI2020Test/ViewModelTests/ViewModelTestBase.cs
@@ -29,7 +29,7 @@ namespace Vecto3GUI2020Test
 
 		protected const string stageInputFullSample = "vecto_vehicle-stage_input_full-sample.xml";
 
-		protected IXMLInputDataReader xmlInputReader;
+		//protected IXMLInputDataReader xmlInputReader;
 		protected IKernel _kernel;
 		private Mock<IDialogHelper> _mockDialogHelper = new Mock<IDialogHelper>();
 
@@ -46,7 +46,7 @@ namespace Vecto3GUI2020Test
 				new FactoryModule(),
 				new MultistageModule()
 			);
-			xmlInputReader = _kernel.Get<IXMLInputDataReader>();
+			//xmlInputReader = _kernel.Get<IXMLInputDataReader>();
 			_kernel.Rebind<IDialogHelper>().ToConstant(_mockDialogHelper.Object);
 
 		}
@@ -58,14 +58,21 @@ namespace Vecto3GUI2020Test
 			_kernel = null;
 		}
 
-		public bool checkFileExists(string fileName)
+		public bool checkFileNameExists(string fileName)
 		{
 			var filePath = Path.GetFullPath(DirPath + fileName);
+			return checkFilePathExists(filePath);
+		}
+
+		public bool checkFilePathExists(string filePath)
+		{
 			var exists = File.Exists(filePath);
 			if (exists)
 			{
 				Console.WriteLine(filePath + @" exists");
-			} else {
+			}
+			else
+			{
 				Console.WriteLine(filePath + @" not existing");
 			}
 
@@ -80,13 +87,6 @@ namespace Vecto3GUI2020Test
 
 		public NewMultiStageJobViewModel loadFile(string fileName)
 		{
-			//string filePath = "";
-			//filePath = Path.GetFullPath(DirPath + fileName);
-
-			//var dialogMock = new Mock<IDialogHelper>();
-			//dialogMock.Setup(dialogHelper => dialogHelper.OpenXMLFileDialog(It.IsAny<string>())).Returns(filePath);
-			//dialogMock.Setup(dialogHelper => dialogHelper.OpenXMLFileDialog()).Returns(filePath);
-
 			var mockDialogHelper = getMockDialogHelper(fileName);
 
 			var newMultistageJobViewModel = _kernel.Get<NewMultiStageJobViewModel>();
@@ -113,21 +113,6 @@ namespace Vecto3GUI2020Test
 			return newMultistageJobViewModel;
 		}
 
-		protected void loadVehicleData(MultiStageJobViewModel_v0_1 multiStageViewModel, string inputFile)
-		{
-
-			var vehicleInputData = Path.GetFullPath(DirPath + inputFile);
-			Assert.IsTrue(File.Exists(vehicleInputData));
-
-			var vehicleInputDataFiledialogMock = new Mock<IDialogHelper>();
-			vehicleInputDataFiledialogMock.Setup(dialogHelper => dialogHelper.OpenXMLFileDialog(It.IsAny<string>())).Returns(vehicleInputData);
-			vehicleInputDataFiledialogMock.Setup(dialogHelper => dialogHelper.OpenXMLFileDialog()).Returns(vehicleInputData);
-			_kernel.Rebind<IDialogHelper>().ToConstant(vehicleInputDataFiledialogMock.Object);
-
-			multiStageViewModel.LoadVehicleDataCommand.Execute(null);
-		}
-
-
 		protected Mock<IDialogHelper> getMockDialogHelper(string fileToLoad = null, string fileToSave = null)
 		{
 			if (_mockDialogHelper == null) {