diff --git a/web/gui/src/main/webapp/app/index.html b/web/gui/src/main/webapp/app/index.html
index 79bbd45..43578ea 100644
--- a/web/gui/src/main/webapp/app/index.html
+++ b/web/gui/src/main/webapp/app/index.html
@@ -88,6 +88,7 @@
     <script src="view/topo/topoForce.js"></script>
     <script src="view/topo/topoInst.js"></script>
     <script src="view/topo/topoModel.js"></script>
+    <script src="view/topo/topoOblique.js"></script>
     <script src="view/topo/topoPanel.js"></script>
     <script src="view/topo/topoSelect.js"></script>
     <script src="view/topo/topoTraffic.js"></script>
diff --git a/web/gui/src/main/webapp/app/view/topo/topoOblique.js b/web/gui/src/main/webapp/app/view/topo/topoOblique.js
new file mode 100644
index 0000000..2a2f81f
--- /dev/null
+++ b/web/gui/src/main/webapp/app/view/topo/topoOblique.js
@@ -0,0 +1,63 @@
+/*
+ * 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 -- Topology Oblique View Module.
+ Provides functionality to view the topology as two planes (packet & optical)
+ from an oblique (side-on) perspective.
+ */
+
+(function () {
+    'use strict';
+
+    // injected refs
+    var $log, fs;
+
+    // api to topoForce
+    var api;
+    /*
+     node()                         // get ref to D3 selection of nodes
+     link()                         // get ref to D3 selection of links
+     */
+
+    // internal state
+    var foo;
+
+    // ==========================
+
+// === -----------------------------------------------------
+// === MODULE DEFINITION ===
+
+angular.module('ovTopo')
+    .factory('TopoObliqueService',
+    ['$log', 'FnService',
+
+    function (_$log_, _fs_) {
+        $log = _$log_;
+        fs = _fs_;
+
+        function initOblique(_api_) {
+            api = _api_;
+        }
+
+        function destroyOblique() { }
+
+        return {
+            initOblique: initOblique,
+            destroyOblique: destroyOblique
+        };
+    }]);
+}());
diff --git a/web/gui/src/main/webapp/tests/app/view/topo/topoOblique-spec.js b/web/gui/src/main/webapp/tests/app/view/topo/topoOblique-spec.js
new file mode 100644
index 0000000..90c856a
--- /dev/null
+++ b/web/gui/src/main/webapp/tests/app/view/topo/topoOblique-spec.js
@@ -0,0 +1,42 @@
+/*
+ * 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 -- Topo View -- Topo Oblique View Service - Unit Tests
+ */
+describe('factory: view/topo/topoOblique.js', function() {
+    var $log, fs, tos;
+
+    beforeEach(module('ovTopo', 'onosUtil'));
+
+    beforeEach(inject(function (_$log_, FnService, TopoObliqueService) {
+        $log = _$log_;
+        fs = FnService;
+        tos = TopoObliqueService;
+    }));
+
+    it('should define TopoTrafficService', function () {
+        expect(tos).toBeDefined();
+    });
+
+    it('should define api functions', function () {
+        expect(fs.areFunctions(tos, [
+            'initOblique', 'destroyOblique'
+        ])).toBeTruthy();
+    });
+
+    // TODO: more tests...
+});
