Index: AE/installer2/doc/nodes-with-multiple-files.txt
===================================================================
--- AE/installer2/doc/nodes-with-multiple-files.txt	(revision 592)
+++ AE/installer2/doc/nodes-with-multiple-files.txt	(revision 592)
@@ -0,0 +1,40 @@
+Node 210, Files 2, Platform Both, Type Tool, InstMeth (none)
+Node 203, Files 2, Platform Windows, Type Tool, InstMeth (none)
+Node 184, Files 2, Platform Both, Type Tool, InstMeth (none)
+Node 172, Files 2, Platform Windows, Type Tool, InstMeth File swap
+Node 129, Files 2, Platform Both, Type Tool, InstMeth (none)
+Node 118, Files 2, Platform Windows, Type Tool, InstMeth (none)
+Node 72, Files 3, Platform Windows, Type Tool, InstMeth (none)
+Node 38, Files 5, Platform Both, Type Tool, InstMeth (none)
+
+Node 144, Files 3, Platform Both, Type Script, InstMeth (none)
+Node 114, Files 2, Platform Both, Type Script, InstMeth File swap
+Node 94, Files 3, Platform Both, Type Script, InstMeth File swap
+
+Node 222, Files 3, Platform Both, Type Character, InstMeth Package
+Node 214, Files 2, Platform Both, Type Texture, InstMeth Package
+Node 208, Files 2, Platform Both, Type Level, InstMeth Package
+Node 198, Files 1, Platform Both, Type Level, InstMeth Package
+Node 194, Files 1, Platform Both, Type Level, InstMeth Package
+Node 193, Files 2, Platform Both, Type Character, InstMeth Package
+Node 191, Files 2, Platform Both, Type Character, InstMeth Package
+Node 183, Files 2, Platform Windows, Type Character, InstMeth Package
+Node 181, Files 3, Platform Both, Type Level, InstMeth Package
+Node 180, Files 2, Platform Windows, Type Character, InstMeth Package
+Node 177, Files 2, Platform Both, Type Other, InstMeth Package
+Node 147, Files 1, Platform Windows, Type Character, InstMeth Package
+Node 134, Files 2, Platform Both, Type Character, InstMeth Package
+Node 123, Files 1, Platform Both, Type Level, InstMeth Package
+Node 121, Files 2, Platform Both, Type Character, InstMeth Package
+Node 108, Files 1, Platform Both, Type Character, InstMeth Package
+Node 101, Files 3, Platform Windows, Type Character, InstMeth Package
+Node 82, Files 1, Platform Both, Type Texture, InstMeth Package
+Node 63, Files 1, Platform Both, Type Script, InstMeth Package
+
+
+if you filter out those which only have multiple files cause of win+mac and old versions you get the following *packages* with multiple files:
+Node 214, Files 2, Platform Both, Type Texture, InstMeth Package - Split into two packages, lighter = created by VR/Samer #+1
+Node 193, Files 2, Platform Both, Type Character, InstMeth Package - Split into two, shapeshifted = #+1
+Node 181, Files 3, Platform Both, Type Level, InstMeth Package - split, dependency, delete noblue?
+Node 134, Files 2, Platform Both, Type Character, InstMeth Package - Split into two packages, #+1
+Node 101, Files 3, Platform Windows, Type Character, InstMeth Package - merge + separate package #+1
Index: AE/installer2/src/Images.properties
===================================================================
--- AE/installer2/src/Images.properties	(revision 591)
+++ 	(revision )
@@ -1,22 +1,0 @@
-img.connect=/net/oni2/aeinstaller/images/tango/network-idle.png
-img.disconnect=/net/oni2/aeinstaller/images/tango/network-offline.png
-img.exit=/net/oni2/aeinstaller/images/tango/system-log-out.png
-img.manageExams=/net/oni2/aeinstaller/images/tango/document-open.png
-img.manageMembers=/net/oni2/aeinstaller/images/tango/contact-new.png
-img.updatesvn=/net/oni2/aeinstaller/images/tango/view-refresh.png
-img.settings=/net/oni2/aeinstaller/images/tango/preferences-system.png
-img.print=/net/oni2/aeinstaller/images/tango/document-print.png
-img.edit=/net/oni2/aeinstaller/images/tango/text-editor.png
-img.delete=/net/oni2/aeinstaller/images/tango/list-remove.png
-img.add=/net/oni2/aeinstaller/images/tango/list-add.png
-img.refresh=/net/oni2/aeinstaller/images/tango/go-jump.png
-img.openFile=/net/oni2/aeinstaller/images/tango/document-open.png
-img.sale=/net/oni2/aeinstaller/images/tango/accessories-calculator.png
-img.orders=/net/oni2/aeinstaller/images/tango/bookmark-new.png
-
-img.pause=/net/oni2/aeinstaller/images/open_icon_library/media-playback-pause-7.png
-img.stop=/net/oni2/aeinstaller/images/open_icon_library/media-playback-stop-7.png
-img.selectfolder=/net/oni2/aeinstaller/images/open_icon_library/folder-explore.png
-img.downloadFolder=/net/oni2/aeinstaller/images/open_icon_library/folder-games.png
-
-img.kdt=/net/oni2/aeinstaller/images/kdt.png
Index: AE/installer2/src/net/oni2/aeinstaller/AEInstaller.properties
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/AEInstaller.properties	(revision 592)
+++ AE/installer2/src/net/oni2/aeinstaller/AEInstaller.properties	(revision 592)
@@ -0,0 +1,2 @@
+invalidPath.title=Wrong directory
+invalidPath.text=This program has to be placed in the subfolder Edition/AEInstaller inside a vanilla Oni folder.\nThe full path of the .jar-file has to be:\nOniFolder/Edition/AEInstaller/AEInstaller2.jar
Index: AE/installer2/src/net/oni2/aeinstaller/AEInstaller2.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/AEInstaller2.java	(revision 591)
+++ AE/installer2/src/net/oni2/aeinstaller/AEInstaller2.java	(revision 592)
@@ -4,6 +4,8 @@
 import java.io.FileNotFoundException;
 import java.io.PrintStream;
