Index: AE/installer2/src/net/oni2/aeinstaller/backend/packages/PackageManager.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/backend/packages/PackageManager.java	(revision 657)
+++ AE/installer2/src/net/oni2/aeinstaller/backend/packages/PackageManager.java	(revision 658)
@@ -10,10 +10,6 @@
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.TreeMap;
 import java.util.TreeSet;
 import java.util.Vector;
-
-import com.thoughtworks.xstream.XStream;
-import com.thoughtworks.xstream.io.xml.StaxDriver;
 
 import net.oni2.aeinstaller.backend.Paths;
@@ -22,4 +18,7 @@
 import net.oni2.aeinstaller.backend.depot.model.TaxonomyTerm;
 import net.oni2.aeinstaller.backend.oni.Installer;
+
+import com.thoughtworks.xstream.XStream;
+import com.thoughtworks.xstream.io.xml.StaxDriver;
 
 /**
@@ -217,9 +216,9 @@
 	 * @return Collection of tools valid on this platform and not core
 	 */
-	public TreeMap<String, Package> getTools() {
-		TreeMap<String, Package> res = new TreeMap<String, Package>();
+	public Collection<Package> getTools() {
+		Vector<Package> res = new Vector<Package>();
 		for (Package m : tools.values())
 			if (m.isValidOnPlatform() && !m.isCorePackage())
-				res.put(m.getName(), m);
+				res.add(m);
 		return res;
 	}
Index: AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.java	(revision 657)
+++ AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.java	(revision 658)
@@ -4,5 +4,4 @@
 import java.awt.Desktop;
 import java.awt.GridLayout;
-import java.awt.Insets;
 import java.awt.event.ActionEvent;
 import java.awt.event.ItemEvent;
@@ -32,4 +31,5 @@
 import javax.swing.JPanel;
 import javax.swing.JRadioButton;
+import javax.swing.JScrollPane;
 import javax.swing.JSplitPane;
 import javax.swing.SwingUtilities;
@@ -44,13 +44,13 @@
 import net.oni2.aeinstaller.backend.SizeFormatter;
 import net.oni2.aeinstaller.backend.depot.DepotManager;
+import net.oni2.aeinstaller.backend.oni.InstallProgressListener;
+import net.oni2.aeinstaller.backend.oni.Installer;
+import net.oni2.aeinstaller.backend.oni.OniSplit;
 import net.oni2.aeinstaller.backend.packages.Package;
 import net.oni2.aeinstaller.backend.packages.PackageManager;
 import net.oni2.aeinstaller.backend.packages.Type;
-import net.oni2.aeinstaller.backend.oni.InstallProgressListener;
-import net.oni2.aeinstaller.backend.oni.Installer;
-import net.oni2.aeinstaller.backend.oni.OniSplit;
 import net.oni2.aeinstaller.backend.packages.download.ModDownloader;
+import net.oni2.aeinstaller.backend.packages.download.ModDownloader.State;
 import net.oni2.aeinstaller.backend.packages.download.ModDownloaderListener;
-import net.oni2.aeinstaller.backend.packages.download.ModDownloader.State;
 import net.oni2.aeinstaller.gui.about.AboutDialog;
 import net.oni2.aeinstaller.gui.corepackages.CorePackagesDialog;
@@ -59,4 +59,6 @@
 import net.oni2.aeinstaller.gui.modtable.ModSelectionListener;
 import net.oni2.aeinstaller.gui.modtable.ModTable;
+import net.oni2.aeinstaller.gui.modtable.ModTable.ETableContentType;
+import net.oni2.aeinstaller.gui.packageinfobox.PackageInfoBox;
 import net.oni2.aeinstaller.gui.settings.SettingsDialog;
 import net.oni2.aeinstaller.gui.toolmanager.ToolManager;
@@ -92,15 +94,10 @@
 	private JRadioButton radOnline;
 	private JRadioButton radLocal;
+	private JScrollPane scrollMods;
 	private ModTable tblMods;
 	private JLabel lblDownloadSizeVal;
 
-	private JLabel lblTitleVal;
-	private JLabel lblCreatorVal;
-	private JLabel lblTypesVal;
-	private JLabel lblPlatformVal;
-	private JLabel lblPackageNumberVal;
-	private JLabel lblVersionNumberVal;
-	private HTMLLinkLabel lblDescriptionVal;
-
+	private PackageInfoBox pkgInfo;
+	
 	private JButton btnInstall;
 
@@ -129,5 +126,8 @@
 				+ SwingJavaBuilder.getConfig().getResource("appversion"));
 
-		setSize(getWidth() + 150, getHeight());
+		tblMods = new ModTable(ETableContentType.MODS);
+		tblMods.setVisible(false);
+		scrollMods.setViewportView(tblMods);
+
 		contents.setDividerLocation(550);
 		contents.setResizeWeight(0.4);
@@ -145,6 +145,4 @@
 		tblMods.addModSelectionListener(this);
 		tblMods.addDownloadSizeListener(this);
