diff --git a/web/gui/src/main/webapp/_bripc/practice-table.js b/web/gui/src/main/webapp/_bripc/practice-table.js
index 1383696..dd92510 100644
--- a/web/gui/src/main/webapp/_bripc/practice-table.js
+++ b/web/gui/src/main/webapp/_bripc/practice-table.js
@@ -232,36 +232,77 @@
 
     angular.module('practiceTable', ['onosWidget'])
 
-        .controller('showTableCtrl', ['$log', 'TableService',
-            function ($log, ts) {
-                ts.renderTable(d3.select('#tableDiv'), config, deviceData);
+        .controller('showTableCtrl', ['$log', '$scope', '$rootScope',
+            '$timeout', 'TableService',
+            function ($log, $scope, $rootScope, $timeout, ts) {
+                var table = ts.renderTable(d3.select('#tableDiv'), config, deviceData);
+
+                // --- commented out code below were various attempts at $apply ---
+                // will delete unneeded dependencies once we have figured out which ones we need
+
+                //$timeout(function () {
+                //        $log.log('inside timeout');
+                //        //$scope.$watch('table', function (newVal, oldVal) {
+                //            $scope.$apply();
+                //        //});
+                //    }, 1000);
+
+                //$scope.$applyAsync();
+
+                //$scope.$apply(function () {
+                //    ts.renderTable(d3.select('#tableDiv'), config, deviceData);
+                //});
+
+                //$log.log($scope);
+
+                //$scope.$watch('table', function(newVal, oldVal) {
+                //    //if (newVal === oldVal) { $log.log('hello'); return; }
+                //    $scope.$apply();
+                //});
+                //
+                //$timeout(function () {
+                //    $log.log("in timeout in controller");
+                //    $rootScope.$watch(function () {
+                //            return (table);
+                //        },
+                //        function(newValue, oldValue) {
+                //            if(newValue) {
+                //                $log.log('hello??');
+                //                //$rootScope.$apply();
+                //            }
+                //        }
+                //    );
+                //    //$scope.$apply(table);
+                //    $log.log("after scope.apply")});
             }])
 
-        .directive('fixedHeader', ['$log', '$timeout', function ($log, $timeout) {
-            return {
+        .directive('fixedHeader', ['$log', '$timeout', '$compile',
+            function ($log, $timeout, $compile) {
+             return {
                 restrict: 'A',
                 scope: {
-                    tableHeight: '@'
+                    tHeight: '@'
                 },
 
                 link: function (scope, element, attrs) {
+                    $log.log("in directive");
+
                     var table = d3.select(element[0]),
                         thead = table.select('thead'),
                         tbody = table.select('tbody');
-                    $log.log('in directive function');
 
                     // wait until the table is visible
                     scope.$watch(
                         function () { return (!(table.offsetParent === null)); },
-                        function (newValue, oldValue) {
+                        function(newValue, oldValue) {
                             if (newValue === true) {
 
                                 // ensure thead and tbody have no display
                                 thead.style('display', null);
                                 tbody.style('display', null);
 
-                                $timeout(function() {
-                                    fixTable(table, thead, tbody, scope.tableHeight);
+                                $timeout(function () {
+                                    fixTable(table, thead, tbody, scope.tHeight);
                                 });
                             }
                         });
diff --git a/web/gui/src/main/webapp/app/common.css b/web/gui/src/main/webapp/app/common.css
index 1ca7257..fb2b4d0 100644
--- a/web/gui/src/main/webapp/app/common.css
+++ b/web/gui/src/main/webapp/app/common.css
@@ -18,37 +18,59 @@
  ONOS GUI -- common -- CSS file
  */
 
+/* ------ for summary-list tables ------ */
+
 table.summary-list {
-    margin: 4px 4px;
+    margin: 20px 50px;
     font-size: 10pt;
+    border-spacing: 0;
 }
 
-/* TODO: uncomment following lines for scrollable table */
-/* Possible CSS style for creating a scrollable table */
+/* TODO: delete overflow and block (handled by fixed-header directive) */
 table.summary-list tbody {
     height: 500px;
+    border-radius: 0 0 8px 8px;
     overflow: auto;
     display: block;
 }
 
+.light table.summary-list tr:nth-child(even) {
+    background-color: #ddd;
+}
+.light table.summary-list tr:nth-child(odd) {
+    background-color: #eee;
+}
+.dark table.summary-list tr:nth-child(even) {
+    background-color: #333;
+}
+.dark table.summary-list tr:nth-child(odd) {
+    background-color: #444;
+}
+
 table.summary-list th {
-    padding: 5px;
+    padding: 10px;
+    letter-spacing: 0.02em;
+}
+table.summary-list th:first-child {
+    border-radius: 8px 0 0 0;
+}
+table.summary-list th:last-child {
+    border-radius: 0 8px 0 0;
 }
 .light table.summary-list th {
     background-color: #bbb;
 }
 .dark table.summary-list th {
-    background-color: #444;
-    color: #ddd;
+    background-color: #222;
+    color: #ccc;
 }
 
 table.summary-list td {
     padding: 5px;
-}
-.light table.summary-list td {
-    background-color: #ddd;
+    text-align: center;
 }
 .dark table.summary-list td {
-    background-color: #666;
-    color: #ddd;
+    color: #ccc;
 }
+
+/* ------------------------------------ */
diff --git a/web/gui/src/main/webapp/app/fw/README.txt b/web/gui/src/main/webapp/app/fw/README.txt
index 2fc39ab..e99ece9 100644
--- a/web/gui/src/main/webapp/app/fw/README.txt
+++ b/web/gui/src/main/webapp/app/fw/README.txt
@@ -24,3 +24,6 @@
 - Remote
     - Login Service
     - Web Socket Service
+
+- Widget
+    - Table Service
diff --git a/web/gui/src/main/webapp/app/onos.css b/web/gui/src/main/webapp/app/onos.css
index cfa03d3..530c06b 100644
--- a/web/gui/src/main/webapp/app/onos.css
+++ b/web/gui/src/main/webapp/app/onos.css
@@ -52,5 +52,5 @@
     color: #800;
 }
 .dark #view h2 {
-    color: #d88;
+    color: #CE5650;
 }
