diff --git a/src/main/java/com/intel/jndn/utils/client/SegmentationType.java b/src/main/java/com/intel/jndn/utils/client/SegmentationType.java
index d0b6c6e..5d7dd88 100644
--- a/src/main/java/com/intel/jndn/utils/client/SegmentationType.java
+++ b/src/main/java/com/intel/jndn/utils/client/SegmentationType.java
@@ -24,7 +24,7 @@
   SEGMENT((byte) 0x00),
   BYTE_OFFSET((byte) 0xFB);
 
-  private byte marker;
+  private final byte marker;
 
   SegmentationType(byte marker) {
     this.marker = marker;
diff --git a/src/main/java/com/intel/jndn/utils/client/impl/DefaultSegmentedClient.java b/src/main/java/com/intel/jndn/utils/client/impl/DefaultSegmentedClient.java
index f3c5412..74b7144 100644
--- a/src/main/java/com/intel/jndn/utils/client/impl/DefaultSegmentedClient.java
+++ b/src/main/java/com/intel/jndn/utils/client/impl/DefaultSegmentedClient.java
@@ -37,7 +37,7 @@
 
   private static final Logger logger = Logger.getLogger(DefaultSegmentedClient.class.getName());
   private static DefaultSegmentedClient defaultInstance;
-  private byte marker = 0x00;
+  private final byte marker = 0x00;
 
   /**
    * Singleton access for simpler client use
diff --git a/src/main/java/com/intel/jndn/utils/client/impl/DefaultStreamingClient.java b/src/main/java/com/intel/jndn/utils/client/impl/DefaultStreamingClient.java
index 29e7c76..ce5db19 100644
--- a/src/main/java/com/intel/jndn/utils/client/impl/DefaultStreamingClient.java
+++ b/src/main/java/com/intel/jndn/utils/client/impl/DefaultStreamingClient.java
@@ -38,9 +38,7 @@
  * @author Andrew Brown, andrew.brown@intel.com
  */
 public class DefaultStreamingClient implements StreamingClient {
-
-  private static final Logger logger = Logger.getLogger(DefaultStreamingClient.class.getName());
-  private SegmentedClient client;
+  private static final Logger LOGGER = Logger.getLogger(DefaultStreamingClient.class.getName());
 
   /**
    * {@inheritDoc}
@@ -51,13 +49,14 @@
   }
 
   /**
-   * 
-   * @param face
-   * @param interest
-   * @param partitionMarker
-   * @param onException
-   * @return
-   * @throws IOException
+   * @param face the {@link Face} on which to make the request; call {@link Face#processEvents()} separately to complete
+   * the request
+   * @param interest the {@link Interest} to send over the network
+   * @param partitionMarker the byte marker identifying how the data packets are partitioned (e.g. segmentation, see
+   * http://named-data.net/doc/tech-memos/naming-conventions.pdf)
+   * @param onException callback fired if a failure occurs during streaming
+   * @return a stream of content bytes
+   * @throws IOException if the stream setup fails
    */
   public InputStream getStreamAsync(Face face, Interest interest, SegmentationType partitionMarker, OnException onException) throws IOException {
     SegmentedClient client = DefaultSegmentedClient.getDefault();
@@ -65,11 +64,10 @@
   }
 
   /**
-   *
-   * @param onDataStream
-   * @param onException
-   * @return
-   * @throws IOException
+   * @param onDataStream the data stream of incoming data packets
+   * @param onException callback fired if a failure occurs during streaming
+   * @return a stream of content bytes
+   * @throws IOException if the stream setup fails
    */
   public InputStream getStreamAsync(DataStream onDataStream, OnException onException) throws IOException {
     PipedInputStream in = new PipedInputStream();
@@ -98,7 +96,7 @@
 
     @Override
     public void onException(Exception exception) {
-      logger.log(Level.SEVERE, "Streaming failed", exception);
+      LOGGER.log(Level.SEVERE, "Streaming failed", exception);
     }
   }
 }
diff --git a/src/main/java/com/intel/jndn/utils/client/impl/SegmentedDataStream.java b/src/main/java/com/intel/jndn/utils/client/impl/SegmentedDataStream.java
index 61d4da4..43f6839 100644
--- a/src/main/java/com/intel/jndn/utils/client/impl/SegmentedDataStream.java
+++ b/src/main/java/com/intel/jndn/utils/client/impl/SegmentedDataStream.java
@@ -50,8 +50,8 @@
   private final byte PARTITION_MARKER = 0x00;
   private volatile long current = -1;
   private volatile long end = Long.MAX_VALUE;
-  private Map<Long, Data> packets = new HashMap<>();
-  private List<Object> observers = new ArrayList<>();
+  private final Map<Long, Data> packets = new HashMap<>();
+  private final List<Object> observers = new ArrayList<>();
   private Exception exception;
 
   @Override
@@ -86,7 +86,6 @@
       throw new StreamException(exception);
     }
 
