diff --git a/build.xml b/build.xml
index 16fd3869105edbb88356d1cdd191a8d3a9d6b109..5e513551b22e5fd2478a8e041ca179684fa6d58b 100644
--- a/build.xml
+++ b/build.xml
@@ -680,7 +680,7 @@
             windowtitle="I2P Anonymous Network - Java Documentation - Version ${release.number}">
             <group title="Core SDK (i2p.jar)" packages="net.i2p:net.i2p.*:net.i2p.client:net.i2p.client.*:net.i2p.internal:net.i2p.internal.*:freenet.support.CPUInformation:org.bouncycastle.oldcrypto:org.bouncycastle.oldcrypto.*:gnu.crypto.*:gnu.getopt:gnu.gettext:com.nettgryppa.security:net.metanotion:net.metanotion.*" />
             <group title="Streaming Library" packages="net.i2p.client.streaming:net.i2p.client.streaming.impl" />
-            <group title="Router" packages="net.i2p.router:net.i2p.router.*:net.i2p.data.i2np:net.i2p.data.router:org.cybergarage.*:org.freenetproject:org.xlattice.crypto.filters" />
+            <group title="Router" packages="net.i2p.router:net.i2p.router.*:net.i2p.data.i2np:net.i2p.data.router:org.cybergarage:org.cybergarage.*:org.freenetproject:org.xlattice.crypto.filters" />
             <group title="Router Console" packages="net.i2p.router.web:net.i2p.router.update:net.i2p.router.news" />
             <!-- apps and bridges starting here, alphabetical please -->
             <group title="Addressbook Application" packages="net.i2p.addressbook" />
