diff --git a/router/java/src/net/i2p/router/ClientTunnelSettings.java b/router/java/src/net/i2p/router/ClientTunnelSettings.java
index ac8139ebe0750ac56e434e682a87704c475e6646..110e2e94a5088f865ceca641c6c6388e7b9ccd8f 100644
--- a/router/java/src/net/i2p/router/ClientTunnelSettings.java
+++ b/router/java/src/net/i2p/router/ClientTunnelSettings.java
@@ -8,7 +8,7 @@ package net.i2p.router;
  *
  */
 
-import java.util.Iterator;
+import java.util.Map;
 import java.util.Properties;
 
 import net.i2p.data.Hash;
@@ -49,9 +49,9 @@ public class ClientTunnelSettings {
         writeToProperties(p);
         buf.append("Client tunnel settings:\n");
         buf.append("====================================\n");
-        for (Iterator iter = p.keySet().iterator(); iter.hasNext(); ) {
-            String name = (String)iter.next();
-            String val  = p.getProperty(name);
+        for (Map.Entry<Object, Object> entry : p.entrySet()) {
+            String name = (String) entry.getKey();
+            String val  = (String) entry.getValue();
             buf.append(name).append(" = [").append(val).append("]\n");
         }
         buf.append("====================================\n");
diff --git a/router/java/src/net/i2p/router/PersistentKeyRing.java b/router/java/src/net/i2p/router/PersistentKeyRing.java
index 1a8ec464cfd0028a4f997ab2260edbcabce36e1d..771d204e356ac7311819aea13bb41880f7268b76 100644
--- a/router/java/src/net/i2p/router/PersistentKeyRing.java
+++ b/router/java/src/net/i2p/router/PersistentKeyRing.java
@@ -3,8 +3,6 @@ package net.i2p.router;
 import java.io.IOException;
 import java.io.Writer;
 
-import java.util.Iterator;
-
 import net.i2p.data.DataFormatException;
 import net.i2p.data.Destination;
 import net.i2p.data.Hash;
@@ -43,8 +41,7 @@ public class PersistentKeyRing extends KeyRing {
     }
 
     private void addFromProperties() {
-        for (Iterator iter = _ctx.getPropertyNames().iterator(); iter.hasNext(); ) {
-            String prop = (String) iter.next();
+        for (String prop : _ctx.getPropertyNames()) {
             if (!prop.startsWith(PROP_PFX))
                 continue;
             String key = _ctx.getProperty(prop);
diff --git a/router/java/src/net/i2p/router/TunnelPoolSettings.java b/router/java/src/net/i2p/router/TunnelPoolSettings.java
index 1c52e3f7086cd45c0d4cb32451b9e2d0c83a00d6..48a2f1d00687487c761ed16235bcb843123d6ce7 100644
--- a/router/java/src/net/i2p/router/TunnelPoolSettings.java
+++ b/router/java/src/net/i2p/router/TunnelPoolSettings.java
@@ -201,7 +201,7 @@ public class TunnelPoolSettings {
      *  @param prefix non-null
      */
     public void readFromProperties(String prefix, Map<Object, Object> props) {
-        for (Map.Entry e : props.entrySet()) {
+        for (Map.Entry<Object, Object> e : props.entrySet()) {
             String name = (String) e.getKey();
             String value = (String) e.getValue();
             if (name.startsWith(prefix)) {
@@ -250,7 +250,7 @@ public class TunnelPoolSettings {
         props.setProperty(prefix + PROP_IP_RESTRICTION, ""+_IPRestriction);
         if (!_isInbound)
             props.setProperty(prefix + PROP_PRIORITY, Integer.toString(_priority));
-        for (Map.Entry e : _unknownOptions.entrySet()) {
+        for (Map.Entry<Object, Object> e : _unknownOptions.entrySet()) {
             String name = (String) e.getKey();
             String val = (String) e.getValue();
             props.setProperty(prefix + name, val);
@@ -264,7 +264,7 @@ public class TunnelPoolSettings {
         writeToProperties("", p);
         buf.append("Tunnel pool settings:\n");
         buf.append("====================================\n");
-        for (Map.Entry e : p.entrySet()) {
+        for (Map.Entry<Object, Object> e : p.entrySet()) {
             String name = (String) e.getKey();
             String val = (String) e.getValue();
             buf.append(name).append(" = [").append(val).append("]\n");
diff --git a/router/java/src/net/i2p/router/transport/UPnP.java b/router/java/src/net/i2p/router/transport/UPnP.java
index 3c69e4d2a45ce6fca63cd001deaafcda9bbe4595..582f92272500c5f3c7a352a223100a2f6e052b1a 100644
--- a/router/java/src/net/i2p/router/transport/UPnP.java
+++ b/router/java/src/net/i2p/router/transport/UPnP.java
@@ -280,8 +280,7 @@ class UPnP extends ControlPoint implements DeviceChangeListener, EventListener {
 	 */
 	private void discoverService() {
 		synchronized (lock) {
-			for (Iterator iter = _router.getDeviceList().iterator();iter.hasNext();) {
-				Device current = (Device)iter.next();
+			for (Device current : _router.getDeviceList()) {
 				if (!current.getDeviceType().equals(WAN_DEVICE))
 					continue;
 
diff --git a/router/java/src/net/i2p/router/transport/ntcp/NTCPSendFinisher.java b/router/java/src/net/i2p/router/transport/ntcp/NTCPSendFinisher.java
index cdaec194784224811710b0822c074e4a076b90cb..d8441cbe701eed94a0da02bdb320dee88c9fa14a 100644
--- a/router/java/src/net/i2p/router/transport/ntcp/NTCPSendFinisher.java
+++ b/router/java/src/net/i2p/router/transport/ntcp/NTCPSendFinisher.java
@@ -69,7 +69,7 @@ class NTCPSendFinisher {
         public CustomThreadPoolExecutor(int num) {
              // use unbounded queue, so maximumPoolSize and keepAliveTime have no effect
              super(num, num, 1000, TimeUnit.MILLISECONDS,
-                   new LinkedBlockingQueue(), new CustomThreadFactory());
+                   new LinkedBlockingQueue<Runnable>(), new CustomThreadFactory());
         }
     }
 
diff --git a/router/java/src/net/i2p/router/tunnel/pool/ExploratoryPeerSelector.java b/router/java/src/net/i2p/router/tunnel/pool/ExploratoryPeerSelector.java
index 2564ce3d795a4ec5f449ea20eacdd63e1d7fb946..e0581c884347698dde0c87a80fd355ec4c128af7 100644
--- a/router/java/src/net/i2p/router/tunnel/pool/ExploratoryPeerSelector.java
+++ b/router/java/src/net/i2p/router/tunnel/pool/ExploratoryPeerSelector.java
@@ -24,7 +24,7 @@ class ExploratoryPeerSelector extends TunnelPeerSelector {
         super(context);
     }
 
-    public List<Hash> selectPeers(TunnelPoolSettings settings) {
+	public List<Hash> selectPeers(TunnelPoolSettings settings) {
         Log l = ctx.logManager().getLog(getClass());
         int length = getLength(settings);
         if (length < 0) { 
@@ -34,7 +34,7 @@ class ExploratoryPeerSelector extends TunnelPeerSelector {
         }
         
         if (false && shouldSelectExplicit(settings)) {
-            List rv = selectExplicit(settings, length);
+            List<Hash> rv = selectExplicit(settings, length);
             if (l.shouldLog(Log.DEBUG))
                 l.debug("Explicit peers selected: " + rv);
             return rv;
diff --git a/router/java/src/net/i2p/router/tunnel/pool/TunnelPool.java b/router/java/src/net/i2p/router/tunnel/pool/TunnelPool.java
index 92e19dbebee6f9685d362c77180cb86d2b4e25a2..38a7e1253a8f9dab5d75619c831f87a7ba98e62f 100644
--- a/router/java/src/net/i2p/router/tunnel/pool/TunnelPool.java
+++ b/router/java/src/net/i2p/router/tunnel/pool/TunnelPool.java
@@ -6,7 +6,7 @@ import java.util.Comparator;
 import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Map;
+import java.util.Properties;
 import java.util.TreeSet;
 
 import net.i2p.data.Hash;
@@ -123,7 +123,8 @@ public class TunnelPool {
             return; // don't override client specified settings
         } else {
             if (_settings.isExploratory()) {
-                Map props = _context.router().getConfigMap();
+                Properties props = new Properties();
+                props.putAll(_context.router().getConfigMap());
                 if (_settings.isInbound())
                     _settings.readFromProperties(TunnelPoolSettings.PREFIX_INBOUND_EXPLORATORY, props);
                 else