-
-		lblDescriptionVal.setMargin(new Insets(-15, 0, 0, 0));
 	}
 
@@ -452,5 +450,5 @@
 		tblMods.revertSelection();
 	}
-	
+
 	@SuppressWarnings("unused")
 	private void unSelectAll() {
@@ -705,27 +703,5 @@
 	@Override
 	public void modSelectionChanged(ModTable source, Package m) {
-		lblTitleVal.setText("");
-		lblCreatorVal.setText("");
-		lblDescriptionVal.setText("");
-		lblTypesVal.setText("");
-		lblPlatformVal.setText("");
-		lblPackageNumberVal.setText("");
-		lblVersionNumberVal.setText("");
-		if (m != null) {
-			lblTitleVal.setText(m.getName());
-			lblCreatorVal.setText(m.getCreator());
-			lblDescriptionVal.setText(m.getDescription());
-
-			String types = "";
-			for (Type t : m.getTypes()) {
-				if (types.length() > 0)
-					types += ", ";
-				types += t.getName();
-			}
-			lblTypesVal.setText(types);
-			lblPlatformVal.setText(m.getPlatform().toString());
-			lblPackageNumberVal.setText(m.getPackageNumberString());
-			lblVersionNumberVal.setText(m.getVersion());
-		}
+		pkgInfo.updateInfo(m);
 	}
 
Index: AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.yml
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.yml	(revision 657)
+++ AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.yml	(revision 658)
@@ -2,5 +2,5 @@
   name: frame
   title: appname
-  size: 800x600
+  size: 950x600
   minimumSize: 400x300
   locationRelativeTo: null
@@ -57,6 +57,5 @@
             - JRadioButton(name=radLocal, text=radLocal.text, onAction=showTypeSelection)
             - ButtonGroup: [radAll,radOnline,radLocal]
-            - JScrollPane(name=scrollMods, vScrollBar=always, hScrollBar=never):
-                ModTable(name=tblMods, visible=false)
+            - JScrollPane(name=scrollMods, vScrollBar=always, hScrollBar=never)
             - JButton(name=btnUnSelectAll, icon=img.unSelect16, text=btnUnSelectAll.text, onAction=[unSelectAll])
             - JButton(name=btnRevertSelection, icon=img.undo16, text=btnRevertSelection.text, toolTipText=btnRevertSelection.tooltip, onAction=[revertSelection])
@@ -71,29 +70,5 @@
                  >btnUnSelectAll,>btnRevertSelection,btnInstall  [min]
                  lblDownloadSize,lblDownloadSizeVal              [min]
-        - JPanel(name=panInfo):
-            - JLabel(name=lblTitle, text=lblTitle.text)
-            - JLabel(name=lblTitleVal)
-            - JLabel(name=lblCreator, text=lblCreator.text)
-            - JLabel(name=lblCreatorVal)
-            - JLabel(name=lblTypes, text=lblTypes.text)
-            - JLabel(name=lblTypesVal)
-            - JLabel(name=lblPlatform, text=lblPlatform.text)
-            - JLabel(name=lblPlatformVal)
-            - JLabel(name=lblPackageNumber, text=lblPackageNumber.text)
-            - JLabel(name=lblPackageNumberVal)
-            - JLabel(name=lblVersionNumber, text=lblVersionNumber.text)
-            - JLabel(name=lblVersionNumberVal)
-            - JLabel(name=lblDescription, text=lblDescription.text)
-            - JScrollPane(name=scrollDescription, vScrollBar=always, hScrollBar=asNeeded):
-                HTMLLinkLabel(name=lblDescriptionVal)
-            - MigLayout: |
-                 [min]             [grow]
-                 >lblTitle         lblTitleVal         [min]
-                 >lblCreator       lblCreatorVal       [min]
-                 >lblTypes         lblTypesVal         [min]
-                 >lblPlatform      lblPlatformVal      [min]
-                 >lblPackageNumber lblPackageNumberVal [min]
-                 >lblVersionNumber lblVersionNumberVal [min]
-                 >^lblDescription  scrollDescription   [grow]
+        - PackageInfoBox(name=pkgInfo)
     - MigLayout:
         layoutConstraints: wrap 1
Index: AE/installer2/src/net/oni2/aeinstaller/gui/corepackages/CorePackagesDialog.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/gui/corepackages/CorePackagesDialog.java	(revision 657)
+++ AE/installer2/src/net/oni2/aeinstaller/gui/corepackages/CorePackagesDialog.java	(revision 658)
@@ -1,30 +1,20 @@
 package net.oni2.aeinstaller.gui.corepackages;
 
-import java.awt.Dimension;
-import java.awt.Insets;
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
-import java.text.SimpleDateFormat;
-import java.util.Date;
 import java.util.ResourceBundle;
-import java.util.TreeSet;
 
 import javax.swing.AbstractAction;
-import javax.swing.DefaultListModel;
 import javax.swing.JComponent;
 import javax.swing.JDialog;
-import javax.swing.JLabel;
-import javax.swing.JList;
+import javax.swing.JScrollPane;
 import javax.swing.JSplitPane;
 import javax.swing.KeyStroke;
-import javax.swing.ListSelectionModel;
-import javax.swing.event.ListSelectionEvent;
-import javax.swing.event.ListSelectionListener;
 
-import net.oni2.aeinstaller.backend.SizeFormatter;
 import net.oni2.aeinstaller.backend.packages.Package;
-import net.oni2.aeinstaller.backend.packages.PackageManager;
-import net.oni2.aeinstaller.backend.packages.Type;
-import net.oni2.aeinstaller.gui.HTMLLinkLabel;
+import net.oni2.aeinstaller.gui.modtable.ModSelectionListener;
+import net.oni2.aeinstaller.gui.modtable.ModTable;
+import net.oni2.aeinstaller.gui.modtable.ModTable.ETableContentType;
+import net.oni2.aeinstaller.gui.packageinfobox.PackageInfoBox;
 
 import org.javabuilders.BuildResult;
@@ -34,6 +24,5 @@
  * @author Christian Illy
  */
-public class CorePackagesDialog extends JDialog implements
-		ListSelectionListener {
+public class CorePackagesDialog extends JDialog implements ModSelectionListener {
 	private static final long serialVersionUID = -5444213842599816301L;
 
@@ -46,17 +35,8 @@
 	private JSplitPane contents;
 
-	private JList lstTools;
+	private JScrollPane scrollTools;
+	private ModTable tblTools;
 
-	private JLabel lblTitleVal;
-	private JLabel lblCreatorVal;
-	private JLabel lblTypesVal;
-	private JLabel lblPlatformVal;
-	private JLabel lblPackageNumberVal;
-	private JLabel lblVersionNumberVal;
-	private JLabel lblLastChangeVal;
-	private HTMLLinkLabel lblDescriptionVal;
-	private JLabel lblDownloadSizeVal;
-
-	private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+	private PackageInfoBox pkgInfo;
 
 	/**
@@ -64,6 +44,4 @@
 	 */
 	public CorePackagesDialog() {
-		setMinimumSize(new Dimension(getWidth() + 100, getHeight() + 100));
-
 		AbstractAction closeAction = new AbstractAction() {
 
@@ -81,56 +59,19 @@
 		getRootPane().getActionMap().put("close", closeAction);
 
-		contents.setDividerLocation(200);
+		contents.setDividerLocation(550);
 		contents.setResizeWeight(0.4);
 
-		lstTools.addListSelectionListener(this);
-		lstTools.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+		tblTools = new ModTable(ETableContentType.CORE);
+		tblTools.reloadData();
+		scrollTools.setViewportView(tblTools);
 
-		DefaultListModel dlm = new DefaultListModel();
-		TreeSet<Package> tools = PackageManager.getInstance().getCoreTools();
-		for (Package m : tools)
-			dlm.addElement(m);
-		TreeSet<Package> mods = PackageManager.getInstance().getCoreMods();
-		for (Package m : mods)
-			dlm.addElement(m);
-		lstTools.setModel(dlm);
+		tblTools.addModSelectionListener(this);
 
 		setLocationRelativeTo(null);
-		lblDescriptionVal.setMargin(new Insets(-15, 0, 0, 0));
 	}
 
 	@Override
-	public void valueChanged(ListSelectionEvent evt) {
-		lblTitleVal.setText("");
-		lblCreatorVal.setText("");
-		lblDescriptionVal.setText("");
-		lblTypesVal.setText("");
-		lblPlatformVal.setText("");
-		lblPackageNumberVal.setText("");
-		lblVersionNumberVal.setText("");
-		lblLastChangeVal.setText("");
-		lblDownloadSizeVal.setText("");
-
-		if (lstTools.getSelectedValue() instanceof Package) {
-			Package m = (Package) lstTools.getSelectedValue();
-			lblTitleVal.setText(m.getName());
-			lblCreatorVal.setText(m.getCreator());
-			lblDescriptionVal.setText(m.getDescription());
-
-			String types = "";
-			for (Type t : m.getTypes()) {
-				if (types.length() > 0)
-					types += ", ";
-				types += t.getName();
-			}
-			lblTypesVal.setText(types);
-			lblPlatformVal.setText(m.getPlatform().toString());
-			lblPackageNumberVal.setText(m.getPackageNumberString());
-			lblVersionNumberVal.setText(m.getVersion());
-			if (m.getFile() != null)
-				lblLastChangeVal.setText(sdf.format(new Date(m.getFile()
-						.getTimestamp() * 1000)));
-			lblDownloadSizeVal.setText(SizeFormatter.format(m.getZipSize(), 3));
-		}
+	public void modSelectionChanged(ModTable source, Package mod) {
+		pkgInfo.updateInfo(mod);
 	}
 }
Index: AE/installer2/src/net/oni2/aeinstaller/gui/corepackages/CorePackagesDialog.yml
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/gui/corepackages/CorePackagesDialog.yml	(revision 657)
+++ AE/installer2/src/net/oni2/aeinstaller/gui/corepackages/CorePackagesDialog.yml	(revision 658)
@@ -2,5 +2,5 @@
   name: frame
   title: frame.title
-  size: packed
+  size: 900x500
   locationRelativeTo: null
   defaultCloseOperation: disposeOnClose
@@ -10,40 +10,9 @@
     - JSplitPane(name=contents, orientation=horizontalSplit, continuousLayout=true):
         - JPanel(name=panTools):
-            - JScrollPane(name=scrollTools, vScrollBar=always, hScrollBar=asNeeded):
-                JList(name=lstTools)
+            - JScrollPane(name=scrollTools, vScrollBar=always, hScrollBar=never)
             - MigLayout: |
                  [grow]
                  scrollTools   [grow]
-        - JPanel(name=panInfo):
-            - JLabel(name=lblTitle, text=lblTitle.text)
-            - JLabel(name=lblTitleVal)
-            - JLabel(name=lblCreator, text=lblCreator.text)
-            - JLabel(name=lblCreatorVal)
-            - JLabel(name=lblTypes, text=lblTypes.text)
-            - JLabel(name=lblTypesVal)
-            - JLabel(name=lblPlatform, text=lblPlatform.text)
-            - JLabel(name=lblPlatformVal)
-            - JLabel(name=lblPackageNumber, text=lblPackageNumber.text)
-            - JLabel(name=lblPackageNumberVal)
-            - JLabel(name=lblVersionNumber, text=lblVersionNumber.text)
-            - JLabel(name=lblVersionNumberVal)
-            - JLabel(name=lblLastChange, text=lblLastChange.text)
-            - JLabel(name=lblLastChangeVal)
-            - JLabel(name=lblDescription, text=lblDescription.text)
-            - JScrollPane(name=scrollDescription, vScrollBar=always, hScrollBar=asNeeded):
-                HTMLLinkLabel(name=lblDescriptionVal)
-            - JLabel(name=lblDownloadSize, text=lblDownloadSize.text)
-            - JLabel(name=lblDownloadSizeVal)
-            - MigLayout: |
-                 [min]             [grow]
-                 >lblTitle         lblTitleVal         [min]
-                 >lblCreator       lblCreatorVal       [min]
-                 >lblTypes         lblTypesVal         [min]
-                 >lblPlatform      lblPlatformVal      [min]
-                 >lblPackageNumber lblPackageNumberVal [min]
-                 >lblVersionNumber lblVersionNumberVal [min]
-                 >lblLastChange    lblLastChangeVal    [min]
-                 >^lblDescription  scrollDescription   [grow]
-                 >lblDownloadSize  lblDownloadSizeVal  [min]
+        - PackageInfoBox(name=pkgInfo)
     - MigLayout: |
          [grow]
Index: AE/installer2/src/net/oni2/aeinstaller/gui/modtable/ModTable.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/gui/modtable/ModTable.java	(revision 657)
+++ AE/installer2/src/net/oni2/aeinstaller/gui/modtable/ModTable.java	(revision 658)
@@ -70,7 +70,12 @@
 	/**
 	 * Create a new ModTable
-	 */
-	public ModTable() {
+	 * 
+	 * @param contentType
+	 *            Content to show
+	 */
+	public ModTable(ETableContentType contentType) {
 		super();
+
+		this.contentType = contentType;
 
 		setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
@@ -81,5 +86,5 @@
 		((JComponent) getDefaultRenderer(Boolean.class)).setOpaque(true);
 
-		model = new ModTableModel();
+		model = new ModTableModel(contentType);
 
 		setModel(model);
@@ -101,4 +106,8 @@
 		for (int i = 0; i < model.getColumnCount(); i++) {
 			model.setColumnConstraints(i, getColumnModel().getColumn(i));
+		}
+
+		if (contentType != ETableContentType.MODS) {
+			getColumnModel().removeColumn(getColumnModel().getColumn(0));
 		}
 	}
Index: AE/installer2/src/net/oni2/aeinstaller/gui/modtable/ModTableModel.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/gui/modtable/ModTableModel.java	(revision 657)
+++ AE/installer2/src/net/oni2/aeinstaller/gui/modtable/ModTableModel.java	(revision 658)
@@ -14,4 +14,5 @@
 import net.oni2.aeinstaller.backend.packages.Package;
 import net.oni2.aeinstaller.backend.packages.PackageManager;
+import net.oni2.aeinstaller.gui.modtable.ModTable.ETableContentType;
 
 /**
@@ -32,8 +33,14 @@
 	private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
 
+	private ETableContentType contentType = ETableContentType.MODS;
+
 	/**
 	 * Create a new model
-	 */
-	public ModTableModel() {
+	 * 
+	 * @param contentType
+	 *            Content type to show
+	 */
+	public ModTableModel(ETableContentType contentType) {
+		this.contentType = contentType;
 	}
 
@@ -182,5 +189,17 @@
 	public void reloadData() {
 		items.clear();
-		items.addAll(PackageManager.getInstance().getModsValidAndNotCore());
+		switch (contentType) {
+			case MODS:
+				items.addAll(PackageManager.getInstance()
+						.getModsValidAndNotCore());
+				break;
+			case TOOLS:
+				items.addAll(PackageManager.getInstance().getTools());
+				break;
+			case CORE:
+				items.addAll(PackageManager.getInstance().getCoreTools());
+				items.addAll(PackageManager.getInstance().getCoreMods());
+				break;
+		}
 		revertSelection();
 	}
@@ -205,11 +224,14 @@
 	 */
 	public void reloadSelection(File config) {
-		Vector<Integer> selected = PackageManager.getInstance()
-				.loadModSelection(config);
-		install.clear();
-		for (int i = 0; i < items.size(); i++) {
-			install.add(i, selected.contains(items.get(i).getPackageNumber()));
-		}
-		fireTableDataChanged();
+		if (contentType == ETableContentType.MODS) {
+			Vector<Integer> selected = PackageManager.getInstance()
+					.loadModSelection(config);
+			install.clear();
+			for (int i = 0; i < items.size(); i++) {
+				install.add(i,
+						selected.contains(items.get(i).getPackageNumber()));
+			}
+			fireTableDataChanged();
+		}
 	}
 
Index: AE/installer2/src/net/oni2/aeinstaller/gui/packageinfobox/PackageInfoBox.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/gui/packageinfobox/PackageInfoBox.java	(revision 658)
+++ AE/installer2/src/net/oni2/aeinstaller/gui/packageinfobox/PackageInfoBox.java	(revision 658)
@@ -0,0 +1,79 @@
+package net.oni2.aeinstaller.gui.packageinfobox;
+
+import java.awt.Insets;
+import java.util.ResourceBundle;
+
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+
+import net.oni2.aeinstaller.backend.SizeFormatter;
+import net.oni2.aeinstaller.backend.packages.Package;
+import net.oni2.aeinstaller.backend.packages.Type;
+import net.oni2.aeinstaller.gui.HTMLLinkLabel;
+
+import org.javabuilders.BuildResult;
+import org.javabuilders.swing.SwingJavaBuilder;
+
+/**
+ * @author Christian Illy
+ */
+public class PackageInfoBox extends JPanel {
+	private static final long serialVersionUID = 233098603653577693L;
+
+	private ResourceBundle bundle = ResourceBundle
+			.getBundle("net.oni2.aeinstaller.localization."
+					+ getClass().getSimpleName());
+	@SuppressWarnings("unused")
+	private BuildResult result = SwingJavaBuilder.build(this, bundle);
+
+	private JLabel lblTitleVal;
+	private JLabel lblCreatorVal;
+	private JLabel lblTypesVal;
+	private JLabel lblPlatformVal;
+	private JLabel lblPackageNumberVal;
+	private JLabel lblVersionNumberVal;
+	private HTMLLinkLabel lblDescriptionVal;
+	private JLabel lblDownloadSizeVal;
+
+	/**
+	 * Create a package info box
+	 */
+	public PackageInfoBox() {
+		super();
+		lblDescriptionVal.setMargin(new Insets(-15, 0, 0, 0));
+	}
+
+	/**
+	 * @param mod
+	 *            Mod info to show
+	 */
+	public void updateInfo(Package mod) {
+		lblTitleVal.setText("");
+		lblCreatorVal.setText("");
+		lblDescriptionVal.setText("");
+		lblTypesVal.setText("");
+		lblPlatformVal.setText("");
+		lblPackageNumberVal.setText("");
+		lblVersionNumberVal.setText("");
+		lblDownloadSizeVal.setText("");
+
+		if (mod != null) {
+			lblTitleVal.setText(mod.getName());
+			lblCreatorVal.setText(mod.getCreator());
+			lblDescriptionVal.setText(mod.getDescription());
+
+			String types = "";
+			for (Type t : mod.getTypes()) {
+				if (types.length() > 0)
+					types += ", ";
+				types += t.getName();
+			}
+			lblTypesVal.setText(types);
+			lblPlatformVal.setText(mod.getPlatform().toString());
+			lblPackageNumberVal.setText(mod.getPackageNumberString());
+			lblVersionNumberVal.setText(mod.getVersion());
+			lblDownloadSizeVal
+					.setText(SizeFormatter.format(mod.getZipSize(), 3));
+		}
+	}
+}
Index: AE/installer2/src/net/oni2/aeinstaller/gui/packageinfobox/PackageInfoBox.yml
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/gui/packageinfobox/PackageInfoBox.yml	(revision 658)
+++ AE/installer2/src/net/oni2/aeinstaller/gui/packageinfobox/PackageInfoBox.yml	(revision 658)
@@ -0,0 +1,30 @@
+JPanel:
+  name: panel
+  content:
+    - JLabel(name=lblTitle, text=lblTitle.text)
+    - JLabel(name=lblTitleVal)
+    - JLabel(name=lblCreator, text=lblCreator.text)
+    - JLabel(name=lblCreatorVal)
+    - JLabel(name=lblTypes, text=lblTypes.text)
+    - JLabel(name=lblTypesVal)
+    - JLabel(name=lblPlatform, text=lblPlatform.text)
+    - JLabel(name=lblPlatformVal)
+    - JLabel(name=lblPackageNumber, text=lblPackageNumber.text)
+    - JLabel(name=lblPackageNumberVal)
+    - JLabel(name=lblVersionNumber, text=lblVersionNumber.text)
+    - JLabel(name=lblVersionNumberVal)
+    - JLabel(name=lblDescription, text=lblDescription.text)
+    - JScrollPane(name=scrollDescription, vScrollBar=always, hScrollBar=asNeeded):
+        HTMLLinkLabel(name=lblDescriptionVal)
+    - JLabel(name=lblDownloadSize, text=lblDownloadSize.text)
+    - JLabel(name=lblDownloadSizeVal)
+    - MigLayout: |
+         [min]             [grow]
+         >lblTitle         lblTitleVal         [min]
+         >lblCreator       lblCreatorVal       [min]
+         >lblTypes         lblTypesVal         [min]
+         >lblPlatform      lblPlatformVal      [min]
+         >lblPackageNumber lblPackageNumberVal [min]
+         >lblVersionNumber lblVersionNumberVal [min]
+         >^lblDescription  scrollDescription   [grow]
+         >lblDownloadSize  lblDownloadSizeVal  [min]
Index: AE/installer2/src/net/oni2/aeinstaller/gui/toolmanager/ToolManager.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/gui/toolmanager/ToolManager.java	(revision 657)
+++ AE/installer2/src/net/oni2/aeinstaller/gui/toolmanager/ToolManager.java	(revision 658)
@@ -1,16 +1,10 @@
 package net.oni2.aeinstaller.gui.toolmanager;
 
-import java.awt.Dimension;
-import java.awt.Insets;
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
-import java.text.SimpleDateFormat;
-import java.util.Date;
 import java.util.ResourceBundle;
-import java.util.TreeMap;
 import java.util.TreeSet;
 
 import javax.swing.AbstractAction;
-import javax.swing.DefaultListModel;
 import javax.swing.Icon;
 import javax.swing.ImageIcon;
@@ -18,20 +12,17 @@
 import javax.swing.JComponent;
 import javax.swing.JDialog;
-import javax.swing.JLabel;
-import javax.swing.JList;
 import javax.swing.JOptionPane;
+import javax.swing.JScrollPane;
 import javax.swing.JSplitPane;
 import javax.swing.KeyStroke;
-import javax.swing.ListSelectionModel;
-import javax.swing.event.ListSelectionEvent;
-import javax.swing.event.ListSelectionListener;
 
 import net.oni2.aeinstaller.backend.Settings;
-import net.oni2.aeinstaller.backend.SizeFormatter;
+import net.oni2.aeinstaller.backend.oni.Installer;
 import net.oni2.aeinstaller.backend.packages.Package;
-import net.oni2.aeinstaller.backend.packages.PackageManager;
-import net.oni2.aeinstaller.backend.oni.Installer;
-import net.oni2.aeinstaller.gui.HTMLLinkLabel;
 import net.oni2.aeinstaller.gui.downloadwindow.Downloader;
+import net.oni2.aeinstaller.gui.modtable.ModSelectionListener;
+import net.oni2.aeinstaller.gui.modtable.ModTable;
+import net.oni2.aeinstaller.gui.modtable.ModTable.ETableContentType;
+import net.oni2.aeinstaller.gui.packageinfobox.PackageInfoBox;
 
 import org.javabuilders.BuildResult;
@@ -41,5 +32,5 @@
  * @author Christian Illy
  */
-public class ToolManager extends JDialog implements ListSelectionListener {
+public class ToolManager extends JDialog implements ModSelectionListener {
 	private static final long serialVersionUID = 343221630538866384L;
 
@@ -52,15 +43,8 @@
 	private JSplitPane contents;
 
-	private JList lstTools;
+	private JScrollPane scrollTools;
+	private ModTable tblTools;
 
-	private JLabel lblTitleVal;
-	private JLabel lblCreatorVal;
-	private JLabel lblPlatformVal;
-	private JLabel lblPackageNumberVal;
-	private JLabel lblVersionNumberVal;
-	private JLabel lblLastChangeVal;
-	private HTMLLinkLabel lblDescriptionVal;
-	private JLabel lblDownloadSizeVal;
-
+	private PackageInfoBox pkgInfo;
 	private JButton btnInstall;
 
@@ -68,5 +52,5 @@
 	private Icon icoUninstall = null;
 
-	private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+	private Package selectedPackage = null;
 
 	/**
@@ -74,6 +58,4 @@
 	 */
 	public ToolManager() {
-		setMinimumSize(new Dimension(getWidth() + 100, getHeight() + 100));
-
 		AbstractAction closeAction = new AbstractAction() {
 
@@ -91,15 +73,12 @@
 		getRootPane().getActionMap().put("close", closeAction);
 
-		contents.setDividerLocation(200);
+		contents.setDividerLocation(550);
 		contents.setResizeWeight(0.4);
 
-		lstTools.addListSelectionListener(this);
-		lstTools.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+		tblTools = new ModTable(ETableContentType.TOOLS);
+		tblTools.reloadData();
+		scrollTools.setViewportView(tblTools);
 
-		DefaultListModel dlm = new DefaultListModel();
-		TreeMap<String, Package> tools = PackageManager.getInstance().getTools();
-		for (String name : tools.keySet())
-			dlm.addElement(tools.get(name));
-		lstTools.setModel(dlm);
+		tblTools.addModSelectionListener(this);
 
 		icoInstall = new ImageIcon(getClass().getResource(
@@ -109,19 +88,15 @@
 
 		setLocationRelativeTo(null);
-		lblDescriptionVal.setMargin(new Insets(-15, 0, 0, 0));
 	}
 
 	@SuppressWarnings("unused")
 	private void install() {
-		Object o = lstTools.getSelectedValue();
-		if (o instanceof Package) {
-			Package theMod = (Package) o;
-
-			if (theMod.isInstalled()) {
+		if (selectedPackage != null) {
+			if (selectedPackage.isInstalled()) {
 				TreeSet<Package> tools = new TreeSet<Package>();
-				tools.add(theMod);
+				tools.add(selectedPackage);
 				Installer.uninstallTools(tools);
 			} else {
-				if (!theMod.isLocalAvailable()) {
+				if (!selectedPackage.isLocalAvailable()) {
 					if (Settings.getInstance().isOfflineMode()) {
 						JOptionPane.showMessageDialog(this,
@@ -133,5 +108,5 @@
 
 					TreeSet<Package> toDownload = new TreeSet<Package>();
-					toDownload.add(theMod);
+					toDownload.add(selectedPackage);
 
 					Downloader dl = new Downloader(toDownload, null);
@@ -146,38 +121,19 @@
 
 				TreeSet<Package> tools = new TreeSet<Package>();
-				tools.add(theMod);
+				tools.add(selectedPackage);
 				Installer.installTools(tools);
 			}
 		}
-		valueChanged(null);
+		modSelectionChanged(tblTools, selectedPackage);
 	}
 
 	@Override
-	public void valueChanged(ListSelectionEvent evt) {
-		lblTitleVal.setText("");
-		lblCreatorVal.setText("");
-		lblDescriptionVal.setText("");
-		lblPlatformVal.setText("");
-		lblPackageNumberVal.setText("");
-		lblVersionNumberVal.setText("");
-		lblLastChangeVal.setText("");
-		lblDownloadSizeVal.setText("");
-		btnInstall.setEnabled(false);
-		btnInstall.setIcon(icoInstall);
+	public void modSelectionChanged(ModTable source, Package mod) {
+		selectedPackage = mod;
 
-		if (lstTools.getSelectedValue() instanceof Package) {
-			Package m = (Package) lstTools.getSelectedValue();
-			lblTitleVal.setText(m.getName());
-			lblCreatorVal.setText(m.getCreator());
-			lblDescriptionVal.setText(m.getDescription());
-			lblPlatformVal.setText(m.getPlatform().toString());
-			lblPackageNumberVal.setText(m.getPackageNumberString());
-			lblVersionNumberVal.setText(m.getVersion());
-			if (m.getFile() != null)
-				lblLastChangeVal.setText(sdf.format(new Date(m.getFile()
-						.getTimestamp() * 1000)));
-			lblDownloadSizeVal.setText(SizeFormatter.format(m.getZipSize(), 3));
+		pkgInfo.updateInfo(mod);
+		if (mod != null) {
 			btnInstall.setEnabled(true);
-			if (m.isInstalled()) {
+			if (mod.isInstalled()) {
 				btnInstall.setText(bundle.getString("btnInstall.un.text"));
 				btnInstall.setToolTipText(bundle
@@ -188,4 +144,5 @@
 				btnInstall.setToolTipText(bundle
 						.getString("btnInstall.tooltip"));
+				btnInstall.setIcon(icoInstall);
 			}
 		}
Index: AE/installer2/src/net/oni2/aeinstaller/gui/toolmanager/ToolManager.yml
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/gui/toolmanager/ToolManager.yml	(revision 657)
+++ AE/installer2/src/net/oni2/aeinstaller/gui/toolmanager/ToolManager.yml	(revision 658)
@@ -2,5 +2,5 @@
   name: frame
   title: frame.title
-  size: packed
+  size: 950x600
   locationRelativeTo: null
   defaultCloseOperation: disposeOnClose
@@ -10,39 +10,15 @@
     - JSplitPane(name=contents, orientation=horizontalSplit, continuousLayout=true):
         - JPanel(name=panTools):
-            - JScrollPane(name=scrollTools, vScrollBar=always, hScrollBar=asNeeded):
-                JList(name=lstTools)
+            - JScrollPane(name=scrollTools, vScrollBar=always, hScrollBar=never)
             - MigLayout: |
                  [grow]
                  scrollTools   [grow]
         - JPanel(name=panInfo):
-            - JLabel(name=lblTitle, text=lblTitle.text)
-            - JLabel(name=lblTitleVal)
-            - JLabel(name=lblCreator, text=lblCreator.text)
-            - JLabel(name=lblCreatorVal)
-            - JLabel(name=lblPlatform, text=lblPlatform.text)
-            - JLabel(name=lblPlatformVal)
-            - JLabel(name=lblPackageNumber, text=lblPackageNumber.text)
-            - JLabel(name=lblPackageNumberVal)
-            - JLabel(name=lblVersionNumber, text=lblVersionNumber.text)
-            - JLabel(name=lblVersionNumberVal)
-            - JLabel(name=lblLastChange, text=lblLastChange.text)
-            - JLabel(name=lblLastChangeVal)
-            - JLabel(name=lblDescription, text=lblDescription.text)
-            - JScrollPane(name=scrollDescription, vScrollBar=always, hScrollBar=asNeeded):
-                HTMLLinkLabel(name=lblDescriptionVal)
-            - JLabel(name=lblDownloadSize, text=lblDownloadSize.text)
-            - JLabel(name=lblDownloadSizeVal)
+            - PackageInfoBox(name=pkgInfo)
             - JButton(name=btnInstall, icon=img.install, text=btnInstall.text, toolTipText=btnInstall.tooltip, enabled=false, onAction=[install])
             - MigLayout: |
-                 [min]             [grow]
-                 >lblTitle         lblTitleVal         [min]
-                 >lblCreator       lblCreatorVal       [min]
-                 >lblPlatform      lblPlatformVal      [min]
-                 >lblPackageNumber lblPackageNumberVal [min]
-                 >lblVersionNumber lblVersionNumberVal [min]
-                 >lblLastChange    lblLastChangeVal    [min]
-                 >^lblDescription  scrollDescription   [grow]
-                 >lblDownloadSize  lblDownloadSizeVal  [min]
-                 >btnInstall+*<                        [min]
+                 [grow]
+                 pkgInfo        [grow]
+                 >btnInstall<   [min]
     - MigLayout: |
          [grow]
Index: AE/installer2/src/net/oni2/aeinstaller/localization/CorePackagesDialog.properties
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/localization/CorePackagesDialog.properties	(revision 657)
+++ AE/installer2/src/net/oni2/aeinstaller/localization/CorePackagesDialog.properties	(revision 658)
@@ -1,3 +1,1 @@
 frame.title=AE Installer: Core packages
-
-lblDownloadSize.text=Download size of this package:
Index: AE/installer2/src/net/oni2/aeinstaller/localization/Global.properties
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/localization/Global.properties	(revision 657)
+++ AE/installer2/src/net/oni2/aeinstaller/localization/Global.properties	(revision 658)
@@ -10,13 +10,2 @@
 offlineModeStartup.title=Offline mode
 offlineModeStartup.text=Connection to the ModDepot could not be established.\nAEI will run in offline mode.\nUpdates or installation of mods not already downloaded will not be possible.
-
-
-lblTitle.text=Name:
-lblCreator.text=Creator:
-lblTypes.text=Types:
-lblPlatform.text=Platform:
-lblPackageNumber.text=Package number:
-lblVersionNumber.text=Version number:
-lblFiles.text=Number of files:
-lblLastChange.text=Last change:
-lblDescription.text=Description:
Index: AE/installer2/src/net/oni2/aeinstaller/localization/PackageInfoBox.properties
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/localization/PackageInfoBox.properties	(revision 658)
+++ AE/installer2/src/net/oni2/aeinstaller/localization/PackageInfoBox.properties	(revision 658)
@@ -0,0 +1,9 @@
+lblTitle.text=Name:
+lblCreator.text=Creator:
+lblTypes.text=Types:
+lblPlatform.text=Platform:
+lblPackageNumber.text=Package number:
+lblVersionNumber.text=Version number:
+lblFiles.text=Number of files:
+lblDescription.text=Description:
+lblDownloadSize.text=Download size:
Index: AE/installer2/src/net/oni2/aeinstaller/localization/ToolManager.properties
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/localization/ToolManager.properties	(revision 657)
+++ AE/installer2/src/net/oni2/aeinstaller/localization/ToolManager.properties	(revision 658)
@@ -5,4 +5,2 @@
 btnInstall.un.text=Uninstall
 btnInstall.un.tooltip=Uninstall this tool
-
-lblDownloadSize.text=Download size of this package: 
