diff --git a/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/ClusterMessagingProtocol.java b/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/ClusterMessagingProtocol.java
index e16838d..0ba67cf 100644
--- a/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/ClusterMessagingProtocol.java
+++ b/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/ClusterMessagingProtocol.java
@@ -111,16 +111,12 @@
             .register(ReadRequest.class)
             .register(WriteRequest.class)
             .register(WriteRequest.Type.class)
-            .register(InternalReadResult.class)
-            .register(InternalWriteResult.class)
-            .register(InternalReadResult.Status.class)
             .register(WriteResult.class)
             .register(ReadResult.class)
             .register(BatchReadRequest.class)
             .register(BatchWriteRequest.class)
             .register(ReadStatus.class)
             .register(WriteStatus.class)
-            .register(InternalWriteResult.Status.class)
             .register(VersionedValue.class)
             .build();
 
diff --git a/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/DistributedLock.java b/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/DistributedLock.java
index 4a7367d..c466941 100644
--- a/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/DistributedLock.java
+++ b/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/DistributedLock.java
@@ -11,7 +11,6 @@
 import org.onlab.onos.cluster.ClusterService;
 import org.onlab.onos.store.service.DatabaseService;
 import org.onlab.onos.store.service.Lock;
-import org.onlab.onos.store.service.OptimisticLockException;
 
 /**
  * A distributed lock implementation.
@@ -57,12 +56,10 @@
 
     @Override
     public boolean tryLock(int leaseDurationMillis) {
-        try {
-            databaseService.putIfAbsent(DistributedLockManager.ONOS_LOCK_TABLE_NAME, path, lockId);
-            return true;
-        } catch (OptimisticLockException e) {
-            return false;
-        }
+        return databaseService.putIfAbsent(
+                DistributedLockManager.ONOS_LOCK_TABLE_NAME,
+                path,
+                lockId);
     }
 
     @Override
diff --git a/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/InternalReadResult.java b/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/InternalReadResult.java
deleted file mode 100644
index d016ba1..0000000
--- a/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/InternalReadResult.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package org.onlab.onos.store.service.impl;
-
-import java.io.Serializable;
-
-import org.onlab.onos.store.service.ReadResult;
-
-/**
- * Result of a read operation executed on the DatabaseStateMachine.
- */
-@SuppressWarnings("serial")
-public class InternalReadResult implements Serializable {
-
-    public enum Status {
-        OK,
-        NO_SUCH_TABLE
-    }
-
-    private final Status status;
-    private final ReadResult result;
-
-    public InternalReadResult(Status status, ReadResult result) {
-        this.status = status;
-        this.result = result;
-    }
-
-    public Status status() {
-        return status;
-    }
-
-    public ReadResult result() {
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return "InternalReadResult [status=" + status + ", result=" + result
-                + "]";
-    }
-}
\ No newline at end of file
diff --git a/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/InternalWriteResult.java b/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/InternalWriteResult.java
deleted file mode 100644
index e936f48..0000000
--- a/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/InternalWriteResult.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package org.onlab.onos.store.service.impl;
-
-import org.onlab.onos.store.service.WriteResult;
-
-import com.google.common.base.MoreObjects;
-
-/**
- * Result of a write operation executed on the DatabaseStateMachine.
- */
-public class InternalWriteResult {
-
-    public enum Status {
-        OK,
-        ABORTED,
-        NO_SUCH_TABLE,
-        PREVIOUS_VERSION_MISMATCH,
-        PREVIOUS_VALUE_MISMATCH
-    }
-
-    private final Status status;
-    private final WriteResult result;
-
-    public static InternalWriteResult ok(WriteResult result) {
-        return new InternalWriteResult(Status.OK, result);
-    }
-
-    public InternalWriteResult(Status status, WriteResult result) {
-        this.status = status;
-        this.result = result;
-    }
-
-    public Status status() {
-        return status;
-    }
-
-    public WriteResult result() {
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("status", status)
-                .add("result", result)
-                .toString();
-    }
-}
