Index: AE/installer2/src/net/oni2/aeinstaller/AEInstaller2.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/AEInstaller2.java	(revision 634)
+++ AE/installer2/src/net/oni2/aeinstaller/AEInstaller2.java	(revision 635)
@@ -88,6 +88,4 @@
 		Settings.deserializeFromFile();
 		Settings.setDebug(debug);
-		DepotManager.getInstance().loadFromFile(
-				Settings.getDepotCacheFilename());
 
 		SwingJavaBuilder.getConfig().addResourceBundle(imagesBundle);
Index: AE/installer2/src/net/oni2/aeinstaller/backend/depot/DepotManager.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/backend/depot/DepotManager.java	(revision 634)
+++ AE/installer2/src/net/oni2/aeinstaller/backend/depot/DepotManager.java	(revision 635)
@@ -11,5 +11,4 @@
 import java.util.Enumeration;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.Vector;
 import java.util.zip.ZipEntry;
@@ -18,5 +17,4 @@
 import net.oni2.aeinstaller.backend.Paths;
 import net.oni2.aeinstaller.backend.Settings;
-import net.oni2.aeinstaller.backend.Settings.Platform;
 import net.oni2.aeinstaller.backend.depot.model.File;
 import net.oni2.aeinstaller.backend.depot.model.Node;
@@ -26,5 +24,4 @@
 import net.oni2.aeinstaller.backend.depot.model.TaxonomyTerm;
 import net.oni2.aeinstaller.backend.depot.model.TaxonomyVocabulary;
-import net.oni2.aeinstaller.backend.mods.ECompatiblePlatform;
 import net.oni2.aeinstaller.backend.network.FileDownloader;
 
