Index: AE/installer2/src/net/oni2/aeinstaller/AEInstaller.properties
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/AEInstaller.properties	(revision 635)
+++ AE/installer2/src/net/oni2/aeinstaller/AEInstaller.properties	(revision 636)
@@ -1,2 +1,2 @@
 appname=AE Installer 2
-appversion=0.92b
+appversion=0.93
Index: AE/installer2/src/net/oni2/aeinstaller/backend/depot/DepotConfig.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/backend/depot/DepotConfig.java	(revision 635)
+++ AE/installer2/src/net/oni2/aeinstaller/backend/depot/DepotConfig.java	(revision 636)
@@ -20,5 +20,5 @@
 	 * @return Vocabulary name for platform field
 	 */
-	public static String getVocabularyName_Platform() {
+	static String getVocabularyName_Platform() {
 		return "Platform";
 	}
@@ -27,5 +27,5 @@
 	 * @return Vocabulary name for installtype field
 	 */
-	public static String getVocabularyName_InstallType() {
+	static String getVocabularyName_InstallType() {
 		return "Install method";
 	}
@@ -34,5 +34,5 @@
 	 * @return Vocabulary name for modtype field
 	 */
-	public static String getVocabularyName_ModType() {
+	static String getVocabularyName_ModType() {
 		return "Mod type";
 	}
@@ -62,5 +62,5 @@
 	 * @return Taxonomy term name for installtype Package
 	 */
-	public static String getTaxonomyName_InstallType_Package() {
+	static String getTaxonomyName_InstallType_Package() {
 		return "Package";
 	}
@@ -87,5 +87,5 @@
 	 * @return URL of Depot
 	 */
-	public static String getDepotUrl() {
+	static String getDepotUrl() {
 		return Settings.getInstance().get("depot_url", "http://mods.oni2.net/");
 	}
@@ -94,5 +94,5 @@
 	 * @return URL of Depot API
 	 */
-	public static String getDepotApiUrl() {
+	static String getDepotApiUrl() {
 		return Settings.getInstance().get("depot_api_url",
 				"http://mods.oni2.net/?q=api/");
Index: AE/installer2/src/net/oni2/aeinstaller/backend/depot/model/TaxonomyTerm.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/backend/depot/model/TaxonomyTerm.java	(revision 635)
+++ AE/installer2/src/net/oni2/aeinstaller/backend/depot/model/TaxonomyTerm.java	(revision 636)
@@ -13,22 +13,4 @@
 	private String description;
 	private String uri;
-
-	/**
-	 * Manually create a taxonomy term for internal use
-	 * 
-	 * @param tid
-	 *            ID
-	 * @param vid
-	 *            VocabID
-	 * @param name
-	 *            Term name
-	 */
-	public TaxonomyTerm(int tid, int vid, String name) {
-		this.tid = tid;
-		this.vid = vid;
-		this.name = name;
-		this.description = "";
-		this.uri = "";
-	}
 
 	/**
Index: AE/installer2/src/net/oni2/aeinstaller/backend/mods/Mod.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/backend/mods/Mod.java	(revision 635)
+++ AE/installer2/src/net/oni2/aeinstaller/backend/mods/Mod.java	(revision 636)
@@ -85,83 +85,22 @@
 		File plain = new File(getLocalPath(), "plain");
 		if (config.exists()) {
-			try {
-				FileInputStream fstream = new FileInputStream(config);
-				InputStreamReader isr = new InputStreamReader(fstream);
-				BufferedReader br = new BufferedReader(isr);
-				String strLine;
-				while ((strLine = br.readLine()) != null) {
-					if (strLine.indexOf("->") < 1)
-						continue;
-					if (strLine.indexOf("//") >= 0)
-						strLine = strLine.substring(0, strLine.indexOf("//"));
-					String[] split = strLine.split("->", 2);
-					String sName = split[0].trim();
-					String sVal = split[1].trim();
-					if (sName.equalsIgnoreCase("AEInstallVersion")) {
-						aeVersion = Double.parseDouble(sVal);
-					} else if (sName.equalsIgnoreCase("NameOfMod")) {
-						if (node == null)
-							name = sVal;
-					} else if (sName.equalsIgnoreCase("Creator")) {
-						if (node == null)
-							creator = sVal;
-					} else if (sName.equalsIgnoreCase("HasBsl")) {
-						if (sVal.equalsIgnoreCase("addon"))
-							bslInstallType = EBSLInstallType.ADDON;
-					} else if (sName.equalsIgnoreCase("ModVersion")) {
-						if (node == null)
-							version = sVal;
-					} else if (sName.equalsIgnoreCase("Readme")) {
-						if (node == null)
-							description = sVal.replaceAll("\\\\n", "<br>");
-					} else if (sName.equalsIgnoreCase("DependsOn")) {
-						String[] depsS = sVal.split(",");
-						for (String s : depsS) {
-							try {
-								int dep = Integer.parseInt(s);
-								dependencies.add(dep);
-							} catch (NumberFormatException e) {
-								System.err
-										.format("Mod %05d does contain a non-number dependency: '%s'\n",
-												packageNumber, s);
-							}
-						}
-					} else if (sName.equalsIgnoreCase("IncompatibleWith")) {
-						String[] confS = sVal.split(",");
-						for (String s : confS) {
-							try {
-								int conf = Integer.parseInt(s);
-								incompatibilities.add(conf);
-							} catch (NumberFormatException e) {
-								System.err
-										.format("Mod %05d does contain a non-number incompatibility: '%s'\n",
-												packageNumber, s);
-							}
-						}
-					} else if (sName.equalsIgnoreCase("UnlockLevel")) {
-						String[] levelsS = sVal.split(",");
-						for (String s : levelsS) {
-							try {
-								int level = Integer.parseInt(s);
-								unlockLevel.add(level);
-							} catch (NumberFormatException e) {
-								System.err
-										.format("Mod %05d does contain a non-number UnlockLevel value: '%s'\n",
-												packageNumber, s);
-							}
-						}
-					} else if (sName.equalsIgnoreCase("ExeName")) {
-						exeFile = new File(Paths.getEditionBasePath(), sVal);
-					} else if (sName.equalsIgnoreCase("WorkingDir")) {
-						workingDir = sVal;
-					} else if (sName.equalsIgnoreCase("IconName")) {
-						iconFile = new File(Paths.getEditionBasePath(), sVal);
-					}
-				}
-				isr.close();
-			} catch (FileNotFoundException e) {
-			} catch (IOException e) {
-				e.printStackTrace();
+			Mod_Info mi = new Mod_Info(config, packageNumber);
+
+			aeVersion = mi.getAeVersion();
+			bslInstallType = mi.getBslInstallType();
+			if (node == null) {
+				name = mi.getName();
+				creator = mi.getCreator();
+				version = mi.getVersion();
+				description = mi.getDescription();
 			}
+
+			dependencies = mi.getDependencies();
+			incompatibilities = mi.getIncompatibilities();
+			unlockLevel = mi.getUnlockLevel();
+
+			exeFile = mi.getExeFile();
+			workingDir = mi.getWorkingDir();
+			iconFile = mi.getIconFile();
 		} else {
 			System.err.println("No config found for mod folder: "
Index: AE/installer2/src/net/oni2/aeinstaller/backend/mods/ModManager.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/backend/mods/ModManager.java	(revision 635)
+++ AE/installer2/src/net/oni2/aeinstaller/backend/mods/ModManager.java	(revision 636)
@@ -269,5 +269,5 @@
 	 * @return Mod/tool or null
 	 */
-	public Mod getModByNumber(int number) {
+	private Mod getModByNumber(int number) {
 		if (mods.containsKey(number))
 			return mods.get(number);
Index: AE/installer2/src/net/oni2/aeinstaller/backend/mods/Mod_Info.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/backend/mods/Mod_Info.java	(revision 636)
+++ AE/installer2/src/net/oni2/aeinstaller/backend/mods/Mod_Info.java	(revision 636)
@@ -0,0 +1,211 @@
+package net.oni2.aeinstaller.backend.mods;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.HashSet;
+
+import net.oni2.aeinstaller.backend.Paths;
+
+/**
+ * @author Christian Illy
+ */
+public class Mod_Info {
+	private double aeVersion = 0;
+	private String name = "";
+	private String creator = "";
+	private EBSLInstallType bslInstallType = EBSLInstallType.NORMAL;
+	private String version = "";
+	private String description = "";
+
+	private HashSet<Integer> incompatibilities = new HashSet<Integer>();
+	private HashSet<Integer> dependencies = new HashSet<Integer>();
+	private HashSet<Integer> unlockLevel = new HashSet<Integer>();
+
+	private File exeFile = null;
+	private File iconFile = null;
+	private String workingDir = "Base";
+
+	// TODO
+
+	/**
+	 * @param f
+	 *            Mod_Info.cfg
+	 * @param packageNumber
+	 *            Package number this Mod_Info belongs to
+	 */
+	public Mod_Info(File f, int packageNumber) {
+		InputStreamReader isr = null;
+		try {
+			FileInputStream fstream = new FileInputStream(f);
+			isr = new InputStreamReader(fstream);
+			BufferedReader br = new BufferedReader(isr);
+			String strLine;
+			while ((strLine = br.readLine()) != null) {
+				if (strLine.indexOf("->") < 1)
+					continue;
+				if (strLine.indexOf("//") >= 0)
+					strLine = strLine.substring(0, strLine.indexOf("//"));
+				String[] split = strLine.split("->", 2);
+				String sName = split[0].trim();
+				String sVal = split[1].trim();
+				if (sName.equalsIgnoreCase("AEInstallVersion")) {
+					aeVersion = Double.parseDouble(sVal);
+				} else if (sName.equalsIgnoreCase("NameOfMod")) {
+					name = sVal;
+				} else if (sName.equalsIgnoreCase("Creator")) {
+					creator = sVal;
+				} else if (sName.equalsIgnoreCase("HasBsl")) {
+					if (sVal.equalsIgnoreCase("addon"))
+						bslInstallType = EBSLInstallType.ADDON;
+				} else if (sName.equalsIgnoreCase("ModVersion")) {
+					version = sVal;
+				} else if (sName.equalsIgnoreCase("Readme")) {
+					description = sVal.replaceAll("\\\\n", "<br>");
+				} else if (sName.equalsIgnoreCase("DependsOn")) {
+					String[] depsS = sVal.split(",");
+					for (String s : depsS) {
+						try {
+							int dep = Integer.parseInt(s);
+							dependencies.add(dep);
+						} catch (NumberFormatException e) {
+							System.err
+									.format("Mod_Info of %05d does contain a non-number dependency: '%s'\n",
+											packageNumber, s);
+						}
+					}
+				} else if (sName.equalsIgnoreCase("IncompatibleWith")) {
+					String[] confS = sVal.split(",");
+					for (String s : confS) {
+						try {
+							int conf = Integer.parseInt(s);
+							incompatibilities.add(conf);
+						} catch (NumberFormatException e) {
+							System.err
+									.format("Mod_Info of %05d does contain a non-number incompatibility: '%s'\n",
+											packageNumber, s);
+						}
+					}
+				} else if (sName.equalsIgnoreCase("UnlockLevel")) {
+					String[] levelsS = sVal.split(",");
+					for (String s : levelsS) {
+						try {
+							int level = Integer.parseInt(s);
+							unlockLevel.add(level);
+						} catch (NumberFormatException e) {
+							System.err
+									.format("Mod_Info of %05d does contain a non-number UnlockLevel value: '%s'\n",
+											packageNumber, s);
+						}
+					}
+				} else if (sName.equalsIgnoreCase("ExeName")) {
+					exeFile = new File(Paths.getEditionBasePath(), sVal);
+				} else if (sName.equalsIgnoreCase("WorkingDir")) {
+					workingDir = sVal;
+				} else if (sName.equalsIgnoreCase("IconName")) {
+					iconFile = new File(Paths.getEditionBasePath(), sVal);
+				}
+			}
+		} catch (FileNotFoundException e) {
+		} catch (IOException e) {
+			e.printStackTrace();
+		} finally {
+			if (isr != null) {
+				try {
+					isr.close();
+				} catch (IOException e) {
+					// TODO Auto-generated catch block
+					e.printStackTrace();
+				}
+			}
+		}
+	}
+
+	/**
+	 * @return the aeVersion
+	 */
+	public double getAeVersion() {
+		return aeVersion;
+	}
+
+	/**
+	 * @return the name
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * @return the creator
+	 */
+	public String getCreator() {
+		return creator;
+	}
+
+	/**
+	 * @return the bslInstallType
+	 */
+	public EBSLInstallType getBslInstallType() {
+		return bslInstallType;
+	}
+
+	/**
+	 * @return the version
+	 */
+	public String getVersion() {
+		return version;
+	}
+
+	/**
+	 * @return the description
+	 */
+	public String getDescription() {
+		return description;
+	}
+
+	/**
+	 * @return the incompatibilities
+	 */
+	public HashSet<Integer> getIncompatibilities() {
+		return incompatibilities;
+	}
+
+	/**
+	 * @return the dependencies
+	 */
+	public HashSet<Integer> getDependencies() {
+		return dependencies;
+	}
+
+	/**
+	 * @return the unlockLevel
+	 */
+	public HashSet<Integer> getUnlockLevel() {
+		return unlockLevel;
+	}
+
+	/**
+	 * @return the exeFile
+	 */
+	public File getExeFile() {
+		return exeFile;
+	}
+
+	/**
+	 * @return the iconFile
+	 */
+	public File getIconFile() {
+		return iconFile;
+	}
+
+	/**
+	 * @return the workingDir
+	 */
+	public String getWorkingDir() {
+		return workingDir;
+	}
+
+}
Index: AE/installer2/src/net/oni2/aeinstaller/backend/mods/Type.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/backend/mods/Type.java	(revision 635)
+++ AE/installer2/src/net/oni2/aeinstaller/backend/mods/Type.java	(revision 636)
@@ -9,8 +9,9 @@
  */
 public class Type {
-	String name;
-	TaxonomyTerm depotTerm;
+	private String name;
+	@SuppressWarnings("unused")
+	private TaxonomyTerm depotTerm;
 
-	HashSet<Mod> entries = new HashSet<Mod>();
+	private HashSet<Mod> entries = new HashSet<Mod>();
 
 	/**
Index: AE/installer2/src/net/oni2/aeinstaller/gui/HTMLLinkLabel.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/gui/HTMLLinkLabel.java	(revision 635)
+++ AE/installer2/src/net/oni2/aeinstaller/gui/HTMLLinkLabel.java	(revision 636)
@@ -23,6 +23,6 @@
 	private static final long serialVersionUID = 2416829757362043910L;
 
-	String prefix;
-	String suffix;
+	private String prefix;
+	private String suffix;
 
 	/**
Index: AE/installer2/src/net/oni2/aeinstaller/gui/modtable/ModTableFilter.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/gui/modtable/ModTableFilter.java	(revision 635)
+++ AE/installer2/src/net/oni2/aeinstaller/gui/modtable/ModTableFilter.java	(revision 636)
@@ -10,6 +10,6 @@
  */
 public class ModTableFilter extends RowFilter<ModTableModel, Integer> {
-	Type type = null;
-	int downloadState = 0;
+	private Type type = null;
+	private int downloadState = 0;
 
 	/**
Index: AE/installer2/src/net/oni2/aeinstaller/gui/settings/LaFComboModel.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/gui/settings/LaFComboModel.java	(revision 635)
+++ AE/installer2/src/net/oni2/aeinstaller/gui/settings/LaFComboModel.java	(revision 636)
@@ -18,7 +18,7 @@
 public class LaFComboModel implements ComboBoxModel {
 
-	Vector<LookAndFeelInfo> items;
-	HashSet<ListDataListener> listeners;
-	int selected;
+	private Vector<LookAndFeelInfo> items;
+	private HashSet<ListDataListener> listeners;
+	private int selected;
 
 	/**
