diff --git a/core/net/src/main/java/org/onlab/onos/net/intent/impl/IntentManager.java b/core/net/src/main/java/org/onlab/onos/net/intent/impl/IntentManager.java
index c4008aa..b81f81f 100644
--- a/core/net/src/main/java/org/onlab/onos/net/intent/impl/IntentManager.java
+++ b/core/net/src/main/java/org/onlab/onos/net/intent/impl/IntentManager.java
@@ -294,7 +294,7 @@
             // intents with the top-level intent and proceed to install.
             update.setInstallables(installables);
         } catch (PathNotFoundException e) {
-            log.debug("Path not found for intent {}", intent.id());
+            log.debug("Path not found for intent {}", intent);
         } catch (IntentException e) {
             log.warn("Unable to compile intent {} due to:", intent.id(), e);
 
@@ -606,6 +606,9 @@
                 oldInstallables = store.getInstallableIntents(oldIntent.id());
             } else {
                 oldInstallables = null;
+                if (newIntent == null) {
+                    log.info("Ignoring {} for Intent {}", op.type(), op.intentId());
+                }
             }
         }
 
@@ -853,8 +856,8 @@
          */
         private void processFutures() {
             if (future == null) {
-                log.warn("I have no Future.");
-                return; //FIXME look at this
+                // we are done if the future is null
+                return;
             }
             try {
                 CompletedBatchOperation completed = future.get(100, TimeUnit.NANOSECONDS);
diff --git a/core/net/src/main/java/org/onlab/onos/net/intent/impl/ObjectiveTracker.java b/core/net/src/main/java/org/onlab/onos/net/intent/impl/ObjectiveTracker.java
index 83a3ccb..ec22bd2 100644
--- a/core/net/src/main/java/org/onlab/onos/net/intent/impl/ObjectiveTracker.java
+++ b/core/net/src/main/java/org/onlab/onos/net/intent/impl/ObjectiveTracker.java
@@ -77,7 +77,7 @@
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
     protected LinkResourceService resourceManager;
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.OPTIONAL_UNARY)
     protected IntentService intentService;
 
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
@@ -108,6 +108,18 @@
         log.info("Stopped");
     }
 
+    protected void bindIntentService(IntentService service) {
+        if (intentService == null) {
+            intentService = service;
+        }
+     }
+
+    protected void unbindIntentService(IntentService service) {
+        if (intentService == service) {
+            intentService = null;
+        }
+    }
+
     @Override
     public void setDelegate(TopologyChangeDelegate delegate) {
         checkNotNull(delegate, "Delegate cannot be null");
@@ -235,6 +247,10 @@
     //TODO consider adding flow rule event tracking
 
     private void updateTrackedResources(ApplicationId appId, boolean track) {
+        if (intentService == null) {
+            log.debug("Intent service is not bound yet");
+            return;
+        }
         intentService.getIntents().forEach(intent -> {
             if (intent.appId().equals(appId)) {
                 IntentId id = intent.id();
diff --git a/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/DatabaseManager.java b/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/DatabaseManager.java
index 9187ead..7467a4b 100644
--- a/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/DatabaseManager.java
+++ b/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/DatabaseManager.java
@@ -63,7 +63,7 @@
  * Strongly consistent and durable state management service based on
  * Copycat implementation of Raft consensus protocol.
  */
-@Component(immediate = true)
+@Component(immediate = false)
 @Service
 public class DatabaseManager implements DatabaseService, DatabaseAdminService {
 
diff --git a/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/DistributedLockManager.java b/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/DistributedLockManager.java
index 45cc7ed..681cd2d 100644
--- a/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/DistributedLockManager.java
+++ b/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/DistributedLockManager.java
@@ -33,7 +33,7 @@
 import com.google.common.collect.ListMultimap;
 import com.google.common.collect.Multimaps;
 
-@Component(immediate = true)
+@Component(immediate = false)
 @Service
 public class DistributedLockManager implements LockService {
 
