diff --git a/VECTO3GUI2020/App.xaml.cs b/VECTO3GUI2020/App.xaml.cs
index eb0f63b9761845715b48454d9ea20be1d744364d..7475864d68bb7ac004fc538fce28a7ddd985a8b9 100644
--- a/VECTO3GUI2020/App.xaml.cs
+++ b/VECTO3GUI2020/App.xaml.cs
@@ -48,7 +48,7 @@ namespace VECTO3GUI2020
 
             container.Bind<ISettingsModel>().To<SettingsModel>();
 
-			container.Bind<IDialogHelper>().To<DialogHelper>();
+			container.Bind<IDialogHelper>().To<DialogHelper>().InSingletonScope();
 			container.Bind<IWindowHelper>().To<WindowHelper>();
 
 		}
diff --git a/VECTO3GUI2020/Helper/DialogHelper.cs b/VECTO3GUI2020/Helper/DialogHelper.cs
index 3c85504230abf8bc78bc2de5ffc85ffb567afdfb..190866f8a6e2fe1eebb9703db9deca096a41a2d3 100644
--- a/VECTO3GUI2020/Helper/DialogHelper.cs
+++ b/VECTO3GUI2020/Helper/DialogHelper.cs
@@ -1,5 +1,6 @@
 using System;
 using System.Collections.Generic;
