diff --git a/router/java/src/net/i2p/router/transport/udp/InboundEstablishState.java b/router/java/src/net/i2p/router/transport/udp/InboundEstablishState.java
index 7e64a9528052eaa708c68dda5fe8832576302c11..3d746f152418e374b1e8d9469688df28eec3a539 100644
--- a/router/java/src/net/i2p/router/transport/udp/InboundEstablishState.java
+++ b/router/java/src/net/i2p/router/transport/udp/InboundEstablishState.java
@@ -113,6 +113,11 @@ class InboundEstablishState {
         receiveSessionRequest(req);
     }
     
+    /**
+     * @since 0.9.54
+     */
+    public int getVersion() { return 1; }
+
     public synchronized InboundState getState() { return _currentState; }
 
     /** @return if previously complete */
diff --git a/router/java/src/net/i2p/router/transport/udp/OutboundEstablishState.java b/router/java/src/net/i2p/router/transport/udp/OutboundEstablishState.java
index 632013fb491e71d0c85217ad9342d1dcdd466a7a..2f706d842f4cc05639c0c24c1c18b3c6b15e2958 100644
--- a/router/java/src/net/i2p/router/transport/udp/OutboundEstablishState.java
+++ b/router/java/src/net/i2p/router/transport/udp/OutboundEstablishState.java
@@ -151,6 +151,11 @@ class OutboundEstablishState {
         }
     }
     
+    /**
+     * @since 0.9.54
+     */
+    public int getVersion() { return 1; }
+    
     public synchronized OutboundState getState() { return _currentState; }
 
     /** @return if previously complete */
diff --git a/router/java/src/net/i2p/router/transport/udp/OutboundMessageState.java b/router/java/src/net/i2p/router/transport/udp/OutboundMessageState.java
index 8194b14b64dfb8b8be21eb5ba6e921b04576c62c..0c05840e364437950da61aa744144a5aad47644d 100644
--- a/router/java/src/net/i2p/router/transport/udp/OutboundMessageState.java
+++ b/router/java/src/net/i2p/router/transport/udp/OutboundMessageState.java
@@ -104,6 +104,11 @@ class OutboundMessageState implements CDPQEntry {
         _fragmentAcks = _numFragments < 64 ? mask(_numFragments) - 1L : -1L;
         _fragmentSends = (numFragments > 1) ? new byte[numFragments] : null;
     }
+    
+    /**
+     * @since 0.9.54
+     */
+    public int getVersion() { return _peer.getVersion(); }
 
     /**
      *  @param fragment 0-63
diff --git a/router/java/src/net/i2p/router/transport/udp/PeerState.java b/router/java/src/net/i2p/router/transport/udp/PeerState.java
index 75e28a7beefb7e5aab2efe1df4e35436a8f46c92..c3cc25b732f7ca92196fa35d476a3cb0c4d3ef3f 100644
--- a/router/java/src/net/i2p/router/transport/udp/PeerState.java
+++ b/router/java/src/net/i2p/router/transport/udp/PeerState.java
@@ -378,6 +378,11 @@ public class PeerState {
         _remoteHostId = new RemoteHostId(remoteIP, remotePort);
         _bwEstimator = new SimpleBandwidthEstimator(ctx, this);
     }
+    
+    /**
+     * @since 0.9.54
+     */
+    public int getVersion() { return 1; }
 
     /**
      *  Caller should sync; UDPTransport must remove and add to peersByRemoteHost map