diff --git a/apps/imagegen/identicon/core/src/main/java/com/docuverse/identicon/IdenticonUtil.java b/apps/imagegen/identicon/core/src/main/java/com/docuverse/identicon/IdenticonUtil.java
index a5c91308bb3b883ba6758f09bc135d97ee2710be..d47c6e8d76429ac95ef2db0cf71046282d2cbed2 100644
--- a/apps/imagegen/identicon/core/src/main/java/com/docuverse/identicon/IdenticonUtil.java
+++ b/apps/imagegen/identicon/core/src/main/java/com/docuverse/identicon/IdenticonUtil.java
@@ -7,7 +7,7 @@ import java.security.MessageDigest;
  * Utility methods useful for implementing identicon functionality. Methods are
  * class methods for convenience.
  * <p>
- * Key method of interest is {@link getIdenticonCode} which converts IP address
+ * Key method of interest is {@link #getIdenticonCode} which converts IP address
  * into identicon code.<br>
  * <strong>IMPORTANT</strong>: <code>inetSalt</code> value must be set to
  * reasonably long random string prior to invoking this method.
@@ -49,7 +49,7 @@ public class IdenticonUtil {
 	/**
 	 * Returns current inetSalt value.
 	 * 
-	 * @return
+	 * @return the value
 	 */
 	public static String getInetSalt() {
 		return inetSalt;
@@ -117,7 +117,7 @@ public class IdenticonUtil {
 	 *            will be used to determine the value.
 	 * @param remoteAddr
 	 *            HTTP requester's IP address. Optional if code was specified.
-	 * @return
+	 * @return the code
 	 */
 	public static int getIdenticonCode(String codeParam, String remoteAddr) {
 		int code = 0;
diff --git a/apps/imagegen/identicon/core/src/main/java/com/docuverse/identicon/NineBlockIdenticonRenderer2.java b/apps/imagegen/identicon/core/src/main/java/com/docuverse/identicon/NineBlockIdenticonRenderer2.java
index 0cc69cb79f90331ebe21010949b8324f3b4ba103..559e1a1a83d9d26f1f7394aba827aa9e0e185de2 100644
--- a/apps/imagegen/identicon/core/src/main/java/com/docuverse/identicon/NineBlockIdenticonRenderer2.java
+++ b/apps/imagegen/identicon/core/src/main/java/com/docuverse/identicon/NineBlockIdenticonRenderer2.java
@@ -100,7 +100,7 @@ public class NineBlockIdenticonRenderer2 implements IdenticonRenderer {
 	 * Returns the size in pixels at which each patch will be rendered before
 	 * they are scaled down to requested identicon size.
 	 * 
-	 * @return
+	 * @return the size
 	 */
 	public float getPatchSize() {
 		return patchSize;
@@ -161,7 +161,7 @@ public class NineBlockIdenticonRenderer2 implements IdenticonRenderer {
 	 * 
 	 * <p>
 	 * Size of the returned identicon image is determined by patchSize set using
-	 * {@link setPatchSize}. Since a 9-block identicon consists of 3x3 patches,
+	 * {@link #setPatchSize}. Since a 9-block identicon consists of 3x3 patches,
 	 * width and height will be 3 times the patch size.
 	 * </p>
 	 * 
@@ -304,7 +304,7 @@ public class NineBlockIdenticonRenderer2 implements IdenticonRenderer {
 	 * 
 	 * @param c1
 	 * @param c2
-	 * @return
+	 * @return the distance
 	 */
 	private float getColorDistance(Color c1, Color c2) {
 		float dx = c1.getRed() - c2.getRed();
@@ -317,7 +317,7 @@ public class NineBlockIdenticonRenderer2 implements IdenticonRenderer {
 	 * Returns complementary color.
 	 * 
 	 * @param color
-	 * @return
+	 * @return the complement
 	 */
 	private Color getComplementaryColor(Color color) {
 		return new Color(color.getRGB() ^ 0x00FFFFFF);
diff --git a/apps/imagegen/identicon/core/src/main/java/com/docuverse/identicon/package.html b/apps/imagegen/identicon/core/src/main/java/com/docuverse/identicon/package.html
new file mode 100644
index 0000000000000000000000000000000000000000..62571552576f43f17b0658c5f851688301810151
--- /dev/null
+++ b/apps/imagegen/identicon/core/src/main/java/com/docuverse/identicon/package.html
@@ -0,0 +1,11 @@
+<html>
+<body>
+<p>
+The main identicon code is here.
+The servlet is in net.i2p.imagegen.
+There are minor modifications to remove dependencies on commons-logging
+and the org.cache2k package.
+From https://github.com/PauloMigAlmeida/identicon
+</p>
+</body>
+</html>
diff --git a/apps/imagegen/imagegen/webapp/src/main/java/net/i2p/imagegen/IdenticonServlet.java b/apps/imagegen/imagegen/webapp/src/main/java/net/i2p/imagegen/IdenticonServlet.java
index e722c66d6f86c02e5048bdcfdd23dd21a8f86a9c..3fa8c2b31828a49d091dd2e0e144f03874c92882 100644
--- a/apps/imagegen/imagegen/webapp/src/main/java/net/i2p/imagegen/IdenticonServlet.java
+++ b/apps/imagegen/imagegen/webapp/src/main/java/net/i2p/imagegen/IdenticonServlet.java
@@ -87,7 +87,7 @@ public class IdenticonServlet extends HttpServlet {
 		String cacheProvider = cfg.getInitParameter(INIT_PARAM_CACHE_PROVIDER);
 		if (cacheProvider != null) {
 			try {
-				Class cacheClass = Class.forName(cacheProvider);
+				Class<?> cacheClass = Class.forName(cacheProvider);
 				this.cache = (IdenticonCache) cacheClass.newInstance();
 			} catch (Exception e) {
 				e.printStackTrace();
diff --git a/apps/imagegen/imagegen/webapp/src/main/java/net/i2p/imagegen/QRServlet.java b/apps/imagegen/imagegen/webapp/src/main/java/net/i2p/imagegen/QRServlet.java
index f98f9b92933c4e1727e17adfdd9f0a30f4a31184..3506b70804c86de85c756900e27e1da18df9b334 100644
--- a/apps/imagegen/imagegen/webapp/src/main/java/net/i2p/imagegen/QRServlet.java
+++ b/apps/imagegen/imagegen/webapp/src/main/java/net/i2p/imagegen/QRServlet.java
@@ -54,7 +54,7 @@ public class QRServlet extends HttpServlet {
 		String cacheProvider = cfg.getInitParameter(INIT_PARAM_CACHE_PROVIDER);
 		if (cacheProvider != null) {
 			try {
-				Class cacheClass = Class.forName(cacheProvider);
+				Class<?> cacheClass = Class.forName(cacheProvider);
 				this.cache = (IdenticonCache) cacheClass.newInstance();
 			} catch (Exception e) {
 				e.printStackTrace();
diff --git a/apps/imagegen/imagegen/webapp/src/main/java/net/i2p/imagegen/package.html b/apps/imagegen/imagegen/webapp/src/main/java/net/i2p/imagegen/package.html
new file mode 100644
index 0000000000000000000000000000000000000000..da244413ff08bc9e3f2702c96dd2261895dd639c
--- /dev/null
+++ b/apps/imagegen/imagegen/webapp/src/main/java/net/i2p/imagegen/package.html
@@ -0,0 +1,7 @@
+<html>
+<body>
+<p>
+Servlets for generating QR codes and identicon images.
+</p>
+</body>
+</html>
diff --git a/apps/imagegen/zxing/core/src/main/java/com/google/zxing/package.html b/apps/imagegen/zxing/core/src/main/java/com/google/zxing/package.html
new file mode 100644
index 0000000000000000000000000000000000000000..b03e536f900139406fc4b264eb2dc06e2889a73b
--- /dev/null
+++ b/apps/imagegen/zxing/core/src/main/java/com/google/zxing/package.html
@@ -0,0 +1,7 @@
+<html>
+<body>
+<p>
+This is a small portion of zxing, including only what's required to generate QR codes.
+</p>
+</body>
+</html>
diff --git a/apps/sam/java/src/net/i2p/sam/SAMMessageSession.java b/apps/sam/java/src/net/i2p/sam/SAMMessageSession.java
index 0bbecb77c7780e843b6d1b4fc4a6c867f03ee98a..793982aed3a917bc7fb576d3f9344e9c07ba555e 100644
--- a/apps/sam/java/src/net/i2p/sam/SAMMessageSession.java
+++ b/apps/sam/java/src/net/i2p/sam/SAMMessageSession.java
@@ -78,8 +78,6 @@ abstract class SAMMessageSession implements SAMMessageSess {
     /**
      * Initialize a new SAM message-based session using an existing I2PSession.
      *
-     * @param destStream Input stream containing the destination and private keys (same format as PrivateKeyFile)
-     * @param props Properties to setup the I2P session
      * @throws IOException
      * @throws DataFormatException
      * @throws I2PSessionException 
diff --git a/apps/sam/java/src/net/i2p/sam/SAMv1Handler.java b/apps/sam/java/src/net/i2p/sam/SAMv1Handler.java
index 73192da826c9ef0bbbc482c71409b3f56a70734c..3c0eaf91cda79340e4d84fd77cf39e69b888c08d 100644
--- a/apps/sam/java/src/net/i2p/sam/SAMv1Handler.java
+++ b/apps/sam/java/src/net/i2p/sam/SAMv1Handler.java
@@ -946,7 +946,6 @@ class SAMv1Handler extends SAMHandler implements SAMRawReceiver, SAMDatagramRece
      * Writes s + createMessageString(msg) + \n
      *
      * @param s The string, non-null
-     * @param s The message may be null
      * @since 0.9.25
      */
     protected boolean writeString(String s, String msg) {
diff --git a/apps/sam/java/src/net/i2p/sam/SAMv3StreamSession.java b/apps/sam/java/src/net/i2p/sam/SAMv3StreamSession.java
index ffeb7142a6979f67a15c93327b8776f6aa0012b4..f547a2e402c0cd62e178637f1e0351c314e7eac8 100644
--- a/apps/sam/java/src/net/i2p/sam/SAMv3StreamSession.java
+++ b/apps/sam/java/src/net/i2p/sam/SAMv3StreamSession.java
@@ -95,7 +95,7 @@ class SAMv3StreamSession  extends SAMStreamSession implements Session
 	     *   
 	     * Caller MUST call start().
 	     *
-	     * @param nick nickname of the session
+	     * @param login nickname of the session
 	     * @throws IOException
 	     * @throws DataFormatException
 	     * @throws I2PSessionException
diff --git a/core/java/src/net/i2p/crypto/KeyStoreUtil.java b/core/java/src/net/i2p/crypto/KeyStoreUtil.java
index 24844c2a55dac4c65c84966ea8849d56b1c81c15..68fcc50c7d8ac49b38d8d54d601d61ac76d542b4 100644
--- a/core/java/src/net/i2p/crypto/KeyStoreUtil.java
+++ b/core/java/src/net/i2p/crypto/KeyStoreUtil.java
@@ -541,8 +541,6 @@ public final class KeyStoreUtil {
      *  @param cname e.g. randomstuff.console.i2p.net
      *  @param ou e.g. console
      *  @param validDays e.g. 3652 (10 years)
-     *  @param keyAlg e.g. DSA , RSA, EC
-     *  @param keySize e.g. 1024
      *  @param keyPW the key password, must be at least 6 characters
      *  @return all you need:
      *      rv[0] is a Java PublicKey