Index: AE/installer2/src/net/oni2/aeinstaller/AEInstaller2.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/AEInstaller2.java	(revision 708)
+++ AE/installer2/src/net/oni2/aeinstaller/AEInstaller2.java	(revision 709)
@@ -24,6 +24,4 @@
 import net.oni2.aeinstaller.backend.DotNet;
 import net.oni2.aeinstaller.backend.Paths;
-import net.oni2.aeinstaller.backend.Settings;
-import net.oni2.aeinstaller.backend.Settings.Platform;
 import net.oni2.aeinstaller.backend.SizeFormatter;
 import net.oni2.aeinstaller.backend.depot.DepotManager;
@@ -32,4 +30,6 @@
 import net.oni2.aeinstaller.gui.HTMLLinkLabel;
 import net.oni2.aeinstaller.gui.MainWin;
+import net.oni2.settingsmanager.Settings;
+import net.oni2.settingsmanager.Settings.Platform;
 
 import org.javabuilders.swing.SwingJavaBuilder;
@@ -127,5 +127,5 @@
 
 		Settings.setDebug(debug);
-		Settings.deserializeFromFile();
+		Settings.deserializeFromFile(Paths.getSettingsFilename());
 		Settings.setDebug(debug);
 		Settings.getInstance().setNoCacheUpdateMode(noCacheUpdate);
Index: AE/installer2/src/net/oni2/aeinstaller/backend/DotNet.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/backend/DotNet.java	(revision 708)
+++ AE/installer2/src/net/oni2/aeinstaller/backend/DotNet.java	(revision 709)
@@ -6,8 +6,9 @@
 import java.util.Vector;
 
