diff --git a/src/main/java/net/onrc/onos/core/datastore/hazelcast/HZMultiEntryOperation.java b/src/main/java/net/onrc/onos/core/datastore/hazelcast/HZMultiEntryOperation.java
index d3df22c..99db3cc 100644
--- a/src/main/java/net/onrc/onos/core/datastore/hazelcast/HZMultiEntryOperation.java
+++ b/src/main/java/net/onrc/onos/core/datastore/hazelcast/HZMultiEntryOperation.java
@@ -4,8 +4,6 @@
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
-
 import net.onrc.onos.core.datastore.IKVTableID;
 import net.onrc.onos.core.datastore.IMultiEntryOperation;
 import net.onrc.onos.core.datastore.hazelcast.HZTable.VersionedValue;
@@ -35,11 +33,9 @@
      * @param key
      * @param operation
      */
-    @SuppressFBWarnings(value = "EI_EXPOSE_REP2",
-                        justification = "TODO: Store a copy of the object?")
     public HZMultiEntryOperation(final HZTable table, final byte[] key, final OPERATION operation) {
         this.table = table;
-        this.key = key;
+        this.key = key.clone();
         this.status = STATUS.NOT_EXECUTED;
         this.operation = operation;
 
@@ -56,11 +52,9 @@
      * @param version
      * @param operation
      */
-    @SuppressFBWarnings(value = "EI_EXPOSE_REP2",
-                        justification = "TODO: Store a copy of the object?")
     public HZMultiEntryOperation(final HZTable table, final byte[] key, final byte[] value, final long version, final OPERATION operation) {
         this.table = table;
-        this.key = key;
+        this.key = key.clone();
         this.status = STATUS.NOT_EXECUTED;
         this.operation = operation;
 
@@ -87,10 +81,8 @@
     }
 
     @Override
-    @SuppressFBWarnings(value = "EI_EXPOSE_REP",
-                        justification = "TODO: Return a copy of the object?")
     public byte[] getKey() {
-        return key;
+        return key.clone();
     }
 
     @Override
diff --git a/src/main/java/net/onrc/onos/core/datastore/hazelcast/HZTable.java b/src/main/java/net/onrc/onos/core/datastore/hazelcast/HZTable.java
index e609bce..c83e45d 100644
--- a/src/main/java/net/onrc/onos/core/datastore/hazelcast/HZTable.java
+++ b/src/main/java/net/onrc/onos/core/datastore/hazelcast/HZTable.java
@@ -7,14 +7,13 @@
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicLong;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
-
 import net.onrc.onos.core.datastore.IKVTable;
 import net.onrc.onos.core.datastore.IKVTableID;
 import net.onrc.onos.core.datastore.ObjectDoesntExistException;
 import net.onrc.onos.core.datastore.ObjectExistsException;
 import net.onrc.onos.core.datastore.WrongVersionException;
 
+import org.apache.commons.lang.ArrayUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -70,7 +69,7 @@
         }
 
         public VersionedValue(final byte[] value, final long version) {
-            this.value = value;
+            this.value = ArrayUtils.clone(value);
             this.version = version;
         }
 
@@ -83,7 +82,7 @@
         }
 
         public void setValue(final byte[] value) {
-            this.value = value;
+            this.value = ArrayUtils.clone(value);
         }
 
         public void setNextVersion() {
@@ -154,10 +153,8 @@
         byte[] value;
         long version;
 
-        @SuppressFBWarnings(value = "EI_EXPOSE_REP2",
-                            justification = "TODO: Store a copy of the object?")
         public Entry(final byte[] key, final byte[] value, final long version) {
-            this.key = key;
+            this.key = key.clone();
             this.setValue(value);
             this.setVersion(version);
         }
@@ -167,17 +164,13 @@
         }
 
         @Override
-        @SuppressFBWarnings(value = "EI_EXPOSE_REP",
-                            justification = "TODO: Return a copy of the object?")
         public byte[] getKey() {
-            return key;
+            return key.clone();
         }
 
         @Override
-        @SuppressFBWarnings(value = "EI_EXPOSE_REP",
-                            justification = "TODO: Return a copy of the object?")
         public byte[] getValue() {
-            return value;
+            return ArrayUtils.clone(value);
         }
 
         @Override
