diff --git a/web/gui/src/main/webapp/app/fw/widget/table.js b/web/gui/src/main/webapp/app/fw/widget/table.js
index eb05bdf..81edaa0 100644
--- a/web/gui/src/main/webapp/app/fw/widget/table.js
+++ b/web/gui/src/main/webapp/app/fw/widget/table.js
@@ -83,7 +83,8 @@
 
         tHeaders.each(function (d, i) {
             var thElement = d3.select(this),
-                tdElement = t.select('td:nth-of-type(' + (i + 1) + ')'),
+                tr = t.select('tr:nth-of-type(2)'),
+                tdElement = tr.select('td:nth-of-type(' + (i + 1) + ')'),
                 custWidth = thElement.attr(colWidth);
 
             if (custWidth) {
@@ -105,9 +106,10 @@
             tableHeight = fs.windowSize(mast.mastHeight() + totalHeight).height;
 
         thead.style('display', 'block');
-        tbody.style({'display': 'block',
-            'height': (tableHeight + 'px'),
-            'overflow': 'auto'
+        tbody.style({
+            display: 'block',
+            height: tableHeight + 'px',
+            overflow: 'auto'
         });
     }
 
diff --git a/web/gui/src/main/webapp/app/view/cluster/cluster.css b/web/gui/src/main/webapp/app/view/cluster/cluster.css
new file mode 100644
index 0000000..5025062
--- /dev/null
+++ b/web/gui/src/main/webapp/app/view/cluster/cluster.css
@@ -0,0 +1,22 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ ONOS GUI -- Cluster View -- CSS file
+ */
+
+#ov-cluster td {
+}
\ No newline at end of file
diff --git a/web/gui/src/main/webapp/app/view/cluster/cluster.html b/web/gui/src/main/webapp/app/view/cluster/cluster.html
new file mode 100644
index 0000000..b6c015b
--- /dev/null
+++ b/web/gui/src/main/webapp/app/view/cluster/cluster.html
@@ -0,0 +1,52 @@
+<!--
+  ~ Copyright 2015 Open Networking Laboratory
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<!-- Cluster partial HTML -->
+<div id="ov-cluster">
+    <h2>Cluster Nodes ({{ctrl.tableData.length}} total)</h2>
+    <table class="summary-list"
+           onos-fixed-header
+           onos-sortable-header
+           sort-callback="sortCallback(requestParams)">
+        <thead>
+        <tr>
+            <th colId="id" sortable>ID </th>
+            <th colId="ip" sortable>IP Address </th>
+            <th colId="tcp" sortable>TCP Port </th>
+            <th colId="state" sortable>State </th>
+            <th colId="updated" sortable>Last Updated </th>
+        </tr>
+        </thead>
+
+        <tbody>
+        <tr ng-hide="ctrl.tableData.length">
+            <td class="nodata" colspan="5">
+                No Cluster Nodes found
+            </td>
+        </tr>
+
+        <tr ng-repeat="node in ctrl.tableData"
+            ng-repeat-done>
+            <td>{{node.id}}</td>
+            <td>{{node.ip}}</td>
+            <td>{{node.tcp}}</td>
+            <td>{{node.state}}</td>
+            <td>{{node.updated}}</td>
+        </tr>
+        </tbody>
+    </table>
+
+</div>
diff --git a/web/gui/src/main/webapp/app/view/cluster/cluster.js b/web/gui/src/main/webapp/app/view/cluster/cluster.js
new file mode 100644
index 0000000..0f4a4f8
--- /dev/null
+++ b/web/gui/src/main/webapp/app/view/cluster/cluster.js
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ ONOS GUI -- Cluster View Module
+ */
+
+(function () {
+    'use strict';
+
+    angular.module('ovCluster', [])
+        .controller('OvClusterCtrl',
+        ['$log', '$scope', 'TableBuilderService',
+
+            function ($log, $scope, tbs) {
+                tbs.buildTable({
+                    self: this,
+                    scope: $scope,
+                    tag: 'cluster'
+                });
+
+                $log.log('OvClusterCtrl has been created');
+            }]);
+}());
diff --git a/web/gui/src/main/webapp/app/view/intent/intent.css b/web/gui/src/main/webapp/app/view/intent/intent.css
index 47ea2aa..4aac0bb 100644
--- a/web/gui/src/main/webapp/app/view/intent/intent.css
+++ b/web/gui/src/main/webapp/app/view/intent/intent.css
@@ -18,24 +18,24 @@
  ONOS GUI -- Intent View -- CSS file
  */
 
-.light #ov-intent tr:nth-child(6n + 1),
 .light #ov-intent tr:nth-child(6n + 2),
-.light #ov-intent tr:nth-child(6n + 3) {
+.light #ov-intent tr:nth-child(6n + 3),
+.light #ov-intent tr:nth-child(6n + 4) {
     background-color: #eee;
 }
-.light #ov-intent tr:nth-child(6n + 4),
 .light #ov-intent tr:nth-child(6n + 5),
-.light #ov-intent tr:nth-child(6n) {
+.light #ov-intent tr:nth-child(6n + 6),
+.light #ov-intent tr:nth-child(6n + 1) {
     background-color: #ddd;
 }
-.dark #ov-intent tr:nth-child(6n + 1),
 .dark #ov-intent tr:nth-child(6n + 2),
-.dark #ov-intent tr:nth-child(6n + 3) {
+.dark #ov-intent tr:nth-child(6n + 3),
+.dark #ov-intent tr:nth-child(6n + 4) {
     background-color: #444;
 }
-.dark #ov-intent tr:nth-child(6n + 4),
 .dark #ov-intent tr:nth-child(6n + 5),
-.dark #ov-intent tr:nth-child(6n) {
+.dark #ov-intent tr:nth-child(6n + 6),
+.dark #ov-intent tr:nth-child(6n + 1) {
     background-color: #333;
 }
 
