diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/topo/Topo2Jsonifier.java b/web/gui/src/main/java/org/onosproject/ui/impl/topo/Topo2Jsonifier.java
index 214553e..606d175 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/topo/Topo2Jsonifier.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/topo/Topo2Jsonifier.java
@@ -24,6 +24,7 @@
 import org.onlab.osgi.ServiceDirectory;
 import org.onlab.packet.IpAddress;
 import org.onosproject.cluster.ClusterService;
+import org.onosproject.cluster.ControllerNode;
 import org.onosproject.cluster.NodeId;
 import org.onosproject.incubator.net.PortStatisticsService;
 import org.onosproject.incubator.net.tunnel.TunnelService;
@@ -41,6 +42,7 @@
 import org.onosproject.net.region.Region;
 import org.onosproject.net.statistic.StatisticService;
 import org.onosproject.net.topology.TopologyService;
+import org.onosproject.ui.GlyphConstants;
 import org.onosproject.ui.JsonUtils;
 import org.onosproject.ui.UiExtensionService;
 import org.onosproject.ui.UiPreferencesService;
@@ -202,11 +204,12 @@
 
     private ObjectNode json(UiClusterMember member, boolean isUiAttached) {
         int switchCount = mastershipService.getDevicesOf(member.id()).size();
+        ControllerNode.State state = clusterService.getState(member.id());
         return objectNode()
                 .put("id", member.id().toString())
                 .put("ip", member.ip().toString())
-                .put("online", member.isOnline())
-                .put("ready", member.isReady())
+                .put("online", state.isActive())
+                .put("ready", state.isReady())
                 .put("uiAttached", isUiAttached)
                 .put("switches", switchCount);
     }
@@ -397,8 +400,9 @@
         if (element instanceof UiLink) {
             return json((UiLink) element);
         }
-
-        // TODO: UiClusterMember
+        if (element instanceof UiClusterMember) {
+            return json((UiClusterMember) element);
+        }
 
         // Unrecognized UiElement class
         return objectNode()
@@ -634,6 +638,16 @@
         return data;
     }
 
+    private ObjectNode json(UiClusterMember member) {
+        ControllerNode.State state = clusterService.getState(member.id());
+        return objectNode()
+                .put("id", member.idAsString())
+                .put("ip", member.ip().toString())
+                .put("online", state.isActive())
+                .put("ready", state.isReady())
+                .put(GlyphConstants.UI_ATTACHED,
+                     member.backingNode().equals(clusterService.getLocalNode()));
+    }
 
     private ObjectNode jsonClosedRegion(String ridStr, UiRegion region) {
         ObjectNode node = objectNode()
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/topo/model/ModelCache.java b/web/gui/src/main/java/org/onosproject/ui/impl/topo/model/ModelCache.java
index fa426e1..a078b7d 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/topo/model/ModelCache.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/topo/model/ModelCache.java
@@ -138,8 +138,7 @@
     }
 
     private void updateClusterMember(UiClusterMember member) {
-        ControllerNode.State state = services.cluster().getState(member.id());
-        member.setState(state);
+        // maybe something to update in the future?
     }
 
     private void loadClusterMembers() {
diff --git a/web/gui/src/test/java/org/onosproject/ui/impl/topo/model/ModelCacheTest.java b/web/gui/src/test/java/org/onosproject/ui/impl/topo/model/ModelCacheTest.java
index 8d7ada6..8a9328d 100644
--- a/web/gui/src/test/java/org/onosproject/ui/impl/topo/model/ModelCacheTest.java
+++ b/web/gui/src/test/java/org/onosproject/ui/impl/topo/model/ModelCacheTest.java
@@ -152,8 +152,11 @@
         // see AbstractUiImplTest Mock Environment for expected values...
         assertEquals("wrong id str", C1, member.idAsString());
         assertEquals("wrong id", nodeId(C1), member.id());
-        assertEquals("not online", true, member.isOnline());
-        assertEquals("not ready", true, member.isReady());
+
+        // TODO make assertions through the cluster service; state no longer
+        //   cached in the UiModel...
+//        assertEquals("not online", true, member.isOnline());
+//        assertEquals("not ready", true, member.isReady());
     }
 
 