@@ -186,7 +179,7 @@
         }
 
         void setValue(final byte[] value) {
-            this.value = value;
+            this.value = ArrayUtils.clone(value);
         }
 
         void setVersion(final long version) {
diff --git a/src/main/java/net/onrc/onos/core/datastore/ramcloud/RCTable.java b/src/main/java/net/onrc/onos/core/datastore/ramcloud/RCTable.java
index 5ce07a4..4a92b4f 100644
--- a/src/main/java/net/onrc/onos/core/datastore/ramcloud/RCTable.java
+++ b/src/main/java/net/onrc/onos/core/datastore/ramcloud/RCTable.java
@@ -1,13 +1,12 @@
 package net.onrc.onos.core.datastore.ramcloud;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
-
 import net.onrc.onos.core.datastore.IKVTable;
 import net.onrc.onos.core.datastore.IKVTableID;
 import net.onrc.onos.core.datastore.ObjectDoesntExistException;
 import net.onrc.onos.core.datastore.ObjectExistsException;
 import net.onrc.onos.core.datastore.WrongVersionException;
 
+import org.apache.commons.lang.ArrayUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -23,10 +22,8 @@
         byte[] value;
         long version;
 
-        @SuppressFBWarnings(value = "EI_EXPOSE_REP2",
-                            justification = "TODO: Store a copy of the object?")
         public Entry(final byte[] key, final byte[] value, final long version) {
-            this.key = key;
+            this.key = key.clone();
             this.setValue(value);
             this.setVersion(version);
         }
@@ -36,17 +33,13 @@
         }
 
         @Override
-        @SuppressFBWarnings(value = "EI_EXPOSE_REP",
-                            justification = "TODO: Return a copy of the object?")
         public byte[] getKey() {
-            return key;
+            return key.clone();
         }
 
         @Override
-        @SuppressFBWarnings(value = "EI_EXPOSE_REP",
-                            justification = "TODO: Return a copy of the object?")
         public byte[] getValue() {
-            return value;
+            return ArrayUtils.clone(value);
         }
 
         @Override
@@ -55,7 +48,7 @@
         }
 
         void setValue(byte[] value) {
-            this.value = value;
+            this.value = ArrayUtils.clone(value);
         }
 
         void setVersion(long version) {
diff --git a/src/main/java/net/onrc/onos/core/datastore/topology/KVDevice.java b/src/main/java/net/onrc/onos/core/datastore/topology/KVDevice.java
index 3c56d2c..9a6d550 100644
--- a/src/main/java/net/onrc/onos/core/datastore/topology/KVDevice.java
+++ b/src/main/java/net/onrc/onos/core/datastore/topology/KVDevice.java
@@ -10,8 +10,6 @@
 import java.util.Set;
 import java.util.TreeSet;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
-
 import net.onrc.onos.core.datastore.DataStoreClient;
 import net.onrc.onos.core.datastore.IKVTable.IKVEntry;
 import net.onrc.onos.core.datastore.topology.KVLink.STATUS;
@@ -77,12 +75,10 @@
         return mac;
     }
 
-    @SuppressFBWarnings(value = "EI_EXPOSE_REP2",
-                        justification = "TODO: Store a copy of the object?")
     public KVDevice(final byte[] mac) {
         super(DataStoreClient.getClient().getTable(GLOBAL_DEVICE_TABLE_NAME), getDeviceID(mac));
 
-        this.mac = mac;
+        this.mac = mac.clone();
         this.portIds = new TreeSet<>(ByteArrayComparator.BYTEARRAY_COMPARATOR);
         this.isPortIdsModified = true;
     }
@@ -125,11 +121,8 @@
         }
     }
 
-    @SuppressFBWarnings(value = "EI_EXPOSE_REP",
-                        justification = "TODO: Return a copy of the object?")
     public byte[] getMac() {
-        // TODO may need to clone() to be sure this object will be immutable.
-        return mac;
+        return mac.clone();
     }
 
     public byte[] getId() {
diff --git a/src/main/java/net/onrc/onos/core/datastore/utils/KVObject.java b/src/main/java/net/onrc/onos/core/datastore/utils/KVObject.java
index 078c82d..94f509f 100644
--- a/src/main/java/net/onrc/onos/core/datastore/utils/KVObject.java
+++ b/src/main/java/net/onrc/onos/core/datastore/utils/KVObject.java
@@ -6,8 +6,6 @@
 import java.util.List;
 import java.util.Map;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
-
 import net.onrc.onos.core.datastore.DataStoreClient;
 import net.onrc.onos.core.datastore.IKVClient;
 import net.onrc.onos.core.datastore.IKVTable;
@@ -64,8 +62,6 @@
         this(table, key, null, table.getVersionNonexistant());
     }
 
-    @SuppressFBWarnings(value = "EI_EXPOSE_REP2",
-                        justification = "TODO: Store a copy of the object?")
     public KVObject(final IKVTable table, final byte[] key, final byte[] value, final long version) {
         if (table == null) {
             throw new IllegalArgumentException("table cannot be null");
@@ -74,7 +70,7 @@
             throw new IllegalArgumentException("key cannot be null");
         }
         this.table = table;
-        this.key = key;
+        this.key = key.clone();
         this.version = version;
         this.propertyMap = new HashMap<Object, Object>();
 
@@ -97,10 +93,8 @@
         return table.getTableId();
     }
 
-    @SuppressFBWarnings(value = "EI_EXPOSE_REP",
-                        justification = "TODO: Return a copy of the object?")
     public byte[] getKey() {
-        return key;
+        return key.clone();
     }
 
     public long getVersion() {
