Add Checkstyle to enforce codestyle rules

Rules are based on Sun style with a few minor modifications

Change-Id: If9e772105053c67550e4f206024fea26b65e611b
diff --git a/build.gradle b/build.gradle
index aed58db..88287a6 100644
--- a/build.gradle
+++ b/build.gradle
@@ -7,7 +7,7 @@
 }
 
 plugins {
-  id "org.sonarqube" version "1.2"
+  id 'org.sonarqube' version '1.2'
   id 'net.saliman.cobertura' version '2.3.0'
 }
 
@@ -15,6 +15,7 @@
 apply plugin: 'maven'
 apply plugin: 'signing'
 apply plugin: 'maven-publish'
+apply plugin: 'checkstyle'
 
 group = 'com.intel.jndn.management'
 version = '1.0.1-SNAPSHOT'
@@ -49,8 +50,9 @@
 }
 
 configurations {
-    integrationTestCompile.extendsFrom testCompile
-    integrationTestRuntime.extendsFrom testRuntime
+  checkstyleConfig
+  integrationTestCompile.extendsFrom testCompile
+  integrationTestRuntime.extendsFrom testRuntime
 }
 
 dependencies {
@@ -59,6 +61,8 @@
   testCompile 'junit:junit:4.12'
   testCompile 'com.intel.jndn.mock:jndn-mock:1.0.1'
   testRuntime 'org.slf4j:slf4j-api:1.7.16'
+
+  checkstyleConfig "com.puppycrawl.tools:checkstyle:6.15"
 }
 
 task javadocJar(type: Jar) {
@@ -87,6 +91,19 @@
   outputs.upToDateWhen { false }
 }
 
