diff --git a/src/main/java/net/onrc/onos/core/hostmanager/HostManager.java b/src/main/java/net/onrc/onos/core/hostmanager/HostManager.java
index ff3ee8c..6843fa9 100644
--- a/src/main/java/net/onrc/onos/core/hostmanager/HostManager.java
+++ b/src/main/java/net/onrc/onos/core/hostmanager/HostManager.java
@@ -123,7 +123,6 @@
 
         final Dpid dpid = new Dpid(sw.getId());
         final PortNumber portNum = new PortNumber(pi.getInPort());
-        Long mac = eth.getSourceMAC().toLong();
 
         Host srcHost =
                 getSourceHostFromPacket(eth, dpid.value(), portNum.value());
@@ -149,6 +148,7 @@
             topology.releaseReadLock();
         }
 
+        Long mac = eth.getSourceMAC().toLong();
         addHost(mac, srcHost);
 
         if (log.isTraceEnabled()) {
@@ -285,7 +285,8 @@
                         switchPort.getDpid().value(),
                         switchPort.getNumber().value(),
                         new Date(host.getLastSeenTime()));
-                break;
+                // FIXME: remove NOPMD flag after multiple attachment points are implemented
+                break; // NOPMD
             }
         } finally {
             topology.releaseReadLock();
diff --git a/src/main/java/net/onrc/onos/core/topology/HostEvent.java b/src/main/java/net/onrc/onos/core/topology/HostEvent.java
index 8747079..4c8f78d 100644
--- a/src/main/java/net/onrc/onos/core/topology/HostEvent.java
+++ b/src/main/java/net/onrc/onos/core/topology/HostEvent.java
@@ -132,12 +132,13 @@
         if (getClass() != obj.getClass()) {
             return false;
         }
-        HostEvent other = (HostEvent) obj;
 
         if (!super.equals(obj)) {
             return false;
         }
 
+        HostEvent other = (HostEvent) obj;
+
         // XXX lastSeenTime excluded from Equality condition, is it OK?
         return Objects.equals(mac, other.mac) &&
                 Objects.equals(this.attachmentPoints, other.attachmentPoints);
diff --git a/src/main/java/net/onrc/onos/core/topology/TopologyEvent.java b/src/main/java/net/onrc/onos/core/topology/TopologyEvent.java
index 9d9b573..cf61017 100644
--- a/src/main/java/net/onrc/onos/core/topology/TopologyEvent.java
+++ b/src/main/java/net/onrc/onos/core/topology/TopologyEvent.java
@@ -60,7 +60,7 @@
 
     /**
      * Check if all events contained are equal.
-     * @param object.
+     * @param obj.
      */
     @Override
     public boolean equals(Object obj) {
@@ -128,6 +128,6 @@
         if (hostEvent != null) {
             return hostEvent.getID();
         }
-        return null;
+        throw new IllegalStateException("Invalid TopologyEvent ID");
     }
 }
diff --git a/src/main/java/net/onrc/onos/core/topology/web/serializers/HostEventSerializer.java b/src/main/java/net/onrc/onos/core/topology/web/serializers/HostEventSerializer.java
index eefb4eb..d5a98f0 100644
--- a/src/main/java/net/onrc/onos/core/topology/web/serializers/HostEventSerializer.java
+++ b/src/main/java/net/onrc/onos/core/topology/web/serializers/HostEventSerializer.java
@@ -10,8 +10,14 @@
 import org.codehaus.jackson.map.SerializerProvider;
 import org.codehaus.jackson.map.ser.std.SerializerBase;
 
