diff --git a/apps/BOB/src/net/i2p/BOB/TCPtoI2P.java b/apps/BOB/src/net/i2p/BOB/TCPtoI2P.java
index e2f09672b69e388f8b1faee63be00490de1a122b..0ce587257d2c2ac6440560d7987f0c5b7bfeb942 100644
--- a/apps/BOB/src/net/i2p/BOB/TCPtoI2P.java
+++ b/apps/BOB/src/net/i2p/BOB/TCPtoI2P.java
@@ -70,8 +70,7 @@ public class TCPtoI2P implements Runnable {
 	 * @throws IOException
 	 */
 	private static String lnRead(InputStream in) throws IOException {
-		String S = "";
-        StringBuilder builder = new StringBuilder();
+		StringBuilder builder = new StringBuilder();
 		int b;
 		char c;
 
@@ -86,7 +85,7 @@ public class TCPtoI2P implements Runnable {
 				break;
 			}
 			c = (char) (b & 0x7f); // We only care about ASCII
-            builder.append(c);
+			builder.append(c);
 		}
 		return builder.toString();
 	}
diff --git a/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java b/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java
index 8edf0cc6a39a6cbc02a3db7d5831e08307ba8ef0..2c7a6d28601f917fbc331d761ca98ecc08be2efe 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java
@@ -5,7 +5,6 @@ import java.io.File;
 import java.io.IOException;
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
@@ -216,10 +215,8 @@ public class I2PSnarkUtil {
                 _log.debug("Connecting to I2P", new Exception("I did it"));
             Properties opts = _context.getProperties();
             if (_opts != null) {
-                for (Iterator<String> iter = _opts.keySet().iterator(); iter.hasNext(); ) {
-                    String key = iter.next();
-                    opts.setProperty(key, _opts.get(key).toString());
-                }
+                for (Map.Entry<String, String> entry : _opts.entrySet() )
+                    opts.setProperty(entry.getKey(), entry.getValue());
             }
             if (opts.getProperty("inbound.nickname") == null)
                 opts.setProperty("inbound.nickname", _baseName.replace("i2psnark", "I2PSnark"));
diff --git a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java
index d6e00f79712d2ff7e3210eaf4bd4588bf5ace83e..774c7a778788faf15b31f5622f6595377c0c8302 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java
@@ -14,7 +14,6 @@ import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
@@ -1687,8 +1686,7 @@ public class SnarkManager implements CompleteListener {
         // Don't remove magnet torrents that don't have a torrent file yet
         existingNames.removeAll(_magnets);
         // now lets see which ones have been removed...
-        for (Iterator<String> iter = existingNames.iterator(); iter.hasNext(); ) {
-            String name = iter.next();
+        for (String name : existingNames) {
             if (foundNames.contains(name)) {
                 // known and still there.  noop
             } else {
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java
index 5e86042faa059816dc21fae623e7f0a1c3a35fac..1de544c1f89b63e0c0519445b7dd4cc0ae2fe925 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java
@@ -204,7 +204,7 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer {
                     if (_log.shouldLog(Log.WARN))
                         _log.warn("Refusing POST since peer is throttled: " + peerHash.toBase64());
                     try {
-                        // Send a 503, so the user doesn't get an HTTP Proxy error message
+                        // Send a 403, so the user doesn't get an HTTP Proxy error message
                         // and blame his router or the network.
                         socket.getOutputStream().write(ERR_DENIED);
                     } catch (IOException ioe) {}
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2Ping.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2Ping.java
index 3ab952a951c614bdaf38717bd2400f243f8764ae..0390f84b7e5317a9b27cd536de791080494d18ab 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2Ping.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2Ping.java
@@ -7,7 +7,6 @@ import java.io.BufferedReader;
 import java.io.FileReader;
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.List;
 
 import net.i2p.I2PAppContext;
@@ -137,10 +136,8 @@ public class I2Ping extends I2PTunnelTask implements Runnable {
                     reportTimes = false;
             }
             br.close();
-            for (Iterator<PingHandler> it = pingHandlers.iterator(); it.hasNext();) {
-                Thread t = (Thread) it.next();
+            for (Thread t : pingHandlers)
                 t.join();
-            }
             return;
         } else {
             Thread t = new PingHandler(cmd);
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 66b7070ae5d9bebe5aadf0f28591cd989e4ebb66..7b406fbff0550efa0704ae51883f31ae4f548354 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHelper.java
@@ -1,7 +1,6 @@
 package net.i2p.router.web;
 
 import java.io.File;
-import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
 import java.util.TreeSet;
@@ -58,8 +57,7 @@ public class ConfigUIHelper extends HelperBase {
          }
          // user themes
          Set<String> props = _context.getPropertyNames();
-         for (Iterator<String> iter = props.iterator(); iter.hasNext(); ) {
-              String prop = iter.next();
+         for (String prop : props) {
               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/GraphHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/GraphHelper.java
index d0b3947b4ebf692bcc6682976f909737c12c4212..b98a02119bc7e1be4c2c721b0bcbe031e7f171db 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/GraphHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/GraphHelper.java
@@ -4,7 +4,6 @@ import java.io.IOException;
 import java.io.Writer;
 import java.util.Comparator;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -144,8 +143,7 @@ public class GraphHelper extends FormHandler {
             // go to some trouble to see if we have the data for the combined bw graph
             boolean hasTx = false;
             boolean hasRx = false;
-            for (Iterator<SummaryListener> iter = ordered.iterator(); iter.hasNext(); ) {
-                SummaryListener lsnr = iter.next();
+            for (SummaryListener lsnr : ordered) {
                 String title = lsnr.getRate().getRateStat().getName();
                 if (title.equals("bw.sendRate")) hasTx = true;
                 else if (title.equals("bw.recvRate")) hasRx = true;
@@ -166,8 +164,7 @@ public class GraphHelper extends FormHandler {
                            + "\" alt=\"" + title + "\" title=\"" + title + "\"></a>\n");
             }
             
-            for (Iterator<SummaryListener> iter = ordered.iterator(); iter.hasNext(); ) {
-                SummaryListener lsnr = iter.next();
+            for (SummaryListener lsnr : ordered) {
                 Rate r = lsnr.getRate();
                 // e.g. "statname for 60m"
                 String title = _("{0} for {1}", r.getRateStat().getName(), DataHelper.formatDuration2(_periodCount * r.getPeriod()));
diff --git a/apps/streaming/java/src/net/i2p/client/streaming/Connection.java b/apps/streaming/java/src/net/i2p/client/streaming/Connection.java
index c206ba48d410bdda7754aa55568ce73088b96407..9c2a9051f172afd8c158478b9ae6a2b57fa4514d 100644
--- a/apps/streaming/java/src/net/i2p/client/streaming/Connection.java
+++ b/apps/streaming/java/src/net/i2p/client/streaming/Connection.java
@@ -609,7 +609,7 @@ class Connection {
         _inputStream.streamErrorOccurred(ioe);
         _connectionError = "Connection reset";
         synchronized (_connectLock) { _connectLock.notifyAll(); }
-        // RFC 793 end of setion 3.4: We are completely done.
+        // RFC 793 end of section 3.4: We are completely done.
         disconnectComplete();
     }
 
diff --git a/apps/susimail/src/src/i2p/susi/webmail/RequestWrapper.java b/apps/susimail/src/src/i2p/susi/webmail/RequestWrapper.java
index 0facb83790940148002889b103d4dd6f655e0efa..30e8bb44662f16aea6d603e6ddbf5268e6e766a1 100644
--- a/apps/susimail/src/src/i2p/susi/webmail/RequestWrapper.java
+++ b/apps/susimail/src/src/i2p/susi/webmail/RequestWrapper.java
@@ -28,6 +28,7 @@ import java.io.InputStream;
 import java.util.Enumeration;
 import java.util.Hashtable;
 import java.util.Locale;
+import java.util.Map;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
@@ -135,10 +136,10 @@ public class RequestWrapper {
 		String result = null;
 		if( multiPartRequest != null ) {
 			Hashtable<String, String> params = multiPartRequest.getParams( partName );
-			for( Enumeration<String> e = params.keys(); e.hasMoreElements(); ) {
-				String key = e.nextElement();
+			for( Map.Entry<String, String> e : params.entrySet() ) {
+				String key = e.getKey();
 				if( key.toLowerCase(Locale.US).compareToIgnoreCase( "content-type") == 0 ) {
-					String value = (String)params.get( key );
+					String value = e.getValue();
 					int i = value.indexOf( ";" );
 					if( i != -1 )
 						result = value.substring( 0, i );
diff --git a/core/java/src/com/nettgryppa/security/HashCash.java b/core/java/src/com/nettgryppa/security/HashCash.java
index be8d92a471162ba8d71420801966f91b87d72ce8..3f3a85f7a5ffceb15b809ace9f208c2eae5b33ef 100644
--- a/core/java/src/com/nettgryppa/security/HashCash.java
+++ b/core/java/src/com/nettgryppa/security/HashCash.java
@@ -338,7 +338,7 @@ private static long bytesToLong(byte[] b) {
     boolean first = true;
     
     for(Map.Entry<String, List<String>> entry: extensions.entrySet()) {
-        String key = entry.getKey();
+      String key = entry.getKey();
       if(key.contains(":") || key.contains(";") || key.contains("="))
           throw new IllegalArgumentException("Extension key contains an illegal character. " + key);
       if(!first)
diff --git a/core/java/src/net/i2p/client/I2PSessionImpl2.java b/core/java/src/net/i2p/client/I2PSessionImpl2.java
index 487d53e279d433e96f656f13049ad93c814b23b3..27e787e435f5a9b8b889458d55c8aaa7c0877914 100644
--- a/core/java/src/net/i2p/client/I2PSessionImpl2.java
+++ b/core/java/src/net/i2p/client/I2PSessionImpl2.java
@@ -523,10 +523,8 @@ class I2PSessionImpl2 extends I2PSessionImpl {
         if (_sendingStates == null)    // only null if overridden by I2PSimpleSession
             return;
         synchronized (_sendingStates) {
-            for (Iterator<MessageState> iter = _sendingStates.iterator(); iter.hasNext();) {
-                MessageState state = iter.next();
+            for (MessageState state : _sendingStates)
                 state.cancel();
-            }
             if (_log.shouldLog(Log.INFO)) _log.info(getPrefix() + "Disconnecting " + _sendingStates.size() + " states");
             _sendingStates.clear();
         }
diff --git a/core/java/src/net/i2p/client/MessageState.java b/core/java/src/net/i2p/client/MessageState.java
index 7425ed56dd0ceddec7ab87c3ef9cf19c93d98c98..4d56f648592e4d76f63a62e2a58115ec12eede25 100644
--- a/core/java/src/net/i2p/client/MessageState.java
+++ b/core/java/src/net/i2p/client/MessageState.java
@@ -1,7 +1,6 @@
 package net.i2p.client;
 
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicLong;
 
@@ -150,8 +149,7 @@ class MessageState {
 
         if (_log.shouldLog(Log.DEBUG)) 
             _log.debug(_prefix + "isSuccess(" + wantedStatus + "): " + _receivedStatus);
-        for (Iterator<Integer> iter = _receivedStatus.iterator(); iter.hasNext();) {
-            Integer val = iter.next();
+        for (Integer val : _receivedStatus) {
             int recv = val.intValue();
             switch (recv) {
                 case MessageStatusMessage.STATUS_SEND_BEST_EFFORT_FAILURE:
@@ -210,8 +208,7 @@ class MessageState {
         if (_log.shouldLog(Log.DEBUG)) 
             _log.debug(_prefix + "isFailure(" + wantedStatus + "): " + _receivedStatus);
         
-        for (Iterator<Integer> iter = _receivedStatus.iterator(); iter.hasNext();) {
-            Integer val = iter.next();
+        for (Integer val : _receivedStatus) {
             int recv = val.intValue();
             switch (recv) {
                 case MessageStatusMessage.STATUS_SEND_BEST_EFFORT_FAILURE:
diff --git a/core/java/src/net/i2p/crypto/ElGamalAESEngine.java b/core/java/src/net/i2p/crypto/ElGamalAESEngine.java
index 849fd1600660a152a01dfff9f33a3002a4152ffa..126a06a36f08a098ac20a37504de49cdd93ba4ed 100644
--- a/core/java/src/net/i2p/crypto/ElGamalAESEngine.java
+++ b/core/java/src/net/i2p/crypto/ElGamalAESEngine.java
@@ -12,7 +12,6 @@ package net.i2p.crypto;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 
@@ -656,8 +655,7 @@ public class ElGamalAESEngine {
         int cur = prefixBytes;
         DataHelper.toLong(aesData, cur, 2, tagsForDelivery.size());
         cur += 2;
-        for (Iterator<SessionTag> iter = tagsForDelivery.iterator(); iter.hasNext();) {
-            SessionTag tag = iter.next();
+        for (SessionTag tag : tagsForDelivery) {
             System.arraycopy(tag.getData(), 0, aesData, cur, SessionTag.BYTE_LENGTH);
             cur += SessionTag.BYTE_LENGTH;
         }
diff --git a/core/java/src/net/i2p/crypto/KeyStoreUtil.java b/core/java/src/net/i2p/crypto/KeyStoreUtil.java
index 81179ae8f46195c9bd3ab9dcebca1b3cc6275bac..654a0586834074a7f23f7bd0564e640d33c235d3 100644
--- a/core/java/src/net/i2p/crypto/KeyStoreUtil.java
+++ b/core/java/src/net/i2p/crypto/KeyStoreUtil.java
@@ -266,7 +266,7 @@ public class KeyStoreUtil {
      *  @param keyPW the key password, must be at least 6 characters
      *
      *  @return success
-     *  @since 0.8.3, consolidated from RouterConsoleRUnner and SSLClientListenerRunner in 0.9.9
+     *  @since 0.8.3, consolidated from RouterConsoleRunner and SSLClientListenerRunner in 0.9.9
      */
     public static boolean createKeys(File ks, String alias, String cname, String ou,
                                      String keyPW) {
@@ -290,7 +290,7 @@ public class KeyStoreUtil {
      *  @param keyPW the key password, must be at least 6 characters
      *
      *  @return success
-     *  @since 0.8.3, consolidated from RouterConsoleRUnner and SSLClientListenerRunner in 0.9.9
+     *  @since 0.8.3, consolidated from RouterConsoleRunner and SSLClientListenerRunner in 0.9.9
      */
     public static boolean createKeys(File ks, String ksPW, String alias, String cname, String ou,
                                      int validDays, String keyAlg, int keySize, String keyPW) {
diff --git a/core/java/src/net/i2p/data/LeaseSet.java b/core/java/src/net/i2p/data/LeaseSet.java
index 45c6978aed395e608be7c5e4e1c8ae4c19427ff0..75b24220d4d89a399f5b258c38ba3c2171081ca4 100644
--- a/core/java/src/net/i2p/data/LeaseSet.java
+++ b/core/java/src/net/i2p/data/LeaseSet.java
@@ -15,7 +15,6 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.List;
 
 import net.i2p.I2PAppContext;
@@ -290,10 +289,8 @@ public class LeaseSet extends DatabaseEntry {
             _signingKey.writeBytes(out);
             DataHelper.writeLong(out, 1, _leases.size());
             //DataHelper.writeLong(out, 4, _version);
-            for (Iterator<Lease> iter = _leases.iterator(); iter.hasNext();) {
-                Lease lease = iter.next();
+            for (Lease lease : _leases)
                 lease.writeBytes(out);
-            }
         } catch (IOException ioe) {
             return null;
         } catch (DataFormatException dfe) {
@@ -339,10 +336,8 @@ public class LeaseSet extends DatabaseEntry {
         _signingKey.writeBytes(out);
         DataHelper.writeLong(out, 1, _leases.size());
         //DataHelper.writeLong(out, 4, _version);
-        for (Iterator<Lease> iter = _leases.iterator(); iter.hasNext();) {
-            Lease lease = iter.next();
+        for (Lease lease : _leases)
             lease.writeBytes(out);
-        }
         _signature.writeBytes(out);
     }
     
diff --git a/core/java/src/net/i2p/util/I2PAppThread.java b/core/java/src/net/i2p/util/I2PAppThread.java
index bf117ab83da8010d8be90fc708a1d9a09cfea8f8..da291d210431c9eb68710deb97f6f48774510b52 100644
--- a/core/java/src/net/i2p/util/I2PAppThread.java
+++ b/core/java/src/net/i2p/util/I2PAppThread.java
@@ -10,7 +10,6 @@ package net.i2p.util;
  */
 
 
-import java.util.Iterator;
 import java.util.Set;
 import java.util.concurrent.CopyOnWriteArraySet;
 
@@ -45,10 +44,8 @@ public class I2PAppThread extends I2PThread {
     
     @Override
     protected void fireOOM(OutOfMemoryError oom) {
-        for (Iterator<OOMEventListener> iter = _threadListeners.iterator(); iter.hasNext(); ) {
-            OOMEventListener listener = iter.next();
+        for (OOMEventListener listener : _threadListeners)
             listener.outOfMemory(oom);
-        }
     }
 
     /** register a new component that wants notification of OOM events */
diff --git a/core/java/src/net/i2p/util/I2PThread.java b/core/java/src/net/i2p/util/I2PThread.java
index 47ce953c676df9193ef761aeadadd798a5afd37e..17cfa1212787a890ea2b43785e782de6bf2e0d7f 100644
--- a/core/java/src/net/i2p/util/I2PThread.java
+++ b/core/java/src/net/i2p/util/I2PThread.java
@@ -10,7 +10,6 @@ package net.i2p.util;
  */
 
 
-import java.util.Iterator;
 import java.util.Set;
 import java.util.concurrent.CopyOnWriteArraySet;
 
@@ -112,10 +111,8 @@ public class I2PThread extends Thread {
 ****/
     
     protected void fireOOM(OutOfMemoryError oom) {
-        for (Iterator<OOMEventListener> iter = _listeners.iterator(); iter.hasNext(); ) {
-            OOMEventListener listener = iter.next();
+        for (OOMEventListener listener : _listeners)
             listener.outOfMemory(oom);
-        }
     }
 
     /** register a new component that wants notification of OOM events */
diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java
index b76ab6863155c06a9a91d0128422812a1b37ce2e..2f2ab6ae7f9089e4b9eb2ec6d64af0db079a1785 100644
--- a/router/java/src/net/i2p/router/RouterVersion.java
+++ b/router/java/src/net/i2p/router/RouterVersion.java
@@ -18,7 +18,7 @@ public class RouterVersion {
     /** deprecated */
     public final static String ID = "Monotone";
     public final static String VERSION = CoreVersion.VERSION;
-    public final static long BUILD = 34;
+    public final static long BUILD = 35;
 
     /** for example "-test" */
     public final static String EXTRA = "-rc";
diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/ExploreKeySelectorJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/ExploreKeySelectorJob.java
index cb4f111f608e1ccd5804d2c6b7c9710e879429b7..2c8af2503854c55ded61be82344bbe1055b1a002 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/ExploreKeySelectorJob.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/ExploreKeySelectorJob.java
@@ -9,7 +9,6 @@ package net.i2p.router.networkdb.kademlia;
  */
 
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.Set;
 
 import net.i2p.data.Hash;
@@ -62,8 +61,7 @@ class ExploreKeySelectorJob extends JobImpl {
             KBucket bucket = _facade.getKBuckets().getBucket(i);
             if (bucket.getKeyCount() < KBucketSet.BUCKET_SIZE) {
                 boolean already = false;
-                for (Iterator<Hash> iter = alreadyQueued.iterator(); iter.hasNext(); ) {
-                    Hash key = iter.next();
+                for (Hash key : alreadyQueued) {
                     if (bucket.shouldContain(key)) {
                         already = true;
                         _log.debug("Bucket " + i + " is already queued for exploration \t" + key);
diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/HarvesterJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/HarvesterJob.java
index fb2c1546bd02933f82526908c5f7d51475fa44e4..a69a2bc9063810c78c899f2ea79ce68232c389f2 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/HarvesterJob.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/HarvesterJob.java
@@ -1,7 +1,6 @@
 package net.i2p.router.networkdb.kademlia;
 
 import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -58,10 +57,8 @@ class HarvesterJob extends JobImpl {
     public void runJob() {
         if (shouldHarvest()) {
             List<Hash> peers = selectPeersToUpdate();
-            for (int i = 0; i < peers.size(); i++) {
-                Hash peer= peers.get(i);
+            for (Hash peer : peers)
                 harvest(peer);
-            }
         }
         requeue(REQUEUE_DELAY);
     }
@@ -79,8 +76,7 @@ class HarvesterJob extends JobImpl {
         Map<Long, Hash> routersByAge = new TreeMap<Long, Hash>();
         Set<Hash> peers = _facade.getAllRouters();
         long now = getContext().clock().now();
-        for (Iterator<Hash> iter = peers.iterator(); iter.hasNext(); ) {
-            Hash peer = iter.next();
+        for (Hash peer : peers) {
             RouterInfo info = _facade.lookupRouterInfoLocally(peer);
             if (info != null) {
                 long when = info.getPublished();
@@ -96,8 +92,7 @@ class HarvesterJob extends JobImpl {
         // ignoring peers that are new, so lets grab the oldest MAX_PER_RUN
         // entries
         List<Hash> rv = new ArrayList<Hash>(); 
-        for (Iterator<Hash> iter = routersByAge.values().iterator(); iter.hasNext(); ) {
-            Hash peer = iter.next();
+        for (Hash peer : routersByAge.values()) {
             rv.add(peer);
             if (rv.size() >= MAX_PER_RUN)
                 break;
diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/SearchJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/SearchJob.java
index a8c84df33e238a7a1eb021a8c03cb9f679c3927a..136d3e90cb8fee9b3f728699955bb7cffd6c457c 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/SearchJob.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/SearchJob.java
@@ -10,7 +10,6 @@ package net.i2p.router.networkdb.kademlia;
 
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 
@@ -290,8 +289,7 @@ class SearchJob extends JobImpl {
                 return;
             } else {
                 attempted.addAll(closestHashes);
-                for (Iterator<Hash> iter = closestHashes.iterator(); iter.hasNext(); ) {
-                    Hash peer = iter.next();
+                for (Hash peer : closestHashes) {
                     DatabaseEntry ds = _facade.getDataStore().get(peer);
                     if (ds == null) {
                         if (_log.shouldLog(Log.INFO))
@@ -630,8 +628,7 @@ class SearchJob extends JobImpl {
             Set<Hash> sendTo = _state.getRepliedPeers(); // _state.getFailed();
             sendTo.addAll(_state.getPending());
             int numSent = 0;
-            for (Iterator<Hash> iter = sendTo.iterator(); iter.hasNext(); ) {
-                Hash peer = iter.next();
+            for (Hash peer : sendTo) {
                 RouterInfo peerInfo = _facade.lookupRouterInfoLocally(peer);
                 if (peerInfo == null) continue;
                 if (resend(peerInfo, (LeaseSet)ds))
diff --git a/router/java/src/net/i2p/router/peermanager/PeerTestJob.java b/router/java/src/net/i2p/router/peermanager/PeerTestJob.java
index d9a00d40a05e5aa64fa14e9939f7e5a999e7f1ab..a2096edcfbadef6dbd02f30565f4fee646661d6b 100644
--- a/router/java/src/net/i2p/router/peermanager/PeerTestJob.java
+++ b/router/java/src/net/i2p/router/peermanager/PeerTestJob.java
@@ -1,7 +1,6 @@
 package net.i2p.router.peermanager;
 
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 
@@ -73,8 +72,7 @@ public class PeerTestJob extends JobImpl {
         if (_log.shouldLog(Log.DEBUG))
             _log.debug("Testing " + peers.size() + " peers");
         
-        for (Iterator<RouterInfo> iter = peers.iterator(); iter.hasNext(); ) {
-            RouterInfo peer = iter.next();
+        for (RouterInfo peer : peers) {
             if (_log.shouldLog(Log.DEBUG))
                 _log.debug("Testing peer " + peer.getIdentity().getHash().toBase64());
             testPeer(peer);
@@ -98,8 +96,7 @@ public class PeerTestJob extends JobImpl {
             _log.debug("Peer selection found " + peerHashes.size() + " peers");
         
         Set<RouterInfo> peers = new HashSet<RouterInfo>(peerHashes.size());
-        for (Iterator<Hash> iter = peerHashes.iterator(); iter.hasNext(); ) {
-            Hash peer = iter.next();
+        for (Hash peer : peerHashes) {
             RouterInfo peerInfo = getContext().netDb().lookupRouterInfoLocally(peer);
             if (peerInfo != null) {
                 peers.add(peerInfo);