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 8e4e837..ddfbecf 100644
--- a/src/main/java/net/onrc/onos/core/util/Dpid.java
+++ b/src/main/java/net/onrc/onos/core/util/Dpid.java
@@ -1,5 +1,7 @@
 package net.onrc.onos.core.util;
 
+import javax.annotation.concurrent.Immutable;
+
 import net.onrc.onos.core.util.serializers.DpidDeserializer;
 import net.onrc.onos.core.util.serializers.DpidSerializer;
 
@@ -7,12 +9,15 @@
 import org.codehaus.jackson.map.annotate.JsonSerialize;
 import org.projectfloodlight.openflow.util.HexString;
 
+import com.google.common.primitives.Longs;
+
 /**
  * The class representing a network switch DPID.
  * This class is immutable.
  */
 @JsonDeserialize(using = DpidDeserializer.class)
 @JsonSerialize(using = DpidSerializer.class)
+@Immutable
 public final class Dpid {
     private static final long UNKNOWN = 0;
     private final long value;
@@ -74,8 +79,6 @@
 
     @Override
     public int hashCode() {
-        int hash = 17;
-        hash += 31 * hash + (int) (value ^ value >>> 32);
-        return hash;
+        return Longs.hashCode(value);
     }
 }
diff --git a/src/main/java/net/onrc/onos/core/util/LinkTuple.java b/src/main/java/net/onrc/onos/core/util/LinkTuple.java
index 7831925..f44698f 100644
--- a/src/main/java/net/onrc/onos/core/util/LinkTuple.java
+++ b/src/main/java/net/onrc/onos/core/util/LinkTuple.java
@@ -4,10 +4,13 @@
 
 import java.util.Objects;
 
+import javax.annotation.concurrent.Immutable;
+
 
 /**
  * Immutable class to identify a Link between 2 ports.
  */
+@Immutable
 public final class LinkTuple {
 
     private final SwitchPort src;
@@ -66,11 +69,7 @@
 
     @Override
     public int hashCode() {
-        final int prime = 31;
-        int result = 1;
-        result = prime * result + ((src == null) ? 0 : src.hashCode());
-        result = prime * result + ((dst == null) ? 0 : dst.hashCode());
-        return result;
+        return Objects.hash(src, dst);
     }
 
     @Override
diff --git a/src/main/java/net/onrc/onos/core/util/OnosInstanceId.java b/src/main/java/net/onrc/onos/core/util/OnosInstanceId.java
index 61b0751..9badb1b 100644
--- a/src/main/java/net/onrc/onos/core/util/OnosInstanceId.java
+++ b/src/main/java/net/onrc/onos/core/util/OnosInstanceId.java
@@ -3,11 +3,14 @@
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkArgument;
 
+import javax.annotation.concurrent.Immutable;
+
 /**
  * The class representing an ONOS Instance ID.
  *
  * This class is immutable.
  */
+@Immutable
 public final class OnosInstanceId {
     private final String id;
 
diff --git a/src/main/java/net/onrc/onos/core/util/PortNumber.java b/src/main/java/net/onrc/onos/core/util/PortNumber.java
index 09df247..0320a42 100644
--- a/src/main/java/net/onrc/onos/core/util/PortNumber.java
+++ b/src/main/java/net/onrc/onos/core/util/PortNumber.java
@@ -1,14 +1,15 @@
 package net.onrc.onos.core.util;
 
+import javax.annotation.concurrent.Immutable;
+
 import org.codehaus.jackson.annotate.JsonProperty;
 
 import com.google.common.primitives.UnsignedInts;
 
 /**
  * Immutable class representing a port number.
- * <p/>
- * Current implementation supports only OpenFlow 1.0 (16 bit unsigned) port number.
  */
+@Immutable
 public final class PortNumber {
 
     private final int value;
diff --git a/src/main/java/net/onrc/onos/core/util/SwitchPort.java b/src/main/java/net/onrc/onos/core/util/SwitchPort.java
index 74f0ed4..da60cbf 100644
--- a/src/main/java/net/onrc/onos/core/util/SwitchPort.java
+++ b/src/main/java/net/onrc/onos/core/util/SwitchPort.java
@@ -2,6 +2,10 @@
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
+import java.util.Objects;
+
+import javax.annotation.concurrent.Immutable;
+
 import net.onrc.onos.core.util.serializers.SwitchPortSerializer;
 
 import org.codehaus.jackson.map.annotate.JsonSerialize;
@@ -11,6 +15,7 @@
  * This class is immutable.
  */
 @JsonSerialize(using = SwitchPortSerializer.class)
+@Immutable
 public final class SwitchPort {
     private final Dpid dpid;            // The DPID of the switch
     private final PortNumber port;      // The port number on the switch
@@ -101,9 +106,6 @@
 
     @Override
     public int hashCode() {
-        int hash = 17;
-        hash += 31 * hash + dpid.hashCode();
-        hash += 31 * hash + port.hashCode();
-        return hash;
+        return Objects.hash(dpid, port);
     }
 }