diff --git a/router/java/src/net/i2p/router/client/package.html b/router/java/src/net/i2p/router/client/package.html
new file mode 100644
index 0000000000000000000000000000000000000000..a5194356b6910528b7fbf3c816027a18f9b46627
--- /dev/null
+++ b/router/java/src/net/i2p/router/client/package.html
@@ -0,0 +1,9 @@
+<html>
+<body>
+<p>
+Implements the router side of the I2CP interface,
+which is the API for applications to send and receive data through the router.
+The client side of the interface is implemented in net.i2p.client.
+</p>
+</body>
+</html>
diff --git a/router/java/src/net/i2p/router/message/package.html b/router/java/src/net/i2p/router/message/package.html
new file mode 100644
index 0000000000000000000000000000000000000000..94184efa7720f002453484a50173e8a3a1779c69
--- /dev/null
+++ b/router/java/src/net/i2p/router/message/package.html
@@ -0,0 +1,8 @@
+<html>
+<body>
+<p>
+Creates and parses garlic messages.
+Creates the source routing for outbound messages.
+</p>
+</body>
+</html>
diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/package.html b/router/java/src/net/i2p/router/networkdb/kademlia/package.html
new file mode 100644
index 0000000000000000000000000000000000000000..812838422a540bd4d34e24fd61932b4864ce1bfe
--- /dev/null
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/package.html
@@ -0,0 +1,9 @@
+<html>
+<body>
+<p>
+The network database, including implementation of floodfills.
+Database lookups, stores, exploration, and replies.
+Management of locally-generated RouterInfos and Leasesets.
+</p>
+</body>
+</html>
diff --git a/router/java/src/net/i2p/router/networkdb/package.html b/router/java/src/net/i2p/router/networkdb/package.html
new file mode 100644
index 0000000000000000000000000000000000000000..59eab8325257736f840fb2f0663ae80010a81931
--- /dev/null
+++ b/router/java/src/net/i2p/router/networkdb/package.html
@@ -0,0 +1,7 @@
+<html>
+<body>
+<p>
+A couple of classes, but most things are in kademlia.
+</p>
+</body>
+</html>
diff --git a/router/java/src/net/i2p/router/networkdb/reseed/package.html b/router/java/src/net/i2p/router/networkdb/reseed/package.html
new file mode 100644
index 0000000000000000000000000000000000000000..e3848ed5387f55c5d1cbbc9f3febbef5832f0256
--- /dev/null
+++ b/router/java/src/net/i2p/router/networkdb/reseed/package.html
@@ -0,0 +1,11 @@
+<html>
+<body>
+<p>
+Fetching, validation, unpacking, and installation of RouterInfos from
+signed su3 files, unsigned zip files, and web indexes.
+Supports loading from clearnet via HTTP and HTTPS, and from local files.
+Automatic reseeding on first install and when references fall below a minimum value.
+Support for user-initiated reseeds and status feedback via the router console.
+</p>
+</body>
+</html>
diff --git a/router/java/src/net/i2p/router/transport/crypto/package.html b/router/java/src/net/i2p/router/transport/crypto/package.html
new file mode 100644
index 0000000000000000000000000000000000000000..6c4a94d2e74df783ba3f4df5e5026b3d8fe404e5
--- /dev/null
+++ b/router/java/src/net/i2p/router/transport/crypto/package.html
@@ -0,0 +1,7 @@
+<html>
+<body>
+<p>
+DH key generation.
+</p>
+</body>
+</html>
diff --git a/router/java/src/net/i2p/router/tunnel/package.html b/router/java/src/net/i2p/router/tunnel/package.html
new file mode 100644
index 0000000000000000000000000000000000000000..368c544da5b74ad79c0e1331e2d8f8e5ec3adba4
--- /dev/null
+++ b/router/java/src/net/i2p/router/tunnel/package.html
@@ -0,0 +1,13 @@
+<html>
+<body>
+<p>
+All the work of managing locally created and participating tunnels,
+creating and handling tunnel messages, and their encryption.
+Deals with the five different types of tunnel hops:
+outbound gateway, outbound endpoint, inbound gateway, inbound endpoint, and middle hop.
+Distributes messages received for each type.
+Validation, queueing and throttling for each type.
+Tunnel build message handling is in the pool package.
+</p>
+</body>
+</html>
diff --git a/router/java/src/net/i2p/router/tunnel/pool/package.html b/router/java/src/net/i2p/router/tunnel/pool/package.html
new file mode 100644
index 0000000000000000000000000000000000000000..36c7ad17131139d93860533d9a1c0c9a8b40771e
--- /dev/null
+++ b/router/java/src/net/i2p/router/tunnel/pool/package.html
@@ -0,0 +1,11 @@
+<html>
+<body>
+<p>
+Tunnel creation, tunnel build message handling. Peer selection for tunnels.
+Grouping of tunnels into inbound and outbound pools.
+Pool configuration. Adaptive tunnel build strategy.
+Build request throttling, acceptance, rejection, and dropping based on local
+statistics and conditions.
+</p>
+</body>
+</html>
diff --git a/router/java/src/org/cybergarage/Dummy.java b/router/java/src/org/cybergarage/Dummy.java
new file mode 100644
index 0000000000000000000000000000000000000000..a7d71c9ad210fba67dce1b88ad1538cf7a52aadb
--- /dev/null
+++ b/router/java/src/org/cybergarage/Dummy.java
@@ -0,0 +1,7 @@
+package org.cybergarage;
+
+/**  
+ * Exists only to enable package.html to be included in javadoc.
+ * http://java.sun.com/j2se/javadoc/faq/index.html#packagewithoutjavafiles
+ */
+abstract class Dummy {}
diff --git a/router/java/src/org/cybergarage/package.html b/router/java/src/org/cybergarage/package.html
new file mode 100644
index 0000000000000000000000000000000000000000..379ce53a040f12009fee34598871295f3cc69b79
--- /dev/null
+++ b/router/java/src/org/cybergarage/package.html
@@ -0,0 +1,7 @@
+<html>
+<body>
+<p>
+The cybergarage cyberlink UPnP library version 3.0, with minor mods for I2P.
+</p>
+</body>
+</html>
diff --git a/router/java/src/org/freenetproject/package.html b/router/java/src/org/freenetproject/package.html
new file mode 100644
index 0000000000000000000000000000000000000000..51942265690cefbb6c38c74cd220ff7bc9a13844
--- /dev/null
+++ b/router/java/src/org/freenetproject/package.html
@@ -0,0 +1,8 @@
+<html>
+<body>
+<p>
+Small classes used by net.i2p.transport.UPnP to interface with the org.cybergarage UPnP library,
+as imported from freenet.
+</p>
+</body>
+</html>
diff --git a/router/java/src/org/xlattice/crypto/filters/package.html b/router/java/src/org/xlattice/crypto/filters/package.html
new file mode 100644
index 0000000000000000000000000000000000000000..dea59c8d8e8bd8da0aa73ac81d6a1e2dd71ac523
--- /dev/null
+++ b/router/java/src/org/xlattice/crypto/filters/package.html
@@ -0,0 +1,7 @@
+<html>
+<body>
+<p>
+Bloom filter used by net.i2p.router.util.DecayingBloomFilter
+</p>
+</body>
+</html>