diff --git a/apps/routerconsole/java/src/net/i2p/router/update/ConsoleUpdateManager.java b/apps/routerconsole/java/src/net/i2p/router/update/ConsoleUpdateManager.java
index b61bc40745bc290df1861e78554e33915ed08069..b927595d15c6abb5192eac9d7c0362f20419d673 100644
--- a/apps/routerconsole/java/src/net/i2p/router/update/ConsoleUpdateManager.java
+++ b/apps/routerconsole/java/src/net/i2p/router/update/ConsoleUpdateManager.java
@@ -9,8 +9,6 @@ import java.text.DecimalFormat;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.Comparator;
-import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -25,7 +23,6 @@ import net.i2p.data.DataHelper;
 import net.i2p.router.Router;
 import net.i2p.router.RouterContext;
 import net.i2p.router.RouterVersion;
-import net.i2p.router.util.RFC822Date;
 import net.i2p.router.web.ConfigServiceHandler;
 import net.i2p.router.web.ConfigUpdateHandler;
 import net.i2p.router.web.Messages;
@@ -37,7 +34,6 @@ import static net.i2p.update.UpdateMethod.*;
 import net.i2p.util.ConcurrentHashSet;
 import net.i2p.util.FileUtil;
 import net.i2p.util.Log;
-import net.i2p.util.SimpleScheduler;
 import net.i2p.util.SimpleTimer;
 import net.i2p.util.VersionComparator;
 
