diff --git a/src/main/java/com/intel/jndn/management/NFD.java b/src/main/java/com/intel/jndn/management/NFD.java
index c0910b5..73535b9 100644
--- a/src/main/java/com/intel/jndn/management/NFD.java
+++ b/src/main/java/com/intel/jndn/management/NFD.java
@@ -35,8 +35,8 @@
 
 /**
  * Helper class for interacting with an NDN forwarder daemon; see
- * http://redmine.named-data.net/projects/nfd/wiki/Management for explanations
- * of the various protocols used.
+ * <a href="http://redmine.named-data.net/projects/nfd/wiki/Management">http://redmine.named-data.net/projects/nfd/wiki/Management</a>
+ * for explanations of the various protocols used.
  *
  * @author Andrew Brown <andrew.brown@intel.com>
  */
@@ -127,8 +127,8 @@
 
   /**
    * Helper method to register a new face on the forwarder; as mentioned at
-   * http://named-data.net/doc/NFD/current/manpages/nfdc.html, this is more for
-   * debugging; use 'register' instead
+   * <a href="http://named-data.net/doc/NFD/current/manpages/nfdc.html">http://named-data.net/doc/NFD/current/manpages/nfdc.html</a>,
+   * this is more for debugging; use 'register' instead
    *
    * @param forwarder Only a localhost Face
    * @param faceId
@@ -191,7 +191,7 @@
 
   /**
    * Enable a local control feature on the given forwarder. See
-   * http://redmine.named-data.net/projects/nfd/wiki/FaceMgmt#Enable-a-LocalControlHeader-feature
+   * <a href="http://redmine.named-data.net/projects/nfd/wiki/FaceMgmt#Enable-a-LocalControlHeader-feature">http://redmine.named-data.net/projects/nfd/wiki/FaceMgmt#Enable-a-LocalControlHeader-feature</a>
    *
    * @param forwarder
    * @param header
@@ -210,7 +210,7 @@
 
   /**
    * Disable a local control feature on the given forwarder. See
-   * http://redmine.named-data.net/projects/nfd/wiki/FaceMgmt#Disable-a-LocalControlHeader-feature
+   * <a href="http://redmine.named-data.net/projects/nfd/wiki/FaceMgmt#Disable-a-LocalControlHeader-feature">http://redmine.named-data.net/projects/nfd/wiki/FaceMgmt#Disable-a-LocalControlHeader-feature</a>
    *
    * @param forwarder
    * @param header
@@ -229,11 +229,12 @@
 
   /**
    * Register a route on the forwarder; see
-   * http://named-data.net/doc/NFD/current/manpages/nfdc.html for command-line
-   * usage and http://redmine.named-data.net/projects/nfd/wiki/RibMgmt for
-   * protocol documentation. Ensure the forwarding face is on the local machine
-   * (management requests are to /localhost/...) and that command signing has
-   * been set up (e.g. forwarder.setCommandSigningInfo()).
+   * <a href="http://named-data.net/doc/NFD/current/manpages/nfdc.html">http://named-data.net/doc/NFD/current/manpages/nfdc.html</a>
+   * for command-line usage and
+   * <a href="http://redmine.named-data.net/projects/nfd/wiki/RibMgmt">http://redmine.named-data.net/projects/nfd/wiki/RibMgmt</a>
+   * for protocol documentation. Ensure the forwarding face is on the local
+   * machine (management requests are to /localhost/...) and that command
+   * signing has been set up (e.g. forwarder.setCommandSigningInfo()).
    *
    * @param forwarder Only a localhost Face
    * @param controlParameters
@@ -295,11 +296,12 @@
 
   /**
    * Unregister a route on a forwarder; see
-   * http://named-data.net/doc/NFD/current/manpages/nfdc.html for command-line
-   * usage and http://redmine.named-data.net/projects/nfd/wiki/RibMgmt for
-   * protocol documentation. Ensure the forwarding face is on the local machine
-   * (management requests are to /localhost/...) and that command signing has
-   * been set up (e.g. forwarder.setCommandSigningInfo()
+   * <a href="http://named-data.net/doc/NFD/current/manpages/nfdc.html">http://named-data.net/doc/NFD/current/manpages/nfdc.html</a>
+   * for command-line usage and
+   * <a href="http://redmine.named-data.net/projects/nfd/wiki/RibMgmt">http://redmine.named-data.net/projects/nfd/wiki/RibMgmt</a>
+   * for protocol documentation. Ensure the forwarding face is on the local
+   * machine (management requests are to /localhost/...) and that command
+   * signing has been set up (e.g. forwarder.setCommandSigningInfo()
    *
    * @param forwarder
    * @param controlParameters
@@ -316,11 +318,12 @@
 
   /**
    * Unregister a route on a forwarder; see
-   * http://named-data.net/doc/NFD/current/manpages/nfdc.html for command-line
-   * usage and http://redmine.named-data.net/projects/nfd/wiki/RibMgmt for
-   * protocol documentation. Ensure the forwarding face is on the local machine
-   * (management requests are to /localhost/...) and that command signing has
-   * been set up (e.g. forwarder.setCommandSigningInfo()
+   * <a href="http://named-data.net/doc/NFD/current/manpages/nfdc.html">http://named-data.net/doc/NFD/current/manpages/nfdc.html</a>
+   * for command-line usage and
+   * <a href="http://redmine.named-data.net/projects/nfd/wiki/RibMgmt">http://redmine.named-data.net/projects/nfd/wiki/RibMgmt</a>
+   * for protocol documentation. Ensure the forwarding face is on the local
+   * machine (management requests are to /localhost/...) and that command
+   * signing has been set up (e.g. forwarder.setCommandSigningInfo()
    *
    * @param forwarder
    * @param route
@@ -337,11 +340,12 @@
 
   /**
    * Unregister a route on a forwarder; see
-   * http://named-data.net/doc/NFD/current/manpages/nfdc.html for command-line
-   * usage and http://redmine.named-data.net/projects/nfd/wiki/RibMgmt for
-   * protocol documentation. Ensure the forwarding face is on the local machine
-   * (management requests are to /localhost/...) and that command signing has
-   * been set up (e.g. forwarder.setCommandSigningInfo()
+   * <a href="http://named-data.net/doc/NFD/current/manpages/nfdc.html">http://named-data.net/doc/NFD/current/manpages/nfdc.html</a>
+   * for command-line usage and
+   * <a href="http://redmine.named-data.net/projects/nfd/wiki/RibMgmt">http://redmine.named-data.net/projects/nfd/wiki/RibMgmt</a>
+   * for protocol documentation. Ensure the forwarding face is on the local
+   * machine (management requests are to /localhost/...) and that command
+   * signing has been set up (e.g. forwarder.setCommandSigningInfo()
    *
    * @param forwarder
    * @param route
@@ -360,11 +364,12 @@
 
   /**
    * Unregister a route on a forwarder; see
-   * http://named-data.net/doc/NFD/current/manpages/nfdc.html for command-line
-   * usage and http://redmine.named-data.net/projects/nfd/wiki/RibMgmt for
-   * protocol documentation. Ensure the forwarding face is on the local machine
-   * (management requests are to /localhost/...) and that command signing has
-   * been set up (e.g. forwarder.setCommandSigningInfo()
+   * <a href="http://named-data.net/doc/NFD/current/manpages/nfdc.html">http://named-data.net/doc/NFD/current/manpages/nfdc.html</a>
+   * for command-line usage and
+   * <a href="http://redmine.named-data.net/projects/nfd/wiki/RibMgmt">http://redmine.named-data.net/projects/nfd/wiki/RibMgmt</a>
+   * for protocol documentation. Ensure the forwarding face is on the local
+   * machine (management requests are to /localhost/...) and that command
+   * signing has been set up (e.g. forwarder.setCommandSigningInfo()
    *
    * @param forwarder
    * @param route
@@ -390,8 +395,9 @@
 
   /**
    * Set a strategy on the forwarder; see
-   * http://named-data.net/doc/NFD/current/manpages/nfdc.html for command-line
-   * usage and http://redmine.named-data.net/projects/nfd/wiki/StrategyChoice
+   * <a href="http://named-data.net/doc/NFD/current/manpages/nfdc.html">http://named-data.net/doc/NFD/current/manpages/nfdc.html</a>
+   * for command-line usage and
+   * <a href="http://redmine.named-data.net/projects/nfd/wiki/StrategyChoice">http://redmine.named-data.net/projects/nfd/wiki/StrategyChoice</a>
    * for protocol documentation. Ensure the forwarding face is on the local
    * machine (management requests are to /localhost/...) and that command
    * signing has been set up (e.g. forwarder.setCommandSigningInfo()).
@@ -416,7 +422,7 @@
   /**
    * Build an interest to retrieve a segmented data set from the NFD; for
    * details on the DataSet, see
-   * http://redmine.named-data.net/projects/nfd/wiki/StatusDataset
+   * <a href="http://redmine.named-data.net/projects/nfd/wiki/StatusDataset">http://redmine.named-data.net/projects/nfd/wiki/StatusDataset</a>
    *
    * @param forwarder
    * @param datasetName
@@ -425,7 +431,7 @@
    * @throws ManagementException
    */
   public static Data retrieveDataSet(Face forwarder, Name datasetName) throws IOException, ManagementException {
-    // build management Interest packet; see http://redmine.named-data.net/projects/nfd/wiki/StatusDataset
+    // build management Interest packet; see <a href="http://redmine.named-data.net/projects/nfd/wiki/StatusDataset">http://redmine.named-data.net/projects/nfd/wiki/StatusDataset</a>
     Interest interest = new Interest(datasetName);
     interest.setMustBeFresh(true);
     interest.setChildSelector(Interest.CHILD_SELECTOR_RIGHT);
@@ -438,7 +444,7 @@
     if (data.getContent().buf().get(0) == ControlResponse.TLV_CONTROL_RESPONSE) {
       throw ManagementException.fromResponse(data.getContent());
     }
-    
+
     return data;
   }
 
