diff --git a/web/gui/src/main/webapp/app/fw/widget/table.js b/web/gui/src/main/webapp/app/fw/widget/table.js
new file mode 100644
index 0000000..833c42c
--- /dev/null
+++ b/web/gui/src/main/webapp/app/fw/widget/table.js
@@ -0,0 +1,34 @@
+/*
+ * 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 -- Widget -- Table Service
+ */
+(function () {
+    'use strict';
+
+    var $log;
+
+    angular.module('onosWidget')
+        .factory('TableService', ['$log', function (_$log_) {
+            $log = _$log_;
+
+            return {
+
+            };
+        }]);
+
+}());
diff --git a/web/gui/src/main/webapp/app/fw/widget/widget.js b/web/gui/src/main/webapp/app/fw/widget/widget.js
new file mode 100644
index 0000000..d11c828
--- /dev/null
+++ b/web/gui/src/main/webapp/app/fw/widget/widget.js
@@ -0,0 +1,25 @@
+/*
+ * 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 -- Widgets Module
+ */
+(function () {
+    'use strict';
+
+    angular.module('onosWidget', []);
+
+}());
diff --git a/web/gui/src/main/webapp/app/index.html b/web/gui/src/main/webapp/app/index.html
index abb9053..24a2cc1 100644
--- a/web/gui/src/main/webapp/app/index.html
+++ b/web/gui/src/main/webapp/app/index.html
@@ -54,6 +54,9 @@
     <script src="fw/remote/websocket.js"></script>
     <script src="fw/remote/wsevent.js"></script>
 
+    <script src="fw/widget/widget.js"></script>
+    <script src="fw/widget/table.js"></script>
+
     <!-- Framework and library stylesheets included here -->
     <!-- TODO: use a single catenated-minified file here -->
     <link rel="stylesheet" href="onos.css">
diff --git a/web/gui/src/main/webapp/app/onos.js b/web/gui/src/main/webapp/app/onos.js
index 46f4314..b7be490 100644
--- a/web/gui/src/main/webapp/app/onos.js
+++ b/web/gui/src/main/webapp/app/onos.js
@@ -24,6 +24,7 @@
     // define core module dependencies here...
     var coreDependencies = [
         'ngRoute',
+        'onosWidget',
         'onosUtil',
         'onosSvg',
         'onosRemote',
diff --git a/web/gui/src/main/webapp/tests/app/fw/widget/table-spec.js b/web/gui/src/main/webapp/tests/app/fw/widget/table-spec.js
new file mode 100644
index 0000000..12d0390
--- /dev/null
+++ b/web/gui/src/main/webapp/tests/app/fw/widget/table-spec.js
@@ -0,0 +1,33 @@
+/*
+ * 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 -- Widget -- Table Service - Unit Tests
+ */
+describe('factory: fw/widget/table.js', function() {
+    var ts, $log;
+
+    beforeEach(module('onosWidget'));
+
+    beforeEach(inject(function (TableService, _$log_) {
+        ts = TableService;
+        $log = _$log_;
+    }));
+
+    it('should define TableService', function () {
+        expect(ts).toBeDefined();
+    });
+});
\ No newline at end of file
diff --git a/web/gui/src/main/webapp/tests/karma.conf.js b/web/gui/src/main/webapp/tests/karma.conf.js
index 9c9af41..eb7dba4 100644
--- a/web/gui/src/main/webapp/tests/karma.conf.js
+++ b/web/gui/src/main/webapp/tests/karma.conf.js
@@ -29,6 +29,7 @@
         '../app/fw/util/util.js',
         '../app/fw/svg/svg.js',
         '../app/fw/remote/remote.js',
+        '../app/fw/widget/widget.js',
         // now load services etc. that augment the modules
         '../app/**/*.js',
 
