diff --git a/src/de/deadlocker8/budgetmaster/logic/Utils.java b/src/de/deadlocker8/budgetmaster/logic/Utils.java
index 5b949e4a3f3329ab002e266b61921c6c76ddf7df..bb8fefa748e76b72b1f0fa90e952f221898db497 100644
--- a/src/de/deadlocker8/budgetmaster/logic/Utils.java
+++ b/src/de/deadlocker8/budgetmaster/logic/Utils.java
@@ -33,19 +33,11 @@ public class Utils
 		}
 	}
 	
-	public static void saveSettings(Settings settings)
-	{
-		try
-		{
-			Gson gson = new Gson();
-			String jsonString = gson.toJson(settings);
-			
-			Files.write(Paths.get(PathUtils.getOSindependentPath() + bundle.getString("folder")  + "/settings.json"), jsonString.getBytes());				
-		}
-		catch(IOException e)
-		{
-			//ERRORHANDLING
-			e.printStackTrace();			
-		}
+	public static void saveSettings(Settings settings) throws IOException
+	{		
+		Gson gson = new Gson();
+		String jsonString = gson.toJson(settings);
+		
+		Files.write(Paths.get(PathUtils.getOSindependentPath() + bundle.getString("folder")  + "/settings.json"), jsonString.getBytes());	
 	}
 }
\ No newline at end of file
diff --git a/src/de/deadlocker8/budgetmaster/ui/Controller.java b/src/de/deadlocker8/budgetmaster/ui/Controller.java
index 8d7c3ed43a9b7df79947e63c05b17f7578a56ec2..409f3e0a448620161d798343d7a502fe36ff11de 100644
--- a/src/de/deadlocker8/budgetmaster/ui/Controller.java
+++ b/src/de/deadlocker8/budgetmaster/ui/Controller.java
@@ -119,8 +119,10 @@ public class Controller implements Refreshable
 		}
 		catch(IOException e)
 		{
-			// ERRORHANDLING
 			Logger.error(e);
+			Platform.runLater(() -> {
+				AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Beim Erstellen der Benutzeroberfläche ist ein Fehler aufgetreten", icon, stage, null, false);
+			});			
 		}
 
 		FontIcon iconPrevious = new FontIcon(FontIconType.CHEVRON_LEFT);
diff --git a/src/de/deadlocker8/budgetmaster/ui/SettingsController.java b/src/de/deadlocker8/budgetmaster/ui/SettingsController.java
index 92ec0e3fccff33ff627ab70ce8f0f94526e89700..9a829d06ca6598380d33d291a64e9440782a9129 100644
--- a/src/de/deadlocker8/budgetmaster/ui/SettingsController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/SettingsController.java
@@ -1,5 +1,7 @@
 package de.deadlocker8.budgetmaster.ui;
 
+import java.io.IOException;
+
 import de.deadlocker8.budgetmaster.logic.Settings;
 import de.deadlocker8.budgetmaster.logic.Utils;
 import javafx.fxml.FXML;
@@ -10,6 +12,7 @@ import javafx.scene.control.RadioButton;
 import javafx.scene.control.TextField;
 import javafx.scene.control.ToggleGroup;
 import javafx.scene.layout.AnchorPane;
+import logger.Logger;
 import tools.AlertGenerator;
 
 public class SettingsController
@@ -75,13 +78,22 @@ public class SettingsController
 					settings.setRestActivated(radioButtonRestActivated.isSelected());
 					controller.setSettings(settings);
 				}
-				Utils.saveSettings(controller.getSettings());	
+				
+				try
+				{
+					Utils.saveSettings(controller.getSettings());
+				}
+				catch(IOException e)
+				{
+					Logger.error(e);
+					AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Beim Speichern der Einstellungen ist ein Fehler aufgetreten", controller.getIcon(), controller.getStage(), null, false);
+				}	
 				controller.refresh();
 				controller.showNotification("Erfolgreich gespeichert");
 			}
 			else
 			{
-				AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Das Server Passwortfel darf nicht leer sein!", controller.getIcon(), controller.getStage(), null, false);
+				AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Das Server Passwortfeld darf nicht leer sein!", controller.getIcon(), controller.getStage(), null, false);
 			}
 		}
 		else