+/**
+ * Serializes HostEvents as JSON.
+ */
 public class HostEventSerializer extends SerializerBase<HostEvent> {
 
+    /**
+     * Constructs a HostEvent Serializer.
+     */
     public HostEventSerializer() {
         super(HostEvent.class);
     }
diff --git a/src/main/java/net/onrc/onos/core/topology/web/serializers/HostSerializer.java b/src/main/java/net/onrc/onos/core/topology/web/serializers/HostSerializer.java
index c706f26..19425e5 100644
--- a/src/main/java/net/onrc/onos/core/topology/web/serializers/HostSerializer.java
+++ b/src/main/java/net/onrc/onos/core/topology/web/serializers/HostSerializer.java
@@ -10,8 +10,14 @@
 import org.codehaus.jackson.map.SerializerProvider;
 import org.codehaus.jackson.map.ser.std.SerializerBase;
 
+/**
+ * Serializes Host objects as JSON.
+ */
 public class HostSerializer extends SerializerBase<Host> {
 
+    /**
+     * Constructs a Host serializer.
+     */
     public HostSerializer() {
         super(Host.class);
     }
diff --git a/src/main/java/net/onrc/onos/core/topology/web/serializers/LinkSerializer.java b/src/main/java/net/onrc/onos/core/topology/web/serializers/LinkSerializer.java
index 7b06a21..10b29ea 100644
--- a/src/main/java/net/onrc/onos/core/topology/web/serializers/LinkSerializer.java
+++ b/src/main/java/net/onrc/onos/core/topology/web/serializers/LinkSerializer.java
@@ -10,8 +10,14 @@
 import org.codehaus.jackson.map.SerializerProvider;
 import org.codehaus.jackson.map.ser.std.SerializerBase;
 
+/**
+ * Serializes a Link object as JSON.
+ */
 public class LinkSerializer extends SerializerBase<Link> {
 
+    /**
+     * Constructs a Link serializer.
+     */
     public LinkSerializer() {
         super(Link.class);
     }
diff --git a/src/main/java/net/onrc/onos/core/topology/web/serializers/PortEventSerializer.java b/src/main/java/net/onrc/onos/core/topology/web/serializers/PortEventSerializer.java
index db22b2d..60c984d 100644
--- a/src/main/java/net/onrc/onos/core/topology/web/serializers/PortEventSerializer.java
+++ b/src/main/java/net/onrc/onos/core/topology/web/serializers/PortEventSerializer.java
@@ -9,8 +9,14 @@
 import org.codehaus.jackson.map.SerializerProvider;
 import org.codehaus.jackson.map.ser.std.SerializerBase;
 
+/**
+ * Serializes a PortEvent object as JSON.
+ */
 public class PortEventSerializer extends SerializerBase<PortEvent> {
 
+    /**
+     * Constructs a PortEvent serializer.
+     */
     public PortEventSerializer() {
         super(PortEvent.class);
     }
diff --git a/src/main/java/net/onrc/onos/core/topology/web/serializers/PortSerializer.java b/src/main/java/net/onrc/onos/core/topology/web/serializers/PortSerializer.java
index 628a923..ff08f5b 100644
--- a/src/main/java/net/onrc/onos/core/topology/web/serializers/PortSerializer.java
+++ b/src/main/java/net/onrc/onos/core/topology/web/serializers/PortSerializer.java
@@ -10,8 +10,14 @@
 import org.codehaus.jackson.map.SerializerProvider;
 import org.codehaus.jackson.map.ser.std.SerializerBase;
 
+/**
+ * Serializes a Port object as JSON.
+ */
 public class PortSerializer extends SerializerBase<Port> {
 
+    /**
+     * Constructs a Port serializer.
+     */
     public PortSerializer() {
         super(Port.class);
     }
diff --git a/src/main/java/net/onrc/onos/core/topology/web/serializers/SwitchEventSerializer.java b/src/main/java/net/onrc/onos/core/topology/web/serializers/SwitchEventSerializer.java
index c4e1826..78e3536 100644
--- a/src/main/java/net/onrc/onos/core/topology/web/serializers/SwitchEventSerializer.java
+++ b/src/main/java/net/onrc/onos/core/topology/web/serializers/SwitchEventSerializer.java
@@ -9,8 +9,14 @@
 import org.codehaus.jackson.map.SerializerProvider;
 import org.codehaus.jackson.map.ser.std.SerializerBase;
 
+/**
+ * Serializes a SwitchEvent as JSON.
+ */
 public class SwitchEventSerializer extends SerializerBase<SwitchEvent> {
 
+    /**
+     * Constructs a SwitchEvent serializer.
+     */
     public SwitchEventSerializer() {
         super(SwitchEvent.class);
     }
diff --git a/src/main/java/net/onrc/onos/core/topology/web/serializers/SwitchSerializer.java b/src/main/java/net/onrc/onos/core/topology/web/serializers/SwitchSerializer.java
index 8542641..69a5cac 100644
--- a/src/main/java/net/onrc/onos/core/topology/web/serializers/SwitchSerializer.java
+++ b/src/main/java/net/onrc/onos/core/topology/web/serializers/SwitchSerializer.java
@@ -11,8 +11,14 @@
 import org.codehaus.jackson.map.SerializerProvider;
 import org.codehaus.jackson.map.ser.std.SerializerBase;
 
+/**
+ * Serializes a Switch object as JSON.
+ */
 public class SwitchSerializer extends SerializerBase<Switch> {
 
+    /**
+     * Constructs a Switch object serializer.
+     */
     public SwitchSerializer() {
         super(Switch.class);
     }
