Index: AE/installer2/src/net/oni2/aeinstaller/gui/toolmanager/ToolManager.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/gui/toolmanager/ToolManager.java	(revision 637)
+++ AE/installer2/src/net/oni2/aeinstaller/gui/toolmanager/ToolManager.java	(revision 640)
@@ -6,4 +6,5 @@
 import java.util.ResourceBundle;
 import java.util.TreeMap;
+import java.util.TreeSet;
 
 import javax.swing.AbstractAction;
@@ -23,4 +24,5 @@
 import javax.swing.event.ListSelectionListener;
 
+import net.oni2.aeinstaller.backend.Settings;
 import net.oni2.aeinstaller.backend.SizeFormatter;
 import net.oni2.aeinstaller.backend.mods.Mod;
@@ -28,4 +30,5 @@
 import net.oni2.aeinstaller.backend.oni.Installer;
 import net.oni2.aeinstaller.gui.HTMLLinkLabel;
+import net.oni2.aeinstaller.gui.downloadwindow.Downloader;
 
 import org.javabuilders.BuildResult;
@@ -45,7 +48,8 @@
 
 	private JSplitPane contents;
-	
+
 	private JList lstTools;
 
+	private JLabel lblTitleVal;
 	private JLabel lblSubmitterVal;
 	private JLabel lblCreatorVal;
@@ -101,15 +105,46 @@
 	@SuppressWarnings("unused")
 	private void install() {
-		// TODO: care for offline mode
-		JOptionPane.showMessageDialog(this, "install", "todo",
-				JOptionPane.INFORMATION_MESSAGE);
-	}
+		Object o = lstTools.getSelectedValue();
+		if (o instanceof Mod) {
+			Mod theMod = (Mod) o;
 
-	@SuppressWarnings("unused")
-	private void installDone() {
+			if (theMod.isInstalled()) {
+				TreeSet<Mod> tools = new TreeSet<Mod>();
+				tools.add(theMod);
+				Installer.uninstallTools(tools);
+			} else {
+				if (!theMod.isLocalAvailable()) {
+					if (Settings.getInstance().isOfflineMode()) {
+						JOptionPane.showMessageDialog(this,
+								bundle.getString("offlineMode.text"),
+								bundle.getString("offlineMode.title"),
+								JOptionPane.WARNING_MESSAGE);
+						return;
+					}
+
+					TreeSet<Mod> toDownload = new TreeSet<Mod>();
+					toDownload.add(theMod);
+
+					Downloader dl = new Downloader(toDownload);
+					try {
+						dl.setVisible(true);
+						if (!dl.isFinished())
+							return;
+					} finally {
+						dl.dispose();
+					}
+				}
+
+				TreeSet<Mod> tools = new TreeSet<Mod>();
+				tools.add(theMod);
+				Installer.installTools(tools);
+			}
+		}
+		valueChanged(null);
 	}
 
 	@Override
 	public void valueChanged(ListSelectionEvent evt) {
+		lblTitleVal.setText("");
 		lblSubmitterVal.setText("");
 		lblCreatorVal.setText("");
@@ -123,5 +158,6 @@
 		if (lstTools.getSelectedValue() instanceof Mod) {
 			Mod m = (Mod) lstTools.getSelectedValue();
-			lblSubmitterVal.setText(m.getName());
+			lblTitleVal.setText(m.getName());
+			lblSubmitterVal.setText(m.getSubmitter());
 			lblCreatorVal.setText(m.getCreator());
 			lblDescriptionVal.setText(m.getDescription());
@@ -130,5 +166,5 @@
 			lblDownloadSizeVal.setText(SizeFormatter.format(m.getZipSize(), 3));
 			btnInstall.setEnabled(true);
-			if (Installer.getInstalledTools().contains(m.getPackageNumber())) {
+			if (m.isInstalled()) {
 				btnInstall.setText(bundle.getString("btnInstall.un.text"));
 				btnInstall.setToolTipText(bundle
Index: AE/installer2/src/net/oni2/aeinstaller/gui/toolmanager/ToolManager.yml
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/gui/toolmanager/ToolManager.yml	(revision 637)
+++ AE/installer2/src/net/oni2/aeinstaller/gui/toolmanager/ToolManager.yml	(revision 640)
@@ -16,4 +16,6 @@
                  scrollTools   [grow]
         - JPanel(name=panInfo):
+            - JLabel(name=lblTitle, text=lblTitle.text)
+            - JLabel(name=lblTitleVal)
             - JLabel(name=lblSubmitter, text=lblSubmitter.text)
             - JLabel(name=lblSubmitterVal)
@@ -29,7 +31,8 @@
             - JLabel(name=lblDownloadSize, text=lblDownloadSize.text)
             - JLabel(name=lblDownloadSizeVal)
-            - JButton(name=btnInstall, icon=img.install, text=btnInstall.text, toolTipText=btnInstall.tooltip, enabled=false, onAction=[install,installDone])
+            - JButton(name=btnInstall, icon=img.install, text=btnInstall.text, toolTipText=btnInstall.tooltip, enabled=false, onAction=[install])
             - MigLayout: |
                  [min]             [grow]
+                 >lblTitle         lblTitleVal         [min]
                  >lblSubmitter     lblSubmitterVal     [min]
                  >lblCreator       lblCreatorVal       [min]