@@ -84,13 +80,13 @@ public class ConsoleUpdateManager implements UpdateManager {
     public ConsoleUpdateManager(RouterContext ctx) {
         _context = ctx;
         _log = ctx.logManager().getLog(ConsoleUpdateManager.class);
-        _registeredUpdaters = new ConcurrentHashSet();
-        _registeredCheckers = new ConcurrentHashSet();
-        _activeCheckers = new ConcurrentHashSet();
-        _downloaders = new ConcurrentHashMap();
-        _available = new ConcurrentHashMap();
-        _downloaded = new ConcurrentHashMap();
-        _installed = new ConcurrentHashMap();
+        _registeredUpdaters = new ConcurrentHashSet<RegisteredUpdater>();
+        _registeredCheckers = new ConcurrentHashSet<RegisteredChecker>();
+        _activeCheckers = new ConcurrentHashSet<UpdateTask>();
+        _downloaders = new ConcurrentHashMap<UpdateTask, List<RegisteredUpdater>>();
+        _available = new ConcurrentHashMap<UpdateItem, VersionAvailable>();
+        _downloaded = new ConcurrentHashMap<UpdateItem, Version>();
+        _installed = new ConcurrentHashMap<UpdateItem, Version>();
         _status = "";
         // DEBUG slow start for snark updates
         // For 0.9.4 update, only for dev builds
@@ -111,7 +107,7 @@ public class ConsoleUpdateManager implements UpdateManager {
         notifyInstalled(ROUTER_SIGNED_SU3, "", RouterVersion.VERSION);
         // hack to init from the current news file... do this before we register Updaters
         // This will not kick off any Updaters as none are yet registered
-        (new NewsFetcher(_context, this, Collections.EMPTY_LIST)).checkForUpdates();
+        (new NewsFetcher(_context, this, Collections.<URI> emptyList())).checkForUpdates();
         for (String plugin : PluginStarter.getPlugins()) {
             Properties props = PluginStarter.pluginProperties(_context, plugin);
             String ver = props.getProperty("version");
@@ -123,7 +119,7 @@ public class ConsoleUpdateManager implements UpdateManager {
         DummyHandler dh = new DummyHandler(_context, this);
         register((Checker)dh, TYPE_DUMMY, METHOD_DUMMY, 0);
         register((Updater)dh, TYPE_DUMMY, METHOD_DUMMY, 0);
-        VersionAvailable dummyVA = new VersionAvailable("", "", METHOD_DUMMY, Collections.EMPTY_LIST);
+        VersionAvailable dummyVA = new VersionAvailable("", "", METHOD_DUMMY, Collections.<URI> emptyList());
         _available.put(new UpdateItem(TYPE_DUMMY, ""), dummyVA);
         // register news before router, so we don't fire off an update
         // right at instantiation if the news is already indicating a new version
@@ -526,7 +522,7 @@ public class ConsoleUpdateManager implements UpdateManager {
                 _log.warn("No version available for: " + type + ' ' + id);
             return false;
         }
-        List<RegisteredUpdater> sorted = new ArrayList(4);
+        List<RegisteredUpdater> sorted = new ArrayList<RegisteredUpdater>(4);
         for (RegisteredUpdater ru : _registeredUpdaters) {
             if (ru.type == type)
                 sorted.add(ru);
@@ -1069,7 +1065,7 @@ public class ConsoleUpdateManager implements UpdateManager {
               { // avoid dup variables in next case
                 String URLs = _context.getProperty(ConfigUpdateHandler.PROP_UPDATE_URL, ConfigUpdateHandler.DEFAULT_UPDATE_URL);
                 StringTokenizer tok = new StringTokenizer(URLs, " ,\r\n");
-                List<URI> rv = new ArrayList();
+                List<URI> rv = new ArrayList<URI>();
                 while (tok.hasMoreTokens()) {
                     try {
                         rv.add(new URI(tok.nextToken().trim()));
@@ -1083,7 +1079,7 @@ public class ConsoleUpdateManager implements UpdateManager {
               {
                 String URLs = ConfigUpdateHandler.SU3_UPDATE_URLS;
                 StringTokenizer tok = new StringTokenizer(URLs, " ,\r\n");
-                List<URI> rv = new ArrayList();
+                List<URI> rv = new ArrayList<URI>();
                 while (tok.hasMoreTokens()) {
                     try {
                         rv.add(new URI(tok.nextToken().trim()));
@@ -1115,7 +1111,7 @@ public class ConsoleUpdateManager implements UpdateManager {
              default:
                 break;
         }
-        return Collections.EMPTY_LIST;
+        return Collections.emptyList();
     }
     
     /**
@@ -1494,7 +1490,7 @@ public class ConsoleUpdateManager implements UpdateManager {
         public VersionAvailable(String version, String min, UpdateMethod method, List<URI> updateSources) {
             super(version);
             minVersion = min;
-            sourceMap = new ConcurrentHashMap(4);
+            sourceMap = new ConcurrentHashMap<UpdateMethod, List<URI>>(4);
             sourceMap.put(method, updateSources);
         }
 
@@ -1505,7 +1501,7 @@ public class ConsoleUpdateManager implements UpdateManager {
         public VersionAvailable(String version, String constraint) {
             super(version);
             minVersion = "";
-            sourceMap = new ConcurrentHashMap(4);
+            sourceMap = new ConcurrentHashMap<UpdateMethod, List<URI>>(4);
             this.constraint = constraint;
         }
 
@@ -1539,7 +1535,7 @@ public class ConsoleUpdateManager implements UpdateManager {
 
     /** debug */
     private static void toString(StringBuilder buf, Collection col) {
-        List<String> list = new ArrayList(col.size());
+        List<String> list = new ArrayList<String>(col.size());
         for (Object o : col) {
             list.add(o.toString());
         }
@@ -1551,7 +1547,7 @@ public class ConsoleUpdateManager implements UpdateManager {
 
     /** debug */
     private static void toString(StringBuilder buf, Map<?, ?> map) {
-        List<String> list = new ArrayList(map.size());
+        List<String> list = new ArrayList<String>(map.size());
         for (Map.Entry entry : map.entrySet()) {
             String key = entry.getKey().toString();
             String val = entry.getValue().toString();
diff --git a/apps/routerconsole/java/src/net/i2p/router/update/DummyHandler.java b/apps/routerconsole/java/src/net/i2p/router/update/DummyHandler.java
index d93872a6ffa1b06fbb5849af061e1e67d6f10acb..c72dc20d6b26569e2221e2f18e6eeefdfd6e2fd3 100644
--- a/apps/routerconsole/java/src/net/i2p/router/update/DummyHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/update/DummyHandler.java
@@ -48,7 +48,7 @@ class DummyHandler implements Checker, Updater {
         private final long _delay;
 
         public DummyRunner(RouterContext ctx, ConsoleUpdateManager mgr, long maxTime) {
-            super(ctx, mgr, UpdateType.TYPE_DUMMY, Collections.EMPTY_LIST);
+            super(ctx, mgr, UpdateType.TYPE_DUMMY, Collections.<URI> emptyList());
             _delay = maxTime;
         }
 
diff --git a/apps/routerconsole/java/src/net/i2p/router/update/NewsFetcher.java b/apps/routerconsole/java/src/net/i2p/router/update/NewsFetcher.java
index 92545c9488770fe8c4e6057bf003c50a2c03b137..a9087f52c5cae815461bfed228e2258dbc578d4e 100644
--- a/apps/routerconsole/java/src/net/i2p/router/update/NewsFetcher.java
+++ b/apps/routerconsole/java/src/net/i2p/router/update/NewsFetcher.java
@@ -5,10 +5,8 @@ import java.io.FileInputStream;
 import java.io.IOException;
 import java.net.URI;
 import java.net.URISyntaxException;
-import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Locale;
@@ -17,18 +15,15 @@ import java.util.StringTokenizer;
 
 import net.i2p.crypto.TrustedUpdate;
 import net.i2p.data.DataHelper;
-import net.i2p.router.Router;
 import net.i2p.router.RouterContext;
 import net.i2p.router.RouterVersion;
 import net.i2p.router.util.RFC822Date;
 import net.i2p.router.web.ConfigUpdateHandler;
-import net.i2p.router.web.ConfigUpdateHelper;
 import net.i2p.router.web.NewsHelper;
 import net.i2p.update.*;
 import static net.i2p.update.UpdateType.*;
 import static net.i2p.update.UpdateMethod.*;
 import net.i2p.util.EepGet;
-import net.i2p.util.EepHead;
 import net.i2p.util.FileUtil;
 import net.i2p.util.Log;
 import net.i2p.util.SSLEepGet;
@@ -177,7 +172,7 @@ class NewsFetcher extends UpdateRunner {
                             // TODO if minversion > our version, continue
                             // and look for a second entry with clearnet URLs
                             // TODO clearnet URLs, notify with HTTP_CLEARNET and/or HTTPS_CLEARNET
-                            Map<UpdateMethod, List<URI>> sourceMap = new HashMap(4);
+                            Map<UpdateMethod, List<URI>> sourceMap = new HashMap<UpdateMethod, List<URI>>(4);
                             // Must do su3 first
                             if (ConfigUpdateHandler.USE_SU3_UPDATE) {
                                 sourceMap.put(HTTP, _mgr.getUpdateURLs(ROUTER_SIGNED_SU3, "", HTTP));
@@ -231,7 +226,7 @@ class NewsFetcher extends UpdateRunner {
      *  @since 0.9.4
      */
     private static Map<String, String> parseArgs(String args) {
-        Map<String, String> rv = new HashMap(8);
+        Map<String, String> rv = new HashMap<String, String>(8);
         char data[] = args.toCharArray();
         StringBuilder buf = new StringBuilder(32);
         boolean isQuoted = false;
@@ -290,7 +285,7 @@ class NewsFetcher extends UpdateRunner {
 
     private static List<URI> tokenize(String URLs) {
         StringTokenizer tok = new StringTokenizer(URLs, " ,\r\n");
-        List<URI> rv = new ArrayList();
+        List<URI> rv = new ArrayList<URI>();
         while (tok.hasMoreTokens()) {
             try {
                 rv.add(new URI(tok.nextToken().trim()));
diff --git a/apps/routerconsole/java/src/net/i2p/router/update/NewsHandler.java b/apps/routerconsole/java/src/net/i2p/router/update/NewsHandler.java
index 0f955aec6f4f767f5be7ba8c71c000e05466024b..f2703fde922adf292f12078d9de15144b1e99335 100644
--- a/apps/routerconsole/java/src/net/i2p/router/update/NewsHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/update/NewsHandler.java
@@ -38,7 +38,7 @@ class NewsHandler extends UpdateHandler implements Checker {
         if ((type != ROUTER_SIGNED && type != NEWS) ||
             method != HTTP)
             return null;
-        List<URI> updateSources = new ArrayList(2);
+        List<URI> updateSources = new ArrayList<URI>(2);
         try {
             updateSources.add(new URI(ConfigUpdateHelper.getNewsURL(_context)));
         } catch (URISyntaxException use) {}
diff --git a/apps/routerconsole/java/src/net/i2p/router/update/NewsTimerTask.java b/apps/routerconsole/java/src/net/i2p/router/update/NewsTimerTask.java
index 9f185717e465e4d4b55a2f70a065df95bd0af3f1..7aea9afc3dd53bb235d0baffb7abd3e32d8fa50c 100644
--- a/apps/routerconsole/java/src/net/i2p/router/update/NewsTimerTask.java
+++ b/apps/routerconsole/java/src/net/i2p/router/update/NewsTimerTask.java
@@ -1,30 +1,12 @@
 package net.i2p.router.update;
 
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-import net.i2p.crypto.TrustedUpdate;
 import net.i2p.data.DataHelper;
-import net.i2p.router.Router;
 import net.i2p.router.RouterContext;
-import net.i2p.router.RouterVersion;
 import net.i2p.router.web.ConfigUpdateHandler;
-import net.i2p.router.web.ConfigUpdateHelper;
 import net.i2p.router.web.NewsHelper;
 import static net.i2p.update.UpdateType.*;
-import net.i2p.util.EepGet;
-import net.i2p.util.EepHead;
-import net.i2p.util.FileUtil;
 import net.i2p.util.I2PAppThread;
 import net.i2p.util.Log;
-import net.i2p.util.SimpleScheduler;
 import net.i2p.util.SimpleTimer;
 
 /**
diff --git a/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateChecker.java b/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateChecker.java
index 5e4ceb2813509c8023a7aa642244bfd2def184b5..fe8bf2d11ac3c01492b87d3b6ffbe0721885b350 100644
--- a/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateChecker.java
+++ b/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateChecker.java
@@ -1,20 +1,13 @@
 package net.i2p.router.update;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.net.URI;
 import java.util.List;
-import java.util.Properties;
-
 import net.i2p.crypto.TrustedUpdate;
 import net.i2p.router.RouterContext;
 import net.i2p.router.web.ConfigUpdateHandler;
 import net.i2p.update.*;
-import net.i2p.util.EepGet;
-import net.i2p.util.I2PAppThread;
 import net.i2p.util.PartialEepGet;
-import net.i2p.util.VersionComparator;
 
 /**
  * Check for an updated version of a plugin.
diff --git a/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateRunner.java b/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateRunner.java
index 78e03e03652b5792a40f28d8f687c05d6d923500..d532a9c5c662f641c8910bd19c970966dbba4f03 100644
--- a/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateRunner.java
+++ b/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateRunner.java
@@ -20,13 +20,10 @@ import net.i2p.router.web.PluginStarter;
 import net.i2p.update.*;
 import net.i2p.util.EepGet;
 import net.i2p.util.FileUtil;
-import net.i2p.util.I2PAppThread;
 import net.i2p.util.Log;
 import net.i2p.util.OrderedProperties;
 import net.i2p.util.SecureDirectory;
 import net.i2p.util.SecureFile;
-import net.i2p.util.SimpleScheduler;
-import net.i2p.util.SimpleTimer;
 import net.i2p.util.VersionComparator;
 
 
diff --git a/apps/routerconsole/java/src/net/i2p/router/update/UnsignedUpdateChecker.java b/apps/routerconsole/java/src/net/i2p/router/update/UnsignedUpdateChecker.java
index fddc6486e0d3d4b0dd4468530d2f795cce026927..635d5d85ffba1e4532be30f15ef20492aaa39676 100644
--- a/apps/routerconsole/java/src/net/i2p/router/update/UnsignedUpdateChecker.java
+++ b/apps/routerconsole/java/src/net/i2p/router/update/UnsignedUpdateChecker.java
@@ -1,6 +1,5 @@
 package net.i2p.router.update;
 
-import java.io.File;
 import java.net.URI;
 import java.util.List;
 
@@ -9,8 +8,6 @@ import net.i2p.router.util.RFC822Date;
 import net.i2p.router.web.ConfigUpdateHandler;
 import net.i2p.update.*;
 import net.i2p.util.EepHead;
-import net.i2p.util.I2PAppThread;
-import net.i2p.util.Log;
 
 /**
  *  Does a simple EepHead to get the last-modified header.
diff --git a/apps/routerconsole/java/src/net/i2p/router/update/UnsignedUpdateHandler.java b/apps/routerconsole/java/src/net/i2p/router/update/UnsignedUpdateHandler.java
index 0cfcbc94955389290409aca1fcfc24c4e4cea7d3..516f1e4aaa64bd6f44d99088779616727fb8cecd 100644
--- a/apps/routerconsole/java/src/net/i2p/router/update/UnsignedUpdateHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/update/UnsignedUpdateHandler.java
@@ -1,6 +1,5 @@
 package net.i2p.router.update;
 
-import java.io.File;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.util.Collections;
diff --git a/apps/routerconsole/java/src/net/i2p/router/update/UnsignedUpdateRunner.java b/apps/routerconsole/java/src/net/i2p/router/update/UnsignedUpdateRunner.java
index 1216868542cdb58a919c7b76599da1762a156e7b..556d8b21a2383cf2b3a10e4ab1908593a572be0c 100644
--- a/apps/routerconsole/java/src/net/i2p/router/update/UnsignedUpdateRunner.java
+++ b/apps/routerconsole/java/src/net/i2p/router/update/UnsignedUpdateRunner.java
@@ -4,15 +4,11 @@ import java.io.File;
 import java.net.URI;
 import java.util.List;
 
-import net.i2p.router.Router;
 import net.i2p.router.RouterContext;
 import net.i2p.router.util.RFC822Date;
 import net.i2p.router.web.ConfigUpdateHandler;
-import net.i2p.update.*;
 import static net.i2p.update.UpdateType.*;
 import net.i2p.util.EepGet;
-import net.i2p.util.FileUtil;
-import net.i2p.util.I2PAppThread;
 import net.i2p.util.Log;
 
     
diff --git a/apps/routerconsole/java/src/net/i2p/router/update/UpdateRunner.java b/apps/routerconsole/java/src/net/i2p/router/update/UpdateRunner.java
index 8a10c5d97c767c0720834c9b4e674bf1ca7482b4..7417749ff40d651b17743b47f9feeeaa3adb31d6 100644
--- a/apps/routerconsole/java/src/net/i2p/router/update/UpdateRunner.java
+++ b/apps/routerconsole/java/src/net/i2p/router/update/UpdateRunner.java
@@ -6,10 +6,7 @@ import java.io.File;
 import java.net.URI;
 import java.util.List;
 import java.util.Locale;
-import java.util.StringTokenizer;
-
 import net.i2p.crypto.TrustedUpdate;
-import net.i2p.data.DataHelper;
 import net.i2p.router.RouterContext;
 import net.i2p.router.RouterVersion;
 import net.i2p.router.web.ConfigUpdateHandler;
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/BanlistRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/BanlistRenderer.java
index 276a6a5df205421a1ad0d4e2ced3ec14e065b8b1..e41dccee33d2760cd24e9c38a9bce3321b962c11 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/BanlistRenderer.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/BanlistRenderer.java
@@ -40,7 +40,7 @@ public class BanlistRenderer {
         StringBuilder buf = new StringBuilder(1024);
         // move to the jsp
         //buf.append("<h2>Banned Peers</h2>");
-        Map<Hash, Banlist.Entry> entries = new TreeMap(new HashComparator());
+        Map<Hash, Banlist.Entry> entries = new TreeMap<Hash, Banlist.Entry>(new HashComparator());
         
         entries.putAll(_context.banlist().getEntries());
         if (entries.isEmpty()) {
@@ -64,7 +64,7 @@ public class BanlistRenderer {
                 buf.append(_("Temporary ban expiring in {0}", expireString));
             else
                 buf.append(_("Banned until restart or in {0}", expireString));
-            Set transports = entry.transports;
+            Set<String> transports = entry.transports;
             if ( (transports != null) && (!transports.isEmpty()) )
                 buf.append(" on the following transport: ").append(transports);
             if (entry.cause != null) {
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java
index 2c0a70c90af4109d7a760be5c0e03bd7f38da9cd..a0ae4a533ddb5c0112f47866059cbf0aab47510f 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java
@@ -11,7 +11,7 @@ import net.i2p.util.RandomSource;
  */
 public class CSSHelper extends HelperBase {
 
-    private static final Map<String, Boolean> _UACache = new ConcurrentHashMap();
+    private static final Map<String, Boolean> _UACache = new ConcurrentHashMap<String, Boolean>();
 
     public static final String PROP_UNIVERSAL_THEMING = "routerconsole.universal.theme";
     public static final String PROP_THEME_NAME = "routerconsole.theme";
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigAdvancedHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigAdvancedHandler.java
index e292ddb9a1a5dc0c972a38c022ae9af2ce9a2918..cac07deee0bddbda24366fcee417b7f289d844ea 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigAdvancedHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigAdvancedHandler.java
@@ -40,7 +40,7 @@ public class ConfigAdvancedHandler extends FormHandler {
      *
      */
     private void saveChanges() {
-        Set<String> unsetKeys = new HashSet(_context.router().getConfigSettings());
+        Set<String> unsetKeys = new HashSet<String>(_context.router().getConfigSettings());
         if (_config != null) {
             Properties props = new Properties();
             try {
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigAdvancedHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigAdvancedHelper.java
index e0315bf6d50979aa945926e0bba7645b9bc3107b..d42934e9f2bb7d4a35858d20b045a58908baac3e 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigAdvancedHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigAdvancedHelper.java
@@ -9,7 +9,7 @@ public class ConfigAdvancedHelper extends HelperBase {
     
     public String getSettings() {
         StringBuilder buf = new StringBuilder(4*1024);
-        TreeMap<String, String> sorted = new TreeMap();
+        TreeMap<String, String> sorted = new TreeMap<String, String>();
         sorted.putAll(_context.router().getConfigMap());
         for (Map.Entry<String, String> e : sorted.entrySet()) {
             String name = e.getKey();
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java
index 27774b0ca4f87c45ddf2c97bd55853a8e65958b8..695f9aeb091d2107bf3dd7e84a2ea8315b3b32e4 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java
@@ -16,7 +16,6 @@ import net.i2p.app.ClientAppState;
 import net.i2p.router.client.ClientManagerFacadeImpl;
 import net.i2p.router.startup.ClientAppConfig;
 import net.i2p.router.startup.LoadClientAppsJob;
-import net.i2p.router.startup.RouterAppManager;
 import net.i2p.router.update.ConsoleUpdateManager;
 import static net.i2p.update.UpdateType.*;
 
@@ -426,7 +425,7 @@ public class ConfigClientsHandler extends FormHandler {
      *  @since 0.8.3
      */
     private void saveInterfaceChanges() {
-        Map<String, String> changes = new HashMap();
+        Map<String, String> changes = new HashMap<String, String>();
         String port = getJettyString("port");
         if (port != null)
             changes.put(ClientManagerFacadeImpl.PROP_CLIENT_PORT, port);
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java
index 28febc9f277f53da1d1c8e019eb0ce7210cad9a1..9850bd383376b935ce8462bedd08a01b600d2fe4 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java
@@ -15,7 +15,6 @@ import net.i2p.data.DataHelper;
 import net.i2p.router.client.ClientManagerFacadeImpl;
 import net.i2p.router.startup.ClientAppConfig;
 import net.i2p.router.startup.LoadClientAppsJob;
-import net.i2p.router.startup.RouterAppManager;
 import net.i2p.util.Addresses;
 
 public class ConfigClientsHelper extends HelperBase {
@@ -58,7 +57,7 @@ public class ConfigClientsHelper extends HelperBase {
 
     /** @since 0.8.3 */
     public String[] intfcAddresses() {
-        ArrayList<String> al = new ArrayList(Addresses.getAllAddresses());
+        ArrayList<String> al = new ArrayList<String>(Addresses.getAllAddresses());
         return al.toArray(new String[al.size()]);
     }
 
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigHomeHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigHomeHandler.java
index 39b305fe81b3851433a1ec2c1716f4550257d7cd..16bccdfafd95d9848d8b919964577f5c92e2316b 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigHomeHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigHomeHandler.java
@@ -81,7 +81,7 @@ public class ConfigHomeHandler extends FormHandler {
                 addFormNotice(_("Added") + ": " + app.name);
             } else {
                 // deleting
-                Set<String> toDelete = new HashSet();
+                Set<String> toDelete = new HashSet<String>();
                 for (Object o : _settings.keySet()) {
                      if (!(o instanceof String))
                          continue;
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigLoggingHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigLoggingHelper.java
index ea8ec0aedca99061ede2590b182da01274633171..8333163578b47df07fe9cf74198afdc83809b79b 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigLoggingHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigLoggingHelper.java
@@ -32,7 +32,7 @@ public class ConfigLoggingHelper extends HelperBase {
     public String getLogLevelTable() {
         StringBuilder buf = new StringBuilder(32*1024);
         Properties limits = _context.logManager().getLimits();
-        TreeSet<String> sortedLogs = new TreeSet();
+        TreeSet<String> sortedLogs = new TreeSet<String>();
         for (Iterator iter = limits.keySet().iterator(); iter.hasNext(); ) {
             String prefix = (String)iter.next();
             sortedLogs.add(prefix);
@@ -98,7 +98,7 @@ public class ConfigLoggingHelper extends HelperBase {
     public String getNewClassBox() {
         List<Log> logs = _context.logManager().getLogs();
         Set limits = _context.logManager().getLimits().keySet();
-        TreeSet<String> sortedLogs = new TreeSet();
+        TreeSet<String> sortedLogs = new TreeSet<String>();
 
         for (Log log : logs) {
             String name = log.getName();
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHandler.java
index 9765d0dbe8019a6384ee4915b4f44c06cda22e69..dd626fbfc96ce7bd56dcbdac277fed67bf7d7e1e 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHandler.java
@@ -50,7 +50,7 @@ public class ConfigNetHandler extends FormHandler {
     private boolean _ratesOnly;
     private boolean _udpDisabled;
     private String _ipv6Mode;
-    private final Map<String, String> changes = new HashMap();
+    private final Map<String, String> changes = new HashMap<String, String>();
     private static final String PROP_HIDDEN = Router.PROP_HIDDEN_HIDDEN; // see Router for other choice
     
     @Override
@@ -150,7 +150,7 @@ public class ConfigNetHandler extends FormHandler {
     private void saveChanges() {
         boolean restartRequired = false;
         boolean error = false;
-        List<String> removes = new ArrayList();
+        List<String> removes = new ArrayList<String>();
         
         if (!_ratesOnly) {
             // IP Settings
@@ -162,7 +162,7 @@ public class ConfigNetHandler extends FormHandler {
                 if (_udpAutoIP.equals("fixed")) {
                     if (_settings == null)
                         _settings = Collections.EMPTY_MAP;
-                    Set<String> addrs = new TreeSet();
+                    Set<String> addrs = new TreeSet<String>();
                     for (Object o : _settings.keySet()) {
                         String k = (String) o;
                         if (k.startsWith("addr_")) {
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHelper.java
index 71f1cf63e09859ccd906269b375aa51aa5ac856a..d3450eb6f3ea8cfd3e8ba23ab4fe1cbdd37c47db 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHelper.java
@@ -1,6 +1,5 @@
 package net.i2p.router.web;
 
-import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.Set;
@@ -189,9 +188,9 @@ public class ConfigNetHelper extends HelperBase {
         Set<String> configs;
         String cs = getUdphostname();
         if (cs.length() <= 0) {
-            configs = Collections.EMPTY_SET;
+            configs = Collections.emptySet();
         } else {
-            configs = new HashSet(4);
+            configs = new HashSet<String>(4);
             String[] ca = cs.split("[,; \r\n\t]");
             for (int i = 0; i < ca.length; i++) {
                 String c = ca[i];
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigReseedHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigReseedHandler.java
index 917d0fc02db588846d53618c3f65e7d6339462ce..d05933b82796983f7919d946874868f162f41e7b 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigReseedHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigReseedHandler.java
@@ -11,8 +11,8 @@ import net.i2p.router.networkdb.reseed.Reseeder;
  *  @since 0.8.3
  */
 public class ConfigReseedHandler extends FormHandler {
-    private final Map<String, String> changes = new HashMap();
-    private final List<String> removes = new ArrayList();
+    private final Map<String, String> changes = new HashMap<String, String>();
+    private final List<String> removes = new ArrayList<String>();
     
     @Override
     protected void processForm() {
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigReseedHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigReseedHelper.java
index 5b5d747519629a0f7efe5dcba5b55476897832e3..67b409fb90d69be78734149bf8d4b1368b9ac4e0 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigReseedHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigReseedHelper.java
@@ -89,7 +89,7 @@ public class ConfigReseedHelper extends HelperBase {
     public String getReseedURL() {
         String urls = _context.getProperty(Reseeder.PROP_RESEED_URL, Reseeder.DEFAULT_SEED_URL + ',' + Reseeder.DEFAULT_SSL_SEED_URL);
         StringTokenizer tok = new StringTokenizer(urls, " ,\r\n");
-        List<String> URLList = new ArrayList(16);
+        List<String> URLList = new ArrayList<String>(16);
         while (tok.hasMoreTokens()) {
             String s = tok.nextToken().trim();
             if (s.length() > 0)
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigServiceHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigServiceHandler.java
index a1ca6ffe55ec395004ac8656886ff92dac69da4e..c53b97f7de2b19065d11e295dfdc9b3b2ab61211 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigServiceHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigServiceHandler.java
@@ -246,10 +246,10 @@ public class ConfigServiceHandler extends FormHandler {
     }
 
     private void browseOnStartup(boolean shouldLaunchBrowser) {
-        List clients = ClientAppConfig.getClientApps(_context);
+        List<ClientAppConfig> clients = ClientAppConfig.getClientApps(_context);
         boolean found = false;
         for (int cur = 0; cur < clients.size(); cur++) {
-            ClientAppConfig ca = (ClientAppConfig) clients.get(cur);
+            ClientAppConfig ca = clients.get(cur);
             if (UrlLauncher.class.getName().equals(ca.className)) {
                 ca.disabled = !shouldLaunchBrowser;
                 found = true;
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigStatsHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigStatsHandler.java
index 8a46e80f51fa85e7c3e1ce1756388deb608fcc88..b506bedcb4fb4d2349c49bd90a5972da1c3637b1 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigStatsHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigStatsHandler.java
@@ -15,7 +15,7 @@ import net.i2p.stat.StatManager;
  */
 public class ConfigStatsHandler extends FormHandler {
     private String _filename;
-    private List _stats;
+    private List<String> _stats;
     private String _graphs;
     private boolean _explicitFilter;
     private String _explicitFilterValue;
@@ -23,7 +23,7 @@ public class ConfigStatsHandler extends FormHandler {
     
     public ConfigStatsHandler() {
         super();
-        _stats = new ArrayList();
+        _stats = new ArrayList<String>();
         _graphs = "";
         _explicitFilter = false;
         _isFull = false;
@@ -75,7 +75,7 @@ public class ConfigStatsHandler extends FormHandler {
      *
      */
     private void saveChanges() {
-        Map<String, String> changes = new HashMap();
+        Map<String, String> changes = new HashMap<String, String>();
         if (_filename == null)
             _filename = StatManager.DEFAULT_STAT_FILE;
         changes.put(StatManager.PROP_STAT_FILE, _filename);
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigStatsHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigStatsHelper.java
index 7ecf78b3c447e5bc11184eb7612935c24009408f..f270125b832224a7d369f5066da7f2395fa4268b 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigStatsHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigStatsHelper.java
@@ -4,7 +4,6 @@ import java.util.ArrayList;
 import java.text.Collator;
 import java.util.Comparator;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -37,9 +36,9 @@ public class ConfigStatsHelper extends HelperBase {
     private boolean _currentCanBeGraphed;
     
     public ConfigStatsHelper() {
-        _stats = new ArrayList();
-        _filters = new HashSet();
-        _graphs = new HashSet();
+        _stats = new ArrayList<String>();
+        _filters = new HashSet<String>();
+        _graphs = new HashSet<String>();
     }
 
     /**
@@ -54,7 +53,7 @@ public class ConfigStatsHelper extends HelperBase {
         _log = _context.logManager().getLog(ConfigStatsHelper.class);
         
         Map<String, SortedSet<String>> unsorted = _context.statManager().getStatsByGroup();
-        Map<String, Set<String>> groups = new TreeMap(new AlphaComparator());
+        Map<String, Set<String>> groups = new TreeMap<String, Set<String>>(new AlphaComparator());
         groups.putAll(unsorted);
         for (Set<String> stats : groups.values()) {
              _stats.addAll(stats);
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigSummaryHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigSummaryHandler.java
index 5ecb02025281239358c85313722a57ab519922c1..f6174755ed3322093ba2d22b6721104efa8725e9 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigSummaryHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigSummaryHandler.java
@@ -1,6 +1,5 @@
 package net.i2p.router.web;
 
-import java.util.Collection;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Map;
@@ -85,7 +84,7 @@ public class ConfigSummaryHandler extends FormHandler {
                     return;
                 }
             } else if (deleting) {
-                Set<Integer> toDelete = new HashSet();
+                Set<Integer> toDelete = new HashSet<Integer>();
                 for (Object o : _settings.keySet()) {
                     if (!(o instanceof String))
                         continue;
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHandler.java
index 4a8f86ce4bb11799f3c7db6de68abc45cceabc90..f20c21367ae96327816b7798266f35b55b1ba9b4 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHandler.java
@@ -37,8 +37,8 @@ public class ConfigUIHandler extends FormHandler {
     private void saveChanges() {
         if (_config == null)
             return;
-        Map<String, String> changes = new HashMap();
-        List<String> removes = new ArrayList();
+        Map<String, String> changes = new HashMap<String, String>();
+        List<String> removes = new ArrayList<String>();
         String oldTheme = _context.getProperty(CSSHelper.PROP_THEME_NAME, CSSHelper.DEFAULT_THEME);
         boolean oldForceMobileConsole = _context.getBooleanProperty(CSSHelper.PROP_FORCE_MOBILE_CONSOLE);
         if (_config.equals("default")) // obsolete
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHelper.java
index 36c3059239a2d3124a4b6c65d15d7b1fa99ce4d8..66b7070ae5d9bebe5aadf0f28591cd989e4ebb66 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHelper.java
@@ -44,7 +44,7 @@ public class ConfigUIHelper extends HelperBase {
 
     /** @return standard and user-installed themes, sorted (untranslated) */
     private Set<String> themeSet() {
-         Set<String> rv = new TreeSet();
+         Set<String> rv = new TreeSet<String>();
          // add a failsafe even if we can't find any themes
          rv.add(CSSHelper.DEFAULT_THEME);
          File dir = new File(_context.getBaseDir(), "docs/themes/console");
@@ -57,9 +57,9 @@ public class ConfigUIHelper extends HelperBase {
                  rv.add(name);
          }
          // user themes
-         Set props = _context.getPropertyNames();
-         for (Iterator iter = props.iterator(); iter.hasNext(); ) {
-              String prop = (String) iter.next();
+         Set<String> props = _context.getPropertyNames();
+         for (Iterator<String> iter = props.iterator(); iter.hasNext(); ) {
+              String prop = iter.next();
               if (prop.startsWith(PROP_THEME_PFX) && prop.length() > PROP_THEME_PFX.length())
                   rv.add(prop.substring(PROP_THEME_PFX.length()));
          }
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigUpdateHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigUpdateHandler.java
index 50b0edcc46e01e27d1a1f4180415b5fc2d837a6f..09f00c388c162843f061e9b6ad76dfce0979ea3c 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigUpdateHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigUpdateHandler.java
@@ -166,7 +166,7 @@ public class ConfigUpdateHandler extends FormHandler {
             return;
         }
 
-        Map<String, String> changes = new HashMap();
+        Map<String, String> changes = new HashMap<String, String>();
 
         if ( (_newsURL != null) && (_newsURL.length() > 0) ) {
             if (_newsURL.startsWith("https"))
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConsolePasswordManager.java b/apps/routerconsole/java/src/net/i2p/router/web/ConsolePasswordManager.java
index 58ce43ec69afeee5fa82b4c28c870b2f6df4d205..6dc74e1ae740b306a298db7e9defeb701df424be 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConsolePasswordManager.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConsolePasswordManager.java
@@ -79,7 +79,7 @@ public class ConsolePasswordManager extends RouterPasswordManager {
      */
     public Map<String, String> getMD5(String realm) {
         String pfx = realm + '.';
-        Map<String, String> rv = new HashMap(4);
+        Map<String, String> rv = new HashMap<String, String>(4);
         for (Map.Entry<String, String> e : _context.router().getConfigMap().entrySet()) {
             String prop = e.getKey();
             if (prop.startsWith(pfx) && prop.endsWith(PROP_MD5)) {
@@ -105,14 +105,14 @@ public class ConsolePasswordManager extends RouterPasswordManager {
             // consolePassword
             String pw = _context.getProperty(PROP_CONSOLE_OLD);
             if (pw != null) {
-                Map toAdd = new HashMap(2);
+                Map<String, String> toAdd = new HashMap<String, String>(2);
                 if (pw.length() > 0) {
                     saveMD5(RouterConsoleRunner.PROP_CONSOLE_PW, RouterConsoleRunner.JETTY_REALM,
                             CONSOLE_USER, pw);
                     toAdd.put(RouterConsoleRunner.PROP_PW_ENABLE, "true");
                 }
                 toAdd.put(PROP_MIGRATED, "true");
-                List toDel = Collections.singletonList(PROP_CONSOLE_OLD);
+                List<String> toDel = Collections.singletonList(PROP_CONSOLE_OLD);
                 return _context.router().saveConfig(toAdd, toDel);
             }
             return true;
@@ -164,7 +164,7 @@ public class ConsolePasswordManager extends RouterPasswordManager {
         if (hex == null)
             return false;
         Map<String, String> toAdd = Collections.singletonMap(pfx + PROP_MD5, hex);
-        List<String> toDel = new ArrayList(4);
+        List<String> toDel = new ArrayList<String>(4);
         toDel.add(pfx + PROP_PW);
         toDel.add(pfx + PROP_B64);
         toDel.add(pfx + PROP_CRYPT);
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/FileDumpHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/FileDumpHelper.java
index 39be1ad547ceb36973b6354abab43db06c0b366f..af20743948a32d72305d9ccd2fdffea5a6d079bb 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/FileDumpHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/FileDumpHelper.java
@@ -35,7 +35,7 @@ public class FileDumpHelper extends HelperBase {
         // jars added in wrapper.config
         URLClassLoader urlClassLoader = (URLClassLoader) ClassLoader.getSystemClassLoader();
         URL[] urls = urlClassLoader.getURLs();
-        List<File> flist = new ArrayList();
+        List<File> flist = new ArrayList<File>();
         for (int i = 0; i < urls.length; i++) {
             String p = urls[i].toString();
             if (p.startsWith("file:") && p.endsWith(".jar")) {
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/FormHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/FormHandler.java
index 1ecf73d94165fe5ce2602ade9281daa75fa0b67d..99064c7cce0ebbba6d24ea665acbaf33a42888c6 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/FormHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/FormHandler.java
@@ -30,8 +30,8 @@ public abstract class FormHandler {
     private boolean _valid;
     
     public FormHandler() {
-        _errors = new ArrayList();
-        _notices = new ArrayList();
+        _errors = new ArrayList<String>();
+        _notices = new ArrayList<String>();
         _valid = true;
     }
     
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/GraphHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/GraphHelper.java
index b9a73a8040fefdd092482e7cfbf6d7f67379bce4..d0b3947b4ebf692bcc6682976f909737c12c4212 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/GraphHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/GraphHelper.java
@@ -137,15 +137,15 @@ public class GraphHelper extends FormHandler {
         if (StatSummarizer.isDisabled())
             return "";
         try {
-            List listeners = StatSummarizer.instance().getListeners();
-            TreeSet ordered = new TreeSet(new AlphaComparator());
+            List<SummaryListener> listeners = StatSummarizer.instance().getListeners();
+            TreeSet<SummaryListener> ordered = new TreeSet<SummaryListener>(new AlphaComparator());
             ordered.addAll(listeners);
 
             // go to some trouble to see if we have the data for the combined bw graph
             boolean hasTx = false;
             boolean hasRx = false;
-            for (Iterator iter = ordered.iterator(); iter.hasNext(); ) {
-                SummaryListener lsnr = (SummaryListener)iter.next();
+            for (Iterator<SummaryListener> iter = ordered.iterator(); iter.hasNext(); ) {
+                SummaryListener lsnr = iter.next();
                 String title = lsnr.getRate().getRateStat().getName();
                 if (title.equals("bw.sendRate")) hasTx = true;
                 else if (title.equals("bw.recvRate")) hasRx = true;
@@ -166,8 +166,8 @@ public class GraphHelper extends FormHandler {
                            + "\" alt=\"" + title + "\" title=\"" + title + "\"></a>\n");
             }
             
-            for (Iterator iter = ordered.iterator(); iter.hasNext(); ) {
-                SummaryListener lsnr = (SummaryListener)iter.next();
+            for (Iterator<SummaryListener> iter = ordered.iterator(); iter.hasNext(); ) {
+                SummaryListener lsnr = iter.next();
                 Rate r = lsnr.getRate();
                 // e.g. "statname for 60m"
                 String title = _("{0} for {1}", r.getRateStat().getName(), DataHelper.formatDuration2(_periodCount * r.getPeriod()));
@@ -430,7 +430,7 @@ public class GraphHelper extends FormHandler {
             _refreshDelaySeconds != _context.getProperty(PROP_REFRESH, DEFAULT_REFRESH) ||
             _showEvents != _context.getBooleanProperty(PROP_EVENTS) ||
             _persistent != _context.getBooleanPropertyDefaultTrue(SummaryListener.PROP_PERSISTENT)) {
-            Map<String, String> changes = new HashMap();
+            Map<String, String> changes = new HashMap<String, String>();
             changes.put(PROP_X, "" + _width);
             changes.put(PROP_Y, "" + _height);
             changes.put(PROP_PERIODS, "" + _periodCount);
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/HomeHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/HomeHelper.java
index 88e81b3a848120ecfdfaac74040dde59096c5901..70ebba68bc1305c98dc52adc22bb58eeff2481ea 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/HomeHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/HomeHelper.java
@@ -127,7 +127,7 @@ public class HomeHelper extends HelperBase {
 
     static Collection<App> buildApps(RouterContext ctx, String config) {
         String[] args = config.split("" + S);
-        Set<App> apps = new TreeSet(new AppComparator());
+        Set<App> apps = new TreeSet<App>(new AppComparator());
         for (int i = 0; i < args.length - 3; i += 4) {
             String name = Messages.getString(args[i], ctx);
             String desc = Messages.getString(args[i+1], ctx);
@@ -140,7 +140,7 @@ public class HomeHelper extends HelperBase {
 
     static Collection<App> buildSearchApps(String config) {
         String[] args = config.split("" + S);
-        Set<App> apps = new TreeSet(new AppComparator());
+        Set<App> apps = new TreeSet<App>(new AppComparator());
         for (int i = 0; i < args.length - 1; i += 2) {
             String name = args[i];
             String url = args[i+1];
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/JobQueueHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/JobQueueHelper.java
index 901737661b5efb0d9eeb8421b116c38003479b08..7f54e53c0e2fffbfb530c0e95ba953576031fbb0 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/JobQueueHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/JobQueueHelper.java
@@ -39,10 +39,10 @@ public class JobQueueHelper extends HelperBase {
      *  @since 0.8.9
      */
     private void renderStatusHTML(Writer out) throws IOException {
-        List<Job> readyJobs = new ArrayList(8);
-        List<Job> timedJobs = new ArrayList(128);
-        List<Job> activeJobs = new ArrayList(8);
-        List<Job> justFinishedJobs = new ArrayList(8);
+        List<Job> readyJobs = new ArrayList<Job>(8);
+        List<Job> timedJobs = new ArrayList<Job>(128);
+        List<Job> activeJobs = new ArrayList<Job>(8);
+        List<Job> justFinishedJobs = new ArrayList<Job>(8);
         
         int numRunners = _context.jobQueue().getJobs(readyJobs, timedJobs, activeJobs, justFinishedJobs);
         
@@ -70,7 +70,7 @@ public class JobQueueHelper extends HelperBase {
         buf.append("</ol>\n");
 
         buf.append("<hr><b>").append(_("Ready/waiting jobs")).append(": ").append(readyJobs.size()).append("</b><ol>\n");
-        ObjectCounter<String> counter = new ObjectCounter();
+        ObjectCounter<String> counter = new ObjectCounter<String>();
         for (int i = 0; i < readyJobs.size(); i++) {
             Job j = readyJobs.get(i);
             counter.increment(j.getName());
@@ -117,7 +117,7 @@ public class JobQueueHelper extends HelperBase {
     
     /** @since 0.9.5 */
     private void getJobCounts(StringBuilder buf, ObjectCounter<String> counter) {
-        List<String> names = new ArrayList(counter.objects());
+        List<String> names = new ArrayList<String>(counter.objects());
         if (names.size() < 4)
             return;
         buf.append("<table style=\"width: 30%; margin-left: 100px;\">\n" +
@@ -153,7 +153,7 @@ public class JobQueueHelper extends HelperBase {
         long maxPendingTime = -1;
         long minPendingTime = -1;
 
-        List<JobStats> tstats = new ArrayList(_context.jobQueue().getJobStats());
+        List<JobStats> tstats = new ArrayList<JobStats>(_context.jobQueue().getJobStats());
         Collections.sort(tstats, new JobStatsComparator());
         
         for (JobStats stats : tstats) {
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/NavHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/NavHelper.java
index 989d5013035dd5a1b9d02e0b176d8f54dbecbd03..45a9c62808133db679225abba175519f738567d9 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/NavHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/NavHelper.java
@@ -7,10 +7,11 @@ import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
 import net.i2p.I2PAppContext;
+import net.i2p.router.web.HomeHelper.App;
 
 public class NavHelper {
-    private static Map<String, String> _apps = new ConcurrentHashMap(4);
-    private static Map<String, String> _tooltips = new ConcurrentHashMap(4);
+    private static Map<String, String> _apps = new ConcurrentHashMap<String, String>(4);
+    private static Map<String, String> _tooltips = new ConcurrentHashMap<String, String>(4);
     
     /**
      * To register a new client application so that it shows up on the router
@@ -42,7 +43,7 @@ public class NavHelper {
         if (_apps.isEmpty())
             return "";
         StringBuilder buf = new StringBuilder(256); 
-        List<String> l = new ArrayList(_apps.keySet());
+        List<String> l = new ArrayList<String>(_apps.keySet());
         Collections.sort(l);
         for (String name : l) {
             String path = _apps.get(name);
@@ -65,8 +66,8 @@ public class NavHelper {
      */
     static List<HomeHelper.App> getClientApps(I2PAppContext ctx) {
         if (_apps.isEmpty())
-            return Collections.EMPTY_LIST;
-        List<HomeHelper.App> rv = new ArrayList(_apps.size());
+            return Collections.emptyList();
+        List<HomeHelper.App> rv = new ArrayList<App>(_apps.size());
         for (Map.Entry<String, String> e : _apps.entrySet()) {
             String name = e.getKey();
             String path = e.getValue();
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/NetDbHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/NetDbHelper.java
index 1eb44bd4859ac82956ba4bf1b3f11c0c6f8d437e..9c43bb498c2d9babd0071c484c765439bfb2ac93 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/NetDbHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/NetDbHelper.java
@@ -1,9 +1,6 @@
 package net.i2p.router.web;
 
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
-import java.io.OutputStreamWriter;
-
 import net.i2p.data.DataHelper;
 
 public class NetDbHelper extends HelperBase {
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java
index 64922a43eefc88ca3601a2f88d615e29b304ae27..5dafe42a54df60b93e21f55094282b26e5343011 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java
@@ -108,11 +108,11 @@ public class NetDbRenderer {
         DecimalFormat fmt;
         if (debug) {
             ourRKey = _context.routerHash();
-            leases = new TreeSet(new LeaseSetRoutingKeyComparator(ourRKey));
+            leases = new TreeSet<LeaseSet>(new LeaseSetRoutingKeyComparator(ourRKey));
             fmt = new DecimalFormat("#0.00");
         } else {
             ourRKey = null;
-            leases = new TreeSet(new LeaseSetComparator());
+            leases = new TreeSet<LeaseSet>(new LeaseSetComparator());
             fmt = null;
         }
         leases.addAll(_context.netDb().getLeases());
@@ -257,11 +257,11 @@ public class NetDbRenderer {
             buf.setLength(0);
         }
         
-        ObjectCounter<String> versions = new ObjectCounter();
-        ObjectCounter<String> countries = new ObjectCounter();
+        ObjectCounter<String> versions = new ObjectCounter<String>();
+        ObjectCounter<String> countries = new ObjectCounter<String>();
         int[] transportCount = new int[TNAMES.length];
         
-        Set<RouterInfo> routers = new TreeSet(new RouterInfoComparator());
+        Set<RouterInfo> routers = new TreeSet<RouterInfo>(new RouterInfoComparator());
         routers.addAll(_context.netDb().getRouters());
         for (RouterInfo ri : routers) {
             Hash key = ri.getIdentity().getHash();
@@ -292,7 +292,7 @@ public class NetDbRenderer {
            .append(_("Network Database Router Statistics"))
            .append("</th></tr><tr><td style=\"vertical-align: top;\">");
         // versions table
-        List<String> versionList = new ArrayList(versions.objects());
+        List<String> versionList = new ArrayList<String>(versions.objects());
         if (!versionList.isEmpty()) {
             Collections.sort(versionList, Collections.reverseOrder(new VersionComparator()));
             buf.append("<table>\n");
@@ -324,7 +324,7 @@ public class NetDbRenderer {
         buf.setLength(0);
 
         // country table
-        List<String> countryList = new ArrayList(countries.objects());
+        List<String> countryList = new ArrayList<String>(countries.objects());
         if (!countryList.isEmpty()) {
             Collections.sort(countryList, new CountryComparator());
             buf.append("<table>\n");
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java b/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java
index 2f8e441f4c16b9e1b9f59ebaa48b714316b21d80..1f261b97dc89979b587222492bff5df1be5e095e 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java
@@ -57,7 +57,7 @@ public class PluginStarter implements Runnable {
     private static Map<String, ThreadGroup> pluginThreadGroups = new ConcurrentHashMap<String, ThreadGroup>();   // one thread group per plugin (map key=plugin name)
     private static Map<String, Collection<SimpleTimer2.TimedEvent>> _pendingPluginClients =
                    new ConcurrentHashMap<String, Collection<SimpleTimer2.TimedEvent>>();
-    private static Map<String, ClassLoader> _clCache = new ConcurrentHashMap();
+    private static Map<String, ClassLoader> _clCache = new ConcurrentHashMap<String, ClassLoader>();
     private static Map<String, Collection<String>> pluginWars = new ConcurrentHashMap<String, Collection<String>>();
 
     public PluginStarter(RouterContext ctx) {
@@ -111,7 +111,7 @@ public class PluginStarter implements Runnable {
      */
     private static void updateAll(RouterContext ctx, boolean delay) {
         List<String> plugins = getPlugins();
-        Map<String, String> toUpdate = new HashMap();
+        Map<String, String> toUpdate = new HashMap<String, String>();
         for (String appName : plugins) {
             Properties props = pluginProperties(ctx, appName);
             String url = props.getProperty("updateURL");
@@ -458,8 +458,8 @@ public class PluginStarter implements Runnable {
         File[] tfiles = dir.listFiles();
         if (tfiles != null) {
             String current = ctx.getProperty(CSSHelper.PROP_THEME_NAME);
-            Map<String, String> changes = new HashMap();
-            List<String> removes = new ArrayList();
+            Map<String, String> changes = new HashMap<String, String>();
+            List<String> removes = new ArrayList<String>();
             for (int i = 0; i < tfiles.length; i++) {
                 String name = tfiles[i].getName();
                 if (tfiles[i].isDirectory() && (!Arrays.asList(STANDARD_THEMES).contains(tfiles[i]))) {
@@ -544,7 +544,7 @@ public class PluginStarter implements Runnable {
      *  all installed plugins whether enabled or not
      */
     public static List<String> getPlugins() {
-        List<String> rv = new ArrayList();
+        List<String> rv = new ArrayList<String>();
         File pluginDir = new File(I2PAppContext.getGlobalContext().getConfigDir(), PLUGIN_DIR);
         File[] files = pluginDir.listFiles();
         if (files == null)
@@ -563,7 +563,7 @@ public class PluginStarter implements Runnable {
      *  Last one wins if a dup (installer should prevent dups)
      */
     public static Map<String, String> getPluginKeys(I2PAppContext ctx) {
-        Map<String, String> rv = new HashMap();
+        Map<String, String> rv = new HashMap<String, String>();
         List<String> names = getPlugins();
         for (String name : names) {
             Properties props = pluginProperties(ctx, name);
@@ -806,7 +806,7 @@ public class PluginStarter implements Runnable {
      */
     private static URL[] classpathToURLArray(String classpath, String clientName, Log log) {
         StringTokenizer tok = new StringTokenizer(classpath, ",");
-        List<URL> urls = new ArrayList();
+        List<URL> urls = new ArrayList<URL>();
         while (tok.hasMoreTokens()) {
             String elem = tok.nextToken().trim();
             File f = new File(elem);
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java
index ab8c24e6ee5294b82cb53091b0a70c27608cbb1e..19cd5ed591f9ebac31d93430f00ea24802dd1758 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java
@@ -42,7 +42,7 @@ class ProfileOrganizerRenderer {
         long now = _context.clock().now();
         long hideBefore = now - 90*60*1000;
         
-        Set<PeerProfile> order = new TreeSet(mode == 2 ? new HashComparator() : new ProfileComparator());
+        Set<PeerProfile> order = new TreeSet<PeerProfile>(mode == 2 ? new HashComparator() : new ProfileComparator());
         int older = 0;
         int standard = 0;
         for (Iterator<Hash> iter = peers.iterator(); iter.hasNext();) {
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ReseedHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ReseedHandler.java
index acf7494a786624bf3dfaedbb80329f7edb557670..5d850355eaf44a44d771a271c5cf85aeba2aba6d 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ReseedHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ReseedHandler.java
@@ -1,7 +1,6 @@
 package net.i2p.router.web;
 
 import net.i2p.router.RouterContext;
-import net.i2p.router.networkdb.reseed.Reseeder;
 
 /**
  * Handler to deal with reseed requests.
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java
index 4070cd0c95060c83de5cf6763b7d2b39ffb83b1a..b931b0bee7e0eb4efbc6a9237cb86db49b7355f6 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java
@@ -9,12 +9,11 @@ import java.net.InetAddress;
 import java.net.Inet4Address;
 import java.net.InetSocketAddress;
 import java.net.ServerSocket;
-import java.security.KeyStore;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
-import java.util.Set;
+import java.util.SortedSet;
 import java.util.StringTokenizer;
 import java.util.concurrent.Executors;
 import java.util.concurrent.SynchronousQueue;
@@ -28,7 +27,6 @@ import net.i2p.app.ClientAppState;
 import static net.i2p.app.ClientAppState.*;
 import net.i2p.apps.systray.SysTray;
 import net.i2p.crypto.KeyStoreUtil;
-import net.i2p.data.Base32;
 import net.i2p.data.DataHelper;
 import net.i2p.jetty.I2PLogger;
 import net.i2p.router.RouterContext;
@@ -40,12 +38,9 @@ import net.i2p.util.I2PAppThread;
 import net.i2p.util.PortMapper;
 import net.i2p.util.SecureDirectory;
 import net.i2p.util.SystemVersion;
-import net.i2p.util.VersionComparator;
-
 import org.eclipse.jetty.security.HashLoginService;
 import org.eclipse.jetty.security.ConstraintMapping;
 import org.eclipse.jetty.security.ConstraintSecurityHandler;
-import org.eclipse.jetty.security.SecurityHandler;
 import org.eclipse.jetty.security.authentication.DigestAuthenticator;
 import org.eclipse.jetty.server.AbstractConnector;
 import org.eclipse.jetty.server.Connector;
@@ -378,10 +373,10 @@ public class RouterConsoleRunner implements RouterApp {
 
         HandlerWrapper rootWebApp = null;
         ServletHandler rootServletHandler = null;
-        List<Connector> connectors = new ArrayList(4);
+        List<Connector> connectors = new ArrayList<Connector>(4);
         try {
             int boundAddresses = 0;
-            Set addresses = Addresses.getAllAddresses();
+            SortedSet<String> addresses = Addresses.getAllAddresses();
             boolean hasIPV4 = addresses.contains("0.0.0.0");
             boolean hasIPV6 = addresses.contains("0:0:0:0:0:0:0:0");
 
@@ -587,7 +582,7 @@ public class RouterConsoleRunner implements RouterApp {
         // so things start faster.
         // Jetty 6 starts the connector before the router console is ready
         // This also prevents one webapp from breaking the whole thing
-        List<String> notStarted = new ArrayList();
+        List<String> notStarted = new ArrayList<String>();
         if (_server.isRunning()) {
             File dir = new File(_webAppsDir);
             String fileNames[] = dir.list(WarFilenameFilter.instance());
@@ -698,7 +693,7 @@ public class RouterConsoleRunner implements RouterApp {
             success = ks.exists();
             if (success) {
                 try {
-                    Map<String, String> changes = new HashMap();
+                    Map<String, String> changes = new HashMap<String, String>();
                     changes.put(PROP_KEYSTORE_PASSWORD, DEFAULT_KEYSTORE_PASSWORD);
                     changes.put(PROP_KEY_PASSWORD, keyPassword);
                     _context.router().saveConfig(changes, null);
@@ -724,7 +719,7 @@ public class RouterConsoleRunner implements RouterApp {
      */
     static void initialize(RouterContext ctx, WebAppContext context) {
         ConstraintSecurityHandler sec = new ConstraintSecurityHandler();
-        List<ConstraintMapping> constraints = new ArrayList(4);
+        List<ConstraintMapping> constraints = new ArrayList<ConstraintMapping>(4);
         ConsolePasswordManager mgr = new ConsolePasswordManager(ctx);
         boolean enable = ctx.getBooleanProperty(PROP_PW_ENABLE);
         if (enable) {
@@ -842,7 +837,7 @@ public class RouterConsoleRunner implements RouterApp {
         public CustomThreadPoolExecutor() {
              super(new ThreadPoolExecutor(
                       MIN_THREADS, MAX_THREADS, MAX_IDLE_TIME, TimeUnit.MILLISECONDS,
-                      new SynchronousQueue(),
+                      new SynchronousQueue<Runnable>(),
                       new CustomThreadFactory(),
                       new ThreadPoolExecutor.CallerRunsPolicy())
                   );
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/SearchHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/SearchHelper.java
index 9a6842119f2308fb8c03139cb80f6a891521fbc1..3ee03289be3b835a9bb0fe1d7647e8b8e4e54f82 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/SearchHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/SearchHelper.java
@@ -14,7 +14,7 @@ public class SearchHelper extends HelperBase {
 
     private String _engine;
     private String _query;
-    private Map<String, String> _engines = new TreeMap();
+    private Map<String, String> _engines = new TreeMap<String, String>();
     
     private static final char S = ',';
     // in case engines need to know where it came from
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/StatSummarizer.java b/apps/routerconsole/java/src/net/i2p/router/web/StatSummarizer.java
index 9cd83c059c154f7517e742030d32462cdaae9a20..7fcad4071c119bc91696b5275f95681efcdc7695 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/StatSummarizer.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/StatSummarizer.java
@@ -46,7 +46,7 @@ public class StatSummarizer implements Runnable {
     public StatSummarizer() {
         _context = RouterContext.listContexts().get(0); // only summarize one per jvm
         _log = _context.logManager().getLog(getClass());
-        _listeners = new CopyOnWriteArrayList();
+        _listeners = new CopyOnWriteArrayList<SummaryListener>();
         _instance = this;
         _sem = new Semaphore(MAX_CONCURRENT_PNG, true);
         _context.addShutdownTask(new Shutdown());
@@ -311,9 +311,9 @@ public class StatSummarizer implements Runnable {
      */
     Set<Rate> parseSpecs(String specs) {
         if (specs == null)
-            return Collections.EMPTY_SET;
+            return Collections.emptySet();
         StringTokenizer tok = new StringTokenizer(specs, ",");
-        Set<Rate> rv = new HashSet();
+        Set<Rate> rv = new HashSet<Rate>();
         while (tok.hasMoreTokens()) {
             String spec = tok.nextToken();
             int split = spec.lastIndexOf('.');
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java b/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java
index 976fb8114293cd277e45f14949d17375c2b09371..ac447a49e3ee16b539b9e9ec59556050b9f70783 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java
@@ -6,7 +6,6 @@ import java.text.DecimalFormat;
 import java.text.Collator;
 import java.util.Arrays;
 import java.util.Comparator;
-import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
 import java.util.SortedSet;
@@ -37,7 +36,7 @@ public class StatsGenerator {
         buf.setLength(0);
         
         Map<String, SortedSet<String>> unsorted = _context.statManager().getStatsByGroup();
-        Map<String, Set<String>> groups = new TreeMap(new AlphaComparator());
+        Map<String, Set<String>> groups = new TreeMap<String, Set<String>>(new AlphaComparator());
         groups.putAll(unsorted);
         for (String group : groups.keySet()) {
             buf.append("<option value=\"#").append(group).append("\">");
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java
index 9ad087a6dab3c587849dad5d10e5e0e5d5d1012b..ac032e4974d6d3bf41d612831effa24e5bfcd3ef 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java
@@ -409,7 +409,7 @@ public class SummaryHelper extends HelperBase {
      */
     public String getDestinations() {
         // convert the set to a list so we can sort by name and not lose duplicates
-        List<Destination> clients = new ArrayList(_context.clientManager().listClients());
+        List<Destination> clients = new ArrayList<Destination>(_context.clientManager().listClients());
         
         StringBuilder buf = new StringBuilder(512);
         buf.append("<h3><a href=\"/i2ptunnelmgr\" target=\"_top\" title=\"").append(_("Add/remove/edit &amp; control your client and server tunnels")).append("\">").append(_("Local Destinations")).append("</a></h3><hr class=\"b\"><div class=\"tunnels\">");
@@ -837,7 +837,7 @@ public class SummaryHelper extends HelperBase {
         String[] allSections = SummaryBarRenderer.ALL_SECTIONS;
         Map<String, String> sectionNames = SummaryBarRenderer.SECTION_NAMES;
         List<String> sections = getSummaryBarSections("default");
-        TreeSet<String> sortedSections = new TreeSet();
+        TreeSet<String> sortedSections = new TreeSet<String>();
 
         for (int i = 0; i < allSections.length; i++) {
             String section = allSections[i];
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/SummaryRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/SummaryRenderer.java
index 811d160e075ad348b0ccc0bdf4a448b74f75297e..9644b8e3f526ff2c6fe1888ede51eaceca7243d3 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/SummaryRenderer.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/SummaryRenderer.java
@@ -23,7 +23,6 @@ import net.i2p.util.SystemVersion;
 import org.jrobin.core.RrdException;
 import org.jrobin.graph.RrdGraph;
 import org.jrobin.graph.RrdGraphDef;
-import org.jrobin.graph.RrdGraphDefTemplate;
 
 /**
  *  Generate the RRD graph png images,
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/TunnelRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/TunnelRenderer.java
index 073ddad1b9ff49258200ca0a900c43e5e6afedca..e26cb0919ec23444b55485b320d6c5855806c598 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/TunnelRenderer.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/TunnelRenderer.java
@@ -38,7 +38,7 @@ public class TunnelRenderer {
         List<Hash> destinations = null;
         Map<Hash, TunnelPool> clientInboundPools = _context.tunnelManager().getInboundClientPools();
         Map<Hash, TunnelPool> clientOutboundPools = _context.tunnelManager().getOutboundClientPools();
-        destinations = new ArrayList(clientInboundPools.keySet());
+        destinations = new ArrayList<Hash>(clientInboundPools.keySet());
         boolean debug = _context.getBooleanProperty(HelperBase.PROP_ADVANCED);
         for (int i = 0; i < destinations.size(); i++) {
             Hash client = destinations.get(i);
@@ -64,7 +64,7 @@ public class TunnelRenderer {
             renderPool(out, in, outPool);
         }
         
-        List participating = _context.tunnelDispatcher().listParticipatingTunnels();
+        List<HopConfig> participating = _context.tunnelDispatcher().listParticipatingTunnels();
         Collections.sort(participating, new TunnelComparator());
         out.write("<h2><a name=\"participating\"></a>" + _("Participating tunnels") + "</h2><table>\n");
         out.write("<tr><th>" + _("Receive on") + "</th><th>" + _("From") + "</th><th>"
@@ -142,7 +142,7 @@ public class TunnelRenderer {
     private void renderPool(Writer out, TunnelPool in, TunnelPool outPool) throws IOException {
         List<TunnelInfo> tunnels = null;
         if (in == null)
-            tunnels = new ArrayList();
+            tunnels = new ArrayList<TunnelInfo>();
         else
             tunnels = in.listTunnels();
         if (outPool != null)
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/WebAppConfiguration.java b/apps/routerconsole/java/src/net/i2p/router/web/WebAppConfiguration.java
index 6511af2e7c842841c92922b2d2f120688ca0c354..baa69845935256de3111a9af890b458e9cd65faf 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/WebAppConfiguration.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/WebAppConfiguration.java
@@ -68,7 +68,7 @@ public class WebAppConfiguration implements Configuration {
             // WebAppContext doesn't provide a remove method, so we must
             // convert to a list, remove the wildcard entry, add ours, then
             // add the wildcard back, then reset.
-            List<String> classes = new ArrayList(16);
+            List<String> classes = new ArrayList<String>(16);
             classes.addAll(Arrays.asList(wac.getServerClasses()));
             classes.remove("org.eclipse.jetty.");
             classes.add("-org.eclipse.jetty.http.");
@@ -152,7 +152,7 @@ public class WebAppConfiguration implements Configuration {
     private static Set<URL> getSystemClassPath() {
         URLClassLoader urlClassLoader = (URLClassLoader) ClassLoader.getSystemClassLoader();
         URL urls[] = urlClassLoader.getURLs();
-        Set<URL> rv = new HashSet(32);
+        Set<URL> rv = new HashSet<URL>(32);
         for (int i = 0; i < urls.length; i++) {
             rv.add(urls[i]);
         }
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/WebAppStarter.java b/apps/routerconsole/java/src/net/i2p/router/web/WebAppStarter.java
index e2b9e2e7fdb6eacc03337908823d8dc7b8a0333d..49aca0898609691d6c1972e5369815aeb2e4d8f3 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/WebAppStarter.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/WebAppStarter.java
@@ -34,7 +34,7 @@ import org.eclipse.jetty.webapp.WebAppContext;
  */
 public class WebAppStarter {
 
-    private static final Map<String, Long> warModTimes = new ConcurrentHashMap();
+    private static final Map<String, Long> warModTimes = new ConcurrentHashMap<String, Long>();
     static final Map INIT_PARAMS = new HashMap(4);
     //static private Log _log;