diff --git a/providers/null/host/src/main/java/org/onosproject/provider/nil/host/impl/NullHostProvider.java b/providers/null/host/src/main/java/org/onosproject/provider/nil/host/impl/NullHostProvider.java
index d5ee60e..c4e9c5c 100644
--- a/providers/null/host/src/main/java/org/onosproject/provider/nil/host/impl/NullHostProvider.java
+++ b/providers/null/host/src/main/java/org/onosproject/provider/nil/host/impl/NullHostProvider.java
@@ -22,7 +22,6 @@
 import org.apache.felix.scr.annotations.ReferenceCardinality;
 import org.onlab.packet.MacAddress;
 import org.onlab.packet.VlanId;
-import org.onosproject.cfg.ComponentConfigService;
 import org.onosproject.cluster.ClusterService;
 import org.onosproject.mastership.MastershipService;
 import org.onosproject.net.Device;
@@ -43,8 +42,8 @@
 import org.onosproject.net.provider.ProviderId;
 import org.slf4j.Logger;
 
-import static org.slf4j.LoggerFactory.getLogger;
 import static org.onlab.util.Tools.toHex;
+import static org.slf4j.LoggerFactory.getLogger;
 
 /**
  * Null provider to advertise fake hosts.
@@ -66,9 +65,6 @@
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
     protected HostProviderRegistry providerRegistry;
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
-    protected ComponentConfigService cfgService;
-
     private HostProviderService providerService;
 
     //make sure the device has enough ports to accomodate all of them.
@@ -94,7 +90,6 @@
 
     @Activate
     public void activate() {
-        cfgService.registerProperties(getClass());
         providerService = providerRegistry.register(this);
         for (Device dev : deviceService.getDevices()) {
             addHosts(dev);
@@ -106,7 +101,6 @@
 
     @Deactivate
     public void deactivate() {
-        cfgService.unregisterProperties(getClass(), false);
         providerRegistry.unregister(this);
         deviceService.removeListener(hostProvider);
         providerService = null;
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/UiWebSocket.java b/web/gui/src/main/java/org/onosproject/ui/impl/UiWebSocket.java
index dd00d49..a35a388 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/UiWebSocket.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/UiWebSocket.java
@@ -194,8 +194,8 @@
         }
 
         ObjectNode payload = mapper.createObjectNode();
-        payload.set("instances", instances);
-        sendMessage("onosInstances", 0, payload);
+        payload.set("clusterNodes", instances);
+        sendMessage("bootstrap", 0, payload);
     }
 
 }
diff --git a/web/gui/src/main/webapp/app/fw/remote/websocket.js b/web/gui/src/main/webapp/app/fw/remote/websocket.js
index f1a4d52..ca2840d 100644
--- a/web/gui/src/main/webapp/app/fw/remote/websocket.js
+++ b/web/gui/src/main/webapp/app/fw/remote/websocket.js
@@ -40,10 +40,12 @@
 
     var builtinHandlers = {
         bootstrap: function (data) {
-            clusterNodes = data.instances;
+            clusterNodes = data.clusterNodes;
             clusterNodes.forEach(function (d, i) {
                 if (d.uiAttached) {
                     clusterIndex = i;
+                    $log.info('Connected to cluster node ' + d.ip);
+                    // TODO: add connect info to masthead somewhere
                 }
             });
         }
@@ -228,7 +230,11 @@
             wsock = _wsock_;
             vs = _vs_;
 
-            bindHandlers(builtinHandlers);
+            // TODO: Consider how to simplify handler structure
+            // Now it is an object of key -> object that has a method named 'key'.
+            bindHandlers({
+                bootstrap: builtinHandlers
+            });
 
             return {
                 resetSid: resetSid,
