diff --git a/src/main/java/org/apache/gossip/manager/Transport.java b/src/main/java/org/apache/gossip/manager/Transport.java
deleted file mode 100644
index d473e60..0000000
--- a/src/main/java/org/apache/gossip/manager/Transport.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.gossip.manager;
-
-public class Transport {
-
-}
diff --git a/src/main/java/org/apache/gossip/manager/UserDataPersister.java b/src/main/java/org/apache/gossip/manager/UserDataPersister.java
index 2a123e3..4a8a415 100644
--- a/src/main/java/org/apache/gossip/manager/UserDataPersister.java
+++ b/src/main/java/org/apache/gossip/manager/UserDataPersister.java
@@ -27,8 +27,6 @@
 import org.apache.gossip.model.SharedGossipDataMessage;
 import org.apache.log4j.Logger;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
-
 public class UserDataPersister implements Runnable {
   
   private static final Logger LOGGER = Logger.getLogger(UserDataPersister.class);
diff --git a/src/main/java/org/apache/gossip/manager/handlers/MessageInvoker.java b/src/main/java/org/apache/gossip/manager/handlers/MessageInvoker.java
index b4a39e3..70be408 100644
--- a/src/main/java/org/apache/gossip/manager/handlers/MessageInvoker.java
+++ b/src/main/java/org/apache/gossip/manager/handlers/MessageInvoker.java
@@ -22,5 +22,12 @@
 import org.apache.gossip.model.Base;
 
 public interface MessageInvoker {
+  /**
+   * 
+   * @param gossipCore
+   * @param gossipManager
+   * @param base
+   * @return true if the invoker processed the message type
+   */
   boolean invoke(GossipCore gossipCore, GossipManager gossipManager, Base base);
 }
diff --git a/src/main/java/org/apache/gossip/manager/handlers/MessageInvokerCombiner.java b/src/main/java/org/apache/gossip/manager/handlers/MessageInvokerCombiner.java
index 7b654f6..964da86 100644
--- a/src/main/java/org/apache/gossip/manager/handlers/MessageInvokerCombiner.java
+++ b/src/main/java/org/apache/gossip/manager/handlers/MessageInvokerCombiner.java
@@ -26,7 +26,7 @@
 import java.util.concurrent.CopyOnWriteArrayList;
 
 public class MessageInvokerCombiner implements MessageInvoker {
-  private List<MessageInvoker> invokers;
+  private final List<MessageInvoker> invokers = new CopyOnWriteArrayList<>();
 
   public MessageInvokerCombiner() {
   }
@@ -43,16 +43,13 @@
   }
 
   public void clear() {
-    invokers = null;
+    invokers.clear();
   }
 
   public void add(MessageInvoker mi) {
     if (mi == null) {
       throw new NullPointerException();
     }
-    if (invokers == null) {
-      invokers = new CopyOnWriteArrayList<>();
-    }
     invokers.add(mi);
   }
 }
diff --git a/src/main/java/org/apache/gossip/manager/handlers/ResponseHandler.java b/src/main/java/org/apache/gossip/manager/handlers/ResponseHandler.java
index ad1c2aa..36102d5 100644
--- a/src/main/java/org/apache/gossip/manager/handlers/ResponseHandler.java
+++ b/src/main/java/org/apache/gossip/manager/handlers/ResponseHandler.java
@@ -20,8 +20,6 @@
 import org.apache.gossip.manager.GossipCore;
 import org.apache.gossip.manager.GossipManager;
 import org.apache.gossip.model.Base;
-import org.apache.gossip.model.GossipDataMessage;
-import org.apache.gossip.model.ShutdownMessage;
 import org.apache.gossip.udp.Trackable;
 
 public class ResponseHandler implements MessageHandler {