@@ -44,5 +41,5 @@
  */
 public class DepotManager {
-	private static DepotManager instance = new DepotManager();
+	private static DepotManager instance = loadFromFile();
 
 	private HashMap<Integer, TaxonomyVocabulary> taxonomyVocabulary = new HashMap<Integer, TaxonomyVocabulary>();
@@ -72,11 +69,4 @@
 	 */
 	public void updateInformation(boolean forceRefreshAll) {
-		taxonomyTerms.clear();
-		taxonomyVocabulary.clear();
-
-		nodes = new HashMap<Integer, Node>();
-		nodesByType = new HashMap<String, HashMap<Integer, Node>>();
-		files = new HashMap<Integer, File>();
-
 		try {
 			java.io.File zipName = new java.io.File(Paths.getDownloadPath(),
@@ -106,12 +96,16 @@
 						}
 
-						if (ze.getName().toLowerCase().contains("vocabulary"))
+						if (ze.getName().toLowerCase().contains("vocabulary")) {
 							initVocabulary(new JSONArray(json.toString()));
-						if (ze.getName().toLowerCase().contains("terms"))
+						}
+						if (ze.getName().toLowerCase().contains("terms")) {
 							initTerms(new JSONArray(json.toString()));
-						if (ze.getName().toLowerCase().contains("nodes"))
+						}
+						if (ze.getName().toLowerCase().contains("nodes")) {
 							initNodes(new JSONArray(json.toString()));
-						if (ze.getName().toLowerCase().contains("files"))
+						}
+						if (ze.getName().toLowerCase().contains("files")) {
 							initFiles(new JSONArray(json.toString()));
+						}
 					}
 				}
@@ -128,4 +122,6 @@
 			vocabId_instmethod = getVocabulary(
 					DepotConfig.getVocabularyName_InstallType()).getVid();
+
+			saveToFile();
 		} catch (JSONException e) {
 			e.printStackTrace();
@@ -138,9 +134,8 @@
 
 	private void initFiles(JSONArray ja) throws JSONException {
+		files = new HashMap<Integer, File>();
 		JSONObject jo;
-
 		for (int i = 0; i < ja.length(); i++) {
 			jo = ja.getJSONObject(i);
-
 			int fid = jo.getInt("fid");
 
@@ -151,6 +146,7 @@
 
 	private void initNodes(JSONArray ja) throws JSONException {
+		nodes = new HashMap<Integer, Node>();
+		nodesByType = new HashMap<String, HashMap<Integer, Node>>();
 		JSONObject jo;
-
 		for (int i = 0; i < ja.length(); i++) {
 			jo = ja.getJSONObject(i);
@@ -173,6 +169,6 @@
 
 	private void initTerms(JSONArray ja) throws JSONException {
+		taxonomyTerms.clear();
 		JSONObject jo;
-
 		for (int i = 0; i < ja.length(); i++) {
 			jo = ja.getJSONObject(i);
@@ -183,6 +179,6 @@
 
 	private void initVocabulary(JSONArray ja) throws JSONException {
+		taxonomyVocabulary.clear();
 		JSONObject jo;
-
 		for (int i = 0; i < ja.length(); i++) {
 			jo = ja.getJSONObject(i);
@@ -218,27 +214,6 @@
 		return false;
 	}
-
-	/**
-	 * @return All TaxVocabs
-	 */
-	public Vector<TaxonomyVocabulary> getVocabulary() {
-		return new Vector<TaxonomyVocabulary>(taxonomyVocabulary.values());
-	}
-
-	/**
-	 * @param id
-	 *            Get taxonomy vocabulary by given ID
-	 * @return TaxVocab
-	 */
-	public TaxonomyVocabulary getVocabulary(int id) {
-		return taxonomyVocabulary.get(id);
-	}
-
-	/**
-	 * @param name
-	 *            Get taxonomy vocabulary by given name
-	 * @return TaxVocab
-	 */
-	public TaxonomyVocabulary getVocabulary(String name) {
+	
+	private TaxonomyVocabulary getVocabulary(String name) {
 		for (TaxonomyVocabulary v : taxonomyVocabulary.values()) {
 			if (v.getName().equalsIgnoreCase(name))
@@ -253,5 +228,5 @@
 	 * @return TaxTerms
 	 */
-	public Vector<TaxonomyTerm> getTaxonomyTermsByVocabulary(int vocabId) {
+	private Vector<TaxonomyTerm> getTaxonomyTermsByVocabulary(int vocabId) {
 		Vector<TaxonomyTerm> res = new Vector<TaxonomyTerm>();
 		for (TaxonomyTerm t : taxonomyTerms.values()) {
@@ -263,4 +238,11 @@
 
 	/**
+	 * @return All defined types
+	 */
+	public Vector<TaxonomyTerm> getTypes() {
+		return getTaxonomyTermsByVocabulary(getVocabIdType());
+	}
+
+	/**
 	 * @param id
 	 *            Get taxonomy term by given ID
@@ -269,17 +251,4 @@
 	public TaxonomyTerm getTaxonomyTerm(int id) {
 		return taxonomyTerms.get(id);
-	}
-
-	/**
-	 * @param name
-	 *            Get taxonomy term by given name
-	 * @return TaxTerm
-	 */
-	public TaxonomyTerm getTaxonomyTerm(String name) {
-		for (TaxonomyTerm t : taxonomyTerms.values()) {
-			if (t.getName().equalsIgnoreCase(name))
-				return t;
-		}
-		return null;
 	}
 
@@ -293,34 +262,4 @@
 	public Vector<Node> getNodesByType(String nodeType) {
 		return new Vector<Node>(nodesByType.get(nodeType).values());
-	}
-
-	/**
-	 * Get a node by node id
-	 * 
-	 * @param id
-	 *            Node id
-	 * @return Node
-	 */
-	public Node getNodeById(int id) {
-		return nodes.get(id);
-	}
-
-	/**
-	 * Get a Mod-Node by a given package number
-	 * 
-	 * @param packageNumber
-	 *            Package number to find
-	 * @return The Mod-Node or null
-	 */
-	public NodeMod getNodeByPackageNumber(int packageNumber) {
-		Vector<Node> files = getNodesByType(DepotConfig.getNodeType_Mod());
-		for (Node n : files) {
-			if (n instanceof NodeMod) {
-				NodeMod nm = (NodeMod) n;
-				if (nm.getPackageNumber() == packageNumber)
-					return nm;
-			}
-		}
-		return null;
 	}
 
@@ -345,50 +284,4 @@
 
 	/**
-	 * @param node
-	 *            Node to check validity on
-	 * @param platform
-	 *            Platform to check against
-	 * @return True if valid on platform
-	 */
-	public boolean isModValidOnPlatform(NodeMod node, Settings.Platform platform) {
-		ECompatiblePlatform plat = node.getPlatform();
-		switch (plat) {
-			case BOTH:
-				return true;
-			case WIN:
-				return (platform == Platform.WIN)
-						|| (platform == Platform.LINUX);
-			case MACOS:
-				return (platform == Platform.MACOS);
-		}
-		return false;
-	}
-
-	/**
-	 * Checks if the given mod-node is of the given mod-type(s)
-	 * 
-	 * @param node
-	 *            Node to check
-	 * @param type
-	 *            Type(s) to check
-	 * @param or
-	 *            If false check if all given types are included in node. If
-	 *            true checks if either of the given types is included.
-	 * @return True if of given type(s)
-	 */
-	public boolean isModOfType(NodeMod node, HashSet<Integer> type, boolean or) {
-		boolean matching = !or;
-		HashSet<TaxonomyTerm> terms = node.getTypes();
-
-		for (int t : type) {
-			if (or)
-				matching |= terms.contains(t);
-			else
-				matching &= terms.contains(t);
-		}
-		return matching;
-	}
-
-	/**
 	 * @return VocabId of Platform vocabulary
 	 */
@@ -432,5 +325,5 @@
 	}
 
-	private XStream getXStream() {
+	private static XStream getXStream() {
 		XStream xs = new XStream(new StaxDriver());
 		xs.alias("Depot", DepotManager.class);
@@ -447,11 +340,9 @@
 	/**
 	 * Save Depot cache instance to file
-	 * 
-	 * @param f
-	 *            File to write to
-	 */
-	public void saveToFile(java.io.File f) {
+	 */
+	private void saveToFile() {
 		try {
-			FileOutputStream fos = new FileOutputStream(f);
+			FileOutputStream fos = new FileOutputStream(
+					Settings.getDepotCacheFilename());
 			XStream xs = getXStream();
 			xs.toXML(this, fos);
@@ -464,21 +355,17 @@
 	}
 
-	/**
-	 * Load Depot cache instance from file
-	 * 
-	 * @param f
-	 *            File to read from
-	 */
-	public void loadFromFile(java.io.File f) {
+	private static DepotManager loadFromFile() {
 		try {
-			FileInputStream fis = new FileInputStream(f);
+			FileInputStream fis = new FileInputStream(
+					Settings.getDepotCacheFilename());
 			XStream xs = getXStream();
 			Object obj = xs.fromXML(fis);
+			fis.close();
 			if (obj instanceof DepotManager)
-				instance = (DepotManager) obj;
-			fis.close();
+				return (DepotManager) obj;
 		} catch (FileNotFoundException e) {
 		} catch (IOException e) {
 		}
+		return new DepotManager();
 	}
 }
Index: AE/installer2/src/net/oni2/aeinstaller/backend/depot/model/NodeMod.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/backend/depot/model/NodeMod.java	(revision 634)
+++ AE/installer2/src/net/oni2/aeinstaller/backend/depot/model/NodeMod.java	(revision 635)
@@ -18,5 +18,5 @@
 public class NodeMod extends Node {
 	private Vector<NodeField_Upload> uploads = new Vector<NodeField_Upload>();
-	private HashMap<Integer, HashSet<Integer>> taxonomyTerms = new HashMap<Integer, HashSet<Integer>>();
+	private HashMap<Integer, HashSet<TaxonomyTerm>> taxonomyTerms = new HashMap<Integer, HashSet<TaxonomyTerm>>();
 	private HashMap<String, String> fields = new HashMap<String, String>();
 
@@ -58,9 +58,10 @@
 				int vid = Integer
 						.parseInt(keyS.substring(keyS.lastIndexOf("_") + 1));
-				HashSet<Integer> values = new HashSet<Integer>();
+				HashSet<TaxonomyTerm> values = new HashSet<TaxonomyTerm>();
 				if (val instanceof JSONObject) {
 					JSONArray ja = ((JSONObject) val).getJSONArray("und");
 					for (int i = 0; i < ja.length(); i++) {
-						values.add(ja.getJSONObject(i).getInt("tid"));
+						values.add(DepotManager.getInstance().getTaxonomyTerm(
+								ja.getJSONObject(i).getInt("tid")));
 					}
 				}
@@ -81,10 +82,5 @@
 	 */
 	public HashSet<TaxonomyTerm> getTypes() {
-		HashSet<TaxonomyTerm> tt = new HashSet<TaxonomyTerm>();
-		for (int t : taxonomyTerms.get(DepotManager.getInstance()
-				.getVocabIdType())) {
-			tt.add(DepotManager.getInstance().getTaxonomyTerm(t));
-		}
-		return tt;
+		return taxonomyTerms.get(DepotManager.getInstance().getVocabIdType());
 	}
 
@@ -93,8 +89,7 @@
 	 */
 	public TaxonomyTerm getInstallMethod() {
-		return DepotManager.getInstance().getTaxonomyTerm(
-				taxonomyTerms
-						.get(DepotManager.getInstance().getVocabIdInstMethod())
-						.iterator().next());
+		return taxonomyTerms
+				.get(DepotManager.getInstance().getVocabIdInstMethod())
+				.iterator().next();
 	}
 
@@ -103,8 +98,7 @@
 	 */
 	public ECompatiblePlatform getPlatform() {
-		TaxonomyTerm term = DepotManager.getInstance().getTaxonomyTerm(
-				taxonomyTerms
-						.get(DepotManager.getInstance().getVocabIdPlatform())
-						.iterator().next());
+		TaxonomyTerm term = taxonomyTerms
+				.get(DepotManager.getInstance().getVocabIdPlatform())
+				.iterator().next();
 
 		String validPlatform = term.getName();
@@ -155,7 +149,7 @@
 		HashSet<TaxonomyTerm> types = getTypes();
 		for (String s : DepotConfig.getTaxonomyName_ModType_Tool()) {
-			TaxonomyTerm tt = DepotManager.getInstance().getTaxonomyTerm(s);
-			if (types.contains(tt))
-				return true;
+			for (TaxonomyTerm tt : types)
+				if (tt.getName().equalsIgnoreCase(s))
+					return true;
 		}
 		return false;
Index: AE/installer2/src/net/oni2/aeinstaller/backend/mods/ModManager.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/backend/mods/ModManager.java	(revision 634)
+++ AE/installer2/src/net/oni2/aeinstaller/backend/mods/ModManager.java	(revision 635)
@@ -93,7 +93,5 @@
 		types.put("-Local-", localType);
 
-		for (TaxonomyTerm tt : DepotManager.getInstance()
-				.getTaxonomyTermsByVocabulary(
-						DepotManager.getInstance().getVocabIdType())) {
+		for (TaxonomyTerm tt : DepotManager.getInstance().getTypes()) {
 			types.put(tt.getName(), new Type(tt.getName(), tt));
 		}
Index: AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.java	(revision 634)
+++ AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.java	(revision 635)
@@ -159,5 +159,4 @@
 	private void saveLocalData() {
 		Settings.getInstance().serializeToFile();
-		DepotManager.getInstance().saveToFile(Settings.getDepotCacheFilename());
 	}
 