+using System.IO;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
@@ -14,23 +15,31 @@ namespace VECTO3GUI2020.Helper
 {
     public class DialogHelper : IDialogHelper
 	{
-		private readonly string _defaultInitialDirectory = System.IO.Path.GetDirectoryName(
-			System.Reflection.Assembly.GetExecutingAssembly().Location);
-
+		private readonly string _defaultInitialDirectory = Settings.Default.DefaultFilePath;
 
 		#region File and Folder Dialogs
 		private string _xmlFilter = "XML Files (*.xml)|*.xml";
+
+		private Dictionary<string, string> lastUsedDirectories = new Dictionary<string, string>();
+
+		private string lastUsedDirectoryFolderPicker = null;
 		private string[] OpenFilesDialog(string filter, string initialDirectory, bool multiselect)
 		{
+			if (initialDirectory == null) {
+				initialDirectory = LookUpLastDir(filter);
+			}
+
 
+			
 			using (OpenFileDialog fd = new OpenFileDialog {
 				InitialDirectory = initialDirectory ?? _defaultInitialDirectory,
 				Multiselect = multiselect,
-				Filter = filter
+				Filter = filter,
+				RestoreDirectory = true
 			}) {
 				var result = fd.ShowDialog();
-				if (result == DialogResult.OK)
-				{
+				if (result == DialogResult.OK) {
+					lastUsedDirectories[filter] = Path.GetDirectoryName(fd.FileName);
 					return fd.FileNames;
 				}
 			}
@@ -39,6 +48,16 @@ namespace VECTO3GUI2020.Helper
 			return null;
 		}
 
+		private string LookUpLastDir(string filter)
+		{
+			string lastUsedDirectory = null;
+			if (lastUsedDirectories.TryGetValue(filter, out lastUsedDirectory)) {
+				return lastUsedDirectory;
+			} else {
+				return Settings.Default.DefaultFilePath;
+			}
+		}
+
 		public string OpenFileDialog(string filter = "All files (*.*)|*.*", string initialDirectory = null)
 		{
 			return OpenFilesDialog(filter, initialDirectory)?[0];
@@ -69,14 +88,20 @@ namespace VECTO3GUI2020.Helper
 
 		public string OpenFolderDialog(string initialDirectory = null)
 		{
+
+			if (initialDirectory == null) {
+				initialDirectory = lastUsedDirectoryFolderPicker;
+			}
 			using (var dialog = new CommonOpenFileDialog())
 			{
 				dialog.InitialDirectory = initialDirectory;
 				dialog.IsFolderPicker = true;
+				dialog.Multiselect = false;
+				dialog.RestoreDirectory = true;
 
 				var result = dialog.ShowDialog();
-				if (result == CommonFileDialogResult.Ok)
-				{
+				if (result == CommonFileDialogResult.Ok) {
+					lastUsedDirectoryFolderPicker = Path.GetDirectoryName(dialog.FileName);
 					return dialog.FileName;
 				}
 			}
diff --git a/VECTO3GUI2020/ViewModel/Implementation/JobListViewModel.cs b/VECTO3GUI2020/ViewModel/Implementation/JobListViewModel.cs
index daef720bf3793e1061a64ec35085f71b541c467f..014b95dc66735ba0c4d905237ddba2ac2db8dd0e 100644
--- a/VECTO3GUI2020/ViewModel/Implementation/JobListViewModel.cs
+++ b/VECTO3GUI2020/ViewModel/Implementation/JobListViewModel.cs
@@ -122,9 +122,7 @@ namespace VECTO3GUI2020.ViewModel.Implementation
         private void AddJobExecute()
         {
             IsLoading = true;
-			string path = _settings.DefaultFilePath;
-			var filename = _dialogHelper.OpenXMLFileDialog(path);
-
+			var filename = _dialogHelper.OpenXMLFileDialog();
 			if (filename != null)
             {
                 fileReadingBackgroundWorker.RunWorkerAsync(filename);
diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAirdragViewModel.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAirdragViewModel.cs
index 240f3f990b1f93fef5106ee7cdaac83c66411db4..e3e54ba60dd8c98fa6469d4c4d09e38ea78c54e6 100644
--- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAirdragViewModel.cs
+++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAirdragViewModel.cs
@@ -93,7 +93,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 
 		public void LoadAirdragFileCommandExecute()
 		{
-			var fileName =_dependencies.DialogHelper.OpenXMLFileDialog(Settings.Default.DefaultFilePath);
+			var fileName =_dependencies.DialogHelper.OpenXMLFileDialog();
 			if (fileName == null) {
 				return;
 			}
diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs
index 06594be48c34a512ee335cedaf508b7c8dcc0138..ab0664fc21781a49a38721b5952a9d4014ce4f34 100644
--- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs
+++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs
@@ -185,7 +185,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 
 		private void LoadVehicleDataExecute()
 		{
-			var fileName = _dialogHelper.Value.OpenXMLFileDialog(Settings.Default.DefaultFilePath);
+			var fileName = _dialogHelper.Value.OpenXMLFileDialog();
 			if (fileName == null) {
 				return;
 			}
diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/NewMultiStageJobViewModel.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/NewMultiStageJobViewModel.cs
index 57cef695880e21a2abad16b1b9165e5f257a4220..bb569a84ed6cdcb38508b80cf9724e5d2ad0a662 100644
--- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/NewMultiStageJobViewModel.cs
+++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/NewMultiStageJobViewModel.cs
@@ -62,7 +62,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation
 		private void AddVifFileExecute()
 		{
 			
-			var fileName = _dialogHelper.OpenXMLFileDialog(_settings.DefaultFilePath);
+			var fileName = _dialogHelper.OpenXMLFileDialog();
 			if (fileName == null) {
 				return;
 			}
diff --git a/Vecto3GUI2020Test/ViewModelTests/LoadAndSaveVehicleData.cs b/Vecto3GUI2020Test/ViewModelTests/LoadAndSaveVehicleData.cs
index 14e2ce67f47913b86b19de4da4a2206702818f52..f02da4bbe75be1d903ced5c0be99f5487e147979 100644
--- a/Vecto3GUI2020Test/ViewModelTests/LoadAndSaveVehicleData.cs
+++ b/Vecto3GUI2020Test/ViewModelTests/LoadAndSaveVehicleData.cs
@@ -115,7 +115,7 @@ namespace Vecto3GUI2020Test
 		public void loadInputFilePrimaryOnly()
 		{
 			var vm = loadFile(primary_vehicle_only);
-			Assert.AreEqual(1, vm.MultiStageJobViewModel.ManufacturingStageViewModel.StageCount);
+			Assert.AreEqual(2, vm.MultiStageJobViewModel.ManufacturingStageViewModel.StageCount);
 
 			var primaryVehicle = vm.MultiStageJobViewModel.PrimaryVehicle;
 			Assert.NotNull(primaryVehicle);