Enahnced link and host stores to extend general store.
diff --git a/core/api/src/main/java/org/onlab/onos/store/AbstractStore.java b/core/api/src/main/java/org/onlab/onos/store/AbstractStore.java
index efd0d03..5d76e0f 100644
--- a/core/api/src/main/java/org/onlab/onos/store/AbstractStore.java
+++ b/core/api/src/main/java/org/onlab/onos/store/AbstractStore.java
@@ -2,6 +2,8 @@
 
 import org.onlab.onos.event.Event;
 
+import static com.google.common.base.Preconditions.checkState;
+
 /**
  * Base implementation of a store.
  */
@@ -12,12 +14,21 @@
 
     @Override
     public void setDelegate(D delegate) {
+        checkState(this.delegate == null || this.delegate == delegate,
+                   "Store delegate already set");
         this.delegate = delegate;
     }
 
     @Override
-    public D getDelegate() {
-        return delegate;
+    public void unsetDelegate(D delegate) {
+        if (this.delegate == delegate) {
+            this.delegate = null;
+        }
+    }
+
+    @Override
+    public boolean hasDelegate() {
+        return delegate != null;
     }
 
     /**