diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/RestartHandler.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/RestartHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..34db5c8f2d9fe417a95f4c5863e71acdb22471a2
--- /dev/null
+++ b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/RestartHandler.java
@@ -0,0 +1,78 @@
+package de.deadlocker8.budgetmasterclient.ui;
+
+import java.util.Optional;
+
+import de.deadlocker8.budgetmaster.logic.utils.LanguageType;
+import de.deadlocker8.budgetmaster.logic.utils.Strings;
+import de.deadlocker8.budgetmasterclient.main.Main;
+import de.deadlocker8.budgetmasterclient.ui.controller.Controller;
+import de.deadlocker8.budgetmasterclient.ui.controller.SplashScreenController;
+import javafx.scene.control.Alert;
+import javafx.scene.control.Button;
+import javafx.scene.control.ButtonType;
+import javafx.scene.control.DialogPane;
+import javafx.scene.control.Alert.AlertType;
+import javafx.scene.image.Image;
+import javafx.scene.input.KeyCode;
+import javafx.scene.input.KeyEvent;
+import javafx.stage.Stage;
+import tools.Localization;
+
+public class RestartHandler
+{
+	private Controller controller;
+	
+	public RestartHandler(Controller controller)
+	{
+		this.controller = controller;
+	}
+
+	public void handleRestart(LanguageType previousLanguage)
+	{
+		controller.refresh(controller.getFilterSettings());
+		controller.showNotification(Localization.getString(Strings.NOTIFICATION_SETTINGS_SAVE));
+		
+		if(controller.getSettings().isAutoUpdateCheckEnabled())
+		{
+			controller.checkForUpdates(false);
+		}
+		
+		//restart application if language has changed
+		if(controller.getSettings().getLanguage() != previousLanguage)
+		{
+			Alert alert = new Alert(AlertType.INFORMATION);
+			alert.setTitle(Localization.getString(Strings.INFO_TITLE_LANGUAGE_CHANGED));
+			alert.setHeaderText("");
+			alert.setContentText(Localization.getString(Strings.INFO_TEXT_LANGUAGE_CHANGED));			
+			Stage dialogStage = (Stage)alert.getDialogPane().getScene().getWindow();
+			dialogStage.getIcons().add(controller.getIcon());					
+			
+			ButtonType buttonTypeOne = new ButtonType(Localization.getString(Strings.INFO_TEXT_LANGUAGE_CHANGED_RESTART_NOW));
+			ButtonType buttonTypeTwo = new ButtonType(Localization.getString(Strings.INFO_TEXT_LANGUAGE_CHANGED_RESTART_LATER));							
+			alert.getButtonTypes().setAll(buttonTypeOne, buttonTypeTwo);
+			
+			DialogPane dialogPane = alert.getDialogPane();
+			dialogPane.getButtonTypes().stream().map(dialogPane::lookupButton).forEach(button -> button.addEventHandler(KeyEvent.KEY_PRESSED, (event) -> {
+				if(KeyCode.ENTER.equals(event.getCode()) && event.getTarget() instanceof Button)
+				{
+					((Button)event.getTarget()).fire();
+				}
+			}));
+			
+			Optional<ButtonType> result = alert.showAndWait();						
+			if (result.get() == buttonTypeOne)
+			{				
+				controller.getStage().close();				
+				
+				Localization.loadLanguage(controller.getSettings().getLanguage().getLocale());
+				
+			    Image icon = new Image("/de/deadlocker8/budgetmaster/icon.png");
+				new SplashScreenController(Main.primaryStage, icon, false);			
+			}
+			else
+			{
+				alert.close();
+			}
+		}
+	}
+}
diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/CommandBundle.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/CommandBundle.java
index 5bb9bb62f3f7d76f1be52e541a3307444e996740..b200c8edeaae61c2e9dd13f99ad9c458a0e3dcae 100644
--- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/CommandBundle.java
+++ b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/CommandBundle.java
@@ -3,17 +3,17 @@ package de.deadlocker8.budgetmasterclient.ui.commandLine;
 import java.text.MessageFormat;
 import java.util.ResourceBundle;
 
-import de.deadlocker8.budgetmaster.logic.Settings;
+import de.deadlocker8.budgetmasterclient.ui.controller.Controller;
 
 public class CommandBundle
 {
 	private CommandLineController controller;
 	private ResourceBundle languageBundle;
-	private Settings settings;
+	private Controller parentController; 
 
-	public CommandBundle(Settings settings)
+	public CommandBundle(Controller parentController)
 	{
-		this.settings = settings;
+		this.parentController = parentController;
 	}
 
 	public CommandLineController getController()
@@ -45,9 +45,9 @@ public class CommandBundle
 	{
 		this.languageBundle = languageBundle;
 	}
-
-	public Settings getSettings()
+	
+	public Controller getParentController()
 	{
-		return settings;
+		return parentController;
 	}
 }
