diff --git a/web/gui/src/main/webapp/app/fw/svg/geodata.js b/web/gui/src/main/webapp/app/fw/svg/geodata.js
index 98e0724..63fa4ce 100644
--- a/web/gui/src/main/webapp/app/fw/svg/geodata.js
+++ b/web/gui/src/main/webapp/app/fw/svg/geodata.js
@@ -130,7 +130,7 @@
             // converts given TopoJSON-format data into corresponding GeoJSON
             //  data, and creates a path generator for that data.
             function createPathGenerator(topoData, opts) {
-                var settings = $.extend({}, defaultGenSettings, opts),
+                var settings = angular.extend({}, defaultGenSettings, opts),
                     topoObject = topoData.objects[settings.objectTag],
                     geoData = topojson.feature(topoData, topoObject),
                     proj = settings.projection,
diff --git a/web/gui/src/main/webapp/app/fw/svg/zoom.js b/web/gui/src/main/webapp/app/fw/svg/zoom.js
index 8995cad..dc0e32a 100644
--- a/web/gui/src/main/webapp/app/fw/svg/zoom.js
+++ b/web/gui/src/main/webapp/app/fw/svg/zoom.js
@@ -60,7 +60,7 @@
             function createZoomer(opts) {
                 var cz = 'ZoomService.createZoomer(): ',
                     d3s = ' (D3 selection) property defined',
-                    settings = $.extend({}, defaultSettings, opts),
+                    settings = angular.extend({}, defaultSettings, opts),
                     zoom = d3.behavior.zoom()
                         .translate([0, 0])
                         .scale(1)
diff --git a/web/gui/src/main/webapp/app/fw/util/fn.js b/web/gui/src/main/webapp/app/fw/util/fn.js
index cf9e737..10cb6ff 100644
--- a/web/gui/src/main/webapp/app/fw/util/fn.js
+++ b/web/gui/src/main/webapp/app/fw/util/fn.js
@@ -21,11 +21,12 @@
     'use strict';
 
     function isF(f) {
-        return $.isFunction(f) ? f : null;
+        return typeof f === 'function' ? f : null;
     }
 
     function isA(a) {
-        return $.isArray(a) ? a : null;
+        // NOTE: Array.isArray() is part of EMCAScript 5.1
+        return Array.isArray(a) ? a : null;
     }
 
     function isS(s) {
@@ -33,7 +34,7 @@
     }
 
     function isO(o) {
-        return $.isPlainObject(o) ? o : null;
+        return (o && typeof o === 'object' && o.constructor === Object) ? o : null;
     }
 
     function contains(a, x) {
diff --git a/web/gui/src/main/webapp/app/fw/util/keys.js b/web/gui/src/main/webapp/app/fw/util/keys.js
index d163292..81d0bc3 100644
--- a/web/gui/src/main/webapp/app/fw/util/keys.js
+++ b/web/gui/src/main/webapp/app/fw/util/keys.js
@@ -92,7 +92,7 @@
     }
 
     function setupGlobalKeys() {
-        $.extend(keyHandler, {
+        angular.extend(keyHandler, {
             globalKeys: {
                 backSlash: [quickHelp, 'Show / hide Quick Help'],
                 slash: [quickHelp, 'Show / hide Quick Help'],
diff --git a/web/gui/src/main/webapp/app/index.html b/web/gui/src/main/webapp/app/index.html
index 7dfcdbd..abb9053 100644
--- a/web/gui/src/main/webapp/app/index.html
+++ b/web/gui/src/main/webapp/app/index.html
@@ -27,7 +27,6 @@
 
     <script src="../tp/d3.js"></script>
     <script src="../tp/topojson.v1.min.js"></script>
-    <script src="../tp/jquery-2.1.1.min.js"></script>
 
     <!-- ONOS UI Framework included here -->
     <!-- TODO: use a single catenated-minified file here -->
diff --git a/web/gui/src/main/webapp/tests/karma.conf.js b/web/gui/src/main/webapp/tests/karma.conf.js
index a08167a..9c9af41 100644
--- a/web/gui/src/main/webapp/tests/karma.conf.js
+++ b/web/gui/src/main/webapp/tests/karma.conf.js
@@ -21,7 +21,6 @@
         '../tp/angular-route.js',
         '../tp/d3.js',
         '../tp/topojson.v1.min.js',
-        '../tp/jquery-2.1.1.min.js',
 
         // production code...
         // make sure modules are defined first...