-    Object o = new LinkedList();
     return new DataAssembler(list(), PARTITION_MARKER).assemble();
   }
 
@@ -148,7 +147,7 @@
         current++;
         assert (packets.containsKey(current));
         Data retrieved = packets.get(current);
-        observersOfType(OnData.class).stream().forEach((OnData cb) -> {
+        observersOfType(OnData.class).forEach((OnData cb) -> {
           cb.onData(interest, retrieved);
         });
       } while (hasNextPacket());
@@ -174,14 +173,14 @@
 
   @Override
   public synchronized void onComplete() {
-    observersOfType(OnComplete.class).stream().forEach((OnComplete cb) -> {
+    observersOfType(OnComplete.class).forEach((OnComplete cb) -> {
       cb.onComplete();
     });
   }
 
   @Override
   public synchronized void onTimeout(Interest interest) {
-    observersOfType(OnTimeout.class).stream().forEach((OnTimeout cb) -> {
+    observersOfType(OnTimeout.class).forEach((OnTimeout cb) -> {
       cb.onTimeout(interest);
     });
   }
@@ -190,7 +189,7 @@
   public synchronized void onException(Exception exception) {
     this.exception = exception;
 
-    observersOfType(OnException.class).stream().forEach((OnException cb) -> {
+    observersOfType(OnException.class).forEach((OnException cb) -> {
       cb.onException(exception);
     });
   }
diff --git a/src/main/java/com/intel/jndn/utils/client/impl/SimpleClient.java b/src/main/java/com/intel/jndn/utils/client/impl/SimpleClient.java
index 00e224f..5ebf05a 100644
--- a/src/main/java/com/intel/jndn/utils/client/impl/SimpleClient.java
+++ b/src/main/java/com/intel/jndn/utils/client/impl/SimpleClient.java
@@ -160,7 +160,6 @@
    * @return a default interest for the given name
    */
   public Interest getDefaultInterest(Name name) {
-    Interest interest = new Interest(name, interestLifetime);
-    return interest;
+    return new Interest(name, interestLifetime);
   }
 }
diff --git a/src/main/java/com/intel/jndn/utils/impl/BoundedLinkedMap.java b/src/main/java/com/intel/jndn/utils/impl/BoundedLinkedMap.java
index 3cc4538..6102a9b 100644
--- a/src/main/java/com/intel/jndn/utils/impl/BoundedLinkedMap.java
+++ b/src/main/java/com/intel/jndn/utils/impl/BoundedLinkedMap.java
@@ -38,15 +38,13 @@
  */
 public class BoundedLinkedMap<K, V> implements Map<K, V> {
   private final LinkedHashMap<K, V> map;
-  private final int maxSize;
   private K latest;
 
   /**
    * @param maxSize the maximum allowed number of records to store
    */
   public BoundedLinkedMap(int maxSize) {
-    this.maxSize = maxSize;
-    this.map = new LinkedHashMap<K, V>(this.maxSize) {
+    this.map = new LinkedHashMap<K, V>(maxSize) {
       @Override
       public boolean removeEldestEntry(Map.Entry<K, V> eldest) {
         return size() > maxSize;
diff --git a/src/main/java/com/intel/jndn/utils/processing/impl/SigningStage.java b/src/main/java/com/intel/jndn/utils/processing/impl/SigningStage.java
index 74df0b0..d9eb897 100644
--- a/src/main/java/com/intel/jndn/utils/processing/impl/SigningStage.java
+++ b/src/main/java/com/intel/jndn/utils/processing/impl/SigningStage.java
@@ -20,8 +20,7 @@
 import net.named_data.jndn.security.SecurityException;
 
 /**
- * As a part of a {@link com.intel.jndn.utils.ServerIn} pipeline, this stage
- * will sign a {@link Data} packet.
+ * As a part of a server pipeline, this stage will sign a {@link Data} packet.
  *
  * @author Andrew Brown, andrew.brown@intel.com
  */
diff --git a/src/main/java/com/intel/jndn/utils/pubsub/NdnAnnouncementService.java b/src/main/java/com/intel/jndn/utils/pubsub/NdnAnnouncementService.java
index b1e5180..ccb058c 100644
--- a/src/main/java/com/intel/jndn/utils/pubsub/NdnAnnouncementService.java
+++ b/src/main/java/com/intel/jndn/utils/pubsub/NdnAnnouncementService.java
@@ -47,7 +47,7 @@
   private final Name topicPrefix;
   private final Name broadcastPrefix;
   private final Set<Long> known = new HashSet<>();
-  private BackoffRetryClient client;
+  private final BackoffRetryClient client;
   private boolean stopped = false;
 
   private NdnAnnouncementService(Face face, Name broadcastPrefix, Name topicPrefix) {
diff --git a/src/main/java/com/intel/jndn/utils/pubsub/PubSubNamespace.java b/src/main/java/com/intel/jndn/utils/pubsub/PubSubNamespace.java
index f524a10..53c8cbc 100644
--- a/src/main/java/com/intel/jndn/utils/pubsub/PubSubNamespace.java
+++ b/src/main/java/com/intel/jndn/utils/pubsub/PubSubNamespace.java
@@ -17,7 +17,6 @@
 import net.named_data.jndn.Data;
 import net.named_data.jndn.Name;
 import net.named_data.jndn.encoding.EncodingException;
-import net.named_data.jndn.encoding.tlv.Tlv;
 import net.named_data.jndn.encoding.tlv.TlvDecoder;
 import net.named_data.jndn.encoding.tlv.TlvEncoder;
 import net.named_data.jndn.util.Blob;
diff --git a/src/main/java/com/intel/jndn/utils/repository/impl/DataNotFoundException.java b/src/main/java/com/intel/jndn/utils/repository/impl/DataNotFoundException.java
index af64f15..df0659f 100644
--- a/src/main/java/com/intel/jndn/utils/repository/impl/DataNotFoundException.java
+++ b/src/main/java/com/intel/jndn/utils/repository/impl/DataNotFoundException.java
@@ -14,7 +14,7 @@
 package com.intel.jndn.utils.repository.impl;
 
 /**
- * Thrown when a {@link Repository} cannot retrieve a stored packet.
+ * Thrown when a {@link com.intel.jndn.utils.Repository} cannot retrieve a stored packet.
  *
  * @author Andrew Brown, andrew.brown@intel.com
  */
diff --git a/src/main/java/com/intel/jndn/utils/repository/impl/ForLoopRepository.java b/src/main/java/com/intel/jndn/utils/repository/impl/ForLoopRepository.java
index e83e4e9..bb259c1 100644
--- a/src/main/java/com/intel/jndn/utils/repository/impl/ForLoopRepository.java
+++ b/src/main/java/com/intel/jndn/utils/repository/impl/ForLoopRepository.java
@@ -30,7 +30,7 @@
  */
 public class ForLoopRepository implements Repository {
 
-  private List<Record> storage = new ArrayList<>();
+  private final List<Record> storage = new ArrayList<>();
 
   /**
    * {@inheritDoc}
diff --git a/src/main/java/com/intel/jndn/utils/server/DynamicServer.java b/src/main/java/com/intel/jndn/utils/server/DynamicServer.java
index 1859897..f8432ca 100644
--- a/src/main/java/com/intel/jndn/utils/server/DynamicServer.java
+++ b/src/main/java/com/intel/jndn/utils/server/DynamicServer.java
@@ -18,8 +18,8 @@
 import java.io.IOException;
 
 /**
- * Defines the API for a {@link Server} producing {@link Data} packets
- * dynamically; in other words, when an {@link Interest} arrives, this server
+ * Defines the API for a {@link Server} producing data packets
+ * dynamically; in other words, when an interest arrives, this server
  * will run a callback to determine what packet to send back. As good practice,
  * keep callback methods as short as possible.
  *
@@ -28,8 +28,8 @@
 public interface DynamicServer extends Server {
 
   /**
-   * Set the callback method to run when an {@link Interest} packet is passed to
-   * this server. This method should either return a {@link Data} packet that
+   * Set the callback method to run when an interest packet is passed to
+   * this server. This method should either return a data packet that
    * satisfies the Interest or throw an Exception to avoid sending. Calling this
    * method a second time should replace the callback.
    *
diff --git a/src/test/java/com/intel/jndn/utils/TestHelper.java b/src/test/java/com/intel/jndn/utils/TestHelper.java
index db4011c..72a96d7 100644
--- a/src/test/java/com/intel/jndn/utils/TestHelper.java
+++ b/src/test/java/com/intel/jndn/utils/TestHelper.java
@@ -105,7 +105,7 @@
 
     public ScheduledExecutorService executor;
     public KeyChain keyChain;
-    public List<Face> faces = new ArrayList<>();
+    public final List<Face> faces = new ArrayList<>();
   }
 
   public static class EventProcessor implements Runnable {
diff --git a/src/test/java/com/intel/jndn/utils/client/impl/AdvancedClientFileTestIT.java b/src/test/java/com/intel/jndn/utils/client/impl/AdvancedClientFileTestIT.java
index f691a1c..d778a40 100644
--- a/src/test/java/com/intel/jndn/utils/client/impl/AdvancedClientFileTestIT.java
+++ b/src/test/java/com/intel/jndn/utils/client/impl/AdvancedClientFileTestIT.java
@@ -69,7 +69,7 @@
     long startTime = System.currentTimeMillis();
     AdvancedClient client = new AdvancedClient();
     List<CompletableFuture<Data>> requests = expressInterests(client, consumer, PREFIX, NUM_MESSAGES);
-    List<Data> datas = requests.stream().map((f) -> TestHelper.retrieve(f)).collect(Collectors.toList());
+    requests.stream().map((f) -> TestHelper.retrieve(f)).collect(Collectors.toList());
     long endTime = System.currentTimeMillis();
 
     logger.info(String.format("Transfered %d bytes in %d ms", MESSAGE_SIZE_BYTES * NUM_MESSAGES, endTime - startTime));
diff --git a/src/test/java/com/intel/jndn/utils/client/impl/AdvancedClientStressTestIT.java b/src/test/java/com/intel/jndn/utils/client/impl/AdvancedClientStressTestIT.java
index ae99b6d..b09ae6f 100644
--- a/src/test/java/com/intel/jndn/utils/client/impl/AdvancedClientStressTestIT.java
+++ b/src/test/java/com/intel/jndn/utils/client/impl/AdvancedClientStressTestIT.java
@@ -69,7 +69,7 @@
     long startTime = System.currentTimeMillis();
     AdvancedClient client = new AdvancedClient();
     List<CompletableFuture<Data>> requests = expressInterests(client, consumer, PREFIX, NUM_MESSAGES);
-    List<Data> datas = requests.stream().map((f) -> TestHelper.retrieve(f)).collect(Collectors.toList());
+    requests.stream().map((f) -> TestHelper.retrieve(f)).collect(Collectors.toList());
     long endTime = System.currentTimeMillis();
 
     logger.info(String.format("Transfered %d bytes in %d ms", MESSAGE_SIZE_BYTES * NUM_MESSAGES, endTime - startTime));
diff --git a/src/test/java/com/intel/jndn/utils/client/impl/AdvancedClientTest.java b/src/test/java/com/intel/jndn/utils/client/impl/AdvancedClientTest.java
index 0109fd0..2462f23 100644
--- a/src/test/java/com/intel/jndn/utils/client/impl/AdvancedClientTest.java
+++ b/src/test/java/com/intel/jndn/utils/client/impl/AdvancedClientTest.java
@@ -71,7 +71,7 @@
 
     Face face = forwarder.connect();
     face.registerPrefix(name, new OnInterestCallback() {
-      private int max = 9;
+      private final int max = 9;
 
       @Override
       public void onInterest(Name prefix, Interest interest, Face face, long interestFilterId, InterestFilter filter) {
diff --git a/src/test/java/com/intel/jndn/utils/client/impl/DataAssemblerTest.java b/src/test/java/com/intel/jndn/utils/client/impl/DataAssemblerTest.java
index e3bdf7b..5d15a89 100644
--- a/src/test/java/com/intel/jndn/utils/client/impl/DataAssemblerTest.java
+++ b/src/test/java/com/intel/jndn/utils/client/impl/DataAssemblerTest.java
@@ -73,6 +73,6 @@
     byte marker = 0x00;
     DataAssembler instance = new DataAssembler(packets, marker);
 
-    Data reassembled = instance.assemble();
+    instance.assemble();
   }
 }
diff --git a/src/test/java/com/intel/jndn/utils/client/impl/DefaultRetryClientTest.java b/src/test/java/com/intel/jndn/utils/client/impl/DefaultRetryClientTest.java
index f529b58..c5f93b2 100644
--- a/src/test/java/com/intel/jndn/utils/client/impl/DefaultRetryClientTest.java
+++ b/src/test/java/com/intel/jndn/utils/client/impl/DefaultRetryClientTest.java
@@ -34,9 +34,9 @@
 
   private static final double INTEREST_LIFETIME_MS = 1.0;
   private DefaultRetryClient client;
-  private Name name = new Name("/test/retry/client");
-  private Interest interest = new Interest(name, INTEREST_LIFETIME_MS);
-  private TestCounter counter = new TestCounter();
+  private final Name name = new Name("/test/retry/client");
+  private final Interest interest = new Interest(name, INTEREST_LIFETIME_MS);
+  private final TestCounter counter = new TestCounter();
 
   @Before
   public void before() throws Exception {
diff --git a/src/test/java/com/intel/jndn/utils/client/impl/DefaultSegmentedClientTest.java b/src/test/java/com/intel/jndn/utils/client/impl/DefaultSegmentedClientTest.java
index 05c85f5..e4082c3 100644
--- a/src/test/java/com/intel/jndn/utils/client/impl/DefaultSegmentedClientTest.java
+++ b/src/test/java/com/intel/jndn/utils/client/impl/DefaultSegmentedClientTest.java
@@ -34,7 +34,7 @@
  */
 public class DefaultSegmentedClientTest {
 
-  private DefaultSegmentedClient instance = new DefaultSegmentedClient();
+  private final DefaultSegmentedClient instance = new DefaultSegmentedClient();
 
   @Test
   public void testGetSegmentsAsync() throws Exception {
diff --git a/src/test/java/com/intel/jndn/utils/client/impl/DefaultStreamingClientTest.java b/src/test/java/com/intel/jndn/utils/client/impl/DefaultStreamingClientTest.java
index 338a88d..7497f72 100644
--- a/src/test/java/com/intel/jndn/utils/client/impl/DefaultStreamingClientTest.java
+++ b/src/test/java/com/intel/jndn/utils/client/impl/DefaultStreamingClientTest.java
@@ -29,7 +29,7 @@
  */
 public class DefaultStreamingClientTest {
 
-  DefaultStreamingClient instance = new DefaultStreamingClient();
+  private final DefaultStreamingClient instance = new DefaultStreamingClient();
 
   @Test
   public void testGetAsyncStream() throws Exception {
diff --git a/src/test/java/com/intel/jndn/utils/client/impl/SegmentedDataStreamTest.java b/src/test/java/com/intel/jndn/utils/client/impl/SegmentedDataStreamTest.java
index 28fd32f..a8203a8 100644
--- a/src/test/java/com/intel/jndn/utils/client/impl/SegmentedDataStreamTest.java
+++ b/src/test/java/com/intel/jndn/utils/client/impl/SegmentedDataStreamTest.java
@@ -33,7 +33,7 @@
  */
 public class SegmentedDataStreamTest {
 
-  SegmentedDataStream instance = new SegmentedDataStream();
+  private final SegmentedDataStream instance = new SegmentedDataStream();
 
   @Test
   public void testAddingSequentialData() throws StreamException {
@@ -133,7 +133,7 @@
     assertEquals(7, instance.list().length);
   }
 
-  protected void addPacketToInstance(long i) {
+  private void addPacketToInstance(long i) {
     Name name = new Name().appendSegment(i);
     instance.onData(new Interest(name), new Data(name));
   }
diff --git a/src/test/java/com/intel/jndn/utils/client/impl/SimpleClientTestIT.java b/src/test/java/com/intel/jndn/utils/client/impl/SimpleClientTestIT.java
index ff888ee..67f5ce7 100644
--- a/src/test/java/com/intel/jndn/utils/client/impl/SimpleClientTestIT.java
+++ b/src/test/java/com/intel/jndn/utils/client/impl/SimpleClientTestIT.java
@@ -47,7 +47,7 @@
   private static final Name PREFIX_RETRIEVE = new Name("/test/simple-client/retrieve-one").append(TestHelper.buildRandomString(10));
   private static final Name PREFIX_RETRIEVE_MULTIPLE = new Name("/test/simple-client/retrieve-multiple").append(TestHelper.buildRandomString(10));
   private final TestHelper.NdnEnvironment environment;
-  SimpleClient instance;
+  private SimpleClient instance;
 
   public SimpleClientTestIT() throws SecurityException {
     String ip = System.getProperty("nfd.ip");
@@ -116,7 +116,7 @@
 
   private class DataServer implements OnInterestCallback {
 
-    private Data data;
+    private final Data data;
 
     public DataServer(Data data) {
       this.data = data;
diff --git a/src/test/java/com/intel/jndn/utils/impl/DefaultNameTreeTest.java b/src/test/java/com/intel/jndn/utils/impl/DefaultNameTreeTest.java
index ffdd7f2..9af62c9 100644
--- a/src/test/java/com/intel/jndn/utils/impl/DefaultNameTreeTest.java
+++ b/src/test/java/com/intel/jndn/utils/impl/DefaultNameTreeTest.java
@@ -39,7 +39,7 @@
 
   @Test
   public void content() throws Exception {
-
+    // TODO
   }
 
   @Test
@@ -51,7 +51,7 @@
 
   @Test
   public void children() throws Exception {
-
+    // TODO
   }
 
   @Test
@@ -76,17 +76,16 @@
 
   @Test
   public void insert() throws Exception {
-
+    // TODO
   }
 
   @Test
   public void delete() throws Exception {
-
+    // TODO
   }
 
   @Test
   public void count() throws Exception {
-
+    // TODO
   }
-
 }
\ No newline at end of file
diff --git a/src/test/java/com/intel/jndn/utils/impl/InMemoryContentStoreTest.java b/src/test/java/com/intel/jndn/utils/impl/InMemoryContentStoreTest.java
index 0c493d3..449af17 100644
--- a/src/test/java/com/intel/jndn/utils/impl/InMemoryContentStoreTest.java
+++ b/src/test/java/com/intel/jndn/utils/impl/InMemoryContentStoreTest.java
@@ -28,7 +28,7 @@
  * @author Andrew Brown, andrew.brown@intel.com
  */
 public class InMemoryContentStoreTest {
-  ContentStore instance = new InMemoryContentStore(1000);
+  private final ContentStore instance = new InMemoryContentStore(1000);
 
   @Test
   public void basicUsage() throws Exception {
diff --git a/src/test/java/com/intel/jndn/utils/processing/impl/SigningStageTest.java b/src/test/java/com/intel/jndn/utils/processing/impl/SigningStageTest.java
index 9ce0000..e118fe2 100644
--- a/src/test/java/com/intel/jndn/utils/processing/impl/SigningStageTest.java
+++ b/src/test/java/com/intel/jndn/utils/processing/impl/SigningStageTest.java
@@ -29,8 +29,8 @@
  */
 public class SigningStageTest {
 
-  KeyChain keyChain;
-  SigningStage instance;
+  private KeyChain keyChain;
+  private SigningStage instance;
 
   public SigningStageTest() throws SecurityException {
     keyChain = MockKeyChain.configure(new Name("/test/signer"));
diff --git a/src/test/java/com/intel/jndn/utils/pubsub/NdnAnnouncementServiceTest.java b/src/test/java/com/intel/jndn/utils/pubsub/NdnAnnouncementServiceTest.java
index 26cd0d8..65bd063 100644
--- a/src/test/java/com/intel/jndn/utils/pubsub/NdnAnnouncementServiceTest.java
+++ b/src/test/java/com/intel/jndn/utils/pubsub/NdnAnnouncementServiceTest.java
@@ -24,7 +24,9 @@
 
 import static org.junit.Assert.assertEquals;
 import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.*;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
 
 /**
  * @author Andrew Brown, andrew.brown@intel.com
diff --git a/src/test/java/com/intel/jndn/utils/pubsub/NdnPublisherTest.java b/src/test/java/com/intel/jndn/utils/pubsub/NdnPublisherTest.java
index fec28c7..acd18c1 100644
--- a/src/test/java/com/intel/jndn/utils/pubsub/NdnPublisherTest.java
+++ b/src/test/java/com/intel/jndn/utils/pubsub/NdnPublisherTest.java
@@ -152,7 +152,7 @@
     return ((MeasurableFace) face).sentInterests().size();
   }
 
-  private void driveFace(Face face) throws InterruptedException {
+  private void driveFace(Face face) {
     ScheduledExecutorService pool = Executors.newSingleThreadScheduledExecutor();
     pool.schedule(() -> {
       try {
diff --git a/src/test/java/com/intel/jndn/utils/pubsub/PubSubTestIT.java b/src/test/java/com/intel/jndn/utils/pubsub/PubSubTestIT.java
index 455f198..77c93f6 100644
--- a/src/test/java/com/intel/jndn/utils/pubsub/PubSubTestIT.java
+++ b/src/test/java/com/intel/jndn/utils/pubsub/PubSubTestIT.java
@@ -16,7 +16,6 @@
 
 import com.intel.jndn.mock.MockKeyChain;
 import com.intel.jndn.utils.Publisher;
-import com.intel.jndn.utils.Subscriber;
 import com.intel.jndn.utils.Topic;
 import net.named_data.jndn.Face;
 import net.named_data.jndn.Name;
diff --git a/src/test/java/com/intel/jndn/utils/server/impl/SegmentedServerTest.java b/src/test/java/com/intel/jndn/utils/server/impl/SegmentedServerTest.java
index 8ec2a3d..c21d40b 100644
--- a/src/test/java/com/intel/jndn/utils/server/impl/SegmentedServerTest.java
+++ b/src/test/java/com/intel/jndn/utils/server/impl/SegmentedServerTest.java
@@ -34,8 +34,8 @@
  */
 public class SegmentedServerTest {
 
-  Face face;
-  SegmentedServer instance;
+  private Face face;
+  private SegmentedServer instance;
 
   @Before
   public void before() throws Exception {
diff --git a/src/test/java/com/intel/jndn/utils/server/impl/SegmentedServerTestIT.java b/src/test/java/com/intel/jndn/utils/server/impl/SegmentedServerTestIT.java
index e677135..8eb991f 100644
--- a/src/test/java/com/intel/jndn/utils/server/impl/SegmentedServerTestIT.java
+++ b/src/test/java/com/intel/jndn/utils/server/impl/SegmentedServerTestIT.java
@@ -40,12 +40,12 @@
  */
 public class SegmentedServerTestIT {
 
-  protected static final int DATA_SIZE_BYTES = 10000;
+  private static final int DATA_SIZE_BYTES = 10000;
   private static final Logger logger = Logger.getLogger(SegmentedServerTestIT.class.getName());
   private static final Name PREFIX = new Name("/test/for/segmented-server");
-  Face face;
-  SegmentedServer instance;
-  private String ip;
+  private final Face face;
+  private final SegmentedServer instance;
+  private final String ip;
 
   public SegmentedServerTestIT() throws SecurityException {
     this.ip = System.getProperty("nfd.ip");
@@ -98,7 +98,7 @@
     logger.info("Retrieved data: " + retrieved.getName().toUri());
   }
 
-  Data buildDataPacket(Name name) {
+  private Data buildDataPacket(Name name) {
     Data data = new Data(new Name(name).appendSegment(0));
     data.setContent(new Blob(TestHelper.buildRandomBytes(DATA_SIZE_BYTES)));
     data.getMetaInfo().setFreshnessPeriod(30000);
diff --git a/src/test/java/com/intel/jndn/utils/server/impl/ServerBaseImplTest.java b/src/test/java/com/intel/jndn/utils/server/impl/ServerBaseImplTest.java
index f12cd28..346c570 100644
--- a/src/test/java/com/intel/jndn/utils/server/impl/ServerBaseImplTest.java
+++ b/src/test/java/com/intel/jndn/utils/server/impl/ServerBaseImplTest.java
@@ -35,8 +35,8 @@
  */
 public class ServerBaseImplTest {
 
-  Face face;
-  ServerBaseImpl instance;
+  private Face face;
+  private ServerBaseImpl instance;
 
   @Before
   public void before() throws Exception {
diff --git a/src/test/java/com/intel/jndn/utils/server/impl/SimpleServerTest.java b/src/test/java/com/intel/jndn/utils/server/impl/SimpleServerTest.java
index 1f67d26..0b05ff1 100644
--- a/src/test/java/com/intel/jndn/utils/server/impl/SimpleServerTest.java
+++ b/src/test/java/com/intel/jndn/utils/server/impl/SimpleServerTest.java
@@ -38,8 +38,8 @@
  */
 public class SimpleServerTest {
 
-  Face face;
-  SimpleServer instance;
+  private Face face;
+  private SimpleServer instance;
 
   @Before
   public void before() throws Exception {