@@ -451,8 +457,8 @@
    *
    * @param forwarder Only a localhost Face, command signing info must be set
    * @param interest As described at
-   * http://redmine.named-data.net/projects/nfd/wiki/ControlCommand, the
-   * requested interest must have encoded ControlParameters appended to the
+   * <a href="http://redmine.named-data.net/projects/nfd/wiki/ControlCommand,">http://redmine.named-data.net/projects/nfd/wiki/ControlCommand,</a>
+   * the requested interest must have encoded ControlParameters appended to the
    * interest name
    * @return
    * @throws java.io.IOException
diff --git a/src/main/java/com/intel/jndn/management/types/ControlResponse.java b/src/main/java/com/intel/jndn/management/types/ControlResponse.java
index 5c87fe7..5514244 100644
--- a/src/main/java/com/intel/jndn/management/types/ControlResponse.java
+++ b/src/main/java/com/intel/jndn/management/types/ControlResponse.java
@@ -27,7 +27,7 @@
 /**
  * Represent a ControlResponse, a Data packet sent in response to a
  * ControlCommand to the NFD, see
- * http://redmine.named-data.net/projects/nfd/wiki/ControlCommand
+ * <a href="http://redmine.named-data.net/projects/nfd/wiki/ControlCommand">http://redmine.named-data.net/projects/nfd/wiki/ControlCommand</a>
  *
  * @author Andrew Brown <andrew.brown@intel.com>
  */
