diff --git a/core/java/src/net/i2p/data/i2cp/BandwidthLimitsMessage.java b/core/java/src/net/i2p/data/i2cp/BandwidthLimitsMessage.java
index bd8a2ff0e6be3c404073c900418d6a9d405f81bb..cd0d0f6d3a3c5388be234df3fc5e99ecc9bf932b 100644
--- a/core/java/src/net/i2p/data/i2cp/BandwidthLimitsMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/BandwidthLimitsMessage.java
@@ -78,16 +78,6 @@ public class BandwidthLimitsMessage extends I2CPMessageImpl {
         return MESSAGE_TYPE;
     }
 
-    /* FIXME missing hashCode() method FIXME */
-    @Override
-    public boolean equals(Object object) {
-        if ((object != null) && (object instanceof BandwidthLimitsMessage)) {
-            BandwidthLimitsMessage msg = (BandwidthLimitsMessage) object;
-            return DataHelper.eq(data, msg.getLimits());
-        }
-        return false;
-    }
-
     @Override
     public String toString() {
         StringBuilder buf = new StringBuilder();
diff --git a/core/java/src/net/i2p/data/i2cp/CreateLeaseSetMessage.java b/core/java/src/net/i2p/data/i2cp/CreateLeaseSetMessage.java
index 4425a8d005f9bc6295d34d5e3cc961b4fbcc7f70..cfed39f1802ce6aa5cc885adedefb268718302de 100644
--- a/core/java/src/net/i2p/data/i2cp/CreateLeaseSetMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/CreateLeaseSetMessage.java
@@ -107,20 +107,6 @@ public class CreateLeaseSetMessage extends I2CPMessageImpl {
         return MESSAGE_TYPE;
     }
 
-    /* FIXME missing hashCode() method FIXME */
-    @Override
-    public boolean equals(Object object) {
-        if ((object != null) && (object instanceof CreateLeaseSetMessage)) {
-            CreateLeaseSetMessage msg = (CreateLeaseSetMessage) object;
-            return DataHelper.eq(getSessionId(), msg.getSessionId())
-                   && DataHelper.eq(getSigningPrivateKey(), msg.getSigningPrivateKey())
-                   && DataHelper.eq(getPrivateKey(), msg.getPrivateKey())
-                   && DataHelper.eq(getLeaseSet(), msg.getLeaseSet());
-        }
-        
-        return false;
-    }
-
     @Override
     public String toString() {
         StringBuilder buf = new StringBuilder();
diff --git a/core/java/src/net/i2p/data/i2cp/CreateSessionMessage.java b/core/java/src/net/i2p/data/i2cp/CreateSessionMessage.java
index 8590a554c061fe22ce162d60082bb552b709e7ee..e2efacee86371a7d125e0530c420d30e04cd133f 100644
--- a/core/java/src/net/i2p/data/i2cp/CreateSessionMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/CreateSessionMessage.java
@@ -70,17 +70,6 @@ public class CreateSessionMessage extends I2CPMessageImpl {
         return MESSAGE_TYPE;
     }
 
-    /* FIXME missing hashCode() method FIXME */
-    @Override
-    public boolean equals(Object object) {
-        if ((object != null) && (object instanceof CreateSessionMessage)) {
-            CreateSessionMessage msg = (CreateSessionMessage) object;
-            return DataHelper.eq(_sessionConfig, msg.getSessionConfig());
-        }
-            
-        return false;
-    }
-
     @Override
     public String toString() {
         StringBuilder buf = new StringBuilder();
diff --git a/core/java/src/net/i2p/data/i2cp/DestLookupMessage.java b/core/java/src/net/i2p/data/i2cp/DestLookupMessage.java
index b635936cd64f842366f242f69a1730a12b559837..f6613bc6150e9787ad31241470417b9105360c80 100644
--- a/core/java/src/net/i2p/data/i2cp/DestLookupMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/DestLookupMessage.java
@@ -60,16 +60,6 @@ public class DestLookupMessage extends I2CPMessageImpl {
         return MESSAGE_TYPE;
     }
 
-    /* FIXME missing hashCode() method FIXME */
-    @Override
-    public boolean equals(Object object) {
-        if ((object != null) && (object instanceof DestLookupMessage)) {
-            DestLookupMessage msg = (DestLookupMessage) object;
-            return DataHelper.eq(getHash(), msg.getHash());
-        }
-        return false;
-    }
-
     @Override
     public String toString() {
         StringBuilder buf = new StringBuilder();
diff --git a/core/java/src/net/i2p/data/i2cp/DestReplyMessage.java b/core/java/src/net/i2p/data/i2cp/DestReplyMessage.java
index f4d44a3ae30103619d83147b5b3cb5f4d25f659a..ee0f1b0d2f01996582e6bb8cf5feea0fe56dbdb0 100644
--- a/core/java/src/net/i2p/data/i2cp/DestReplyMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/DestReplyMessage.java
@@ -92,17 +92,6 @@ public class DestReplyMessage extends I2CPMessageImpl {
         return MESSAGE_TYPE;
     }
 
-    /* FIXME missing hashCode() method FIXME */
-    @Override
-    public boolean equals(Object object) {
-        if ((object != null) && (object instanceof DestReplyMessage)) {
-            DestReplyMessage msg = (DestReplyMessage) object;
-            return DataHelper.eq(getDestination(), msg.getDestination()) &&
-                   DataHelper.eq(getHash(), msg.getHash());
-        }
-        return false;
-    }
-
     @Override
     public String toString() {
         StringBuilder buf = new StringBuilder();
diff --git a/core/java/src/net/i2p/data/i2cp/DestroySessionMessage.java b/core/java/src/net/i2p/data/i2cp/DestroySessionMessage.java
index edb07ae41674e0b8898ed7e8f73d81f415a00793..4a12eb2544769f4b3cb163891c370a8f639d8fe8 100644
--- a/core/java/src/net/i2p/data/i2cp/DestroySessionMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/DestroySessionMessage.java
@@ -65,23 +65,6 @@ public class DestroySessionMessage extends I2CPMessageImpl {
         return MESSAGE_TYPE;
     }
 
-    @Override
-    public boolean equals(Object object) {
-        if ((object != null) && (object instanceof DestroySessionMessage)) {
-            DestroySessionMessage msg = (DestroySessionMessage) object;
-            return DataHelper.eq(_sessionId, msg.getSessionId());
-        }
-            
-        return false;
-    }
-
-    @Override
-    public int hashCode() {
-        int hash = 7;
-        hash = 11 * hash + (this._sessionId != null ? this._sessionId.hashCode() : 0);
-        return hash;
-    }
-
     @Override
     public String toString() {
         StringBuilder buf = new StringBuilder();
diff --git a/core/java/src/net/i2p/data/i2cp/DisconnectMessage.java b/core/java/src/net/i2p/data/i2cp/DisconnectMessage.java
index 1931fead2f28963658aa777459a7f772f3b5e1fe..2139cf21da8121a51f3d2ed4edf57df6b498f471 100644
--- a/core/java/src/net/i2p/data/i2cp/DisconnectMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/DisconnectMessage.java
@@ -61,17 +61,6 @@ public class DisconnectMessage extends I2CPMessageImpl {
         return MESSAGE_TYPE;
     }
 
-    /* FIXME missing hashCode() method FIXME */
-    @Override
-    public boolean equals(Object object) {
-        if ((object != null) && (object instanceof DisconnectMessage)) {
-            DisconnectMessage msg = (DisconnectMessage) object;
-            return DataHelper.eq(getReason(), msg.getReason());
-        }
- 
-        return false;
-    }
-
     @Override
     public String toString() {
         StringBuilder buf = new StringBuilder();
diff --git a/core/java/src/net/i2p/data/i2cp/GetBandwidthLimitsMessage.java b/core/java/src/net/i2p/data/i2cp/GetBandwidthLimitsMessage.java
index 35f44b522223983ae39dde69c574e09361b3ba53..865f83f9c006d87461533f4cbae36839e2e02500 100644
--- a/core/java/src/net/i2p/data/i2cp/GetBandwidthLimitsMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/GetBandwidthLimitsMessage.java
@@ -35,16 +35,6 @@ public class GetBandwidthLimitsMessage extends I2CPMessageImpl {
         return MESSAGE_TYPE;
     }
 
-    /* FIXME missing hashCode() method FIXME */
-    @Override
-    public boolean equals(Object object) {
-        if ((object != null) && (object instanceof GetBandwidthLimitsMessage)) {
-            return true;
-        }
-        
-        return false;
-    }
-
     @Override
     public String toString() {
         StringBuilder buf = new StringBuilder();
diff --git a/core/java/src/net/i2p/data/i2cp/GetDateMessage.java b/core/java/src/net/i2p/data/i2cp/GetDateMessage.java
index b5b8367517a8664a810ca2aaa041e4c74f434c7e..f76aaaf2565aa61fcb225b61d3b9a77a7f27c8f0 100644
--- a/core/java/src/net/i2p/data/i2cp/GetDateMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/GetDateMessage.java
@@ -75,20 +75,6 @@ public class GetDateMessage extends I2CPMessageImpl {
         return MESSAGE_TYPE;
     }
 
-    @Override
-    public int hashCode() {
-        return MESSAGE_TYPE ^ DataHelper.hashCode(_version);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if ((object != null) && (object instanceof GetDateMessage)) {
-            return DataHelper.eq(_version, ((GetDateMessage)object)._version);
-        }
-        
-        return false;
-    }
-
     @Override
     public String toString() {
         StringBuilder buf = new StringBuilder();
diff --git a/core/java/src/net/i2p/data/i2cp/MessagePayloadMessage.java b/core/java/src/net/i2p/data/i2cp/MessagePayloadMessage.java
index 5b339c265fa14502d7913a787f5ddf7805e18cbe..afa22de9d25e128461d69487b00aaa2770f311ed 100644
--- a/core/java/src/net/i2p/data/i2cp/MessagePayloadMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/MessagePayloadMessage.java
@@ -107,19 +107,6 @@ public class MessagePayloadMessage extends I2CPMessageImpl {
         return MESSAGE_TYPE;
     }
 
-    /* FIXME missing hashCode() method FIXME */
-    @Override
-    public boolean equals(Object object) {
-        if ((object != null) && (object instanceof MessagePayloadMessage)) {
-            MessagePayloadMessage msg = (MessagePayloadMessage) object;
-            return _sessionId == msg.getSessionId()
-                   && _messageId == msg.getMessageId()
-                   && DataHelper.eq(_payload, msg.getPayload());
-        }
-            
-        return false;
-    }
-
     @Override
     public String toString() {
         StringBuilder buf = new StringBuilder();
diff --git a/core/java/src/net/i2p/data/i2cp/MessageStatusMessage.java b/core/java/src/net/i2p/data/i2cp/MessageStatusMessage.java
index b3c138b4a73a0cb7e681b701860ca80b29d3eb5a..d9122bd778cd00d0323ec5d9dcc77ee5bf7cdeba 100644
--- a/core/java/src/net/i2p/data/i2cp/MessageStatusMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/MessageStatusMessage.java
@@ -36,9 +36,13 @@ public class MessageStatusMessage extends I2CPMessageImpl {
      */
     public final static int STATUS_AVAILABLE = 0;
     public final static int STATUS_SEND_ACCEPTED = 1;
+
     /** unused */
     public final static int STATUS_SEND_BEST_EFFORT_SUCCESS = 2;
-    /** unused */
+
+    /**
+     *  A probable failure, but we don't know for sure.
+     */
     public final static int STATUS_SEND_BEST_EFFORT_FAILURE = 3;
 
     /**
@@ -223,10 +227,16 @@ public class MessageStatusMessage extends I2CPMessageImpl {
                status == STATUS_AVAILABLE;
     }
 
+    /**
+     *  This is the router's ID for the message
+     */
     public long getMessageId() {
         return _messageId;
     }
 
+    /**
+     *  This is the router's ID for the message
+     */
     public void setMessageId(long id) {
         _messageId = id;
     }
@@ -239,10 +249,16 @@ public class MessageStatusMessage extends I2CPMessageImpl {
         _size = size;
     }
 
+    /**
+     *  This is the client's ID for the message
+     */
     public long getNonce() {
         return _nonce;
     }
 
+    /**
+     *  This is the client's ID for the message
+     */
     public void setNonce(long nonce) {
         _nonce = nonce;
     }
@@ -312,19 +328,6 @@ public class MessageStatusMessage extends I2CPMessageImpl {
         return MESSAGE_TYPE;
     }
 
-    /* FIXME missing hashCode() method FIXME */
-    @Override
-    public boolean equals(Object object) {
-        if ((object != null) && (object instanceof MessageStatusMessage)) {
-            MessageStatusMessage msg = (MessageStatusMessage) object;
-            return _sessionId == msg.getSessionId()
-                   && _messageId == msg.getMessageId() && _nonce == msg.getNonce()
-                   && _size == msg.getSize() && _status == msg.getStatus();
-        }
-            
-        return false;
-    }
-
     @Override
     public String toString() {
         StringBuilder buf = new StringBuilder();
diff --git a/core/java/src/net/i2p/data/i2cp/ReceiveMessageBeginMessage.java b/core/java/src/net/i2p/data/i2cp/ReceiveMessageBeginMessage.java
index 04cd20470682071636c5af451bf524b3e101d64c..032c1ea8be18ef95070e285813686962b91007e1 100644
--- a/core/java/src/net/i2p/data/i2cp/ReceiveMessageBeginMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/ReceiveMessageBeginMessage.java
@@ -88,18 +88,6 @@ public class ReceiveMessageBeginMessage extends I2CPMessageImpl {
         return MESSAGE_TYPE;
     }
 
-    /* FIXME missing hashCode() method FIXME */
-    @Override
-    public boolean equals(Object object) {
-        if ((object != null) && (object instanceof ReceiveMessageBeginMessage)) {
-            ReceiveMessageBeginMessage msg = (ReceiveMessageBeginMessage) object;
-            return _sessionId == msg.getSessionId()
-                   && _messageId == msg.getMessageId();
-        }
-            
-        return false;
-    }
-
     @Override
     public String toString() {
         StringBuilder buf = new StringBuilder();
diff --git a/core/java/src/net/i2p/data/i2cp/ReceiveMessageEndMessage.java b/core/java/src/net/i2p/data/i2cp/ReceiveMessageEndMessage.java
index 028c028b9e1573b09dc8ab7ce170337d24b9c1e2..c405b93a304901846ffc5365a2a10d097a818ca4 100644
--- a/core/java/src/net/i2p/data/i2cp/ReceiveMessageEndMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/ReceiveMessageEndMessage.java
@@ -72,18 +72,6 @@ public class ReceiveMessageEndMessage extends I2CPMessageImpl {
         return MESSAGE_TYPE;
     }
 
-    /* FIXME missing hashCode() method FIXME */
-    @Override
-    public boolean equals(Object object) {
-        if ((object != null) && (object instanceof ReceiveMessageEndMessage)) {
-            ReceiveMessageEndMessage msg = (ReceiveMessageEndMessage) object;
-            return _sessionId == msg.getSessionId()
-                   && _messageId == msg.getMessageId();
-        }
-         
-        return false;
-    }
-
     @Override
     public String toString() {
         StringBuilder buf = new StringBuilder();
diff --git a/core/java/src/net/i2p/data/i2cp/ReconfigureSessionMessage.java b/core/java/src/net/i2p/data/i2cp/ReconfigureSessionMessage.java
index 336fb3ed5b1703a47314239deeff3f46d58dc3fc..dd6558f39dae99d15a078f29faee0f0cc5e32892 100644
--- a/core/java/src/net/i2p/data/i2cp/ReconfigureSessionMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/ReconfigureSessionMessage.java
@@ -76,18 +76,6 @@ public class ReconfigureSessionMessage extends I2CPMessageImpl {
         return MESSAGE_TYPE;
     }
 
-    /* FIXME missing hashCode() method FIXME */
-    @Override
-    public boolean equals(Object object) {
-        if ((object != null) && (object instanceof ReconfigureSessionMessage)) {
-            ReconfigureSessionMessage msg = (ReconfigureSessionMessage) object;
-            return DataHelper.eq(_sessionId, msg.getSessionId())
-                   && DataHelper.eq(_sessionConfig, msg.getSessionConfig());
-        }
-            
-        return false;
-    }
-
     @Override
     public String toString() {
         StringBuilder buf = new StringBuilder();
diff --git a/core/java/src/net/i2p/data/i2cp/ReportAbuseMessage.java b/core/java/src/net/i2p/data/i2cp/ReportAbuseMessage.java
index 137d364c7763e455f54adcf4b60ac3324c76cff1..60870621b719452855d8333445f6a28cae1f1629 100644
--- a/core/java/src/net/i2p/data/i2cp/ReportAbuseMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/ReportAbuseMessage.java
@@ -104,18 +104,6 @@ public class ReportAbuseMessage extends I2CPMessageImpl {
         return MESSAGE_TYPE;
     }
 
-    /* FIXME missing hashCode() method FIXME */
-    @Override
-    public boolean equals(Object object) {
-        if ((object != null) && (object instanceof ReportAbuseMessage)) {
-            ReportAbuseMessage msg = (ReportAbuseMessage) object;
-            return DataHelper.eq(getSessionId(), msg.getSessionId()) && DataHelper.eq(getSeverity(), msg.getSeverity())
-                   && DataHelper.eq(getReason(), msg.getReason()) && DataHelper.eq(getMessageId(), msg.getMessageId());
-        }
-         
-        return false;
-    }
-
     @Override
     public String toString() {
         StringBuilder buf = new StringBuilder();
diff --git a/core/java/src/net/i2p/data/i2cp/RequestLeaseSetMessage.java b/core/java/src/net/i2p/data/i2cp/RequestLeaseSetMessage.java
index 6bf9859b4ca62b4a7409c00f04ae1124b9df2c75..87a819e4f4bcdca0179efe15bf6678449e504c4d 100644
--- a/core/java/src/net/i2p/data/i2cp/RequestLeaseSetMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/RequestLeaseSetMessage.java
@@ -124,22 +124,6 @@ public class RequestLeaseSetMessage extends I2CPMessageImpl {
         return MESSAGE_TYPE;
     }
 
-    /* FIXME missing hashCode() method FIXME */
-    @Override
-    public boolean equals(Object object) {
-        if ((object != null) && (object instanceof RequestLeaseSetMessage)) {
-            RequestLeaseSetMessage msg = (RequestLeaseSetMessage) object;
-            if (getEndpoints() != msg.getEndpoints()) return false;
-            for (int i = 0; i < getEndpoints(); i++) {
-                if (!DataHelper.eq(getRouter(i), msg.getRouter(i)) || !DataHelper.eq(getTunnelId(i), msg.getTunnelId(i)))
-                    return false;
-            }
-            return DataHelper.eq(getSessionId(), msg.getSessionId()) && DataHelper.eq(getEndDate(), msg.getEndDate());
-        }
-         
-        return false;
-    }
-
     @Override
     public String toString() {
         StringBuilder buf = new StringBuilder();
diff --git a/core/java/src/net/i2p/data/i2cp/SendMessageExpiresMessage.java b/core/java/src/net/i2p/data/i2cp/SendMessageExpiresMessage.java
index b60cce67fa14ef22d32681faccf38e74c265752d..1a4a5b6120601a8df01208bf560e1c9c69e10798 100644
--- a/core/java/src/net/i2p/data/i2cp/SendMessageExpiresMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/SendMessageExpiresMessage.java
@@ -133,18 +133,6 @@ public class SendMessageExpiresMessage extends SendMessageMessage {
         return MESSAGE_TYPE;
     }
 
-    /* FIXME missing hashCode() method FIXME */
-    @Override
-    public boolean equals(Object object) {
-        if ((object != null) && (object instanceof SendMessageExpiresMessage)) {
-            SendMessageExpiresMessage msg = (SendMessageExpiresMessage) object;
-            return super.equals(object)
-                   && _daf.equals(msg._daf);
-        }
-         
-        return false;
-    }
-
     @Override
     public String toString() {
         StringBuilder buf = new StringBuilder();
diff --git a/core/java/src/net/i2p/data/i2cp/SendMessageMessage.java b/core/java/src/net/i2p/data/i2cp/SendMessageMessage.java
index d59fda03eec0833150cabd1a1d63dec9250489d6..c067bdc61033f73776138828a410c1f11bfcbba7 100644
--- a/core/java/src/net/i2p/data/i2cp/SendMessageMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/SendMessageMessage.java
@@ -141,19 +141,6 @@ public class SendMessageMessage extends I2CPMessageImpl {
         return MESSAGE_TYPE;
     }
 
-    /* FIXME missing hashCode() method FIXME */
-    @Override
-    public boolean equals(Object object) {
-        if ((object != null) && (object instanceof SendMessageMessage)) {
-            SendMessageMessage msg = (SendMessageMessage) object;
-            return DataHelper.eq(getSessionId(), msg.getSessionId())
-                   && DataHelper.eq(getDestination(), msg.getDestination()) && (getNonce() == msg.getNonce())
-                   && DataHelper.eq(getPayload(), msg.getPayload());
-        }
-         
-        return false;
-    }
-
     @Override
     public String toString() {
         StringBuilder buf = new StringBuilder();
diff --git a/core/java/src/net/i2p/data/i2cp/SessionStatusMessage.java b/core/java/src/net/i2p/data/i2cp/SessionStatusMessage.java
index b26ec05f0ba48812363fb153bbed01ba832b4318..8ac95d825c343bf13f46ac1fab218d410a887cfe 100644
--- a/core/java/src/net/i2p/data/i2cp/SessionStatusMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/SessionStatusMessage.java
@@ -81,17 +81,6 @@ public class SessionStatusMessage extends I2CPMessageImpl {
         return MESSAGE_TYPE;
     }
 
-    /* FIXME missing hashCode method FIXME */
-    @Override
-    public boolean equals(Object object) {
-        if ((object != null) && (object instanceof SessionStatusMessage)) {
-            SessionStatusMessage msg = (SessionStatusMessage) object;
-            return DataHelper.eq(getSessionId(), msg.getSessionId()) && _status == msg.getStatus();
-        }
-         
-        return false;
-    }
-
     @Override
     public String toString() {
         StringBuilder buf = new StringBuilder();
diff --git a/core/java/src/net/i2p/data/i2cp/SetDateMessage.java b/core/java/src/net/i2p/data/i2cp/SetDateMessage.java
index 517992d394eeee7164d2d44c31efeab53d191175..0fef29262394a71120675cee99eb2da001440f34 100644
--- a/core/java/src/net/i2p/data/i2cp/SetDateMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/SetDateMessage.java
@@ -89,21 +89,6 @@ public class SetDateMessage extends I2CPMessageImpl {
         return MESSAGE_TYPE;
     }
 
-    @Override
-    public int hashCode() {
-        return MESSAGE_TYPE ^ DataHelper.hashCode(_version) ^ DataHelper.hashCode(_date);
-    }
-
-    @Override
-    public boolean equals(Object object) {
-        if ((object != null) && (object instanceof SetDateMessage)) {
-            SetDateMessage msg = (SetDateMessage) object;
-            return DataHelper.eq(_date, msg._date) && DataHelper.eq(_version, msg._version);
-        }
-            
-        return false;
-    }
-
     @Override
     public String toString() {
         StringBuilder buf = new StringBuilder();