diff --git a/cli/src/main/java/org/onlab/onos/cli/net/ResourceAvailableCommand.java b/cli/src/main/java/org/onlab/onos/cli/net/ResourceAvailableCommand.java
index e67990d..4803e57 100644
--- a/cli/src/main/java/org/onlab/onos/cli/net/ResourceAvailableCommand.java
+++ b/cli/src/main/java/org/onlab/onos/cli/net/ResourceAvailableCommand.java
@@ -85,7 +85,7 @@
             }
 
         } catch (Exception e) {
-            print("Invalid link", e.getMessage());
+            print("Invalid link %s", e.getMessage());
         }
     }
 }
diff --git a/core/api/src/main/java/org/onlab/onos/store/service/VersionedValue.java b/core/api/src/main/java/org/onlab/onos/store/service/VersionedValue.java
index ae6969c..c3a4fac 100644
--- a/core/api/src/main/java/org/onlab/onos/store/service/VersionedValue.java
+++ b/core/api/src/main/java/org/onlab/onos/store/service/VersionedValue.java
@@ -1,5 +1,7 @@
 package org.onlab.onos.store.service;
 
+import static org.onlab.util.HexString.toHexString;
+
 import java.util.Arrays;
 
 import com.google.common.base.MoreObjects;
@@ -64,7 +66,7 @@
     public String toString() {
         return MoreObjects.toStringHelper(getClass())
                 .add("version", version)
-                .add("value", Arrays.toString(value))
+                .add("value", toHexString(value))
                 .toString();
     }
 }
diff --git a/core/api/src/main/java/org/onlab/onos/store/service/WriteRequest.java b/core/api/src/main/java/org/onlab/onos/store/service/WriteRequest.java
index 5274c19..3234bea 100644
--- a/core/api/src/main/java/org/onlab/onos/store/service/WriteRequest.java
+++ b/core/api/src/main/java/org/onlab/onos/store/service/WriteRequest.java
@@ -3,6 +3,7 @@
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static org.onlab.onos.store.service.WriteRequest.Type.*;
+import static org.onlab.util.HexString.toHexString;
 
 import java.util.Objects;
 
@@ -189,9 +190,9 @@
                 .add("type", type)
                 .add("tableName", tableName)
                 .add("key", key)
-                .add("newValue", newValue)
+                .add("newValue", toHexString(newValue))
                 .add("previousVersion", previousVersion)
-                .add("oldValue", oldValue)
+                .add("oldValue", toHexString(oldValue))
                 .toString();
     }
 
diff --git a/core/api/src/test/java/org/onlab/onos/net/flow/FlowRuleEventTest.java b/core/api/src/test/java/org/onlab/onos/net/flow/FlowRuleEventTest.java
index 88ad8c9..90cd0c0 100644
--- a/core/api/src/test/java/org/onlab/onos/net/flow/FlowRuleEventTest.java
+++ b/core/api/src/test/java/org/onlab/onos/net/flow/FlowRuleEventTest.java
@@ -68,7 +68,7 @@
         final long time = System.currentTimeMillis();
         final FlowRule flowRule = new IntentTestsMocks.MockFlowRule(1);
         final FlowRuleEvent event =
-                new FlowRuleEvent(FlowRuleEvent.Type.RULE_UPDATED, flowRule);
+                new FlowRuleEvent(FlowRuleEvent.Type.RULE_UPDATED, flowRule, time);
         validateEvent(event, FlowRuleEvent.Type.RULE_UPDATED, flowRule, time);
     }
 }
diff --git a/utils/misc/src/main/java/org/onlab/util/HexString.java b/utils/misc/src/main/java/org/onlab/util/HexString.java
index 3e9ae03..a1aba93 100644
--- a/utils/misc/src/main/java/org/onlab/util/HexString.java
+++ b/utils/misc/src/main/java/org/onlab/util/HexString.java
@@ -28,6 +28,9 @@
      * @return "0f:ca:fe:de:ad:be:ef"
      */
     public static String toHexString(final byte[] bytes) {
+        if (bytes == null) {
+            return "(null)";
+        }
         int i;
         StringBuilder ret = new StringBuilder(bytes.length * 3 - 1);
         String tmp;