+tasks.withType(Checkstyle) {
+  checkstyleClasspath = project.configurations.checkstyleConfig
+  checkstyleMain {
+    exclude 'com/intel/jndn/management/enums/NfdTlv.java'
+  }
+  checkstyleTest {
+    configFile file('config/checkstyle/checkstyle-test.xml')
+  }
+  checkstyleIntegrationTest {
+    configFile file('config/checkstyle/checkstyle-test.xml')
+  }
+}
+
 if (JavaVersion.current().isJava8Compatible()) {
   allprojects {
     tasks.withType(Javadoc) {
diff --git a/config/checkstyle/checkstyle-test.xml b/config/checkstyle/checkstyle-test.xml
new file mode 100644
index 0000000..aa2a970
--- /dev/null
+++ b/config/checkstyle/checkstyle-test.xml
@@ -0,0 +1,182 @@
+<?xml version="1.0"?>
+<!DOCTYPE module PUBLIC
+          "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
+          "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
+
+<!--
+
+  Checkstyle configuration that checks the sun coding conventions from:
+
+    - the Java Language Specification at
+      http://java.sun.com/docs/books/jls/second_edition/html/index.html
+
+    - the Sun Code Conventions at http://java.sun.com/docs/codeconv/
+
+    - the Javadoc guidelines at
+      http://java.sun.com/j2se/javadoc/writingdoccomments/index.html
+
+    - the JDK Api documentation http://java.sun.com/j2se/docs/api/index.html
+
+    - some best practices
+
+  Checkstyle is very configurable. Be sure to read the documentation at
+  http://checkstyle.sf.net (or in your downloaded distribution).
+
+  Most Checks are configurable, be sure to consult the documentation.
+
+  To completely disable a check, just comment it out or delete it from the file.
+
+  Finally, it is worth reading the documentation.
+
+-->
+
+<module name="Checker">
+    <!--
+        If you set the basedir property below, then all reported file
+        names will be relative to the specified directory. See
+        http://checkstyle.sourceforge.net/5.x/config.html#Checker
+
+        <property name="basedir" value="${basedir}"/>
+    -->
+
+    <property name="fileExtensions" value="java, properties, xml"/>
+
+    <!-- Checks that a package-info.java file exists for each package.     -->
+    <!-- See http://checkstyle.sf.net/config_javadoc.html#JavadocPackage -->
+    <!--<module name="JavadocPackage"/>-->
+
+    <!-- Checks whether files end with a new line.                        -->
+    <!-- See http://checkstyle.sf.net/config_misc.html#NewlineAtEndOfFile -->
+    <module name="NewlineAtEndOfFile"/>
+
+    <!-- Checks that property files contain the same keys.         -->
+    <!-- See http://checkstyle.sf.net/config_misc.html#Translation -->
+    <module name="Translation"/>
+
+    <!-- Checks for Size Violations.                    -->
+    <!-- See http://checkstyle.sf.net/config_sizes.html -->
+    <module name="FileLength"/>
+
+    <!-- Checks for whitespace                               -->
+    <!-- See http://checkstyle.sf.net/config_whitespace.html -->
+    <module name="FileTabCharacter"/>
+
+    <!-- Miscellaneous other checks.                   -->
+    <!-- See http://checkstyle.sf.net/config_misc.html -->
+    <module name="RegexpSingleline">
+       <property name="format" value="\s+$"/>
+       <property name="minimum" value="0"/>
+       <property name="maximum" value="0"/>
+       <property name="message" value="Line has trailing spaces."/>
+    </module>
+
+    <!-- Checks for Headers                                -->
+    <!-- See http://checkstyle.sf.net/config_header.html   -->
+    <!-- <module name="Header"> -->
+    <!--   <property name="headerFile" value="${checkstyle.header.file}"/> -->
+    <!--   <property name="fileExtensions" value="java"/> -->
+    <!-- </module> -->
+
+    <module name="TreeWalker">
+
+        <!-- Checks for Javadoc comments.                     -->
+        <!-- See http://checkstyle.sf.net/config_javadoc.html -->
+        <!--<module name="JavadocMethod">-->
+            <!--<property name="excludeScope" value="private"/>-->
+        <!--</module>-->
+        <module name="JavadocType">
+            <property name="excludeScope" value="private"/>
+        </module>
+        <module name="JavadocVariable">
+            <property name="excludeScope" value="private"/>
+        </module>
+        <module name="JavadocStyle"/>
+
+        <!-- Checks for Naming Conventions.                  -->
+        <!-- See http://checkstyle.sf.net/config_naming.html -->
+        <module name="ConstantName"/>
+        <module name="LocalFinalVariableName"/>
+        <module name="LocalVariableName"/>
+        <module name="MemberName"/>
+        <module name="MethodName"/>
+        <module name="PackageName"/>
+        <module name="ParameterName"/>
+        <module name="StaticVariableName"/>
+        <module name="TypeName"/>
+
+        <!-- Checks for imports                              -->
+        <!-- See http://checkstyle.sf.net/config_import.html -->
+        <module name="AvoidStarImport"/>
+        <module name="IllegalImport"/> <!-- defaults to sun.* packages -->
+        <module name="RedundantImport"/>
+        <module name="UnusedImports">
+            <property name="processJavadoc" value="false"/>
+        </module>
+
+        <!-- Checks for Size Violations.                    -->
+        <!-- See http://checkstyle.sf.net/config_sizes.html -->
+        <module name="LineLength">
+            <property name="max" value="120"/>
+        </module>
+        <module name="MethodLength"/>
+        <module name="ParameterNumber"/>
+
+        <!-- Checks for whitespace                               -->
+        <!-- See http://checkstyle.sf.net/config_whitespace.html -->
+        <module name="EmptyForIteratorPad"/>
+        <module name="GenericWhitespace"/>
+        <module name="MethodParamPad"/>
+        <module name="NoWhitespaceAfter"/>
+        <module name="NoWhitespaceBefore"/>
+        <module name="OperatorWrap">
+            <property name="option" value="eol"/>
+        </module>
+        <module name="ParenPad"/>
+        <module name="TypecastParenPad"/>
+        <module name="WhitespaceAfter"/>
+        <module name="WhitespaceAround"/>
+
+        <!-- Modifier Checks                                    -->
+        <!-- See http://checkstyle.sf.net/config_modifiers.html -->
+        <module name="ModifierOrder"/>
+        <module name="RedundantModifier"/>
+
+        <!-- Checks for blocks. You know, those {}'s         -->
+        <!-- See http://checkstyle.sf.net/config_blocks.html -->
+        <module name="AvoidNestedBlocks"/>
+        <module name="EmptyBlock"/>
+        <module name="LeftCurly"/>
+        <module name="NeedBraces"/>
+        <module name="RightCurly"/>
+
+        <!-- Checks for common coding problems               -->
+        <!-- See http://checkstyle.sf.net/config_coding.html -->
+        <module name="AvoidInlineConditionals"/>
+        <module name="EmptyStatement"/>
+        <module name="EqualsHashCode"/>
+        <!-- <module name="HiddenField"/> -->
+        <module name="IllegalInstantiation"/>
+        <module name="InnerAssignment"/>
+        <!--<module name="MagicNumber"/>-->
+        <module name="MissingSwitchDefault"/>
+        <module name="SimplifyBooleanExpression"/>
+        <module name="SimplifyBooleanReturn"/>
+
+        <!-- Checks for class design                         -->
+        <!-- See http://checkstyle.sf.net/config_design.html -->
+        <!--<module name="DesignForExtension"/>-->
+        <module name="FinalClass"/>
+        <module name="HideUtilityClassConstructor"/>
+        <module name="InterfaceIsType"/>
+        <module name="VisibilityModifier"/>
+
+        <!-- Miscellaneous other checks.                   -->
+        <!-- See http://checkstyle.sf.net/config_misc.html -->
+        <module name="ArrayTypeStyle"/>
+        <module name="FinalParameters"/>
+        <!--<module name="TodoComment"/>-->
+        <module name="UpperEll"/>
+
+    </module>
+
+</module>
diff --git a/config/checkstyle/checkstyle.xml b/config/checkstyle/checkstyle.xml
new file mode 100644
index 0000000..bed9ee2
--- /dev/null
+++ b/config/checkstyle/checkstyle.xml
@@ -0,0 +1,182 @@
+<?xml version="1.0"?>
+<!DOCTYPE module PUBLIC
+          "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
+          "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
+
+<!--
+
+  Checkstyle configuration that checks the sun coding conventions from:
+
+    - the Java Language Specification at
+      http://java.sun.com/docs/books/jls/second_edition/html/index.html
+
+    - the Sun Code Conventions at http://java.sun.com/docs/codeconv/
+
+    - the Javadoc guidelines at
+      http://java.sun.com/j2se/javadoc/writingdoccomments/index.html
+
+    - the JDK Api documentation http://java.sun.com/j2se/docs/api/index.html
+
+    - some best practices
+
+  Checkstyle is very configurable. Be sure to read the documentation at
+  http://checkstyle.sf.net (or in your downloaded distribution).
+
+  Most Checks are configurable, be sure to consult the documentation.
+
+  To completely disable a check, just comment it out or delete it from the file.
+
+  Finally, it is worth reading the documentation.
+
+-->
+
+<module name="Checker">
+    <!--
+        If you set the basedir property below, then all reported file
+        names will be relative to the specified directory. See
+        http://checkstyle.sourceforge.net/5.x/config.html#Checker
+
+        <property name="basedir" value="${basedir}"/>
+    -->
+
+    <property name="fileExtensions" value="java, properties, xml"/>
+
+    <!-- Checks that a package-info.java file exists for each package.     -->
+    <!-- See http://checkstyle.sf.net/config_javadoc.html#JavadocPackage -->
+    <module name="JavadocPackage"/>
+
+    <!-- Checks whether files end with a new line.                        -->
+    <!-- See http://checkstyle.sf.net/config_misc.html#NewlineAtEndOfFile -->
+    <module name="NewlineAtEndOfFile"/>
+
+    <!-- Checks that property files contain the same keys.         -->
+    <!-- See http://checkstyle.sf.net/config_misc.html#Translation -->
+    <module name="Translation"/>
+
+    <!-- Checks for Size Violations.                    -->
+    <!-- See http://checkstyle.sf.net/config_sizes.html -->
+    <module name="FileLength"/>
+
+    <!-- Checks for whitespace                               -->
+    <!-- See http://checkstyle.sf.net/config_whitespace.html -->
+    <module name="FileTabCharacter"/>
+
+    <!-- Miscellaneous other checks.                   -->
+    <!-- See http://checkstyle.sf.net/config_misc.html -->
+    <module name="RegexpSingleline">
+       <property name="format" value="\s+$"/>
+       <property name="minimum" value="0"/>
+       <property name="maximum" value="0"/>
+       <property name="message" value="Line has trailing spaces."/>
+    </module>
+
+    <!-- Checks for Headers                                -->
+    <!-- See http://checkstyle.sf.net/config_header.html   -->
+    <!-- <module name="Header"> -->
+    <!--   <property name="headerFile" value="${checkstyle.header.file}"/> -->
+    <!--   <property name="fileExtensions" value="java"/> -->
+    <!-- </module> -->
+
+    <module name="TreeWalker">
+
+        <!-- Checks for Javadoc comments.                     -->
+        <!-- See http://checkstyle.sf.net/config_javadoc.html -->
+        <module name="JavadocMethod">
+            <property name="excludeScope" value="private"/>
+        </module>
+        <module name="JavadocType">
+            <property name="excludeScope" value="private"/>
+        </module>
+        <module name="JavadocVariable">
+            <property name="excludeScope" value="private"/>
+        </module>
+        <module name="JavadocStyle"/>
+
+        <!-- Checks for Naming Conventions.                  -->
+        <!-- See http://checkstyle.sf.net/config_naming.html -->
+        <module name="ConstantName"/>
+        <module name="LocalFinalVariableName"/>
+        <module name="LocalVariableName"/>
+        <module name="MemberName"/>
+        <module name="MethodName"/>
+        <module name="PackageName"/>
+        <module name="ParameterName"/>
+        <module name="StaticVariableName"/>
+        <module name="TypeName"/>
+
+        <!-- Checks for imports                              -->
+        <!-- See http://checkstyle.sf.net/config_import.html -->
+        <module name="AvoidStarImport"/>
+        <module name="IllegalImport"/> <!-- defaults to sun.* packages -->
+        <module name="RedundantImport"/>
+        <module name="UnusedImports">
+            <property name="processJavadoc" value="false"/>
+        </module>
+
+        <!-- Checks for Size Violations.                    -->
+        <!-- See http://checkstyle.sf.net/config_sizes.html -->
+        <module name="LineLength">
+            <property name="max" value="120"/>
+        </module>
+        <module name="MethodLength"/>
+        <module name="ParameterNumber"/>
+
+        <!-- Checks for whitespace                               -->
+        <!-- See http://checkstyle.sf.net/config_whitespace.html -->
+        <module name="EmptyForIteratorPad"/>
+        <module name="GenericWhitespace"/>
+        <module name="MethodParamPad"/>
+        <module name="NoWhitespaceAfter"/>
+        <module name="NoWhitespaceBefore"/>
+        <module name="OperatorWrap">
+            <property name="option" value="eol"/>
+        </module>
+        <module name="ParenPad"/>
+        <module name="TypecastParenPad"/>
+        <module name="WhitespaceAfter"/>
+        <module name="WhitespaceAround"/>
+
+        <!-- Modifier Checks                                    -->
+        <!-- See http://checkstyle.sf.net/config_modifiers.html -->
+        <module name="ModifierOrder"/>
+        <module name="RedundantModifier"/>
+
+        <!-- Checks for blocks. You know, those {}'s         -->
+        <!-- See http://checkstyle.sf.net/config_blocks.html -->
+        <module name="AvoidNestedBlocks"/>
+        <module name="EmptyBlock"/>
+        <module name="LeftCurly"/>
+        <module name="NeedBraces"/>
+        <module name="RightCurly"/>
+
+        <!-- Checks for common coding problems               -->
+        <!-- See http://checkstyle.sf.net/config_coding.html -->
+        <module name="AvoidInlineConditionals"/>
+        <module name="EmptyStatement"/>
+        <module name="EqualsHashCode"/>
+        <!-- <module name="HiddenField"/> -->
+        <module name="IllegalInstantiation"/>
+        <module name="InnerAssignment"/>
+        <module name="MagicNumber"/>
+        <module name="MissingSwitchDefault"/>
+        <module name="SimplifyBooleanExpression"/>
+        <module name="SimplifyBooleanReturn"/>
+
+        <!-- Checks for class design                         -->
+        <!-- See http://checkstyle.sf.net/config_design.html -->
+        <!--<module name="DesignForExtension"/>-->
+        <module name="FinalClass"/>
+        <module name="HideUtilityClassConstructor"/>
+        <module name="InterfaceIsType"/>
+        <module name="VisibilityModifier"/>
+
+        <!-- Miscellaneous other checks.                   -->
+        <!-- See http://checkstyle.sf.net/config_misc.html -->
+        <module name="ArrayTypeStyle"/>
+        <module name="FinalParameters"/>
+        <!--<module name="TodoComment"/>-->
+        <module name="UpperEll"/>
+
+    </module>
+
+</module>
diff --git a/src/main/java/com/intel/jndn/management/ManagementException.java b/src/main/java/com/intel/jndn/management/ManagementException.java
index 89a0b25..8e2edfd 100644
--- a/src/main/java/com/intel/jndn/management/ManagementException.java
+++ b/src/main/java/com/intel/jndn/management/ManagementException.java
@@ -26,23 +26,28 @@
  */
 public class ManagementException extends Exception {
   /**
-   * Constructor from the message
+   * Constructor from the message.
+   * @param message Error message
    */
-  public ManagementException(String message) {
+  public ManagementException(final String message) {
     super(message);
   }
 
   /**
-   * Constructor from the message and the cause
+   * Constructor from the message and the cause.
+   * @param message Error message
+   * @param cause Chained exception
    */
-  public ManagementException(String message, Throwable cause) {
+  public ManagementException(final String message, final Throwable cause) {
     super(message, cause);
   }
 
   /**
-   * Parse an NFD response to create a ManagementException.
+   * Create exception from NFD's ControlResponse.
+   * @param response ControlResponse from which to use status code and status text
+   * @return new instance of ManagementException
    */
-  public static ManagementException fromResponse(ControlResponse response) {
+  public static ManagementException fromResponse(final ControlResponse response) {
     String message = "Action failed, forwarder returned: " + response.getStatusCode() + " " + response.getStatusText();
     return new ManagementException(message);
   }
diff --git a/src/main/java/com/intel/jndn/management/NdnPingClient.java b/src/main/java/com/intel/jndn/management/NdnPingClient.java
index ecdaecc..95dc279 100644
--- a/src/main/java/com/intel/jndn/management/NdnPingClient.java
+++ b/src/main/java/com/intel/jndn/management/NdnPingClient.java
@@ -23,12 +23,15 @@
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-public class NdnPingClient {
+/**
+ * Simplistic checker for live connection to NFD forwarder.
+ */
+public final class NdnPingClient {
   public static final long DEFAULT_TIMEOUT = 2000;
   private static final Logger LOG = Logger.getLogger(NdnPingClient.class.getName());
 
   /**
-   * Prevent creation of NdnPingClient instances
+   * Prevent creation of NdnPingClient instances.
    */
   private NdnPingClient() {
   }
@@ -42,7 +45,7 @@
    * @param face only a localhost Face
    * @return true if successful, false otherwise
    */
-  public static boolean pingLocal(Face face) {
+  public static boolean pingLocal(final Face face) {
     return ping(face, new Name("/localhost/nfd"));
   }
 
@@ -55,7 +58,7 @@
    * @param name a known {@link Name} that the remote node will answer to
    * @return true if successful, false otherwise
    */
-  public static boolean ping(Face face, Name name) {
+  public static boolean ping(final Face face, final Name name) {
     // build interest
     Interest interest = new Interest(name);
     interest.setInterestLifetimeMilliseconds(DEFAULT_TIMEOUT);
diff --git a/src/main/java/com/intel/jndn/management/Nfdc.java b/src/main/java/com/intel/jndn/management/Nfdc.java
index ca1a52b..807ef90 100644
--- a/src/main/java/com/intel/jndn/management/Nfdc.java
+++ b/src/main/java/com/intel/jndn/management/Nfdc.java
@@ -16,16 +16,24 @@
 import com.intel.jndn.management.enums.RouteOrigin;
 import com.intel.jndn.management.helpers.FetchHelper;
 import com.intel.jndn.management.helpers.StatusDatasetHelper;
-import net.named_data.jndn.*;
 import com.intel.jndn.management.types.FaceStatus;
 import com.intel.jndn.management.types.FibEntry;
 import com.intel.jndn.management.types.ForwarderStatus;
 import com.intel.jndn.management.enums.LocalControlHeader;
 import com.intel.jndn.management.types.RibEntry;
 import com.intel.jndn.management.types.StrategyChoice;
+
 import java.io.IOException;
 import java.util.List;
 
+import net.named_data.jndn.ControlResponse;
+import net.named_data.jndn.Data;
+import net.named_data.jndn.Interest;
+import net.named_data.jndn.Name;
+import net.named_data.jndn.KeyLocator;
+import net.named_data.jndn.Face;
+import net.named_data.jndn.ControlParameters;
+import net.named_data.jndn.ForwardingFlags;
 import net.named_data.jndn.encoding.EncodingException;
 import net.named_data.jndn.security.SecurityException;
 
@@ -36,32 +44,31 @@
  *
  * @author Andrew Brown <andrew.brown@intel.com>
  */
-public class Nfdc {
+public final class Nfdc {
   private static final int OK_STATUS = 200;
 
   /////////////////////////////////////////////////////////////////////////////
 
   /**
-   * Prevent creation of Nfdc instances
+   * Prevent creation of Nfdc instances.
    */
   private Nfdc() {
   }
 
   /**
    * Retrieve the status of the given forwarder; calls /localhost/nfd/status/general
-   * which requires a local Face (all non-local packets are dropped)
+   * which requires a local Face (all non-local packets are dropped).
    *
    * @param face only a localhost Face
    * @return the forwarder status object
-   *
-   * @see <a href="http://redmine.named-data.net/projects/nfd/wiki/ForwarderStatus">ForwarderStatus</a>
    * @throws ManagementException if the network request failed or the returned status could not be decoded
+   * @see <a href="http://redmine.named-data.net/projects/nfd/wiki/ForwarderStatus">ForwarderStatus</a>
    */
-  public static ForwarderStatus getForwarderStatus(Face face) throws ManagementException {
+  public static ForwarderStatus getForwarderStatus(final Face face) throws ManagementException {
     try {
       List<Data> segments = FetchHelper.getSegmentedData(face, new Name("/localhost/nfd/status/general"));
       return new ForwarderStatus(StatusDatasetHelper.combine(segments));
-    } catch (IOException|EncodingException e) {
+    } catch (IOException | EncodingException e) {
       throw new ManagementException(e.getMessage(), e);
     }
   }
@@ -69,15 +76,14 @@
   /**
    * Retrieve a list of faces and their status from the given forwarder; calls
    * /localhost/nfd/faces/list which requires a local Face (all non-local
-   * packets are dropped)
+   * packets are dropped).
    *
    * @param face only a localhost Face
    * @return a list of face status objects
-   *
-   * @see <a href="http://redmine.named-data.net/projects/nfd/wiki/FaceMgmt">FaceManagement</a>
    * @throws ManagementException if the network request failed or if the NFD rejected the request
+   * @see <a href="http://redmine.named-data.net/projects/nfd/wiki/FaceMgmt">FaceManagement</a>
    */
-  public static List<FaceStatus> getFaceList(Face face) throws ManagementException {
+  public static List<FaceStatus> getFaceList(final Face face) throws ManagementException {
     try {
       List<Data> segments = FetchHelper.getSegmentedData(face, new Name("/localhost/nfd/faces/list"));
       return StatusDatasetHelper.wireDecode(segments, FaceStatus.class);
@@ -93,11 +99,10 @@
    *
    * @param face only a localhost Face
    * @return a list of FIB entries
-   *
-   * @see <a href="http://redmine.named-data.net/projects/nfd/wiki/FibMgmt#FIB-Dataset">FIB Dataset</a>
    * @throws ManagementException if the network request failed or if the NFD rejected the request
+   * @see <a href="http://redmine.named-data.net/projects/nfd/wiki/FibMgmt#FIB-Dataset">FIB Dataset</a>
    */
-  public static List<FibEntry> getFibList(Face face) throws ManagementException {
+  public static List<FibEntry> getFibList(final Face face) throws ManagementException {
     try {
       List<Data> segments = FetchHelper.getSegmentedData(face, new Name("/localhost/nfd/fib/list"));
       return StatusDatasetHelper.wireDecode(segments, FibEntry.class);
@@ -113,11 +118,10 @@
    *
    * @param face only a localhost Face
    * @return a list of RIB entries, i.e. routes
-   *
-   * @see <a href="http://redmine.named-data.net/projects/nfd/wiki/RibMgmt#RIB-Dataset">RIB Dataset</a>
    * @throws ManagementException if the network request failed or if the NFD rejected the request
+   * @see <a href="http://redmine.named-data.net/projects/nfd/wiki/RibMgmt#RIB-Dataset">RIB Dataset</a>
    */
-  public static List<RibEntry> getRouteList(Face face) throws ManagementException {
+  public static List<RibEntry> getRouteList(final Face face) throws ManagementException {
     try {
       List<Data> segments = FetchHelper.getSegmentedData(face, new Name("/localhost/nfd/rib/list"));
       return StatusDatasetHelper.wireDecode(segments, RibEntry.class);
@@ -133,12 +137,11 @@
    *
    * @param face only a localhost Face
    * @return a list of strategy choice entries, i.e. routes
-   *
+   * @throws ManagementException if the network request failed, the NFD response could not be decoded, or
+   *                             the NFD rejected the request
    * @see <a href="http://redmine.named-data.net/projects/nfd/wiki/StrategyChoice">StrategyChoice</a>
-   * @throws ManagementException  if the network request failed, the NFD response could not be decoded, or
-   *                              the NFD rejected the request
    */
-  public static List<StrategyChoice> getStrategyList(Face face) throws ManagementException {
+  public static List<StrategyChoice> getStrategyList(final Face face) throws ManagementException {
     try {
       List<Data> segments = FetchHelper.getSegmentedData(face, new Name("/localhost/nfd/strategy-choice/list"));
       return StatusDatasetHelper.wireDecode(segments, StrategyChoice.class);
@@ -155,7 +158,7 @@
    * @throws ManagementException if the network request failed, if the NFD rejected the request, or no
    *                             KeyLocator was found
    */
-  public static KeyLocator getKeyLocator(Face face) throws ManagementException {
+  public static KeyLocator getKeyLocator(final Face face) throws ManagementException {
     try {
       List<Data> segments = FetchHelper.getSegmentedData(face, new Name("/localhost/nfd/status/general"));
       if (segments.isEmpty() || !KeyLocator.canGetFromSignature(segments.get(0).getSignature())) {
@@ -173,13 +176,13 @@
    * command signing has been set up (e.g. forwarder.setCommandSigningInfo()).
    *
    * @param face only a localhost {@link Face}
-   * @param uri       a string like "tcp4://host.name.com" (see nfd-status channels
-   *                  for more protocol options)
+   * @param uri  a string like "tcp4://host.name.com" (see nfd-status channels
+   *             for more protocol options)
    * @return the newly created face ID
    * @throws ManagementException if the network request failed, the NFD response could not be decoded, or
    *                             the NFD rejected the request
    */
-  public static int createFace(Face face, String uri) throws ManagementException {
+  public static int createFace(final Face face, final String uri) throws ManagementException {
     Name command = new Name("/localhost/nfd/faces/create");
     ControlParameters parameters = new ControlParameters();
     parameters.setUri(uri);
@@ -191,8 +194,7 @@
 
       // return
       return response.getBodyAsControlParameters().getFaceId();
-    }
-    catch (IOException|EncodingException e) {
+    } catch (IOException | EncodingException e) {
       throw new ManagementException(e.getMessage(), e);
     }
   }
@@ -202,12 +204,12 @@
    * local machine (management requests are to /localhost/...) and that command
    * signing has been set up (e.g. forwarder.setCommandSigningInfo()).
    *
-   * @param face only a localhost {@link Face}
-   * @param faceId    the ID of the face to destroy
+   * @param face   only a localhost {@link Face}
+   * @param faceId the ID of the face to destroy
    * @throws ManagementException if the network request failed, the NFD response could not be decoded, or
    *                             the NFD rejected the request
    */
-  public static void destroyFace(Face face, int faceId) throws ManagementException {
+  public static void destroyFace(final Face face, final int faceId) throws ManagementException {
     Name command = new Name("/localhost/nfd/faces/destroy");
     ControlParameters parameters = new ControlParameters();
     parameters.setFaceId(faceId);
@@ -215,21 +217,22 @@
 
     try {
       sendCommand(face, command);
-    } catch (IOException|EncodingException|ManagementException e) {
+    } catch (IOException | EncodingException | ManagementException e) {
       throw new ManagementException(e.getMessage(), e);
     }
   }
 
   /**
-   * Enable a local control feature on the given forwarder. See
-   * <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>
+   * Enable a local control feature on the given forwarder.
    *
-   * @param face only a localhost {@link Face}
-   * @param header    the control feature to enable
+   * @param face   only a localhost {@link Face}
+   * @param header the control feature to enable
    * @throws ManagementException if the network request failed, the NFD response could not be decoded, or
    *                             the NFD rejected the request
+   * @see <a href="http://redmine.named-data.net/projects/nfd/wiki/FaceMgmt">Face Management</a>
    */
-  public static void enableLocalControlHeader(Face face, LocalControlHeader header) throws ManagementException {
+  public static void enableLocalControlHeader(final Face face, final LocalControlHeader header) throws
+    ManagementException {
     // build command name
     Name command = new Name("/localhost/nfd/faces/enable-local-control");
     ControlParameters parameters = new ControlParameters();
@@ -238,21 +241,22 @@
 
     try {
       sendCommand(face, command);
-    } catch (IOException|EncodingException|ManagementException e) {
+    } catch (IOException | EncodingException | ManagementException e) {
       throw new ManagementException(e.getMessage(), e);
     }
   }
 
   /**
-   * Disable a local control feature on the given forwarder. See
-   * <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>
+   * Disable a local control feature on the given forwarder.
    *
-   * @param face only a localhost {@link Face}
-   * @param header    the control feature to disable
+   * @param face   only a localhost {@link Face}
+   * @param header the control feature to disable
    * @throws ManagementException if the network request failed, the NFD response could not be decoded, or
    *                             the NFD rejected the request
+   * @see <a href="http://redmine.named-data.net/projects/nfd/wiki/FaceMgmt">Face Management</a>
    */
-  public static void disableLocalControlHeader(Face face, LocalControlHeader header) throws ManagementException {
+  public static void disableLocalControlHeader(final Face face, final LocalControlHeader header) throws
+    ManagementException {
     // build command name
     Name command = new Name("/localhost/nfd/faces/disable-local-control");
     ControlParameters parameters = new ControlParameters();
@@ -261,48 +265,47 @@
 
     try {
       sendCommand(face, command);
-    } catch (IOException|EncodingException|ManagementException e) {
+    } catch (IOException | EncodingException | ManagementException e) {
       throw new ManagementException(e.getMessage(), e);
     }
   }
 
   /**
-   * Register a route on the forwarder; see
-   * <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
+   * Register a route on the forwarder.
+   * <p/>
+   * 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 face         only a localhost {@link Face}
+   * @param face              only a localhost {@link Face}
    * @param controlParameters the {@link ControlParameters} command options
    * @throws ManagementException if the network request failed, the NFD response could not be decoded, or
    *                             the NFD rejected the request
+   * @see <a href="http://named-data.net/doc/NFD/current/manpages/nfdc.html">nfdc</a>
+   * @see <a href="http://redmine.named-data.net/projects/nfd/wiki/RibMgmt">RIB Management</a>
    */
-  public static void register(Face face, ControlParameters controlParameters) throws ManagementException {
+  public static void register(final Face face, final ControlParameters controlParameters) throws ManagementException {
     // build command name
     Name command = new Name("/localhost/nfd/rib/register");
     command.append(controlParameters.wireEncode());
 
     try {
       sendCommand(face, command);
-    } catch (IOException|EncodingException|ManagementException e) {
+    } catch (IOException | EncodingException | ManagementException e) {
       throw new ManagementException(e.getMessage(), e);
     }
   }
 
   /**
    * Register a route on a forwarder; this will create a new face on the
-   * forwarder towards the face (e.g., self registration)
+   * forwarder towards the face (e.g., self registration).
    *
-   * @param face only a localhost {@link Face}
-   * @param route     the {@link Name} prefix of the route
-   * @param cost      the numeric cost of forwarding along the route
+   * @param face  only a localhost {@link Face}
+   * @param route the {@link Name} prefix of the route
+   * @param cost  the numeric cost of forwarding along the route
    * @throws ManagementException if the network request failed, the NFD response could not be decoded, or
    *                             the NFD rejected the request
    */
-  public static void register(Face face, Name route, int cost) throws ManagementException {
+  public static void register(final Face face, final Name route, final int cost) throws ManagementException {
     ForwardingFlags flags = new ForwardingFlags();
     flags.setCapture(false);
     flags.setChildInherit(true);
@@ -313,22 +316,24 @@
       .setOrigin(RouteOrigin.APP.toInteger())
       .setForwardingFlags(flags));
   }
+
   /**
    * Register a route on a forwarder; this will create a new face on the
    * forwarder to the given URI/route pair. See register(Face,
    * ControlParameters) for more detailed documentation.
    *
-   * @param face only a localhost {@link Face}
-   * @param uri       the URI (e.g. "tcp4://10.10.2.2:6363") of the remote node; note
-   *                  that this must be one of the canonical forms described in the wiki
-   *                  (http://redmine.named-data.net/projects/nfd/wiki/FaceMgmt#TCP) for NFD to
-   *                  accept the registration--otherwise you will see 400 errors
-   * @param route     the {@link Name} prefix of the route
-   * @param cost      the numeric cost of forwarding along the route
+   * @param face  only a localhost {@link Face}
+   * @param uri   the URI (e.g. "tcp4://10.10.2.2:6363") of the remote node; note
+   *              that this must be one of the canonical forms described in the wiki
+   *              (http://redmine.named-data.net/projects/nfd/wiki/FaceMgmt#TCP) for NFD to
+   *              accept the registration--otherwise you will see 400 errors
+   * @param route the {@link Name} prefix of the route
+   * @param cost  the numeric cost of forwarding along the route
    * @throws ManagementException if the network request failed, the NFD response could not be decoded, or
    *                             the NFD rejected the request
    */
-  public static void register(Face face, String uri, Name route, int cost) throws ManagementException {
+  public static void register(final Face face, final String uri, final Name route, final int cost) throws
+    ManagementException {
     // create the new face
     int faceId = createFace(face, uri);
 
@@ -348,7 +353,8 @@
    * @throws ManagementException if the network request failed, the NFD response could not be decoded, or
    *                             the NFD rejected the request
    */
-  public static void register(Face forwarder, int faceId, Name route, int cost) throws ManagementException {
+  public static void register(final Face forwarder, final int faceId, final Name route, final int cost) throws
+    ManagementException {
     // build command name
     ControlParameters parameters = new ControlParameters();
     parameters.setName(route);
@@ -365,46 +371,44 @@
   }
 
   /**
-   * Unregister a route on a forwarder; see
-   * <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()).
+   * Unregister a route on a forwarder
+   * <p/>
+   * 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 face         only a localhost {@link Face}
+   * @param face              only a localhost {@link Face}
    * @param controlParameters the {@link ControlParameters} command options
    * @throws ManagementException if the network request failed, the NFD response could not be decoded, or
    *                             the NFD rejected the request
+   * @see <a href="http://named-data.net/doc/NFD/current/manpages/nfdc.html">nfdc</a>
+   * @see <a href="http://redmine.named-data.net/projects/nfd/wiki/RibMgmt">RIB Management</a>
    */
-  public static void unregister(Face face, ControlParameters controlParameters) throws ManagementException {
+  public static void unregister(final Face face, final ControlParameters controlParameters) throws ManagementException {
     // build command name
     Name command = new Name("/localhost/nfd/rib/unregister");
     command.append(controlParameters.wireEncode());
 
     try {
       sendCommand(face, command);
-    } catch (IOException|EncodingException|ManagementException e) {
+    } catch (IOException | EncodingException | ManagementException e) {
       throw new ManagementException(e.getMessage(), e);
     }
   }
 
   /**
-   * Unregister a route on a forwarder; see
-   * <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
+   * Unregister a route on a forwarder.
+   * <p/>
+   * 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 face only a localhost {@link Face}
-   * @param route     the {@link Name} prefix of the route
+   * @param face  only a localhost {@link Face}
+   * @param route the {@link Name} prefix of the route
    * @throws ManagementException if the network request failed, the NFD response could not be decoded, or
    *                             the NFD rejected the request
+   * @see <a href="http://named-data.net/doc/NFD/current/manpages/nfdc.html">nfdc</a>
+   * @see <a href="http://redmine.named-data.net/projects/nfd/wiki/RibMgmt">RIB Management</a>
    */
-  public static void unregister(Face face, Name route) throws ManagementException {
+  public static void unregister(final Face face, final Name route) throws ManagementException {
     // build command name
     ControlParameters controlParameters = new ControlParameters();
     controlParameters.setName(route);
@@ -415,21 +419,20 @@
 
   /**
    * Unregister a route on a forwarder; see
-   * <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
+   * <p/>
+   * 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 face only a localhost {@link Face}
-   * @param route     the {@link Name} prefix of the route
-   * @param faceId    the specific ID of the face to remove (more than one face can
-   *                  be registered to a route)
+   * @param face   only a localhost {@link Face}
+   * @param route  the {@link Name} prefix of the route
+   * @param faceId the specific ID of the face to remove (more than one face can
+   *               be registered to a route)
    * @throws ManagementException if the network request failed, the NFD response could not be decoded, or
    *                             the NFD rejected the request
+   * @see <a href="http://named-data.net/doc/NFD/current/manpages/nfdc.html">nfdc</a>
+   * @see <a href="http://redmine.named-data.net/projects/nfd/wiki/RibMgmt">RIB Management</a>
    */
-  public static void unregister(Face face, Name route, int faceId) throws ManagementException {
+  public static void unregister(final Face face, final Name route, final int faceId) throws ManagementException {
     // build command name
     ControlParameters controlParameters = new ControlParameters();
     controlParameters.setName(route);
@@ -441,20 +444,20 @@
 
   /**
    * Unregister a route on a forwarder
-   *
+   * <p/>
    * Ensure the forwarding face is on the local machine (management requests are to /localhost/...) and that command
    * signing has been set up using forwarder.setCommandSigningInfo().
    *
-   * @param face only a localhost {@link Face}
-   * @param route     the {@link Name} prefix of the route
-   * @param uri       the URI (e.g. "tcp4://some.host.com") of the remote node (more
-   *                  than one face can be registered to a route)
+   * @param face  only a localhost {@link Face}
+   * @param route the {@link Name} prefix of the route
+   * @param uri   the URI (e.g. "tcp4://some.host.com") of the remote node (more
+   *              than one face can be registered to a route)
    * @throws ManagementException if the network request failed, the NFD response could not be decoded, or
    *                             the NFD rejected the request
    * @see <a href="http://named-data.net/doc/NFD/current/manpages/nfdc.html">nfdc command-line usage</a>
    * @see <a href="http://redmine.named-data.net/projects/nfd/wiki/RibMgmt">RibMgmt</a>
    */
-  public static void unregister(Face face, Name route, String uri) throws ManagementException {
+  public static void unregister(final Face face, final Name route, final String uri) throws ManagementException {
     int faceId = -1;
     for (FaceStatus faceStatus : getFaceList(face)) {
       if (faceStatus.getRemoteUri().matches(uri)) {
@@ -473,20 +476,20 @@
 
   /**
    * Set a strategy on the forwarder
-   *
+   * <p/>
    * Ensure the forwarding face is on the local machine (management requests are to /localhost/...) and that command
    * signing has been set up using forwarder.setCommandSigningInfo().
    *
-   * @param face only a localhost {@link Face}
-   * @param prefix    the {@link Name} prefix
-   * @param strategy  the {@link Name} of the strategy to set, e.g.
-   *                  /localhost/nfd/strategy/broadcast
+   * @param face     only a localhost {@link Face}
+   * @param prefix   the {@link Name} prefix
+   * @param strategy the {@link Name} of the strategy to set, e.g.
+   *                 /localhost/nfd/strategy/broadcast
    * @throws ManagementException if the network request failed, the NFD response could not be decoded, or
    *                             the NFD rejected the request
    * @see <a href="http://named-data.net/doc/NFD/current/manpages/nfdc.html">nfdc command-line usage</a>
    * @see <a href="http://redmine.named-data.net/projects/nfd/wiki/StrategyChoice">StrategyChoice</a>
    */
-  public static void setStrategy(Face face, Name prefix, Name strategy) throws ManagementException {
+  public static void setStrategy(final Face face, final Name prefix, final Name strategy) throws ManagementException {
     // build command name
     Name command = new Name("/localhost/nfd/strategy-choice/set");
     ControlParameters parameters = new ControlParameters();
@@ -496,7 +499,7 @@
 
     try {
       sendCommand(face, command);
-    } catch (IOException|EncodingException|ManagementException e) {
+    } catch (IOException | EncodingException | ManagementException e) {
       throw new ManagementException(e.getMessage(), e);
     }
   }
@@ -508,12 +511,12 @@
    * (management requests are to /localhost/...) and that command signing has
    * been set up (e.g. forwarder.setCommandSigningInfo()).
    *
-   * @param face only a localhost {@link Face}
-   * @param prefix    the {@link Name} prefix
+   * @param face   only a localhost {@link Face}
+   * @param prefix the {@link Name} prefix
    * @throws ManagementException if the network request failed, the NFD response could not be decoded, or
    *                             the NFD rejected the request
    */
-  public static void unsetStrategy(Face face, Name prefix) throws ManagementException {
+  public static void unsetStrategy(final Face face, final Name prefix) throws ManagementException {
     // build command name
     Name command = new Name("/localhost/nfd/strategy-choice/unset");
     ControlParameters parameters = new ControlParameters();
@@ -522,7 +525,7 @@
 
     try {
       sendCommand(face, command);
-    } catch (IOException|EncodingException|ManagementException e) {
+    } catch (IOException | EncodingException | ManagementException e) {
       throw new ManagementException(e.getMessage(), e);
     }
   }
@@ -536,23 +539,24 @@
    *
    * @param face only a localhost Face, command signing info must be set
    * @param name As described at
-   *             <a href="http://redmine.named-data.net/projects/nfd/wiki/ControlCommand,">http://redmine.named-data.net/projects/nfd/wiki/ControlCommand,</a>
+   *             <a href="http://redmine.named-data.net/projects/nfd/wiki/ControlCommand">ControlCommand</a>,
    *             the requested interest must have encoded ControlParameters appended to the
    *             interest name
    * @return a {@link ControlResponse}
-   * @throws java.io.IOException
-   * @throws net.named_data.jndn.encoding.EncodingException
-   * @throws ManagementException
+   * @throws IOException         if the network request failed
+   * @throws EncodingException   if the NFD response could not be decoded
+   * @throws ManagementException if the NFD rejected the request
    */
-  private static ControlResponse
-  sendCommand(Face face, Name name) throws IOException, EncodingException, ManagementException {
+  private static ControlResponse sendCommand(final Face face, final Name name) throws IOException, EncodingException,
+    ManagementException {
     Interest interest = new Interest(name);
 
     // forwarder must have command signing info set
     try {
       face.makeCommandInterest(interest);
     } catch (SecurityException e) {
-      throw new IllegalArgumentException("Failed to make command interest; ensure command signing info is set on the face.", e);
+      throw new IllegalArgumentException("Failed to make command interest; ensure command signing info is set on the " +
+        "face.", e);
     }
 
     // send command packet
diff --git a/src/main/java/com/intel/jndn/management/enums/FacePersistency.java b/src/main/java/com/intel/jndn/management/enums/FacePersistency.java
index 08630b8..678b1a2 100644
--- a/src/main/java/com/intel/jndn/management/enums/FacePersistency.java
+++ b/src/main/java/com/intel/jndn/management/enums/FacePersistency.java
@@ -14,10 +14,10 @@
 package com.intel.jndn.management.enums;
 
 /**
- * Indicate whether the face is persistent; used by FaceStatus
+ * Indicate whether the face is persistent; used by FaceStatus.
  *
- * @see <a href="http://redmine.named-data.net/projects/nfd/widi/FaceMgmt">FaceMgmt</a>
  * @author Andrew Brown <andrew.brown@intel.com>
+ * @see <a href="http://redmine.named-data.net/projects/nfd/widi/FaceMgmt">Face Management</a>
  */
 public enum FacePersistency {
   NONE(-1), // invalid value
@@ -30,16 +30,32 @@
 
   /////////////////////////////////////////////////////////////////////////////
 
-  FacePersistency(int value) {
+  /**
+   * Create enum using NFD's FacePersistency code.
+   *
+   * @param value NFD's FacePersistency code
+   */
+  FacePersistency(final int value) {
     this.value = value;
   }
 
+  /**
+   * Convert FacePersistency to the NFD code.
+   *
+   * @return NFD's FacePersistency code
+   */
   public final int toInteger() {
     return value;
   }
 
+  /**
+   * Convert NFD code to FacePersistency enum.
+   *
+   * @param value NFD's FacePersistency code
+   * @return enum value
+   */
   public static FacePersistency
-  fromInteger(int value) {
+  fromInteger(final int value) {
     switch (value) {
       case 0:
         return PERSISTENT;
diff --git a/src/main/java/com/intel/jndn/management/enums/FaceScope.java b/src/main/java/com/intel/jndn/management/enums/FaceScope.java
index d32621e..9b6796b 100644
--- a/src/main/java/com/intel/jndn/management/enums/FaceScope.java
+++ b/src/main/java/com/intel/jndn/management/enums/FaceScope.java
@@ -15,10 +15,10 @@
 
 /**
  * Indicate whether the face is local for scope control purposes; used by
- * FaceStatus
+ * FaceStatus.
  *
- * @see <a href="http://redmine.named-data.net/projects/nfd/widi/FaceMgmt">FaceMgmt</a>
  * @author Andrew Brown <andrew.brown@intel.com>
+ * @see <a href="http://redmine.named-data.net/projects/nfd/widi/FaceMgmt">Face Management</a>
  */
 public enum FaceScope {
 
@@ -31,16 +31,31 @@
 
   /////////////////////////////////////////////////////////////////////////////
 
-  FaceScope(int value) {
+  /**
+   * Create enum using NFD's FaceScope code.
+   *
+   * @param value NFD's FaceScope code
+   */
+  FaceScope(final int value) {
     this.value = value;
   }
 
+  /**
+   * Convert FaceScope to the NFD code.
+   *
+   * @return NFD's FaceScope code
+   */
   public final int toInteger() {
     return value;
   }
 
-  public static FaceScope
-  fromInteger(int value) {
+  /**
+   * Convert NFD code to FaceScope enum.
+   *
+   * @param value NFD's FaceScope code
+   * @return enum value
+   */
+  public static FaceScope fromInteger(final int value) {
     switch (value) {
       case 0:
         return NON_LOCAL;
diff --git a/src/main/java/com/intel/jndn/management/enums/LinkType.java b/src/main/java/com/intel/jndn/management/enums/LinkType.java
index 99da791..8d4a1c8 100644
--- a/src/main/java/com/intel/jndn/management/enums/LinkType.java
+++ b/src/main/java/com/intel/jndn/management/enums/LinkType.java
@@ -14,37 +14,46 @@
 package com.intel.jndn.management.enums;
 
 /**
- * NFD face link type
- * @see <a href="http://redmine.named-data.net/projects/nfd/widi/FaceMgmt">FaceMgmt</a>
+ * NFD face link type.
+ *
+ * @see <a href="http://redmine.named-data.net/projects/nfd/widi/FaceMgmt">Face Management</a>
  */
 public enum LinkType {
 
-  NONE(-1), // invalid value
-
-  /**
-   * Link is point-to-point
-   */
+  NONE(-1),
   POINT_TO_POINT(0),
-
-  /**
-   * Link is multi-access
-   */
   MULTI_ACCESS(1);
 
   private final int value;
 
   /////////////////////////////////////////////////////////////////////////////
 
-  LinkType(int value) {
+  /**
+   * Create enum using NFD's LinkType code.
+   *
+   * @param value NFD's LinkType code
+   */
+  LinkType(final int value) {
     this.value = value;
   }
 
+  /**
+   * Convert LinkType to the NFD code.
+   *
+   * @return NFD's LinkType code
+   */
   public final int toInteger() {
     return value;
   }
 
+  /**
+   * Convert NFD code to LinkType enum.
+   *
+   * @param value NFD's LinkType code
+   * @return enum value
+   */
   public static LinkType
-  fromInteger(int value) {
+  fromInteger(final int value) {
     switch (value) {
       case 0:
         return POINT_TO_POINT;
diff --git a/src/main/java/com/intel/jndn/management/enums/LocalControlHeader.java b/src/main/java/com/intel/jndn/management/enums/LocalControlHeader.java
index 86a205d..426be64 100644
--- a/src/main/java/com/intel/jndn/management/enums/LocalControlHeader.java
+++ b/src/main/java/com/intel/jndn/management/enums/LocalControlHeader.java
@@ -14,10 +14,10 @@
 package com.intel.jndn.management.enums;
 
 /**
- * Define constants for local control header options. See
- * <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>
+ * Define constants for local control header options.
  *
  * @author Andrew Brown <andrew.brown@intel.com>
+ * @see <a href="http://redmine.named-data.net/projects/nfd/widi/FaceMgmt">Face Management</a>
  */
 public enum LocalControlHeader {
 
@@ -29,10 +29,20 @@
 
   /////////////////////////////////////////////////////////////////////////////
 
-  LocalControlHeader(int value) {
+  /**
+   * Create enum using NFD's LocalControlHeader code.
+   *
+   * @param value NFD's LocalControlHeader code
+   */
+  LocalControlHeader(final int value) {
     this.value = value;
   }
 
+  /**
+   * Convert LocalControlHeader to the NFD code.
+   *
+   * @return NFD's LocalControlHeader code
+   */
   public final int toInteger() {
     return value;
   }
diff --git a/src/main/java/com/intel/jndn/management/enums/NfdTlv.java b/src/main/java/com/intel/jndn/management/enums/NfdTlv.java
index d414ad2..8f7b536 100644
--- a/src/main/java/com/intel/jndn/management/enums/NfdTlv.java
+++ b/src/main/java/com/intel/jndn/management/enums/NfdTlv.java
@@ -15,9 +15,12 @@
 package com.intel.jndn.management.enums;
 
 /**
- * NFD Management protocol TLV codes
+ * NFD Management protocol TLV codes.
+ *
+ * @see <a href="http://redmine.named-data.net/projects/nfd/widi/FaceMgmt">Face Management</a>
  */
-public class NfdTlv {
+@SuppressWarnings("CheckStyle")
+public final class NfdTlv {
   /**
    * Prevent creation of NfdTlv instances
    */
@@ -26,61 +29,61 @@
 
   // ControlParameters
   // http://redmine.named-data.net/projects/nfd/wiki/ControlCommand
-  public static final int ControlParameters   = 104;
-  public static final int FaceId              = 105;
-  public static final int Uri                 = 114;
+  public static final int ControlParameters = 104;
+  public static final int FaceId = 105;
+  public static final int Uri = 114;
   public static final int LocalControlFeature = 110;
-  public static final int Origin              = 111;
-  public static final int Cost                = 106;
-  public static final int Flags               = 108;
-  public static final int Strategy            = 107;
-  public static final int ExpirationPeriod    = 109;
+  public static final int Origin = 111;
+  public static final int Cost = 106;
+  public static final int Flags = 108;
+  public static final int Strategy = 107;
+  public static final int ExpirationPeriod = 109;
 
   // ControlResponse
   // http://redmine.named-data.net/projects/nfd/wiki/ControlCommand
   public static final int ControlResponse = 101;
-  public static final int StatusCode      = 102;
-  public static final int StatusText      = 103;
+  public static final int StatusCode = 102;
+  public static final int StatusText = 103;
 
   // ForwarderStatus
   // http://redmine.named-data.net/projects/nfd/wiki/ForwarderStatus
-  public static final int NfdVersion           = 128;
-  public static final int StartTimestamp       = 129;
-  public static final int CurrentTimestamp     = 130;
-  public static final int NNameTreeEntries     = 131;
-  public static final int NFibEntries          = 132;
-  public static final int NPitEntries          = 133;
+  public static final int NfdVersion = 128;
+  public static final int StartTimestamp = 129;
+  public static final int CurrentTimestamp = 130;
+  public static final int NNameTreeEntries = 131;
+  public static final int NFibEntries = 132;
+  public static final int NPitEntries = 133;
   public static final int NMeasurementsEntries = 134;
-  public static final int NCsEntries           = 135;
+  public static final int NCsEntries = 135;
 
   // Face Management
   // http://redmine.named-data.net/projects/nfd/wiki/FaceMgmt
-  public static final int FaceStatus            = 128;
-  public static final int LocalUri              = 129;
-  public static final int ChannelStatus         = 130;
-  public static final int UriScheme             = 131;
-  public static final int FaceScope             = 132;
-  public static final int FacePersistency       = 133;
-  public static final int LinkType              = 134;
-  public static final int FaceQueryFilter       = 150;
+  public static final int FaceStatus = 128;
+  public static final int LocalUri = 129;
+  public static final int ChannelStatus = 130;
+  public static final int UriScheme = 131;
+  public static final int FaceScope = 132;
+  public static final int FacePersistency = 133;
+  public static final int LinkType = 134;
+  public static final int FaceQueryFilter = 150;
   public static final int FaceEventNotification = 192;
-  public static final int FaceEventKind         = 193;
+  public static final int FaceEventKind = 193;
 
   // ForwarderStatus and FaceStatus counters
   // http://redmine.named-data.net/projects/nfd/wiki/ForwarderStatus
   // http://redmine.named-data.net/projects/nfd/wiki/FaceMgmt
-  public static final int NInInterests  = 144;
-  public static final int NInDatas      = 145;
-  public static final int NInNacks      = 151;
+  public static final int NInInterests = 144;
+  public static final int NInDatas = 145;
+  public static final int NInNacks = 151;
   public static final int NOutInterests = 146;
-  public static final int NOutDatas     = 147;
-  public static final int NOutNacks     = 152;
-  public static final int NInBytes      = 148;
-  public static final int NOutBytes     = 149;
+  public static final int NOutDatas = 147;
+  public static final int NOutNacks = 152;
+  public static final int NInBytes = 148;
+  public static final int NOutBytes = 149;
 
   // FIB Management
   // http://redmine.named-data.net/projects/nfd/wiki/FibMgmt
-  public static final int FibEntry      = 128;
+  public static final int FibEntry = 128;
   public static final int NextHopRecord = 129;
 
   // Strategy Choice Management
@@ -90,5 +93,5 @@
   // RIB Management
   // http://redmine.named-data.net/projects/nfd/wiki/RibMgmt
   public static final int RibEntry = 128;
-  public static final int Route    = 129;
+  public static final int Route = 129;
 }
diff --git a/src/main/java/com/intel/jndn/management/enums/RouteFlags.java b/src/main/java/com/intel/jndn/management/enums/RouteFlags.java
index 334a726..86c41f6 100644
--- a/src/main/java/com/intel/jndn/management/enums/RouteFlags.java
+++ b/src/main/java/com/intel/jndn/management/enums/RouteFlags.java
@@ -14,22 +14,33 @@
 package com.intel.jndn.management.enums;
 
 /**
- * NFD route flags
- * @see <a href="http://redmine.named-data.net/projects/nfd/wiki/RibMgmt">RibMgmt</a>
+ * NFD route flags.
+ *
+ * @see <a href="http://redmine.named-data.net/projects/nfd/wiki/RibMgmt">RIB Management</a>
  */
 public enum RouteFlags {
-  NONE          (0),
-  CHILD_INHERIT (1),
-  CAPTURE       (2);
+  NONE(0),
+  CHILD_INHERIT(1),
+  CAPTURE(2);
 
   private final int value;
 
   /////////////////////////////////////////////////////////////////////////////
 
-  RouteFlags(int value) {
+  /**
+   * Create enum using NFD's RouteFlags code.
+   *
+   * @param value NFD's RouteFlags code
+   */
+  RouteFlags(final int value) {
     this.value = value;
   }
 
+  /**
+   * Convert RouteFlags to the NFD code.
+   *
+   * @return NFD's RouteFlags code
+   */
   public final int toInteger() {
     return value;
   }
diff --git a/src/main/java/com/intel/jndn/management/enums/RouteOrigin.java b/src/main/java/com/intel/jndn/management/enums/RouteOrigin.java
index 6156276..20666c0 100644
--- a/src/main/java/com/intel/jndn/management/enums/RouteOrigin.java
+++ b/src/main/java/com/intel/jndn/management/enums/RouteOrigin.java
@@ -14,47 +14,63 @@
 package com.intel.jndn.management.enums;
 
 /**
- * NFD route origin
- * @see <a href="http://redmine.named-data.net/projects/nfd/wiki/RibMgmt">RibMgmt</a>
+ * NFD route origin.
+ *
+ * @see <a href="http://redmine.named-data.net/projects/nfd/wiki/RibMgmt">RIB Management</a>
  */
 public enum RouteOrigin {
-  UNKNOWN  (-1),
-  APP      (0),
-  AUTOREG  (64),
-  CLIENT   (65),
-  AUTOCONF (66),
-  NLSR     (128),
-  STATIC   (255);
+  UNKNOWN(-1),
+  APP(0),
+  AUTOREG(64),
+  CLIENT(65),
+  AUTOCONF(66),
+  NLSR(128),
+  STATIC(255);
 
   private final int value;
 
   /////////////////////////////////////////////////////////////////////////////
 
-  RouteOrigin(int value) {
+  /**
+   * Create enum using NFD's RouteOrigin code.
+   *
+   * @param value NFD's RouteOrigin code
+   */
+  RouteOrigin(final int value) {
     this.value = value;
   }
 
+  /**
+   * Convert RouteOrigin to the NFD code.
+   *
+   * @return NFD's RouteOrigin code
+   */
   public final int toInteger() {
     return value;
   }
 
+  /**
+   * Convert NFD code to RouteOrigin enum.
+   *
+   * @param value NFD's RouteOrigin code
+   * @return enum value
+   */
   public static RouteOrigin
-  fromInteger(int value) {
-    switch (value) {
-      case 0:
-        return APP;
-      case 64:
-        return AUTOREG;
-      case 65:
-        return CLIENT;
-      case 66:
-        return AUTOCONF;
-      case 128:
-        return NLSR;
-      case 255:
-        return STATIC;
-      default:
-        return UNKNOWN;
+  fromInteger(final int value) {
+    if (value == APP.toInteger()) {
+      return APP;
+    } else if (value == AUTOREG.toInteger()) {
+      return AUTOREG;
+    } else if (value == CLIENT.toInteger()) {
+      return CLIENT;
+    } else if (value == AUTOCONF.toInteger()) {
+      return AUTOCONF;
+    } else if (value == NLSR.toInteger()) {
+      return NLSR;
+    } else if (value == STATIC.toInteger()) {
+      return STATIC;
+    } else {
+      return UNKNOWN;
     }
   }
 }
diff --git a/src/main/java/com/intel/jndn/management/enums/Strategies.java b/src/main/java/com/intel/jndn/management/enums/Strategies.java
index f1a9908..bfb1fed 100644
--- a/src/main/java/com/intel/jndn/management/enums/Strategies.java
+++ b/src/main/java/com/intel/jndn/management/enums/Strategies.java
@@ -16,15 +16,20 @@
 import net.named_data.jndn.Name;
 
 /**
- * A reference list of the strategies available in NFD; should match
- * <a href="http://redmine.named-data.net/projects/nfd/wiki/StrategyChoice#Strategy">
- * http://redmine.named-data.net/projects/nfd/wiki/StrategyChoice#Strategy</a>
+ * A reference list of the strategies available in NFD.
  *
  * @author Andrew Brown <andrew.brown@intel.com>
+ * @see <a href="http://redmine.named-data.net/projects/nfd/wiki/StrategyChoice#Strategy">Strategies</a>
  */
-public class Strategies {
+public final class Strategies {
   public static final Name BEST_ROUTE = new Name("/localhost/nfd/strategy/best-route");
   public static final Name BROADCAST = new Name("/localhost/nfd/strategy/broadcast");
   public static final Name CLIENT_CONTROL = new Name("/localhost/nfd/strategy/client-control");
   public static final Name NCC = new Name("/localhost/nfd/strategy/ncc");
+
+  /**
+   * Prevent instances of Strategies.
+   */
+  private Strategies() {
+  }
 }
diff --git a/src/main/java/com/intel/jndn/management/enums/package-info.java b/src/main/java/com/intel/jndn/management/enums/package-info.java
new file mode 100644
index 0000000..2d340a5
--- /dev/null
+++ b/src/main/java/com/intel/jndn/management/enums/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * NFD constants and enumerations.
+ * @see <a href="http://redmine.named-data.net/projects/nfd/wiki/Management">NFD Management</a>
+ */
+package com.intel.jndn.management.enums;
diff --git a/src/main/java/com/intel/jndn/management/helpers/EncodingHelper.java b/src/main/java/com/intel/jndn/management/helpers/EncodingHelper.java
index 66e2c80..3a59a4a 100644
--- a/src/main/java/com/intel/jndn/management/helpers/EncodingHelper.java
+++ b/src/main/java/com/intel/jndn/management/helpers/EncodingHelper.java
@@ -13,9 +13,6 @@
  */
 package com.intel.jndn.management.helpers;
 
-import java.nio.ByteBuffer;
-import java.nio.charset.Charset;
-
 import net.named_data.jndn.ControlParameters;
 import net.named_data.jndn.ForwardingFlags;
 import net.named_data.jndn.Name;
@@ -25,6 +22,9 @@
 import net.named_data.jndn.encoding.tlv.TlvEncoder;
 import net.named_data.jndn.util.Blob;
 
+import java.nio.ByteBuffer;
+import java.nio.charset.Charset;
+
 /**
  * Provide helper methods to cover areas too protected in Tlv0_1_1WireFormat;
  * this class can be deprecated if WireFormats allow passing in an existing
@@ -32,7 +32,13 @@
  *
  * @author Andrew Brown <andrew.brown@intel.com>
  */
-public class EncodingHelper {
+public final class EncodingHelper {
+
+  /**
+   * Prevent instances of EncodingHelper.
+   */
+  private EncodingHelper() {
+  }
 
   /**
    * Helper to decode names since Tlv0_1_1WireFormat.java uses its own internal,
@@ -40,9 +46,9 @@
    *
    * @param input the bytes to decode
    * @return a decoded {@link Name}
-   * @throws EncodingException
+   * @throws EncodingException when decoding fails
    */
-  public static Name decodeName(ByteBuffer input) throws EncodingException {
+  public static Name decodeName(final ByteBuffer input) throws EncodingException {
     TlvDecoder decoder = new TlvDecoder(input);
     return decodeName(decoder);
   }
@@ -53,9 +59,9 @@
    *
    * @param decoder a current decoder context to use for decoding
    * @return a decoded {@link Name}
-   * @throws EncodingException
+   * @throws EncodingException when decoding fails
    */
-  public static Name decodeName(TlvDecoder decoder) throws EncodingException {
+  public static Name decodeName(final TlvDecoder decoder) throws EncodingException {
     Name name = new Name();
     int endOffset = decoder.readNestedTlvsStart(Tlv.Name);
     while (decoder.getOffset() < endOffset) {
@@ -73,7 +79,7 @@
    * @param name the {@link Name} to encode
    * @return an encoded {@link Blob}
    */
-  public static Blob encodeName(Name name) {
+  public static Blob encodeName(final Name name) {
     TlvEncoder encoder = new TlvEncoder();
     encodeName(name, encoder);
     return new Blob(encoder.getOutput(), false);
@@ -83,10 +89,10 @@
    * Helper to encode names using an existing encoding context; could be merged
    * to Tlv0_1_1WireFormat.java.
    *
-   * @param name the {@link Name} to encode
+   * @param name    the {@link Name} to encode
    * @param encoder the current {@link TlvEncoder} context to encode with
    */
-  public static final void encodeName(Name name, TlvEncoder encoder) {
+  public static void encodeName(final Name name, final TlvEncoder encoder) {
     int saveLength = encoder.getLength();
     for (int i = name.size() - 1; i >= 0; --i) {
       encoder.writeBlobTlv(Tlv.NameComponent, name.get(i).getValue().buf());
@@ -100,9 +106,9 @@
    *
    * @param input the bytes to decode
    * @return a decoded {@link Name}
-   * @throws EncodingException
+   * @throws EncodingException when decoding fails
    */
-  public static Name decodeStrategy(ByteBuffer input) throws EncodingException {
+  public static Name decodeStrategy(final ByteBuffer input) throws EncodingException {
     TlvDecoder decoder = new TlvDecoder(input);
     return decodeStrategy(decoder);
   }
@@ -113,9 +119,9 @@
    *
    * @param decoder the current {@link TlvDecoder} context to decode with
    * @return a decoded strategy (e.g. {@link Name})
-   * @throws EncodingException
+   * @throws EncodingException when decoding fails
    */
-  public static Name decodeStrategy(TlvDecoder decoder) throws EncodingException {
+  public static Name decodeStrategy(final TlvDecoder decoder) throws EncodingException {
     int strategyEndOffset = decoder.readNestedTlvsStart(Tlv.ControlParameters_Strategy);
     Name strategy = decodeName(decoder);
     decoder.finishNestedTlvs(strategyEndOffset);
@@ -129,7 +135,7 @@
    * @param strategy the {@link Name} to encode
    * @return an encoded {@link Blob}
    */
-  public static Blob encodeStrategy(Name strategy) {
+  public static Blob encodeStrategy(final Name strategy) {
     TlvEncoder encoder = new TlvEncoder();
     encodeName(strategy, encoder);
     return new Blob(encoder.getOutput(), false);
@@ -140,53 +146,52 @@
    * merged to Tlv0_1_1WireFormat.java.
    *
    * @param strategy the {@link Name} to encode
-   * @param encoder the current {@link TlvEncoder} context to use
+   * @param encoder  the current {@link TlvEncoder} context to use
    */
-  public static final void encodeStrategy(Name strategy, TlvEncoder encoder) {
+  public static void encodeStrategy(final Name strategy, final TlvEncoder encoder) {
     int strategySaveLength = encoder.getLength();
     encodeName(strategy, encoder);
     encoder.writeTypeAndLength(Tlv.ControlParameters_Strategy,
-            encoder.getLength() - strategySaveLength);
+      encoder.getLength() - strategySaveLength);
   }
 
   /**
    * Helper to encode control parameters using an existing encoding context;
    * could be merged to Tlv0_1_1WireFormat.java.
    *
-   * @param controlParameters
-   * @param encoder
+   * @param controlParameters control parameters
+   * @param encoder           TlvEncoder instance
    */
-  public static final void encodeControlParameters(ControlParameters controlParameters, TlvEncoder encoder) {
+  public static void encodeControlParameters(final ControlParameters controlParameters, final TlvEncoder encoder) {
     int saveLength = encoder.getLength();
 
     // Encode backwards.
     encoder.writeOptionalNonNegativeIntegerTlvFromDouble(Tlv.ControlParameters_ExpirationPeriod,
-            controlParameters.getExpirationPeriod());
+      controlParameters.getExpirationPeriod());
 
     // Encode strategy
     if (controlParameters.getStrategy().size() != 0) {
       int strategySaveLength = encoder.getLength();
       encodeName(controlParameters.getStrategy(), encoder);
       encoder.writeTypeAndLength(Tlv.ControlParameters_Strategy,
-              encoder.getLength() - strategySaveLength);
+        encoder.getLength() - strategySaveLength);
     }
 
     // Encode ForwardingFlags
     int flags = controlParameters.getForwardingFlags().getNfdForwardingFlags();
-    if (flags != new ForwardingFlags().getNfdForwardingFlags()) // The flags are not the default value.
-    {
+    if (flags != new ForwardingFlags().getNfdForwardingFlags()) { // The flags are not the default value.
       encoder.writeNonNegativeIntegerTlv(Tlv.ControlParameters_Flags, flags);
     }
 
     encoder.writeOptionalNonNegativeIntegerTlv(Tlv.ControlParameters_Cost, controlParameters.getCost());
     encoder.writeOptionalNonNegativeIntegerTlv(Tlv.ControlParameters_Origin, controlParameters.getOrigin());
     encoder.writeOptionalNonNegativeIntegerTlv(Tlv.ControlParameters_LocalControlFeature,
-            controlParameters.getLocalControlFeature());
+      controlParameters.getLocalControlFeature());
 
     // Encode URI
     if (!controlParameters.getUri().isEmpty()) {
       encoder.writeBlobTlv(Tlv.ControlParameters_Uri,
-              new Blob(controlParameters.getUri()).buf());
+        new Blob(controlParameters.getUri()).buf());
     }
 
     encoder.writeOptionalNonNegativeIntegerTlv(Tlv.ControlParameters_FaceId, controlParameters.getFaceId());
@@ -200,10 +205,13 @@
   }
 
   /**
-   * Convert ByteBuffer to string, assuming UTF-8 encoding in the buffer
+   * Convert ByteBuffer to string, assuming UTF-8 encoding in the buffer.
+   *
+   * @param buffer buffer to convert
+   * @return String representation of ByteBuffer (UTF-8 encoding)
    */
   public static String
-  toString(ByteBuffer buffer) {
+  toString(final ByteBuffer buffer) {
     byte[] array = new byte[buffer.remaining()];
     buffer.get(array);
     return new String(array, Charset.forName("UTF-8"));
diff --git a/src/main/java/com/intel/jndn/management/helpers/FetchHelper.java b/src/main/java/com/intel/jndn/management/helpers/FetchHelper.java
index 94e6863..7670771 100644
--- a/src/main/java/com/intel/jndn/management/helpers/FetchHelper.java
+++ b/src/main/java/com/intel/jndn/management/helpers/FetchHelper.java
@@ -13,7 +13,12 @@
  */
 package com.intel.jndn.management.helpers;
 
-import net.named_data.jndn.*;
+import net.named_data.jndn.Data;
+import net.named_data.jndn.Face;
+import net.named_data.jndn.Interest;
+import net.named_data.jndn.Name;
+import net.named_data.jndn.OnData;
+import net.named_data.jndn.OnTimeout;
 import net.named_data.jndn.encoding.EncodingException;
 
 import java.io.IOException;
@@ -22,10 +27,16 @@
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-public class FetchHelper implements OnData, OnTimeout {
+/**
+ * Trival NDN client to fetch one or multiple Data packets.
+ */
+public final class FetchHelper implements OnData, OnTimeout {
   public static final long DEFAULT_TIMEOUT = 2000;
 
   private static final Logger LOG = Logger.getLogger(FetchHelper.class.getName());
+  private static final int SLEEP_TIMEOUT = 20;
+  private static final int SEGMENT_NAME_COMPONENT_OFFSET = -1;
+  private static final int VERSION_NAME_COMPONENT_OFFSET = -2;
 
   private State state;
   private Face face;
@@ -33,42 +44,44 @@
   /////////////////////////////////////////////////////////////////////////////
 
   /**
-   * Prevent creation of FetchHelper instances: use getData or getSegmentedData
+   * Prevent creation of FetchHelper instances: use getData or getSegmentedData.
    */
-  private FetchHelper()
-  {
+  private FetchHelper() {
   }
 
   /**
-   * Private constructor: use getData or getSegmentedData
+   * Private constructor: use getData or getSegmentedData.
    */
-  private FetchHelper(Face face)
-  {
+  private FetchHelper(final Face face) {
     this.face = face;
   }
 
   /**
-   * Get a single Data packet
-   * @param face Face instance
+   * Get a single Data packet.
+   *
+   * @param face     Face instance
    * @param interest Interest to retrieve Data
    * @return Data packet
    * @throws IOException if failed to retrieve packet, e.g., timeout occured
    */
   public static Data
-  getData(Face face, Interest interest) throws IOException {
+  getData(final Face face, final Interest interest) throws IOException {
     FetchHelper fetcher = new FetchHelper(face);
     return fetcher.getData(interest);
   }
 
   /**
-   * Get data using the exact name (without implicit digest)
+   * Get data using the exact name (without implicit digest).
+   * <p/>
+   * TODO: Allow authentication of retrieved data packets
+   *
    * @param face Face instance
    * @param name Exact name of the data packet to retrieve
-   *
-   * TODO: Allow authentication of retrieved data packets
+   * @return retrieved Data packet
+   * @throws IOException when communication with NFD fails
    */
   public static Data
-  getData(Face face, Name name) throws IOException {
+  getData(final Face face, final Name name) throws IOException {
     FetchHelper fetcher = new FetchHelper(face);
 
     Interest interest = new Interest(name);
@@ -80,18 +93,21 @@
   }
 
   /**
-   * Get concatenated data from the segmented
-   * @param face Face instance
+   * Get concatenated data from the segmented.
+   * <p/>
+   * Note that this method will first send interest with MustBeFresh selector to discover "latest" version of the
+   * stream and then retrieve the rest of the stream
+   * <p/>
+   * TODO: Allow authentication of retrieved data packets
+   *
+   * @param face   Face instance
    * @param prefix Prefix of the retrieved data. The retrieved data must have version and segment numbers after this
    *               prefix
-   *
-   * Note that this method will first send interest with MustBeFresh selector to discover "latest" version of the
-   *               stream and then retrieve the rest of the stream
-   *
-   * TODO: Allow authentication of retrieved data packets
+   * @return list of retrieved Data packets
+   * @throws IOException when communication with NFD fails
    */
   public static List<Data>
-  getSegmentedData(Face face, Name prefix) throws IOException {
+  getSegmentedData(final Face face, final Name prefix) throws IOException {
     FetchHelper fetcher = new FetchHelper(face);
 
     Interest interest = new Interest(new Name(prefix));
@@ -104,9 +120,8 @@
     Data data = fetcher.getData(interest);
 
     try {
-      data.getName().get(-1).toSegment();
-    }
-    catch (EncodingException e) {
+      data.getName().get(SEGMENT_NAME_COMPONENT_OFFSET).toSegment();
+    } catch (EncodingException e) {
       throw new IOException("Retrieved data does not have segment number as the last name component", e);
     }
     if (data.getName().size() != prefix.size() + 2) {
@@ -116,15 +131,14 @@
     long finalBlockId = 0;
     try {
       finalBlockId = data.getMetaInfo().getFinalBlockId().toSegment();
-    }
-    catch (EncodingException e) {
+    } catch (EncodingException e) {
       throw new IOException("Requested segmented stream is unbounded", e);
     }
 
     List<Data> segments = new ArrayList<>();
     segments.add(data);
 
-    prefix.append(data.getName().get(-2));
+    prefix.append(data.getName().get(VERSION_NAME_COMPONENT_OFFSET));
     for (int i = 0; i < finalBlockId; i++) {
       interest = new Interest(new Name(prefix).appendSegment(i));
       interest.setInterestLifetimeMilliseconds(DEFAULT_TIMEOUT);
@@ -140,7 +154,7 @@
 
   /////////////////////////////////////////////////////////////////////////////
 
-  private Data getData(Interest interest) throws IOException {
+  private Data getData(final Interest interest) throws IOException {
     this.state = new State();
     this.face.expressInterest(interest, this, this);
 
@@ -151,7 +165,7 @@
         LOG.log(Level.INFO, "Decoding error: " + e.getMessage(), e);
       }
       try {
-        Thread.sleep(20);
+        Thread.sleep(SLEEP_TIMEOUT);
       } catch (InterruptedException e) {
         // ok
       }
@@ -165,13 +179,13 @@
   }
 
   @Override
-  public void onData(Interest interest, Data data) {
+  public void onData(final Interest interest, final Data data) {
     state.response = data;
     state.isDone = true;
   }
 
   @Override
-  public void onTimeout(Interest interest) {
+  public void onTimeout(final Interest interest) {
     state.nRetries--;
     if (state.nRetries > 0) {
       try {
@@ -179,8 +193,7 @@
       } catch (IOException e) {
         LOG.log(Level.INFO, "Error while expressing interest: " + e.toString(), e);
       }
-    }
-    else {
+    } else {
       state.isDone = true;
     }
   }
@@ -188,8 +201,10 @@
   /////////////////////////////////////////////////////////////////////////////
 
   private static class State {
-    public int nRetries = 3;
-    public Data response = null;
-    public boolean isDone = false;
+    private static final int DEFAULT_NUMBER_OF_RETRIES = 3;
+
+    private int nRetries = DEFAULT_NUMBER_OF_RETRIES;
+    private Data response = null;
+    private boolean isDone = false;
   }
 }
diff --git a/src/main/java/com/intel/jndn/management/helpers/StatusDatasetHelper.java b/src/main/java/com/intel/jndn/management/helpers/StatusDatasetHelper.java
index 0db8341..863d918 100644
--- a/src/main/java/com/intel/jndn/management/helpers/StatusDatasetHelper.java
+++ b/src/main/java/com/intel/jndn/management/helpers/StatusDatasetHelper.java
@@ -15,32 +15,36 @@
 
 import com.intel.jndn.management.ManagementException;
 import com.intel.jndn.management.types.Decodable;
-
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
-
 import net.named_data.jndn.Data;
 import net.named_data.jndn.encoding.EncodingException;
 import net.named_data.jndn.encoding.tlv.TlvDecoder;
 import net.named_data.jndn.util.Blob;
 
+import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.List;
+
 /**
- * Helper class to handle StatusDatasets, see
- * <a href="http://redmine.named-data.net/projects/nfd/wiki/StatusDataset">http://redmine.named-data.net/projects/nfd/wiki/StatusDataset</a>
+ * Helper class to handle StatusDatasets.
  *
  * @author Andrew Brown <andrew.brown@intel.com>
+ * @see <a href="http://redmine.named-data.net/projects/nfd/wiki/StatusDataset">StatusDataset</a>
  */
-public class StatusDatasetHelper {
-
+public final class StatusDatasetHelper {
   /**
-   * Prevent instances of StatusDatasetHelper
+   * Prevent instances of StatusDatasetHelper.
    */
   private StatusDatasetHelper() {
   }
 
+  /**
+   * Combine payload of Data packet segments into a single buffer.
+   *
+   * @param segments list of Data packets
+   * @return single buffer containing combined payload
+   */
   public static ByteBuffer
-  combine(List<Data> segments) {
+  combine(final List<Data> segments) {
     int size = 0;
     for (Data segment : segments) {
       size += segment.getContent().size();
@@ -55,11 +59,17 @@
   }
 
   /**
-   * Decode multiple status entries as part of a StatusDatasetHelper, see
-   * <a href="http://redmine.named-data.net/projects/nfd/wiki/StatusDataset">http://redmine.named-data.net/projects/nfd/wiki/StatusDataset</a>
+   * Decode multiple status entries as part of a StatusDatasetHelper.
+   *
+   * @param <T>      Class implementing Decodable interface
+   * @param segments list of Data packets
+   * @param type     class implementing Decodable interface
+   * @return List decoded status entries
+   * @throws ManagementException when decoding fails
+   * @see <a href="http://redmine.named-data.net/projects/nfd/wiki/StatusDataset">StatusDataset</a>
    */
-  public static final <T extends Decodable> List<T>
-  wireDecode(List<Data> segments, Class<T> type) throws ManagementException {
+  public static <T extends Decodable> List<T>
+  wireDecode(final List<Data> segments, final Class<T> type) throws ManagementException {
     Blob payload = new Blob(combine(segments), false);
 
     List<T> entries = new ArrayList<>();
@@ -70,7 +80,7 @@
         T entry = type.newInstance();
         entry.wireDecode(decoder);
         entries.add(entry);
-      } catch (IllegalAccessException|InstantiationException|EncodingException e) {
+      } catch (IllegalAccessException | InstantiationException | EncodingException e) {
         throw new ManagementException("Failed to read status dataset.", e);
       }
     }
diff --git a/src/main/java/com/intel/jndn/management/helpers/package-info.java b/src/main/java/com/intel/jndn/management/helpers/package-info.java
new file mode 100644
index 0000000..fcfcb02
--- /dev/null
+++ b/src/main/java/com/intel/jndn/management/helpers/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * Various helpers.
+ */
+package com.intel.jndn.management.helpers;
diff --git a/src/main/java/com/intel/jndn/management/package-info.java b/src/main/java/com/intel/jndn/management/package-info.java
new file mode 100644
index 0000000..79be44a
--- /dev/null
+++ b/src/main/java/com/intel/jndn/management/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * Classes implementing NFD management protocol.
+ * @see <a href="http://redmine.named-data.net/projects/nfd/wiki/Management">NFD Management</a>
+ */
+package com.intel.jndn.management;
diff --git a/src/main/java/com/intel/jndn/management/types/Decodable.java b/src/main/java/com/intel/jndn/management/types/Decodable.java
index 05797aa..7d5ae11 100644
--- a/src/main/java/com/intel/jndn/management/types/Decodable.java
+++ b/src/main/java/com/intel/jndn/management/types/Decodable.java
@@ -23,5 +23,11 @@
  * @author Andrew Brown <andrew.brown@intel.com>
  */
 public interface Decodable {
-  void wireDecode(TlvDecoder decoder) throws EncodingException;
+  /**
+   * Decode data structure from TLV wire format.
+   *
+   * @param decoder Instance of TlvDecoder
+   * @throws EncodingException when decoding fails
+   */
+  void wireDecode(final TlvDecoder decoder) throws EncodingException;
 }
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 abceaca..d7550cc 100644
--- a/src/main/java/com/intel/jndn/management/types/FaceStatus.java
+++ b/src/main/java/com/intel/jndn/management/types/FaceStatus.java
@@ -13,22 +13,23 @@
  */
 package com.intel.jndn.management.types;
 
-import java.nio.ByteBuffer;
-import com.intel.jndn.management.enums.NfdTlv;
 import com.intel.jndn.management.enums.FacePersistency;
 import com.intel.jndn.management.enums.FaceScope;
 import com.intel.jndn.management.enums.LinkType;
+import com.intel.jndn.management.enums.NfdTlv;
 import com.intel.jndn.management.helpers.EncodingHelper;
 import net.named_data.jndn.encoding.EncodingException;
 import net.named_data.jndn.encoding.tlv.TlvDecoder;
 import net.named_data.jndn.encoding.tlv.TlvEncoder;
 import net.named_data.jndn.util.Blob;
 
+import java.nio.ByteBuffer;
+
 /**
- * Represent a FaceStatus object from /localhost/nfd/faces/list
- * @see <a href="http://redmine.named-data.net/projects/nfd/wiki/FaceMgmt">Face Management</a>
+ * Represent a FaceStatus object from /localhost/nfd/faces/list.
  *
  * @author Andrew Brown <andrew.brown@intel.com>
+ * @see <a href="http://redmine.named-data.net/projects/nfd/wiki/FaceMgmt">Face Management</a>
  */
 public class FaceStatus implements Decodable {
   private int faceId = 0;
@@ -53,25 +54,26 @@
   /////////////////////////////////////////////////////////////////////////////
 
   /**
-   * Default constructor
+   * Default constructor.
    */
   public FaceStatus() {
     // nothing to do
   }
 
   /**
-   * Constructor from wire format
+   * Constructor from wire format.
+   *
    * @param input wire format
-   * @throws EncodingException
+   * @throws EncodingException when decoding fails
    */
-  public FaceStatus(ByteBuffer input) throws EncodingException {
+  public FaceStatus(final ByteBuffer input) throws EncodingException {
     wireDecode(input);
   }
 
   /**
    * Encode using a new TLV encoder.
    *
-   * @return The encoded buffer.
+   * @return The encoded buffer
    */
   public final Blob wireEncode() {
     TlvEncoder encoder = new TlvEncoder();
@@ -80,9 +82,11 @@
   }
 
   /**
-   * Encode as part of an existing encode context
+   * Encode as part of an existing encode context.
+   *
+   * @param encoder TlvEncoder instance
    */
-  public final void wireEncode(TlvEncoder encoder) {
+  public final void wireEncode(final TlvEncoder encoder) {
     int saveLength = encoder.getLength();
     encoder.writeNonNegativeIntegerTlv(NfdTlv.NOutBytes, outBytes);
     encoder.writeNonNegativeIntegerTlv(NfdTlv.NInBytes, inBytes);
@@ -112,18 +116,18 @@
    *
    * @param input The input buffer to decode. This reads from position() to
    *              limit(), but does not change the position.
-   * @throws net.named_data.jndn.encoding.EncodingException
+   * @throws EncodingException when decoding fails
    */
-  public final void wireDecode(ByteBuffer input) throws EncodingException {
+  public final void wireDecode(final ByteBuffer input) throws EncodingException {
     TlvDecoder decoder = new TlvDecoder(input);
     wireDecode(decoder);
   }
 
   /**
-   * Decode as part of an existing decode context
+   * {@inheritDoc}
    */
   @Override
-  public void wireDecode(TlvDecoder decoder) throws EncodingException {
+  public void wireDecode(final TlvDecoder decoder) throws EncodingException {
     int endOffset = decoder.readNestedTlvsStart(NfdTlv.FaceStatus);
     // parse
     this.faceId = (int) decoder.readNonNegativeIntegerTlv(NfdTlv.FaceId);
@@ -151,234 +155,279 @@
   }
 
   /**
-   * Get face ID
+   * @return face ID
    */
   public int getFaceId() {
     return faceId;
   }
 
   /**
-   * Set face ID
+   * Set face ID.
+   *
+   * @param faceId face ID
+   * @return this
    */
-  public FaceStatus setFaceId(int faceId) {
+  public FaceStatus setFaceId(final int faceId) {
     this.faceId = faceId;
     return this;
   }
 
   /**
-   * Get face ID
+   * @return remote face URI
    */
   public String getRemoteUri() {
     return remoteUri;
   }
 
   /**
-   * Set URI
+   * Set remote face URI.
+   *
+   * @param uri remote face URI
+   * @return this
    */
-  public FaceStatus setRemoteUri(String uri) {
+  public FaceStatus setRemoteUri(final String uri) {
     this.remoteUri = uri;
     return this;
   }
 
   /**
-   * Get face ID
+   * @return remote face URI
    */
   public String getLocalUri() {
     return localUri;
   }
 
   /**
-   * Set local URI
+   * Set local face URI.
+   *
+   * @param localUri local face URI
+   * @return this
    */
-  public FaceStatus setLocalUri(String localUri) {
+  public FaceStatus setLocalUri(final String localUri) {
     this.localUri = localUri;
     return this;
   }
 
   /**
-   * Check if Face has expiration period set
+   * Check if Face has expiration period set.
+   * @return true if Face has expiration period set, false otherwise
    */
   public boolean hasExpirationPeriod() {
     return expirationPeriod > 0;
   }
 
   /**
-   * Get expiration period
+   * @return expiration period
    */
   public int getExpirationPeriod() {
     return expirationPeriod;
   }
 
   /**
-   * Set expiration period
+   * Set expiration period.
+   *
+   * @param expirationPeriod expiration period
+   * @return this
    */
-  public FaceStatus setExpirationPeriod(int expirationPeriod) {
+  public FaceStatus setExpirationPeriod(final int expirationPeriod) {
     this.expirationPeriod = expirationPeriod;
     return this;
   }
 
   /**
-   * Get face scope value
+   * @return face scope
    */
   public FaceScope getFaceScope() {
     return faceScope;
   }
 
   /**
-   * Set face scope value
+   * Set face scope value.
+   *
+   * @param faceScope face scope
+   * @return this
    */
-  public FaceStatus setFaceScope(FaceScope faceScope) {
+  public FaceStatus setFaceScope(final FaceScope faceScope) {
     this.faceScope = faceScope;
     return this;
   }
 
   /**
-   * Get face persistency value
+   * @return face persistency
    */
   public FacePersistency getFacePersistency() {
     return facePersistency;
   }
 
   /**
-   * Set face persistency value
+   * Set face persistency.
+   *
+   * @param facePersistency face persistency
+   * @return this
    */
-  public FaceStatus setFacePersistency(FacePersistency facePersistency) {
+  public FaceStatus setFacePersistency(final FacePersistency facePersistency) {
     this.facePersistency = facePersistency;
     return this;
   }
 
   /**
-   * Get link type
+   * @return link type
    */
   public LinkType getLinkType() {
     return linkType;
   }
 
   /**
-   * Set link type
+   * Set link type.
+   *
+   * @param linkType link type
+   * @return this
    */
-  public FaceStatus setLinkType(LinkType linkType) {
+  public FaceStatus setLinkType(final LinkType linkType) {
     this.linkType = linkType;
     return this;
   }
 
   /**
-   * Get number of received Interest packets
+   * @return number of received Interest packets
    */
   public int getNInInterests() {
     return inInterests;
   }
 
   /**
-   * Set number of received Interest packets
+   * Set number of received Interest packets.
+   *
+   * @param inInterests number of received Interest packets
+   * @return this
    */
-  public FaceStatus setNInInterests(int inInterests) {
+  public FaceStatus setNInInterests(final int inInterests) {
     this.inInterests = inInterests;
     return this;
   }
 
   /**
-   * Get number of sent Interest packets
+   * @return number of sent Interest packets
    */
   public int getNOutInterests() {
     return outInterests;
   }
 
   /**
-   * Set number of sent Interest packets
+   * Set number of sent Interest packets.
+   *
+   * @param outInterests number of sent Interest packets
+   * @return this
    */
-  public FaceStatus setNOutInterests(int outInterests) {
+  public FaceStatus setNOutInterests(final int outInterests) {
     this.outInterests = outInterests;
     return this;
   }
 
   /**
-   * Get number of received Data packets
+   * @return number of received Data packets
    */
   public int getNInDatas() {
     return inDatas;
   }
 
   /**
-   * Set number of received Data packets
+   * Set number of received Data packets.
+   *
+   * @param inDatas number of received Data packets
+   * @return this
    */
-  public FaceStatus setNInDatas(int inDatas) {
+  public FaceStatus setNInDatas(final int inDatas) {
     this.inDatas = inDatas;
     return this;
   }
 
   /**
-   * Get number of sent Data packets
+   * @return number of sent Data packets
    */
   public int getNOutDatas() {
     return outDatas;
   }
 
   /**
-   * Set number of sent Data packets
+   * Set number of sent Data packets.
+   *
+   * @param outDatas number of sent Data packets
+   * @return this
    */
-  public FaceStatus setNOutDatas(int outDatas) {
+  public FaceStatus setNOutDatas(final int outDatas) {
     this.outDatas = outDatas;
     return this;
   }
 
   /**
-   * Get number of received Data packets
+   * @return number of received Data packets
    */
   public int getNInNacks() {
     return inNacks;
   }
 
   /**
-   * Set number of received Data packets
+   * Set number of received Data packets.
+   *
+   * @param inNacks number of received Data packets
+   * @return this
    */
-  public FaceStatus setNInNacks(int inNacks) {
+  public FaceStatus setNInNacks(final int inNacks) {
     this.inNacks = inNacks;
     return this;
   }
 
   /**
-   * Get number of sent Data packets
+   * @return number of sent Data packets
    */
   public int getNOutNacks() {
     return outNacks;
   }
 
   /**
-   * Set number of sent Data packets
+   * Set number of sent Data packets.
+   *
+   * @param outNacks number of sent Data packets
+   * @return this
    */
-  public FaceStatus setNOutNacks(int outNacks) {
+  public FaceStatus setNOutNacks(final int outNacks) {
     this.outNacks = outNacks;
     return this;
   }
 
-
   /**
-   * Get number of input bytes
+   * @return number of input bytes
    */
   public int getNInBytes() {
     return inBytes;
   }
 
   /**
-   * Set number of input bytes
+   * Set number of input bytes.
+   *
+   * @param inBytes number of input bytes
+   * @return this
    */
-  public FaceStatus setNInBytes(int inBytes) {
+  public FaceStatus setNInBytes(final int inBytes) {
     this.inBytes = inBytes;
     return this;
   }
 
   /**
-   * Get number of output bytes
+   * @return number of output bytes
    */
   public int getNOutBytes() {
     return outBytes;
   }
 
   /**
-   * Set number of output bytes
+   * Set number of output bytes.
+   *
+   * @param outBytes number of output bytes
+   * @return this
    */
-  public FaceStatus setNOutBytes(int outBytes) {
+  public FaceStatus setNOutBytes(final int outBytes) {
     this.outBytes = outBytes;
     return this;
   }
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 e30e9a9..f43cbf5 100644
--- a/src/main/java/com/intel/jndn/management/types/FibEntry.java
+++ b/src/main/java/com/intel/jndn/management/types/FibEntry.java
@@ -13,24 +13,24 @@
  */
 package com.intel.jndn.management.types;
 
-import com.intel.jndn.management.helpers.EncodingHelper;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.ListIterator;
-
 import com.intel.jndn.management.enums.NfdTlv;
+import com.intel.jndn.management.helpers.EncodingHelper;
 import net.named_data.jndn.Name;
 import net.named_data.jndn.encoding.EncodingException;
 import net.named_data.jndn.encoding.tlv.TlvDecoder;
 import net.named_data.jndn.encoding.tlv.TlvEncoder;
 import net.named_data.jndn.util.Blob;
 
+import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.ListIterator;
+
 /**
- * Represent a FibEntry returned from /localhost/nfd/fib/list
- * @see <a href="http://redmine.named-data.net/projects/nfd/wiki/FibMgmt#FIB-Dataset">FIB Dataset</a>
+ * Represent a FibEntry returned from /localhost/nfd/fib/list.
  *
  * @author Andrew Brown <andrew.brown@intel.com>
+ * @see <a href="http://redmine.named-data.net/projects/nfd/wiki/FibMgmt#FIB-Dataset">FIB Dataset</a>
  */
 public class FibEntry implements Decodable {
   private Name name = new Name();
@@ -39,18 +39,19 @@
   /////////////////////////////////////////////////////////////////////////////
 
   /**
-   * Default constructor
+   * Default constructor.
    */
   public FibEntry() {
     // nothing to do
   }
 
   /**
-   * Constructor from wire format
+   * Constructor from wire format.
+   *
    * @param input wire format
-   * @throws EncodingException
+   * @throws EncodingException when decoding fails
    */
-  public FibEntry(ByteBuffer input) throws EncodingException {
+  public FibEntry(final ByteBuffer input) throws EncodingException {
     wireDecode(input);
   }
 
@@ -66,9 +67,11 @@
   }
 
   /**
-   * Encode as part of an existing encode context
+   * Encode as part of an existing encode context.
+   *
+   * @param encoder TlvEncoder instance
    */
-  public final void wireEncode(TlvEncoder encoder) {
+  public final void wireEncode(final TlvEncoder encoder) {
     int saveLength = encoder.getLength();
     ListIterator<NextHopRecord> nh = records.listIterator(records.size());
     while (nh.hasPrevious()) {
@@ -85,16 +88,16 @@
    *              limit(), but does not change the position.
    * @throws EncodingException For invalid encoding.
    */
-  public final void wireDecode(ByteBuffer input) throws EncodingException {
+  public final void wireDecode(final ByteBuffer input) throws EncodingException {
     TlvDecoder decoder = new TlvDecoder(input);
     wireDecode(decoder);
   }
 
   /**
-   * Decode as part of an existing decode context
+   * {@inheritDoc}
    */
   @Override
-  public final void wireDecode(TlvDecoder decoder) throws EncodingException {
+  public void wireDecode(final TlvDecoder decoder) throws EncodingException {
     int endOffset = decoder.readNestedTlvsStart(NfdTlv.FibEntry);
     name = EncodingHelper.decodeName(decoder);
     while (decoder.getOffset() < endOffset) {
@@ -106,36 +109,48 @@
   }
 
   /**
-   * Get name
+   * @return FIB entry name
    */
   public Name getPrefix() {
     return name;
   }
 
   /**
-   * Set name
+   * Set FIB entry name.
+   *
+   * @param name New name for the FIB entry
+   * @return this
    */
-  public FibEntry setPrefix(Name name) {
+  public FibEntry setPrefix(final Name name) {
     this.name = name;
     return this;
   }
 
   /**
-   * Get records
+   * @return List of NextHop records.
    */
   public List<NextHopRecord> getNextHopRecords() {
     return records;
   }
 
   /**
-   * Set records
+   * Set NextHop records.
+   *
+   * @param records List of NextHop records. Previously associated records will be replaced.
+   * @return this
    */
-  public FibEntry setNextHopRecords(List<NextHopRecord> records) {
+  public FibEntry setNextHopRecords(final List<NextHopRecord> records) {
     this.records = records;
     return this;
   }
 
-  public FibEntry addNextHopRecord(NextHopRecord record) {
+  /**
+   * Add NextHop records.
+   *
+   * @param record NextHopRecord instance
+   * @return this
+   */
+  public FibEntry addNextHopRecord(final NextHopRecord record) {
     this.records.add(record);
     return this;
   }
diff --git a/src/main/java/com/intel/jndn/management/types/ForwarderStatus.java b/src/main/java/com/intel/jndn/management/types/ForwarderStatus.java
index 7ad4712..d0854d7 100644
--- a/src/main/java/com/intel/jndn/management/types/ForwarderStatus.java
+++ b/src/main/java/com/intel/jndn/management/types/ForwarderStatus.java
@@ -13,19 +13,19 @@
  */
 package com.intel.jndn.management.types;
 
-import java.nio.ByteBuffer;
-
 import com.intel.jndn.management.enums.NfdTlv;
 import net.named_data.jndn.encoding.EncodingException;
 import net.named_data.jndn.encoding.tlv.TlvDecoder;
 import net.named_data.jndn.encoding.tlv.TlvEncoder;
 import net.named_data.jndn.util.Blob;
 
+import java.nio.ByteBuffer;
+
 /**
- * Represent a ForwarderStatus object
- * @see <a href="http://redmine.named-data.net/projects/nfd/wiki/ForwarderStatus">ForwarderStatus</a>
+ * Represent a ForwarderStatus object.
  *
  * @author Andrew Brown <andrew.brown@intel.com>
+ * @see <a href="http://redmine.named-data.net/projects/nfd/wiki/ForwarderStatus">ForwarderStatus</a>
  */
 public class ForwarderStatus implements Decodable {
   private String nfdVersion = "";
@@ -46,18 +46,19 @@
   /////////////////////////////////////////////////////////////////////////////
 
   /**
-   * Default constructor
+   * Default constructor.
    */
   public ForwarderStatus() {
     // nothing to do
   }
 
   /**
-   * Constructor from wire format
+   * Constructor from wire format.
+   *
    * @param input wire format
-   * @throws EncodingException
+   * @throws EncodingException when decoding fails
    */
-  public ForwarderStatus(ByteBuffer input) throws EncodingException {
+  public ForwarderStatus(final ByteBuffer input) throws EncodingException {
     wireDecode(input);
   }
 
@@ -74,8 +75,10 @@
 
   /**
    * Encode as part of an existing encode context.
+   *
+   * @param encoder TlvEncoder instance
    */
-  public final void wireEncode(TlvEncoder encoder) {
+  public final void wireEncode(final TlvEncoder encoder) {
     encoder.writeNonNegativeIntegerTlv(NfdTlv.NOutNacks, nOutNacks);
     encoder.writeNonNegativeIntegerTlv(NfdTlv.NOutDatas, nOutDatas);
     encoder.writeNonNegativeIntegerTlv(NfdTlv.NOutInterests, nOutInterests);
@@ -96,19 +99,19 @@
    * Decode the input from its TLV format.
    *
    * @param input The input buffer to decode. This reads from position() to
-   * limit(), but does not change the position.
+   *              limit(), but does not change the position.
    * @throws EncodingException For invalid encoding.
    */
-  public final void wireDecode(ByteBuffer input) throws EncodingException {
+  public final void wireDecode(final ByteBuffer input) throws EncodingException {
     TlvDecoder decoder = new TlvDecoder(input);
     wireDecode(decoder);
   }
 
   /**
-   * Decode as part of an existing decode context
+   * {@inheritDoc}
    */
   @Override
-  public void wireDecode(TlvDecoder decoder) throws EncodingException {
+  public void wireDecode(final TlvDecoder decoder) throws EncodingException {
     this.nfdVersion = new Blob(decoder.readBlobTlv(NfdTlv.NfdVersion), true).toString();
     this.startTimestamp = decoder.readNonNegativeIntegerTlv(NfdTlv.StartTimestamp);
     this.currentTimestamp = decoder.readNonNegativeIntegerTlv(NfdTlv.CurrentTimestamp);
@@ -125,115 +128,255 @@
     this.nOutNacks = decoder.readNonNegativeIntegerTlv(NfdTlv.NOutNacks);
   }
 
+  /**
+   * @return NFD version string
+   */
   public String getNfdVersion() {
     return nfdVersion;
   }
 
-  public void setNfdVersion(String nfdVersion) {
+  /**
+   * Set NFD version string.
+   *
+   * @param nfdVersion NFD version string
+   * @return this
+   */
+  public ForwarderStatus setNfdVersion(final String nfdVersion) {
     this.nfdVersion = nfdVersion;
+    return this;
   }
 
+  /**
+   * @return NFD start timestamp (number of seconds since January 1, 1970)
+   */
   public long getStartTimestamp() {
     return startTimestamp;
   }
 
-  public void setStartTimestamp(long startTimestamp) {
+  /**
+   * Set NFD start timestamp (number of seconds since January 1, 1970).
+   *
+   * @param startTimestamp NFD start timestamp (number of seconds since January 1, 1970)
+   * @return this
+   */
+  public ForwarderStatus setStartTimestamp(final long startTimestamp) {
     this.startTimestamp = startTimestamp;
+    return this;
   }
 
+  /**
+   * @return NFD current timestamp (number of seconds since January 1, 1970)
+   */
   public long getCurrentTimestamp() {
     return currentTimestamp;
   }
 
-  public void setCurrentTimestamp(long currentTimestamp) {
+  /**
+   * Set NFD current timestamp (number of seconds since January 1, 1970).
+   *
+   * @param currentTimestamp NFD current timestamp (number of seconds since January 1, 1970)
+   * @return this
+   */
+  public ForwarderStatus setCurrentTimestamp(final long currentTimestamp) {
     this.currentTimestamp = currentTimestamp;
+    return this;
   }
 
+  /**
+   * @return Number of NameTree entries
+   */
   public long getNNameTreeEntries() {
     return nNameTreeEntries;
   }
 
-  public void setNNameTreeEntries(long nNameTreeEntries) {
+  /**
+   * Set the number of NameTree entries.
+   *
+   * @param nNameTreeEntries the number of NameTree entries.
+   * @return this
+   */
+  public ForwarderStatus setNNameTreeEntries(final long nNameTreeEntries) {
     this.nNameTreeEntries = nNameTreeEntries;
+    return this;
   }
 
+  /**
+   * @return Number of FIB entries
+   */
   public long getNFibEntries() {
     return nFibEntries;
   }
 
-  public void setNFibEntries(long nFibEntries) {
+  /**
+   * Set the number of FIB entries.
+   *
+   * @param nFibEntries the number of FIB entries.
+   * @return this
+   */
+  public ForwarderStatus setNFibEntries(final long nFibEntries) {
     this.nFibEntries = nFibEntries;
+    return this;
   }
 
+  /**
+   * @return Number of PIT entries
+   */
   public long getNPitEntries() {
     return nPitEntries;
   }
 
-  public void setNPitEntries(long nPitEntries) {
+  /**
+   * Set the number of PIT entries.
+   *
+   * @param nPitEntries the number of PIT entries.
+   * @return this
+   */
+  public ForwarderStatus setNPitEntries(final long nPitEntries) {
     this.nPitEntries = nPitEntries;
+    return this;
   }
 
+  /**
+   * @return Number of Measurement entries
+   */
   public long getNMeasurementsEntries() {
     return nMeasurementEntries;
   }
 
-  public void setNMeasurementsEntries(long nMeasurementEntries) {
+  /**
+   * Set the number of Measurement entries.
+   *
+   * @param nMeasurementEntries the number of Measurement entries.
+   * @return this
+   */
+  public ForwarderStatus setNMeasurementsEntries(final long nMeasurementEntries) {
     this.nMeasurementEntries = nMeasurementEntries;
+    return this;
   }
 
+  /**
+   * @return Number of CS entries
+   */
   public long getNCsEntries() {
     return nCsEntries;
   }
 
-  public void setNCsEntries(long nCsEntries) {
+  /**
+   * Set the number of CS entries.
+   *
+   * @param nCsEntries the number of CS entries.
+   * @return this
+   */
+  public ForwarderStatus setNCsEntries(final long nCsEntries) {
     this.nCsEntries = nCsEntries;
+    return this;
   }
 
+  /**
+   * @return The number of incoming Interests since NFD start
+   */
   public long getNInInterests() {
     return nInInterests;
   }
 
-  public void setNInInterests(long nInInterests) {
+  /**
+   * Set the number of incoming Interests since NFD start.
+   *
+   * @param nInInterests the number of incoming Interests since NFD start
+   * @return this
+   */
+  public ForwarderStatus setNInInterests(final long nInInterests) {
     this.nInInterests = nInInterests;
+    return this;
   }
 
+  /**
+   * @return Number of incoming Data since NFD start
+   */
   public long getNInDatas() {
     return nInDatas;
   }
 
-  public void setNInDatas(long nInDatas) {
+  /**
+   * Set the number of incoming Data since NFD start.
+   *
+   * @param nInDatas the number of incoming Interests since NFD start
+   * @return this
+   */
+  public ForwarderStatus setNInDatas(final long nInDatas) {
     this.nInDatas = nInDatas;
+    return this;
   }
 
+  /**
+   * @return Number of outgoing Interests since NFD start
+   */
   public long getNOutInterests() {
     return nOutInterests;
   }
 
-  public void setNOutInterests(long nOutInterests) {
+  /**
+   * Set the number of outgoing Interests since NFD start.
+   *
+   * @param nOutInterests the number of outgoing Interests since NFD start
+   * @return this
+   */
+  public ForwarderStatus setNOutInterests(final long nOutInterests) {
     this.nOutInterests = nOutInterests;
+    return this;
   }
 
+  /**
+   * @return Number of outgoing Data since NFD start
+   */
   public long getNOutDatas() {
     return nOutDatas;
   }
 
-  public void setNOutDatas(long nOutDatas) {
+  /**
+   * Set the number of outgoing Data since NFD start.
+   *
+   * @param nOutDatas the number of outgoing Data since NFD start
+   * @return this
+   */
+  public ForwarderStatus setNOutDatas(final long nOutDatas) {
     this.nOutDatas = nOutDatas;
+    return this;
   }
 
+  /**
+   * @return Number of incoming NACKs since NFD start
+   */
   public long getNInNacks() {
     return nInNacks;
   }
 
-  public void setNInNacks(long nInNacks) {
+  /**
+   * Set the number of incoming NACKs since NFD start.
+   *
+   * @param nInNacks the number of incoming NACKs since NFD start
+   * @return this
+   */
+  public ForwarderStatus setNInNacks(final long nInNacks) {
     this.nInNacks = nInNacks;
+    return this;
   }
 
+  /**
+   * @return Number of outgoing NACKs since NFD start
+   */
   public long getNOutNacks() {
     return nOutNacks;
   }
 
-  public void setNOutNacks(long nOutNacks) {
+  /**
+   * Set the number of outgoing NACKs since NFD start.
+   *
+   * @param nOutNacks the number of outgoing NACKs since NFD start
+   * @return this
+   */
+  public ForwarderStatus setNOutNacks(final long nOutNacks) {
     this.nOutNacks = nOutNacks;
+    return this;
   }
 }
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 84756e5..8c75edc 100644
--- a/src/main/java/com/intel/jndn/management/types/NextHopRecord.java
+++ b/src/main/java/com/intel/jndn/management/types/NextHopRecord.java
@@ -13,8 +13,6 @@
  */
 package com.intel.jndn.management.types;
 
-import java.nio.ByteBuffer;
-
 import com.intel.jndn.management.enums.NfdTlv;
 import net.named_data.jndn.encoding.EncodingException;
 import net.named_data.jndn.encoding.tlv.Tlv;
@@ -22,36 +20,39 @@
 import net.named_data.jndn.encoding.tlv.TlvEncoder;
 import net.named_data.jndn.util.Blob;
 
+import java.nio.ByteBuffer;
+
 /**
- * Represent a NextHopRecord in a FibEntry
- * @see <a href="http://redmine.named-data.net/projects/nfd/wiki/FibMgmt#FIB-Dataset">FIB Dataset</a>
+ * Represent a NextHopRecord in a FibEntry.
  *
  * @author Andrew Brown <andrew.brown@intel.com>
+ * @see <a href="http://redmine.named-data.net/projects/nfd/wiki/FibMgmt#FIB-Dataset">FIB Dataset</a>
  */
-public class NextHopRecord {
+public class NextHopRecord implements Decodable {
   private int faceId;
   private int cost;
 
   /////////////////////////////////////////////////////////////////////////////
 
   /**
-   * Default constructor
+   * Default constructor.
    */
   public NextHopRecord() {
     // nothing to do
   }
 
   /**
-   * Constructor from wire format
+   * Constructor from wire format.
+   *
    * @param input wire format
-   * @throws EncodingException
+   * @throws EncodingException when decoding fails
    */
-  public NextHopRecord(ByteBuffer input) throws EncodingException {
+  public NextHopRecord(final ByteBuffer input) throws EncodingException {
     wireDecode(input);
   }
 
   /**
-   * Encode using a new TLV encoder
+   * Encode using a new TLV encoder.
    *
    * @return The encoded buffer
    */
@@ -62,9 +63,11 @@
   }
 
   /**
-   * Encode as part of an existing encode context
+   * Encode as part of an existing encode context.
+   *
+   * @param encoder TlvEncoder instance
    */
-  public final void wireEncode(TlvEncoder encoder) {
+  public final void wireEncode(final TlvEncoder encoder) {
     int saveLength = encoder.getLength();
     encoder.writeNonNegativeIntegerTlv(Tlv.ControlParameters_Cost, cost);
     encoder.writeNonNegativeIntegerTlv(Tlv.ControlParameters_FaceId, faceId);
@@ -75,18 +78,19 @@
    * Decode the input from its TLV format.
    *
    * @param input The input buffer to decode. This reads from position() to
-   * limit(), but does not change the position.
+   *              limit(), but does not change the position.
    * @throws EncodingException For invalid encoding.
    */
-  public final void wireDecode(ByteBuffer input) throws EncodingException {
+  public final void wireDecode(final ByteBuffer input) throws EncodingException {
     TlvDecoder decoder = new TlvDecoder(input);
     wireDecode(decoder);
   }
 
   /**
-   * Decode as part of an existing decode context
+   * {@inheritDoc}
    */
-  public final void wireDecode(TlvDecoder decoder) throws EncodingException {
+  @Override
+  public void wireDecode(final TlvDecoder decoder) throws EncodingException {
     int endOffset = decoder.readNestedTlvsStart(NfdTlv.NextHopRecord);
     this.faceId = (int) decoder.readNonNegativeIntegerTlv(Tlv.ControlParameters_FaceId);
     this.cost = (int) decoder.readNonNegativeIntegerTlv(Tlv.ControlParameters_Cost);
@@ -94,30 +98,38 @@
   }
 
   /**
-   * Get face ID
+   * @return face ID
    */
   public int getFaceId() {
     return faceId;
   }
 
   /**
-   * Set face ID
+   * Set face ID.
+   *
+   * @param faceId face ID
+   * @return this
    */
-  public void setFaceId(int faceId) {
+  public NextHopRecord setFaceId(final int faceId) {
     this.faceId = faceId;
+    return this;
   }
 
   /**
-   * Get cost
+   * @return next hop record cost
    */
   public int getCost() {
     return cost;
   }
 
   /**
-   * Set cost
+   * Set next hop record cost.
+   *
+   * @param cost next hop record cost
+   * @return this
    */
-  public void setCost(int cost) {
+  public NextHopRecord setCost(final int cost) {
     this.cost = cost;
+    return this;
   }
 }
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 a5c0380..2608198 100644
--- a/src/main/java/com/intel/jndn/management/types/RibEntry.java
+++ b/src/main/java/com/intel/jndn/management/types/RibEntry.java
@@ -15,40 +15,41 @@
 
 import com.intel.jndn.management.enums.NfdTlv;
 import com.intel.jndn.management.helpers.EncodingHelper;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.ListIterator;
-
 import net.named_data.jndn.Name;
 import net.named_data.jndn.encoding.EncodingException;
 import net.named_data.jndn.encoding.tlv.TlvDecoder;
 import net.named_data.jndn.encoding.tlv.TlvEncoder;
 import net.named_data.jndn.util.Blob;
 
+import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.ListIterator;
+
 /**
- * Represent a entry in the RIB
- * @see <a href="http://redmine.named-data.net/projects/nfd/wiki/RibMgmt#RIB-Dataset">RIB Dataset</a>
+ * Represent a entry in the RIB.
  *
  * @author Andrew Brown <andrew.brown@intel.com>
+ * @see <a href="http://redmine.named-data.net/projects/nfd/wiki/RibMgmt#RIB-Dataset">RIB Dataset</a>
  */
 public class RibEntry implements Decodable {
   private Name name = new Name();
   private List<Route> routes = new ArrayList<>();
 
   /**
-   * Default constructor
+   * Default constructor.
    */
   public RibEntry() {
     // nothing to do
   }
 
   /**
-   * Constructor from wire format
+   * Constructor from wire format.
+   *
    * @param input wire format
-   * @throws EncodingException
+   * @throws EncodingException when decoding fails
    */
-  public RibEntry(ByteBuffer input) throws EncodingException {
+  public RibEntry(final ByteBuffer input) throws EncodingException {
     wireDecode(input);
   }
 
@@ -65,8 +66,10 @@
 
   /**
    * Encode as part of an existing encode context.
+   *
+   * @param encoder TlvEncoder instance
    */
-  public final void wireEncode(TlvEncoder encoder) {
+  public final void wireEncode(final TlvEncoder encoder) {
     int saveLength = encoder.getLength();
     ListIterator<Route> route = routes.listIterator(routes.size());
     while (route.hasPrevious()) {
@@ -80,19 +83,19 @@
    * Decode the input from its TLV format.
    *
    * @param input The input buffer to decode. This reads from position() to
-   * limit(), but does not change the position.
+   *              limit(), but does not change the position.
    * @throws EncodingException For invalid encoding.
    */
-  public final void wireDecode(ByteBuffer input) throws EncodingException {
+  public final void wireDecode(final ByteBuffer input) throws EncodingException {
     TlvDecoder decoder = new TlvDecoder(input);
     wireDecode(decoder);
   }
 
   /**
-   * Decode as part of an existing decode context.
+   * {@inheritDoc}
    */
   @Override
-  public final void wireDecode(TlvDecoder decoder) throws EncodingException {
+  public void wireDecode(final TlvDecoder decoder) throws EncodingException {
     int endOffset = decoder.readNestedTlvsStart(NfdTlv.RibEntry);
     name = EncodingHelper.decodeName(decoder);
     while (decoder.getOffset() < endOffset) {
@@ -104,50 +107,59 @@
   }
 
   /**
-   * Get name
+   * @return RIB entry name.
    */
   public Name getName() {
     return name;
   }
 
   /**
-   * Set name
+   * Set RIB entry name.
+   *
+   * @param name New name for the RIB entry
+   * @return this
    */
-  public void setName(Name name) {
+  public RibEntry setName(final Name name) {
     this.name = name;
+    return this;
   }
 
   /**
-   * Get routes
+   * @return List of associated routes to the RIB entry
    */
   public List<Route> getRoutes() {
     return routes;
   }
 
   /**
-   * Add route
+   * Add route.
+   *
+   * @param route Route to add to the RIB entry
+   * @return this
    */
-  public RibEntry addRoute(Route route) {
+  public RibEntry addRoute(final Route route) {
     getRoutes().add(route);
     return this;
   }
 
   /**
-   * Clear all routes
+   * Clear all routes.
    */
   public void clearRoutes() {
     getRoutes().clear();
   }
 
   /**
-   * Set routes
+   * Set routes.
+   *
+   * @param routes List of routes to associate with RIB entry.  Will replace previously associated routes.
    */
-  public void setRoutes(List<Route> routes) {
+  public void setRoutes(final List<Route> routes) {
     this.routes = routes;
   }
 
   /**
-   * Get human-readable representation of RibEntry
+   * @return Human-readable representation of RibEntry
    */
   @Override
   public String toString() {
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 0b9acb4..b134a6f 100644
--- a/src/main/java/com/intel/jndn/management/types/Route.java
+++ b/src/main/java/com/intel/jndn/management/types/Route.java
@@ -13,8 +13,6 @@
  */
 package com.intel.jndn.management.types;
 
-import java.nio.ByteBuffer;
-
 import com.intel.jndn.management.enums.NfdTlv;
 import com.intel.jndn.management.enums.RouteFlags;
 import net.named_data.jndn.encoding.EncodingException;
@@ -22,13 +20,15 @@
 import net.named_data.jndn.encoding.tlv.TlvEncoder;
 import net.named_data.jndn.util.Blob;
 
+import java.nio.ByteBuffer;
+
 /**
- * Represent a Route object from /localhost/nfd/rib/list
- * @see <a href="http://redmine.named-data.net/projects/nfd/wiki/RibMgmt#RIB-Dataset">RIB Dataset</a>
+ * Represent a Route object from /localhost/nfd/rib/list.
  *
  * @author Andrew Brown <andrew.brown@intel.com>
+ * @see <a href="http://redmine.named-data.net/projects/nfd/wiki/RibMgmt#RIB-Dataset">RIB Dataset</a>
  */
-public class Route {
+public class Route implements Decodable {
   public static final int INFINITE_EXPIRATION_PERIOD = -1;
 
   private int faceId = -1;
@@ -40,18 +40,19 @@
   /////////////////////////////////////////////////////////////////////////////
 
   /**
-   * Default constructor
+   * Default constructor.
    */
   public Route() {
     // nothing to do
   }
 
   /**
-   * Constructor from wire format
+   * Constructor from wire format.
+   *
    * @param input wire format
-   * @throws EncodingException
+   * @throws EncodingException when decoding fails
    */
-  public Route(ByteBuffer input) throws EncodingException {
+  public Route(final ByteBuffer input) throws EncodingException {
     wireDecode(input);
   }
 
@@ -69,9 +70,9 @@
   /**
    * Encode as part of an existing encode context.
    *
-   * @param encoder
+   * @param encoder TlvEncoder instance
    */
-  public final void wireEncode(TlvEncoder encoder) {
+  public final void wireEncode(final TlvEncoder encoder) {
     int saveLength = encoder.getLength();
     encoder.writeOptionalNonNegativeIntegerTlv(NfdTlv.ExpirationPeriod, expirationPeriod);
     encoder.writeNonNegativeIntegerTlv(NfdTlv.Flags, flags);
@@ -86,20 +87,18 @@
    *
    * @param input The input buffer to decode. This reads from position() to
    *              limit(), but does not change the position.
-   * @throws net.named_data.jndn.encoding.EncodingException
+   * @throws EncodingException when decoding fails
    */
-  public final void wireDecode(ByteBuffer input) throws EncodingException {
+  public final void wireDecode(final ByteBuffer input) throws EncodingException {
     TlvDecoder decoder = new TlvDecoder(input);
     wireDecode(decoder);
   }
 
   /**
-   * Decode as part of an existing decode context.
-   *
-   * @param decoder
-   * @throws EncodingException
+   * {@inheritDoc}
    */
-  public final void wireDecode(TlvDecoder decoder) throws EncodingException {
+  @Override
+  public final void wireDecode(final TlvDecoder decoder) throws EncodingException {
     int endOffset = decoder.readNestedTlvsStart(NfdTlv.Route);
     this.faceId = (int) decoder.readNonNegativeIntegerTlv(NfdTlv.FaceId);
     this.origin = (int) decoder.readNonNegativeIntegerTlv(NfdTlv.Origin);
@@ -110,103 +109,144 @@
   }
 
   /**
-   * Get Face ID
+   * Get Face ID.
+   *
+   * @return Face ID
    */
   public int getFaceId() {
     return faceId;
   }
 
   /**
-   * Set Face ID
+   * Set Face ID.
+   *
+   * @param faceId Face ID
+   * @return this
    */
-  public Route setFaceId(int faceId) {
+  public Route setFaceId(final int faceId) {
     this.faceId = faceId;
     return this;
   }
 
   /**
-   * Get origin
+   * Get route origin.
+   *
+   * @return origin code
+   * @see com.intel.jndn.management.enums.RouteOrigin
    */
   public int getOrigin() {
     return origin;
   }
 
   /**
-   * Set origin
+   * Set route origin.
+   *
+   * @param origin Route origin code
+   * @return this
+   * @see com.intel.jndn.management.enums.RouteOrigin
    */
-  public Route setOrigin(int origin) {
+  public Route setOrigin(final int origin) {
     this.origin = origin;
     return this;
   }
 
   /**
-   * Get cost
+   * Get route cost.
+   *
+   * @return route cost
    */
   public int getCost() {
     return cost;
   }
 
   /**
-   * Set cost
+   * Set cost.
+   *
+   * @param cost Route cost
+   * @return this
    */
-  public Route setCost(int cost) {
+  public Route setCost(final int cost) {
     this.cost = cost;
     return this;
   }
 
   /**
-   * Get flags
+   * Get flags.
+   *
+   * @return route flags
    */
   public int getFlags() {
     return flags;
   }
 
   /**
-   * Set flags
+   * Set flags.
+   *
+   * @param flags NFD Route flags
+   * @return this
+   * @see RouteFlags
    */
-  public void setFlags(int flags) {
+  public Route setFlags(final int flags) {
     this.flags = flags;
+    return this;
   }
 
   /**
-   * Get expiration period (in milliseconds)
+   * Get expiration period (in milliseconds).
+   *
+   * @return expiration period (in milliseconds)
    */
   public int getExpirationPeriod() {
     return expirationPeriod;
   }
 
   /**
-   * Check if route should not expire
+   * Check if route should not expire.
+   *
+   * @return true if route has associated expiration period, false otherwise
    */
   public boolean hasInfiniteExpirationPeriod() {
     return expirationPeriod < 0;
   }
 
   /**
-   * Set expiration period
+   * Set expiration period.
    *
-   * @param expirationPeriod
+   * @param expirationPeriod Expiration period in milliseconds
+   * @return this
    */
-  public void setExpirationPeriod(int expirationPeriod) {
+  public Route setExpirationPeriod(final int expirationPeriod) {
     this.expirationPeriod = expirationPeriod;
+    return this;
   }
 
   /**
-   * Get human-readable representation of Route
+   * Get a human-readable representation of the Route.
+   *
+   * @return Human-readable representation of the Route
    */
   @Override
   public String toString() {
     StringBuilder out = new StringBuilder();
     out.append("Route(");
-    out.append("FaceId: "); out.append(getFaceId()); out.append(", ");
-    out.append("Origin: "); out.append(getOrigin()); out.append(", ");
-    out.append("Cost: "); out.append(getCost()); out.append(", ");
-    out.append("Flags: "); out.append(getFlags()); out.append(", ");
+    out.append("FaceId: ");
+    out.append(getFaceId());
+    out.append(", ");
+    out.append("Origin: ");
+    out.append(getOrigin());
+    out.append(", ");
+    out.append("Cost: ");
+    out.append(getCost());
+    out.append(", ");
+    out.append("Flags: ");
+    out.append(getFlags());
+    out.append(", ");
 
     if (!hasInfiniteExpirationPeriod()) {
-      out.append("ExpirationPeriod: "); out.append(getExpirationPeriod()); out.append(" milliseconds");
-    }
-    else {
+      out.append("ExpirationPeriod: ");
+      out.append(getExpirationPeriod());
+      out.append(" milliseconds");
+    } else {
       out.append("ExpirationPeriod: Infinity");
     }
     out.append(")");
diff --git a/src/main/java/com/intel/jndn/management/types/StrategyChoice.java b/src/main/java/com/intel/jndn/management/types/StrategyChoice.java
index 7e092b2..7c1f8a4 100644
--- a/src/main/java/com/intel/jndn/management/types/StrategyChoice.java
+++ b/src/main/java/com/intel/jndn/management/types/StrategyChoice.java
@@ -13,21 +13,21 @@
  */
 package com.intel.jndn.management.types;
 
-import com.intel.jndn.management.helpers.EncodingHelper;
-import java.nio.ByteBuffer;
-
 import com.intel.jndn.management.enums.NfdTlv;
+import com.intel.jndn.management.helpers.EncodingHelper;
 import net.named_data.jndn.Name;
 import net.named_data.jndn.encoding.EncodingException;
 import net.named_data.jndn.encoding.tlv.TlvDecoder;
 import net.named_data.jndn.encoding.tlv.TlvEncoder;
 import net.named_data.jndn.util.Blob;
 
+import java.nio.ByteBuffer;
+
 /**
  * Represent a strategy choice entry.
- * @see <a href="http://redmine.named-data.net/projects/nfd/wiki/StrategyChoice">StrategyChoice</a>
-
+ *
  * @author Andrew Brown <andrew.brown@intel.com>
+ * @see <a href="http://redmine.named-data.net/projects/nfd/wiki/StrategyChoice">StrategyChoice</a>
  */
 public class StrategyChoice implements Decodable {
   private Name name;
@@ -36,18 +36,19 @@
   /////////////////////////////////////////////////////////////////////////////
 
   /**
-   * Default constructor
+   * Default constructor.
    */
   public StrategyChoice() {
     // nothing to do
   }
 
   /**
-   * Constructor from wire format
+   * Constructor from wire format.
+   *
    * @param input wire format
-   * @throws EncodingException
+   * @throws EncodingException when decoding fails
    */
-  public StrategyChoice(ByteBuffer input) throws EncodingException {
+  public StrategyChoice(final ByteBuffer input) throws EncodingException {
     wireDecode(input);
   }
 
@@ -65,9 +66,9 @@
   /**
    * Encode as part of an existing encode context.
    *
-   * @param encoder
+   * @param encoder TlvEncoder instance
    */
-  public final void wireEncode(TlvEncoder encoder) {
+  public final void wireEncode(final TlvEncoder encoder) {
     int saveLength = encoder.getLength();
     EncodingHelper.encodeStrategy(strategy, encoder);
     EncodingHelper.encodeName(name, encoder);
@@ -78,22 +79,19 @@
    * Decode the input from its TLV format.
    *
    * @param input The input buffer to decode. This reads from position() to
-   * limit(), but does not change the position.
+   *              limit(), but does not change the position.
    * @throws EncodingException For invalid encoding.
    */
-  public final void wireDecode(ByteBuffer input) throws EncodingException {
+  public final void wireDecode(final ByteBuffer input) throws EncodingException {
     TlvDecoder decoder = new TlvDecoder(input);
     wireDecode(decoder);
   }
 
   /**
-   * Decode as part of an existing decode context.
-   *
-   * @param decoder
-   * @throws EncodingException
+   * {@inheritDoc}
    */
   @Override
-  public final void wireDecode(TlvDecoder decoder) throws EncodingException {
+  public void wireDecode(final TlvDecoder decoder) throws EncodingException {
     int endOffset = decoder.readNestedTlvsStart(NfdTlv.StrategyChoice);
     name = EncodingHelper.decodeName(decoder);
     strategy = EncodingHelper.decodeStrategy(decoder);
@@ -116,16 +114,18 @@
 
   /**
    * @param name the {@link Name} to set
+   * @return this
    */
-  public StrategyChoice setName(Name name) {
+  public StrategyChoice setName(final Name name) {
     this.name = name;
     return this;
   }
 
   /**
    * @param strategy the {@link Name} to set
+   * @return this
    */
-  public StrategyChoice setStrategy(Name strategy) {
+  public StrategyChoice setStrategy(final Name strategy) {
     this.strategy = strategy;
     return this;
   }
diff --git a/src/main/java/com/intel/jndn/management/types/package-info.java b/src/main/java/com/intel/jndn/management/types/package-info.java
new file mode 100644
index 0000000..5a4c84b
--- /dev/null
+++ b/src/main/java/com/intel/jndn/management/types/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * NFD management types.
+ * @see <a href="http://redmine.named-data.net/projects/nfd/wiki/Management">NFD Management</a>
+ */
+package com.intel.jndn.management.types;
diff --git a/src/test/java/com/intel/jndn/management/NdnPingClientIT.java b/src/test/java/com/intel/jndn/management/NdnPingClientIT.java
index b561b6e..e0f9562 100644
--- a/src/test/java/com/intel/jndn/management/NdnPingClientIT.java
+++ b/src/test/java/com/intel/jndn/management/NdnPingClientIT.java
@@ -13,29 +13,17 @@
  */
 package com.intel.jndn.management;
 
-import com.intel.jndn.management.enums.Strategies;
-import com.intel.jndn.management.types.RibEntry;
-import com.intel.jndn.management.types.StrategyChoice;
-import com.intel.jndn.mock.MockKeyChain;
 import net.named_data.jndn.Face;
-import net.named_data.jndn.KeyLocator;
-import net.named_data.jndn.Name;
-import net.named_data.jndn.encoding.EncodingException;
-import net.named_data.jndn.security.KeyChain;
 import net.named_data.jndn.security.SecurityException;
 import org.junit.Before;
 import org.junit.Test;
 
 import java.io.IOException;
-import java.util.List;
-import java.util.Random;
-import java.util.logging.Logger;
 
-import static junit.framework.Assert.assertEquals;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertTrue;
 
 /**
- * Testing basic pining using real NFD instance (NFD must be run locally while executing the test)
+ * Testing basic pining using real NFD instance (NFD must be run locally while executing the test).
  *
  * @author Andrew Brown <andrew.brown@intel.com>
  */
diff --git a/src/test/java/com/intel/jndn/management/NfdcIT.java b/src/test/java/com/intel/jndn/management/NfdcIT.java
index 8a8a0c3..da341a2 100644
--- a/src/test/java/com/intel/jndn/management/NfdcIT.java
+++ b/src/test/java/com/intel/jndn/management/NfdcIT.java
@@ -13,11 +13,6 @@
  */
 package com.intel.jndn.management;
 
-import java.io.IOException;
-import java.util.List;
-import java.util.Random;
-import java.util.logging.Logger;
-
 import com.intel.jndn.management.enums.LocalControlHeader;
 import com.intel.jndn.management.enums.Strategies;
 import com.intel.jndn.management.types.RibEntry;
@@ -31,13 +26,19 @@
 import net.named_data.jndn.security.SecurityException;
 import org.junit.Before;
 import org.junit.Test;
-import org.junit.rules.ExpectedException;
 
-import static junit.framework.Assert.assertEquals;
-import static org.junit.Assert.*;
+import java.io.IOException;
+import java.util.List;
+import java.util.Random;
+import java.util.logging.Logger;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
 
 /**
- * Testing Nfdc with real NFD instance (NFD must be run locally while executing the test)
+ * Testing Nfdc with real NFD instance (NFD must be run locally while executing the test).
  *
  * @author Andrew Brown <andrew.brown@intel.com>
  */
@@ -112,7 +113,7 @@
   }
 
   /**
-   * LocalControlHeader would work only with NFD < 0.3.4, broken otherwise
+   * LocalControlHeader works only with NFD < 0.3.4, broken otherwise.
    */
   @Test(expected = ManagementException.class)
   public void testLocalControlHeader() throws Exception {
diff --git a/src/test/java/com/intel/jndn/management/TestHelper.java b/src/test/java/com/intel/jndn/management/TestHelper.java
index 09ea326..492d272 100644
--- a/src/test/java/com/intel/jndn/management/TestHelper.java
+++ b/src/test/java/com/intel/jndn/management/TestHelper.java
@@ -16,21 +16,22 @@
 import java.nio.ByteBuffer;
 
 /**
- * Helper methods for unit tests
+ * Helper methods for unit tests.
  */
-public class TestHelper {
+public final class TestHelper {
   /**
-   * Prevent instances of TestHelper
+   * Prevent instances of TestHelper.
    */
   private TestHelper() {
   }
 
   /**
-   * Construct ByteBuffer from int[]
+   * Construct ByteBuffer from int[].
+   *
+   * @param array array to convert
    */
   public static ByteBuffer
-  bufferFromIntArray(int[] array)
-  {
+  bufferFromIntArray(final int[] array) {
     ByteBuffer result = ByteBuffer.allocate(array.length);
     for (int value : array) {
       result.put((byte) (value & 0xFF));
diff --git a/src/test/java/com/intel/jndn/management/types/FaceStatusTest.java b/src/test/java/com/intel/jndn/management/types/FaceStatusTest.java
index b6b959b..6816ebd 100644
--- a/src/test/java/com/intel/jndn/management/types/FaceStatusTest.java
+++ b/src/test/java/com/intel/jndn/management/types/FaceStatusTest.java
@@ -17,26 +17,25 @@
 import com.intel.jndn.management.enums.FacePersistency;
 import com.intel.jndn.management.enums.FaceScope;
 import com.intel.jndn.management.enums.LinkType;
-
-import java.nio.ByteBuffer;
 import net.named_data.jndn.util.Blob;
-import static org.junit.Assert.*;
-
 import org.junit.Before;
 import org.junit.Test;
 
+import java.nio.ByteBuffer;
+
+import static org.junit.Assert.assertEquals;
+
 /**
- * Test whether the decoding for the face management service is working
- * correctly
+ * Test encode/decode of FaceStatus.
  *
  * @author Andrew Brown <andrew.brown@intel.com>
  */
 public class FaceStatusTest {
-  ByteBuffer TestFaceStatus;
+  private ByteBuffer testFaceStatusWire;
 
   @Before
   public void setUp() throws Exception {
-    TestFaceStatus = TestHelper.bufferFromIntArray(new int[] {
+    testFaceStatusWire = TestHelper.bufferFromIntArray(new int[] {
       0x80, 0x5e, 0x69, 0x01, 0x64, 0x72, 0x15, 0x74, 0x63, 0x70,
       0x34, 0x3a, 0x2f, 0x2f, 0x31, 0x39, 0x32, 0x2e, 0x30, 0x2e,
       0x32, 0x2e, 0x31, 0x3a, 0x36, 0x33, 0x36, 0x33, 0x81, 0x16,
@@ -50,9 +49,6 @@
     });
   }
 
-  /**
-   * Test encoding
-   */
   @Test
   public void testEncode() throws Exception {
     FaceStatus status = new FaceStatus();
@@ -74,15 +70,12 @@
 
     // encode
     Blob encoded = status.wireEncode();
-    assertEquals(TestFaceStatus, encoded.buf());
+    assertEquals(testFaceStatusWire, encoded.buf());
   }
 
-  /**
-   * Test decoding
-   */
   @Test
   public void testDecode() throws Exception {
-    FaceStatus status = new FaceStatus(TestFaceStatus);
+    FaceStatus status = new FaceStatus(testFaceStatusWire);
 
     assertEquals(100, status.getFaceId());
     assertEquals("tcp4://192.0.2.1:6363", status.getRemoteUri());
diff --git a/src/test/java/com/intel/jndn/management/types/FibEntryTest.java b/src/test/java/com/intel/jndn/management/types/FibEntryTest.java
index d8c19f4..a1080a0 100644
--- a/src/test/java/com/intel/jndn/management/types/FibEntryTest.java
+++ b/src/test/java/com/intel/jndn/management/types/FibEntryTest.java
@@ -14,39 +14,39 @@
 package com.intel.jndn.management.types;
 
 import com.intel.jndn.management.TestHelper;
+import net.named_data.jndn.Name;
+import net.named_data.jndn.encoding.EncodingException;
+import org.junit.Before;
+import org.junit.Test;
 
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
 import java.util.List;
-import net.named_data.jndn.Name;
-import net.named_data.jndn.encoding.EncodingException;
+
 import static org.junit.Assert.assertEquals;
 
-import org.junit.Before;
-import org.junit.Test;
-
 /**
- * Test encode/decode of FibEntry and NextHopRecord
+ * Test encode/decode of FibEntry and NextHopRecord.
  *
  * @author Andrew Brown <andrew.brown@intel.com>
  */
 public class FibEntryTest {
-  ByteBuffer TestNextHopRecord;
-  ByteBuffer TestFibEntryNoNextHops;
-  ByteBuffer TestFibEntry;
+  private ByteBuffer testNextHopRecordWire;
+  private ByteBuffer testFibEntryNoNextHopsWire;
+  private ByteBuffer testFibEntryWire;
 
   @Before
   public void setUp() {
-    TestNextHopRecord = TestHelper.bufferFromIntArray(new int[] {
+    testNextHopRecordWire = TestHelper.bufferFromIntArray(new int[] {
       0x81, 0x06, 0x69, 0x01, 0x0a, 0x6a, 0x01, 0xc8
     });
 
-    TestFibEntryNoNextHops = TestHelper.bufferFromIntArray(new int[] {
+    testFibEntryNoNextHopsWire = TestHelper.bufferFromIntArray(new int[] {
       0x80, 0x15, 0x07, 0x13, 0x08, 0x04, 0x74, 0x68, 0x69, 0x73,
       0x08, 0x02, 0x69, 0x73, 0x08, 0x01, 0x61, 0x08, 0x04, 0x74,
       0x65, 0x73, 0x74
     });
-    TestFibEntry = TestHelper.bufferFromIntArray(new int[] {
+    testFibEntryWire = TestHelper.bufferFromIntArray(new int[] {
       0x80, 0x38, 0x07, 0x13, 0x08, 0x04, 0x74, 0x68, 0x69, 0x73, 0x08, 0x02, 0x69, 0x73, 0x08, 0x01,
       0x61, 0x08, 0x04, 0x74, 0x65, 0x73, 0x74, 0x81, 0x06, 0x69, 0x01, 0x0a, 0x6a, 0x01, 0xc8, 0x81,
       0x07, 0x69, 0x01, 0x14, 0x6a, 0x02, 0x01, 0x2c, 0x81, 0x07, 0x69, 0x01, 0x1e, 0x6a, 0x02, 0x01,
@@ -55,51 +55,47 @@
   }
 
   @Test
-  public void testNextHopRecordEncode()
-  {
+  public void testNextHopRecordEncode() {
     NextHopRecord record = new NextHopRecord();
     record.setFaceId(10);
     record.setCost(200);
 
     ByteBuffer wire = record.wireEncode().buf();
-    assertEquals(TestNextHopRecord, wire);
+    assertEquals(testNextHopRecordWire, wire);
   }
 
   @Test
   public void testNextHopRecordDecode() throws EncodingException {
-    NextHopRecord record = new NextHopRecord(TestNextHopRecord);
+    NextHopRecord record = new NextHopRecord(testNextHopRecordWire);
 
     assertEquals(10, record.getFaceId());
     assertEquals(200, record.getCost());
   }
 
   @Test
-  public void testFibEntryNoNextHopEncode()
-  {
+  public void testFibEntryNoNextHopEncode() {
     FibEntry entry = new FibEntry();
     entry.setPrefix(new Name("/this/is/a/test"));
 
     ByteBuffer wire = entry.wireEncode().buf();
-    assertEquals(TestFibEntryNoNextHops, wire);
+    assertEquals(testFibEntryNoNextHopsWire, wire);
   }
 
   @Test
   public void testFibEntryNoNextHopsDecode() throws EncodingException {
-    FibEntry entry = new FibEntry(TestFibEntryNoNextHops);
+    FibEntry entry = new FibEntry(testFibEntryNoNextHopsWire);
 
     assertEquals("/this/is/a/test", entry.getPrefix().toString());
     assertEquals(0, entry.getNextHopRecords().size());
   }
 
   @Test
-  public void testFibEntryEncode()
-  {
+  public void testFibEntryEncode() {
     FibEntry entry = new FibEntry();
     entry.setPrefix(new Name("/this/is/a/test"));
 
     List<NextHopRecord> records = new ArrayList<>();
-    for (int i = 1; i < 4; i++)
-    {
+    for (int i = 1; i < 4; i++) {
       NextHopRecord record = new NextHopRecord();
       record.setFaceId(i * 10);
       record.setCost((i * 100) + 100);
@@ -115,12 +111,12 @@
     entry.addNextHopRecord(oneMore);
 
     ByteBuffer wire = entry.wireEncode().buf();
-    assertEquals(TestFibEntry, wire);
+    assertEquals(testFibEntryWire, wire);
   }
 
   @Test
   public void testFibEntryDecode() throws EncodingException {
-    FibEntry entry = new FibEntry(TestFibEntry);
+    FibEntry entry = new FibEntry(testFibEntryWire);
 
     List<NextHopRecord> records = entry.getNextHopRecords();
 
diff --git a/src/test/java/com/intel/jndn/management/types/ForwarderStatusTest.java b/src/test/java/com/intel/jndn/management/types/ForwarderStatusTest.java
index 5ff5157..fc2484d 100644
--- a/src/test/java/com/intel/jndn/management/types/ForwarderStatusTest.java
+++ b/src/test/java/com/intel/jndn/management/types/ForwarderStatusTest.java
@@ -27,11 +27,11 @@
  * @author Andrew Brown <andrew.brown@intel.com>
  */
 public class ForwarderStatusTest {
-  ByteBuffer TestForwarderStatus;
+  private ByteBuffer testForwarderStatusWire;
 
   @Before
   public void setUp() throws Exception {
-    TestForwarderStatus = TestHelper.bufferFromIntArray(new int[] {
+    testForwarderStatusWire = TestHelper.bufferFromIntArray(new int[] {
       0x80, 0x11, 0x30, 0x2e, 0x32, 0x2e, 0x30, 0x2d, 0x36, 0x35,
       0x2d, 0x67, 0x37, 0x35, 0x61, 0x62, 0x36, 0x62, 0x37, 0x81, 0x08, 0x00,
       0x00, 0x00, 0x57, 0x5b, 0x42, 0xa6, 0x2d, 0x82, 0x08, 0x00, 0x00, 0x00,
@@ -63,12 +63,12 @@
     status.setNOutNacks(4321);
 
     ByteBuffer wire = status.wireEncode().buf();
-    assertEquals(TestForwarderStatus, wire);
+    assertEquals(testForwarderStatusWire, wire);
   }
 
   @Test
   public void testDecode() throws EncodingException {
-    ForwarderStatus status = new ForwarderStatus(TestForwarderStatus);
+    ForwarderStatus status = new ForwarderStatus(testForwarderStatusWire);
 
     assertEquals("0.2.0-65-g75ab6b7", status.getNfdVersion());
     assertEquals(375193249325L,       status.getStartTimestamp());
diff --git a/src/test/java/com/intel/jndn/management/types/RibEntryTest.java b/src/test/java/com/intel/jndn/management/types/RibEntryTest.java
index 82b4d22..bb980ca 100644
--- a/src/test/java/com/intel/jndn/management/types/RibEntryTest.java
+++ b/src/test/java/com/intel/jndn/management/types/RibEntryTest.java
@@ -13,68 +13,69 @@
  */
 package com.intel.jndn.management.types;
 
-import java.nio.ByteBuffer;
-
 import com.intel.jndn.management.TestHelper;
 import com.intel.jndn.management.enums.RouteFlags;
+import net.named_data.jndn.Name;
+import org.junit.Before;
+import org.junit.Test;
 
+import java.nio.ByteBuffer;
 import java.util.List;
 import java.util.ListIterator;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
-import net.named_data.jndn.Name;
-import org.junit.Before;
-import org.junit.Test;
-
+/**
+ * Test RibEntry and Route encoding/decoding.
+ */
 public class RibEntryTest {
-  ByteBuffer RouteData;
-  ByteBuffer RouteInfiniteExpirationPeriod;
-  ByteBuffer RibEntryData;
-  ByteBuffer RibEntryInfiniteExpirationPeriod;
-  ByteBuffer RibEntryForRootData;
+  private ByteBuffer testRouteDataWire;
+  private ByteBuffer testRouteInfiniteExpirationPeriodWire;
+  private ByteBuffer testRibEntryDataWire;
+  private ByteBuffer testRibEntryInfiniteExpirationPeriodWire;
+  private ByteBuffer testRibEntryForRootDataWire;
 
   @Before
   public void setUp() throws Exception {
-    RouteData = TestHelper.bufferFromIntArray(new int[] {
-        0x81, 0x10, 0x69, 0x01, 0x01, 0x6f, 0x01, 0x80, 0x6a, 0x01, 0x64, 0x6c, 0x01, 0x02,
-        0x6d, 0x02, 0x27, 0x10
-      });
-    RouteInfiniteExpirationPeriod = TestHelper.bufferFromIntArray(new int[] {
-        0x81, 0x0C, 0x69, 0x01, 0x01, 0x6f, 0x01, 0x80, 0x6a, 0x01, 0x64, 0x6c, 0x01, 0x02
-      });
-    RibEntryData = TestHelper.bufferFromIntArray(new int[] {
-        // Header + Name (ndn:/hello/world)
-        0x80, 0x34, 0x07, 0x0e, 0x08, 0x05, 0x68, 0x65, 0x6c, 0x6c, 0x6f,
-        0x08, 0x05, 0x77, 0x6f, 0x72, 0x6c, 0x64,
-        // Route
-        0x81, 0x10, 0x69, 0x01, 0x01, 0x6f, 0x01, 0x80, 0x6a, 0x01, 0x64, 0x6c, 0x01, 0x02,
-        0x6d, 0x02, 0x27, 0x10,
-        // Route
-        0x81, 0x10, 0x69, 0x01, 0x02, 0x6f, 0x01, 0x00, 0x6a, 0x01, 0x20, 0x6c, 0x01, 0x01,
-        0x6d, 0x02, 0x13, 0x88
-      });
-    RibEntryInfiniteExpirationPeriod = TestHelper.bufferFromIntArray(new int[] {
-        // Header + Name (ndn:/hello/world)
-        0x80, 0x30, 0x07, 0x0e, 0x08, 0x05, 0x68, 0x65, 0x6c, 0x6c, 0x6f,
-        0x08, 0x05, 0x77, 0x6f, 0x72, 0x6c, 0x64,
-        // Route
-        0x81, 0x10, 0x69, 0x01, 0x01, 0x6f, 0x01, 0x80, 0x6a, 0x01, 0x64, 0x6c, 0x01, 0x02,
-        0x6d, 0x02, 0x27, 0x10,
-        // Route with no ExpirationPeriod
-        0x81, 0x0C, 0x69, 0x01, 0x02, 0x6f, 0x01, 0x00, 0x6a, 0x01, 0x20, 0x6c, 0x01, 0x01,
-      });
-    RibEntryForRootData = TestHelper.bufferFromIntArray(new int[] {
-        // Header + Name (ndn:/)
-        0x80, 0x26, 0x07, 0x00,
-        // Route
-        0x81, 0x10, 0x69, 0x01, 0x01, 0x6f, 0x01, 0x80, 0x6a, 0x01, 0x64, 0x6c, 0x01, 0x02,
-        0x6d, 0x02, 0x27, 0x10,
-        // Route
-        0x81, 0x10, 0x69, 0x01, 0x02, 0x6f, 0x01, 0x00, 0x6a, 0x01, 0x20, 0x6c, 0x01, 0x01,
-        0x6d, 0x02, 0x13, 0x88
-      });
+    testRouteDataWire = TestHelper.bufferFromIntArray(new int[]{
+      0x81, 0x10, 0x69, 0x01, 0x01, 0x6f, 0x01, 0x80, 0x6a, 0x01, 0x64, 0x6c, 0x01, 0x02,
+      0x6d, 0x02, 0x27, 0x10
+    });
+    testRouteInfiniteExpirationPeriodWire = TestHelper.bufferFromIntArray(new int[]{
+      0x81, 0x0C, 0x69, 0x01, 0x01, 0x6f, 0x01, 0x80, 0x6a, 0x01, 0x64, 0x6c, 0x01, 0x02
+    });
+    testRibEntryDataWire = TestHelper.bufferFromIntArray(new int[]{
+      // Header + Name (ndn:/hello/world)
+      0x80, 0x34, 0x07, 0x0e, 0x08, 0x05, 0x68, 0x65, 0x6c, 0x6c, 0x6f,
+      0x08, 0x05, 0x77, 0x6f, 0x72, 0x6c, 0x64,
+      // Route
+      0x81, 0x10, 0x69, 0x01, 0x01, 0x6f, 0x01, 0x80, 0x6a, 0x01, 0x64, 0x6c, 0x01, 0x02,
+      0x6d, 0x02, 0x27, 0x10,
+      // Route
+      0x81, 0x10, 0x69, 0x01, 0x02, 0x6f, 0x01, 0x00, 0x6a, 0x01, 0x20, 0x6c, 0x01, 0x01,
+      0x6d, 0x02, 0x13, 0x88
+    });
+    testRibEntryInfiniteExpirationPeriodWire = TestHelper.bufferFromIntArray(new int[]{
+      // Header + Name (ndn:/hello/world)
+      0x80, 0x30, 0x07, 0x0e, 0x08, 0x05, 0x68, 0x65, 0x6c, 0x6c, 0x6f,
+      0x08, 0x05, 0x77, 0x6f, 0x72, 0x6c, 0x64,
+      // Route
+      0x81, 0x10, 0x69, 0x01, 0x01, 0x6f, 0x01, 0x80, 0x6a, 0x01, 0x64, 0x6c, 0x01, 0x02,
+      0x6d, 0x02, 0x27, 0x10,
+      // Route with no ExpirationPeriod
+      0x81, 0x0C, 0x69, 0x01, 0x02, 0x6f, 0x01, 0x00, 0x6a, 0x01, 0x20, 0x6c, 0x01, 0x01,
+    });
+    testRibEntryForRootDataWire = TestHelper.bufferFromIntArray(new int[]{
+      // Header + Name (ndn:/)
+      0x80, 0x26, 0x07, 0x00,
+      // Route
+      0x81, 0x10, 0x69, 0x01, 0x01, 0x6f, 0x01, 0x80, 0x6a, 0x01, 0x64, 0x6c, 0x01, 0x02,
+      0x6d, 0x02, 0x27, 0x10,
+      // Route
+      0x81, 0x10, 0x69, 0x01, 0x02, 0x6f, 0x01, 0x00, 0x6a, 0x01, 0x20, 0x6c, 0x01, 0x01,
+      0x6d, 0x02, 0x13, 0x88
+    });
   }
 
   @Test
@@ -86,12 +87,12 @@
     route.setFlags(RouteFlags.CAPTURE.toInteger());
     route.setExpirationPeriod(10000);
 
-    assertEquals(RouteData, route.wireEncode().buf());
+    assertEquals(testRouteDataWire, route.wireEncode().buf());
   }
 
   @Test
   public void testRouteDecode() throws Exception {
-    Route route = new Route(RouteData);
+    Route route = new Route(testRouteDataWire);
 
     assertEquals(route.getFaceId(), 1);
     assertEquals(route.getOrigin(), 128);
@@ -110,12 +111,12 @@
     route.setFlags(RouteFlags.CAPTURE.toInteger());
     route.setExpirationPeriod(Route.INFINITE_EXPIRATION_PERIOD);
 
-    assertEquals(RouteInfiniteExpirationPeriod, route.wireEncode().buf());
+    assertEquals(testRouteInfiniteExpirationPeriodWire, route.wireEncode().buf());
   }
 
   @Test
   public void testRouteInfiniteExpirationPeriodDecode() throws Exception {
-    Route route = new Route(RouteInfiniteExpirationPeriod);
+    Route route = new Route(testRouteInfiniteExpirationPeriodWire);
 
     assertEquals(route.getFaceId(), 1);
     assertEquals(route.getOrigin(), 128);
@@ -135,19 +136,19 @@
     route.setExpirationPeriod(10000);
 
     assertEquals(route.toString(), "Route(FaceId: 1, Origin: 128, Cost: 100, " +
-                                   "Flags: 2, ExpirationPeriod: 10000 milliseconds)");
+      "Flags: 2, ExpirationPeriod: 10000 milliseconds)");
   }
 
   @Test
   public void testRibEntryEncode() throws Exception {
     RibEntry entry = newRibEntry("/hello/world", 2, false);
 
-    assertEquals(RibEntryData, entry.wireEncode().buf());
+    assertEquals(testRibEntryDataWire, entry.wireEncode().buf());
   }
 
   @Test
   public void testRibEntryDecode() throws Exception {
-    RibEntry entry = new RibEntry(RibEntryData);
+    RibEntry entry = new RibEntry(testRibEntryDataWire);
 
     assertRibEntry(entry, "/hello/world", 2, false);
   }
@@ -156,12 +157,12 @@
   public void testRibEntryForRootEncode() throws Exception {
     RibEntry entry = newRibEntry("/", 2, false);
 
-    assertEquals(RibEntryForRootData, entry.wireEncode().buf());
+    assertEquals(testRibEntryForRootDataWire, entry.wireEncode().buf());
   }
 
   @Test
   public void testRibEntryForRootDecode() throws Exception {
-    RibEntry entry = new RibEntry(RibEntryForRootData);
+    RibEntry entry = new RibEntry(testRibEntryForRootDataWire);
 
     assertRibEntry(entry, "/", 2, false);
   }
@@ -169,14 +170,14 @@
   @Test
   public void testRibEntryInfiniteExpirationPeriodEncode() throws Exception {
     RibEntry entry = newRibEntry("/hello/world", 2, true);
-    assertEquals(RibEntryInfiniteExpirationPeriod, entry.wireEncode().buf());
+    assertEquals(testRibEntryInfiniteExpirationPeriodWire, entry.wireEncode().buf());
   }
 
   @Test
   public void testRibEntryInfiniteExpirationPeriodDecode() throws Exception {
     RibEntry entry = new RibEntry();
 
-    entry.wireDecode(RibEntryInfiniteExpirationPeriod);
+    entry.wireDecode(testRibEntryInfiniteExpirationPeriodWire);
     assertRibEntry(entry, "/hello/world", 2, true);
   }
 
@@ -195,11 +196,11 @@
     RibEntry entry = newRibEntry("/hello/world", 2, true);
 
     assertEquals("RibEntry{\n" +
-                 "  Name: /hello/world\n" +
-                 "  Route(FaceId: 1, Origin: 128, Cost: 100, Flags: 2, ExpirationPeriod: 10000 milliseconds)\n" +
-                 "  Route(FaceId: 2, Origin: 0, Cost: 32, Flags: 1, ExpirationPeriod: Infinity)\n" +
-                 "}",
-                 entry.toString());
+        "  Name: /hello/world\n" +
+        "  Route(FaceId: 1, Origin: 128, Cost: 100, Flags: 2, ExpirationPeriod: 10000 milliseconds)\n" +
+        "  Route(FaceId: 2, Origin: 0, Cost: 32, Flags: 1, ExpirationPeriod: Infinity)\n" +
+        "}",
+      entry.toString());
   }
 
   @Test
@@ -211,17 +212,17 @@
     b.setRoutes(a.getRoutes());
 
     assertEquals("RibEntry{\n" +
-                 "  Name: /another/prefix\n" +
-                 "  Route(FaceId: 1, Origin: 128, Cost: 100, Flags: 2, ExpirationPeriod: 10000 milliseconds)\n" +
-                 "  Route(FaceId: 2, Origin: 0, Cost: 32, Flags: 1, ExpirationPeriod: Infinity)\n" +
-                 "}",
-                 b.toString());
+        "  Name: /another/prefix\n" +
+        "  Route(FaceId: 1, Origin: 128, Cost: 100, Flags: 2, ExpirationPeriod: 10000 milliseconds)\n" +
+        "  Route(FaceId: 2, Origin: 0, Cost: 32, Flags: 1, ExpirationPeriod: Infinity)\n" +
+        "}",
+      b.toString());
   }
 
   //////////////////////////////////////////////////////////////////////////////
   //////////////////////////////////////////////////////////////////////////////
 
-  private RibEntry newRibEntry(String name, int nRoutes, boolean isInfiniteSecond) {
+  private RibEntry newRibEntry(final String name, final int nRoutes, final boolean isInfiniteSecond) {
     RibEntry entry = new RibEntry();
     entry.setName(new Name(name));
 
@@ -241,8 +242,7 @@
       route2.setFlags(RouteFlags.CHILD_INHERIT.toInteger());
       if (isInfiniteSecond) {
         route2.setExpirationPeriod(Route.INFINITE_EXPIRATION_PERIOD);
-      }
-      else {
+      } else {
         route2.setExpirationPeriod(5000);
       }
       entry.addRoute(route2);
@@ -251,7 +251,8 @@
     return entry;
   }
 
-  private void assertRibEntry(RibEntry entry, String name, int nRoutes, boolean isInfiniteSecond) throws Exception {
+  private void assertRibEntry(final RibEntry entry, final String name, final int nRoutes,
+                              final boolean isInfiniteSecond) throws Exception {
     assertEquals(entry.getName().toUri(), name);
     assertEquals(entry.getRoutes().size(), nRoutes);
 
@@ -278,8 +279,7 @@
       if (isInfiniteSecond) {
         assertEquals(item.getExpirationPeriod(), Route.INFINITE_EXPIRATION_PERIOD);
         assertEquals(item.hasInfiniteExpirationPeriod(), true);
-      }
-      else {
+      } else {
         assertEquals(item.getExpirationPeriod(), 5000);
         assertEquals(item.hasInfiniteExpirationPeriod(), false);
       }
diff --git a/src/test/java/com/intel/jndn/management/types/StrategyChoiceTest.java b/src/test/java/com/intel/jndn/management/types/StrategyChoiceTest.java
index 077d91c..1940b41 100644
--- a/src/test/java/com/intel/jndn/management/types/StrategyChoiceTest.java
+++ b/src/test/java/com/intel/jndn/management/types/StrategyChoiceTest.java
@@ -24,16 +24,16 @@
 import static org.junit.Assert.assertEquals;
 
 /**
- * Test StrategyChoice encoding/decoding
+ * Test StrategyChoice encoding/decoding.
  *
  * @author Andrew Brown <andrew.brown@intel.com>
  */
 public class StrategyChoiceTest {
-  ByteBuffer TestStrategyChoice;
+  private ByteBuffer testStrategyChoiceWire;
 
   @Before
   public void setUp() throws Exception {
-    TestStrategyChoice = TestHelper.bufferFromIntArray(new int[] {
+    testStrategyChoiceWire = TestHelper.bufferFromIntArray(new int[]{
       0x80, 0x39, 0x07, 0x0e, 0x08, 0x05, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x08, 0x05, 0x77,
       0x6f, 0x72, 0x6c, 0x64, 0x6b, 0x27, 0x07, 0x25, 0x08, 0x04, 0x73, 0x6f, 0x6d, 0x65,
       0x08, 0x03, 0x6e, 0x6f, 0x6e, 0x08, 0x08, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e,
@@ -47,16 +47,15 @@
     StrategyChoice strategyChoice = new StrategyChoice();
     strategyChoice
       .setName(new Name("/hello/world"))
-      .setStrategy(new Name("/some/non/existing/strategy/name"))
-    ;
+      .setStrategy(new Name("/some/non/existing/strategy/name"));
 
     ByteBuffer wire = strategyChoice.wireEncode().buf();
-    assertEquals(TestStrategyChoice, wire);
+    assertEquals(testStrategyChoiceWire, wire);
   }
 
   @Test
   public void testDecode() throws EncodingException {
-    StrategyChoice strategyChoice = new StrategyChoice(TestStrategyChoice);
+    StrategyChoice strategyChoice = new StrategyChoice(testStrategyChoiceWire);
     assertEquals("/hello/world", strategyChoice.getName().toUri());
     assertEquals("/some/non/existing/strategy/name", strategyChoice.getStrategy().toUri());
   }