diff --git a/build.xml b/build.xml
index d95c144bfa..886bbe4d06 100644
--- a/build.xml
+++ b/build.xml
@@ -420,9 +420,9 @@
splitindex="true"
doctitle="I2P Javadocs for Release ${release.number} Build ${i2p.build.number}${build.extra}"
windowtitle="I2P Anonymous Network - Java Documentation - Version ${release.number}">
-
+
-
+
@@ -489,8 +489,8 @@
splitindex="true"
doctitle="I2P Unit Test Javadocs for Release ${release.number} Build ${i2p.build.number}${build.extra}"
windowtitle="I2P Anonymous Network - Java Documentation - Version ${release.number}">
-
-
+
+
diff --git a/router/java/src/net/i2p/router/MessageValidator.java b/router/java/src/net/i2p/router/MessageValidator.java
index b619166122..e5b1a120ae 100644
--- a/router/java/src/net/i2p/router/MessageValidator.java
+++ b/router/java/src/net/i2p/router/MessageValidator.java
@@ -1,7 +1,7 @@
package net.i2p.router;
-import net.i2p.util.DecayingBloomFilter;
-import net.i2p.util.DecayingHashSet;
+import net.i2p.router.util.DecayingBloomFilter;
+import net.i2p.router.util.DecayingHashSet;
import net.i2p.util.Log;
/**
diff --git a/router/java/src/net/i2p/router/transport/udp/InboundMessageFragments.java b/router/java/src/net/i2p/router/transport/udp/InboundMessageFragments.java
index 64c52ae039..fdf6cabc70 100644
--- a/router/java/src/net/i2p/router/transport/udp/InboundMessageFragments.java
+++ b/router/java/src/net/i2p/router/transport/udp/InboundMessageFragments.java
@@ -4,8 +4,8 @@ import java.util.Map;
import net.i2p.data.Hash;
import net.i2p.router.RouterContext;
-import net.i2p.util.DecayingBloomFilter;
-import net.i2p.util.DecayingHashSet;
+import net.i2p.router.util.DecayingBloomFilter;
+import net.i2p.router.util.DecayingHashSet;
import net.i2p.util.Log;
/**
diff --git a/router/java/src/net/i2p/router/tunnel/BloomFilterIVValidator.java b/router/java/src/net/i2p/router/tunnel/BloomFilterIVValidator.java
index 238d135a5c..58944818ea 100644
--- a/router/java/src/net/i2p/router/tunnel/BloomFilterIVValidator.java
+++ b/router/java/src/net/i2p/router/tunnel/BloomFilterIVValidator.java
@@ -3,9 +3,9 @@ package net.i2p.router.tunnel;
import net.i2p.data.ByteArray;
import net.i2p.data.DataHelper;
import net.i2p.router.RouterContext;
+import net.i2p.router.util.DecayingBloomFilter;
+import net.i2p.router.util.DecayingHashSet;
import net.i2p.util.ByteCache;
-import net.i2p.util.DecayingBloomFilter;
-import net.i2p.util.DecayingHashSet;
/**
* Manage the IV validation for all of the router's tunnels by way of a big
diff --git a/router/java/src/net/i2p/router/tunnel/BuildMessageProcessor.java b/router/java/src/net/i2p/router/tunnel/BuildMessageProcessor.java
index 196724329c..1a2c6a5b82 100644
--- a/router/java/src/net/i2p/router/tunnel/BuildMessageProcessor.java
+++ b/router/java/src/net/i2p/router/tunnel/BuildMessageProcessor.java
@@ -9,8 +9,8 @@ import net.i2p.data.PrivateKey;
import net.i2p.data.SessionKey;
import net.i2p.data.i2np.BuildRequestRecord;
import net.i2p.data.i2np.TunnelBuildMessage;
-import net.i2p.util.DecayingBloomFilter;
-import net.i2p.util.DecayingHashSet;
+import net.i2p.router.util.DecayingBloomFilter;
+import net.i2p.router.util.DecayingHashSet;
import net.i2p.util.Log;
/**
diff --git a/core/java/src/net/i2p/util/DecayingBloomFilter.java b/router/java/src/net/i2p/router/util/DecayingBloomFilter.java
similarity index 99%
rename from core/java/src/net/i2p/util/DecayingBloomFilter.java
rename to router/java/src/net/i2p/router/util/DecayingBloomFilter.java
index 7f006a8b9f..7ef9eb8dd9 100644
--- a/core/java/src/net/i2p/util/DecayingBloomFilter.java
+++ b/router/java/src/net/i2p/router/util/DecayingBloomFilter.java
@@ -1,4 +1,4 @@
-package net.i2p.util;
+package net.i2p.router.util;
import java.util.Random;
import java.util.concurrent.TimeUnit;
@@ -6,6 +6,8 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
import net.i2p.I2PAppContext;
import net.i2p.data.DataHelper;
+import net.i2p.util.Log;
+import net.i2p.util.SimpleTimer;
import org.xlattice.crypto.filters.BloomSHA1;
@@ -17,13 +19,11 @@ import org.xlattice.crypto.filters.BloomSHA1;
* this may be refactored to allow tighter control of the size necessary for the
* contained bloom filters.
*
- * Deprecated for use outside of the router; to be moved to router.jar.
- *
* See main() for an analysis of false positive rate.
* See BloomFilterIVValidator for instantiation parameters.
* See DecayingHashSet for a smaller and simpler version.
* @see net.i2p.router.tunnel.BloomFilterIVValidator
- * @see net.i2p.util.DecayingHashSet
+ * @see net.i2p.router.util.DecayingHashSet
*/
public class DecayingBloomFilter {
protected final I2PAppContext _context;
diff --git a/core/java/src/net/i2p/util/DecayingHashSet.java b/router/java/src/net/i2p/router/util/DecayingHashSet.java
similarity index 99%
rename from core/java/src/net/i2p/util/DecayingHashSet.java
rename to router/java/src/net/i2p/router/util/DecayingHashSet.java
index 1f7004ce47..0588bba4eb 100644
--- a/core/java/src/net/i2p/util/DecayingHashSet.java
+++ b/router/java/src/net/i2p/router/util/DecayingHashSet.java
@@ -1,9 +1,11 @@
-package net.i2p.util;
+package net.i2p.router.util;
import java.util.Random;
import net.i2p.I2PAppContext;
import net.i2p.data.DataHelper;
+import net.i2p.util.ConcurrentHashSet;
+import net.i2p.util.Log;
/**
@@ -54,8 +56,6 @@ import net.i2p.data.DataHelper;
*
* This performs about twice as fast as DBF in the test below.
*
- * Deprecated for use outside of the router; to be moved to router.jar.
- *
* @author zzz
*/
public class DecayingHashSet extends DecayingBloomFilter {
diff --git a/core/java/src/org/xlattice/crypto/filters/BloomSHA1.java b/router/java/src/org/xlattice/crypto/filters/BloomSHA1.java
similarity index 100%
rename from core/java/src/org/xlattice/crypto/filters/BloomSHA1.java
rename to router/java/src/org/xlattice/crypto/filters/BloomSHA1.java
diff --git a/core/java/src/org/xlattice/crypto/filters/KeySelector.java b/router/java/src/org/xlattice/crypto/filters/KeySelector.java
similarity index 100%
rename from core/java/src/org/xlattice/crypto/filters/KeySelector.java
rename to router/java/src/org/xlattice/crypto/filters/KeySelector.java