\ No newline at end of file
diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandDelete.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandDelete.java
index 0b00a1d82376b7ade4426d0564f9bced37869cbc..2417ac83430932ed1d978f2d8aee683f132e5755 100644
--- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandDelete.java
+++ b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandDelete.java
@@ -33,7 +33,7 @@ public class CommandDelete extends Command
 		{
 			try
 			{
-				ServerConnection connection = new ServerConnection(bundle.getSettings());
+				ServerConnection connection = new ServerConnection(bundle.getParentController().getSettings());
 				connection.deleteLog();
 				bundle.getController().print(bundle.getString("delete.success", "server logfile"));
 			}
diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandInfo.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandInfo.java
index 977faa7434dd7b1b66e1b237fc328075fd700464..aca29599f04216fdd9b009162e608ef516247582 100644
--- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandInfo.java
+++ b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandInfo.java
@@ -43,7 +43,7 @@ public class CommandInfo extends Command
 		{			
 			try
 			{
-				ServerConnection connection = new ServerConnection(bundle.getSettings());
+				ServerConnection connection = new ServerConnection(bundle.getParentController().getSettings());
 				ServerInformation serverInfo = connection.getServerInfo();
 				VersionInformation versionInfo = serverInfo.getVersionInfo();
 				
diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandSwitch.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandSwitch.java
new file mode 100644
index 0000000000000000000000000000000000000000..5748203222e2325ba641368c294137d59f200ade
--- /dev/null
+++ b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandSwitch.java
@@ -0,0 +1,70 @@
+package de.deadlocker8.budgetmasterclient.ui.commandLine.commands;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+import de.deadlocker8.budgetmaster.logic.utils.FileHelper;
+import de.deadlocker8.budgetmaster.logic.utils.LanguageType;
+import de.deadlocker8.budgetmaster.logic.utils.Strings;
+import de.deadlocker8.budgetmasterclient.ui.RestartHandler;
+import de.deadlocker8.budgetmasterclient.ui.commandLine.CommandBundle;
+import tools.Localization;
+import tools.PathUtils;
+
+public class CommandSwitch extends Command
+{
+	public CommandSwitch()
+	{		
+		super.keyword = "switch";		
+		super.numberOfParams = 0;
+		super.helptText = "help.switch";
+	}
+
+	@Override
+	public void execute(String[] command, CommandBundle bundle)
+	{		
+		if(!isValid(command))
+		{			
+			bundle.getController().print(bundle.getString("error.invalid.arguments"));
+			return;
+		}	
+	
+		Path currentSettingsFile = Paths.get(PathUtils.getOSindependentPath() + Localization.getString(Strings.FOLDER) + "/settings.json");
+		Path secondSettingsFile = Paths.get(PathUtils.getOSindependentPath() + Localization.getString(Strings.FOLDER) + "/_settings.json");
+		
+		if(secondSettingsFile.toFile().exists())
+		{
+			try
+			{
+				Path temp = Paths.get(PathUtils.getOSindependentPath() + Localization.getString(Strings.FOLDER) + "/__settings.json");
+				Files.move(currentSettingsFile, temp);
+				Files.move(secondSettingsFile, currentSettingsFile);
+				Files.move(temp, secondSettingsFile);
+			}
+			catch(IOException e)
+			{
+				bundle.getController().print(bundle.getString("switch.error"));				
+			}
+		}
+		else
+		{
+			bundle.getController().print(bundle.getString("switch.new"));
+			try
+			{
+				Files.copy(currentSettingsFile, secondSettingsFile);
+			}
+			catch(IOException e)
+			{
+				bundle.getController().print(bundle.getString("switch.error"));	
+			}
+		}
+		
+		LanguageType previousLanguage = bundle.getParentController().getSettings().getLanguage();
+		bundle.getParentController().setSettings(FileHelper.loadSettings());
+		RestartHandler restartHandler = new RestartHandler(bundle.getParentController());
+		restartHandler.handleRestart(previousLanguage);
+		bundle.getController().print(bundle.getString("switch.success"));
+	}
+}
\ No newline at end of file
diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/PossibleCommands.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/PossibleCommands.java
index 9e8536214ad9139ac1b130945557fdf29f82b2ce..0ecfd5ea340a49795b9cc2b5f8cdc1fae07505d4 100644
--- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/PossibleCommands.java
+++ b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/PossibleCommands.java
@@ -12,6 +12,7 @@ public class PossibleCommands
 				new CommandShortcuts(),
 				new CommandOpen(),
 				new CommandDelete(),
-				new CommandInfo()
+				new CommandInfo(),
+				new CommandSwitch()
 			));	
 }
\ No newline at end of file
diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/Controller.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/Controller.java
index ed1bb60f3319bee36f81bcf56dc3ae93143ebf31..40a11fda714a6d30ccbc616942baa2c50e01081d 100644
--- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/Controller.java
+++ b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/Controller.java
@@ -131,7 +131,7 @@ public class Controller extends BaseController
 		paymentHandler = new PaymentHandler();
 		updater = new Updater();
 		
-		CommandBundle commandBundle = new CommandBundle(settings);
+		CommandBundle commandBundle = new CommandBundle(this);
 		cmd = new CommandLine(getStage(), icon, ResourceBundle.getBundle("de/deadlocker8/budgetmaster/ui/commandLine/", Locale.ENGLISH), commandBundle);
 		
 		if(settings.isAutoUpdateCheckEnabled())
diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/SettingsController.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/SettingsController.java
index 523b1672a4b0a793fe2c5800ad83cde6b27604ea..13a76e2a41f715b79fe167147b8b61e8ddc82527 100644
--- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/SettingsController.java
+++ b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/SettingsController.java
@@ -15,7 +15,7 @@ import de.deadlocker8.budgetmaster.logic.utils.FileHelper;
 import de.deadlocker8.budgetmaster.logic.utils.Helpers;
 import de.deadlocker8.budgetmaster.logic.utils.LanguageType;
 import de.deadlocker8.budgetmaster.logic.utils.Strings;
-import de.deadlocker8.budgetmasterclient.main.Main;
+import de.deadlocker8.budgetmasterclient.ui.RestartHandler;
 import de.deadlocker8.budgetmasterclient.ui.Styleable;
 import de.deadlocker8.budgetmasterclient.ui.cells.LanguageCell;
 import de.deadlocker8.budgetmasterclient.utils.UIHelpers;
@@ -36,7 +36,6 @@ import javafx.scene.control.TextArea;
 import javafx.scene.control.TextField;
 import javafx.scene.control.TextInputDialog;
 import javafx.scene.control.ToggleGroup;
-import javafx.scene.image.Image;
 import javafx.scene.input.KeyCode;
 import javafx.scene.input.KeyEvent;
 import javafx.scene.layout.AnchorPane;
@@ -306,52 +305,9 @@ public class SettingsController implements Styleable
 		textFieldClientSecret.setText("******");
 		textFieldSecret.setText("******");
 
-		controller.refresh(controller.getFilterSettings());
-		controller.showNotification(Localization.getString(Strings.NOTIFICATION_SETTINGS_SAVE));
-		
-		if(controller.getSettings().isAutoUpdateCheckEnabled())
-		{
-			controller.checkForUpdates(false);			
-			refreshLabelsUpdate();
-		}
-		
-		//restart application if language has changed
-		if(controller.getSettings().getLanguage() != previousLanguage)
-		{
-			Alert alert = new Alert(AlertType.INFORMATION);
-			alert.setTitle(Localization.getString(Strings.INFO_TITLE_LANGUAGE_CHANGED));
-			alert.setHeaderText("");
-			alert.setContentText(Localization.getString(Strings.INFO_TEXT_LANGUAGE_CHANGED));			
-			Stage dialogStage = (Stage)alert.getDialogPane().getScene().getWindow();
-			dialogStage.getIcons().add(controller.getIcon());					
-			
-			ButtonType buttonTypeOne = new ButtonType(Localization.getString(Strings.INFO_TEXT_LANGUAGE_CHANGED_RESTART_NOW));
-			ButtonType buttonTypeTwo = new ButtonType(Localization.getString(Strings.INFO_TEXT_LANGUAGE_CHANGED_RESTART_LATER));							
-			alert.getButtonTypes().setAll(buttonTypeOne, buttonTypeTwo);
-			
-			DialogPane dialogPane = alert.getDialogPane();
-			dialogPane.getButtonTypes().stream().map(dialogPane::lookupButton).forEach(button -> button.addEventHandler(KeyEvent.KEY_PRESSED, (event) -> {
-				if(KeyCode.ENTER.equals(event.getCode()) && event.getTarget() instanceof Button)
-				{
-					((Button)event.getTarget()).fire();
-				}
-			}));
-			
-			Optional<ButtonType> result = alert.showAndWait();						
-			if (result.get() == buttonTypeOne)
-			{				
-				controller.getStage().close();				
-				
-				Localization.loadLanguage(controller.getSettings().getLanguage().getLocale());
-				
-			    Image icon = new Image("/de/deadlocker8/budgetmaster/icon.png");
-				new SplashScreenController(Main.primaryStage, icon, false);			
-			}
-			else
-			{
-				alert.close();
-			}
-		}
+		RestartHandler restartHandler = new RestartHandler(controller);
+		restartHandler.handleRestart(previousLanguage);
+		refreshLabelsUpdate();
 	}
 
 	public void exportDB()
diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/commandLine/_en.properties b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/commandLine/_en.properties
index bc2a8acd373c35ec0eb8b684e478e5434222c599..7aee4c0633193d4d979808892e7883975091243c 100644
--- a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/commandLine/_en.properties
+++ b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/commandLine/_en.properties
@@ -22,4 +22,10 @@ delete.error.connection=An error occurred while establishing the server connecti
 
 # info
 help.info=info - information about client and server \nSYNTAX: info [PARAMETER]\npossible parameters:\client\nserver
-info.error.connection=An error occurred while establishing the server connection
\ No newline at end of file
+info.error.connection=An error occurred while establishing the server connection
+
+# switch
+help.switch=switch - switch betwwen two client settings
+switch.new=Second settings file is not present. Copying current settings file...
+switch.success=Successfully switched settings 
+switch.error=An error occurred while switching the settings
\ No newline at end of file