diff --git a/core/store/dist/src/main/java/org/onlab/onos/store/service/ReadRequest.java b/core/store/dist/src/main/java/org/onlab/onos/store/service/ReadRequest.java
index 6c0ba30..a22464a 100644
--- a/core/store/dist/src/main/java/org/onlab/onos/store/service/ReadRequest.java
+++ b/core/store/dist/src/main/java/org/onlab/onos/store/service/ReadRequest.java
@@ -1,5 +1,7 @@
 package org.onlab.onos.store.service;
 
+import com.google.common.base.MoreObjects;
+
 /**
  * Database read request.
  */
@@ -31,6 +33,9 @@
 
     @Override
     public String toString() {
-        return "ReadRequest [tableName=" + tableName + ", key=" + key + "]";
+        return MoreObjects.toStringHelper(getClass())
+                .add("tableName", tableName)
+                .add("key", key)
+                .toString();
     }
 }
\ No newline at end of file
diff --git a/core/store/dist/src/main/java/org/onlab/onos/store/service/ReadResult.java b/core/store/dist/src/main/java/org/onlab/onos/store/service/ReadResult.java
index 33b57d2..6d28fc2 100644
--- a/core/store/dist/src/main/java/org/onlab/onos/store/service/ReadResult.java
+++ b/core/store/dist/src/main/java/org/onlab/onos/store/service/ReadResult.java
@@ -1,5 +1,7 @@
 package org.onlab.onos.store.service;
 
+import com.google.common.base.MoreObjects;
+
 
 /**
  * Database read result.
@@ -18,7 +20,7 @@
 
     /**
      * Returns database table name.
-     * @return table name.
+     * @return table name
      */
     public String tableName() {
         return tableName;
@@ -26,7 +28,7 @@
 
     /**
      * Returns database table key.
-     * @return key.
+     * @return key
      */
     public String key() {
         return key;
@@ -39,4 +41,13 @@
     public VersionedValue value() {
         return value;
     }
+
+    @Override
+    public String toString() {
+        return MoreObjects.toStringHelper(getClass())
+                .add("tableName", tableName)
+                .add("key", key)
+                .add("value", value)
+                .toString();
+    }
 }
diff --git a/core/store/dist/src/main/java/org/onlab/onos/store/service/VersionedValue.java b/core/store/dist/src/main/java/org/onlab/onos/store/service/VersionedValue.java
index d88d35e..852fb07 100644
--- a/core/store/dist/src/main/java/org/onlab/onos/store/service/VersionedValue.java
+++ b/core/store/dist/src/main/java/org/onlab/onos/store/service/VersionedValue.java
@@ -2,6 +2,8 @@
 
 import java.util.Arrays;
 
+import com.google.common.base.MoreObjects;
+
 /**
  * Wrapper object that holds the object (as byte array) and its version.
  */
@@ -38,7 +40,9 @@
 
     @Override
     public String toString() {
-        return "VersionedValue [value=" + Arrays.toString(value) + ", version="
-                + version + "]";
+        return MoreObjects.toStringHelper(getClass())
+                .add("version", version)
+                .add("value", Arrays.toString(value))
+                .toString();
     }
 }
diff --git a/core/store/dist/src/main/java/org/onlab/onos/store/service/WriteRequest.java b/core/store/dist/src/main/java/org/onlab/onos/store/service/WriteRequest.java
index 1561c2d..99f73c1 100644
--- a/core/store/dist/src/main/java/org/onlab/onos/store/service/WriteRequest.java
+++ b/core/store/dist/src/main/java/org/onlab/onos/store/service/WriteRequest.java
@@ -4,6 +4,8 @@
 
 import java.util.Objects;
 
+import com.google.common.base.MoreObjects;
+
 /**
  * Database write request.
  */
@@ -67,10 +69,13 @@
 
     @Override
     public String toString() {
-        return "WriteRequest [tableName=" + tableName + ", key=" + key
-                + ", newValue=" + newValue
-                + ", previousVersion=" + previousVersion
-                + ", oldValue=" + oldValue;
+        return MoreObjects.toStringHelper(getClass())
+                .add("tableName", tableName)
+                .add("key", key)
+                .add("newValue", newValue)
+                .add("previousVersion", previousVersion)
+                .add("oldValue", oldValue)
+                .toString();
     }
 
     @Override
diff --git a/core/store/dist/src/main/java/org/onlab/onos/store/service/WriteResult.java b/core/store/dist/src/main/java/org/onlab/onos/store/service/WriteResult.java
index fa20a04..aec3046 100644
--- a/core/store/dist/src/main/java/org/onlab/onos/store/service/WriteResult.java
+++ b/core/store/dist/src/main/java/org/onlab/onos/store/service/WriteResult.java
@@ -1,5 +1,7 @@
 package org.onlab.onos.store.service;
 
+import com.google.common.base.MoreObjects;
+
 
 /**
  * Database write result.
@@ -27,4 +29,13 @@
     public VersionedValue previousValue() {
         return previousValue;
     }
+
+    @Override
+    public String toString() {
+        return MoreObjects.toStringHelper(getClass())
+                .add("tableName", tableName)
+                .add("key", key)
+                .add("previousValue", previousValue)
+                .toString();
+    }
 }
