Index: AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.java	(revision 672)
+++ AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.java	(revision 673)
@@ -60,5 +60,5 @@
 import net.oni2.aeinstaller.gui.corepackages.CorePackagesDialog;
 import net.oni2.aeinstaller.gui.downloadwindow.Downloader;
-import net.oni2.aeinstaller.gui.modtable.DownloadSizeListener;
+import net.oni2.aeinstaller.gui.modtable.ModInstallSelectionListener;
 import net.oni2.aeinstaller.gui.modtable.EApplyFilterTo;
 import net.oni2.aeinstaller.gui.modtable.ModSelectionListener;
@@ -80,5 +80,5 @@
  */
 public class MainWin extends JFrame implements ApplicationListener,
-		DownloadSizeListener, ModSelectionListener {
+		ModInstallSelectionListener, ModSelectionListener {
 	private static final long serialVersionUID = -4027395051382659650L;
 
@@ -103,4 +103,5 @@
 	private JScrollPane scrollMods;
 	private ModTable tblMods;
+	private JLabel lblSelectedModsVal;
 	private JLabel lblDownloadSizeVal;
 
@@ -147,4 +148,5 @@
 
 		getRootPane().setDefaultButton(btnInstall);
+		lblSelectedModsVal.setText("0");
 		lblDownloadSizeVal.setText(SizeFormatter.format(0, 2));
 		radAll.setSelected(true);
@@ -492,5 +494,6 @@
 										JOptionPane.ERROR_MESSAGE);
 							if (ex.getMessage().contains(".NET"))
-								JOptionPane.showMessageDialog(null,
+								JOptionPane.showMessageDialog(
+										null,
 										bundle.getString("dotNetNotFound.text"),
 										bundle.getString("dotNetNotFound.title"),
@@ -782,5 +785,6 @@
 
 	@Override
-	public void downloadSizeChanged(int newSize) {
+	public void modInstallSelectionChanged(int newSize, int newCount) {
+		lblSelectedModsVal.setText(String.valueOf(newCount));
 		lblDownloadSizeVal.setText(SizeFormatter.format(newSize, 2));
 	}
Index: AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.yml
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.yml	(revision 672)
+++ AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.yml	(revision 673)
@@ -64,14 +64,17 @@
             - JButton(name=btnRevertSelection, icon=img.undo16, text=btnRevertSelection.text, toolTipText=btnRevertSelection.tooltip, onAction=[revertSelection])
             - JButton(name=btnInstall, icon=img.install, text=btnInstall.text, toolTipText=btnInstall.tooltip, onAction=[install,installExec,installDone])
+            - JLabel(name=lblSelectedMods, text=lblSelectedMods.text)
+            - JLabel(name=lblSelectedModsVal)
             - JLabel(name=lblDownloadSize, text=lblDownloadSize.text)
             - JLabel(name=lblDownloadSizeVal)
             - MigLayout: |
-                 [min]           [grow]
-                 >lblModTypes    cmbModTypes                       [min]
-                 >lblShowOnly    radAll,radOnline,radLocal         [min]
-                 >lblShowFilter  txtShowFilter>,cmbShowFilterTo<   [min]
-                 scrollMods+*                                      [grow]
-                 >btnUnSelectAll+*,>btnRevertSelection,btnInstall  [min]
-                 lblDownloadSize+*,lblDownloadSizeVal              [min]
+                 [min]           [grow]                           [min]
+                 >lblModTypes    cmbModTypes+*                                     [min]
+                 >lblShowOnly    radAll+*,radOnline,radLocal                       [min]
+                 >lblShowFilter  txtShowFilter+*>,cmbShowFilterTo<                 [min]
+                 scrollMods+*                                                      [grow]
+                 >btnUnSelectAll+*,btnRevertSelection                              [min]
+                 lblSelectedMods+2,lblSelectedModsVal             >btnInstall+*+*  [min]
+                 lblDownloadSize+2,lblDownloadSizeVal                              [min]
         - PackageInfoBox(name=pkgInfo)
     - MigLayout:
Index: AE/installer2/src/net/oni2/aeinstaller/gui/modtable/DownloadSizeListener.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/gui/modtable/DownloadSizeListener.java	(revision 672)
+++ 	(revision )
@@ -1,12 +1,0 @@
-package net.oni2.aeinstaller.gui.modtable;
-
-/**
- * @author Christian Illy
- */
-public interface DownloadSizeListener {
-	/**
-	 * @param newSize
-	 *            New size of files to download
-	 */
-	public void downloadSizeChanged(int newSize);
-}
Index: AE/installer2/src/net/oni2/aeinstaller/gui/modtable/ModInstallSelectionListener.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/gui/modtable/ModInstallSelectionListener.java	(revision 673)
+++ AE/installer2/src/net/oni2/aeinstaller/gui/modtable/ModInstallSelectionListener.java	(revision 673)
@@ -0,0 +1,14 @@
+package net.oni2.aeinstaller.gui.modtable;
+
+/**
+ * @author Christian Illy
+ */
+public interface ModInstallSelectionListener {
+	/**
+	 * @param newSize
+	 *            New size of files to download
+	 * @param newCount
+	 *            New number of mods selected for installation
+	 */
+	public void modInstallSelectionChanged(int newSize, int newCount);
+}
Index: AE/installer2/src/net/oni2/aeinstaller/gui/modtable/ModTable.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/gui/modtable/ModTable.java	(revision 672)
+++ AE/installer2/src/net/oni2/aeinstaller/gui/modtable/ModTable.java	(revision 673)
@@ -38,4 +38,5 @@
 import net.oni2.aeinstaller.backend.packages.Package;
 import net.oni2.aeinstaller.backend.packages.Type;
+import net.oni2.aeinstaller.gui.downloadwindow.Downloader;
 
 /**
@@ -173,5 +174,5 @@
 	 *            Listener to add
 	 */
-	public void addDownloadSizeListener(DownloadSizeListener listener) {
+	public void addDownloadSizeListener(ModInstallSelectionListener listener) {
 		model.addDownloadSizeListener(listener);
 	}
@@ -181,5 +182,5 @@
 	 *            Listener to remove
 	 */
-	public void removeDownloadSizeListener(DownloadSizeListener listener) {
+	public void removeDownloadSizeListener(ModInstallSelectionListener listener) {
 		model.removeDownloadSizeListener(listener);
 	}
@@ -332,4 +333,27 @@
 						});
 						popup.add(openDepotPage);
+					}
+
+					if (mod.getFile() != null) {
+						// Download package
+						JMenuItem downloadPackage = new JMenuItem(
+								bundle.getString("downloadPackage.text"));
+						downloadPackage.addActionListener(new ActionListener() {
+							@Override
+							public void actionPerformed(ActionEvent arg0) {
+								TreeSet<Package> toDo = new TreeSet<Package>();
+								TreeSet<Package> deps = new TreeSet<Package>();
+								toDo.add(mod);
+								Downloader dl = new Downloader(toDo, deps);
+								try {
+									dl.setVisible(true);
+								} finally {
+									dl.dispose();
+								}
+								invalidate();
+								repaint();
+							}
+						});
+						popup.add(downloadPackage);
 					}
 
Index: AE/installer2/src/net/oni2/aeinstaller/gui/modtable/ModTableModel.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/gui/modtable/ModTableModel.java	(revision 672)
+++ AE/installer2/src/net/oni2/aeinstaller/gui/modtable/ModTableModel.java	(revision 673)
@@ -29,5 +29,5 @@
 	private Vector<Boolean> install = new Vector<Boolean>();
 
-	private HashSet<DownloadSizeListener> listeners = new HashSet<DownloadSizeListener>();
+	private HashSet<ModInstallSelectionListener> listeners = new HashSet<ModInstallSelectionListener>();
 
 	private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
@@ -210,8 +210,12 @@
 	public void revertSelection() {
 		install.clear();
+		int count = 0;
 		for (int i = 0; i < items.size(); i++) {
-			install.add(i, items.get(i).isInstalled());
-		}
-		notifyDownloadSize(0);
+			boolean installed = items.get(i).isInstalled();
+			install.add(i, installed);
+			if (installed)
+				count++;
+		}
+		notifyDownloadSize(0, count);
 		fireTableDataChanged();
 	}
@@ -262,7 +266,7 @@
 	}
 
-	private void notifyDownloadSize(int size) {
-		for (DownloadSizeListener dsl : listeners)
-			dsl.downloadSizeChanged(size);
+	private void notifyDownloadSize(int size, int count) {
+		for (ModInstallSelectionListener dsl : listeners)
+			dsl.modInstallSelectionChanged(size, count);
 	}
 
@@ -274,6 +278,8 @@
 
 			int size = 0;
+			int count = 0;
 			for (int i = 0; i < items.size(); i++) {
 				if (install.get(i)) {
+					count++;
 					Package m = items.get(i);
 					if (!m.isLocalAvailable())
@@ -281,5 +287,5 @@
 				}
 			}
-			notifyDownloadSize(size);
+			notifyDownloadSize(size, count);
 		}
 	}
@@ -289,5 +295,5 @@
 	 *            Listener to receive download size changed events
 	 */
-	public void addDownloadSizeListener(DownloadSizeListener lis) {
+	public void addDownloadSizeListener(ModInstallSelectionListener lis) {
 		listeners.add(lis);
 	}
@@ -297,5 +303,5 @@
 	 *            Listener to no longer receive download size changed events
 	 */
-	public void removeDownloadSizeListener(DownloadSizeListener lis) {
+	public void removeDownloadSizeListener(ModInstallSelectionListener lis) {
 		listeners.remove(lis);
 	}