diff --git a/src/de/deadlocker8/budgetmasterserver/main/Main.java b/src/de/deadlocker8/budgetmasterserver/main/Main.java
new file mode 100644
index 0000000000000000000000000000000000000000..7db6b448d7ac9916d7e94e0b5a684efc265e3f1e
--- /dev/null
+++ b/src/de/deadlocker8/budgetmasterserver/main/Main.java
@@ -0,0 +1,51 @@
+package de.deadlocker8.budgetmasterserver.main;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URISyntaxException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+
+import de.deadlocker8.budgetmasterserver.server.SparkServer;
+import logger.LogLevel;
+import logger.Logger;
+
+public class Main
+{
+	public static void main(String[] args)
+	{
+		Logger.setLevel(LogLevel.ALL);		
+		try
+		{
+			File logFile = new File(Paths.get(SparkServer.class.getProtectionDomain().getCodeSource().getLocation().toURI()).getParent().toFile() + "/error.log");
+			Logger.enableFileOutput(logFile);
+		}
+		catch(URISyntaxException e1)
+		{
+			Logger.error(e1);
+		}		
+		
+		if(!Files.exists(Paths.get("settings.properties")))
+		{
+			try
+			{
+				Files.copy(SparkServer.class.getClassLoader().getResourceAsStream("de/deadlocker8/budgetmasterserver/resources/settings.properties"), Paths.get("settings.properties"));
+			}
+			catch(IOException e)
+			{
+				Logger.error(e);
+			}
+		}
+
+		Settings settings;
+		try
+		{
+			settings = Utils.loadSettings();
+			new SparkServer(settings);
+		}
+		catch(IOException e)
+		{
+			Logger.error(e);
+		}
+	}
+}
diff --git a/src/de/deadlocker8/budgetmasterserver/main/Utils.java b/src/de/deadlocker8/budgetmasterserver/main/Utils.java
index a79d9ec196cb728c9a86f0dc421fc2a1d7731276..a6d3340fc3cd9d0dc21f70b1cfe625abcd4cdb8d 100644
--- a/src/de/deadlocker8/budgetmasterserver/main/Utils.java
+++ b/src/de/deadlocker8/budgetmasterserver/main/Utils.java
@@ -8,22 +8,14 @@ import com.google.gson.Gson;
 
 public class Utils
 {
-	public static Settings loadSettings()
+	public static Settings loadSettings() throws IOException
 	{
 		String settingsJSON;
 		Settings settings;
-		try
-		{
-			Gson gson = new Gson();
-			settingsJSON = new String(Files.readAllBytes(Paths.get("settings.properties")));				
-			settings = gson.fromJson(settingsJSON, Settings.class);	
-			return settings;
-		}
-		catch(IOException e)
-		{
-			//ERRORHANDLING
-			e.printStackTrace();
-			return null;
-		}
+		
+		Gson gson = new Gson();
+		settingsJSON = new String(Files.readAllBytes(Paths.get("settings.properties")));				
+		settings = gson.fromJson(settingsJSON, Settings.class);	
+		return settings;		
 	}
 }
\ No newline at end of file
diff --git a/src/de/deadlocker8/budgetmasterserver/server/SparkServer.java b/src/de/deadlocker8/budgetmasterserver/server/SparkServer.java
index 735dcbdd43c5b5197fd48809e1d3b261763413eb..c8957581ece82c9e1100e422dc067d2d2b9d413c 100644
--- a/src/de/deadlocker8/budgetmasterserver/server/SparkServer.java
+++ b/src/de/deadlocker8/budgetmasterserver/server/SparkServer.java
@@ -10,18 +10,11 @@ import static spark.Spark.post;
 import static spark.Spark.put;
 import static spark.Spark.secure;
 
-import java.io.File;
-import java.io.IOException;
-import java.net.URISyntaxException;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 
 import de.deadlocker8.budgetmasterserver.main.DatabaseHandler;
 import de.deadlocker8.budgetmasterserver.main.Settings;
-import de.deadlocker8.budgetmasterserver.main.Utils;
 import de.deadlocker8.budgetmasterserver.server.category.CategoryAdd;
 import de.deadlocker8.budgetmasterserver.server.category.CategoryDelete;
 import de.deadlocker8.budgetmasterserver.server.category.CategoryGet;
@@ -37,43 +30,23 @@ import de.deadlocker8.budgetmasterserver.server.payment.repeating.RepeatingPayme
 import de.deadlocker8.budgetmasterserver.server.payment.repeating.RepeatingPaymentGetAll;
 import de.deadlocker8.budgetmasterserver.server.rest.RestGet;
 import de.deadlocker8.budgetmasterserver.server.updater.RepeatingPaymentUpdater;
-import logger.LogLevel;
 import logger.Logger;
 import spark.Spark;
 import spark.route.RouteOverview;
 
 public class SparkServer
-{
-	private static Settings settings;
-	private static Gson gson;
-	private static DatabaseHandler handler;
-
-	// DEBUG move main method to extra file and start SparkServer from there
-	public static void main(String[] args) throws URISyntaxException
-	{		
-		Logger.setLevel(LogLevel.ALL);
-		File logFile = new File(Paths.get(SparkServer.class.getProtectionDomain().getCodeSource().getLocation().toURI()).getParent().toFile() + "/error.log");	
-		Logger.enableFileOutput(logFile);
+{	
+	private Gson gson;
+	private DatabaseHandler handler;
+	
+	public SparkServer(Settings settings)
+	{				
 		Logger.info("Initialized SparkServer");
 
 		gson = new GsonBuilder().setPrettyPrinting().create();
-
-		if(!Files.exists(Paths.get("settings.properties")))
-		{
-			try
-			{
-				Files.copy(SparkServer.class.getClassLoader().getResourceAsStream("de/deadlocker8/budgetmasterserver/resources/settings.properties"), Paths.get("settings.properties"));
-			}
-			catch(IOException e)
-			{
-				// ERRORHANDLING
-				e.printStackTrace();
-			}
-		}
-
-		settings = Utils.loadSettings();
-
+		
 		port(settings.getServerPort());
+		
 		// DEBUG
 		secure("certs/keystore.jks", "geheim", null, null);
 		RouteOverview.enableRouteOverview();
@@ -120,6 +93,7 @@ public class SparkServer
 		});
 		
 		Spark.exception(Exception.class, (exception, request, response) -> {
+			Logger.error(exception);
 			exception.printStackTrace();
 		});
 	}