diff --git a/apps/BOB/src/net/i2p/BOB/I2Plistener.java b/apps/BOB/src/net/i2p/BOB/I2Plistener.java
index 861a1fbca09eb097de87366e900f0bc1971c1ec1..a94a40b7e13245a7d9581add53ef5f8f959b9589 100644
--- a/apps/BOB/src/net/i2p/BOB/I2Plistener.java
+++ b/apps/BOB/src/net/i2p/BOB/I2Plistener.java
@@ -94,7 +94,7 @@ public class I2Plistener implements Runnable {
 
 				}
 			} catch (I2PException e) {
-				// bad shit
+				// bad stuff
 				System.out.println("Exception " + e);
 			}
 		} finally {
diff --git a/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java b/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java
index 1ef8cd302a5d3a48f65974a79719b4a6f3199f08..592e5474382362e9b602640080c16d3450bf3990 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java
@@ -58,7 +58,7 @@ public class I2PSnarkUtil {
     private volatile I2PSocketManager _manager;
     private boolean _configured;
     private volatile boolean _connecting;
-    private final Set<Hash> _shitlist;
+    private final Set<Hash> _banlist;
     private int _maxUploaders;
     private int _maxUpBW;
     private int _maxConnections;
@@ -86,7 +86,7 @@ public class I2PSnarkUtil {
         _opts = new HashMap();
         //setProxy("127.0.0.1", 4444);
         setI2CPConfig("127.0.0.1", 7654, null);
-        _shitlist = new ConcurrentHashSet();
+        _banlist = new ConcurrentHashSet();
         _maxUploaders = Snark.MAX_TOTAL_UPLOADERS;
         _maxUpBW = DEFAULT_MAX_UP_BW;
         _maxConnections = MAX_CONNECTIONS;
@@ -283,7 +283,7 @@ public class I2PSnarkUtil {
         I2PSocketManager mgr = _manager;
         // FIXME this can cause race NPEs elsewhere
         _manager = null;
-        _shitlist.clear();
+        _banlist.clear();
         if (mgr != null) {
             if (_log.shouldLog(Log.DEBUG))
                 _log.debug("Disconnecting from I2P", new Exception("I did it"));
@@ -306,24 +306,24 @@ public class I2PSnarkUtil {
         if (addr.equals(getMyDestination()))
             throw new IOException("Attempt to connect to myself");
         Hash dest = addr.calculateHash();
-        if (_shitlist.contains(dest))
-            throw new IOException("Not trying to contact " + dest.toBase64() + ", as they are shitlisted");
+        if (_banlist.contains(dest))
+            throw new IOException("Not trying to contact " + dest.toBase64() + ", as they are banlisted");
         try {
             I2PSocket rv = _manager.connect(addr);
             if (rv != null)
-                _shitlist.remove(dest);
+                _banlist.remove(dest);
             return rv;
         } catch (I2PException ie) {
-            _shitlist.add(dest);
-            _context.simpleScheduler().addEvent(new Unshitlist(dest), 10*60*1000);
+            _banlist.add(dest);
+            _context.simpleScheduler().addEvent(new Unbanlist(dest), 10*60*1000);
             throw new IOException("Unable to reach the peer " + peer + ": " + ie.getMessage());
         }
     }
     
-    private class Unshitlist implements SimpleTimer.TimedEvent {
+    private class Unbanlist implements SimpleTimer.TimedEvent {
         private Hash _dest;
-        public Unshitlist(Hash dest) { _dest = dest; }
-        public void timeReached() { _shitlist.remove(_dest); }
+        public Unbanlist(Hash dest) { _dest = dest; }
+        public void timeReached() { _banlist.remove(_dest); }
     }
     
     /**
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ShitlistRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/BanlistRenderer.java
similarity index 89%
rename from apps/routerconsole/java/src/net/i2p/router/web/ShitlistRenderer.java
rename to apps/routerconsole/java/src/net/i2p/router/web/BanlistRenderer.java
index 1c1c39ac3638111c86045a2a3e35a7bef004de82..276a6a5df205421a1ad0d4e2ced3ec14e065b8b1 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ShitlistRenderer.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/BanlistRenderer.java
@@ -18,15 +18,15 @@ import java.util.TreeMap;
 import net.i2p.data.DataHelper;
 import net.i2p.data.Hash;
 import net.i2p.router.RouterContext;
-import net.i2p.router.Shitlist;
+import net.i2p.router.Banlist;
 
 /**
- *  Moved from Shitlist.java
+ *  Moved from Banlist.java
  */
-public class ShitlistRenderer {
+public class BanlistRenderer {
     private final RouterContext _context;
 
-    public ShitlistRenderer(RouterContext context) {
+    public BanlistRenderer(RouterContext context) {
         _context = context;
     }
     
@@ -40,9 +40,9 @@ public class ShitlistRenderer {
         StringBuilder buf = new StringBuilder(1024);
         // move to the jsp
         //buf.append("<h2>Banned Peers</h2>");
-        Map<Hash, Shitlist.Entry> entries = new TreeMap(new HashComparator());
+        Map<Hash, Banlist.Entry> entries = new TreeMap(new HashComparator());
         
-        entries.putAll(_context.shitlist().getEntries());
+        entries.putAll(_context.banlist().getEntries());
         if (entries.isEmpty()) {
             buf.append("<i>").append(_("none")).append("</i>");
             out.write(buf.toString());
@@ -51,9 +51,9 @@ public class ShitlistRenderer {
 
         buf.append("<ul>");
         
-        for (Map.Entry<Hash, Shitlist.Entry> e : entries.entrySet()) {
+        for (Map.Entry<Hash, Banlist.Entry> e : entries.entrySet()) {
             Hash key = e.getKey();
-            Shitlist.Entry entry = e.getValue();
+            Banlist.Entry entry = e.getValue();
             long expires = entry.expireOn-_context.clock().now();
             if (expires <= 0)
                 continue;
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigPeerHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigPeerHandler.java
index 5af095d2c49489eec5101cf5e977eac81b5c9aa5..350bae04924daf061338f888ba2f3918b800033f 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigPeerHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigPeerHandler.java
@@ -20,7 +20,7 @@ public class ConfigPeerHandler extends FormHandler {
         } else if (_action.equals(_("Ban peer until restart"))) {
             Hash h = getHash();
             if (h != null) {
-                _context.shitlist().shitlistRouterForever(h, _("Manually banned via {0}"), "<a href=\"configpeer\">configpeer</a>");
+                _context.banlist().banlistRouterForever(h, _("Manually banned via {0}"), "<a href=\"configpeer\">configpeer</a>");
                 addFormNotice(_("Peer") + " " + _peer + " " + _("banned until restart") );
                 return;
             }
@@ -28,8 +28,8 @@ public class ConfigPeerHandler extends FormHandler {
         } else if (_action.equals(_("Unban peer"))) {
             Hash h = getHash();
             if (h != null) {
-                if (_context.shitlist().isShitlisted(h)) {
-                    _context.shitlist().unshitlistRouter(h);
+                if (_context.banlist().isBanlisted(h)) {
+                    _context.banlist().unbanlistRouter(h);
                     addFormNotice(_("Peer") + " " + _peer + " " + _("unbanned") );
                 } else
                     addFormNotice(_("Peer") + " " + _peer + " " + _("is not currently banned") );
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 a1dce25341cf6eb1ca7f99cbccfaeae0c376884a..aeb3639030cb55d35d76c63a2b0253f77e1e71d3 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java
@@ -168,7 +168,7 @@ class ProfileOrganizerRenderer {
             }
             buf.append("</td><td align=\"right\">").append(num(prof.getIntegrationValue()));
             buf.append("</td><td align=\"center\">");
-            if (_context.shitlist().isShitlisted(peer)) buf.append(_("Banned"));
+            if (_context.banlist().isBanlisted(peer)) buf.append(_("Banned"));
             if (prof.getIsFailing()) buf.append(' ').append(_("Failing"));
             if (_context.commSystem().wasUnreachable(peer)) buf.append(' ').append(_("Unreachable"));
             Rate failed = prof.getTunnelHistory().getFailedRate().getRate(30*60*1000);
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ProfilesHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ProfilesHelper.java
index 2aa1c2afd758dc9aed089168771bad015cf89520..6645558d5d730a2fc5b48c5c11557bcdf33eb811 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ProfilesHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ProfilesHelper.java
@@ -46,7 +46,7 @@ public class ProfilesHelper extends HelperBase {
             renderNavBar();
         } catch (IOException ioe) {}
         if (_full == 3)
-            getShitlistSummary();
+            getBanlistSummary();
         else
             getProfileSummary();
         return "";
@@ -64,9 +64,9 @@ public class ProfilesHelper extends HelperBase {
     }
     
     /** @return empty string, writes directly to _out */
-    public String getShitlistSummary() {
+    public String getBanlistSummary() {
         try {
-            ShitlistRenderer rend = new ShitlistRenderer(_context);
+            BanlistRenderer rend = new BanlistRenderer(_context);
             rend.renderStatusHTML(_out);
         } catch (IOException ioe) {
             ioe.printStackTrace();
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 1fe43f0bfe3435a631413b087ffa36df97fa7a24..e13090f91a5329b4e03f8b0634bf29f1803dbf3d 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java
@@ -284,11 +284,11 @@ public class SummaryHelper extends HelperBase {
      *
      */
 /********
-    public int getShitlistedPeers() { 
+    public int getBanlistedPeers() { 
         if (_context == null) 
             return 0;
         else
-            return _context.shitlist().getRouterCount();
+            return _context.banlist().getRouterCount();
     }
 ********/
  
diff --git a/apps/routerconsole/jsp/confignet.jsp b/apps/routerconsole/jsp/confignet.jsp
index 72de18c4f60b3133c291e8e97ea7b14f9fc4c0b8..cd1ad65f7b049990f840969a6a5fd52d3317951b 100644
--- a/apps/routerconsole/jsp/confignet.jsp
+++ b/apps/routerconsole/jsp/confignet.jsp
@@ -204,7 +204,7 @@
  <p>
  This setting causes your router identity to be regenerated every time your IP address
  changes. If you have a dynamic IP this option can speed up your reintegration into
- the network (since people will have shitlisted your old router identity), and, for
+ the network (since people will have banned your old router identity), and, for
  very weak adversaries, help frustrate trivial
  <a href="http://www.i2p.net/how_threatmodel#intersection">intersection
  attacks</a> against the NetDB.  Your different router identities would only be
diff --git a/apps/routerconsole/jsp/configpeer.jsp b/apps/routerconsole/jsp/configpeer.jsp
index b3aed01e6adce2287620c5039d0c273ad39cfb20..4e4010ecac402ed3b9a9c15a975e3f0394be4db5 100644
--- a/apps/routerconsole/jsp/configpeer.jsp
+++ b/apps/routerconsole/jsp/configpeer.jsp
@@ -55,11 +55,11 @@
  <input type="text" size="8" name="capacity" value="<%=capacity%>" />
  <input type="submit" name="action" class="add" value="<%=intl._("Adjust peer bonuses")%>" /></p></div>
  </form>
- <a name="shitlist"> </a><h2><%=intl._("Banned Peers")%></h2>
+ <a name="banlist"> </a><h2><%=intl._("Banned Peers")%></h2>
  <jsp:useBean class="net.i2p.router.web.ProfilesHelper" id="profilesHelper" scope="request" />
  <jsp:setProperty name="profilesHelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
  <% profilesHelper.storeWriter(out); %>
- <jsp:getProperty name="profilesHelper" property="shitlistSummary" />
+ <jsp:getProperty name="profilesHelper" property="banlistSummary" />
  <div class="wideload"><h2><%=intl._("Banned IPs")%></h2>
  <jsp:getProperty name="peerhelper" property="blocklistSummary" />
 
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 99909b6b30c49c2f1ebbd5454518215402d1c144..ddb9eece3169288ba2a0d19f670a303e8027e328 100644
--- a/apps/streaming/java/src/net/i2p/client/streaming/Connection.java
+++ b/apps/streaming/java/src/net/i2p/client/streaming/Connection.java
@@ -974,7 +974,7 @@ class Connection {
             switch (_options.getInactivityAction()) {
                 case ConnectionOptions.INACTIVITY_ACTION_NOOP:
                     if (_log.shouldLog(Log.WARN))
-                        _log.warn("Inactivity timer expired, but we aint doin' shit");
+                        _log.warn("Inactivity timer expired, not doing anything");
                     break;
                 case ConnectionOptions.INACTIVITY_ACTION_SEND:
                     if (_closeSentOn <= 0 && _closeReceivedOn <= 0) {
diff --git a/core/java/src/net/i2p/util/NativeBigInteger.java b/core/java/src/net/i2p/util/NativeBigInteger.java
index 5b03d687ac4bfe71a8be2667f34f483b6016588c..84cdb7c252e6fb4f6abc3f3b209a828b0a01a2e8 100644
--- a/core/java/src/net/i2p/util/NativeBigInteger.java
+++ b/core/java/src/net/i2p/util/NativeBigInteger.java
@@ -353,7 +353,7 @@ public class NativeBigInteger extends BigInteger {
     /**
      * <p>Compare the BigInteger.modPow vs the NativeBigInteger.modPow of some 
      * really big (2Kbit) numbers 100 different times and benchmark the 
-     * performance (or shit a brick if they don't match).  </p>
+     * performance.</p>
      *
      */
     public static void main(String args[]) {
diff --git a/router/java/src/net/i2p/router/Shitlist.java b/router/java/src/net/i2p/router/Banlist.java
similarity index 60%
rename from router/java/src/net/i2p/router/Shitlist.java
rename to router/java/src/net/i2p/router/Banlist.java
index 48b319a5122b70cb2c0ceea28fd958fb52f7d8c3..c167108e011e488eba371556a17007d83fe50230 100644
--- a/router/java/src/net/i2p/router/Shitlist.java
+++ b/router/java/src/net/i2p/router/Banlist.java
@@ -24,12 +24,12 @@ import net.i2p.util.ConcurrentHashSet;
 import net.i2p.util.Log;
 
 /**
- * Routers are shitlisted only if none of our transports can talk to them
+ * Routers are banlisted only if none of our transports can talk to them
  * or their signed router info is completely screwy.  Individual transports
  * manage their own unreachable lists and do not generally add to the overall
- * shitlist.
+ * banlist.
  */
-public class Shitlist {
+public class Banlist {
     private final Log _log;
     private final RouterContext _context;
     private final Map<Hash, Entry> _entries;
@@ -37,11 +37,11 @@ public class Shitlist {
     public static class Entry {
         /** when it should expire, per the i2p clock */
         public long expireOn;
-        /** why they were shitlisted */
+        /** why they were banlisted */
         public String cause;
         /** separate code so cause can contain {0} for translation */
         public String causeCode;
-        /** what transports they were shitlisted for (String), or null for all transports */
+        /** what transports they were banlisted for (String), or null for all transports */
         public Set<String> transports;
     }
     
@@ -49,46 +49,46 @@ public class Shitlist {
      *  Don't make this too long as the failure may be transient
      *  due to connection limits.
      */
-    public final static long SHITLIST_DURATION_MS = 7*60*1000;
-    public final static long SHITLIST_DURATION_MAX = 30*60*1000;
-    public final static long SHITLIST_DURATION_PARTIAL = 10*60*1000;
-    public final static long SHITLIST_DURATION_FOREVER = 181l*24*60*60*1000; // will get rounded down to 180d on console
-    public final static long SHITLIST_CLEANER_START_DELAY = SHITLIST_DURATION_PARTIAL;
+    public final static long BANLIST_DURATION_MS = 7*60*1000;
+    public final static long BANLIST_DURATION_MAX = 30*60*1000;
+    public final static long BANLIST_DURATION_PARTIAL = 10*60*1000;
+    public final static long BANLIST_DURATION_FOREVER = 181l*24*60*60*1000; // will get rounded down to 180d on console
+    public final static long BANLIST_CLEANER_START_DELAY = BANLIST_DURATION_PARTIAL;
     
-    public Shitlist(RouterContext context) {
+    public Banlist(RouterContext context) {
         _context = context;
-        _log = context.logManager().getLog(Shitlist.class);
+        _log = context.logManager().getLog(Banlist.class);
         _entries = new ConcurrentHashMap(16);
         _context.jobQueue().addJob(new Cleanup(_context));
     }
     
     private class Cleanup extends JobImpl {
-        private List<Hash> _toUnshitlist;
+        private List<Hash> _toUnbanlist;
         public Cleanup(RouterContext ctx) {
             super(ctx);
-            _toUnshitlist = new ArrayList(4);
-            getTiming().setStartAfter(ctx.clock().now() + SHITLIST_CLEANER_START_DELAY);
+            _toUnbanlist = new ArrayList(4);
+            getTiming().setStartAfter(ctx.clock().now() + BANLIST_CLEANER_START_DELAY);
         }
         public String getName() { return "Expire banned peers"; }
         public void runJob() {
-            _toUnshitlist.clear();
+            _toUnbanlist.clear();
             long now = getContext().clock().now();
             try {
                 for (Iterator iter = _entries.entrySet().iterator(); iter.hasNext(); ) {
                     Map.Entry<Hash, Entry> e = (Map.Entry) iter.next();
                     if (e.getValue().expireOn <= now) {
                         iter.remove();
-                        _toUnshitlist.add(e.getKey());
+                        _toUnbanlist.add(e.getKey());
                     }
                 }
             } catch (IllegalStateException ise) {} // next time...
-            for (Hash peer : _toUnshitlist) {
+            for (Hash peer : _toUnbanlist) {
                 PeerProfile prof = _context.profileOrganizer().getProfile(peer);
                 if (prof != null)
-                    prof.unshitlist();
-                _context.messageHistory().unshitlist(peer);
+                    prof.unbanlist();
+                _context.messageHistory().unbanlist(peer);
                 if (_log.shouldLog(Log.INFO))
-                    _log.info("Unshitlisting router (expired) " + peer.toBase64());
+                    _log.info("Unbanlisting router (expired) " + peer.toBase64());
             }
             
             requeue(30*1000);
@@ -100,69 +100,69 @@ public class Shitlist {
     }
     
     /**
-     *  For ShitlistRenderer in router console.
+     *  For BanlistRenderer in router console.
      *  Note - may contain expired entries.
      */
     public Map<Hash, Entry> getEntries() {
         return Collections.unmodifiableMap(_entries);
     }
     
-    public boolean shitlistRouter(Hash peer) {
-        return shitlistRouter(peer, null);
+    public boolean banlistRouter(Hash peer) {
+        return banlistRouter(peer, null);
     }
 
-    public boolean shitlistRouter(Hash peer, String reason) { return shitlistRouter(peer, reason, null); }
+    public boolean banlistRouter(Hash peer, String reason) { return banlistRouter(peer, reason, null); }
 
     /** ick have to put the reasonCode in the front to avoid ambiguity */
-    public boolean shitlistRouter(String reasonCode, Hash peer, String reason) {
-        return shitlistRouter(peer, reason, reasonCode, null, false);
+    public boolean banlistRouter(String reasonCode, Hash peer, String reason) {
+        return banlistRouter(peer, reason, reasonCode, null, false);
     }
 
-    public boolean shitlistRouter(Hash peer, String reason, String transport) {
-        return shitlistRouter(peer, reason, transport, false);
+    public boolean banlistRouter(Hash peer, String reason, String transport) {
+        return banlistRouter(peer, reason, transport, false);
     }
 
-    public boolean shitlistRouterForever(Hash peer, String reason) {
-        return shitlistRouter(peer, reason, null, true);
+    public boolean banlistRouterForever(Hash peer, String reason) {
+        return banlistRouter(peer, reason, null, true);
     }
 
-    public boolean shitlistRouterForever(Hash peer, String reason, String reasonCode) {
-        return shitlistRouter(peer, reason, reasonCode, null, true);
+    public boolean banlistRouterForever(Hash peer, String reason, String reasonCode) {
+        return banlistRouter(peer, reason, reasonCode, null, true);
     }
 
-    public boolean shitlistRouter(Hash peer, String reason, String transport, boolean forever) {
-        return shitlistRouter(peer, reason, null, transport, forever);
+    public boolean banlistRouter(Hash peer, String reason, String transport, boolean forever) {
+        return banlistRouter(peer, reason, null, transport, forever);
     }
 
-    private boolean shitlistRouter(Hash peer, String reason, String reasonCode, String transport, boolean forever) {
+    private boolean banlistRouter(Hash peer, String reason, String reasonCode, String transport, boolean forever) {
         if (peer == null) {
-            _log.error("wtf, why did we try to shitlist null?", new Exception("shitfaced"));
+            _log.error("wtf, why did we try to banlist null?", new Exception("banfaced"));
             return false;
         }
         if (_context.routerHash().equals(peer)) {
-            _log.error("wtf, why did we try to shitlist ourselves?", new Exception("shitfaced"));
+            _log.error("wtf, why did we try to banlist ourselves?", new Exception("banfaced"));
             return false;
         }
         boolean wasAlready = false;
         if (_log.shouldLog(Log.INFO))
-            _log.info("Shitlisting router " + peer.toBase64() +
-               ((transport != null) ? " on transport " + transport : ""), new Exception("Shitlist cause: " + reason));
+            _log.info("Banlisting router " + peer.toBase64() +
+               ((transport != null) ? " on transport " + transport : ""), new Exception("Banlist cause: " + reason));
         
         Entry e = new Entry();
         if (forever) {
-            e.expireOn = _context.clock().now() + SHITLIST_DURATION_FOREVER;
+            e.expireOn = _context.clock().now() + BANLIST_DURATION_FOREVER;
         } else if (transport != null) {
-            e.expireOn = _context.clock().now() + SHITLIST_DURATION_PARTIAL;
+            e.expireOn = _context.clock().now() + BANLIST_DURATION_PARTIAL;
         } else {
-            long period = SHITLIST_DURATION_MS + _context.random().nextLong(SHITLIST_DURATION_MS / 4);
+            long period = BANLIST_DURATION_MS + _context.random().nextLong(BANLIST_DURATION_MS / 4);
             PeerProfile prof = _context.profileOrganizer().getProfile(peer);
             if (prof != null) {
-                period = SHITLIST_DURATION_MS << prof.incrementShitlists();
+                period = BANLIST_DURATION_MS << prof.incrementBanlists();
                 period += _context.random().nextLong(period);
             }
        
-            if (period > SHITLIST_DURATION_MAX)
-                period = SHITLIST_DURATION_MAX;
+            if (period > BANLIST_DURATION_MAX)
+                period = BANLIST_DURATION_MAX;
             e.expireOn = _context.clock().now() + period;
         }
         e.cause = reason;
@@ -202,28 +202,28 @@ public class Shitlist {
         //_context.tunnelManager().peerFailed(peer);
         //_context.messageRegistry().peerFailed(peer);
         if (!wasAlready)
-            _context.messageHistory().shitlist(peer, reason);
+            _context.messageHistory().banlist(peer, reason);
         return wasAlready;
     }
     
-    public void unshitlistRouter(Hash peer) {
-        unshitlistRouter(peer, true);
+    public void unbanlistRouter(Hash peer) {
+        unbanlistRouter(peer, true);
     }
 
-    private void unshitlistRouter(Hash peer, boolean realUnshitlist) { unshitlistRouter(peer, realUnshitlist, null); }
+    private void unbanlistRouter(Hash peer, boolean realUnbanlist) { unbanlistRouter(peer, realUnbanlist, null); }
 
-    public void unshitlistRouter(Hash peer, String transport) { unshitlistRouter(peer, true, transport); }
+    public void unbanlistRouter(Hash peer, String transport) { unbanlistRouter(peer, true, transport); }
 
-    private void unshitlistRouter(Hash peer, boolean realUnshitlist, String transport) {
+    private void unbanlistRouter(Hash peer, boolean realUnbanlist, String transport) {
         if (peer == null) return;
         if (_log.shouldLog(Log.DEBUG))
-            _log.debug("Calling unshitlistRouter " + peer.toBase64()
+            _log.debug("Calling unbanlistRouter " + peer.toBase64()
                       + (transport != null ? "/" + transport : ""));
         boolean fully = false;
 
         Entry e = _entries.remove(peer);
         if ( (e == null) || (e.transports == null) || (transport == null) || (e.transports.size() <= 1) ) {
-            // fully unshitlisted
+            // fully unbanlisted
             fully = true;
         } else {
             e.transports.remove(transport);
@@ -234,30 +234,30 @@ public class Shitlist {
         }
 
         if (fully) {
-            if (realUnshitlist) {
+            if (realUnbanlist) {
                 PeerProfile prof = _context.profileOrganizer().getProfile(peer);
                 if (prof != null)
-                    prof.unshitlist();
+                    prof.unbanlist();
             }
-            _context.messageHistory().unshitlist(peer);
+            _context.messageHistory().unbanlist(peer);
             if (_log.shouldLog(Log.INFO) && e != null)
-                _log.info("Unshitlisting router " + peer.toBase64()
+                _log.info("Unbanlisting router " + peer.toBase64()
                           + (transport != null ? "/" + transport : ""));
         }
     }
     
-    public boolean isShitlisted(Hash peer) { return isShitlisted(peer, null); }
+    public boolean isBanlisted(Hash peer) { return isBanlisted(peer, null); }
 
-    public boolean isShitlisted(Hash peer, String transport) {
+    public boolean isBanlisted(Hash peer, String transport) {
         boolean rv = false;
-        boolean unshitlist = false;
+        boolean unbanlist = false;
 
         Entry entry = _entries.get(peer);
         if (entry == null) {
             rv = false;
         } else if (entry.expireOn <= _context.clock().now()) {
             _entries.remove(peer);
-            unshitlist = true;
+            unbanlist = true;
             rv = false;
         } else if (entry.transports == null) {
             rv = true;
@@ -265,21 +265,21 @@ public class Shitlist {
             rv = entry.transports.contains(transport);
         }
         
-        if (unshitlist) {
+        if (unbanlist) {
             PeerProfile prof = _context.profileOrganizer().getProfile(peer);
             if (prof != null)
-                prof.unshitlist();
-            _context.messageHistory().unshitlist(peer);
+                prof.unbanlist();
+            _context.messageHistory().unbanlist(peer);
             if (_log.shouldLog(Log.INFO))
-                _log.info("Unshitlisting router (expired) " + peer.toBase64());
+                _log.info("Unbanlisting router (expired) " + peer.toBase64());
         }
         
         return rv;
     }
     
-    public boolean isShitlistedForever(Hash peer) {
+    public boolean isBanlistedForever(Hash peer) {
         Entry entry = _entries.get(peer);
-        return entry != null && entry.expireOn > _context.clock().now() + SHITLIST_DURATION_MAX;
+        return entry != null && entry.expireOn > _context.clock().now() + BANLIST_DURATION_MAX;
     }
 
     /** @deprecated moved to router console */
diff --git a/router/java/src/net/i2p/router/Blocklist.java b/router/java/src/net/i2p/router/Blocklist.java
index 52cbad199943fd00ebc8aaad0a7489829d51b6e9..5f8112cc072c02f3092dd5c3b1af9621db67a550 100644
--- a/router/java/src/net/i2p/router/Blocklist.java
+++ b/router/java/src/net/i2p/router/Blocklist.java
@@ -35,18 +35,18 @@ import net.i2p.util.Log;
 import net.i2p.util.Translate;
 
 /**
- * Manage blocking by IP address, in a manner similar to the Shitlist,
+ * Manage blocking by IP address, in a manner similar to the Banlist,
  * which blocks by router hash.
  *
  * We also try to keep the two lists in sync: if a router at a given IP is
- * blocked, we will also shitlist it "forever" (until the next reboot).
+ * blocked, we will also banlist it "forever" (until the next reboot).
  *
- * While the reverse case (blocking the IP of a router shitlisted forever)
+ * While the reverse case (blocking the IP of a router banlisted forever)
  * is not automatic, the transports will call add() below to block the IP,
  * which allows the transports to terminate an inbound connection before
  * the router ident handshake.
  *
- * And the on-disk blocklist can also contain router hashes to be shitlisted.
+ * And the on-disk blocklist can also contain router hashes to be banlisted.
  *
  * So, this class maintains three separate lists:
  *<pre>
@@ -58,9 +58,9 @@ import net.i2p.util.Translate;
  * Read in the IP blocklist from a file, store it in-memory as efficiently
  * as we can, and perform tests against it as requested.
  *
- * When queried for a peer that is blocklisted but isn't shitlisted,
- * shitlist it forever, then go back to the file to get the original
- * entry so we can add the reason to the shitlist text.
+ * When queried for a peer that is blocklisted but isn't banlisted,
+ * banlist it forever, then go back to the file to get the original
+ * entry so we can add the reason to the banlist text.
  *
  */
 public class Blocklist {
@@ -128,7 +128,7 @@ public class Blocklist {
                     reason = _x("Banned by router hash: {0}");
                 else
                     reason = _x("Banned by router hash");
-                _context.shitlist().shitlistRouterForever(peer, reason, comment);
+                _context.banlist().banlistRouterForever(peer, reason, comment);
             }
             _peerBlocklist = null;
 
@@ -280,7 +280,7 @@ public class Blocklist {
         }
     }
 
-    private Entry parse(String buf, boolean bitch) {
+    private Entry parse(String buf, boolean shouldLog) {
         byte[] ip1;
         byte[] ip2;
         int start1 = 0;
@@ -365,15 +365,15 @@ public class Blocklist {
                 ip2 = ip1;
             }
         } catch (UnknownHostException uhe) {
-            if (bitch && _log.shouldLog(Log.ERROR))
+            if (shouldLog && _log.shouldLog(Log.ERROR))
                 _log.error("Format error in the blocklist file: " + buf);
             return null;
         } catch (NumberFormatException nfe) {
-            if (bitch && _log.shouldLog(Log.ERROR))
+            if (shouldLog && _log.shouldLog(Log.ERROR))
                 _log.error("Format error in the blocklist file: " + buf);
             return null;
         } catch (IndexOutOfBoundsException ioobe) {
-            if (bitch && _log.shouldLog(Log.ERROR))
+            if (shouldLog && _log.shouldLog(Log.ERROR))
                 _log.error("Format error in the blocklist file: " + buf);
             return null;
         }
@@ -487,16 +487,16 @@ public class Blocklist {
 
     /**
      * Does the peer's IP address appear in the blocklist?
-     * If so, and it isn't shitlisted, shitlist it forever...
+     * If so, and it isn't banlisted, banlist it forever...
      */
     public boolean isBlocklisted(Hash peer) {
         List<byte[]> ips = getAddresses(peer);
         for (Iterator<byte[]> iter = ips.iterator(); iter.hasNext(); ) {
             byte ip[] = iter.next();
             if (isBlocklisted(ip)) {
-                if (! _context.shitlist().isShitlisted(peer))
+                if (! _context.banlist().isBanlisted(peer))
                     // nice knowing you...
-                    shitlist(peer, ip);
+                    banlist(peer, ip);
                 return true;
             }
         }
@@ -504,7 +504,7 @@ public class Blocklist {
     }
 
     /**
-     * calling this externally won't shitlist the peer, this is just an IP check
+     * calling this externally won't banlist the peer, this is just an IP check
      */
     public boolean isBlocklisted(String ip) {
         byte[] pib = Addresses.getIP(ip);
@@ -513,7 +513,7 @@ public class Blocklist {
     }
 
     /**
-     * calling this externally won't shitlist the peer, this is just an IP check
+     * calling this externally won't banlist the peer, this is just an IP check
      */
     public boolean isBlocklisted(byte ip[]) {
         if (ip.length != 4)
@@ -648,10 +648,10 @@ public class Blocklist {
      * actual line in the blocklist file, this could take a while.
      *
      */
-    private void shitlist(Hash peer, byte[] ip) {
+    private void banlist(Hash peer, byte[] ip) {
         // Temporary reason, until the job finishes
         String reason = _x("IP banned by blocklist.txt entry {0}");
-        _context.shitlist().shitlistRouterForever(peer, reason, Addresses.toString(ip));
+        _context.banlist().banlistRouterForever(peer, reason, Addresses.toString(ip));
         if (!  _context.getBooleanPropertyDefaultTrue(PROP_BLOCKLIST_DETAIL))
             return;
         boolean shouldRunJob;
@@ -663,23 +663,23 @@ public class Blocklist {
         if (!shouldRunJob)
             return;
         // get the IPs now because it won't be in the netdb by the time the job runs
-        Job job = new ShitlistJob(peer, getAddresses(peer));
+        Job job = new BanlistJob(peer, getAddresses(peer));
         if (number > 0)
             job.getTiming().setStartAfter(_context.clock().now() + (30*1000l * number));
         _context.jobQueue().addJob(job);
     }
 
-    private class ShitlistJob extends JobImpl {
+    private class BanlistJob extends JobImpl {
         private final Hash _peer;
         private final List<byte[]> _ips;
-        public ShitlistJob (Hash p, List<byte[]> ips) {
+        public BanlistJob (Hash p, List<byte[]> ips) {
             super(_context);
             _peer = p;
             _ips = ips;
         }
         public String getName() { return "Ban Peer by IP"; }
         public void runJob() {
-            shitlistForever(_peer, _ips);
+            banlistForever(_peer, _ips);
             synchronized (_inProcess) {
                 _inProcess.remove(_peer);
             }
@@ -687,7 +687,7 @@ public class Blocklist {
     }
 
     /**
-     * Look up the original record so we can record the reason in the shitlist.
+     * Look up the original record so we can record the reason in the banlist.
      * That's the only reason to do this.
      * Only synchronize to cut down on the I/O load.
      * Additional jobs can wait.
@@ -695,7 +695,7 @@ public class Blocklist {
      * So we also stagger these jobs.
      *
      */
-    private synchronized void shitlistForever(Hash peer, List<byte[]> ips) {
+    private synchronized void banlistForever(Hash peer, List<byte[]> ips) {
         String file = _context.getProperty(PROP_BLOCKLIST_FILE, BLOCKLIST_FILE_DEFAULT);
         File BLFile = new File(file);
         if (!BLFile.isAbsolute())
@@ -732,8 +732,8 @@ public class Blocklist {
                         //}
                         //reason = reason + " banned by " + BLOCKLIST_FILE_DEFAULT + " entry \"" + buf + "\"";
                         if (_log.shouldLog(Log.WARN))
-                            _log.warn("Shitlisting " + peer + " " + reason);
-                        _context.shitlist().shitlistRouterForever(peer, reason, buf.toString());
+                            _log.warn("Banlisting " + peer + " " + reason);
+                        _context.banlist().banlistRouterForever(peer, reason, buf.toString());
                         return;
                     }
                 }
@@ -744,7 +744,7 @@ public class Blocklist {
                 if (in != null) try { in.close(); } catch (IOException ioe) {}
             }
         }
-        // We already shitlisted in shitlist(peer), that's good enough
+        // We already banlisted in banlist(peer), that's good enough
     }
 
     private static final int MAX_DISPLAY = 1000;
diff --git a/router/java/src/net/i2p/router/MessageHistory.java b/router/java/src/net/i2p/router/MessageHistory.java
index 5563eec2151f9af6b5e75438e81edc8b12d7768b..2ded9f03b895aabc993fe2d2a84935f24bc27ddc 100644
--- a/router/java/src/net/i2p/router/MessageHistory.java
+++ b/router/java/src/net/i2p/router/MessageHistory.java
@@ -391,21 +391,21 @@ public class MessageHistory {
     }
     
     /**
-     * We shitlisted the peer
+     * We banlisted the peer
      */
-    public void shitlist(Hash peer, String reason) {
+    public void banlist(Hash peer, String reason) {
         if (!_doLog) return;
         if (peer == null) return;
-        addEntry("Shitlist " + peer.toBase64() + ": " + reason);
+        addEntry("Banlist " + peer.toBase64() + ": " + reason);
     }
        
     /**
-     * We unshitlisted the peer
+     * We unbanlisted the peer
      */
-    public void unshitlist(Hash peer) {
+    public void unbanlist(Hash peer) {
         if (!_doLog) return;
         if (peer == null) return;
-        addEntry("Unshitlist " + peer.toBase64());
+        addEntry("Unbanlist " + peer.toBase64());
     }
     
     /**
diff --git a/router/java/src/net/i2p/router/RouterContext.java b/router/java/src/net/i2p/router/RouterContext.java
index aff11b0527439381e638c2a3a7195b2ec1f560be..fa5b654545d7630b641e3f15d4bb6d0d2944d9fe 100644
--- a/router/java/src/net/i2p/router/RouterContext.java
+++ b/router/java/src/net/i2p/router/RouterContext.java
@@ -54,7 +54,7 @@ public class RouterContext extends I2PAppContext {
     private TunnelManagerFacade _tunnelManager;
     private TunnelDispatcher _tunnelDispatcher;
     private StatisticsManager _statPublisher;
-    private Shitlist _shitlist;
+    private Banlist _banlist;
     private Blocklist _blocklist;
     private MessageValidator _messageValidator;
     //private MessageStateMonitor _messageStateMonitor;
@@ -188,7 +188,7 @@ public class RouterContext extends I2PAppContext {
             _tunnelManager = new DummyTunnelManagerFacade();
         _tunnelDispatcher = new TunnelDispatcher(this);
         _statPublisher = new StatisticsManager(this);
-        _shitlist = new Shitlist(this);
+        _banlist = new Banlist(this);
         _blocklist = new Blocklist(this);
         _messageValidator = new MessageValidator(this);
         _throttle = new RouterThrottleImpl(this);
@@ -343,7 +343,7 @@ public class RouterContext extends I2PAppContext {
     /** 
      * who does this peer hate?
      */
-    public Shitlist shitlist() { return _shitlist; }
+    public Banlist banlist() { return _banlist; }
     public Blocklist blocklist() { return _blocklist; }
     /**
      * The router keeps track of messages it receives to prevent duplicates, as
@@ -377,7 +377,7 @@ public class RouterContext extends I2PAppContext {
         buf.append(_bandwidthLimiter).append('\n');
         buf.append(_tunnelManager).append('\n');
         buf.append(_statPublisher).append('\n');
-        buf.append(_shitlist).append('\n');
+        buf.append(_banlist).append('\n');
         buf.append(_messageValidator).append('\n');
         return buf.toString();
     }
diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodOnlySearchJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodOnlySearchJob.java
index 50541770149f268a908ea8f7a8205b734b921d6b..77d7146a23c5c39cddece3741f216f4856d29d5e 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodOnlySearchJob.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodOnlySearchJob.java
@@ -109,11 +109,11 @@ class FloodOnlySearchJob extends FloodSearchJob {
         // We need to randomize our ff selection, else we stay with the same ones since
         // getFloodfillPeers() is sorted by closest distance. Always using the same
         // ones didn't help reliability.
-        // Also, query the unheard-from, unprofiled, failing, unreachable and shitlisted ones last.
+        // Also, query the unheard-from, unprofiled, failing, unreachable and banlisted ones last.
         // We should hear from floodfills pretty frequently so set a 30m time limit.
         // If unprofiled we haven't talked to them in a long time.
-        // We aren't contacting the peer directly, so shitlist doesn't strictly matter,
-        // but it's a bad sign, and we often shitlist a peer before we fail it...
+        // We aren't contacting the peer directly, so banlist doesn't strictly matter,
+        // but it's a bad sign, and we often banlist a peer before we fail it...
         if (floodfillPeers.size() > CONCURRENT_SEARCHES) {
             Collections.shuffle(floodfillPeers, getContext().random());
             List ffp = new ArrayList(floodfillPeers.size());
@@ -123,7 +123,7 @@ class FloodOnlySearchJob extends FloodSearchJob {
                  Hash peer = (Hash)floodfillPeers.get(i);
                  PeerProfile profile = getContext().profileOrganizer().getProfile(peer);
                  if (profile == null || profile.getLastHeardFrom() < before ||
-                     profile.getIsFailing() || getContext().shitlist().isShitlisted(peer) ||
+                     profile.getIsFailing() || getContext().banlist().isBanlisted(peer) ||
                      getContext().commSystem().wasUnreachable(peer)) {
                      failcount++;
                      ffp.add(peer);
@@ -135,7 +135,7 @@ class FloodOnlySearchJob extends FloodSearchJob {
             if (floodfillPeers.size() - failcount <= 2)
                 _shouldProcessDSRM = true;
             if (_log.shouldLog(Log.INFO) && failcount > 0)
-                _log.info(getJobId() + ": " + failcount + " of " + floodfillPeers.size() + " floodfills are not heard from, unprofiled, failing, unreachable or shitlisted");
+                _log.info(getJobId() + ": " + failcount + " of " + floodfillPeers.size() + " floodfills are not heard from, unprofiled, failing, unreachable or banlisted");
             floodfillPeers = ffp;
         } else {
             _shouldProcessDSRM = true;
diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillMonitorJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillMonitorJob.java
index f21beb47caf900c4672a55e5883af14f0c1bcc56..85a82b3e358e1db9e349392c7bfd00a050b3ad85 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillMonitorJob.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillMonitorJob.java
@@ -96,11 +96,11 @@ class FloodfillMonitorJob extends JobImpl {
         // Count the "good" ff peers.
         //
         // Who's not good?
-        // the unheard-from, unprofiled, failing, unreachable and shitlisted ones.
+        // the unheard-from, unprofiled, failing, unreachable and banlisted ones.
         // We should hear from floodfills pretty frequently so set a 60m time limit.
         // If unprofiled we haven't talked to them in a long time.
-        // We aren't contacting the peer directly, so shitlist doesn't strictly matter,
-        // but it's a bad sign, and we often shitlist a peer before we fail it...
+        // We aren't contacting the peer directly, so banlist doesn't strictly matter,
+        // but it's a bad sign, and we often banlist a peer before we fail it...
         //
         // Future: use Integration calculation
         //
@@ -110,7 +110,7 @@ class FloodfillMonitorJob extends JobImpl {
         for (Hash peer : floodfillPeers) {
             PeerProfile profile = getContext().profileOrganizer().getProfile(peer);
             if (profile == null || profile.getLastHeardFrom() < before ||
-                profile.getIsFailing() || getContext().shitlist().isShitlisted(peer) ||
+                profile.getIsFailing() || getContext().banlist().isBanlisted(peer) ||
                 getContext().commSystem().wasUnreachable(peer))
                 failcount++;
         }
diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java
index a9380b917a8bd5f86066a8997c9c6df641ef448b..3c7e0e02d0da2bd21ca1b32d00a7ba11b97b7df5 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java
@@ -180,7 +180,7 @@ public class FloodfillNetworkDatabaseFacade extends KademliaNetworkDatabaseFacad
         for (int i = 0; i < peers.size(); i++) {
             Hash peer = peers.get(i);
             RouterInfo target = lookupRouterInfoLocally(peer);
-            if ( (target == null) || (_context.shitlist().isShitlisted(peer)) )
+            if ( (target == null) || (_context.banlist().isBanlisted(peer)) )
                 continue;
             // Don't flood a RI back to itself
             // Not necessary, a ff will do its own flooding (reply token == 0)
diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillPeerSelector.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillPeerSelector.java
index 135b2f92db2ce1192b0cc6ed16230c9a43015d9f..08b902f6ac4cc9b157ce8bb0215ba77476d01501 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillPeerSelector.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillPeerSelector.java
@@ -94,7 +94,7 @@ class FloodfillPeerSelector extends PeerSelector {
     }
     
     /**
-     *  @return all floodfills not shitlisted forever.
+     *  @return all floodfills not banlisted forever.
      *  List will not include our own hash.
      *  List is not sorted and not shuffled.
      */
@@ -105,7 +105,7 @@ class FloodfillPeerSelector extends PeerSelector {
 
     /**
      *  @param toIgnore can be null
-     *  @return all floodfills not shitlisted forever.
+     *  @return all floodfills not banlisted forever.
      *  List MAY INCLUDE our own hash.
      *  List is not sorted and not shuffled.
      */
@@ -122,7 +122,7 @@ class FloodfillPeerSelector extends PeerSelector {
         List<Hash> rv = new ArrayList(set.size());
         for (Hash h : set) {
             if ((toIgnore != null && toIgnore.contains(h)) ||
-                _context.shitlist().isShitlistedForever(h))
+                _context.banlist().isBanlistedForever(h))
                continue;
             rv.add(h);
         }
@@ -135,7 +135,7 @@ class FloodfillPeerSelector extends PeerSelector {
      *  searches and stores won't work well.
      *  List will not include our own hash.
      *
-     *  @return floodfills closest to the key that are not shitlisted forever
+     *  @return floodfills closest to the key that are not banlisted forever
      *  @param key the ROUTING key (NOT the original key)
      *  @param maxNumRouters max to return
      *  Sorted by closest to the key if > maxNumRouters, otherwise not
@@ -299,11 +299,11 @@ class FloodfillPeerSelector extends PeerSelector {
                 return;
             //if (entry.equals(_context.routerHash()))
             //    return;
-            // it isn't direct, so who cares if they're shitlisted
-            //if (_context.shitlist().isShitlisted(entry))
+            // it isn't direct, so who cares if they're banlisted
+            //if (_context.banlist().isBanlisted(entry))
             //    return;
             // ... unless they are really bad
-            if (_context.shitlist().isShitlistedForever(entry))
+            if (_context.banlist().isBanlistedForever(entry))
                 return;
             RouterInfo info = _context.netDb().lookupRouterInfoLocally(entry);
             //if (info == null)
@@ -330,7 +330,7 @@ class FloodfillPeerSelector extends PeerSelector {
         }
 
         /**
-         *  @return list of all with the 'f' mark in their netdb except for shitlisted ones.
+         *  @return list of all with the 'f' mark in their netdb except for banlisted ones.
          *  Will return non-floodfills only if there aren't enough floodfills.
          *
          *  The list is in 3 groups - unsorted (shuffled) within each group.
@@ -348,7 +348,7 @@ class FloodfillPeerSelector extends PeerSelector {
             long now = _context.clock().now();
             // Only add in "good" floodfills here...
             // Let's say published in last 3h and no failed sends in last 30m
-            // (Forever shitlisted ones are excluded in add() above)
+            // (Forever banlisted ones are excluded in add() above)
             for (Iterator<Hash> iter = new RandomIterator(_floodfillMatches); (found < howMany) && iter.hasNext(); ) {
                 Hash entry = iter.next();
                 RouterInfo info = _context.netDb().lookupRouterInfoLocally(entry);
diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/HandleFloodfillDatabaseStoreMessageJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/HandleFloodfillDatabaseStoreMessageJob.java
index 2085d23015fc9208324bfaa23011d9f55be7a117..98a41874b70a671d850275032d77a76205e2bbd8 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/HandleFloodfillDatabaseStoreMessageJob.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/HandleFloodfillDatabaseStoreMessageJob.java
@@ -138,7 +138,7 @@ public class HandleFloodfillDatabaseStoreMessageJob extends JobImpl {
                 // Check new routerinfo address against blocklist
                 if (wasNew) {
                     if (prevNetDb == null) {
-                        if ((!getContext().shitlist().isShitlistedForever(key)) &&
+                        if ((!getContext().banlist().isBanlistedForever(key)) &&
                             getContext().blocklist().isBlocklisted(key) &&
                             _log.shouldLog(Log.WARN))
                                 _log.warn("Blocklisting new peer " + key + ' ' + ri);
@@ -146,7 +146,7 @@ public class HandleFloodfillDatabaseStoreMessageJob extends JobImpl {
                         Collection<RouterAddress> oldAddr = prevNetDb.getAddresses();
                         Collection<RouterAddress> newAddr = ri.getAddresses();
                         if ((!newAddr.equals(oldAddr)) &&
-                            (!getContext().shitlist().isShitlistedForever(key)) &&
+                            (!getContext().banlist().isBanlistedForever(key)) &&
                             getContext().blocklist().isBlocklisted(key) &&
                             _log.shouldLog(Log.WARN))
                                 _log.warn("New address received, Blocklisting old peer " + key + ' ' + ri);
diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/IterativeSearchJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/IterativeSearchJob.java
index 198004babd587d85ccdec2d27d708ef9b90734a2..2565ab13bfb94d71938cd21ab56cec4d318f1f1f 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/IterativeSearchJob.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/IterativeSearchJob.java
@@ -270,7 +270,7 @@ class IterativeSearchJob extends FloodSearchJob {
         RouterInfo ri = getContext().netDb().lookupRouterInfoLocally(peer);
         if (!FloodfillNetworkDatabaseFacade.isFloodfill(ri))
             return;
-        if (getContext().shitlist().isShitlistedForever(peer))
+        if (getContext().banlist().isBanlistedForever(peer))
             return;
         synchronized (this) {
             if (_failedPeers.contains(peer) ||
diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java b/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java
index 9a4aa09c67e8c7e5c5b7d8fd103ca1e57125c182..633dbeff1a1a3111530a4f39e40b6f8c421ae0c9 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java
@@ -106,7 +106,7 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade {
     public final static String DEFAULT_DB_DIR = "netDb";
     
     /** if we have less than this many routers left, don't drop any more,
-     *  even if they're failing or doing bad shit.
+     *  even if they're failing or doing bad stuff.
      */
     protected final static int MIN_REMAINING_ROUTERS = 25;
     
@@ -747,7 +747,7 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade {
             return "Invalid routerInfo signature on " + key.toBase64();
         } else if (upLongEnough && !routerInfo.isCurrent(adjustedExpiration)) {
             if (routerInfo.getNetworkId() != Router.NETWORK_ID) {
-                _context.shitlist().shitlistRouter(key, "Peer is not in our network");
+                _context.banlist().banlistRouter(key, "Peer is not in our network");
                 return "Peer is not in our network (" + routerInfo.getNetworkId() + ", wants " 
                        + Router.NETWORK_ID + "): " + routerInfo.calculateHash().toBase64();
             }
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 590880aaeec2ea1824f8d5cc04cb1f1c586d5873..7df231726fa6bbce22e92a7a2671e664086f35fb 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/SearchJob.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/SearchJob.java
@@ -309,8 +309,8 @@ class SearchJob extends JobImpl {
                             if (onlyFloodfill)
                                 continue;
 			}
-                        if (ri.isHidden()) {// || // allow querying shitlisted, since its indirect
-                            //getContext().shitlist().isShitlisted(peer)) {
+                        if (ri.isHidden()) {// || // allow querying banlisted, since its indirect
+                            //getContext().banlist().isBanlisted(peer)) {
                             // dont bother
                         } else {
                             _state.addPending(peer);
@@ -413,8 +413,8 @@ class SearchJob extends JobImpl {
         }
         TunnelId inTunnelId = inTunnel.getReceiveTunnelId(0);
 
-        // this will fail if we've shitlisted our inbound gateway, but the gw may not necessarily
-        // be shitlisted by whomever needs to contact them, so we don't need to check this
+        // this will fail if we've banlisted our inbound gateway, but the gw may not necessarily
+        // be banlisted by whomever needs to contact them, so we don't need to check this
         
         //RouterInfo inGateway = getContext().netDb().lookupRouterInfoLocally(inTunnel.getPeer(0));
         //if (inGateway == null) {
diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/SearchReplyJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/SearchReplyJob.java
index c2365eb0cb1a4b9772eca07bdb310a4a7d08a59d..8d8e5f19d9cc45b46fda1a374a126f1dc46428f0 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/SearchReplyJob.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/SearchReplyJob.java
@@ -23,7 +23,7 @@ class SearchReplyJob extends JobImpl {
      * Peer who we think sent us the reply.  Note: could be spoofed!  If the
      * attacker knew we were searching for a particular key from a 
      * particular peer, they could send us some searchReply messages with
-     * shitty values, trying to get us to consider that peer unreliable.  
+     * bad values, trying to get us to consider that peer unreliable.  
      * Potential fixes include either authenticated 'from' address or use a
      * nonce in the search + searchReply (and check for it in the selector).
      *
@@ -85,12 +85,12 @@ class SearchReplyJob extends JobImpl {
                 if (!sendsBadInfo) {
                     // we don't need to search for everthing we're given here - only ones that
                     // are next in our search path...
-                    // note: no need to think about shitlisted targets in the netdb search, given
+                    // note: no need to think about banlisted targets in the netdb search, given
                     //       the floodfill's behavior
                     // This keeps us from continually chasing blocklisted floodfills
-                    if (getContext().shitlist().isShitlisted(peer)) {
+                    if (getContext().banlist().isBanlisted(peer)) {
                     //    if (_log.shouldLog(Log.INFO))
-                    //        _log.info("Not looking for a shitlisted peer...");
+                    //        _log.info("Not looking for a banlisted peer...");
                     //    getContext().statManager().addRateData("netDb.searchReplyValidationSkipped", 1, 0);
                     } else {
                         //getContext().netDb().lookupRouterInfo(peer, new ReplyVerifiedJob(getContext(), peer), new ReplyNotVerifiedJob(getContext(), peer), _timeoutMs);
diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/StoreJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/StoreJob.java
index 0632da80d85eed28ae936e2e589bddf464498598..d6e0f1ae7fc17a5d02b6fa8f56e28bbd8d7d52c6 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/StoreJob.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/StoreJob.java
@@ -183,10 +183,10 @@ class StoreJob extends JobImpl {
                     //    _state.addSkipped(peer);
                     //}
                     
-                    // we don't want to filter out peers based on our local shitlist, as that opens an avenue for
-                    // manipulation (since a peer can get us to shitlist them by, well, being shitty, and that
+                    // we don't want to filter out peers based on our local banlist, as that opens an avenue for
+                    // manipulation (since a peer can get us to banlist them, and that
                     // in turn would let them assume that a netDb store received didn't come from us)
-                    //if (getContext().shitlist().isShitlisted(((RouterInfo)ds).getIdentity().calculateHash())) {
+                    //if (getContext().banlist().isBanlisted(((RouterInfo)ds).getIdentity().calculateHash())) {
                     //    _state.addSkipped(peer);
                     //} else {
                     //
diff --git a/router/java/src/net/i2p/router/peermanager/PeerProfile.java b/router/java/src/net/i2p/router/peermanager/PeerProfile.java
index c40c26e0185c556e3f462c7f2e2a219e89801434..68b4629b46953ef59e74ecbd8f44b6c980bd134f 100644
--- a/router/java/src/net/i2p/router/peermanager/PeerProfile.java
+++ b/router/java/src/net/i2p/router/peermanager/PeerProfile.java
@@ -60,7 +60,7 @@ public class PeerProfile {
     // does this peer profile contain expanded data, or just the basics?
     private boolean _expanded;
     private boolean _expandedDB;
-    private int _consecutiveShitlists;
+    private int _consecutiveBanlists;
     private final int _distance;
     
     /**
@@ -109,8 +109,8 @@ public class PeerProfile {
     public boolean getIsExpanded() { return _expanded; }
     public boolean getIsExpandedDB() { return _expandedDB; }
     
-    public int incrementShitlists() { return _consecutiveShitlists++; }
-    public void unshitlist() { _consecutiveShitlists = 0; }
+    public int incrementBanlists() { return _consecutiveBanlists++; }
+    public void unbanlist() { _consecutiveBanlists = 0; }
     
     /**
      * Is this peer active at the moment (sending/receiving messages within the last
diff --git a/router/java/src/net/i2p/router/peermanager/ProfileOrganizer.java b/router/java/src/net/i2p/router/peermanager/ProfileOrganizer.java
index 9b1a3569faa34557247304d8a8bf3575365afc97..bd834c7b926b5d3ed2f19ad5d0a5b2d6eaa5b0d8 100644
--- a/router/java/src/net/i2p/router/peermanager/ProfileOrganizer.java
+++ b/router/java/src/net/i2p/router/peermanager/ProfileOrganizer.java
@@ -1342,10 +1342,10 @@ public class ProfileOrganizer {
         // the CLI shouldn't depend upon the netDb
         if (netDb == null) return true;
         if (_context.router() == null) return true;
-        if ( (_context.shitlist() != null) && (_context.shitlist().isShitlisted(peer)) ) {
+        if ( (_context.banlist() != null) && (_context.banlist().isBanlisted(peer)) ) {
             // if (_log.shouldLog(Log.DEBUG))
-            //     _log.debug("Peer " + peer.toBase64() + " is shitlisted, dont select it");
-            return false; // never select a shitlisted peer
+            //     _log.debug("Peer " + peer.toBase64() + " is banlisted, dont select it");
+            return false; // never select a banlisted peer
         }
             
         RouterInfo info = _context.netDb().lookupRouterInfoLocally(peer);
@@ -1395,7 +1395,7 @@ public class ProfileOrganizer {
             
             _notFailingPeers.put(profile.getPeer(), profile);
             _notFailingPeersList.add(profile.getPeer());
-            // if not selectable for a tunnel (shitlisted for example),
+            // if not selectable for a tunnel (banlisted for example),
             // don't allow them in the high-cap pool, what would the point of that be?
             if (_thresholdCapacityValue <= profile.getCapacityValue() &&
                 isSelectable(profile.getPeer())) {
diff --git a/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java b/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java
index 4457bb80a90808079de206122f8ec9489270a992..68a237f52d2ef6a654f719c4316aafb315413a65 100644
--- a/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java
+++ b/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java
@@ -419,7 +419,7 @@ public class CommSystemFacadeImpl extends CommSystemFacade {
      *
      * This is only used in the router console for now, but we put it here because
      * 1) it's a lot easier, and 2) we could use it in the future for peer selection,
-     * tunnel selection, shitlisting, etc.
+     * tunnel selection, banlisting, etc.
      */
 
     /* We hope the routerinfos are read in and things have settled down by now, but it's not required to be so */
diff --git a/router/java/src/net/i2p/router/transport/GetBidsJob.java b/router/java/src/net/i2p/router/transport/GetBidsJob.java
index e014cc6411842a66f29305ee85f72004f74168ce..4215d8f0d174bbf79f98debad2c5b2c9486bd933 100644
--- a/router/java/src/net/i2p/router/transport/GetBidsJob.java
+++ b/router/java/src/net/i2p/router/transport/GetBidsJob.java
@@ -43,11 +43,11 @@ class GetBidsJob extends JobImpl {
         Hash to = msg.getTarget().getIdentity().getHash();
         msg.timestamp("bid");
         
-        if (context.shitlist().isShitlisted(to)) {
+        if (context.banlist().isBanlisted(to)) {
             if (log.shouldLog(Log.WARN))
-                log.warn("Attempt to send a message to a shitlisted peer - " + to);
+                log.warn("Attempt to send a message to a banlisted peer - " + to);
             //context.messageRegistry().peerFailed(to);
-            context.statManager().addRateData("transport.bidFailShitlisted", msg.getLifetime(), 0);
+            context.statManager().addRateData("transport.bidFailBanlisted", msg.getLifetime(), 0);
             fail(context, msg);
             return;
         }
@@ -67,7 +67,7 @@ class GetBidsJob extends JobImpl {
             if (failedCount == 0) {
                 context.statManager().addRateData("transport.bidFailNoTransports", msg.getLifetime(), 0);
                 // This used to be "no common transports" but it is almost always no transports at all
-                context.shitlist().shitlistRouter(to, _x("No transports (hidden or starting up?)"));
+                context.banlist().banlistRouter(to, _x("No transports (hidden or starting up?)"));
             } else if (failedCount >= facade.getTransportCount()) {
                 context.statManager().addRateData("transport.bidFailAllTransports", msg.getLifetime(), 0);
                 // fail after all transports were unsuccessful
diff --git a/router/java/src/net/i2p/router/transport/TransportImpl.java b/router/java/src/net/i2p/router/transport/TransportImpl.java
index 05bfba0bfdf6b9e114970d79d9723df463cc84be..0b155d559c2acd044ae4e4dbace3bf7cc07960d2 100644
--- a/router/java/src/net/i2p/router/transport/TransportImpl.java
+++ b/router/java/src/net/i2p/router/transport/TransportImpl.java
@@ -550,8 +550,8 @@ public abstract class TransportImpl implements Transport {
     }
     /** called when we establish a peer connection (outbound or inbound) */
     public void markReachable(Hash peer, boolean isInbound) {
-        // if *some* transport can reach them, then we shouldn't shitlist 'em
-        _context.shitlist().unshitlistRouter(peer);
+        // if *some* transport can reach them, then we shouldn't banlist 'em
+        _context.banlist().unbanlistRouter(peer);
         synchronized (_unreachableEntries) {
             _unreachableEntries.remove(peer);
         }
diff --git a/router/java/src/net/i2p/router/transport/TransportManager.java b/router/java/src/net/i2p/router/transport/TransportManager.java
index fe44032c0f29e3b7e0253a5ea047e0eb54b81df8..0915359110cbe701131c81e30bb448da573201aa 100644
--- a/router/java/src/net/i2p/router/transport/TransportManager.java
+++ b/router/java/src/net/i2p/router/transport/TransportManager.java
@@ -57,9 +57,9 @@ public class TransportManager implements TransportEventListener {
     public TransportManager(RouterContext context) {
         _context = context;
         _log = _context.logManager().getLog(TransportManager.class);
-        _context.statManager().createRateStat("transport.shitlistOnUnreachable", "Add a peer to the shitlist since none of the transports can reach them", "Transport", new long[] { 60*1000, 10*60*1000, 60*60*1000 });
-        _context.statManager().createRateStat("transport.noBidsYetNotAllUnreachable", "Add a peer to the shitlist since none of the transports can reach them", "Transport", new long[] { 60*1000, 10*60*1000, 60*60*1000 });
-        _context.statManager().createRateStat("transport.bidFailShitlisted", "Could not attempt to bid on message, as they were shitlisted", "Transport", new long[] { 60*1000, 10*60*1000, 60*60*1000 });
+        _context.statManager().createRateStat("transport.banlistOnUnreachable", "Add a peer to the banlist since none of the transports can reach them", "Transport", new long[] { 60*1000, 10*60*1000, 60*60*1000 });
+        _context.statManager().createRateStat("transport.noBidsYetNotAllUnreachable", "Add a peer to the banlist since none of the transports can reach them", "Transport", new long[] { 60*1000, 10*60*1000, 60*60*1000 });
+        _context.statManager().createRateStat("transport.bidFailBanlisted", "Could not attempt to bid on message, as they were banlisted", "Transport", new long[] { 60*1000, 10*60*1000, 60*60*1000 });
         _context.statManager().createRateStat("transport.bidFailSelf", "Could not attempt to bid on message, as it targeted ourselves", "Transport", new long[] { 60*1000, 10*60*1000, 60*60*1000 });
         _context.statManager().createRateStat("transport.bidFailNoTransports", "Could not attempt to bid on message, as none of the transports could attempt it", "Transport", new long[] { 60*1000, 10*60*1000, 60*60*1000 });
         _context.statManager().createRateStat("transport.bidFailAllTransports", "Could not attempt to bid on message, as all of the transports had failed", "Transport", new long[] { 60*1000, 10*60*1000, 60*60*1000 });
@@ -418,8 +418,8 @@ public class TransportManager implements TransportEventListener {
         for (Transport t : _transports.values()) {
             if (t.isUnreachable(peer)) {
                 unreachableTransports++;
-                // this keeps GetBids() from shitlisting for "no common transports"
-                // right after we shitlisted for "unreachable on any transport" below...
+                // this keeps GetBids() from banlisting for "no common transports"
+                // right after we banlisted for "unreachable on any transport" below...
                 msg.transportFailed(t.getStyle());
                 continue;
             }
@@ -434,7 +434,7 @@ public class TransportManager implements TransportEventListener {
             TransportBid bid = t.bid(msg.getTarget(), msg.getMessageSize());
             if (bid != null) {
                 if (bid.getLatencyMs() == TransportBid.TRANSIENT_FAIL)
-                    // this keeps GetBids() from shitlisting for "no common transports"
+                    // this keeps GetBids() from banlisting for "no common transports"
                     msg.transportFailed(t.getStyle());
                 else if ( (rv == null) || (rv.getLatencyMs() > bid.getLatencyMs()) )
                     rv = bid;    
@@ -449,10 +449,10 @@ public class TransportManager implements TransportEventListener {
             }
         }
         if (unreachableTransports >= _transports.size()) {
-            // Don't shitlist if we aren't talking to anybody, as we may have a network connection issue
+            // Don't banlist if we aren't talking to anybody, as we may have a network connection issue
             if (unreachableTransports >= _transports.size() && countActivePeers() > 0) {
-                _context.statManager().addRateData("transport.shitlistOnUnreachable", msg.getLifetime(), msg.getLifetime());
-                _context.shitlist().shitlistRouter(peer, _x("Unreachable on any transport"));
+                _context.statManager().addRateData("transport.banlistOnUnreachable", msg.getLifetime(), msg.getLifetime());
+                _context.banlist().banlistRouter(peer, _x("Unreachable on any transport"));
             }
         } else if (rv == null) {
             _context.statManager().addRateData("transport.noBidsYetNotAllUnreachable", unreachableTransports, msg.getLifetime());
diff --git a/router/java/src/net/i2p/router/transport/ntcp/EstablishState.java b/router/java/src/net/i2p/router/transport/ntcp/EstablishState.java
index a39395d5359dc4381451e13f92005c723cfd9ab7..04da0506b4ff9f37f8c8f38e0cb4cb67c47a75e6 100644
--- a/router/java/src/net/i2p/router/transport/ntcp/EstablishState.java
+++ b/router/java/src/net/i2p/router/transport/ntcp/EstablishState.java
@@ -395,8 +395,8 @@ class EstablishState {
                 } else if (diff >= Router.CLOCK_FUDGE_FACTOR) {
                     _context.statManager().addRateData("ntcp.invalidOutboundSkew", diff, 0);
                     _transport.markReachable(_con.getRemotePeer().calculateHash(), false);
-                    // Only shitlist if we know what time it is
-                    _context.shitlist().shitlistRouter(DataHelper.formatDuration(diff),
+                    // Only banlist if we know what time it is
+                    _context.banlist().banlistRouter(DataHelper.formatDuration(diff),
                                                        _con.getRemotePeer().calculateHash(),
                                                        _x("Excessive clock skew: {0}"));
                     _transport.setLastBadSkew(_tsA- _tsB);
@@ -586,14 +586,14 @@ class EstablishState {
 				// get inet-addr
 				InetAddress addr = this._con.getChannel().socket().getInetAddress();
                 byte[] ip = (addr == null) ? null : addr.getAddress();
-                if (_context.shitlist().isShitlistedForever(alice.calculateHash())) {
+                if (_context.banlist().isBanlistedForever(alice.calculateHash())) {
                     if (_log.shouldLog(Log.WARN))
-                        _log.warn("Dropping inbound connection from permanently shitlisted peer: " + alice.calculateHash().toBase64());
+                        _log.warn("Dropping inbound connection from permanently banlisted peer: " + alice.calculateHash().toBase64());
                     // So next time we will not accept the con from this IP,
                     // rather than doing the whole handshake
 					if(ip != null)
 						_context.blocklist().add(ip);
-                    fail("Peer is shitlisted forever: " + alice.calculateHash().toBase64());
+                    fail("Peer is banlisted forever: " + alice.calculateHash().toBase64());
                     return;
                 }
 				if(ip != null)
@@ -612,8 +612,8 @@ class EstablishState {
                 } else if (diff >= Router.CLOCK_FUDGE_FACTOR) {
                     _context.statManager().addRateData("ntcp.invalidInboundSkew", diff, 0);
                     _transport.markReachable(alice.calculateHash(), true);
-                    // Only shitlist if we know what time it is
-                    _context.shitlist().shitlistRouter(DataHelper.formatDuration(diff),
+                    // Only banlist if we know what time it is
+                    _context.banlist().banlistRouter(DataHelper.formatDuration(diff),
                                                        alice.calculateHash(),
                                                        _x("Excessive clock skew: {0}"));
                     _transport.setLastBadSkew(tsA- _tsB);
diff --git a/router/java/src/net/i2p/router/transport/ntcp/EventPumper.java b/router/java/src/net/i2p/router/transport/ntcp/EventPumper.java
index 522c1ae8725794daf48efb9960a5f3855fd8aeef..9149323c8cbcdc87858138e834268b25a6e3fa6e 100644
--- a/router/java/src/net/i2p/router/transport/ntcp/EventPumper.java
+++ b/router/java/src/net/i2p/router/transport/ntcp/EventPumper.java
@@ -535,7 +535,7 @@ class EventPumper implements Runnable {
             if (_log.shouldLog(Log.INFO))
                 _log.info("Failed outbound " + con, ioe);
             con.close();
-            //_context.shitlist().shitlistRouter(con.getRemotePeer().calculateHash(), "Error connecting", NTCPTransport.STYLE);
+            //_context.banlist().banlistRouter(con.getRemotePeer().calculateHash(), "Error connecting", NTCPTransport.STYLE);
             _transport.markUnreachable(con.getRemotePeer().calculateHash());
             _context.statManager().addRateData("ntcp.connectFailedTimeoutIOE", 1);
         } catch (NoConnectionPendingException ncpe) {
@@ -790,10 +790,10 @@ class EventPumper implements Runnable {
                     _context.statManager().addRateData("ntcp.connectFailedIOE", 1);
                     _transport.markUnreachable(con.getRemotePeer().calculateHash());
                     //if (ntcpOnly(con)) {
-                    //    _context.shitlist().shitlistRouter(con.getRemotePeer().calculateHash(), "unable to connect: " + ioe.getMessage());
+                    //    _context.banlist().banlistRouter(con.getRemotePeer().calculateHash(), "unable to connect: " + ioe.getMessage());
                     //    con.close(false);
                     //} else {
-                    //    _context.shitlist().shitlistRouter(con.getRemotePeer().calculateHash(), "unable to connect: " + ioe.getMessage(), NTCPTransport.STYLE);
+                    //    _context.banlist().banlistRouter(con.getRemotePeer().calculateHash(), "unable to connect: " + ioe.getMessage(), NTCPTransport.STYLE);
                         con.close(true);
                     //}
                 } catch (UnresolvedAddressException uae) {                    
@@ -801,10 +801,10 @@ class EventPumper implements Runnable {
                     _context.statManager().addRateData("ntcp.connectFailedUnresolved", 1);
                     _transport.markUnreachable(con.getRemotePeer().calculateHash());
                     //if (ntcpOnly(con)) {
-                    //    _context.shitlist().shitlistRouter(con.getRemotePeer().calculateHash(), "unable to connect/resolve: " + uae.getMessage());
+                    //    _context.banlist().banlistRouter(con.getRemotePeer().calculateHash(), "unable to connect/resolve: " + uae.getMessage());
                     //    con.close(false);
                     //} else {
-                    //    _context.shitlist().shitlistRouter(con.getRemotePeer().calculateHash(), "unable to connect/resolve: " + uae.getMessage(), NTCPTransport.STYLE);
+                    //    _context.banlist().banlistRouter(con.getRemotePeer().calculateHash(), "unable to connect/resolve: " + uae.getMessage(), NTCPTransport.STYLE);
                         con.close(true);
                     //}
                 } catch (CancelledKeyException cke) {
@@ -823,7 +823,7 @@ class EventPumper implements Runnable {
     }
     
     /**
-     * If the other peer only supports ntcp, we should shitlist them when we can't reach 'em,
+     * If the other peer only supports ntcp, we should banlist them when we can't reach 'em,
      * but if they support other transports (eg ssu) we should allow those transports to be
      * tried as well.
      */
diff --git a/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java b/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java
index 80b7ae6d9ad938284ace5a78e69f30a874f753f4..b89d72fb89635d1d1bd66f21728ae5e2d510a8f4 100644
--- a/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java
+++ b/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java
@@ -503,7 +503,7 @@ class NTCPConnection {
         _establishedOn = System.currentTimeMillis();
         _establishState = null;
         _transport.markReachable(getRemotePeer().calculateHash(), false);
-        //_context.shitlist().unshitlistRouter(getRemotePeer().calculateHash(), NTCPTransport.STYLE);
+        //_context.banlist().unbanlistRouter(getRemotePeer().calculateHash(), NTCPTransport.STYLE);
         boolean msgs = !_outbound.isEmpty();
         _nextMetaTime = System.currentTimeMillis() + (META_FREQUENCY / 2) + _context.random().nextInt(META_FREQUENCY);
         _nextInfoTime = System.currentTimeMillis() + (INFO_FREQUENCY / 2) + _context.random().nextInt(INFO_FREQUENCY);
diff --git a/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java b/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java
index c063326d43545434dc8de5c79216ddc12c09754e..ab57ccd25b22c197885b48b4402f75600e2b1905 100644
--- a/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java
+++ b/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java
@@ -94,7 +94,7 @@ public class NTCPTransport extends TransportImpl {
         _context.statManager().createRateStat("ntcp.failsafeCloses", "How many times do we need to proactively close an idle connection to a peer at any given failsafe pass?", "ntcp", RATES);
         _context.statManager().createRateStat("ntcp.failsafeInvalid", "How many times do we close a connection to a peer to work around a JVM bug?", "ntcp", RATES);
         _context.statManager().createRateStat("ntcp.accept", "", "ntcp", RATES);
-        _context.statManager().createRateStat("ntcp.attemptShitlistedPeer", "", "ntcp", RATES);
+        _context.statManager().createRateStat("ntcp.attemptBanlistedPeer", "", "ntcp", RATES);
         _context.statManager().createRateStat("ntcp.attemptUnreachablePeer", "", "ntcp", RATES);
         _context.statManager().createRateStat("ntcp.closeOnBacklog", "", "ntcp", RATES);
         _context.statManager().createRateStat("ntcp.connectFailedIOE", "", "ntcp", RATES);
@@ -167,7 +167,7 @@ public class NTCPTransport extends TransportImpl {
     void inboundEstablished(NTCPConnection con) {
         _context.statManager().addRateData("ntcp.inboundEstablished", 1);
         markReachable(con.getRemotePeer().calculateHash(), true);
-        //_context.shitlist().unshitlistRouter(con.getRemotePeer().calculateHash());
+        //_context.banlist().unbanlistRouter(con.getRemotePeer().calculateHash());
         NTCPConnection old;
         synchronized (_conLock) {
             old = _conByIdent.put(con.getRemotePeer().calculateHash(), con);
@@ -281,10 +281,10 @@ public class NTCPTransport extends TransportImpl {
             return null;
         }
         Hash peer = toAddress.getIdentity().calculateHash();
-        if (_context.shitlist().isShitlisted(peer, STYLE)) {
-            // we aren't shitlisted in general (since we are trying to get a bid), but we have
-            // recently shitlisted the peer on the NTCP transport, so don't try it
-            _context.statManager().addRateData("ntcp.attemptShitlistedPeer", 1);
+        if (_context.banlist().isBanlisted(peer, STYLE)) {
+            // we aren't banlisted in general (since we are trying to get a bid), but we have
+            // recently banlisted the peer on the NTCP transport, so don't try it
+            _context.statManager().addRateData("ntcp.attemptBanlistedPeer", 1);
             return null;
         } else if (isUnreachable(peer)) {
             _context.statManager().addRateData("ntcp.attemptUnreachablePeer", 1);
@@ -302,7 +302,7 @@ public class NTCPTransport extends TransportImpl {
         if (addr == null) {
             markUnreachable(peer);
             //_context.statManager().addRateData("ntcp.bidRejectedNoNTCPAddress", 1);
-            //_context.shitlist().shitlistRouter(toAddress.getIdentity().calculateHash(), "No NTCP address", STYLE);
+            //_context.banlist().banlistRouter(toAddress.getIdentity().calculateHash(), "No NTCP address", STYLE);
             if (_log.shouldLog(Log.DEBUG))
                 _log.debug("no bid when trying to send to " + peer + " as they don't have an ntcp address");
             return null;
@@ -311,7 +311,7 @@ public class NTCPTransport extends TransportImpl {
         if ( (addr.getPort() < MIN_PEER_PORT) || (ip == null) ) {
             _context.statManager().addRateData("ntcp.connectFailedInvalidPort", 1);
             markUnreachable(peer);
-            //_context.shitlist().shitlistRouter(toAddress.getIdentity().calculateHash(), "Invalid NTCP address", STYLE);
+            //_context.banlist().banlistRouter(toAddress.getIdentity().calculateHash(), "Invalid NTCP address", STYLE);
             if (_log.shouldLog(Log.DEBUG))
                 _log.debug("no bid when trying to send to " + peer + " as they don't have a valid ntcp address");
             return null;
diff --git a/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java b/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java
index 6bcba2aa6ce85f5252e59af66f8661106322202f..860b758942d2f88f824f05d11aabe6d3a10246cc 100644
--- a/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java
+++ b/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java
@@ -233,7 +233,7 @@ class EstablishmentManager {
         RouterIdentity toIdentity = toRouterInfo.getIdentity();
         Hash toHash = toIdentity.calculateHash();
         if (toRouterInfo.getNetworkId() != Router.NETWORK_ID) {
-            _context.shitlist().shitlistRouter(toHash);
+            _context.banlist().banlistRouter(toHash);
             _transport.markUnreachable(toHash);
             _transport.failed(msg, "Remote peer is on the wrong network, cannot establish");
             return;
@@ -252,7 +252,7 @@ class EstablishmentManager {
                 Arrays.equals(maybeTo.getIP(), _transport.getExternalIP())) {
                 _transport.failed(msg, "Remote peer's IP isn't valid");
                 _transport.markUnreachable(toHash);
-                //_context.shitlist().shitlistRouter(msg.getTarget().getIdentity().calculateHash(), "Invalid SSU address", UDPTransport.STYLE);
+                //_context.banlist().banlistRouter(msg.getTarget().getIdentity().calculateHash(), "Invalid SSU address", UDPTransport.STYLE);
                 _context.statManager().addRateData("udp.establishBadIP", 1);
                 return;
             }
@@ -707,15 +707,15 @@ class EstablishmentManager {
 
     /**
      * dont send our info immediately, just send a small data packet, and 5-10s later, 
-     * if the peer isnt shitlisted, *then* send them our info.  this will help kick off
+     * if the peer isnt banlisted, *then* send them our info.  this will help kick off
      * the oldnet
      * The "oldnet" was < 0.6.1.10, it is long gone.
      * The delay really slows down the network.
-     * The peer is unshitlisted and marked reachable by addRemotePeerState() which calls markReachable()
+     * The peer is unbanlisted and marked reachable by addRemotePeerState() which calls markReachable()
      * so the check below is fairly pointless.
      * If for some strange reason an oldnet router (NETWORK_ID == 1) does show up,
      *  it's handled in UDPTransport.messageReceived()
-     * (where it will get dropped, marked unreachable and shitlisted at that time).
+     * (where it will get dropped, marked unreachable and banlisted at that time).
      */
     private void sendInboundComplete(PeerState peer) {
         // SimpleTimer.getInstance().addEvent(new PublishToNewInbound(peer), 10*1000);
@@ -733,15 +733,15 @@ class EstablishmentManager {
         //_context.simpleScheduler().addEvent(new PublishToNewInbound(peer), 0);
 
             Hash hash = peer.getRemotePeer();
-            if ((hash != null) && (!_context.shitlist().isShitlisted(hash)) && (!_transport.isUnreachable(hash))) {
+            if ((hash != null) && (!_context.banlist().isBanlisted(hash)) && (!_transport.isUnreachable(hash))) {
                 // ok, we are fine with them, send them our latest info
                 //if (_log.shouldLog(Log.INFO))
-                //    _log.info("Publishing to the peer after confirm plus delay (without shitlist): " + peer);
+                //    _log.info("Publishing to the peer after confirm plus delay (without banlist): " + peer);
                 sendOurInfo(peer, true);
             } else {
                 // nuh uh.
                 if (_log.shouldLog(Log.WARN))
-                    _log.warn("NOT publishing to the peer after confirm plus delay (WITH shitlist): " + (hash != null ? hash.toString() : "unknown"));
+                    _log.warn("NOT publishing to the peer after confirm plus delay (WITH banlist): " + (hash != null ? hash.toString() : "unknown"));
             }
     }
     
@@ -1103,9 +1103,9 @@ class EstablishmentManager {
                   case IB_STATE_CONFIRMED_COMPLETELY:
                     RouterIdentity remote = inboundState.getConfirmedIdentity();
                     if (remote != null) {
-                        if (_context.shitlist().isShitlistedForever(remote.calculateHash())) {
+                        if (_context.banlist().isBanlistedForever(remote.calculateHash())) {
                             if (_log.shouldLog(Log.WARN))
-                                _log.warn("Dropping inbound connection from permanently shitlisted peer: " + remote.calculateHash());
+                                _log.warn("Dropping inbound connection from permanently banlisted peer: " + remote.calculateHash());
                             // So next time we will not accept the con, rather than doing the whole handshake
                             _context.blocklist().add(inboundState.getSentIP());
                             inboundState.fail();
@@ -1299,7 +1299,7 @@ class EstablishmentManager {
             }
             String err = "Took too long to establish OB connection, state = " + outboundState.getState();
             Hash peer = outboundState.getRemoteIdentity().calculateHash();
-            //_context.shitlist().shitlistRouter(peer, err, UDPTransport.STYLE);
+            //_context.banlist().banlistRouter(peer, err, UDPTransport.STYLE);
             _transport.markUnreachable(peer);
             _transport.dropPeer(peer, false, err);
             //_context.profileManager().commErrorOccurred(peer);
diff --git a/router/java/src/net/i2p/router/transport/udp/IntroductionManager.java b/router/java/src/net/i2p/router/transport/udp/IntroductionManager.java
index b49cb0d2612799d6a42d95bcd149c3c42161de55..5ebb64078c3b39d5b84d42a5475c9c7e129546de 100644
--- a/router/java/src/net/i2p/router/transport/udp/IntroductionManager.java
+++ b/router/java/src/net/i2p/router/transport/udp/IntroductionManager.java
@@ -143,7 +143,7 @@ class IntroductionManager {
                 continue;
             }
             if ( /* _context.profileOrganizer().isFailing(cur.getRemotePeer()) || */
-                _context.shitlist().isShitlisted(cur.getRemotePeer()) ||
+                _context.banlist().isBanlisted(cur.getRemotePeer()) ||
                 _transport.wasUnreachable(cur.getRemotePeer())) {
                 if (_log.shouldLog(Log.INFO))
                     _log.info("Peer is failing, shistlisted or was unreachable: " + cur);
@@ -255,7 +255,7 @@ class IntroductionManager {
         try {
             to = InetAddress.getByAddress(ip);
         } catch (UnknownHostException uhe) {
-            // shitlist Bob?
+            // banlist Bob?
             if (_log.shouldLog(Log.WARN))
                 _log.warn("IP for alice to hole punch to is invalid", uhe);
             _context.statManager().addRateData("udp.relayBadIP", 1);
diff --git a/router/java/src/net/i2p/router/transport/udp/PacketBuilder.java b/router/java/src/net/i2p/router/transport/udp/PacketBuilder.java
index d6bb57806345e1a0e770aaf0a667e777e2a1599b..e6af198a87bb1c422fb3126ce3f66dc5cf55f029 100644
--- a/router/java/src/net/i2p/router/transport/udp/PacketBuilder.java
+++ b/router/java/src/net/i2p/router/transport/udp/PacketBuilder.java
@@ -1071,7 +1071,7 @@ class PacketBuilder {
                 if (_log.shouldLog(_log.WARN))
                     _log.warn("Cannot build a relay request to " + state.getRemoteIdentity().calculateHash()
                                + ", as their UDP address is invalid: addr=" + addr + " index=" + i);
-                // TODO implement some sort of introducer shitlist
+                // TODO implement some sort of introducer banlist
                 continue;
             }
             rv.add(buildRelayRequest(iaddr, iport, ikey, tag, ourIntroKey, state.getIntroNonce(), true));
diff --git a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java
index bdeb1af710acd11357110dd67bc19f918a9a2a75..bad73980f08ab3a86fc8e05f04a82fb1fe06cf5b 100644
--- a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java
+++ b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java
@@ -563,7 +563,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
                 _log.error("The router " + from + " told us we have an invalid IP - " 
                            + Addresses.toString(ourIP, ourPort) + ".  Lets throw tomatoes at them");
             markUnreachable(from);
-            //_context.shitlist().shitlistRouter(from, "They said we had an invalid IP", STYLE);
+            //_context.banlist().banlistRouter(from, "They said we had an invalid IP", STYLE);
             return;
         } else if (inboundRecent && _externalListenPort > 0 && _externalListenHost != null) {
             // use OS clock since its an ordering thing, not a time thing
@@ -913,7 +913,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
         
         _activeThrottle.unchoke(peer.getRemotePeer());
         markReachable(peer.getRemotePeer(), peer.isInbound());
-        //_context.shitlist().unshitlistRouter(peer.getRemotePeer(), STYLE);
+        //_context.banlist().unbanlistRouter(peer.getRemotePeer(), STYLE);
 
         //if (SHOULD_FLOOD_PEERS)
         //    _flooder.addPeer(peer);
@@ -956,13 +956,13 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
 
                 /*
                 if (remoteIdentHash != null) {
-                    _context.shitlist().shitlistRouter(remoteIdentHash, "Sent us a peer from the wrong network");
+                    _context.banlist().banlistRouter(remoteIdentHash, "Sent us a peer from the wrong network");
                     dropPeer(remoteIdentHash);
                     if (_log.shouldLog(Log.ERROR))
                         _log.error("Dropping the peer " + remoteIdentHash
                                    + " because they are in the wrong net");
                 } else if (remoteIdent != null) {
-                    _context.shitlist().shitlistRouter(remoteIdent.calculateHash(), "Sent us a peer from the wrong network");
+                    _context.banlist().banlistRouter(remoteIdent.calculateHash(), "Sent us a peer from the wrong network");
                     dropPeer(remoteIdent.calculateHash());
                     if (_log.shouldLog(Log.ERROR))
                         _log.error("Dropping the peer " + remoteIdent.calculateHash()
@@ -978,8 +978,8 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
                     _context.simpleScheduler().addEvent(new RemoveDropList(remote), DROPLIST_PERIOD);
                 }
                 markUnreachable(peerHash);
-                _context.shitlist().shitlistRouter(peerHash, "Part of the wrong network, version = " + ((RouterInfo) entry).getOption("router.version"));
-                //_context.shitlist().shitlistRouter(peerHash, "Part of the wrong network", STYLE);
+                _context.banlist().banlistRouter(peerHash, "Part of the wrong network, version = " + ((RouterInfo) entry).getOption("router.version"));
+                //_context.banlist().banlistRouter(peerHash, "Part of the wrong network", STYLE);
                 dropPeer(peerHash, false, "wrong network");
                 if (_log.shouldLog(Log.WARN))
                     _log.warn("Dropping the peer " + peerHash + " because they are in the wrong net: " + entry);
@@ -1013,13 +1013,13 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
     
     boolean isInDropList(RemoteHostId peer) { return _dropList.contains(peer); }
     
-    void dropPeer(Hash peer, boolean shouldShitlist, String why) {
+    void dropPeer(Hash peer, boolean shouldBanlist, String why) {
         PeerState state = getPeerState(peer);
         if (state != null)
-            dropPeer(state, shouldShitlist, why);
+            dropPeer(state, shouldBanlist, why);
     }
 
-    void dropPeer(PeerState peer, boolean shouldShitlist, String why) {
+    void dropPeer(PeerState peer, boolean shouldBanlist, String why) {
         if (_log.shouldLog(Log.INFO)) {
             long now = _context.clock().now();
             StringBuilder buf = new StringBuilder(4096);
@@ -1028,7 +1028,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
             long timeSinceAck  = now - peer.getLastACKSend();
             long timeSinceSendOK = now - peer.getLastSendFullyTime();
             int consec = peer.getConsecutiveFailedSends();
-            buf.append("Dropping remote peer: ").append(peer.toString()).append(" shitlist? ").append(shouldShitlist);
+            buf.append("Dropping remote peer: ").append(peer.toString()).append(" banlist? ").append(shouldBanlist);
             buf.append(" lifetime: ").append(now - peer.getKeyEstablishedTime());
             buf.append(" time since send/fully/recv/ack: ").append(timeSinceSend).append(" / ");
             buf.append(timeSinceSendOK).append(" / ");
@@ -1067,13 +1067,13 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
             _log.info(buf.toString(), new Exception("Dropped by"));
         }
         synchronized(_addDropLock) {
-            locked_dropPeer(peer, shouldShitlist, why);
+            locked_dropPeer(peer, shouldBanlist, why);
         }
         if (needsRebuild())
             rebuildExternalAddress();
     }
 
-    private void locked_dropPeer(PeerState peer, boolean shouldShitlist, String why) {
+    private void locked_dropPeer(PeerState peer, boolean shouldBanlist, String why) {
         peer.dropOutbound();
         peer.expireInboundMessages();
         _introManager.remove(peer);
@@ -1083,9 +1083,9 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
         if (peer.getRemotePeer() != null) {
             dropPeerCapacities(peer);
             
-            if (shouldShitlist) {
+            if (shouldBanlist) {
                 markUnreachable(peer.getRemotePeer());
-                //_context.shitlist().shitlistRouter(peer.getRemotePeer(), "dropped after too many retries", STYLE);
+                //_context.banlist().banlistRouter(peer.getRemotePeer(), "dropped after too many retries", STYLE);
             }
             long now = _context.clock().now();
             _context.statManager().addRateData("udp.droppedPeer", now - peer.getLastReceiveTime(), now - peer.getKeyEstablishedTime());
@@ -1110,8 +1110,8 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
         _expireEvent.remove(peer);
         
         // deal with races to make sure we drop the peers fully
-        if ( (altByIdent != null) && (peer != altByIdent) ) locked_dropPeer(altByIdent, shouldShitlist, "recurse");
-        if ( (altByHost != null) && (peer != altByHost) ) locked_dropPeer(altByHost, shouldShitlist, "recurse");
+        if ( (altByIdent != null) && (peer != altByIdent) ) locked_dropPeer(altByIdent, shouldBanlist, "recurse");
+        if ( (altByHost != null) && (peer != altByHost) ) locked_dropPeer(altByHost, shouldBanlist, "recurse");
     }
     
     private boolean needsRebuild() {
@@ -2253,7 +2253,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
                 buf.append("</i>");
                 appended = true;
             }
-            if (_context.shitlist().isShitlisted(peer.getRemotePeer(), STYLE)) {
+            if (_context.banlist().isBanlisted(peer.getRemotePeer(), STYLE)) {
                 if (!appended) buf.append("<br>");
                 buf.append(" <i>").append(_("Banned")).append("</i>");
                 appended = true;
diff --git a/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java b/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java
index 1b6c424eca69dfa9b61a9c8fa7c6e5b736013c99..9698cb65eefe7620849cf9ec0f0c386502334821 100644
--- a/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java
+++ b/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java
@@ -659,7 +659,7 @@ public class TunnelPoolManager implements TunnelManagerFacade {
             int len = tun.getLength();
             if (len > 1 && tun.getPeer(1).equals(peer)) {
                 if (_log.shouldLog(Log.WARN))
-                    _log.warn("Removing OB tunnel, first hop shitlisted: " + tun);
+                    _log.warn("Removing OB tunnel, first hop banlisted: " + tun);
                 pool.tunnelFailed(tun, peer);
             }
         }
@@ -675,7 +675,7 @@ public class TunnelPoolManager implements TunnelManagerFacade {
             int len = tun.getLength();
             if (len > 1 && tun.getPeer(len - 2).equals(peer)) {
                 if (_log.shouldLog(Log.WARN))
-                    _log.warn("Removing IB tunnel, prev. hop shitlisted: " + tun);
+                    _log.warn("Removing IB tunnel, prev. hop banlisted: " + tun);
                 pool.tunnelFailed(tun, peer);
             }
         }
diff --git a/router/java/test/junit/net/i2p/router/SSUDemo.java b/router/java/test/junit/net/i2p/router/SSUDemo.java
index b94367c5674e30a393f00ea3c94d669e39891af3..603f54c0d163ae881968aa62bee5a712f1a5b3af 100644
--- a/router/java/test/junit/net/i2p/router/SSUDemo.java
+++ b/router/java/test/junit/net/i2p/router/SSUDemo.java
@@ -57,7 +57,7 @@ public class SSUDemo {
         // we want SNTP synchronization for replay prevention
         envProps.setProperty("time.disabled", "false");
         // allow 127.0.0.1/10.0.0.1/etc (useful for testing).  If this is false,
-        // peers who say they're on an invalid IP are shitlisted
+        // peers who say they're on an invalid IP are banlisted
         envProps.setProperty("i2np.udp.allowLocal", "true");
         // explicit IP+port.  at least one router on the net has to have their IP+port
         // set, since there has to be someone to detect one's IP off.  most don't need
@@ -173,9 +173,9 @@ public class SSUDemo {
         out.setOnSendJob(new AfterACK());
         // queue up the message, establishing a new SSU session if necessary, using
         // their direct SSU address if they have one, or their indirect SSU addresses
-        // if they don't.  If we cannot contact them, we will 'shitlist' their address,
+        // if they don't.  If we cannot contact them, we will 'banlist' their address,
         // during which time we will not even attempt to send messages to them.  We also
-        // drop their netDb info when we shitlist them, in case their info is no longer
+        // drop their netDb info when we banlist them, in case their info is no longer
         // correct.  Since the netDb is disabled for all meaningful purposes, the SSUDemo
         // will be responsible for fetching such information.
         _us.outNetMessagePool().add(out);
@@ -278,4 +278,4 @@ public class SSUDemo {
         }
         public String getName() { return "Handle netDb store"; }
     }
-}
\ No newline at end of file
+}