-import net.oni2.aeinstaller.backend.Settings.Architecture;
-import net.oni2.aeinstaller.backend.Settings.Platform;
-import net.oni2.aeinstaller.backend.appexecution.AppExecution;
-import net.oni2.aeinstaller.backend.appexecution.AppExecutionResult;
+import net.oni2.applicationinvoker.AppExecution;
+import net.oni2.applicationinvoker.AppExecutionResult;
+import net.oni2.settingsmanager.Settings;
+import net.oni2.settingsmanager.Settings.Architecture;
+import net.oni2.settingsmanager.Settings.Platform;
 
 /**
Index: AE/installer2/src/net/oni2/aeinstaller/backend/Paths.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/backend/Paths.java	(revision 708)
+++ AE/installer2/src/net/oni2/aeinstaller/backend/Paths.java	(revision 709)
@@ -5,8 +5,24 @@
 import java.net.URLDecoder;
 
+import net.oni2.settingsmanager.Settings;
+
 /**
  * @author Christian Illy
  */
 public class Paths {
+
+	/**
+	 * @return Mod Depot cache filename
+	 */
+	public static File getDepotCacheFilename() {
+		return new File(getPrefsPath(), "ModDepotCache.xml");
+	}
+
+	/**
+	 * @return Settings filename of AEI
+	 */
+	public static File getSettingsFilename() {
+		return new File(getPrefsPath(), "AEI-Settings.xml");
+	}
 
 	/**
Index: AE/installer2/src/net/oni2/aeinstaller/backend/Settings.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/backend/Settings.java	(revision 708)
+++ 	(revision )
@@ -1,353 +1,0 @@
-package net.oni2.aeinstaller.backend;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.Serializable;
-import java.util.HashMap;
-import java.util.Vector;
-
-import net.oni2.aeinstaller.backend.appexecution.AppExecution;
-import net.oni2.aeinstaller.backend.appexecution.AppExecutionResult;
-
-import com.thoughtworks.xstream.XStream;
-import com.thoughtworks.xstream.io.xml.StaxDriver;
-
-/**
- * Manages and stores programm settings
- * 
- * @author Christian Illy
- */
-public class Settings implements Serializable {
-
-	private static final long serialVersionUID = 8067725289301601179L;
-
-	/**
-	 * @author Christian Illy
-	 */
-	public enum Architecture {
-		/**
-		 * 32 bit
-		 */
-		X86,
-		/**
-		 * 64 bit
-		 */
-		AMD64
-	};
-
-	/**
-	 * @author Christian Illy
-	 */
-	public enum Platform {
-		/**
-		 * Running Windows
-		 */
-		WIN,
-		/**
-		 * Running MacOS
-		 */
-		MACOS,
-		/**
-		 * Running a Linux
-		 */
-		LINUX,
-		/**
-		 * Unknown OS
-		 */
-		UNKNOWN
-	}
-
-	private static Settings instance = new Settings();
-
-	private static boolean debugRun = false;
-
-	private HashMap<String, Object> prefs = new HashMap<String, Object>();
-
-	private boolean printNamesNotInMap = false;
-
-	private boolean offlineMode = false;
-	private boolean noCacheUpdate = false;
-
-	/**
-	 * @return path to wine
-	 */
-	public static String getWinePath() {
-		if (getPlatform() != Platform.LINUX)
-			return null;
-
-		Vector<String> cmd = new Vector<String>();
-		cmd.add("which");
-		cmd.add("wine");
-		AppExecutionResult res = null;
-		try {
-			res = AppExecution.executeAndWait(cmd);
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-		if (res != null) {
-			if (res.output.get(0).startsWith("/") && res.output.get(0).endsWith("wine")) {
-				return res.output.get(0);
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Get the singleton instance
-	 * 
-	 * @return Singleton instance
-	 */
-	public static Settings getInstance() {
-		return instance;
-	}
-
-	/**
-	 * @param debug
-	 *            Debug mode
-	 */
-	public static void setDebug(boolean debug) {
-		debugRun = debug;
-	}
-
-	/**
-	 * @return Is debug run
-	 */
-	public static boolean isDebug() {
-		return debugRun;
-	}
-
-	/**
-	 * @return Processor architecture
-	 */
-	public static Architecture getArchitecture() {
-		switch (getPlatform()) {
-			case WIN:
-				String arch = System.getenv("PROCESSOR_ARCHITECTURE")
-						.toLowerCase();
-				if (arch.startsWith("x86"))
-					return Architecture.X86;
-				return Architecture.AMD64;
-			case MACOS:
-			case LINUX:
-				Vector<String> cmd = new Vector<String>();
-				cmd.add("getconf");
-				cmd.add("LONG_BIT");
-				AppExecutionResult res = null;
-				try {
-					res = AppExecution.executeAndWait(cmd);
-				} catch (IOException e) {
-					e.printStackTrace();
-				}
-				if (res != null) {
-					if (res.output.get(0).equals("64"))
-						return Architecture.AMD64;
-				}
-				return Architecture.X86;
-			default:
-				return null;
-		}
-	}
-
-	/**
-	 * @return The operating system running on
-	 */
-	public static Platform getPlatform() {
-		String os = System.getProperty("os.name").toLowerCase();
-		if (os.startsWith("win"))
-			return Platform.WIN;
-		if (os.startsWith("linux"))
-			return Platform.LINUX;
-		if (os.startsWith("mac"))
-			return Platform.MACOS;
-		return Platform.UNKNOWN;
-	}
-
-	/**
-	 * @return Is offline?
-	 */
-	public boolean isOfflineMode() {
-		return offlineMode;
-	}
-
-	/**
-	 * @param offline
-	 *            Is offline?
-	 */
-	public void setOfflineMode(boolean offline) {
-		this.offlineMode = offline;
-	}
-
-	/**
-	 * @return Is in noCacheUpdate mode?
-	 */
-	public boolean isNoCacheUpdateMode() {
-		return noCacheUpdate;
-	}
-
-	/**
-	 * @param noCacheUpdate
-	 *            Is in noCacheUpdate mode?
-	 */
-	public void setNoCacheUpdateMode(boolean noCacheUpdate) {
-		this.noCacheUpdate = noCacheUpdate;
-	}
-
-	/**
-	 * @return Mod Depot cache filename
-	 */
-	public static File getDepotCacheFilename() {
-		return new File(Paths.getPrefsPath(), "ModDepotCache.xml");
-	}
-
-	private static File getSettingsFilename() {
-		return new File(Paths.getPrefsPath(), "AEI-Settings.xml");
-	}
-
-	private static XStream getXStream() {
-		XStream xs = new XStream(new StaxDriver());
-		xs.alias("Settings", Settings.class);
-		return xs;
-	}
-
-	/**
-	 * Serializes the settings to disk
-	 */
-	public void serializeToFile() {
-		try {
-			FileOutputStream fos = new FileOutputStream(getSettingsFilename());
-			XStream xs = getXStream();
-			xs.toXML(this, fos);
-			fos.close();
-		} catch (FileNotFoundException e) {
-			e.printStackTrace();
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-	}
-
-	/**
-	 * Deserializes the settings from disk
-	 */
-	public static void deserializeFromFile() {
-		try {
-			FileInputStream fis = new FileInputStream(getSettingsFilename());
-			XStream xs = getXStream();
-			Object obj = xs.fromXML(fis);
-			if (obj instanceof Settings)
-				instance = (Settings) obj;
-			fis.close();
-		} catch (FileNotFoundException e) {
-		} catch (IOException e) {
-		}
-	}
-
-	/**
-	 * Put a string value
-	 * 
-	 * @param key
-	 *            Key for value
-	 * @param value
-	 *            Value
-	 */
-	public void put(String key, String value) {
-		prefs.put(key, value);
-	}
-
-	/**
-	 * Put a boolean value
-	 * 
-	 * @param key
-	 *            Key for value
-	 * @param value
-	 *            Value
-	 */
-	public void put(String key, boolean value) {
-		prefs.put(key, value);
-	}
-
-	/**
-	 * Put a int value
-	 * 
-	 * @param key
-	 *            Key for value
-	 * @param value
-	 *            Value
-	 */
-	public void put(String key, int value) {
-		prefs.put(key, value);
-	}
-
-	/**
-	 * Get a string value
-	 * 
-	 * @param key
-	 *            Key for value
-	 * @param def
-	 *            Default return value if key does not exist
-	 * @return Value
-	 */
-	public String get(String key, String def) {
-		if (prefs.containsKey(key)) {
-			if (prefs.get(key) instanceof String)
-				return (String) (prefs.get(key));
-		}
-		if (printNamesNotInMap)
-			System.out.println("Settings: Key \"" + key
-					+ "\" not in Map, defaulting to \"" + def + "\".");
-		return def;
-	}
-
-	/**
-	 * Get a boolean value
-	 * 
-	 * @param key
-	 *            Key for value
-	 * @param def
-	 *            Default return value if key does not exist
-	 * @return Value
-	 */
-	public Boolean get(String key, Boolean def) {
-		if (prefs.containsKey(key)) {
-			if (prefs.get(key) instanceof Boolean)
-				return (Boolean) (prefs.get(key));
-		}
-		if (printNamesNotInMap)
-			System.out.println("Settings: Key \"" + key
-					+ "\" not in Map, defaulting to \"" + def + "\".");
-		return def;
-	}
-
-	/**
-	 * Get a int value
-	 * 
-	 * @param key
-	 *            Key for value
-	 * @param def
-	 *            Default return value if key does not exist
-	 * @return Value
-	 */
-	public int get(String key, int def) {
-		if (prefs.containsKey(key)) {
-			if (prefs.get(key) instanceof Integer)
-				return (Integer) (prefs.get(key));
-		}
-		if (printNamesNotInMap)
-			System.out.println("Settings: Key \"" + key
-					+ "\" not in Map, defaulting to \"" + def + "\".");
-		return def;
-	}
-
-	/**
-	 * Remove a value
-	 * 
-	 * @param key
-	 *            Key to value to remove
-	 */
-	public void removeValue(String key) {
-		prefs.remove(key);
-	}
-
-}
Index: AE/installer2/src/net/oni2/aeinstaller/backend/ToolLauncher.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/backend/ToolLauncher.java	(revision 708)
+++ AE/installer2/src/net/oni2/aeinstaller/backend/ToolLauncher.java	(revision 709)
@@ -4,7 +4,8 @@
 import java.util.Vector;
 
-import net.oni2.aeinstaller.backend.Settings.Platform;
-import net.oni2.aeinstaller.backend.appexecution.AppExecution;
 import net.oni2.aeinstaller.backend.packages.Package;
+import net.oni2.applicationinvoker.AppExecution;
+import net.oni2.settingsmanager.Settings;
+import net.oni2.settingsmanager.Settings.Platform;
 
 /**