+import java.util.ResourceBundle;
 
 import javax.swing.JFrame;
+import javax.swing.JOptionPane;
 import javax.swing.JToolBar;
 import javax.swing.SwingUtilities;
@@ -52,5 +54,13 @@
 				new File(Settings.getDepotCacheFilename()));
 
-		SwingJavaBuilder.getConfig().addResourceBundle("Images");
+		ResourceBundle imagesBundle = ResourceBundle
+				.getBundle(AEInstaller2.class.getPackage().getName()
+						+ ".Images");
+		ResourceBundle basicBundle = ResourceBundle
+				.getBundle(AEInstaller2.class.getPackage().getName()
+						+ ".AEInstaller");
+
+		SwingJavaBuilder.getConfig().addResourceBundle(imagesBundle);
+		SwingJavaBuilder.getConfig().addResourceBundle(basicBundle);
 		SwingJavaBuilder.getConfig().setMarkInvalidResourceBundleKeys(true);
 		SwingJavaBuilder.getConfig().addType("JToolBarSeparator",
@@ -91,4 +101,14 @@
 				+ StuffToRefactorLater.verifyRunningDirectory());
 
+		if (!StuffToRefactorLater.verifyRunningDirectory()) {
+			JOptionPane.showMessageDialog(null,
+					basicBundle.getString("invalidPath.text"),
+					basicBundle.getString("invalidPath.title"),
+					JOptionPane.ERROR_MESSAGE);
+			if (!Settings.getDebug()) {
+				return;
+			}
+		}
+
 		SwingUtilities.invokeLater(new Runnable() {
 
Index: AE/installer2/src/net/oni2/aeinstaller/Images.properties
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/Images.properties	(revision 592)
+++ AE/installer2/src/net/oni2/aeinstaller/Images.properties	(revision 592)
@@ -0,0 +1,22 @@
+img.connect=/net/oni2/aeinstaller/images/tango/network-idle.png
+img.disconnect=/net/oni2/aeinstaller/images/tango/network-offline.png
+img.exit=/net/oni2/aeinstaller/images/tango/system-log-out.png
+img.manageExams=/net/oni2/aeinstaller/images/tango/document-open.png
+img.manageMembers=/net/oni2/aeinstaller/images/tango/contact-new.png
+img.updatesvn=/net/oni2/aeinstaller/images/tango/view-refresh.png
+img.settings=/net/oni2/aeinstaller/images/tango/preferences-system.png
+img.print=/net/oni2/aeinstaller/images/tango/document-print.png
+img.edit=/net/oni2/aeinstaller/images/tango/text-editor.png
+img.delete=/net/oni2/aeinstaller/images/tango/list-remove.png
+img.add=/net/oni2/aeinstaller/images/tango/list-add.png
+img.refresh=/net/oni2/aeinstaller/images/tango/go-jump.png
+img.openFile=/net/oni2/aeinstaller/images/tango/document-open.png
+img.sale=/net/oni2/aeinstaller/images/tango/accessories-calculator.png
+img.orders=/net/oni2/aeinstaller/images/tango/bookmark-new.png
+
+img.pause=/net/oni2/aeinstaller/images/open_icon_library/media-playback-pause-7.png
+img.stop=/net/oni2/aeinstaller/images/open_icon_library/media-playback-stop-7.png
+img.selectfolder=/net/oni2/aeinstaller/images/open_icon_library/folder-explore.png
+img.downloadFolder=/net/oni2/aeinstaller/images/open_icon_library/folder-games.png
+
+img.kdt=/net/oni2/aeinstaller/images/kdt.png
Index: AE/installer2/src/net/oni2/aeinstaller/backend/depot/DepotConfig.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/backend/depot/DepotConfig.java	(revision 591)
+++ AE/installer2/src/net/oni2/aeinstaller/backend/depot/DepotConfig.java	(revision 592)
@@ -5,38 +5,59 @@
  */
 public class DepotConfig {
-	/**
-	 * Type-value of nodes which contain Mods
-	 */
-	public static final String NODETYPE_MOD = "mod";
 
 	/**
-	 * Vocabulary name for platform field
+	 * @return Type-value of nodes which contain Mods
 	 */
-	public static final String PLATFORM_VOCAB = "Platform";
-	/**
-	 * Vocabulary name for installtype field
-	 */
-	public static final String INSTALLTYPE_VOCAB = "Install method";
-	/**
-	 * Vocabulary name for modtype field
-	 */
-	public static final String MODTYPE_VOCAB = "Mod type";
-	
-	/**
-	 * Taxonomy term name for platform value Win
-	 */
-	public static final String PLATFORM_WIN = "Windows";
-	/**
-	 * Taxonomy term name for platform value Mac
-	 */
-	public static final String PLATFORM_MAC = "Mac OS";
-	/**
-	 * Taxonomy term name for platform value Both
-	 */
-	public static final String PLATFORM_BOTH = "Both";
+	public static String getNodeType_Mod() {
+		return "mod";
+	}
 
 	/**
-	 * Taxonomy term name for installtype Package
+	 * @return Vocabulary name for platform field
 	 */
-	public static final String INSTALLTYPE_PACKAGE = "Package";
+	public static String getVocabularyName_Platform() {
+		return "Platform";
+	}
+
+	/**
+	 * @return Vocabulary name for installtype field
+	 */
+	public static String getVocabularyName_InstallType() {
+		return "Install method";
+	}
+
+	/**
+	 * @return Vocabulary name for modtype field
+	 */
+	public static String getVocabularyName_ModType() {
+		return "Mod type";
+	}
+
+	/**
+	 * @return Taxonomy term name for platform value Win
+	 */
+	public static String getTaxonomyName_Platform_Win() {
+		return "Windows";
+	}
+
+	/**
+	 * @return Taxonomy term name for platform value Mac
+	 */
+	public static String getTaxonomyName_Platform_Mac() {
+		return "Mac OS";
+	}
+
+	/**
+	 * @return Taxonomy term name for platform value Both
+	 */
+	public static String getTaxonomyName_Platform_Both() {
+		return "Both";
+	}
+
+	/**
+	 * @return Taxonomy term name for installtype Package
+	 */
+	public static String getTaxonomyName_InstallType_Package() {
+		return "Package";
+	}
 }
Index: AE/installer2/src/net/oni2/aeinstaller/backend/depot/DepotManager.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/backend/depot/DepotManager.java	(revision 591)
+++ AE/installer2/src/net/oni2/aeinstaller/backend/depot/DepotManager.java	(revision 592)
@@ -174,5 +174,5 @@
 
 				Node n = null;
-				if (type.equalsIgnoreCase(DepotConfig.NODETYPE_MOD))
+				if (type.equalsIgnoreCase(DepotConfig.getNodeType_Mod()))
 					n = new NodeMod(jo);
 				else
@@ -196,9 +196,10 @@
 			}
 
-			vocabId_type = getVocabulary(DepotConfig.MODTYPE_VOCAB).getVid();
-			vocabId_platform = getVocabulary(DepotConfig.PLATFORM_VOCAB)
-					.getVid();
-			vocabId_instmethod = getVocabulary(DepotConfig.INSTALLTYPE_VOCAB)
-					.getVid();
+			vocabId_type = getVocabulary(
+					DepotConfig.getVocabularyName_ModType()).getVid();
+			vocabId_platform = getVocabulary(
+					DepotConfig.getVocabularyName_Platform()).getVid();
+			vocabId_instmethod = getVocabulary(
+					DepotConfig.getVocabularyName_InstallType()).getVid();
 		} catch (JSONException e) {
 			e.printStackTrace();
@@ -289,9 +290,12 @@
 	 */
 	public Vector<NodeMod> getModPackageNodes() {
-		int packageterm_id = getTaxonomyTerm(DepotConfig.INSTALLTYPE_PACKAGE)
-				.getTid();
-
-		Vector<Node> files = getNodesByType(DepotConfig.NODETYPE_MOD);
 		Vector<NodeMod> result = new Vector<NodeMod>();
+		TaxonomyTerm tt = getTaxonomyTerm(DepotConfig.getTaxonomyName_InstallType_Package());
+		if (tt == null)
+			return result;
+
+		int packageterm_id = tt.getTid();
+
+		Vector<Node> files = getNodesByType(DepotConfig.getNodeType_Mod());
 		for (Node n : files) {
 			if (n instanceof NodeMod) {
@@ -316,11 +320,11 @@
 				.next();
 		String validPlatform = getTaxonomyTerm(termId).getName();
-		if (validPlatform.equalsIgnoreCase(DepotConfig.PLATFORM_BOTH))
+		if (validPlatform.equalsIgnoreCase(DepotConfig.getTaxonomyName_Platform_Both()))
 			return true;
 
 		if ((platform == Platform.WIN) || (platform == Platform.LINUX))
-			return validPlatform.equalsIgnoreCase(DepotConfig.PLATFORM_WIN);
+			return validPlatform.equalsIgnoreCase(DepotConfig.getTaxonomyName_Platform_Win());
 		else if (platform == Platform.MACOS)
-			return validPlatform.equalsIgnoreCase(DepotConfig.PLATFORM_MAC);
+			return validPlatform.equalsIgnoreCase(DepotConfig.getTaxonomyName_Platform_Mac());
 		else
 			return false;
Index: AE/installer2/src/net/oni2/aeinstaller/backend/depot/model/NodeMod.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/backend/depot/model/NodeMod.java	(revision 591)
+++ AE/installer2/src/net/oni2/aeinstaller/backend/depot/model/NodeMod.java	(revision 592)
@@ -32,5 +32,7 @@
 				NodeField_Upload up = new NodeField_Upload(
 						jUploads.getJSONObject(i));
-				uploads.add(up);
+				if (up.getDisplay() != 0) {
+					uploads.add(up);
+				}
 			}
 		}
Index: AE/installer2/src/net/oni2/aeinstaller/gui/HTMLLinkLabel.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/gui/HTMLLinkLabel.java	(revision 592)
+++ AE/installer2/src/net/oni2/aeinstaller/gui/HTMLLinkLabel.java	(revision 592)
@@ -0,0 +1,79 @@
+package net.oni2.aeinstaller.gui;
+
+import java.awt.Color;
+import java.awt.Desktop;
+import java.awt.Font;
+import java.io.IOException;
+import java.net.URISyntaxException;
+
+import javax.swing.JEditorPane;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.UIDefaults;
+import javax.swing.event.HyperlinkEvent;
+import javax.swing.event.HyperlinkListener;
+import javax.swing.text.DefaultCaret;
+
+import net.oni2.aeinstaller.backend.ColorCopy;
+
+/**
+ * @author Christian Illy
+ */
+public class HTMLLinkLabel extends JEditorPane {
+	private static final long serialVersionUID = 2416829757362043910L;
+
+	String prefix;
+	String suffix;
+
+	/**
+	 * Create a new HTMLLinkLabel
+	 */
+	public HTMLLinkLabel() {
+		super();
+
+		((DefaultCaret) this.getCaret()).setUpdatePolicy(DefaultCaret.NEVER_UPDATE);
+
+		setContentType("text/html");
+
+		JLabel label = new JLabel();
+		Font font = label.getFont();
+
+		StringBuffer style = new StringBuffer("font-family:" + font.getFamily()
+				+ ";");
+		style.append("font-weight:" + (font.isBold() ? "bold" : "normal") + ";");
+		style.append("font-size:" + font.getSize() + "pt;");
+
+		prefix = "<html><body style=\"" + style + "\">";
+		suffix = "</body></html>";
+
+		addHyperlinkListener(new HyperlinkListener() {
+
+			@Override
+			public void hyperlinkUpdate(HyperlinkEvent e) {
+				if (e.getEventType().equals(HyperlinkEvent.EventType.ACTIVATED))
+					try {
+						Desktop.getDesktop().browse(e.getURL().toURI());
+					} catch (IOException e1) {
+						// TODO Auto-generated catch block
+						e1.printStackTrace();
+					} catch (URISyntaxException e1) {
+						// TODO Auto-generated catch block
+						e1.printStackTrace();
+					}
+			}
+		});
+		setEditable(false);
+
+		Color bgColor = ColorCopy.copyColor(new JFrame().getBackground());
+		UIDefaults defaults = new UIDefaults();
+		defaults.put("EditorPane[Enabled].backgroundPainter", bgColor);
+		putClientProperty("Nimbus.Overrides", defaults);
+		putClientProperty("Nimbus.Overrides.InheritDefaults", true);
+		setBackground(bgColor);
+	}
+
+	@Override
+	public void setText(String t) {
+		super.setText(prefix + t + suffix);
+	}
+}
Index: AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.java	(revision 591)
+++ AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.java	(revision 592)
@@ -11,9 +11,9 @@
 import javax.swing.JComboBox;
 import javax.swing.JFrame;
-import javax.swing.JOptionPane;
+import javax.swing.JLabel;
+import javax.swing.JSplitPane;
 import javax.swing.JTable;
 import javax.swing.ListSelectionModel;
 import javax.swing.RowSorter;
-import javax.swing.RowSorter.SortKey;
 import javax.swing.SortOrder;
 import javax.swing.SwingUtilities;
@@ -23,5 +23,4 @@
 
 import net.oni2.aeinstaller.backend.Settings;
-import net.oni2.aeinstaller.backend.StuffToRefactorLater;
 import net.oni2.aeinstaller.backend.depot.DepotCacheUpdateProgressListener;
 import net.oni2.aeinstaller.backend.depot.DepotConfig;
@@ -29,4 +28,5 @@
 import net.oni2.aeinstaller.backend.depot.model.NodeMod;
 import net.oni2.aeinstaller.backend.depot.model.TaxonomyTerm;
+import net.oni2.aeinstaller.backend.depot.model.TaxonomyVocabulary;
 import net.oni2.aeinstaller.gui.modtable.ModTableFilter;
 import net.oni2.aeinstaller.gui.modtable.ModTableModel;
@@ -41,5 +41,5 @@
  * @author Christian Illy
  */
-public class MainWin extends JFrame implements ListSelectionListener {
+public class MainWin extends JFrame {
 	private static final long serialVersionUID = -4027395051382659650L;
 
@@ -48,4 +48,6 @@
 	@SuppressWarnings("unused")
 	private BuildResult result = SwingJavaBuilder.build(this, bundle);
+
+	private JSplitPane contents;
 
 	private JComboBox cmbModTypes;
@@ -53,4 +55,10 @@
 	private ModTableModel model;
 	private TableRowSorter<ModTableModel> sorter;
+
+	private JLabel lblSubmitterVal;
+	private JLabel lblCreatorVal;
+	private JLabel lblFilesVal;
+	private JLabel lblIdVal;
+	private HTMLLinkLabel lblDescriptionVal;
 
 	/**
@@ -61,4 +69,5 @@
 				+ bundle.getString("version"));
 
+		contents.setDividerLocation(400);
 		initTable();
 		initModTypeBox();
@@ -66,6 +75,12 @@
 
 	private void initModTypeBox() {
-		int vid = DepotManager.getInstance()
-				.getVocabulary(DepotConfig.MODTYPE_VOCAB).getVid();
+		cmbModTypes.removeAllItems();
+
+		TaxonomyVocabulary tv = DepotManager.getInstance().getVocabulary(
+				DepotConfig.getVocabularyName_ModType());
+		if (tv == null)
+			return;
+
+		int vid = tv.getVid();
 		TreeMap<String, TaxonomyTerm> terms = new TreeMap<String, TaxonomyTerm>();
 		terms.put(" ", new TaxonomyTerm(-1, vid, "-All-"));
@@ -82,5 +97,21 @@
 	private void initTable() {
 		tblMods.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
-		tblMods.getSelectionModel().addListSelectionListener(this);
+		tblMods.getSelectionModel().addListSelectionListener(
+				new ListSelectionListener() {
+
+					@Override
+					public void valueChanged(ListSelectionEvent e) {
+						int viewRow = tblMods.getSelectedRow();
+						if (viewRow < 0) {
+							modSelection(null);
+						} else {
+							int modelRow = tblMods
+									.convertRowIndexToModel(viewRow);
+							NodeMod mod = (NodeMod) model.getValueAt(modelRow,
+									-1);
+							modSelection(mod);
+						}
+					}
+				});
 
 		model = new ModTableModel();
@@ -127,4 +158,5 @@
 	}
 
+	@SuppressWarnings("unused")
 	private void exit() {
 		setVisible(false);
@@ -137,19 +169,4 @@
 		DepotManager.getInstance().saveToFile(
 				new File(Settings.getDepotCacheFilename()));
-	}
-
-	@SuppressWarnings("unused")
-	private boolean validatePath() {
-		if (!StuffToRefactorLater.verifyRunningDirectory()) {
-			JOptionPane.showMessageDialog(this,
-					bundle.getString("invalidPath.text"),
-					bundle.getString("invalidPath.title"),
-					JOptionPane.ERROR_MESSAGE);
-			if (!Settings.getDebug()) {
-				exit();
-				return false;
-			}
-		}
-		return true;
 	}
 
@@ -169,4 +186,6 @@
 					});
 			model.reloadData();
+			initModTypeBox();
+			tblMods.setVisible(true);
 			DepotManager.getInstance().printStats();
 		} catch (Exception e) {
@@ -199,47 +218,28 @@
 	}
 
+	private void modSelection(NodeMod n) {
+		lblSubmitterVal.setText("");
+		lblCreatorVal.setText("");
+		lblIdVal.setText("");
+		lblFilesVal.setText("");
+		lblDescriptionVal.setText("");
+		if (n != null) {
+			lblSubmitterVal.setText(n.getName());
+			lblCreatorVal.setText(n.getFields().get("creator"));
+			lblIdVal.setText(Integer.toString(n.getNid()));
+			lblFilesVal.setText(Integer.toString(n.getUploads().size()));
+			if (n.getBody() != null)
+				lblDescriptionVal.setText(n.getBody().getSafe_value());
+		}
+		// TODO
+	}
+
 	@SuppressWarnings("unused")
 	private void modTypeSelection() {
 		TaxonomyTerm t = (TaxonomyTerm) cmbModTypes.getSelectedItem();
-		sorter.setRowFilter(new ModTableFilter(t.getTid()));
-	}
-
-	@SuppressWarnings("unused")
-	private void sortAlpha() {
-		SortOrder order = SortOrder.ASCENDING;
-		for (SortKey sk : sorter.getSortKeys()) {
-			if (sk.getColumn() == 0) {
-				if (sk.getSortOrder() == SortOrder.ASCENDING)
-					order = SortOrder.DESCENDING;
-			}
-		}
-		List<RowSorter.SortKey> sortKeys = new ArrayList<RowSorter.SortKey>();
-		sortKeys.add(new RowSorter.SortKey(0, order));
-		sorter.setSortKeys(sortKeys);
-	}
-
-	@SuppressWarnings("unused")
-	private void sortPackageNumber() {
-		SortOrder order = SortOrder.ASCENDING;
-		for (SortKey sk : sorter.getSortKeys()) {
-			if (sk.getColumn() == 1) {
-				if (sk.getSortOrder() == SortOrder.ASCENDING)
-					order = SortOrder.DESCENDING;
-			}
-		}
-		List<RowSorter.SortKey> sortKeys = new ArrayList<RowSorter.SortKey>();
-		sortKeys.add(new RowSorter.SortKey(1, order));
-		sorter.setSortKeys(sortKeys);
-	}
-
-	@Override
-	public void valueChanged(ListSelectionEvent arg0) {
-		int viewRow = tblMods.getSelectedRow();
-		if (viewRow < 0)
-			// TODO
-			return;
-		int modelRow = tblMods.convertRowIndexToModel(viewRow);
-		NodeMod mod = (NodeMod) model.getValueAt(modelRow, -1);
-		// TODO
+		if (t != null)
+			sorter.setRowFilter(new ModTableFilter(t.getTid()));
+		else
+			sorter.setRowFilter(new ModTableFilter(-1));
 	}
 }
Index: AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.properties
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.properties	(revision 591)
+++ AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.properties	(revision 592)
@@ -12,4 +12,9 @@
 lblModTypes.text=Mod types: 
 
+lblSubmitter.text=Submitter:
+lblCreator.text=Creator:
+lblId.text=NodeID:
+lblFiles.text=Number of files:
+lblDescription.text=Description:
 
 updateDepot.title=Updating Mod Depot cache
@@ -17,5 +22,2 @@
 updatesAvailable.title=Updates available
 updatesAvailable.text=Some mods have newer versions available.
-
-invalidPath.title=Wrong directory
-invalidPath.text=This program has to be placed in the subfolder Edition/AEInstaller inside a vanilla Oni folder.\nThe full path of the .jar-file has to be:\nOniFolder/Edition/AEInstaller/AEInstaller2.jar
Index: AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.yml
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.yml	(revision 591)
+++ AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.yml	(revision 592)
@@ -6,5 +6,5 @@
   locationRelativeTo: null
   defaultCloseOperation: doNothingOnClose
-  onWindowOpened: [validatePath,execDepotUpdate,checkUpdates,focus]
+  onWindowOpened: [execDepotUpdate,checkUpdates,focus]
   onWindowClosing: [$confirm,closeFrames,saveLocalData,exit]
   iconImage: img.kdt
@@ -20,20 +20,33 @@
         - JToolBarSeparator()
         - JButton(action=settings, hideActionText=true)
-    - JPanel(name=contents):
+    - JSplitPane(name=contents, orientation=horizontalSplit, continuousLayout=true):
         - JPanel(name=panMods):
             - JLabel(name=lblModTypes, text=lblModTypes.text)
             - JComboBox(name=cmbModTypes, onAction=modTypeSelection)
             - JScrollPane(name=scrollMods, vScrollBar=always, hScrollBar=never):
-                JTable(name=tblMods)
-            - JButton(name=btnSortAlpha, onAction=sortAlpha, text=A-Z)
-            - JButton(name=btnSortNumber, onAction=sortPackageNumber, text=0-9)
+                JTable(name=tblMods, visible=false)
             - MigLayout: |
                  [grow]
                  lblModTypes<,cmbModTypes           [min]
                  scrollMods                         [grow]
-                 >btnSortAlpha=1<,btnSortNumber=1<  [min]
-        - MigLayout: |
-             [pref]
-             panMods        [grow]
+        - JPanel(name=panInfo):
+            - JLabel(name=lblSubmitter, text=lblSubmitter.text)
+            - JLabel(name=lblSubmitterVal)
+            - JLabel(name=lblCreator, text=lblCreator.text)
+            - JLabel(name=lblCreatorVal)
+            - JLabel(name=lblId, text=lblId.text)
+            - JLabel(name=lblIdVal)
+            - JLabel(name=lblFiles, text=lblFiles.text)
+            - JLabel(name=lblFilesVal)
+            - JLabel(name=lblDescription, text=lblDescription.text)
+            - JScrollPane(name=scrollDescription, vScrollBar=always, hScrollBar=asNeeded):
+                HTMLLinkLabel(name=lblDescriptionVal)
+            - MigLayout: |
+                 [min]             [grow]
+                 >lblSubmitter     lblSubmitterVal    [min]
+                 >lblCreator       lblCreatorVal      [min]
+                 >lblId            lblIdVal           [min]
+                 >lblFiles         lblFilesVal        [min]
+                 >^lblDescription  scrollDescription  [grow]
     - MigLayout:
         layoutConstraints: wrap 1
Index: AE/installer2/src/net/oni2/aeinstaller/gui/modtable/ModTableModel.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/gui/modtable/ModTableModel.java	(revision 591)
+++ AE/installer2/src/net/oni2/aeinstaller/gui/modtable/ModTableModel.java	(revision 592)
@@ -46,5 +46,5 @@
 				if (vocabModTypeID < 0) {
 					vocabModTypeID = DepotManager.getInstance()
-							.getVocabulary(DepotConfig.MODTYPE_VOCAB).getVid();
+							.getVocabulary(DepotConfig.getVocabularyName_ModType()).getVid();
 				}
 				for (int tid : node.getTaxonomyTerms().get(vocabModTypeID)) {
@@ -58,5 +58,5 @@
 				if (vocabPlatformID < 0) {
 					vocabPlatformID = DepotManager.getInstance()
-							.getVocabulary(DepotConfig.PLATFORM_VOCAB).getVid();
+							.getVocabulary(DepotConfig.getVocabularyName_Platform()).getVid();
 				}
 				int tid = node.getTaxonomyTerms().get(vocabPlatformID)
Index: AE/installer2/src/net/oni2/aeinstaller/gui/settings/LaFComboModel.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/gui/settings/LaFComboModel.java	(revision 591)
+++ AE/installer2/src/net/oni2/aeinstaller/gui/settings/LaFComboModel.java	(revision 592)
@@ -31,6 +31,7 @@
 			items.add(laf);
 
+		
 		String laf = Settings.getInstance().get("lookandfeel",
-				UIManager.getSystemLookAndFeelClassName());
+				UIManager.getLookAndFeel().getClass().getName());
 
 		if (items.size() > 0)
Index: AE/installer2/src/net/oni2/aeinstaller/gui/settings/SettingsDialog.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/gui/settings/SettingsDialog.java	(revision 591)
+++ AE/installer2/src/net/oni2/aeinstaller/gui/settings/SettingsDialog.java	(revision 592)
@@ -94,5 +94,5 @@
 
 		String oldLaf = set.get("lookandfeel",
-				UIManager.getSystemLookAndFeelClassName());
+				UIManager.getLookAndFeel().getClass().getName());
 		String newLaf = laFModel.getSelectedClassName();
 
