diff --git a/src/main/java/net/onrc/onos/apps/bgproute/BgpRoute.java b/src/main/java/net/onrc/onos/apps/bgproute/BgpRoute.java
index 7202895..f07e6e4 100644
--- a/src/main/java/net/onrc/onos/apps/bgproute/BgpRoute.java
+++ b/src/main/java/net/onrc/onos/apps/bgproute/BgpRoute.java
@@ -76,7 +76,7 @@
         IArpRequester,
         IOFSwitchListener, IConfigInfoService {
 
-    private final static Logger log = LoggerFactory.getLogger(BgpRoute.class);
+    private static final Logger log = LoggerFactory.getLogger(BgpRoute.class);
 
     private IFloodlightProviderService floodlightProvider;
     private ILinkDiscoveryService linkDiscoveryService;
diff --git a/src/main/java/net/onrc/onos/apps/bgproute/BgpRouteResource.java b/src/main/java/net/onrc/onos/apps/bgproute/BgpRouteResource.java
index 5c14db1..7337a79 100644
--- a/src/main/java/net/onrc/onos/apps/bgproute/BgpRouteResource.java
+++ b/src/main/java/net/onrc/onos/apps/bgproute/BgpRouteResource.java
@@ -12,7 +12,7 @@
 import org.slf4j.LoggerFactory;
 
 public class BgpRouteResource extends ServerResource {
-    private final static Logger log = LoggerFactory.getLogger(BgpRouteResource.class);
+    private static final Logger log = LoggerFactory.getLogger(BgpRouteResource.class);
 
     @Get
     public String get(String fmJson) {
diff --git a/src/main/java/net/onrc/onos/apps/bgproute/BgpRouteResourceSynch.java b/src/main/java/net/onrc/onos/apps/bgproute/BgpRouteResourceSynch.java
index 13434dc..21ada96 100644
--- a/src/main/java/net/onrc/onos/apps/bgproute/BgpRouteResourceSynch.java
+++ b/src/main/java/net/onrc/onos/apps/bgproute/BgpRouteResourceSynch.java
@@ -7,7 +7,7 @@
 import org.slf4j.LoggerFactory;
 
 public class BgpRouteResourceSynch extends ServerResource {
-    private final static Logger log = LoggerFactory.getLogger(BgpRouteResourceSynch.class);
+    private static final Logger log = LoggerFactory.getLogger(BgpRouteResourceSynch.class);
 
     @Post
     public String store(String fmJson) {
diff --git a/src/main/java/net/onrc/onos/apps/bgproute/FlowCache.java b/src/main/java/net/onrc/onos/apps/bgproute/FlowCache.java
index 305cc87..d5aff78 100644
--- a/src/main/java/net/onrc/onos/apps/bgproute/FlowCache.java
+++ b/src/main/java/net/onrc/onos/apps/bgproute/FlowCache.java
@@ -19,7 +19,7 @@
 import org.slf4j.LoggerFactory;
 
 public class FlowCache {
-    private final static Logger log = LoggerFactory.getLogger(FlowCache.class);
+    private static final Logger log = LoggerFactory.getLogger(FlowCache.class);
 
     private final IFloodlightProviderService floodlightProvider;
 
diff --git a/src/main/java/net/onrc/onos/apps/bgproute/Ptree.java b/src/main/java/net/onrc/onos/apps/bgproute/Ptree.java
index f85c49c..da8501f 100644
--- a/src/main/java/net/onrc/onos/apps/bgproute/Ptree.java
+++ b/src/main/java/net/onrc/onos/apps/bgproute/Ptree.java
@@ -175,7 +175,7 @@
         return null;
     }
 
-    static public int bit_to_octet(int key_bits) {
+    public static int bit_to_octet(int key_bits) {
         return Math.max((key_bits + 7) / 8, 1);
     }
 
diff --git a/src/main/java/net/onrc/onos/apps/bgproute/PtreeNode.java b/src/main/java/net/onrc/onos/apps/bgproute/PtreeNode.java
index c872a4e..0c0358d 100644
--- a/src/main/java/net/onrc/onos/apps/bgproute/PtreeNode.java
+++ b/src/main/java/net/onrc/onos/apps/bgproute/PtreeNode.java
@@ -14,7 +14,7 @@
     public int refCount;
 
     public RibEntry rib;
-    protected final static Logger log = LoggerFactory.getLogger(BgpRoute.class);
+    private static final Logger log = LoggerFactory.getLogger(BgpRoute.class);
 
     PtreeNode(byte[] key, int key_bits, int max_key_octet) {
         parent = null;
diff --git a/src/main/java/net/onrc/onos/apps/bgproute/RestClient.java b/src/main/java/net/onrc/onos/apps/bgproute/RestClient.java
index e0976cc..338b599 100644
--- a/src/main/java/net/onrc/onos/apps/bgproute/RestClient.java
+++ b/src/main/java/net/onrc/onos/apps/bgproute/RestClient.java
@@ -12,7 +12,7 @@
 import org.slf4j.LoggerFactory;
 
 public final class RestClient {
-    private final static Logger log = LoggerFactory.getLogger(RestClient.class);
+    private static final Logger log = LoggerFactory.getLogger(RestClient.class);
 
     private RestClient() {
         // Private constructor to prevent instantiation
diff --git a/src/main/java/net/onrc/onos/apps/bgproute/RibEntry.java b/src/main/java/net/onrc/onos/apps/bgproute/RibEntry.java
index 8e4e12e..ae16c8f 100644
--- a/src/main/java/net/onrc/onos/apps/bgproute/RibEntry.java
+++ b/src/main/java/net/onrc/onos/apps/bgproute/RibEntry.java
@@ -22,7 +22,7 @@
      * The user of this class should make sure they don't check this data
      * if they don't provide it.
      */
-    private final static long NULL_TIME = -1;
+    private static final long NULL_TIME = -1;
 
     public RibEntry(InetAddress routerId, InetAddress nextHop) {
         this.routerId = routerId;
diff --git a/src/main/java/net/onrc/onos/apps/forwarding/Forwarding.java b/src/main/java/net/onrc/onos/apps/forwarding/Forwarding.java
index 3ba545c..4624617 100644
--- a/src/main/java/net/onrc/onos/apps/forwarding/Forwarding.java
+++ b/src/main/java/net/onrc/onos/apps/forwarding/Forwarding.java
@@ -63,12 +63,12 @@
 
 public class Forwarding implements IOFMessageListener, IFloodlightModule,
         IForwardingService, IEventChannelListener<Long, IntentStateList> {
-    private final static Logger log = LoggerFactory.getLogger(Forwarding.class);
+    private static final Logger log = LoggerFactory.getLogger(Forwarding.class);
 
     private static final int SLEEP_TIME_FOR_DB_DEVICE_INSTALLED = 100; // milliseconds
-    private final static int NUMBER_OF_THREAD_FOR_EXECUTOR = 1;
+    private static final int NUMBER_OF_THREAD_FOR_EXECUTOR = 1;
 
-    private final static ScheduledExecutorService EXECUTOR_SERVICE = Executors.newScheduledThreadPool(NUMBER_OF_THREAD_FOR_EXECUTOR);
+    private static final ScheduledExecutorService EXECUTOR_SERVICE = Executors.newScheduledThreadPool(NUMBER_OF_THREAD_FOR_EXECUTOR);
 
     private final String callerId = "Forwarding";
 
diff --git a/src/main/java/net/onrc/onos/core/datagrid/web/IntentResource.java b/src/main/java/net/onrc/onos/core/datagrid/web/IntentResource.java
index 4dbebe8..909ec82 100755
--- a/src/main/java/net/onrc/onos/core/datagrid/web/IntentResource.java
+++ b/src/main/java/net/onrc/onos/core/datagrid/web/IntentResource.java
@@ -37,7 +37,7 @@
  * @author nickkaranatsios
  */
 public class IntentResource extends ServerResource {
-    private final static Logger log = LoggerFactory.getLogger(IntentResource.class);
+    private static final Logger log = LoggerFactory.getLogger(IntentResource.class);
     // TODO need to assign proper application id.
     private static final String APPLN_ID = "1";
 
diff --git a/src/main/java/net/onrc/onos/core/devicemanager/OnosDeviceManager.java b/src/main/java/net/onrc/onos/core/devicemanager/OnosDeviceManager.java
index 3b45dfc..48e23eb 100644
--- a/src/main/java/net/onrc/onos/core/devicemanager/OnosDeviceManager.java
+++ b/src/main/java/net/onrc/onos/core/devicemanager/OnosDeviceManager.java
@@ -45,13 +45,13 @@
         IOFMessageListener,
         IOnosDeviceService,
         IEventChannelListener<Long, OnosDevice> {
-    protected final static Logger log = LoggerFactory.getLogger(OnosDeviceManager.class);
+    private static final Logger log = LoggerFactory.getLogger(OnosDeviceManager.class);
     private static final int CLEANUP_SECOND = 60 * 60;
     private static final int AGEING_MILLSEC = 60 * 60 * 1000;
 
     private CopyOnWriteArrayList<IOnosDeviceListener> deviceListeners;
     private IFloodlightProviderService floodlightProvider;
-    private final static ScheduledExecutorService EXECUTOR_SERVICE = Executors.newSingleThreadScheduledExecutor();
+    private static final ScheduledExecutorService EXECUTOR_SERVICE = Executors.newSingleThreadScheduledExecutor();
 
     private IDatagridService datagrid;
     private IEventChannel<Long, OnosDevice> eventChannel;
diff --git a/src/main/java/net/onrc/onos/core/flowprogrammer/FlowPusher.java b/src/main/java/net/onrc/onos/core/flowprogrammer/FlowPusher.java
index 5477dd3..a5fa1aa 100644
--- a/src/main/java/net/onrc/onos/core/flowprogrammer/FlowPusher.java
+++ b/src/main/java/net/onrc/onos/core/flowprogrammer/FlowPusher.java
@@ -83,7 +83,7 @@
  * @author Naoki Shiota
  */
 public class FlowPusher implements IFlowPusherService, IOFMessageListener {
-    private final static Logger log = LoggerFactory.getLogger(FlowPusher.class);
+    private static final Logger log = LoggerFactory.getLogger(FlowPusher.class);
     protected static final int DEFAULT_NUMBER_THREAD = 1;
 
     // TODO: Values copied from elsewhere (class LearningSwitch).
diff --git a/src/main/java/net/onrc/onos/core/flowprogrammer/web/PusherResource.java b/src/main/java/net/onrc/onos/core/flowprogrammer/web/PusherResource.java
index 706445b..a3537d4 100644
--- a/src/main/java/net/onrc/onos/core/flowprogrammer/web/PusherResource.java
+++ b/src/main/java/net/onrc/onos/core/flowprogrammer/web/PusherResource.java
@@ -8,7 +8,7 @@
 import org.slf4j.LoggerFactory;
 
 public class PusherResource extends ServerResource {
-    protected final static Logger log = LoggerFactory.getLogger(PusherResource.class);
+    protected static final Logger log = LoggerFactory.getLogger(PusherResource.class);
 
     protected IFloodlightProviderService provider;
     protected IFlowPusherService pusher;
diff --git a/src/main/java/net/onrc/onos/core/flowprogrammer/web/SuspendPusherResource.java b/src/main/java/net/onrc/onos/core/flowprogrammer/web/SuspendPusherResource.java
index 4d651d3..ba752e6 100644
--- a/src/main/java/net/onrc/onos/core/flowprogrammer/web/SuspendPusherResource.java
+++ b/src/main/java/net/onrc/onos/core/flowprogrammer/web/SuspendPusherResource.java
@@ -14,7 +14,7 @@
  */
 public class SuspendPusherResource extends PusherResource {
 
-    protected final static Logger log = LoggerFactory.getLogger(SetPushRateResource.class);
+    private static final Logger log = LoggerFactory.getLogger(SetPushRateResource.class);
 
     /**
      * Implement the API.
diff --git a/src/main/java/net/onrc/onos/core/flowprogrammer/web/SynchronizerResource.java b/src/main/java/net/onrc/onos/core/flowprogrammer/web/SynchronizerResource.java
index 429d52f..b84aa25 100644
--- a/src/main/java/net/onrc/onos/core/flowprogrammer/web/SynchronizerResource.java
+++ b/src/main/java/net/onrc/onos/core/flowprogrammer/web/SynchronizerResource.java
@@ -8,7 +8,7 @@
 import org.slf4j.LoggerFactory;
 
 public class SynchronizerResource extends ServerResource {
-    protected final static Logger log = LoggerFactory.getLogger(SynchronizerResource.class);
+    protected static final Logger log = LoggerFactory.getLogger(SynchronizerResource.class);
 
     protected IFloodlightProviderService provider;
     protected IFlowSyncService synchronizer;
diff --git a/src/main/java/net/onrc/onos/core/intent/runtime/PathCalcRuntime.java b/src/main/java/net/onrc/onos/core/intent/runtime/PathCalcRuntime.java
index 234bea9..0600fe3 100644
--- a/src/main/java/net/onrc/onos/core/intent/runtime/PathCalcRuntime.java
+++ b/src/main/java/net/onrc/onos/core/intent/runtime/PathCalcRuntime.java
@@ -28,7 +28,7 @@
  */
 public class PathCalcRuntime implements IFloodlightService {
     private NetworkGraph graph;
-    private final static Logger log = LoggerFactory.getLogger(PathCalcRuntime.class);
+    private static final Logger log = LoggerFactory.getLogger(PathCalcRuntime.class);
 
     public PathCalcRuntime(NetworkGraph g) {
         this.graph = g;
diff --git a/src/main/java/net/onrc/onos/core/intent/runtime/PersistIntent.java b/src/main/java/net/onrc/onos/core/intent/runtime/PersistIntent.java
index ba845ed..737aeae 100755
--- a/src/main/java/net/onrc/onos/core/intent/runtime/PersistIntent.java
+++ b/src/main/java/net/onrc/onos/core/intent/runtime/PersistIntent.java
@@ -31,12 +31,12 @@
  * @author nickkaranatsios
  */
 public class PersistIntent {
-    private final static Logger log = LoggerFactory.getLogger(IntentResource.class);
+    private static final Logger log = LoggerFactory.getLogger(IntentResource.class);
     private long range = 10000L;
     private final IControllerRegistryService controllerRegistry;
     NetworkGraph graph = null;
-    private final static String INTENT_JOURNAL = "G:IntentJournal";
-    private final static int VALUE_STORE_LIMIT = 1024 * 1024;
+    private static final String INTENT_JOURNAL = "G:IntentJournal";
+    private static final int VALUE_STORE_LIMIT = 1024 * 1024;
     private IKVTable table;
     private Kryo kryo;
     private ByteArrayOutputStream stream;
diff --git a/src/main/java/net/onrc/onos/core/intent/runtime/PlanCalcRuntime.java b/src/main/java/net/onrc/onos/core/intent/runtime/PlanCalcRuntime.java
index 7ea3bab..a671d7a 100644
--- a/src/main/java/net/onrc/onos/core/intent/runtime/PlanCalcRuntime.java
+++ b/src/main/java/net/onrc/onos/core/intent/runtime/PlanCalcRuntime.java
@@ -31,7 +31,7 @@
 public class PlanCalcRuntime {
 
     //    NetworkGraph graph;
-    private final static Logger log = LoggerFactory.getLogger(PlanCalcRuntime.class);
+    private static final Logger log = LoggerFactory.getLogger(PlanCalcRuntime.class);
 
     public PlanCalcRuntime(/*NetworkGraph graph*/) {
 //      this.graph = graph;
diff --git a/src/main/java/net/onrc/onos/core/intent/runtime/PlanInstallModule.java b/src/main/java/net/onrc/onos/core/intent/runtime/PlanInstallModule.java
index b4904c1..ba24ae5 100644
--- a/src/main/java/net/onrc/onos/core/intent/runtime/PlanInstallModule.java
+++ b/src/main/java/net/onrc/onos/core/intent/runtime/PlanInstallModule.java
@@ -36,7 +36,7 @@
     private PlanInstallRuntime planInstall;
     private EventListener eventListener;
     private IEventChannel<Long, IntentStateList> intentStateChannel;
-    private final static Logger log = LoggerFactory.getLogger(PlanInstallModule.class);
+    private static final Logger log = LoggerFactory.getLogger(PlanInstallModule.class);
 
 
     private static final String PATH_INTENT_CHANNEL_NAME = "onos.pathintent";
diff --git a/src/main/java/net/onrc/onos/core/intent/runtime/PlanInstallRuntime.java b/src/main/java/net/onrc/onos/core/intent/runtime/PlanInstallRuntime.java
index f6d499b..7607373 100644
--- a/src/main/java/net/onrc/onos/core/intent/runtime/PlanInstallRuntime.java
+++ b/src/main/java/net/onrc/onos/core/intent/runtime/PlanInstallRuntime.java
@@ -28,7 +28,7 @@
     //    NetworkGraph graph;
     IFlowPusherService pusher;
     IFloodlightProviderService provider;
-    private final static Logger log = LoggerFactory.getLogger(PlanInstallRuntime.class);
+    private static final Logger log = LoggerFactory.getLogger(PlanInstallRuntime.class);
 
     public PlanInstallRuntime(//NetworkGraph graph,
                               IFloodlightProviderService provider,
diff --git a/src/main/java/net/onrc/onos/core/linkdiscovery/internal/LinkDiscoveryManager.java b/src/main/java/net/onrc/onos/core/linkdiscovery/internal/LinkDiscoveryManager.java
index efa0188..7b0892d 100644
--- a/src/main/java/net/onrc/onos/core/linkdiscovery/internal/LinkDiscoveryManager.java
+++ b/src/main/java/net/onrc/onos/core/linkdiscovery/internal/LinkDiscoveryManager.java
@@ -115,7 +115,7 @@
         implements IOFMessageListener, IOFSwitchListener,
         ILinkDiscoveryService, IFloodlightModule {
     protected IFloodlightProviderService controller;
-    protected final static Logger log = LoggerFactory.getLogger(LinkDiscoveryManager.class);
+    private static final Logger log = LoggerFactory.getLogger(LinkDiscoveryManager.class);
 
     protected IFloodlightProviderService floodlightProvider;
     protected IThreadPoolService threadPool;
diff --git a/src/main/java/net/onrc/onos/core/linkdiscovery/web/AutoPortFast.java b/src/main/java/net/onrc/onos/core/linkdiscovery/web/AutoPortFast.java
index 4b7eeca..0cea4dd 100644
--- a/src/main/java/net/onrc/onos/core/linkdiscovery/web/AutoPortFast.java
+++ b/src/main/java/net/onrc/onos/core/linkdiscovery/web/AutoPortFast.java
@@ -9,7 +9,7 @@
 import org.slf4j.LoggerFactory;
 
 public class AutoPortFast extends ServerResource {
-    protected final static Logger log = LoggerFactory.getLogger(AutoPortFast.class);
+    private static final Logger log = LoggerFactory.getLogger(AutoPortFast.class);
 
     @Get("json")
     public String retrieve() {
diff --git a/src/main/java/net/onrc/onos/core/registry/StandaloneRegistry.java b/src/main/java/net/onrc/onos/core/registry/StandaloneRegistry.java
index 0f2f94c..4b0a0f3 100755
--- a/src/main/java/net/onrc/onos/core/registry/StandaloneRegistry.java
+++ b/src/main/java/net/onrc/onos/core/registry/StandaloneRegistry.java
@@ -28,7 +28,7 @@
  */
 public class StandaloneRegistry implements IFloodlightModule,
         IControllerRegistryService {
-    protected final static Logger log = LoggerFactory.getLogger(StandaloneRegistry.class);
+    private static final Logger log = LoggerFactory.getLogger(StandaloneRegistry.class);
 
     protected IRestApiService restApi;
 
diff --git a/src/main/java/net/onrc/onos/core/registry/ZookeeperRegistry.java b/src/main/java/net/onrc/onos/core/registry/ZookeeperRegistry.java
index b103d17..4a0917e 100755
--- a/src/main/java/net/onrc/onos/core/registry/ZookeeperRegistry.java
+++ b/src/main/java/net/onrc/onos/core/registry/ZookeeperRegistry.java
@@ -56,7 +56,7 @@
  */
 public class ZookeeperRegistry implements IFloodlightModule, IControllerRegistryService {
 
-    protected final static Logger log = LoggerFactory.getLogger(ZookeeperRegistry.class);
+    private static final Logger log = LoggerFactory.getLogger(ZookeeperRegistry.class);
     protected String controllerId = null;
 
     protected IRestApiService restApi;
diff --git a/src/main/java/net/onrc/onos/core/registry/web/ControllerRegistryResource.java b/src/main/java/net/onrc/onos/core/registry/web/ControllerRegistryResource.java
index ee2b5f4..f2f0c67 100644
--- a/src/main/java/net/onrc/onos/core/registry/web/ControllerRegistryResource.java
+++ b/src/main/java/net/onrc/onos/core/registry/web/ControllerRegistryResource.java
@@ -13,7 +13,7 @@
 
 public class ControllerRegistryResource extends ServerResource {
 
-    protected final static Logger log = LoggerFactory.getLogger(ControllerRegistryResource.class);
+    private static final Logger log = LoggerFactory.getLogger(ControllerRegistryResource.class);
 
     @Get("json")
     public Collection<String> getControllers() {
diff --git a/src/main/java/net/onrc/onos/core/util/Dpid.java b/src/main/java/net/onrc/onos/core/util/Dpid.java
index f66a5d4..1abd0f1 100644
--- a/src/main/java/net/onrc/onos/core/util/Dpid.java
+++ b/src/main/java/net/onrc/onos/core/util/Dpid.java
@@ -14,7 +14,7 @@
 @JsonDeserialize(using = DpidDeserializer.class)
 @JsonSerialize(using = DpidSerializer.class)
 public final class Dpid {
-    private final static long UNKNOWN = 0;
+    private static final long UNKNOWN = 0;
     private final long value;
 
     /**
diff --git a/src/main/java/net/onrc/onos/core/util/FlowEntryId.java b/src/main/java/net/onrc/onos/core/util/FlowEntryId.java
index 62c009a..5b19e91 100644
--- a/src/main/java/net/onrc/onos/core/util/FlowEntryId.java
+++ b/src/main/java/net/onrc/onos/core/util/FlowEntryId.java
@@ -16,7 +16,7 @@
 @JsonDeserialize(using = FlowEntryIdDeserializer.class)
 @JsonSerialize(using = FlowEntryIdSerializer.class)
 public final class FlowEntryId {
-    private final static long INVALID = -1;
+    private static final long INVALID = -1;
     private final long value;
 
     /**
diff --git a/src/main/java/net/onrc/onos/core/util/FlowId.java b/src/main/java/net/onrc/onos/core/util/FlowId.java
index 5eace27..f57701e 100644
--- a/src/main/java/net/onrc/onos/core/util/FlowId.java
+++ b/src/main/java/net/onrc/onos/core/util/FlowId.java
@@ -16,7 +16,7 @@
 @JsonDeserialize(using = FlowIdDeserializer.class)
 @JsonSerialize(using = FlowIdSerializer.class)
 public final class FlowId implements Comparable<FlowId> {
-    private final static long INVALID = -1;
+    private static final long INVALID = -1;
     private final long value;
 
     /**
diff --git a/src/main/java/net/onrc/onos/core/util/PerformanceMonitor.java b/src/main/java/net/onrc/onos/core/util/PerformanceMonitor.java
index 2a85904..7fb0597 100644
--- a/src/main/java/net/onrc/onos/core/util/PerformanceMonitor.java
+++ b/src/main/java/net/onrc/onos/core/util/PerformanceMonitor.java
@@ -12,7 +12,7 @@
  * Class for collecting performance measurements
  */
 public class PerformanceMonitor {
-    private final static Logger log = LoggerFactory.getLogger(PerformanceMonitor.class);
+    private static final Logger log = LoggerFactory.getLogger(PerformanceMonitor.class);
 
     // experiment name -> PerformanceMonitor
     private static final ConcurrentHashMap<String, PerformanceMonitor> PERF_MONS = new ConcurrentHashMap<>();
@@ -33,7 +33,7 @@
     private final ConcurrentHashMap<String, Queue<Measurement>> map = new ConcurrentHashMap<>();
     private long overhead;
     private long experimentStart = Long.MAX_VALUE;
-    private final static double NORMALIZATION = Math.pow(10, 6);
+    private static final double NORMALIZATION = Math.pow(10, 6);
 
     /**
      * Start a performance measurement, identified by a tag
diff --git a/src/main/java/net/onrc/onos/core/util/serializers/DpidDeserializer.java b/src/main/java/net/onrc/onos/core/util/serializers/DpidDeserializer.java
index 955f0ff..9d16e5e 100644
--- a/src/main/java/net/onrc/onos/core/util/serializers/DpidDeserializer.java
+++ b/src/main/java/net/onrc/onos/core/util/serializers/DpidDeserializer.java
@@ -17,7 +17,7 @@
  */
 public class DpidDeserializer extends JsonDeserializer<Dpid> {
 
-    protected final static Logger log = LoggerFactory.getLogger(DpidDeserializer.class);
+    private static final Logger log = LoggerFactory.getLogger(DpidDeserializer.class);
 
     @Override
     public Dpid deserialize(JsonParser jp,
diff --git a/src/main/java/net/onrc/onos/core/util/serializers/FlowEntryIdDeserializer.java b/src/main/java/net/onrc/onos/core/util/serializers/FlowEntryIdDeserializer.java
index de13574..eadb2ce 100644
--- a/src/main/java/net/onrc/onos/core/util/serializers/FlowEntryIdDeserializer.java
+++ b/src/main/java/net/onrc/onos/core/util/serializers/FlowEntryIdDeserializer.java
@@ -17,7 +17,7 @@
  */
 public class FlowEntryIdDeserializer extends JsonDeserializer<FlowEntryId> {
 
-    protected final static Logger log = LoggerFactory.getLogger(FlowEntryIdDeserializer.class);
+    private static final Logger log = LoggerFactory.getLogger(FlowEntryIdDeserializer.class);
 
     @Override
     public FlowEntryId deserialize(JsonParser jp,
diff --git a/src/main/java/net/onrc/onos/core/util/serializers/FlowIdDeserializer.java b/src/main/java/net/onrc/onos/core/util/serializers/FlowIdDeserializer.java
index 12c5cbd..ecdf41a 100644
--- a/src/main/java/net/onrc/onos/core/util/serializers/FlowIdDeserializer.java
+++ b/src/main/java/net/onrc/onos/core/util/serializers/FlowIdDeserializer.java
@@ -17,7 +17,7 @@
  */
 public class FlowIdDeserializer extends JsonDeserializer<FlowId> {
 
-    protected final static Logger log = LoggerFactory.getLogger(FlowIdDeserializer.class);
+    private static final Logger log = LoggerFactory.getLogger(FlowIdDeserializer.class);
 
     @Override
     public FlowId deserialize(JsonParser jp,
diff --git a/src/main/java/net/onrc/onos/core/util/serializers/IPv4Deserializer.java b/src/main/java/net/onrc/onos/core/util/serializers/IPv4Deserializer.java
index f58f746..a025e80 100644
--- a/src/main/java/net/onrc/onos/core/util/serializers/IPv4Deserializer.java
+++ b/src/main/java/net/onrc/onos/core/util/serializers/IPv4Deserializer.java
@@ -17,7 +17,7 @@
  */
 public class IPv4Deserializer extends JsonDeserializer<IPv4> {
 
-    protected final static Logger log = LoggerFactory.getLogger(IPv4Deserializer.class);
+    private static final Logger log = LoggerFactory.getLogger(IPv4Deserializer.class);
 
     @Override
     public IPv4 deserialize(JsonParser jp,
diff --git a/src/main/java/net/onrc/onos/core/util/serializers/IPv4NetDeserializer.java b/src/main/java/net/onrc/onos/core/util/serializers/IPv4NetDeserializer.java
index da68668..8d90a59 100644
--- a/src/main/java/net/onrc/onos/core/util/serializers/IPv4NetDeserializer.java
+++ b/src/main/java/net/onrc/onos/core/util/serializers/IPv4NetDeserializer.java
@@ -17,7 +17,7 @@
  */
 public class IPv4NetDeserializer extends JsonDeserializer<IPv4Net> {
 
-    protected final static Logger log = LoggerFactory.getLogger(IPv4NetDeserializer.class);
+    private static final Logger log = LoggerFactory.getLogger(IPv4NetDeserializer.class);
 
     @Override
     public IPv4Net deserialize(JsonParser jp,
diff --git a/src/main/java/net/onrc/onos/core/util/serializers/IPv6Deserializer.java b/src/main/java/net/onrc/onos/core/util/serializers/IPv6Deserializer.java
index 3b9673a..aa92c58 100644
--- a/src/main/java/net/onrc/onos/core/util/serializers/IPv6Deserializer.java
+++ b/src/main/java/net/onrc/onos/core/util/serializers/IPv6Deserializer.java
@@ -17,7 +17,7 @@
  */
 public class IPv6Deserializer extends JsonDeserializer<IPv6> {
 
-    protected final static Logger log = LoggerFactory.getLogger(IPv6Deserializer.class);
+    private static final Logger log = LoggerFactory.getLogger(IPv6Deserializer.class);
 
     @Override
     public IPv6 deserialize(JsonParser jp,
diff --git a/src/main/java/net/onrc/onos/core/util/serializers/IPv6NetDeserializer.java b/src/main/java/net/onrc/onos/core/util/serializers/IPv6NetDeserializer.java
index 2b80984..c74cc4d 100644
--- a/src/main/java/net/onrc/onos/core/util/serializers/IPv6NetDeserializer.java
+++ b/src/main/java/net/onrc/onos/core/util/serializers/IPv6NetDeserializer.java
@@ -17,7 +17,7 @@
  */
 public class IPv6NetDeserializer extends JsonDeserializer<IPv6Net> {
 
-    protected final static Logger log = LoggerFactory.getLogger(IPv6NetDeserializer.class);
+    private static final Logger log = LoggerFactory.getLogger(IPv6NetDeserializer.class);
 
     @Override
     public IPv6Net deserialize(JsonParser jp,
diff --git a/src/main/java/net/onrc/onos/core/util/serializers/KryoFactory.java b/src/main/java/net/onrc/onos/core/util/serializers/KryoFactory.java
index e78be58..ca631e1 100644
--- a/src/main/java/net/onrc/onos/core/util/serializers/KryoFactory.java
+++ b/src/main/java/net/onrc/onos/core/util/serializers/KryoFactory.java
@@ -108,7 +108,7 @@
      *                   otherwise delete the provided object.
      * @return a new Kryo object if needed, otherwise null.
      */
-    synchronized private Kryo newDeleteKryo(Kryo deleteKryo) {
+    private synchronized Kryo newDeleteKryo(Kryo deleteKryo) {
         if (deleteKryo != null) {
             // Delete an entry by moving it back to the buffer
             kryoList.add(deleteKryo);
diff --git a/src/main/java/net/onrc/onos/core/util/serializers/MACAddressDeserializer.java b/src/main/java/net/onrc/onos/core/util/serializers/MACAddressDeserializer.java
index 45bc336..8ae45df 100644
--- a/src/main/java/net/onrc/onos/core/util/serializers/MACAddressDeserializer.java
+++ b/src/main/java/net/onrc/onos/core/util/serializers/MACAddressDeserializer.java
@@ -17,7 +17,7 @@
  */
 public class MACAddressDeserializer extends JsonDeserializer<MACAddress> {
 
-    protected final static Logger log = LoggerFactory.getLogger(MACAddressDeserializer.class);
+    private static final Logger log = LoggerFactory.getLogger(MACAddressDeserializer.class);
 
     @Override
     public MACAddress deserialize(JsonParser jp,