@@ -35,7 +35,7 @@
 
   /**
    * Use TLV codes from jndn.encoding.tlv.Tlv.java See
-   * http://redmine.named-data.net/projects/nfd/wiki/ControlCommand
+   * <a href="http://redmine.named-data.net/projects/nfd/wiki/ControlCommand">http://redmine.named-data.net/projects/nfd/wiki/ControlCommand</a>
    */
   public final static int TLV_CONTROL_RESPONSE = 101;
   public final static int TLV_CONTROL_RESPONSE_STATUS_CODE = 102;
diff --git a/src/main/java/com/intel/jndn/management/types/FacePersistency.java b/src/main/java/com/intel/jndn/management/types/FacePersistency.java
index 084c8c5..d294fcb 100644
--- a/src/main/java/com/intel/jndn/management/types/FacePersistency.java
+++ b/src/main/java/com/intel/jndn/management/types/FacePersistency.java
@@ -14,8 +14,8 @@
 package com.intel.jndn.management.types;
 
 /**
- * Indicate whether the face is persistent; used by FaceStatus See
- * http://redmine.named-data.net/projects/nfd/widi/FaceMgmt
+ * Indicate whether the face is persistent; used by FaceStatus. See
+ * <a href="http://redmine.named-data.net/projects/nfd/widi/FaceMgmt">http://redmine.named-data.net/projects/nfd/widi/FaceMgmt</a>
  *
  * @author Andrew Brown <andrew.brown@intel.com>
  */
diff --git a/src/main/java/com/intel/jndn/management/types/FaceScope.java b/src/main/java/com/intel/jndn/management/types/FaceScope.java
index c933b24..bcba855 100644
--- a/src/main/java/com/intel/jndn/management/types/FaceScope.java
+++ b/src/main/java/com/intel/jndn/management/types/FaceScope.java
@@ -15,7 +15,8 @@
 
 /**
  * Indicate whether the face is local for scope control purposes; used by
- * FaceStatus See http://redmine.named-data.net/projects/nfd/widi/FaceMgmt
+ * FaceStatus See
+ * <a href="http://redmine.named-data.net/projects/nfd/widi/FaceMgmt">http://redmine.named-data.net/projects/nfd/widi/FaceMgmt</a>
  *
  * @author andrew
  */
diff --git a/src/main/java/com/intel/jndn/management/types/FaceStatus.java b/src/main/java/com/intel/jndn/management/types/FaceStatus.java
index b4fec48..88dceaf 100644
--- a/src/main/java/com/intel/jndn/management/types/FaceStatus.java
+++ b/src/main/java/com/intel/jndn/management/types/FaceStatus.java
@@ -21,21 +21,24 @@
 
 /**
  * Represent a FaceStatus object from /localhost/nfd/faces/list; see
- * http://redmine.named-data.net/projects/nfd/wiki/FaceMgmt for details
+ * <a href="http://redmine.named-data.net/projects/nfd/wiki/FaceMgmt">http://redmine.named-data.net/projects/nfd/wiki/FaceMgmt</a>
+ * for details
  *
  * @author Andrew Brown <andrew.brown@intel.com>
  */
 public class FaceStatus implements Decodable {
 
   /**
-   * Spec from http://redmine.named-data.net/projects/nfd/wiki/ControlCommand
+   * Spec from
+   * <a href="http://redmine.named-data.net/projects/nfd/wiki/ControlCommand">http://redmine.named-data.net/projects/nfd/wiki/ControlCommand</a>
    */
   public static final int TLV_FACE_ID = 105;
   public static final int TLV_URI = 114;
   public static final int TLV_EXPIRATION_PERIOD = 109;
 
   /**
-   * Spec from http://redmine.named-data.net/projects/nfd/widi/FaceMgmt
+   * Spec from
+   * <a href="http://redmine.named-data.net/projects/nfd/widi/FaceMgmt">http://redmine.named-data.net/projects/nfd/widi/FaceMgmt</a>
    */
   public static final int TLV_FACE_STATUS = 128;
   public static final int TLV_LOCAL_URI = 129;
diff --git a/src/main/java/com/intel/jndn/management/types/FibEntry.java b/src/main/java/com/intel/jndn/management/types/FibEntry.java
index a4a5ff4..8c74636 100644
--- a/src/main/java/com/intel/jndn/management/types/FibEntry.java
+++ b/src/main/java/com/intel/jndn/management/types/FibEntry.java
@@ -25,7 +25,7 @@
 
 /**
  * Represent a FibEntry returned from /localhost/nfd/fib/list; see
- * http://redmine.named-data.net/projects/nfd/wiki/FibMgmt#FIB-Dataset
+ * <a href="http://redmine.named-data.net/projects/nfd/wiki/FibMgmt#FIB-Dataset">http://redmine.named-data.net/projects/nfd/wiki/FibMgmt#FIB-Dataset</a>
  *
  * @author Andrew Brown <andrew.brown@intel.com>
  */
diff --git a/src/main/java/com/intel/jndn/management/types/LinkType.java b/src/main/java/com/intel/jndn/management/types/LinkType.java
index 4db9877..a0f517c 100644
--- a/src/main/java/com/intel/jndn/management/types/LinkType.java
+++ b/src/main/java/com/intel/jndn/management/types/LinkType.java
@@ -15,7 +15,7 @@
 
 /**
  * Indicate the type of communication link; used by FaceStatus See
- * http://redmine.named-data.net/projects/nfd/widi/FaceMgmt
+ * <a href="http://redmine.named-data.net/projects/nfd/widi/FaceMgmt">http://redmine.named-data.net/projects/nfd/widi/FaceMgmt</a>
  *
  * @author Andrew Brown <andrew.brown@intel.com>
  */
diff --git a/src/main/java/com/intel/jndn/management/types/LocalControlHeader.java b/src/main/java/com/intel/jndn/management/types/LocalControlHeader.java
index 4a2aee2..5ca393f 100644
--- a/src/main/java/com/intel/jndn/management/types/LocalControlHeader.java
+++ b/src/main/java/com/intel/jndn/management/types/LocalControlHeader.java
@@ -15,7 +15,7 @@
 
 /**
  * Define constants for local control header options. See
- * http://redmine.named-data.net/projects/nfd/wiki/FaceMgmt#Enable-a-LocalControlHeader-feature
+ * <a href="http://redmine.named-data.net/projects/nfd/wiki/FaceMgmt#Enable-a-LocalControlHeader-feature">http://redmine.named-data.net/projects/nfd/wiki/FaceMgmt#Enable-a-LocalControlHeader-feature</a>
  *
  * @author Andrew Brown <andrew.brown@intel.com>
  */
diff --git a/src/main/java/com/intel/jndn/management/types/NextHopRecord.java b/src/main/java/com/intel/jndn/management/types/NextHopRecord.java
index f3e4dcc..3b40104 100644
--- a/src/main/java/com/intel/jndn/management/types/NextHopRecord.java
+++ b/src/main/java/com/intel/jndn/management/types/NextHopRecord.java
@@ -22,7 +22,7 @@
 
 /**
  * Represent a NextHopRecord in a FibEntry; see
- * http://redmine.named-data.net/projects/nfd/wiki/FibMgmt#FIB-Dataset
+ * <a href="http://redmine.named-data.net/projects/nfd/wiki/FibMgmt#FIB-Dataset">http://redmine.named-data.net/projects/nfd/wiki/FibMgmt#FIB-Dataset</a>
  *
  * @author Andrew Brown <andrew.brown@intel.com>
  */
diff --git a/src/main/java/com/intel/jndn/management/types/RibEntry.java b/src/main/java/com/intel/jndn/management/types/RibEntry.java
index 5f89a85..705352c 100644
--- a/src/main/java/com/intel/jndn/management/types/RibEntry.java
+++ b/src/main/java/com/intel/jndn/management/types/RibEntry.java
@@ -25,8 +25,8 @@
 
 /**
  * Represent a entry in the RIB; see
- * http://redmine.named-data.net/projects/nfd/wiki/RibMgmt#RIB-Dataset for
- * details
+ * <a href="http://redmine.named-data.net/projects/nfd/wiki/RibMgmt#RIB-Dataset">http://redmine.named-data.net/projects/nfd/wiki/RibMgmt#RIB-Dataset</a>
+ * for details
  *
  * @author Andrew Brown <andrew.brown@intel.com>
  */
@@ -34,7 +34,7 @@
 
   /**
    * TLV type, see
-   * http://redmine.named-data.net/projects/nfd/wiki/RibMgmt#TLV-TYPE-assignments
+   * <a href="http://redmine.named-data.net/projects/nfd/wiki/RibMgmt#TLV-TYPE-assignments">http://redmine.named-data.net/projects/nfd/wiki/RibMgmt#TLV-TYPE-assignments</a>
    */
   public final static int TLV_RIB_ENTRY = 128;
 
diff --git a/src/main/java/com/intel/jndn/management/types/Route.java b/src/main/java/com/intel/jndn/management/types/Route.java
index 6fac7e6..b4badf0 100644
--- a/src/main/java/com/intel/jndn/management/types/Route.java
+++ b/src/main/java/com/intel/jndn/management/types/Route.java
@@ -23,8 +23,8 @@
 
 /**
  * Represent a Route object from /localhost/nfd/rib/list; see
- * http://redmine.named-data.net/projects/nfd/wiki/RibMgmt#RIB-Dataset for
- * details.
+ * <a href="http://redmine.named-data.net/projects/nfd/wiki/RibMgmt#RIB-Dataset">http://redmine.named-data.net/projects/nfd/wiki/RibMgmt#RIB-Dataset</a>
+ * for details.
  *
  * @author Andrew Brown <andrew.brown@intel.com>
  */
@@ -32,7 +32,7 @@
 
   /**
    * TLV type, see
-   * http://redmine.named-data.net/projects/nfd/wiki/RibMgmt#TLV-TYPE-assignments
+   * <a href="http://redmine.named-data.net/projects/nfd/wiki/RibMgmt#TLV-TYPE-assignments">http://redmine.named-data.net/projects/nfd/wiki/RibMgmt#TLV-TYPE-assignments</a>
    */
   public final static int TLV_ROUTE = 129;
 
diff --git a/src/main/java/com/intel/jndn/management/types/StatusDataset.java b/src/main/java/com/intel/jndn/management/types/StatusDataset.java
index d5ef90c..0cc42c8 100644
--- a/src/main/java/com/intel/jndn/management/types/StatusDataset.java
+++ b/src/main/java/com/intel/jndn/management/types/StatusDataset.java
@@ -22,7 +22,7 @@
 
 /**
  * Helper class to handle StatusDatasets, see
- * http://redmine.named-data.net/projects/nfd/wiki/StatusDataset
+ * <a href="http://redmine.named-data.net/projects/nfd/wiki/StatusDataset">http://redmine.named-data.net/projects/nfd/wiki/StatusDataset</a>
  *
  * @author Andrew Brown <andrew.brown@intel.com>
  */
@@ -30,7 +30,7 @@
 
   /**
    * Decode multiple status entries as part of a StatusDataset, see
-   * http://redmine.named-data.net/projects/nfd/wiki/StatusDataset
+   * <a href="http://redmine.named-data.net/projects/nfd/wiki/StatusDataset">http://redmine.named-data.net/projects/nfd/wiki/StatusDataset</a>
    *
    * @param <T>
    * @param statusDataset
diff --git a/src/test/java/com/intel/jndn/management/FaceStatusTest.java b/src/test/java/com/intel/jndn/management/FaceStatusTest.java
index 5a587a6..c81d9b2 100644
--- a/src/test/java/com/intel/jndn/management/FaceStatusTest.java
+++ b/src/test/java/com/intel/jndn/management/FaceStatusTest.java
@@ -124,7 +124,7 @@
     else {
       Face forwarder = new Face("localhost");
 
-      // build management Interest packet; see http://redmine.named-data.net/projects/nfd/wiki/StatusDataset
+      // build management Interest packet; see <a href="http://redmine.named-data.net/projects/nfd/wiki/StatusDataset">http://redmine.named-data.net/projects/nfd/wiki/StatusDataset</a>
       Interest interest = new Interest(new Name("/localhost/nfd/faces/list"));
       interest.setMustBeFresh(true);
       interest.setChildSelector(Interest.CHILD_SELECTOR_RIGHT);
@@ -145,7 +145,7 @@
 
   /**
    * Convert hex string to bytes; special thanks to
-   * http://stackoverflow.com/questions/140131
+   * <a href="http://stackoverflow.com/questions/140131">http://stackoverflow.com/questions/140131</a>
    *
    * @param s
    * @return
diff --git a/src/test/java/com/intel/jndn/management/FibEntryTest.java b/src/test/java/com/intel/jndn/management/FibEntryTest.java
index 1cd5897..4f25227 100644
--- a/src/test/java/com/intel/jndn/management/FibEntryTest.java
+++ b/src/test/java/com/intel/jndn/management/FibEntryTest.java
@@ -72,7 +72,7 @@
   public static void main(String[] args) throws Exception {
     Face forwarder = new Face("localhost");
 
-    // build management Interest packet; see http://redmine.named-data.net/projects/nfd/wiki/StatusDataset
+    // build management Interest packet; see <a href="http://redmine.named-data.net/projects/nfd/wiki/StatusDataset">http://redmine.named-data.net/projects/nfd/wiki/StatusDataset</a>
     Interest interest = new Interest(new Name("/localhost/nfd/fib/list"));
     interest.setMustBeFresh(true);
     interest.setChildSelector(Interest.CHILD_SELECTOR_RIGHT);
diff --git a/src/test/java/com/intel/jndn/management/IntegrationSuite.java b/src/test/java/com/intel/jndn/management/IntegrationSuite.java
index 5f32711..c328e95 100644
--- a/src/test/java/com/intel/jndn/management/IntegrationSuite.java
+++ b/src/test/java/com/intel/jndn/management/IntegrationSuite.java
@@ -50,12 +50,12 @@
 
     // create a new route
     NFD.register(face, "udp4://127.0.0.1:56363", new Name("/my/test/route"), 999);
-    
+
     // check that route is created
     boolean found = false;
-    for(RibEntry route : NFD.getRouteList(face)){
+    for (RibEntry route : NFD.getRouteList(face)) {
       logger.info("Found route: " + route.getName().toUri());
-      if(route.getName().equals(new Name("/my/test/route"))){
+      if (route.getName().equals(new Name("/my/test/route"))) {
         found = true;
       }
     }
diff --git a/src/test/java/com/intel/jndn/management/LocalControlHeaderTest.java b/src/test/java/com/intel/jndn/management/LocalControlHeaderTest.java
index 7686616..400d10c 100644
--- a/src/test/java/com/intel/jndn/management/LocalControlHeaderTest.java
+++ b/src/test/java/com/intel/jndn/management/LocalControlHeaderTest.java
@@ -47,7 +47,7 @@
 
     // enable incoming face ID header
     NFD.enableLocalControlHeader(forwarder, LocalControlHeader.INCOMING_FACE_ID);
-    
+
     // use and verify
     Data data = SimpleClient.getDefault().getSync(forwarder, new Name("/localhost/nfd"));
     long faceId = data.getIncomingFaceId();
diff --git a/src/test/java/com/intel/jndn/management/RibEntryTest.java b/src/test/java/com/intel/jndn/management/RibEntryTest.java
index 8a63abb..b0b757c 100644
--- a/src/test/java/com/intel/jndn/management/RibEntryTest.java
+++ b/src/test/java/com/intel/jndn/management/RibEntryTest.java
@@ -74,7 +74,7 @@
   public static void main(String[] args) throws Exception {
     Face forwarder = new Face("localhost");
 
-    // build management Interest packet; see http://redmine.named-data.net/projects/nfd/wiki/StatusDataset
+    // build management Interest packet; see <a href="http://redmine.named-data.net/projects/nfd/wiki/StatusDataset">http://redmine.named-data.net/projects/nfd/wiki/StatusDataset</a>
     Interest interest = new Interest(new Name("/localhost/nfd/rib/list"));
     interest.setMustBeFresh(true);
     interest.setChildSelector(Interest.CHILD_SELECTOR_RIGHT);
