ONOS-5404: Clean up webapp/_dev directory.

Change-Id: Id3a620923b43ec97b5d6f4b7a8e8e1bf6ddf0a4a
diff --git a/web/gui/src/main/webapp/_dev/big-icon.html b/web/gui/src/main/webapp/_dev/big-icon.html
deleted file mode 100644
index 64c1c22..0000000
--- a/web/gui/src/main/webapp/_dev/big-icon.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE html>
-<!--
-  ~  Copyright 2016-present 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 -- Display a glyph with Angular test page
-  -->
-
-<html>
-<head lang="en">
-    <meta charset="UTF-8">
-    <title>Show Icons Angular</title>
-
-    <script type="text/javascript" src="../tp/angular.js"></script>
-    <script type="text/javascript" src="../tp/angular-route.js"></script>
-
-    <script type="text/javascript" src="../tp/d3.js"></script>
-
-    <script type="text/javascript" src="../app/fw/util/util.js"></script>
-    <script type="text/javascript" src="../app/fw/util/fn.js"></script>
-
-    <script type="text/javascript" src="../app/fw/svg/svg.js"></script>
-    <script type="text/javascript" src="../app/fw/svg/svgUtil.js"></script>
-    <script type="text/javascript" src="../app/fw/svg/glyph.js"></script>
-    <script type="text/javascript" src="../app/fw/svg/glyphData.js"></script>
-
-    <script type="text/javascript" src="big-icon.js"></script>
-
-    <link rel="stylesheet" href="../app/common.css">
-    <link rel="stylesheet" href="../app/fw/svg/icon.css">
-
-    <style>
-        html,
-        body {
-            background-color: #ddf;
-            font-family: Arial, Helvetica, sans-serif;
-            font-size: 9pt;
-        }
-
-        h2 {
-            color: darkred;
-        }
-
-        /* foreground color */
-        svg .glyph {
-            stroke: none;
-            fill: #246;
-            fill-rule: evenodd;
-        }
-
-        /* background color */
-        svg.embeddedGlyph .glyph rect {
-            fill: #fff
-        }
-
-    </style>
-
-</head>
-<!-- outline for using a controller in Angular -->
-<body class="light" ng-app="showGlyph" ng-controller="OvShowGlyph as ctrl">
-    <h2>Display a Glyph</h2>
-    <div id="showGlyphs"></div>
-    <svg><defs></defs></svg>
-</body>
-</html>
\ No newline at end of file
diff --git a/web/gui/src/main/webapp/_dev/big-icon.js b/web/gui/src/main/webapp/_dev/big-icon.js
deleted file mode 100644
index 440fb46..0000000
--- a/web/gui/src/main/webapp/_dev/big-icon.js
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- *  Copyright 2016-present 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 -- Test code for displaying custom glyphs
- */
-
-(function () {
-    'use strict';
-
-    // assuming the glyph is a square
-    // div is a D3 selection of the <DIV> element into which icon should load
-    // size is the size of the glyph
-    // id is the symbol id
-    function createGlyph(div, size, id) {
-        var dim = size || 20,
-            texty = 30,
-            gid = id || 'unknown',
-            rx = 4,
-            svgCls = 'embeddedGlyph',
-            svg, g;
-
-        svg = div.append('svg').attr({
-            'class': svgCls,
-            width: dim,
-            height: dim + texty,
-            viewBox: '0 0 ' + dim + ' ' + dim
-        });
-
-        g = svg.append('g').attr({
-            'class': 'glyph'
-        });
-
-        g.append('rect').attr({
-            width: dim,
-            height: dim,
-            rx: rx
-        });
-
-        g.append('use').attr({
-            width: dim,
-            height: dim,
-            'class': 'glyph',
-            'xlink:href': '#' + gid
-        });
-
-        g.append('text')
-            .attr({
-                'text-anchor': 'left',
-                y: '1em',
-                x: 0,
-                transform: 'translate(0, ' + dim + ')'
-            })
-            .style('fill', '#800')
-            .text(id);
-    }
-
-    var clock = 'M92.9,61.3a39,39,0,1,1-39-39,39,39,0,0,1,39,39h0Z' +
-        'M44,19.3c-4.4-7.4-14.8-9.3-23.2-4.2S9.1,30.2,13.5,37.6m80.8,0' +
-        'c4.4-7.4,1.2-17.5-7.3-22.5s-18.8-3.2-23.3,4.2m-8.4,1.8V16.5h4.4' +
-        'V11.9H48.2v4.6h4.6v4.6M51.6,56.4H51.5' +
-        'a5.4,5.4,0,0,0,2.4,10.3,4.7,4.7,0,0,0,4.9-3.1H74.5' +
-        'a2.2,2.2,0,0,0,2.4-2.2,2.4,2.4,0,0,0-2.4-2.3H58.8' +
-        'a5.3,5.3,0,0,0-2.5-2.6H56.2V32.9' +
-        'a2.3,2.3,0,0,0-.6-1.7,2.2,2.2,0,0,0-1.6-.7,2.4,2.4,0,0,0-2.4,2.4' +
-        'h0V56.4M82.2,91.1l-7.1,5.3-0.2.2-1.2,2.1a0.6,0.6,0,0,0,.2.8' +
-        'h0.2c2.6,0.4,10.7.9,10.3-1.2m-60.8,0c-0.4,2.1,7.7,1.6,10.3,1.2' +
-        'h0.2a0.6,0.6,0,0,0,.2-0.8l-1.2-2.1-0.2-.2-7.1-5.3';
-
-    var clocks = "M65.7,26.6A34.7,34.7,0,0,0,31,61.5c0,19,16,35.2,35.5,34.8" +
-        "a35.1,35.1,0,0,0,34-35.1A34.7,34.7,0,0,0,65.7,26.6Z" +
-        "m8.6-2.7,27.4,16.4a31.3,31.3,0,0,0,1.2-3.1c1.3-5,0-9.4-3.2-13.2" +
-        "a16.9,16.9,0,0,0-16-6.2A12.8,12.8,0,0,0,74.3,23.9Z" +
-        "M57,23.9L56.4,23a12.9,12.9,0,0,0-10.7-5.5,16.9,16.9,0,0,0-15.1,8," +
-        "14.1,14.1,0,0,0-2.3,11.2,10.4,10.4,0,0,0,1.4,3.5Z" +
-        "M26.9,31.6A33.7,33.7,0,0,0,9.7,59.3C9.2,72.8,14.9,83.1,26,90.7l1-1.9" +
-        "a0.6,0.6,0,0,0-.2-1A34.2,34.2,0,0,1,15.5,50.4" +
-        "a33.8,33.8,0,0,1,10.8-16,1.2,1.2,0,0,0,.5-0.6" +
-        "C26.9,33.1,26.9,32.4,26.9,31.6Z" +
-        "m1,8.1C14.6,55.9,19.2,81,37.6,91.1l1-2.3-2.8-2.4" +
-        "C26.4,77.6,22.9,66.7,25.1,54" +
-        "a31.6,31.6,0,0,1,4.2-10.8,0.8,0.8,0,0,0,.1-0.6Z" +
-        "M12,38.4a11.2,11.2,0,0,1-1.4-5.8A13.7,13.7,0,0,1,14.3,24" +
-        "a17.3,17.3,0,0,1,10.5-5.7h0.4C19,18,13.7,20,9.9,25.2" +
-        "a14.5,14.5,0,0,0-3,11,11.2,11.2,0,0,0,1.6,4.3Z" +
-        "m5.5-2.7L21,33" +
-        "a1,1,0,0,0,.3-0.7,14,14,0,0,1,3.9-8.6,17.3,17.3,0,0,1,10.2-5.4" +
-        "l0.6-.2C24.4,17.3,16.4,27,17.4,35.7Z" +
-        "M70.9,17.2H60.7v4.1h4v4.2H67V21.3h3.9V17.2Z" +
-        "M90.9,87.9l-0.5.3L86,91.5a7.9,7.9,0,0,0-2.6,3.1" +
-        "c-0.3.6-.2,0.8,0.5,0.9a27.9,27.9,0,0,0,6.8.2l1.6-.4" +
-        "a0.8,0.8,0,0,0,.6-1.2l-0.4-1.4Z" +
-        "m-50.2,0-1.8,6c-0.3,1.1-.1,1.4.9,1.7h0.7a26.3,26.3,0,0,0,7.2-.1" +
-        "c0.8-.1.9-0.4,0.5-1.1a8.2,8.2,0,0,0-2.7-3.1Z" +
-        "m-10.8-.4-0.2.6L28,93.5a0.9,0.9,0,0,0,.7,1.3,7.7,7.7,0,0,0,2.2.4" +
-        "l5.9-.2c0.5,0,.7-0.3.5-0.8a7.6,7.6,0,0,0-2.2-2.9Z" +
-        "m-11.3,0-0.2.7-1.6,5.4c-0.2.8-.1,1.2,0.7,1.4a8,8,0,0,0,2.2.4l6-.2" +
-        "c0.4,0,.7-0.3.5-0.6a7.1,7.1,0,0,0-1.9-2.7l-2.8-2.1Z" +
-        "M65.7,26.6m-2,30.3a4.4,4.4,0,0,0-2.2,2,4.8,4.8,0,0,0,4,7.2," +
-        "4.1,4.1,0,0,0,4.3-2.3,0.8,0.8,0,0,1,.8-0.5H84.1" +
-        "a1.9,1.9,0,0,0,2-1.7,2.1,2.1,0,0,0-1.7-2.2H70.8" +
-        "a1,1,0,0,1-1-.5,6.4,6.4,0,0,0-1.5-1.6,1.1,1.1,0,0,1-.5-1" +
-        "q0-10.1,0-20.3a1.9,1.9,0,0,0-2.2-2.1,2.1,2.1,0,0,0-1.8,2.2" +
-        "q0,6.1,0,12.2C63.7,51.2,63.7,54,63.7,56.9Z";
-
-    var smiley = "M97,20.3A9.3,9.3,0,0,0,87.7,11H24.3A9.3,9.3,0,0,0,15,20.3" +
-        "V64.7A9.3,9.3,0,0,0,24.3,74H87.7A9.3,9.3,0,0,0,97,64.7V20.3Z" +
-        "M54.5,19.1A24.3,24.3,0,1,1,30.2,43.3,24.3,24.3,0,0,1,54.5,19.1Z" +
-        "M104.7,94.9L97.6,82.8c-0.9-1.6-3.7-2.8-6.1-2.8H18.9" +
-        "c-2.5,0-5.2,1.3-6.1,2.8L5.6,94.9C4.3,97.1,5.7,99,8.9,99h92.6" +
-        "C104.6,99,106.1,97.1,104.7,94.9ZM54.5,56.5" +
-        "c-7.3,0-17.2-8.6-13.3-7.4,13,3.9,13.7,3.9,26.5,0" +
-        "C71.7,48,61.9,56.6,54.5,56.6Z" +
-        "M38,33.9C38,32,40.2,31,42.1,31h7.3" +
-        "a3.2,3.2,0,0,1,3.1,1.7,13.1,13.1,0,0,1,2.1-.3,12.9,12.9,0,0,1,2.1.4" +
-        "A3.3,3.3,0,0,1,59.7,31H67c1.9,0,4,1,4,2.9v3.2A4.4,4.4,0,0,1,67,41" +
-        "H59.7A4,4,0,0,1,56,37.1V33.9h0a4.4,4.4,0,0,0-1.6-.2l-1.5.2H53v3.2" +
-        "A4,4,0,0,1,49.4,41H42.1A4.4,4.4,0,0,1,38,37.1V33.9Z";
-
-    var glyphData = {
-        _viewbox: "0 0 110 110",
-        alarm: clock,
-        alarms: clocks,
-        smiley: smiley
-    };
-
-    angular.module('showGlyph', ['onosSvg'])
-    .controller('OvShowGlyph', ['$log', 'GlyphService',
-
-        function ($log, gs) {
-            var gDiv = d3.select('#showGlyphs'),
-                defs = d3.select('defs');
-
-            // register out-of-the-box glyphs
-            gs.init();
-
-            // register our custom glyphs
-            gs.registerGlyphSet(glyphData);
-
-            // load all defined glyphs into our <defs> element
-            gs.loadDefs(defs);
-
-            // choose a glyph to render
-            createGlyph(gDiv, 400, 'switch');
-        }]);
-}());
diff --git a/web/gui/src/main/webapp/_dev/checkmark-xmark-icon.html b/web/gui/src/main/webapp/_dev/checkmark-xmark-icon.html
deleted file mode 100644
index fe49a76..0000000
--- a/web/gui/src/main/webapp/_dev/checkmark-xmark-icon.html
+++ /dev/null
@@ -1,145 +0,0 @@
-<!DOCTYPE html>
-<!--
-  ~ Copyright 2016-present 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 -- Embedded checkmarks and xmarks in table page
-  -->
-<html>
-<head>
-    <meta charset="utf-8">
-    <title>Embedded Check and X Marks</title>
-
-    <script src="../tp/d3.js"></script>
-
-    <link rel="stylesheet" href="../app/common.css">
-
-    <style>
-        html,
-        body {
-            background-color: #fff;
-            font-family: Arial, Helvetica, sans-serif;
-            font-size: 9pt;
-        }
-
-        svg .icon .glyph {
-            stroke: none;
-            fill: white;
-            fill-rule: evenodd;
-        }
-
-        svg .icon.active {
-            fill: green;
-        }
-
-        svg .icon.inactive {
-            fill: darkred;
-        }
-
-        svg .icon rect {
-            stroke: white;
-            stroke-width: 3px;
-        }
-
-    </style>
-</head>
-<body class="light">
-<!-- minimal framework to access glyphs library module -->
-<script>
-    var libs = {};
-    var ONOS = { ui: { addLib: function (id, things) { libs[id] = things; }}};
-
-
-</script>
-
-<!-- Test HTML -->
-
-<div>
-    <table class="summary-list">
-        <tr> <th></th> <th>Two</th> <th>Three</th> </tr>
-        <tr>
-            <td>
-                <div icon icon-id="active">
-
-                    <!-- icon directive needs to inject the following structure -->
-                    <!-- ------------------------------------------------ -->
-                    <svg width="20" height="20" viewBox="0 0 50 50">
-                        <g class="icon active">
-                            <rect width="50" height="50" rx="10"></rect>
-                            <use class="glyph" xlink:href="#checkmark" width="50" height="50"></use>
-                        </g>
-                    </svg>
-                    <!-- ------------------------------------------------ -->
-
-                </div>
-            </td>
-            <td>Some text</td>
-            <td>Some text</td>
-        </tr>
-        <tr>
-            <td>
-                <div icon icon-id="inactive">
-
-                    <!-- icon directive needs to inject the following structure -->
-                    <!-- ------------------------------------------------ -->
-                    <svg width="20" height="20" viewBox="0 0 50 50">
-                        <g class="icon inactive">
-                            <rect width="50" height="50" rx="10"></rect>
-                            <use class="glyph" xlink:href="#xmark" width="50" height="50"></use>
-                        </g>
-                    </svg>
-                    <!-- ------------------------------------------------ -->
-
-
-                </div>
-            </td>
-            <td>Some text</td>
-            <td>Some Other text</td>
-        </tr>
-    </table>
-</div>
-
-<!-- common definitions for other SVG elements to use -->
-<svg width="0" height="0">
-    <defs>
-        <symbol id="checkmark" viewBox="0 0 10 10">
-            <path d="M2.644,4.531c0,0,0.719-0.422,1.172,0.281l1.047,1.797c0,0,
-            2.675-5.449,2.781-5.719c0,0,0.547-0.859,1.359-0.094
-	c0,0,0.484,0.484,0,1.297S6.775,7.305,5.557,9.211c0,0-0.413,0.461-1.194,
-	0.086S2.222,5.375,2.222,5.375S2.159,4.734,2.644,4.531z">
-            </path>
-        </symbol>
-
-        <symbol id="xmark" viewBox="0 0 10 10">
-            <path d="M8.967,7.196C8.172,6.852,7.37,6.058,6.672,5.189c0.385-0.463,
-            0.665-0.834,0.764-1.008C7.825,3.5,9.382,1.553,8.068,1.067
-	C6.754,0.58,6.585,1.723,6.585,1.723C6.41,2.129,5.955,2.722,5.386,3.371C4.865,
-	2.544,4.541,1.918,4.541,1.918
-	S3.812,0.24,2.863,0.654C1.915,1.067,2.304,2.283,2.304,2.283c0.349,1.122,
-	0.834,2.082,1.368,2.898
-	C2.456,6.396,1.331,7.415,1.331,7.415S0.82,7.829,0.844,8.072C0.869,8.315,
-	0.917,9.556,2.4,9.067
-	C3.084,8.843,4.122,7.933,5.083,6.95c1.306,1.348,2.498,1.949,2.498,1.949s0.535,
-	0.51,1.386-0.244
-	C9.819,7.902,8.967,7.196,8.967,7.196z">
-            </path>
-        </symbol>
-
-    </defs>
-</svg>
-
-</body>
-</html>
diff --git a/web/gui/src/main/webapp/_dev/embedded-icon.html b/web/gui/src/main/webapp/_dev/embedded-icon.html
deleted file mode 100644
index 1a03584..0000000
--- a/web/gui/src/main/webapp/_dev/embedded-icon.html
+++ /dev/null
@@ -1,130 +0,0 @@
-<!DOCTYPE html>
-<!--
-  ~ Copyright 2016-present 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 -- Embedded icon test page
-  -->
-<html>
-<head>
-    <meta charset="utf-8">
-    <title>Embedded Icons</title>
-
-    <script src="../tp/d3.js"></script>
-
-    <link rel="stylesheet" href="../app/common.css">
-
-    <style>
-        html,
-        body {
-            background-color: #fff;
-            font-family: Arial, Helvetica, sans-serif;
-            font-size: 9pt;
-        }
-
-        svg .icon .glyph {
-            stroke: none;
-            fill: white;
-            fill-rule: evenodd;
-        }
-
-        svg .icon.active {
-            fill: green;
-        }
-
-        svg .icon.inactive {
-            fill: darkred;
-        }
-
-        svg .icon rect {
-            stroke: black;
-            stroke-width: 1px;
-        }
-
-    </style>
-</head>
-<body class="light">
-<!-- minimal framework to access glyphs library module -->
-<script>
-    var libs = {};
-    var ONOS = { ui: { addLib: function (id, things) { libs[id] = things; }}};
-
-
-</script>
-
-<!-- Test HTML -->
-
-<div>
-    <table class="summary-list">
-        <tr> <th></th> <th>Two</th> <th>Three</th> </tr>
-        <tr>
-            <td>
-                <div icon icon-id="active">
-
-                    <!-- icon directive needs to inject the following structure -->
-                    <!-- ------------------------------------------------ -->
-                    <svg width="20" height="20" viewBox="0 0 50 50">
-                        <g class="icon active">
-                            <rect width="50" height="50" rx="4"></rect>
-                            <use class="glyph" xlink:href="#ui" width="50" height="50"></use>
-                        </g>
-                    </svg>
-                    <!-- ------------------------------------------------ -->
-
-                </div>
-            </td>
-            <td>Some text</td>
-            <td>Some text</td>
-        </tr>
-        <tr>
-            <td>
-                <div icon icon-id="inactive">
-
-                    <!-- icon directive needs to inject the following structure -->
-                    <!-- ------------------------------------------------ -->
-                    <svg width="20" height="20" viewBox="0 0 50 50">
-                        <g class="icon inactive">
-                            <rect width="50" height="50" rx="4"></rect>
-                            <use class="glyph" xlink:href="#ui" width="50" height="50"></use>
-                        </g>
-                    </svg>
-                    <!-- ------------------------------------------------ -->
-
-
-                </div>
-            </td>
-            <td>Some text</td>
-            <td>Some Other text</td>
-        </tr>
-    </table>
-</div>
-
-<!-- common definitions for other SVG elements to use -->
-<svg width="0" height="0">
-    <defs>
-        <symbol id="ui" viewBox="0 0 10 10">
-            <path d="M2,2.5a.5,.5,0,0,1,.5-.5h5
-                    a.5,.5,0,0,1,.5,.5v3a.5,.5,0,0,1-.5,.5h-5a.5,
-                    .5,0,0,1-.5-.5zM2.5,2.8a.3,.3,0,0,1,.3-.3
-                    h4.4a.3,.3,0,0,1,.3,.3v2.4a.3,.3,0,0,1-.3,
-                    .3h-4.4a.3,.3,0,0,1-.3-.3zM2,6.55h6l1,1.45h-8z">
-            </path>
-        </symbol>
-    </defs>
-</svg>
-
-</body>
-</html>
diff --git a/web/gui/src/main/webapp/_dev/glyphs.html b/web/gui/src/main/webapp/_dev/glyphs.html
deleted file mode 100644
index 9e3873c..0000000
--- a/web/gui/src/main/webapp/_dev/glyphs.html
+++ /dev/null
@@ -1,146 +0,0 @@
-<!DOCTYPE html>
-<!--
-  ~ Copyright 2016-present 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 -- Glyphs library test page (old version)
-  -->
-<html>
-<head>
-    <meta charset="utf-8">
-    <title>Glyphs</title>
-
-    <script src="../tp/d3.js"></script>
-
-    <style>
-        html,
-        body {
-            background-color: #ddf;
-            font-family: Arial, Helvetica, sans-serif;
-            font-size: 9pt;
-        }
-
-        svg {
-            background-color: #fff;
-        }
-
-        svg .glyph {
-            stroke: none;
-            fill: black;
-            fill-rule: evenodd;
-        }
-
-        svg .icon text {
-            text-anchor: middle;
-            font-size: 5pt;
-            fill: green;
-            stroke: none;
-        }
-
-    </style>
-</head>
-<body>
-    <!-- minimal framework to access glyphs library module -->
-    <script>
-        var libs = {};
-        var ONOS = { ui: { addLib: function (id, things) { libs[id] = things; }}};
-    </script>
-
-    <!-- import the glyphs library -->
-    <script src="../glyphs.js"></script>
-
-    <svg></svg>
-
-    <!-- code to display the glyphs in the library -->
-    <script>
-        (function () {
-            var w = 1000,
-                h = 800,
-                vb = '0 0 ' + w + ' ' + h;
-
-            var svg = d3.select('svg')
-                    .attr({ width: w, height: h, viewBox: vb });
-
-            // create definitions element...
-            var defs = svg.append('defs');
-
-            // create scaling group
-            var grp = svg.append('g')
-                    .attr('transform', 'translate(20,20)scale(2)');
-
-            var mag = svg.append('g')
-                    .attr('transform', 'translate(20,20)scale(12)');
-
-            function translate(loc) {
-                return 'translate(' + loc[0] + ',' + loc[1] +')';
-            }
-
-            function icon(what, id, loc, color, bg, size) {
-                var i = '#' + id,
-                    c = color || 'black',
-                    b = bg || '#eef',
-                    z = size || 40,
-                    g;
-
-                g = what.append('g')
-                    .attr({ 'class': 'icon', transform: translate(loc) });
-
-                g.append('rect')
-                    .attr({ width: z, height: z, rx: 4 })
-                    .style('fill', b)
-                    .style('stroke', 'black')
-                    .style('stroke-width', 0.5);
-
-                g.append('use')
-                    .attr({ 'class': 'glyph', width: z, height: z, 'xlink:href': i })
-                    .style('fill', c);
-
-                if (id !== 'bird') {
-                    g.append('text')
-                        .text(id)
-                        .attr({ x: z / 2, y: z + 8 })
-                }
-            }
-
-
-            // import glyphs...
-            libs.glyphs.loadDefs(defs);
-
-            // bird, top right corner
-            icon(svg, 'bird', [830,10], '#800', '#ecc', 160);
-
-            // show icons...
-            icon(grp, 'unknown',     [  0, 0]);
-            icon(grp, 'node',        [ 50, 0]);
-            icon(grp, 'switch',      [100, 0]);
-            icon(grp, 'roadm',       [150, 0]);
-            icon(grp, 'endstation',  [200, 0]);
-            icon(grp, 'router',      [250, 0]);
-            icon(grp, 'bgpSpeaker',  [300, 0]);
-            icon(grp, 'uiAttached',  [350, 0]);
-            icon(grp, 'otn',         [400, 0]);
-
-            icon(grp, 'chain',       [  0, 60]);
-            icon(grp, 'crown',       [ 50, 60]);
-
-//            icon(mag, 'crown',  [20, 15], 'rgba(240,120,120,1)', 'transparent');
-
-            // more goodies to come soon.....
-        })();
-    </script>
-
-</body>
-</html>
diff --git a/web/gui/src/main/webapp/_dev/ng-examples/ch01-01-hello-world-app.html b/web/gui/src/main/webapp/_dev/ng-examples/ch01-01-hello-world-app.html
deleted file mode 100644
index 82cfec6..0000000
--- a/web/gui/src/main/webapp/_dev/ng-examples/ch01-01-hello-world-app.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<!DOCTYPE html>
-<html>
-<body ng-app>
-  <input type="text"
-         ng-model="name"
-         placeholder="Enter your name">
-
-  <h1>Hello <span ng-bind="name"></span></h1>
-  <!-- Note alternate syntax for same thig... -->
-  <h1>Hello {{ name }}</h1>
-
-  <script src="../../tp/angular.js"></script>
-
-</body>
-</html>
diff --git a/web/gui/src/main/webapp/_dev/ng-examples/ch02-01-module-example.html b/web/gui/src/main/webapp/_dev/ng-examples/ch02-01-module-example.html
deleted file mode 100644
index 97432e3..0000000
--- a/web/gui/src/main/webapp/_dev/ng-examples/ch02-01-module-example.html
+++ /dev/null
@@ -1,16 +0,0 @@
-<!DOCTYPE html>
-<html ng-app="notesApp">
-<head>
-    <title>Hello AngularJS</title>
-
-    <script src="../../tp/angular.js"></script>
-</head>
-<body>
-    Hello {{1 + 1}}nd time AngularJS
-
-    <script type="text/javascript">
-        angular.module('notesApp', []);
-    </script>
-
-</body>
-</html>
diff --git a/web/gui/src/main/webapp/_dev/ng-examples/ch02-02-creating-controller.html b/web/gui/src/main/webapp/_dev/ng-examples/ch02-02-creating-controller.html
deleted file mode 100644
index 566c6dd..0000000
--- a/web/gui/src/main/webapp/_dev/ng-examples/ch02-02-creating-controller.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<!DOCTYPE html>
-<html ng-app="notesApp">
-<head>
-    <title>Hello AngularJS</title>
-
-    <script src="../../tp/angular.js"></script>
-</head>
-<body ng-controller="MainCtrl">
-    Hello {{1 + 1}}nd time AngularJS
-
-    <script type="text/javascript">
-        angular.module('notesApp', [])
-                .controller('MainCtrl', [function () {
-                    // controller specific code here
-                    console.log('MainCtrl has been created');
-                }]);
-    </script>
-
-</body>
-</html>
diff --git a/web/gui/src/main/webapp/_dev/ng-examples/ch02-03-hello-controller.html b/web/gui/src/main/webapp/_dev/ng-examples/ch02-03-hello-controller.html
deleted file mode 100644
index c206bf8..0000000
--- a/web/gui/src/main/webapp/_dev/ng-examples/ch02-03-hello-controller.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE html>
-<html ng-app="notesApp">
-<head>
-    <title>Notes App</title>
-    <script src="../../tp/angular.js"></script>
-</head>
-<body ng-controller="MainCtrl as ctrl">
-    {{ctrl.helloMsg}} AngularJS.
-    <br/>
-    {{ctrl.goodbyeMsg}} AngularJS
-
-    <script type="text/javascript">
-        angular.module('notesApp', [])
-                .controller('MainCtrl', [function () {
-                    this.helloMsg = 'Hello ';
-                    var goodbyeMsg = 'Goodbye ';
-                }]);
-    </script>
-
-</body>
-</html>
diff --git a/web/gui/src/main/webapp/_dev/ng-examples/ch02-04-controller-click-msg.html b/web/gui/src/main/webapp/_dev/ng-examples/ch02-04-controller-click-msg.html
deleted file mode 100644
index 4a4a22e..0000000
--- a/web/gui/src/main/webapp/_dev/ng-examples/ch02-04-controller-click-msg.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE html>
-<html ng-app="notesApp">
-<head>
-    <title>Notes App</title>
-    <script src="../../tp/angular.js"></script>
-</head>
-<body ng-controller="MainCtrl as ctrl">
-    {{ctrl.message}} AngularJS.
-
-    <button ng-click="ctrl.changeMessage()">
-        Change Message
-    </button>
-
-    <script type="text/javascript">
-        angular.module('notesApp', [])
-                .controller('MainCtrl', [function () {
-                    var self = this;
-                    self.message = 'Hello';
-                    self.changeMessage = function () {
-                        self.message = 'Goodbye'
-                    };
-                }]);
-    </script>
-
-</body>
-</html>
diff --git a/web/gui/src/main/webapp/_dev/ng-examples/ch02-05-ng-repeat-example-1.html b/web/gui/src/main/webapp/_dev/ng-examples/ch02-05-ng-repeat-example-1.html
deleted file mode 100644
index a262c1b..0000000
--- a/web/gui/src/main/webapp/_dev/ng-examples/ch02-05-ng-repeat-example-1.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE html>
-<html ng-app="notesApp">
-<head>
-    <title>Notes App</title>
-    <script src="../../tp/angular.js"></script>
-</head>
-<body ng-controller="MainCtrl as ctrl">
-
-  <div ng-repeat="note in ctrl.notes">
-      <span class="label"> {{note.label}} </span>
-      <!--<span class="status" ng-bind="note.done"></span>-->
-      <span class="status"> {{note.done}} </span>
-  </div>
-
-    <script type="text/javascript">
-        angular.module('notesApp', [])
-                .controller('MainCtrl', [function () {
-                    var self = this;
-                    self.notes = [
-                        {id: 1, label: 'First note', done: false},
-                        {id: 2, label: 'Second note', done: false},
-                        {id: 3, label: 'Done note', done: true},
-                        {id: 4, label: 'Last note', done: false}
-                    ]
-                }]);
-    </script>
-
-</body>
-</html>
diff --git a/web/gui/src/main/webapp/_dev/ng-examples/ch02-06-more-directives.html b/web/gui/src/main/webapp/_dev/ng-examples/ch02-06-more-directives.html
deleted file mode 100644
index 254dd08..0000000
--- a/web/gui/src/main/webapp/_dev/ng-examples/ch02-06-more-directives.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html>
-<html ng-app="notesApp">
-<head>
-    <title>Notes App</title>
-    <style>
-        .done {
-            background-color: limegreen;
-        }
-        .pending {
-            background-color: yellow;
-        }
-        .assignee {
-            color: red;
-            font-weight: bold;
-        }
-    </style>
-    <script src="../../tp/angular.js"></script>
-</head>
-<body ng-controller="MainCtrl as ctrl">
-
-  <div ng-repeat="note in ctrl.notes"
-          ng-class="ctrl.getNoteClass(note.done)">
-      <span class="label"> {{note.label}} </span>
-      <span class="assignee"
-            ng-show="note.assignee"
-            ng-bind="note.assignee">
-            </span>
-  </div>
-
-    <script type="text/javascript">
-        angular.module('notesApp', []).controller('MainCtrl', [
-            function () {
-                var self = this;
-                self.notes = [
-                    {id: 1, label: 'First note', done: false, assignee: 'Simon'},
-                    {id: 2, label: 'Second note', done: false},
-                    {id: 3, label: 'Done note', done: true},
-                    {id: 4, label: 'Last note', done: false, assignee: 'Fred'}
-                ];
-
-                self.getNoteClass = function (status) {
-                    return {
-                        done: status,
-                        pending: !status
-                    };
-                };
-            }
-        ]);
-    </script>
-
-</body>
-</html>
diff --git a/web/gui/src/main/webapp/_dev/ng-examples/ch02-07-ng-repeat-object.html b/web/gui/src/main/webapp/_dev/ng-examples/ch02-07-ng-repeat-object.html
deleted file mode 100644
index 43de929..0000000
--- a/web/gui/src/main/webapp/_dev/ng-examples/ch02-07-ng-repeat-object.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html>
-<html ng-app="notesApp">
-<head>
-    <title>Notes App</title>
-    <script src="../../tp/angular.js"></script>
-</head>
-<body ng-controller="MainCtrl as ctrl">
-
-    <div ng-repeat="(author, note) in ctrl.notes">
-        <span class="label"> {{note.label}} </span>
-        <span class="author" ng-bind="author"></span>
-    </div>
-
-    <script type="text/javascript">
-        angular.module('notesApp', []).controller('MainCtrl', [
-            function () {
-                var self = this;
-                self.notes = {
-                    simon: { id: 1, label: 'First note', done: false},
-                    Thomas: { id: 3, label: 'Finished third note', done: true},
-                    alice: { id: 2, label: 'Second note', done: false}
-                };
-            }
-        ]);
-    </script>
-
-</body>
-</html>
diff --git a/web/gui/src/main/webapp/_dev/ng-examples/ch02-08-ng-helper-vars.html b/web/gui/src/main/webapp/_dev/ng-examples/ch02-08-ng-helper-vars.html
deleted file mode 100644
index cf872d9..0000000
--- a/web/gui/src/main/webapp/_dev/ng-examples/ch02-08-ng-helper-vars.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!DOCTYPE html>
-<html ng-app="notesApp">
-<head>
-    <title>Notes App</title>
-    <script src="../../tp/angular.js"></script>
-    <style>
-        span {
-            background-color: #cce;
-        }
-    </style>
-</head>
-<body ng-controller="MainCtrl as ctrl">
-
-    <div ng-repeat="note in ctrl.notes">
-        <div>First element: {{$first}}</div>
-        <div>Middle element: {{$middle}}</div>
-        <div>Last element: {{$last}}</div>
-        <div>Index of element: {{$index}}</div>
-        <div>At even position: {{$even}}</div>
-        <div>At odd position: {{$odd}}</div>
-
-        <span class="label"> {{note.label}} </span>
-        <span class="status"> {{note.done}} </span>
-        <br/><br/>
-    </div>
-
-    <script type="text/javascript">
-        angular.module('notesApp', []).controller('MainCtrl', [
-            function () {
-                var self = this;
-                self.notes = [
-                    {id: 1, label: 'First note', done: false},
-                    {id: 2, label: 'Second note', done: false},
-                    {id: 3, label: 'Done note', done: true},
-                    {id: 4, label: 'Last note', done: false}
-                ];
-            }
-        ]);
-    </script>
-
-</body>
-</html>
diff --git a/web/gui/src/main/webapp/_dev/ng-examples/ch02-09-ng-repeat-track-id.html b/web/gui/src/main/webapp/_dev/ng-examples/ch02-09-ng-repeat-track-id.html
deleted file mode 100644
index 23ad7dc..0000000
--- a/web/gui/src/main/webapp/_dev/ng-examples/ch02-09-ng-repeat-track-id.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html>
-<html ng-app="notesApp">
-<head>
-    <title>Notes App</title>
-    <script src="../../tp/angular.js"></script>
-    <style>
-        span {
-            background-color: #cce;
-        }
-    </style>
-</head>
-<body ng-controller="MainCtrl as ctrl">
-
-    <button ng-click="ctrl.changeNotes()">Change Notes</button>
-    <br/>
-
-    DOM Elements change at every click
-    <div ng-repeat="note in ctrl.notes1">
-        {{note.$$hashKey}}
-        <span class="label"> {{note.label}} </span>
-        <span class="author"> {{note.done}} </span>
-    </div>
-    <br/>
-
-    DOM Elements are reused at every click
-    <div ng-repeat="note in ctrl.notes2 track by note.id">
-        {{note.$$hashKey}}
-        <span class="label"> {{note.label}} </span>
-        <span class="author"> {{note.done}} </span>
-    </div>
-
-    <script type="text/javascript">
-        angular.module('notesApp', []).controller('MainCtrl', [
-            function () {
-                var self = this;
-                var notes = [
-                    {id: 1, label: 'First note', done: false, someRandom: 31431},
-                    {id: 2, label: 'Second note', done: false},
-                    {id: 3, label: 'Finished third note', done: true}
-                ];
-                self.notes1 = angular.copy(notes);
-                self.notes2 = angular.copy(notes);
-
-                self.changeNotes = function () {
-                    notes = [
-                        {id: 1, label: 'Changed note', done: false, someRandom: 4242},
-                        {id: 2, label: 'Second note', done: false},
-                        {id: 3, label: 'Finished third note', done: true}
-                    ];
-                    self.notes1 = angular.copy(notes);
-                    self.notes2 = angular.copy(notes);
-                }
-            }
-        ]);
-    </script>
-
-</body>
-</html>
diff --git a/web/gui/src/main/webapp/_dev/ng-examples/ch02-10-ng-repeat-across-elements.html b/web/gui/src/main/webapp/_dev/ng-examples/ch02-10-ng-repeat-across-elements.html
deleted file mode 100644
index 06a4fa7..0000000
--- a/web/gui/src/main/webapp/_dev/ng-examples/ch02-10-ng-repeat-across-elements.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<html ng-app="notesApp">
-<head>
-    <title>Notes App</title>
-    <script src="../../tp/angular.js"></script>
-    <style>
-        span {
-            background-color: #cce;
-        }
-    </style>
-</head>
-<body ng-controller="MainCtrl as ctrl">
-
-    <table>
-        <tr ng-repeat-start="note in ctrl.notes">
-            <td>{{note.label}}</td>
-        </tr>
-        <tr ng-repeat-end>
-            <td>Done: {{note.done}}</td>
-        </tr>
-    </table>
-
-
-    <script type="text/javascript">
-        angular.module('notesApp', []).controller('MainCtrl', [
-            function () {
-                var self = this;
-                self.notes = [
-                    {id: 1, label: 'First note', done: false},
-                    {id: 2, label: 'Second note', done: false},
-                    {id: 3, label: 'Finished third note', done: true}
-                ];
-            }
-        ]);
-    </script>
-
-</body>
-</html>
diff --git a/web/gui/src/main/webapp/_dev/ng-examples/ch04-01-simple-ng-model.html b/web/gui/src/main/webapp/_dev/ng-examples/ch04-01-simple-ng-model.html
deleted file mode 100644
index 5c8a4b1..0000000
--- a/web/gui/src/main/webapp/_dev/ng-examples/ch04-01-simple-ng-model.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html>
-<html ng-app="notesApp">
-<head>
-    <title>Notes App</title>
-    <script src="../../tp/angular.js"></script>
-    <style>
-        span {
-            background-color: #cce;
-        }
-    </style>
-</head>
-<body ng-controller="MainCtrl as ctrl">
-
-<input type="text" ng-model="ctrl.username"/>
-You typed {{ctrl.username}}
-
-
-<script type="text/javascript">
-    angular.module('notesApp', []).controller('MainCtrl', [
-        function () {
-            var self = this;
-            self.username = 'nothing';
-        }
-    ]);
-</script>
-
-</body>
-</html>
diff --git a/web/gui/src/main/webapp/_dev/ng-examples/ch04-02-simple-ng-model2.html b/web/gui/src/main/webapp/_dev/ng-examples/ch04-02-simple-ng-model2.html
deleted file mode 100644
index d02909f..0000000
--- a/web/gui/src/main/webapp/_dev/ng-examples/ch04-02-simple-ng-model2.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<html ng-app="notesApp">
-<head>
-    <title>Notes App</title>
-    <script src="../../tp/angular.js"></script>
-    <style>
-        span {
-            background-color: #cce;
-        }
-    </style>
-</head>
-<body ng-controller="MainCtrl as ctrl">
-
-<input type="text" ng-model="ctrl.username"/>
-<input type="password" ng-model="ctrl.password"/>
-<button ng-click="ctrl.change()">Change values</button>
-<button ng-click="ctrl.submit()">Submit</button>
-
-
-
-
-<script type="text/javascript">
-    angular.module('notesApp', []).controller('MainCtrl', [
-        function () {
-            var self = this;
-            self.change = function () {
-                self.username = 'changed';
-                self.password = 'password';
-            };
-
-            self.submit = function () {
-                console.log('user clicked submit with ',
-                    self.username, self.password);
-            };
-        }
-    ]);
-</script>
-
-</body>
-</html>
diff --git a/web/gui/src/main/webapp/_dev/ng-examples/ch04-03-simple-form.html b/web/gui/src/main/webapp/_dev/ng-examples/ch04-03-simple-form.html
deleted file mode 100644
index 54a7ea4..0000000
--- a/web/gui/src/main/webapp/_dev/ng-examples/ch04-03-simple-form.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!DOCTYPE html>
-<html ng-app="notesApp">
-<head>
-    <title>Notes App</title>
-    <script src="../../tp/angular.js"></script>
-    <style>
-        span {
-            background-color: #cce;
-        }
-    </style>
-</head>
-<body ng-controller="MainCtrl as ctrl">
-
-<!--
- - Note, using a form has the advantage of reacting to RETURN triggering
- - the submit, as well as pressing the submit button.
- -->
-<form ng-submit="ctrl.submit()">
-    <input type="text" placeholder="username" ng-model="ctrl.user.username"/>
-    <input type="password" placeholder="password" ng-model="ctrl.user.password"/>
-    <input type="submit" value="Submit"/>
-    <p></p>
-    <textarea cols="60" rows="5" ng-model="ctrl.user.notes" placeholder="Notes">
-    </textarea>
-    <p>
-        NOTES:
-        <div>
-        {{ctrl.user.notes}}
-        </div>
-    </p>
-</form>
-
-<script type="text/javascript">
-    angular.module('notesApp', [])
-        .controller('MainCtrl', [function () {
-            var self = this;
-
-            self.submit = function () {
-                console.log('User clicked submit with ', self.user);
-            };
-        }]);
-</script>
-
-</body>
-</html>
diff --git a/web/gui/src/main/webapp/_dev/ng-examples/ch04-04-two-forms-databinding.html b/web/gui/src/main/webapp/_dev/ng-examples/ch04-04-two-forms-databinding.html
deleted file mode 100644
index 9cb4961..0000000
--- a/web/gui/src/main/webapp/_dev/ng-examples/ch04-04-two-forms-databinding.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html>
-<html ng-app="notesApp">
-<head>
-    <title>Notes App</title>
-    <script src="../../tp/angular.js"></script>
-    <style>
-        span {
-            background-color: #cce;
-        }
-    </style>
-</head>
-<body ng-controller="MainCtrl as ctrl">
-
-<form ng-submit="ctrl.submit1()">
-    <input type="text" placeholder="username" ng-model="ctrl.username"/>
-    <input type="password" placeholder="password" ng-model="ctrl.password"/>
-    <input type="submit" value="Submit"/>
-</form>
-
-<!-- Better way of structuring the form data -->
-<form ng-submit="ctrl.submit2()">
-    <input type="text" placeholder="username" ng-model="ctrl.user.username"/>
-    <input type="password" placeholder="password" ng-model="ctrl.user.password"/>
-    <input type="submit" value="Submit"/>
-</form>
-
-<script type="text/javascript">
-    angular.module('notesApp', [])
-        .controller('MainCtrl', [function () {
-            var self = this;
-
-            self.submit1 = function () {
-                // create user object to send to server
-                var user = {username: self.username, password: self.password};
-                console.log('First submit: ', user);
-            };
-            self.submit2 = function () {
-                console.log('Second submit: ', self.user);
-            };
-        }]);
-</script>
-
-</body>
-</html>
diff --git a/web/gui/src/main/webapp/_dev/ng-examples/ch04-05-form-validation.html b/web/gui/src/main/webapp/_dev/ng-examples/ch04-05-form-validation.html
deleted file mode 100644
index 3501adb..0000000
--- a/web/gui/src/main/webapp/_dev/ng-examples/ch04-05-form-validation.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!DOCTYPE html>
-<html ng-app="notesApp">
-<head>
-    <title>Notes App</title>
-    <script src="../../tp/angular.js"></script>
-    <style>
-        span {
-            background-color: #cce;
-        }
-    </style>
-</head>
-<body ng-controller="MainCtrl as ctrl">
-
-<form ng-submit="ctrl.submit()" name="myForm">
-    <input type="text"
-           placeholder="username"
-           ng-model="ctrl.user.username"
-           required
-           ng-minlength="4"/>
-
-    <input type="password"
-           placeholder="password"
-           ng-model="ctrl.user.password"
-           required/>
-
-    <input type="submit"
-           value="Submit"
-           ng-disabled="myForm.$invalid"/>
-</form>
-
-<script type="text/javascript">
-    angular.module('notesApp', [])
-        .controller('MainCtrl', [function () {
-            var self = this;
-            self.submit = function () {
-                console.log('Submit: ', self.user);
-            };
-        }]);
-</script>
-
-</body>
-</html>
diff --git a/web/gui/src/main/webapp/_dev/ng-examples/ch04-06-form-error-messages.html b/web/gui/src/main/webapp/_dev/ng-examples/ch04-06-form-error-messages.html
deleted file mode 100644
index 46c38c9..0000000
--- a/web/gui/src/main/webapp/_dev/ng-examples/ch04-06-form-error-messages.html
+++ /dev/null
@@ -1,53 +0,0 @@
-<!DOCTYPE html>
-<html ng-app="notesApp">
-<head>
-    <title>Notes App</title>
-    <script src="../../tp/angular.js"></script>
-</head>
-<body ng-controller="MainCtrl as ctrl">
-
-<form ng-submit="ctrl.submit()" name="myForm">
-    <input type="text"
-           name="uname"
-           placeholder="username"
-           ng-model="ctrl.user.username"
-           required
-           ng-minlength="4"/>
-    <span ng-show="myForm.uname.$error.required">
-        This is a required field
-    </span>
-    <span ng-show="myForm.uname.$error.minlength">
-        Minimum length required is 4
-    </span>
-    <span ng-show="myForm.uname.$invalid">
-        This field is invalid
-    </span>
-    <br/>
-
-    <input type="password"
-           name="pwd"
-           placeholder="password"
-           ng-model="ctrl.user.password"
-           required/>
-    <span ng-show="myForm.pwd.$error.required">
-        This is a required field
-    </span>
-    <br/>
-
-    <input type="submit"
-           value="Submit"
-           ng-disabled="myForm.$invalid"/>
-</form>
-
-<script type="text/javascript">
-    angular.module('notesApp', [])
-        .controller('MainCtrl', [function () {
-            var self = this;
-            self.submit = function () {
-                console.log('Submit: ', self.user);
-            };
-        }]);
-</script>
-
-</body>
-</html>
diff --git a/web/gui/src/main/webapp/_dev/ng-examples/ch04-07-form-styling.html b/web/gui/src/main/webapp/_dev/ng-examples/ch04-07-form-styling.html
deleted file mode 100644
index 1b6ab86..0000000
--- a/web/gui/src/main/webapp/_dev/ng-examples/ch04-07-form-styling.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!DOCTYPE html>
-<html ng-app="notesApp">
-<head>
-    <title>Notes App</title>
-    <script src="../../tp/angular.js"></script>
-    <style>
-        .username.ng-valid {
-            background-color: greenyellow;
-        }
-        .username.ng-dirty.ng-invalid-required {
-            background-color: hotpink;
-        }
-        .username.ng-dirty.ng-invalid-minlength {
-            background-color: lightpink;
-        }
-    </style>
-</head>
-<body ng-controller="MainCtrl as ctrl">
-
-<form ng-submit="ctrl.submit()" name="myForm">
-    <input type="text"
-           class="username"
-           name="uname"
-           placeholder="username"
-           ng-model="ctrl.user.username"
-           required
-           ng-minlength="4"/>
-
-    <input type="submit"
-           value="Submit"
-           ng-disabled="myForm.$invalid"/>
-</form>
-
-<script type="text/javascript">
-    angular.module('notesApp', [])
-        .controller('MainCtrl', [function () {
-            var self = this;
-            self.submit = function () {
-                console.log('Submit: ', self.user);
-            };
-        }]);
-</script>
-
-</body>
-</html>
diff --git a/web/gui/src/main/webapp/_dev/ng-examples/ch04-08-nested-forms.html b/web/gui/src/main/webapp/_dev/ng-examples/ch04-08-nested-forms.html
deleted file mode 100644
index c314919..0000000
--- a/web/gui/src/main/webapp/_dev/ng-examples/ch04-08-nested-forms.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<!DOCTYPE html>
-<html ng-app>
-<head>
-    <title>Notes App</title>
-    <script src="../../tp/angular.js"></script>
-</head>
-<!-- no controller in this example -->
-<body>
-
-<form novalidate name="myForm">
-    <input type="text"
-           class="username"
-           name="uname"
-           ng-model="ctrl.user.username"
-           required=""
-           placeholder="Username"
-           ng-minlength="4"/>
-
-    <input type="password"
-           class="password"
-           name="pad"
-           ng-model="ctrl.user.password"
-           required=""
-           placeholder="Password"
-           required=""/>
-
-    <p/>
-
-    <ng-form name="profile">
-        <input type="text"
-               name="firstName"
-               ng-model="ctrl.user.profile.firstName"
-               placeholder="First Name"
-               required/>
-        <input type="text"
-               name="middleName"
-               ng-model="ctrl.user.profile.middleName"
-               placeholder="Middle Name"/>
-        <input type="text"
-               name="lastName"
-               ng-model="ctrl.user.profile.lastName"
-               placeholder="Last Name"
-               required/>
-
-        <input type="date"
-               name="dob"
-               placeholder="Date of birth"
-               ng-model="ctrl.user.profile.dob"/>
-    </ng-form>
-
-    <span ng-show="myForm.profile.$invalid">
-        Please fill out the profile information
-    </span>
-
-    <p/>
-
-    <input type="submit"
-           value="Submit"
-           ng-disabled="myForm.$invalid"/>
-</form>
-
-</body>
-</html>
diff --git a/web/gui/src/main/webapp/_dev/ng-examples/ch04-09-checkbox-example.html b/web/gui/src/main/webapp/_dev/ng-examples/ch04-09-checkbox-example.html
deleted file mode 100644
index fe35af1..0000000
--- a/web/gui/src/main/webapp/_dev/ng-examples/ch04-09-checkbox-example.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE html>
-<html ng-app="notesApp">
-<head>
-    <title>Notes App</title>
-    <script src="../../tp/angular.js"></script>
-</head>
-<body ng-controller="MainCtrl as ctrl">
-
-    <div>
-        <h2>What are your favorite sports?</h2>
-        <div ng-repeat="sport in ctrl.sports">
-            <label ng-bind="sport.label"></label>
-            <div>
-                With binding:
-                <input type="checkbox"
-                       ng-model="sport.selected"
-                       ng-true-value="'YES'"
-                       ng-false-value="'NO'"/>
-            </div>
-            <div>
-                using ng-checked:
-                <input type="checkbox"
-                       ng-checked="sport.selected === 'YES'"/>
-            </div>
-            <div>
-                Current state: {{sport.selected}}
-            </div>
-            <br/>
-        </div>
-
-    </div>
-
-    <script type="text/javascript">
-        angular.module('notesApp', [])
-                .controller('MainCtrl', [function () {
-                    var self = this;
-                    self.sports = [
-                        {label: 'Basketball', selected: 'YES'},
-                        {label: 'Cricket', selected: 'NO'},
-                        {label: 'Soccer', selected: 'NO'},
-                        {label: 'Swimming', selected: 'YES'}
-                    ];
-                }]);
-    </script>
-
-</body>
-</html>
diff --git a/web/gui/src/main/webapp/_dev/ng-examples/ch04-10-radio-buttons.html b/web/gui/src/main/webapp/_dev/ng-examples/ch04-10-radio-buttons.html
deleted file mode 100644
index 2a2cb83..0000000
--- a/web/gui/src/main/webapp/_dev/ng-examples/ch04-10-radio-buttons.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<!DOCTYPE html>
-<html ng-app="notesApp">
-<head>
-    <title>Notes App</title>
-    <script src="../../tp/angular.js"></script>
-</head>
-<body ng-controller="MainCtrl as ctrl">
-
-    <div>
-        <h2>Radio Buttons</h2>
-        <div ng-init="user.gender = 'female'">
-            <input type="radio"
-                   name="gender"
-                   ng-model="user.gender"
-                   value="male"/>Male
-            <input type="radio"
-                   name="gender"
-                   ng-model="user.gender"
-                   value="female"/>Female
-        </div>
-    </div>
-
-    <div>
-        <h2>Radio Buttons two</h2>
-        <div ng-init="user.gender2 = 'male'; otherGender = 'Other'">
-            <input type="radio"
-                   name="gender2"
-                   ng-model="user.gender2"
-                   value="male"/>Male
-            <input type="radio"
-                   name="gender2"
-                   ng-model="user.gender2"
-                   value="female"/>Female
-            <input type="radio"
-                   name="gender2"
-                   ng-model="user.gender2"
-                   ng-value="otherGender"/>{{otherGender}}
-        </div>
-    </div>
-
-    <div>
-        <h2>Radio Buttons three</h2>
-        <div ng-repeat="ch in ctrl.choices">
-            <input type="radio"
-                   name="choice"
-                   ng-model="user.choice"
-                   ng-value="ch"/>{{ch}}
-
-        </div>
-    </div>
-
-
-    <script type="text/javascript">
-        angular.module('notesApp', [])
-                .controller('MainCtrl', [function () {
-                    var self = this;
-
-                    self.choices = ['foo', 'bar', 'baz', 'zoo', 'goo'];
-                }]);
-    </script>
-
-</body>
-</html>
diff --git a/web/gui/src/main/webapp/_dev/ng-examples/ch04-11-select-example.html b/web/gui/src/main/webapp/_dev/ng-examples/ch04-11-select-example.html
deleted file mode 100644
index a8cda33..0000000
--- a/web/gui/src/main/webapp/_dev/ng-examples/ch04-11-select-example.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<html ng-app="notesApp">
-<head>
-    <title>Notes App</title>
-    <script src="../../tp/angular.js"></script>
-</head>
-<body ng-controller="MainCtrl as ctrl">
-
-    <div>
-        <select ng-model="ctrl.selectedCountryId"
-                ng-options="c.id as c.label for c in ctrl.countries">
-        </select>
-        Selected Country ID: {{ctrl.selectedCountryId}}
-    </div>
-
-    <div>
-        <select ng-model="ctrl.selectedCountry"
-                ng-options="c.label for c in ctrl.countries track by c.id">
-        </select>
-        Selected Country: {{ctrl.selectedCountry}}
-    </div>
-
-    <script type="text/javascript">
-        angular.module('notesApp', [])
-                .controller('MainCtrl', [function () {
-                    var self = this;
-
-                    self.countries = [
-                        {label: 'UK', id: 1},
-                        {label: 'USA', id: 2},
-                        {label: 'France', id: 3},
-                        {label: 'Italy', id: 4}
-                    ];
-                    var first = self.countries[0];
-                    self.selectedCountryId = first.id;
-                    self.selectedCountry = first;
-                }]);
-    </script>
-
-</body>
-</html>
diff --git a/web/gui/src/main/webapp/_dev/ng-examples/ch05-01-need-for-service-app.js b/web/gui/src/main/webapp/_dev/ng-examples/ch05-01-need-for-service-app.js
deleted file mode 100644
index 4e25b0b..0000000
--- a/web/gui/src/main/webapp/_dev/ng-examples/ch05-01-need-for-service-app.js
+++ /dev/null
@@ -1,34 +0,0 @@
-// ch05-01-need-for-service-app.js
-
-angular.module('notesApp', [])
-    .controller('MainCtrl', [function () {
-        var self = this;
-        self.tab = 'first';
-        self.open = function (tab) {
-            self.tab = tab;
-        }
-    }])
-    .controller('SubCtrl', [function () {
-        var self = this;
-        self.list = [
-            {id: 0, label: 'Item 0'},
-            {id: 1, label: 'Item 1'}
-        ];
-
-        self.add = function () {
-            var n = self.list.length;
-            self.list.push({
-                id: n,
-                label: 'Item ' + n
-            });
-        }
-    }]);
-
-/*
- NOTE: When we use controllers, they are instances that get created and
-       destroyed as we navigate across the application. Any state they
-        hold is temporary at best, and cannot be communicated to other
-        controllers.
-
-        That's why we'd use "services" instead.
- */
diff --git a/web/gui/src/main/webapp/_dev/ng-examples/ch05-01-need-for-service.html b/web/gui/src/main/webapp/_dev/ng-examples/ch05-01-need-for-service.html
deleted file mode 100644
index 21d17e4..0000000
--- a/web/gui/src/main/webapp/_dev/ng-examples/ch05-01-need-for-service.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<html ng-app="notesApp">
-<head>
-    <title>Notes App</title>
-    <script src="../../tp/angular.js"></script>
-    <script src="ch05-01-need-for-service-app.js"></script>
-</head>
-<body ng-controller="MainCtrl as mainCtrl">
-
-    <h1> Hello Controllers! </h1>
-    <button ng-click="mainCtrl.open('first')">Open First</button>
-    <button ng-click="mainCtrl.open('second')">Open Second</button>
-
-    <div ng-switch on="mainCtrl.tab">
-
-        <div ng-switch-when="first">
-            <div ng-controller="SubCtrl as ctrl">
-                <h3>First Tab</h3>
-                <button ng-click="ctrl.add()">Add more items</button>
-                <ul>
-                    <li ng-repeat="item in ctrl.list">
-                        <span ng-bind="item.label"></span>
-                    </li>
-                </ul>
-            </div>
-        </div>
-
-        <div ng-switch-when="second">
-            <div ng-controller="SubCtrl as ctrl">
-                <h3>Second Tab</h3>
-                <button ng-click="ctrl.add()">Add more items</button>
-                <ul>
-                    <li ng-repeat="item in ctrl.list">
-                        <span ng-bind="item.label"></span>
-                    </li>
-                </ul>
-            </div>
-        </div>
-    </div>
-</body>
-</html>
diff --git a/web/gui/src/main/webapp/_dev/ng-examples/ch05-02-log-example.html b/web/gui/src/main/webapp/_dev/ng-examples/ch05-02-log-example.html
deleted file mode 100644
index d516440..0000000
--- a/web/gui/src/main/webapp/_dev/ng-examples/ch05-02-log-example.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE html>
-<html ng-app="notesApp">
-<head>
-    <title>Notes App</title>
-    <script src="../../tp/angular.js"></script>
-</head>
-<body ng-controller="MainCtrl as mainCtrl">
-
-    <h1> Hello Services! </h1>
-    <button ng-click="mainCtrl.logStuff()">Log something</button>
-
-    <script type="text/javascript">
-        angular.module('notesApp', [])
-                .controller('MainCtrl', ['$log', function ($log) {
-                    var self = this;
-                    self.logStuff = function () {
-                        $log.log('The button was pressed');
-                    };
-                }]);
-    </script>
-</body>
-</html>
diff --git a/web/gui/src/main/webapp/_dev/ng-examples/ch05-03-simple-angular-service.html b/web/gui/src/main/webapp/_dev/ng-examples/ch05-03-simple-angular-service.html
deleted file mode 100644
index 74f2a8e..0000000
--- a/web/gui/src/main/webapp/_dev/ng-examples/ch05-03-simple-angular-service.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!DOCTYPE html>
-<html ng-app="notesApp">
-<head>
-    <title>Notes App</title>
-    <script src="../../tp/angular.js"></script>
-    <script src="ch05-03-simple-angular-service.js"></script>
-</head>
-<body ng-controller="MainCtrl as mainCtrl">
-
-    <h1> Hello Controllers! </h1>
-
-    <button ng-click="mainCtrl.open('first')"> Open First </button>
-    <button ng-click="mainCtrl.open('second')"> Open Second </button>
-
-    <div ng-switch on="mainCtrl.tab">
-
-        <div ng-switch-when="first">
-            <div ng-controller="SubCtrl as ctrl">
-                <h3>First Tab</h3>
-                <button ng-click="ctrl.add()">Add item</button>
-                <ul>
-                    <li ng-repeat="item in ctrl.list()">
-                        <span ng-bind="item.label"></span>
-                    </li>
-                </ul>
-            </div>
-        </div>
-
-        <div ng-switch-when="second">
-            <div ng-controller="SubCtrl as ctrl">
-                <h3>Second Tab</h3>
-                <button ng-click="ctrl.add()">Add item</button>
-                <ul>
-                    <li ng-repeat="item in ctrl.list()">
-                        <span ng-bind="item.label"></span>
-                    </li>
-                </ul>
-            </div>
-        </div>
-    </div>
-
-</body>
-</html>
diff --git a/web/gui/src/main/webapp/_dev/ng-examples/ch05-03-simple-angular-service.js b/web/gui/src/main/webapp/_dev/ng-examples/ch05-03-simple-angular-service.js
deleted file mode 100644
index 25786be..0000000
--- a/web/gui/src/main/webapp/_dev/ng-examples/ch05-03-simple-angular-service.js
+++ /dev/null
@@ -1,115 +0,0 @@
-// ch05-03-simple-angular-service.js
-
-// this example shows three different ways of defining our own "service"...
-
-// use 'factory()' for functions/plain objects API
-// use 'service()' for JS class object API
-// use 'provider()' for configurable service API
-
-
-// this is a service definition
-function ItemServiceTwo() {
-    var items = [
-        {id: 0, label: 'Item 0'},
-        {id: 1, label: 'Item 1'}
-    ];
-    this.list = function () {
-        return items;
-    };
-    this.add = function (item) {
-        items.push(item);
-    };
-}
-
-// this is a provider definition
-function ItemServiceThree(optItems) {
-    var items = optItems || [];
-
-    this.list = function () {
-        return items;
-    };
-    this.add = function (item) {
-        items.push(item);
-    }
-}
-
-angular.module('notesApp', [])
-
-    // [provider] define item service as configurable provider
-    .provider('ItemServiceThree', function () {
-        var haveDefaultItems = true;
-
-        this.disableDefaultItems = function () {
-            haveDefaultItems = false;
-        };
-
-        // this function gets our dependencies..
-        this.$get = [function () {
-            var optItems = [];
-            if (haveDefaultItems) {
-                optItems = [
-                    {id: 0, label: 'Item 0'},
-                    {id: 1, label: 'Item 1'}
-                ];
-            }
-            return new ItemServiceThree(optItems);
-        }];
-    })
-
-    // [provider] define configuration for provider
-    .config(['ItemServiceThreeProvider', function (ItemServiceThreeProvider) {
-        // to see how the provider can change configuration
-        // change the value of shouldHaveDefaults to true and
-        // try running the example
-        var shouldHaveDefaults = false;
-
-        // get configuration from server.
-        // set shouldHaveDefaults somehow
-        // assume it magically changes for now
-        if (!shouldHaveDefaults) {
-            ItemServiceThreeProvider.disableDefaultItems();
-        }
-    }])
-
-    // [service] define item service as a JS class
-    .service('ItemServiceTwo', [ItemServiceTwo])
-
-    // [factory] define item service factory
-    .factory('ItemService', [function () {
-        var items = [
-            {id: 0, label: 'Item 0'},
-            {id: 1, label: 'Item 1'}
-        ];
-        return {
-            list: function () {
-                return items;
-            },
-            add: function (item) {
-                items.push(item);
-            }
-        };
-    }])
-
-    // ======================================================================
-    // define controllers...
-    .controller('MainCtrl', [function () {
-        var self = this;
-        self.tab = 'first';
-        self.open = function (tab) {
-            self.tab = tab;
-        };
-    }])
-
-    .controller('SubCtrl', ['ItemService', function (ItemService) {
-        var self = this;
-        self.list = function () {
-            return ItemService.list();
-        };
-        self.add = function () {
-            var n = self.list().length;
-            ItemService.add({
-                id: n,
-                label: 'Item ' + n
-            });
-        };
-    }]);
diff --git a/web/gui/src/main/webapp/_dev/ng-examples/ch08-01-filter-example.html b/web/gui/src/main/webapp/_dev/ng-examples/ch08-01-filter-example.html
deleted file mode 100644
index 105209c..0000000
--- a/web/gui/src/main/webapp/_dev/ng-examples/ch08-01-filter-example.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <title>Filters in Action</title>
-    <script src="../../tp/angular.js"></script>
-</head>
-<body ng-app="filtersApp">
-
-    <div ng-controller="FilterCtrl as ctrl">
-        <div>
-            Amount as a number: {{ctrl.amount | number}}
-        </div>
-        <div>
-            Total cost as a currency: {{ctrl.totalCost | currency}}
-        </div>
-        <div>
-            Total cost in GBP: {{ctrl.totalCost | currency:'GBP '}}
-        </div>
-        <div>
-            Shout: {{ctrl.name | uppercase}}
-        </div>
-        <div>
-            Whisper: {{ctrl.name | lowercase}}
-        </div>
-        <div>
-            Start time: {{ctrl.startTime | date:'medium'}}
-        </div>
-        <div>
-            as JSON: {{ctrl.struct | json}}
-        </div>
-    </div>
-
-    <script type="text/javascript">
-        angular.module('filtersApp', [])
-                .controller('FilterCtrl', [function () {
-                    var self = this;
-                    self.amount = 1024;
-                    self.totalCost = 4906;
-                    self.name = 'Onos Rocks!';
-                    self.startTime = new Date().getTime();
-                    self.struct = {
-                        foo: 'bar',
-                        baz: 3.1415
-                    };
-                }]);
-    </script>
-</body>
-</html>
diff --git a/web/gui/src/main/webapp/_dev/ng-examples/ch08-02-filter-number-string.html b/web/gui/src/main/webapp/_dev/ng-examples/ch08-02-filter-number-string.html
deleted file mode 100644
index 46e9c4d..0000000
--- a/web/gui/src/main/webapp/_dev/ng-examples/ch08-02-filter-number-string.html
+++ /dev/null
@@ -1,83 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <title>Filters in Action</title>
-    <script src="../../tp/angular.js"></script>
-</head>
-<body ng-app="filtersApp">
-
-    <ul ng-controller="FilterCtrl as ctrl">
-        <li>
-            Amount - {{ctrl.amount}}
-        </li>
-        <li>
-            Amount - Default Currency: {{ctrl.amount | currency}}
-        </li>
-        <li>
-            <!-- Using English pound sign -->
-            Amount - GBP Currency: {{ctrl.amount | currency:'&#163'}}
-        </li>
-        <li>
-            Amount - Number: {{ctrl.amount | number }}
-        </li>
-        <li>
-            Amount - Number (4 decimals): {{ctrl.amount | number:4}}
-        </li>
-        <li>
-            Amount - Yummy &#x3c0 = {{ctrl.pi | number:4 }}
-        </li>
-
-        <li>
-            Name - no filters: {{ctrl.name}}
-        </li>
-        <li>
-            Name - lowercase: {{ctrl.name | lowercase}}
-        </li>
-        <li>
-            Name - uppercase: {{ctrl.name | uppercase}}
-        </li>
-        <li>
-            Name - prefix: {{ctrl.name | limitTo:4}}
-        </li>
-
-        <li>
-            JSON filter: {{ctrl.struct | json}}
-        </li>
-
-        <li>
-            Timestamp: {{ctrl.startTime}}
-        </li>
-        <li>
-            Default Date filter: {{ctrl.startTime | date}}
-        </li>
-        <li>
-            Medium Date filter: {{ctrl.startTime | date:'medium'}}
-        </li>
-        <li>
-            Long Date filter: {{ctrl.startTime | date:'longDate'}}
-        </li>
-        <li>
-            Custom Date filter: {{ctrl.startTime | date:'M/dd, yyyy'}}
-        </li>
-        <li>
-            Custom Time filter: {{ctrl.startTime | date:'h:m a'}}
-        </li>
-    </ul>
-
-    <script type="text/javascript">
-        angular.module('filtersApp', [])
-                .controller('FilterCtrl', [function () {
-                    var self = this;
-                    self.amount = 1024;
-                    self.totalCost = 4906;
-                    self.name = 'Onos Rocks!';
-                    self.startTime = new Date().getTime();
-                    self.struct = {
-                        foo: 'bar',
-                        baz: 3.1415
-                    };
-                    self.pi = Math.PI;
-                }]);
-    </script>
-</body>
-</html>
diff --git a/web/gui/src/main/webapp/_dev/ng-examples/ch08-03-filter-arrays.html b/web/gui/src/main/webapp/_dev/ng-examples/ch08-03-filter-arrays.html
deleted file mode 100644
index a9ce3ca..0000000
--- a/web/gui/src/main/webapp/_dev/ng-examples/ch08-03-filter-arrays.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <title>Filters in Action</title>
-    <script src="../../tp/angular.js"></script>
-</head>
-<body ng-app="filtersApp">
-
-    <div ng-controller="FilterCtrl as ctrl">
-
-        <table>
-            <tr>
-                <td>
-                    <button ng-click="ctrl.currentFilter = 'string'">
-                        Filter with string
-                    </button>
-                </td>
-                <td>
-                    Filter Text
-                    <input type="text"
-                           ng-model="ctrl.filterOptions['string']"/>
-                </td>
-            </tr>
-            <tr>
-                <td>
-                    <button ng-click="ctrl.currentFilter = 'object'">
-                        Filter with object
-                    </button>
-                </td>
-                <td>
-                    Show Done or Not Done
-                    <input type="checkbox"
-                           ng-model="ctrl.filterOptions['object'].done"/>
-                </td>
-            </tr>
-            <tr>
-                <td>
-                    <button ng-click="ctrl.currentFilter = 'function'">
-                        Filter with function
-                    </button>
-                </td>
-            </tr>
-        </table>
-        <ul>
-            <li ng-repeat="note in ctrl.notes |
-                            filter:ctrl.filterOptions[ctrl.currentFilter] |
-                            orderBy:ctrl.sortOrder |
-                            limitTo:5">
-                {{note.label}} - {{note.type}} - {{note.done}}
-            </li>
-        </ul>
-    </div>
-
-
-    <script type="text/javascript">
-        angular.module('filtersApp', [])
-                .controller('FilterCtrl', [function () {
-                    var self = this;
-
-                    self.notes = [
-                        {label: 'FC Todo', type: 'chore', done: false},
-                        {label: 'FT Todo', type: 'task', done: false},
-                        {label: 'FF Todo', type: 'fun', done: true},
-                        {label: 'SC Todo', type: 'chore', done: false},
-                        {label: 'ST Todo', type: 'task', done: true},
-                        {label: 'SF Todo', type: 'fun', done: true},
-                        {label: 'TC Todo', type: 'chore', done: false},
-                        {label: 'TT Todo', type: 'task', done: false},
-                        {label: 'TF Todo', type: 'fun', done: false}
-                    ];
-
-                    self.sortOrder = ['+type', '-label'];
-
-                    self.filterOptions = {
-                        'string': '',
-                        'object': {done: false, label: 'F'},
-                        'function': function (note) {
-                            return note.type === 'task' && note.done === false;
-                        }
-                    };
-
-                    self.currentFilter = 'string';
-                }]);
-    </script>
-</body>
-</html>
diff --git a/web/gui/src/main/webapp/_dev/ng-examples/ch08-04-custom-filters.html b/web/gui/src/main/webapp/_dev/ng-examples/ch08-04-custom-filters.html
deleted file mode 100644
index f39991d..0000000
--- a/web/gui/src/main/webapp/_dev/ng-examples/ch08-04-custom-filters.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <title>Custom Filters in Action</title>
-    <script src="../../tp/angular.js"></script>
-</head>
-<body ng-app="filtersApp">
-
-    <div ng-controller="FilterCtrl as ctrl">
-        <div>
-            Start time (Timestamp): {{ctrl.startTime}}
-        </div>
-        <div>
-            Start time (Time): {{ctrl.startTime | date:'h:m a'}}
-        </div>
-        <div>
-            Start time (Our filter): {{ctrl.startTime | timeAgo}}
-        </div>
-        <div>
-            Start time (Our filter 2): {{ctrl.startTime | timeAgo:true}}
-        </div>
-        <div>
-            Some time ago (Computed): {{ctrl.someTimeAgo | date:'h:m a'}}
-        </div>
-        <div>
-            Some time ago (Our filter): {{ctrl.someTimeAgo | timeAgo}}
-        </div>
-    </div>
-
-    <script type="text/javascript">
-        angular.module('filtersApp', [])
-                .controller('FilterCtrl', [function () {
-                    var self = this;
-                    self.startTime = new Date().getTime();
-                    self.someTimeAgo = self.startTime - (1000*3600*4);
-                }])
-                .filter('timeAgo', [function () {
-                    var _m = 1000 * 60,
-                        _h = _m * 60,
-                        _d = _h * 24,
-                        _mon = _d * 30;
-
-                    return function (ts, ignoreSecs) {
-                        var now = new Date().getTime(),
-                                diff = now - ts;
-                        if (diff < _m && !ignoreSecs) {
-                            return 'seconds ago';
-                        } else if (diff < _h) {
-                            return 'minutes ago';
-                        } else if (diff < _d) {
-                            return 'hours ago';
-                        } else if (diff < _mon) {
-                            return 'days ago';
-                        } else {
-                            return 'months ago';
-                        }
-                    }
-                }]);
-    </script>
-</body>
-</html>
diff --git a/web/gui/src/main/webapp/_dev/ng-examples/ch10-01-simple-routing.html b/web/gui/src/main/webapp/_dev/ng-examples/ch10-01-simple-routing.html
deleted file mode 100644
index 2961412..0000000
--- a/web/gui/src/main/webapp/_dev/ng-examples/ch10-01-simple-routing.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <title>Simple Routing</title>
-    <script src="../../tp/angular.js"></script>
-    <script src="../../tp/angular-route.js"></script>
-</head>
-<body ng-app="routingApp">
-
-    <h2>Angular Routing</h2>
-
-    <ul>
-        <li><a href="#/">Default Route</a></li>
-        <li><a href="#/second">Second Route</a></li>
-        <li><a href="#/asdfertdfghsdfg">Non-existent Route</a></li>
-    </ul>
-
-    <div ng-view></div>
-
-    <script type="text/javascript">
-        angular.module('routingApp', ['ngRoute'])
-                .config(['$routeProvider', function ($routeProvider) {
-                    $routeProvider
-                        .when('/', {
-                            template: '<h5>This is the default route</h5>'
-                        })
-                        .when('/second', {
-                            template: '<h5>This is the second route</h5>'
-                        })
-                        .otherwise({
-                            redirectTo: '/'
-                        });
-                }]);
-    </script>
-</body>
-</html>
diff --git a/web/gui/src/main/webapp/_dev/ng-examples/js/ch03-controller.js b/web/gui/src/main/webapp/_dev/ng-examples/js/ch03-controller.js
deleted file mode 100644
index 92d3b0c..0000000
--- a/web/gui/src/main/webapp/_dev/ng-examples/js/ch03-controller.js
+++ /dev/null
@@ -1,17 +0,0 @@
-// Simple controller
-
-angular.module('notesApp', [])
-    .controller('ListCtrl', [function () {
-        var self = this;
-        self.items = [
-            {id: 1, label: 'First', done: true},
-            {id: 2, label: 'Second', done: false}
-        ];
-
-        self.getDoneClass = function (item) {
-            return {
-                finished: item.done,
-                unfinished: !item.done
-            };
-        };
-    }]);
diff --git a/web/gui/src/main/webapp/_dev/ng-examples/js/ch09-01-time-ago.js b/web/gui/src/main/webapp/_dev/ng-examples/js/ch09-01-time-ago.js
deleted file mode 100644
index 1a8b7f1..0000000
--- a/web/gui/src/main/webapp/_dev/ng-examples/js/ch09-01-time-ago.js
+++ /dev/null
@@ -1,27 +0,0 @@
-// ch09-01-time-ago.js
-
-angular.module('filterApp', [])
-    .filter('timeAgo', [function () {
-        var _m = 1000 * 60,
-            _h = _m * 60,
-            _d = _h * 24,
-            _mon = _d * 30;
-
-        return function (ts, ignoreSecs) {
-            var showSecs = !ignoreSecs,
-                now = new Date().getTime(),
-                diff = now - ts;
-
-            if (diff < _m && showSecs) {
-                return 'seconds ago';
-            } else if (diff < _h) {
-                return 'minutes ago';
-            } else if (diff < _d) {
-                return 'hours ago';
-            } else if (diff < _mon) {
-                return 'days ago';
-            } else {
-                return 'months ago';
-            }
-        }
-    }]);
diff --git a/web/gui/src/main/webapp/_dev/oblique.html b/web/gui/src/main/webapp/_dev/oblique.html
index d1d15d8..c192268 100644
--- a/web/gui/src/main/webapp/_dev/oblique.html
+++ b/web/gui/src/main/webapp/_dev/oblique.html
@@ -25,7 +25,7 @@
     <title>Layer Transformations</title>
 
     <script src="../tp/d3.js"></script>
-    <script src="../tp/jquery-2.1.1.min.js"></script>
+    <script src="../tp/angular.js"></script>
 
     <style>
         html,
@@ -134,7 +134,7 @@
 
             // General functions ...
             function isF(f) {
-                return $.isFunction(f) ? f : null;
+                return angular.isFunction(f) ? f : null;
             }
 
             function translate(x,y) {
@@ -151,7 +151,7 @@
 
             // Key Bindings...
             var keyHandler = {
-                T: transform
+                Z: transform
             };
 
             function whatKey(code) {
@@ -435,7 +435,7 @@
 
             function init() {
                 svg.append('text')
-                        .text('Press the "T" key....')
+                        .text('Press the "Z" key....')
                         .attr({ dy: '1.2em', fill: '#999'})
                         .style('font-size', '2.4pt')
                         .style('font-style', 'italic');
diff --git a/web/gui/src/main/webapp/_dev/onos-logo.svg b/web/gui/src/main/webapp/_dev/onos-logo.svg
deleted file mode 100644
index db4b81a..0000000
--- a/web/gui/src/main/webapp/_dev/onos-logo.svg
+++ /dev/null
@@ -1,176 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-     viewBox="0 0 792 612" enable-background="new 0 0 792 612" xml:space="preserve">
-<g>
-    <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="293.4264" y1="313.4543" x2="293.7567" y2="294.5293">
-        <stop  offset="0" style="stop-color:#007EC5"/>
-        <stop  offset="1" style="stop-color:#00C0ED"/>
-    </linearGradient>
-    <path fill="url(#SVGID_1_)" d="M308,377.4c1.7,0,3.2-0.3,4.3-1c1.1-0.6,2-1.4,2.6-2.3c0.6-0.9,1.1-1.9,1.3-3c0.2-1.1,0.3-2.1,0.3-3
-        c0-0.9-0.1-1.9-0.3-3c-0.2-1.1-0.7-2.1-1.3-3c-0.6-0.9-1.5-1.7-2.6-2.3c-1.1-0.6-2.6-1-4.3-1h-31c-1.8,0-3.2,0.3-4.3,1
-        c-1.1,0.6-2,1.4-2.6,2.3c-0.6,0.9-1.1,1.9-1.3,3c-0.2,1.1-0.3,2.1-0.3,3c0,0.9,0.1,1.9,0.3,3c0.2,1.1,0.7,2.1,1.3,3
-        c0.6,0.9,1.5,1.7,2.6,2.3c1.1,0.6,2.5,1,4.3,1H308L308,377.4z M323.7,368c0,1.9-0.3,3.9-1,5.9c-0.6,2-1.6,3.8-2.8,5.4
-        c-1.2,1.6-2.7,2.9-4.5,4c-1.7,1-3.7,1.5-5.9,1.5h-35c-2.1-0.1-4-0.7-5.6-1.7c-1.6-1.1-3-2.4-4.2-4c-1.2-1.6-2-3.4-2.6-5.3
-        c-0.6-1.9-0.9-3.9-0.9-5.8c0-1.9,0.3-3.9,1-5.9c0.6-2,1.6-3.8,2.8-5.4c1.2-1.6,2.7-2.9,4.5-4c1.7-1,3.7-1.5,5.9-1.5h35
-        c2.1,0.1,4,0.7,5.6,1.7c1.6,1,3,2.4,4.2,4c1.2,1.6,2,3.4,2.6,5.3C323.4,364.2,323.7,366.1,323.7,368z"/>
-    <linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="364.0253" y1="215.4108" x2="366.8113" y2="55.7995">
-        <stop  offset="0" style="stop-color:#007EC5"/>
-        <stop  offset="1" style="stop-color:#00C0ED"/>
-    </linearGradient>
-    <path fill="url(#SVGID_2_)" d="M383.7,368c0-0.9-0.1-1.9-0.3-3c-0.2-1.1-0.7-2.1-1.3-3c-0.6-0.9-1.5-1.7-2.6-2.3s-2.6-1-4.3-1
-        h-27.7c-1.8,0-3.2,0.3-4.3,1c-1.1,0.6-2,1.4-2.6,2.3c-0.6,0.9-1.1,1.9-1.3,3c-0.2,1.1-0.3,2.1-0.3,3v13.1c0,1-0.4,1.9-1.1,2.6
-        c-0.7,0.7-1.6,1.1-2.6,1.1c-1,0-1.9-0.4-2.6-1.1c-0.7-0.7-1.1-1.6-1.1-2.6V368c0-1.9,0.3-3.9,1-5.9c0.6-2,1.6-3.8,2.8-5.4
-        c1.2-1.6,2.7-2.9,4.5-4c1.7-1,3.7-1.5,5.9-1.5h32.2c2.1,0.1,4,0.7,5.6,1.7c1.6,1,3,2.4,4.2,4c1.2,1.6,2,3.4,2.6,5.3
-        c0.6,1.9,0.9,3.9,0.9,5.8v13.1c0,1-0.4,1.9-1.1,2.6c-0.7,0.7-1.6,1.1-2.6,1.1c-1,0-1.9-0.4-2.6-1.1c-0.7-0.7-1.1-1.6-1.1-2.6V368z"
-        />
-    <linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="429.6967" y1="386.7026" x2="430.0228" y2="368.0231">
-        <stop  offset="0" style="stop-color:#007EC5"/>
-        <stop  offset="1" style="stop-color:#00C0ED"/>
-    </linearGradient>
-    <path fill="url(#SVGID_3_)" d="M445.5,377.4c1.7,0,3.2-0.3,4.3-1c1.1-0.6,2-1.4,2.6-2.3c0.6-0.9,1.1-1.9,1.3-3
-        c0.2-1.1,0.3-2.1,0.3-3c0-0.9-0.1-1.9-0.3-3c-0.2-1.1-0.7-2.1-1.3-3c-0.6-0.9-1.5-1.7-2.6-2.3c-1.1-0.6-2.6-1-4.3-1h-31
-        c-1.8,0-3.2,0.3-4.3,1c-1.1,0.6-2,1.4-2.6,2.3c-0.6,0.9-1.1,1.9-1.3,3c-0.2,1.1-0.3,2.1-0.3,3c0,0.9,0.1,1.9,0.3,3
-        c0.2,1.1,0.7,2.1,1.3,3c0.6,0.9,1.5,1.7,2.6,2.3c1.1,0.6,2.5,1,4.3,1H445.5L445.5,377.4z M461.3,368c0,1.9-0.3,3.9-1,5.9
-        c-0.6,2-1.6,3.8-2.8,5.4c-1.2,1.6-2.7,2.9-4.5,4c-1.7,1-3.7,1.5-5.9,1.5h-35c-2.1-0.1-4-0.7-5.6-1.7c-1.6-1.1-3-2.4-4.2-4
-        c-1.2-1.6-2-3.4-2.6-5.3c-0.6-1.9-0.9-3.9-0.9-5.8c0-1.9,0.3-3.9,1-5.9c0.6-2,1.6-3.8,2.8-5.4c1.2-1.6,2.7-2.9,4.5-4
-        c1.7-1,3.7-1.5,5.9-1.5h35c2.1,0.1,4,0.7,5.6,1.7c1.6,1,3,2.4,4.2,4c1.2,1.6,2,3.4,2.6,5.3C461,364.2,461.3,366.1,461.3,368z"/>
-    <linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="499.3867" y1="424.4887" x2="499.7166" y2="405.5856">
-        <stop  offset="0" style="stop-color:#007EC5"/>
-        <stop  offset="1" style="stop-color:#00C0ED"/>
-    </linearGradient>
-    <path fill="url(#SVGID_4_)" d="M479.2,371.7c-1.4,0-2.8-0.3-4-0.8c-1.2-0.5-2.3-1.3-3.2-2.2c-0.9-0.9-1.7-2-2.2-3.2
-        c-0.5-1.2-0.8-2.6-0.8-4c0-1.4,0.3-2.8,0.8-4c0.5-1.2,1.3-2.3,2.2-3.2c0.9-0.9,2-1.7,3.2-2.2c1.2-0.5,2.6-0.8,4-0.8h46.6
-        c1,0,1.9,0.4,2.6,1.1c0.7,0.7,1.1,1.6,1.1,2.6c0,1-0.4,1.9-1.1,2.6c-0.7,0.7-1.6,1.1-2.6,1.1H479c-0.8,0-1.4,0.3-2,0.8
-        c-0.6,0.5-0.9,1.2-0.9,2c0,0.8,0.3,1.4,0.9,2c0.6,0.6,1.3,0.8,2,0.8h42.5c1.4,0,2.8,0.3,4,0.8c1.3,0.5,2.3,1.3,3.3,2.2
-        c0.9,0.9,1.7,2,2.2,3.3c0.5,1.3,0.8,2.6,0.8,4c0,1.4-0.3,2.8-0.8,4c-0.5,1.2-1.3,2.3-2.2,3.2c-0.9,0.9-2,1.6-3.3,2.2
-        c-1.3,0.5-2.6,0.8-4,0.8H475c-1,0-1.9-0.4-2.6-1.1c-0.7-0.7-1.1-1.6-1.1-2.6c0-1,0.4-1.9,1.1-2.6c0.7-0.7,1.6-1.1,2.6-1.1h46.8
-        c0.8,0,1.4-0.3,2-0.8c0.6-0.5,0.8-1.2,0.8-2c0-0.8-0.3-1.5-0.8-2.1c-0.6-0.6-1.2-0.8-2-0.8H479.2z"/>
-</g>
-<g>
-    <g>
-        <path fill="#007EC5" d="M263,404.8c-1.2-1.2-1.8-2.7-1.8-4.6c0-1.9,0.6-3.4,1.8-4.6c1.2-1.2,2.7-1.8,4.5-1.8
-            c1.8,0,3.3,0.6,4.5,1.8c1.2,1.2,1.8,2.7,1.8,4.6c0,1.9-0.6,3.4-1.8,4.6c-1.2,1.2-2.7,1.8-4.5,1.8C265.6,406.6,264.1,406,263,404.8
-            L263,404.8z M263.7,396.4c-0.9,1-1.4,2.3-1.4,3.8c0,1.5,0.5,2.8,1.4,3.8c0.9,1,2.2,1.5,3.7,1.5c1.6,0,2.8-0.5,3.7-1.5
-            c0.9-1,1.4-2.3,1.4-3.8c0-1.5-0.5-2.8-1.4-3.8c-0.9-1-2.2-1.5-3.7-1.5C265.9,394.9,264.7,395.4,263.7,396.4z"/>
-        <path fill="#007EC5" d="M276.5,410.2v-11.8h1v1.4h0c0.3-0.5,0.7-0.9,1.3-1.2c0.6-0.3,1.2-0.4,1.8-0.4c1.2,0,2.2,0.4,3,1.2
-            c0.8,0.8,1.2,1.8,1.2,3c0,1.2-0.4,2.2-1.2,3c-0.8,0.8-1.8,1.2-3,1.2c-0.6,0-1.3-0.1-1.8-0.4c-0.6-0.3-1-0.7-1.3-1.2h0v5.3H276.5
-            L276.5,410.2z M278.4,400c-0.6,0.6-1,1.4-1,2.3c0,0.9,0.3,1.6,1,2.3c0.6,0.6,1.4,0.9,2.3,0.9c0.9,0,1.7-0.3,2.3-0.9
-            c0.6-0.6,0.9-1.4,0.9-2.3c0-0.9-0.3-1.7-0.9-2.3c-0.6-0.6-1.3-0.9-2.3-0.9C279.8,399.1,279,399.4,278.4,400z"/>
-        <path fill="#007EC5" d="M294.1,404.1l0.8,0.6c-0.8,1.1-1.9,1.7-3.4,1.7c-1.2,0-2.2-0.4-2.9-1.2c-0.7-0.8-1.1-1.8-1.1-3
-            c0-1.2,0.4-2.2,1.1-3c0.7-0.8,1.7-1.2,2.8-1.2c1.2,0,2.1,0.4,2.7,1.1c0.7,0.7,1,1.6,1,2.6v0.7h-6.6c0,0.2,0,0.4,0.1,0.6
-            c0.1,0.2,0.1,0.5,0.3,0.8c0.1,0.3,0.3,0.5,0.5,0.8c0.2,0.2,0.5,0.4,0.9,0.6c0.4,0.2,0.8,0.2,1.2,0.2c0.5,0,1-0.1,1.5-0.4
-            C293.5,404.9,293.8,404.6,294.1,404.1L294.1,404.1z M288.5,401.6h5.6c0-0.7-0.3-1.3-0.8-1.8c-0.5-0.5-1.2-0.8-1.9-0.8
-            c-0.5,0-1,0.1-1.4,0.3c-0.4,0.2-0.7,0.5-0.9,0.8c-0.2,0.3-0.3,0.6-0.4,0.8C288.5,401.3,288.5,401.5,288.5,401.6z"/>
-        <path fill="#007EC5" d="M298.1,406.3v-5.7c0-0.2,0-0.6,0-1.2c0-0.6,0-0.9,0-1.1h1c0,0.8,0,1.3,0.1,1.4h0.1
-            c0.2-0.5,0.6-0.8,1.1-1.1c0.5-0.3,1-0.5,1.7-0.5c2,0,3,1.1,3,3.4v4.7h-1v-4.7c0-1.7-0.7-2.5-2-2.5c-0.8,0-1.5,0.3-2,0.8
-            c-0.5,0.6-0.8,1.4-0.8,2.4v3.9H298.1z"/>
-    </g>
-    <g>
-        <polygon fill="#007EC5" points="313.1,406.3 313.1,394.2 314.5,394.2 321.9,404.8 321.9,404.8 321.9,394.2 323.1,394.2
-            323.1,406.3 321.6,406.3 314.2,395.7 314.2,395.7 314.2,406.3 "/>
-        <path fill="#007EC5" d="M333,404.1l0.8,0.6c-0.8,1.1-1.9,1.7-3.4,1.7c-1.2,0-2.2-0.4-2.9-1.2c-0.7-0.8-1.1-1.8-1.1-3
-            c0-1.2,0.4-2.2,1.1-3c0.7-0.8,1.7-1.2,2.8-1.2c1.2,0,2.1,0.4,2.7,1.1c0.7,0.7,1,1.6,1,2.6v0.7h-6.6c0,0.2,0,0.4,0.1,0.6
-            c0.1,0.2,0.1,0.5,0.3,0.8c0.1,0.3,0.3,0.5,0.5,0.8c0.2,0.2,0.5,0.4,0.9,0.6c0.4,0.2,0.8,0.2,1.2,0.2c0.5,0,1-0.1,1.5-0.4
-            C332.4,404.9,332.8,404.6,333,404.1L333,404.1z M327.4,401.6h5.6c0-0.7-0.3-1.3-0.8-1.8c-0.5-0.5-1.2-0.8-1.9-0.8
-            c-0.5,0-1,0.1-1.4,0.3c-0.4,0.2-0.7,0.5-0.9,0.8c-0.2,0.3-0.3,0.6-0.4,0.8C327.4,401.3,327.4,401.5,327.4,401.6z"/>
-        <path fill="#007EC5" d="M340.9,398.4v0.9h-2.3v5.1c0,0.4,0.1,0.6,0.3,0.8c0.2,0.2,0.5,0.3,0.8,0.3c0.4,0,0.7-0.1,1.2-0.3l0.1,0.9
-            c-0.5,0.2-0.9,0.3-1.3,0.3c-0.7,0-1.2-0.2-1.5-0.6c-0.3-0.4-0.5-0.9-0.5-1.5v-5.1h-1.7v-0.9h1.7v-2.3h1v2.3H340.9z"/>
-        <polygon fill="#007EC5" points="344.8,406.3 342.3,398.4 343.5,398.4 345.4,405 345.4,405 347.6,398.4 348.6,398.4 350.9,405
-            351,405 352.8,398.4 353.9,398.4 351.5,406.3 350.5,406.3 348.1,399.8 348.1,399.8 345.9,406.3 "/>
-        <path fill="#007EC5" d="M356.9,405.3c-0.8-0.8-1.2-1.8-1.2-3c0-1.2,0.4-2.2,1.2-3c0.8-0.8,1.8-1.2,3-1.2c1.2,0,2.2,0.4,3,1.2
-            c0.8,0.8,1.2,1.8,1.2,3c0,1.2-0.4,2.2-1.2,3c-0.8,0.8-1.8,1.2-3,1.2C358.7,406.5,357.7,406.1,356.9,405.3L356.9,405.3z M357.7,400
-            c-0.6,0.6-0.9,1.4-0.9,2.3c0,0.9,0.3,1.7,0.9,2.3c0.6,0.6,1.3,0.9,2.3,0.9c0.9,0,1.7-0.3,2.3-0.9c0.6-0.6,0.9-1.4,0.9-2.3
-            c0-0.9-0.3-1.7-0.9-2.3c-0.6-0.6-1.3-0.9-2.3-0.9C359,399.1,358.2,399.4,357.7,400z"/>
-        <path fill="#007EC5" d="M367.1,406.3v-5.7c0-0.2,0-0.6,0-1.2c0-0.6,0-0.9,0-1.1h1c0,0.8,0,1.3,0.1,1.4c0.6-1.1,1.4-1.6,2.5-1.6
-            c0.2,0,0.4,0,0.6,0.1l-0.1,1c-0.1,0-0.3-0.1-0.4-0.1c-0.9,0-1.5,0.3-1.9,0.8c-0.4,0.5-0.6,1.2-0.6,2v4.3H367.1z"/>
-        <polygon fill="#007EC5" points="373.5,406.3 373.5,393.3 374.5,393.3 374.5,402 378.4,398.4 379.9,398.4 375.9,402 380.4,406.3
-            378.9,406.3 374.5,402.1 374.5,406.3 "/>
-    </g>
-    <g>
-        <path fill="#007EC5" d="M388.2,404.8c-1.2-1.2-1.8-2.7-1.8-4.6c0-1.9,0.6-3.4,1.8-4.6c1.2-1.2,2.7-1.8,4.5-1.8
-            c1.8,0,3.3,0.6,4.5,1.8c1.2,1.2,1.8,2.7,1.8,4.6c0,1.9-0.6,3.4-1.8,4.6c-1.2,1.2-2.7,1.8-4.5,1.8
-            C390.8,406.6,389.3,406,388.2,404.8L388.2,404.8z M388.9,396.4c-0.9,1-1.4,2.3-1.4,3.8c0,1.5,0.5,2.8,1.4,3.8
-            c0.9,1,2.2,1.5,3.7,1.5c1.6,0,2.8-0.5,3.7-1.5c0.9-1,1.4-2.3,1.4-3.8c0-1.5-0.5-2.8-1.4-3.8c-0.9-1-2.2-1.5-3.7-1.5
-            C391.1,394.9,389.9,395.4,388.9,396.4z"/>
-        <path fill="#007EC5" d="M401.7,410.2v-11.8h1v1.4h0c0.3-0.5,0.7-0.9,1.3-1.2c0.6-0.3,1.2-0.4,1.8-0.4c1.2,0,2.2,0.4,3,1.2
-            c0.8,0.8,1.2,1.8,1.2,3c0,1.2-0.4,2.2-1.2,3c-0.8,0.8-1.8,1.2-3,1.2c-0.6,0-1.3-0.1-1.8-0.4c-0.6-0.3-1-0.7-1.3-1.2h0v5.3H401.7
-            L401.7,410.2z M403.6,400c-0.6,0.6-1,1.4-1,2.3c0,0.9,0.3,1.6,1,2.3c0.6,0.6,1.4,0.9,2.3,0.9c0.9,0,1.7-0.3,2.3-0.9
-            c0.6-0.6,0.9-1.4,0.9-2.3c0-0.9-0.3-1.7-0.9-2.3c-0.6-0.6-1.3-0.9-2.3-0.9C405,399.1,404.2,399.4,403.6,400z"/>
-        <path fill="#007EC5" d="M419.3,404.1l0.8,0.6c-0.8,1.1-1.9,1.7-3.4,1.7c-1.2,0-2.2-0.4-2.9-1.2c-0.7-0.8-1.1-1.8-1.1-3
-            c0-1.2,0.4-2.2,1.1-3s1.7-1.2,2.8-1.2c1.2,0,2.1,0.4,2.7,1.1c0.7,0.7,1,1.6,1,2.6v0.7h-6.6c0,0.2,0,0.4,0.1,0.6
-            c0.1,0.2,0.1,0.5,0.3,0.8c0.1,0.3,0.3,0.5,0.5,0.8c0.2,0.2,0.5,0.4,0.9,0.6c0.4,0.2,0.8,0.2,1.2,0.2c0.5,0,1-0.1,1.5-0.4
-            C418.7,404.9,419,404.6,419.3,404.1L419.3,404.1z M413.7,401.6h5.6c0-0.7-0.3-1.3-0.8-1.8c-0.5-0.5-1.2-0.8-1.9-0.8
-            c-0.5,0-1,0.1-1.4,0.3c-0.4,0.2-0.7,0.5-0.9,0.8c-0.2,0.3-0.3,0.6-0.4,0.8C413.7,401.3,413.7,401.5,413.7,401.6z"/>
-        <path fill="#007EC5" d="M423.3,406.3v-5.7c0-0.2,0-0.6,0-1.2c0-0.6,0-0.9,0-1.1h1c0,0.8,0,1.3,0.1,1.4c0.6-1.1,1.4-1.6,2.5-1.6
-            c0.2,0,0.4,0,0.6,0.1l-0.1,1c-0.1,0-0.3-0.1-0.4-0.1c-0.9,0-1.5,0.3-1.9,0.8c-0.4,0.5-0.6,1.2-0.6,2v4.3H423.3z"/>
-        <path fill="#007EC5" d="M435.9,401v1.9c0,1.4,0.1,2.5,0.2,3.3h-1c-0.1-0.4-0.1-0.8-0.1-1.3h0c-0.6,1-1.5,1.5-2.8,1.5
-            c-0.8,0-1.4-0.2-2-0.6c-0.5-0.4-0.8-1-0.8-1.8c0-1.8,1.5-2.7,4.4-2.7h1.2V401c0-0.6-0.2-1.1-0.6-1.4c-0.4-0.3-0.9-0.5-1.6-0.5
-            c-0.9,0-1.7,0.3-2.4,0.9l-0.6-0.7c0.4-0.3,0.8-0.6,1.4-0.8c0.6-0.2,1.1-0.3,1.6-0.3c1,0,1.8,0.2,2.3,0.7
-            C435.6,399.3,435.9,400,435.9,401L435.9,401z M434.9,402.3h-1.1c-1,0-1.8,0.1-2.4,0.4c-0.7,0.3-1,0.7-1,1.4c0,0.5,0.2,0.8,0.5,1.1
-            c0.4,0.3,0.8,0.4,1.2,0.4c1,0,1.7-0.3,2.1-0.8c0.4-0.5,0.6-1.2,0.6-1.9V402.3z"/>
-        <path fill="#007EC5" d="M443.2,398.4v0.9h-2.3v5.1c0,0.4,0.1,0.6,0.3,0.8c0.2,0.2,0.5,0.3,0.8,0.3c0.4,0,0.7-0.1,1.2-0.3l0.1,0.9
-            c-0.5,0.2-0.9,0.3-1.3,0.3c-0.7,0-1.2-0.2-1.5-0.6c-0.3-0.4-0.5-0.9-0.5-1.5v-5.1h-1.7v-0.9h1.7v-2.3h1v2.3H443.2z"/>
-        <path fill="#007EC5" d="M445.9,406.3v-7.9h1v7.9H445.9L445.9,406.3z M445.9,395.8c-0.1-0.1-0.2-0.3-0.2-0.5c0-0.2,0.1-0.4,0.2-0.5
-            c0.1-0.1,0.3-0.2,0.5-0.2c0.2,0,0.4,0.1,0.5,0.2c0.1,0.1,0.2,0.3,0.2,0.5c0,0.2-0.1,0.4-0.2,0.5c-0.1,0.1-0.3,0.2-0.5,0.2
-            C446.2,396,446,395.9,445.9,395.8z"/>
-        <path fill="#007EC5" d="M450.6,406.3v-5.7c0-0.2,0-0.6,0-1.2c0-0.6,0-0.9,0-1.1h1c0,0.8,0,1.3,0.1,1.4h0.1
-            c0.2-0.5,0.6-0.8,1.1-1.1c0.5-0.3,1-0.5,1.7-0.5c2,0,3,1.1,3,3.4v4.7h-1v-4.7c0-1.7-0.7-2.5-2-2.5c-0.8,0-1.5,0.3-2,0.8
-            c-0.5,0.6-0.8,1.4-0.8,2.4v3.9H450.6z"/>
-        <path fill="#007EC5" d="M468.7,398.4v7.4c0,0.8-0.1,1.4-0.3,2c-0.2,0.6-0.4,1-0.7,1.3c-0.3,0.3-0.6,0.6-1,0.8
-            c-0.4,0.2-0.8,0.3-1.1,0.4c-0.3,0.1-0.7,0.1-1.1,0.1c-0.8,0-1.6-0.1-2.3-0.4c-0.7-0.3-1.3-0.7-1.7-1.2l0.8-0.8
-            c0.7,1,1.7,1.5,3.1,1.5c2.1,0,3.2-1.2,3.2-3.6v-1.1h0c-0.6,1-1.6,1.5-3,1.5c-1.2,0-2.2-0.4-3-1.2c-0.8-0.8-1.2-1.7-1.2-2.9
-            c0-1.1,0.4-2.1,1.2-2.9c0.8-0.8,1.8-1.2,3-1.2c1.3,0,2.3,0.5,3,1.5h0v-1.3H468.7L468.7,398.4z M466.8,404.4
-            c0.6-0.6,0.9-1.3,0.9-2.2c0-0.9-0.3-1.6-0.9-2.2c-0.6-0.6-1.3-0.9-2.2-0.9c-0.9,0-1.6,0.3-2.2,0.9c-0.6,0.6-0.9,1.3-0.9,2.2
-            c0,0.9,0.3,1.6,0.9,2.2c0.6,0.6,1.3,0.9,2.2,0.9C465.5,405.3,466.2,405,466.8,404.4z"/>
-    </g>
-    <g>
-        <path fill="#007EC5" d="M476,404.7l1.1-0.7c0.6,1,1.5,1.5,2.8,1.5c0.8,0,1.4-0.2,1.9-0.6c0.5-0.4,0.8-1,0.8-1.7
-            c0-0.5-0.2-1-0.5-1.3c-0.3-0.3-0.7-0.6-1.2-0.7c-0.5-0.1-1-0.3-1.5-0.5c-0.5-0.2-1-0.4-1.5-0.6c-0.5-0.2-0.8-0.6-1.2-1
-            c-0.3-0.5-0.5-1.1-0.5-1.8c0-1,0.4-1.8,1.1-2.4c0.8-0.6,1.7-0.9,2.8-0.9c1.4,0,2.5,0.5,3.3,1.5l-1,0.7c-0.6-0.8-1.4-1.2-2.4-1.2
-            c-0.8,0-1.4,0.2-1.9,0.6c-0.5,0.4-0.8,1-0.8,1.7c0,0.5,0.1,0.9,0.3,1.2c0.2,0.3,0.5,0.6,0.9,0.8c0.4,0.2,0.8,0.3,1.2,0.5
-            c0.4,0.1,0.9,0.3,1.3,0.4c0.4,0.2,0.9,0.3,1.2,0.6c0.4,0.2,0.7,0.6,0.9,1c0.2,0.4,0.3,0.9,0.3,1.6c0,1-0.4,1.9-1.1,2.5
-            c-0.7,0.6-1.6,0.9-2.7,0.9C478.1,406.6,476.8,406,476,404.7z"/>
-        <path fill="#007EC5" d="M492.9,398.4l-4.1,10.3c-0.4,1.1-1.2,1.7-2.2,1.7c-0.3,0-0.6-0.1-1-0.2l0.1-1c0.4,0.1,0.7,0.2,0.9,0.2
-            c0.3,0,0.6-0.1,0.8-0.4c0.2-0.2,0.4-0.6,0.5-1l0.7-1.8l-3.2-7.9h1.1l2.6,6.7l2.5-6.7H492.9z"/>
-        <path fill="#007EC5" d="M494.4,404.9l0.9-0.6c0.2,0.4,0.5,0.7,0.9,1c0.4,0.2,0.9,0.3,1.4,0.3c0.5,0,0.9-0.1,1.3-0.4
-            c0.4-0.3,0.5-0.6,0.5-1.1c0-0.4-0.2-0.7-0.5-0.9c-0.3-0.2-0.7-0.4-1.2-0.5c-0.5-0.1-0.9-0.2-1.4-0.3c-0.5-0.1-0.9-0.3-1.2-0.7
-            c-0.3-0.3-0.5-0.8-0.5-1.3c0-0.7,0.3-1.3,0.8-1.7c0.5-0.4,1.2-0.6,1.9-0.6c1.4,0,2.3,0.5,2.8,1.5l-0.9,0.5c-0.4-0.7-1-1.1-1.9-1.1
-            c-0.4,0-0.8,0.1-1.1,0.3c-0.4,0.2-0.5,0.5-0.5,0.9c0,0.4,0.2,0.7,0.5,0.9c0.3,0.2,0.7,0.3,1.2,0.4c0.5,0.1,0.9,0.2,1.4,0.3
-            c0.5,0.1,0.9,0.3,1.2,0.7c0.3,0.3,0.5,0.8,0.5,1.4c0,0.8-0.3,1.4-0.8,1.8c-0.6,0.4-1.2,0.6-2,0.6
-            C496.1,406.5,495,405.9,494.4,404.9z"/>
-        <path fill="#007EC5" d="M507.2,398.4v0.9h-2.3v5.1c0,0.4,0.1,0.6,0.3,0.8c0.2,0.2,0.5,0.3,0.8,0.3c0.4,0,0.7-0.1,1.2-0.3l0.1,0.9
-            c-0.5,0.2-0.9,0.3-1.3,0.3c-0.7,0-1.2-0.2-1.5-0.6c-0.3-0.4-0.5-0.9-0.5-1.5v-5.1h-1.7v-0.9h1.7v-2.3h1v2.3H507.2z"/>
-        <path fill="#007EC5" d="M515.9,404.1l0.8,0.6c-0.8,1.1-1.9,1.7-3.4,1.7c-1.2,0-2.2-0.4-2.9-1.2c-0.7-0.8-1.1-1.8-1.1-3
-            c0-1.2,0.4-2.2,1.1-3s1.7-1.2,2.8-1.2c1.2,0,2.1,0.4,2.7,1.1c0.7,0.7,1,1.6,1,2.6v0.7h-6.6c0,0.2,0,0.4,0.1,0.6
-            c0.1,0.2,0.1,0.5,0.3,0.8c0.1,0.3,0.3,0.5,0.5,0.8c0.2,0.2,0.5,0.4,0.9,0.6c0.4,0.2,0.8,0.2,1.2,0.2c0.5,0,1-0.1,1.5-0.4
-            C515.3,404.9,515.7,404.6,515.9,404.1L515.9,404.1z M510.3,401.6h5.6c0-0.7-0.3-1.3-0.8-1.8c-0.5-0.5-1.2-0.8-1.9-0.8
-            c-0.5,0-1,0.1-1.4,0.3c-0.4,0.2-0.7,0.5-0.9,0.8c-0.2,0.3-0.3,0.6-0.4,0.8C510.3,401.3,510.3,401.5,510.3,401.6z"/>
-        <path fill="#007EC5" d="M520,406.3v-5.7c0-0.2,0-0.6,0-1.2c0-0.6,0-0.9,0-1.1h1c0,0.8,0,1.3,0.1,1.4h0.1c0.2-0.5,0.6-0.8,1.1-1.1
-            c0.5-0.3,1-0.5,1.7-0.5c0.5,0,1,0.1,1.5,0.4c0.4,0.3,0.7,0.7,0.9,1.3c0.2-0.6,0.6-1,1.1-1.3c0.5-0.3,1-0.4,1.6-0.4
-            c2,0,3,1.1,3,3.4v4.7h-1v-4.7c0-1.7-0.7-2.5-2-2.5c-0.4,0-0.8,0.1-1.2,0.3c-0.3,0.2-0.6,0.4-0.8,0.7c-0.2,0.3-0.3,0.6-0.4,0.9
-            c-0.1,0.3-0.1,0.6-0.1,0.9v4.4h-1v-4.8c0-0.8-0.1-1.3-0.4-1.8c-0.3-0.4-0.7-0.6-1.2-0.6c-0.8,0-1.5,0.3-2,0.8
-            c-0.5,0.6-0.8,1.4-0.8,2.4v3.9H520z"/>
-    </g>
-</g>
-<g>
-
-        <linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="280.7511" y1="468.8727" x2="530.5958" y2="160.3402" gradientTransform="matrix(-0.9595 0.2818 0.2818 0.9595 742.5177 -113.6192)">
-        <stop  offset="0" style="stop-color:#C6262F"/>
-        <stop  offset="1.288056e-03" style="stop-color:#C6262F"/>
-        <stop  offset="0.3136" style="stop-color:#D64B43"/>
-        <stop  offset="0.5951" style="stop-color:#E26255"/>
-        <stop  offset="0.8334" style="stop-color:#EA6F61"/>
-        <stop  offset="1" style="stop-color:#ED7466"/>
-    </linearGradient>
-    <path fill-rule="evenodd" clip-rule="evenodd" fill="url(#SVGID_5_)" d="M427.7,300.4c-6.9,0.6-13.1,5-19.2,7.1
-        c-18.1,6.2-33.9,9.1-56.5,4.7c24.6,17.2,36.6,13,63.7,0.1c-0.5,0.6-0.7,1.3-1.3,1.9c1.4-0.4,2.4-1.7,3.4-2.2
-        c-0.4,0.7-0.9,1.5-1.4,1.9c2.2-0.6,3.7-2.3,5.9-3.9c-2.4,2.1-4.2,5-6,8c-1.5,2.5-3.1,4.8-5.1,6.9c-1,1-1.9,1.9-2.9,2.9
-        c-1.4,1.3-2.9,2.5-5.1,2.9c1.7,0.1,3.6-0.3,6.5-1.9c-1.6,2.4-7.1,6.2-9.9,7.2c10.5-2.6,19.2-15.9,25.7-18
-        c18.3-5.9,13.8-3.4,27-14.2c1.6-1.3,3-1,5.1-0.8c1.1,0.1,2.1,0.3,3.2,0.5c0.8,0.2,1.4,0.4,2.2,0.8l1.8,0.9c-1.9-4.5-2.3-4.1-5.9-6
-        c-2.3-1.3-3.3-3.8-6.2-4.9c-7.1-2.6-11.9,11.7-11.7-5c0.1-8,4.2-14.4,6.4-22c1.1-3.8,2.3-7.6,2.4-11.5c0.1-2.3,0-4.7-0.4-7
-        c-2-11.2-8.4-21.5-19.7-24.8c-1-0.3-1.1-0.3-0.9,0c9.6,17.1,7.2,38.3,3.1,54.2C429.9,285.5,426.7,293.2,427.7,300.4z"/>
-    <path fill-rule="evenodd" clip-rule="evenodd" fill="#E6E7E8" d="M344.4,311.8c7.1,4.9,15,9.5,23.8,10.7
-        c-8.3-0.4-16.6-3.8-27.3-11.3C342,311.4,343.2,311.6,344.4,311.8z"/>
-</g>
-</svg>
diff --git a/web/gui/src/main/webapp/_dev/practice-table.html b/web/gui/src/main/webapp/_dev/practice-table.html
deleted file mode 100644
index 1391a9c..0000000
--- a/web/gui/src/main/webapp/_dev/practice-table.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html>
-<!--
-  ~ Copyright 2016-present 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 -- Displaying icons with Angular test page
-  -->
-
-<html>
-<head lang="en">
-    <meta charset="UTF-8">
-    <title>Practice Table Formatting</title>
-
-    <script type="text/javascript" src="../tp/angular.js"></script>
-    <script type="text/javascript" src="../tp/angular-route.js"></script>
-
-    <script type="text/javascript" src="../tp/d3.js"></script>
-
-    <script type="text/javascript" src="practice-table.js"></script>
-    <script type="text/javascript" src="../app/fw/widget/widget.js"></script>
-    <script type="text/javascript" src="../app/fw/widget/table.js"></script>
-
-    <style>
-        html,
-        body {
-            background-color: #ddf;
-            font-family: Arial, Helvetica, sans-serif;
-            font-size: 9pt;
-        }
-
-        h2 {
-            color: darkred;
-        }
-
-    </style>
-
-</head>
-<!-- outline for using a controller in Angular -->
-<body ng-app="practiceTable">
-    <h2>Scrolling Table Practice</h2>
-    <div id="tableDiv" ng-controller="showTableCtrl as ctrl">
-    </div>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/web/gui/src/main/webapp/_dev/practice-table.js b/web/gui/src/main/webapp/_dev/practice-table.js
deleted file mode 100644
index 9feade8..0000000
--- a/web/gui/src/main/webapp/_dev/practice-table.js
+++ /dev/null
@@ -1,273 +0,0 @@
-/*
- * Copyright 2016-present 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 -- Showing Icons Test Module
- */
-
-(function () {
-    'use strict';
-
-    var config = {
-        colIds: ['_iconid_available', 'id', 'mfr', 'hw', 'sw', 'serial',
-            'annotations'],
-        colText: ['Availability', 'URI', 'Vendor', 'Hardware Version',
-            'Software Version', 'Serial Number', 'Protocol']
-        },
-        deviceData = {
-            "devices": [{
-                "id": "of:0000000000000001",
-                "available": true,
-                "_iconid_available": "active",
-                "role": "MASTER",
-                "mfr": "Nicira, Inc.",
-                "hw": "Open vSwitch",
-                "sw": "2.0.1",
-                "serial": "None",
-                "annotations": {
-                    "protocol": "OF_10"
-                    }
-                },
-                {
-                    "id": "of:0000000000000004",
-                    "available": false,
-                    "_iconid_available": "inactive",
-                    "role": "MASTER",
-                    "mfr": "Nicira, Inc.",
-                    "hw": "Open vSwitch",
-                    "sw": "2.0.1",
-                    "serial": "None",
-                    "annotations": {
-                        "protocol": "OF_10"
-                    }
-                },
-                {
-                    "id": "of:0000000000000092",
-                    "available": false,
-                    "_iconid_available": "inactive",
-                    "role": "MASTER",
-                    "mfr": "Nicira, Inc.",
-                    "hw": "Open vSwitch",
-                    "sw": "2.0.1",
-                    "serial": "None",
-                    "annotations": {
-                        "protocol": "OF_10"
-                    }
-                },
-                {
-                    "id": "of:0000000000000092",
-                    "available": false,
-                    "_iconid_available": "inactive",
-                    "role": "MASTER",
-                    "mfr": "Nicira, Inc.",
-                    "hw": "Open vSwitch",
-                    "sw": "2.0.1",
-                    "serial": "None",
-                    "annotations": {
-                        "protocol": "OF_10"
-                    }
-                },
-                {
-                    "id": "of:0000000000000092",
-                    "available": false,
-                    "_iconid_available": "inactive",
-                    "role": "MASTER",
-                    "mfr": "Nicira, Inc.",
-                    "hw": "Open vSwitch",
-                    "sw": "2.0.1",
-                    "serial": "None",
-                    "annotations": {
-                        "protocol": "OF_10"
-                    }
-                },
-                {
-                    "id": "of:0000000000000092",
-                    "available": false,
-                    "_iconid_available": "inactive",
-                    "role": "MASTER",
-                    "mfr": "Nicira, Inc.",
-                    "hw": "Open vSwitch",
-                    "sw": "2.0.1",
-                    "serial": "None",
-                    "annotations": {
-                        "protocol": "OF_10"
-                    }
-                },
-                {
-                    "id": "of:0000000000000092",
-                    "available": false,
-                    "_iconid_available": "inactive",
-                    "role": "MASTER",
-                    "mfr": "Nicira, Inc.",
-                    "hw": "Open vSwitch",
-                    "sw": "2.0.1",
-                    "serial": "None",
-                    "annotations": {
-                        "protocol": "OF_10"
-                    }
-                },
-                {
-                    "id": "of:0000000000000092",
-                    "available": false,
-                    "_iconid_available": "inactive",
-                    "role": "MASTER",
-                    "mfr": "Nicira, Inc.",
-                    "hw": "Open vSwitch",
-                    "sw": "2.0.1",
-                    "serial": "None",
-                    "annotations": {
-                        "protocol": "OF_10"
-                    }
-                },
-                {
-                    "id": "of:0000000000000092",
-                    "available": false,
-                    "_iconid_available": "inactive",
-                    "role": "MASTER",
-                    "mfr": "Nicira, Inc.",
-                    "hw": "Open vSwitch",
-                    "sw": "2.0.1",
-                    "serial": "None",
-                    "annotations": {
-                        "protocol": "OF_10"
-                    }
-                },
-                {
-                    "id": "of:0000000000000092",
-                    "available": false,
-                    "_iconid_available": "inactive",
-                    "role": "MASTER",
-                    "mfr": "Nicira, Inc.",
-                    "hw": "Open vSwitch",
-                    "sw": "2.0.1",
-                    "serial": "None",
-                    "annotations": {
-                        "protocol": "OF_10"
-                    }
-                },
-                {
-                    "id": "of:0000000000000092",
-                    "available": false,
-                    "_iconid_available": "inactive",
-                    "role": "MASTER",
-                    "mfr": "Nicira, Inc.",
-                    "hw": "Open vSwitch",
-                    "sw": "2.0.1",
-                    "serial": "None",
-                    "annotations": {
-                        "protocol": "OF_10"
-                    }
-                },
-                {
-                    "id": "of:0000000000000092",
-                    "available": false,
-                    "_iconid_available": "inactive",
-                    "role": "MASTER",
-                    "mfr": "Nicira, Inc.",
-                    "hw": "Open vSwitch",
-                    "sw": "2.0.1",
-                    "serial": "None",
-                    "annotations": {
-                        "protocol": "OF_10"
-                    }
-                },
-                {
-                    "id": "of:0000000000000092",
-                    "available": false,
-                    "_iconid_available": "inactive",
-                    "role": "MASTER",
-                    "mfr": "Nicira, Inc.",
-                    "hw": "Open vSwitch",
-                    "sw": "2.0.1",
-                    "serial": "None",
-                    "annotations": {
-                        "protocol": "OF_10"
-                    }
-                }]
-        };
-
-    function setColWidth(t) {
-        var tHeaders, tdElement, colWidth;
-
-        tHeaders = t.selectAll('th');
-
-        // select each td in the first row and set the header's width to the
-        // corresponding td's width, if td is larger than header's width
-        tHeaders.each(function(thElement, index){
-            thElement = d3.select(this);
-
-            tdElement = t.select('td:nth-of-type(' + (index + 1) + ')');
-            colWidth = tdElement.style('width');
-
-            thElement.style('width', colWidth);
-            tdElement.style('width', colWidth);
-        });
-    }
-
-    function setCSS(thead, tbody, height) {
-        thead.style('display', 'block');
-        tbody.style({'display': 'block',
-            'height': height || '100px',
-            'overflow': 'auto'
-        });
-    }
-
-    function fixTable(t, th, tb, height) {
-        setColWidth(t);
-        setCSS(th, tb, height);
-    }
-
-    angular.module('practiceTable', ['onosWidget'])
-
-        .controller('showTableCtrl', ['$log', '$scope', '$rootScope',
-            '$timeout', 'TableService',
-            function ($log, $scope, $rootScope, $timeout, ts) {
-                var self = this;
-                var table = ts.renderTable(d3.select('#tableDiv'), config, deviceData);
-            }])
-
-        .directive('fixedHeader', ['$log', '$timeout', '$compile',
-            function ($log, $timeout, $compile) {
-             return {
-                restrict: 'A',
-                scope: {
-                    tHeight: '@'
-                },
-
-                link: function (scope, element, attrs) {
-                    var table = d3.select(element[0]),
-                        thead = table.select('thead'),
-                        tbody = table.select('tbody');
-
-                    // wait until the table is visible
-                    scope.$watch(
-                        function () { return (!(table.offsetParent === null)); },
-                        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.tHeight);
-                                });
-                            }
-                        });
-                }
-            };
-        }]);
-}());
diff --git a/web/gui/src/main/webapp/_dev/svg-exercise.html b/web/gui/src/main/webapp/_dev/svg-exercise.html
deleted file mode 100644
index 830dea3..0000000
--- a/web/gui/src/main/webapp/_dev/svg-exercise.html
+++ /dev/null
@@ -1,89 +0,0 @@
-<!DOCTYPE html>
-<!--
-  ~ Copyright 2016-present 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 -- SVG mouse over d3 exercise html
-  -->
-
-<html>
-<head lang="en">
-    <meta charset="UTF-8">
-    <title>Upgrade Performance</title>
-
-    <script type="text/javascript" src="../tp/angular.js"></script>
-    <script type="text/javascript" src="../tp/d3.js"></script>
-    <script type="text/javascript" src="svg-exercise.js"></script>
-    <script type="text/javascript" src="../app/fw/util/util.js"></script>
-    <script type="text/javascript" src="../app/fw/util/fn.js"></script>
-
-
-    <style>
-        html,
-        body, div {
-            background-color: #eee;
-            font-family: Arial, Helvetica, sans-serif;
-            font-size: 9pt;
-            margin: 0;
-            overflow: hidden;
-        }
-        .button {
-            fill: #369;
-            filter: url(#buttonBevel);
-        }
-        svg text {
-            fill: white;
-            letter-spacing: .005em;
-        }
-    </style>
-</head>
-
-<body ng-app="svgExercise">
-
-<div id="svgExDiv" ng-controller="svgExCtrl as ctrl">
-    <improve-performance></improve-performance>
-</div>
-
-<svg xmlns="http://www.w3.org/2000/svg"
-     viewBox="-10 -10 110 110"
-     visibility="hidden">
-    <filter id="buttonBevel"
-            filterUnits="objectBoundingBox"
-            x="-10%" y="-10%" width="110%" height="110%">
-        <feGaussianBlur in="SourceAlpha"
-                        stdDeviation="4"
-                        result="blur"/>
-        <feSpecularLighting in="blur"
-                            surfaceScale="7"
-                            specularConstant="0.6"
-                            specularExponent="5"
-                            result="spec"
-                            lighting-color="#4E7199">
-            <fePointLight x="-5000" y="-10000" z="20000"/>
-        </feSpecularLighting>
-        <feComposite in="spec"
-                     in2="SourceAlpha"
-                     operator="in"
-                     result="spec2"/>
-        <feComposite in="SourceGraphic"
-                     in2="spec2"
-                     operator="arithmetic"
-                     k1="0" k2="1" k3="1" k4="0" />
-    </filter>
-</svg>
-
-</body>
-</html>
diff --git a/web/gui/src/main/webapp/_dev/svg-exercise.js b/web/gui/src/main/webapp/_dev/svg-exercise.js
deleted file mode 100644
index 2903397..0000000
--- a/web/gui/src/main/webapp/_dev/svg-exercise.js
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * Copyright 2016-present 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 -- SVG mouse over d3 exercise module
- */
-
-(function () {
-    'use strict';
-
-    // injected references
-    var $log, fs;
-
-    // constants
-    var btnWidth = 175,
-        btnHeight = 50,
-        hoverZone = 70,
-        sectorDivisions = 3,
-        margin = 10;
-
-    // svg elements
-    var svg, g;
-
-    // other variables
-    var winWidth, winHeight,
-        sectorWidth, sectorHeight,
-        currSector = 4, // always starts in the middle
-        mouse;
-
-    // ====================================================
-
-    function centeredOnWindow(axis, dim) {
-        return (axis / 2) - (dim / 2);
-    }
-
-    function onMouseMove() {
-        mouse = d3.mouse(this);
-        moveButton();
-    }
-
-    function removeMouseListener() {
-        g.on('mousemove', null);
-    }
-
-    function addMouseListener() {
-        g.on('mousemove', onMouseMove);
-    }
-
-    function selectSector() {
-        var sector, row, col,
-            currCol = currSector % sectorDivisions;
-
-        do {
-            sector = Math.floor((Math.random() * 9));
-            col = sector % sectorDivisions;
-        } while (col === currCol);
-        currSector = sector;
-        row = Math.floor(sector / sectorDivisions);
-
-        return {
-            xmin: (sectorWidth * col) + margin,
-            xmax: ((sectorWidth * col) + sectorWidth) - margin,
-            ymin: (sectorHeight * row) + margin,
-            ymax: ((sectorHeight * row) + sectorHeight) - margin
-        };
-    }
-
-    function selectXY(sectorCoords) {
-        var x, y, x1, y1;
-
-        do {
-            x = (Math.random() * sectorCoords.xmax) + sectorCoords.xmin;
-            y = (Math.random() * sectorCoords.ymax) + sectorCoords.ymin;
-            x1 = x + btnWidth;
-            y1 = y + btnHeight;
-        } while (x1 > sectorCoords.xmax || y1 > sectorCoords.ymax);
-
-        return {
-            x: x,
-            y: y
-        };
-    }
-
-    function gTranslate(x, y) {
-        return 'translate(' + x + ',' + y + ')';
-    }
-
-    function moveButton() {
-        var sec = selectSector(),
-            pos = selectXY(sec);
-        g.transition()
-            .duration(300)
-            .ease('cubic-out')
-            .each('start', removeMouseListener)
-            .attr('transform', gTranslate(pos.x, pos.y))
-            .each('end', addMouseListener);
-    }
-
-    angular.module('svgExercise', ['onosUtil'])
-
-        .controller('svgExCtrl', ['$log', function (_$log_) {
-            $log = _$log_;
-        }])
-
-        .directive('improvePerformance', ['FnService', function (_fs_) {
-            fs = _fs_;
-            return {
-                restrict: 'E',
-                link: function (scope, elem) {
-                    winWidth = fs.windowSize().width;
-                    winHeight = fs.windowSize().height;
-                    sectorWidth = winWidth / sectorDivisions;
-                    sectorHeight = winHeight / sectorDivisions;
-
-                    svg = d3.select(elem[0])
-                        .append('svg')
-                        .attr({
-                            width: winWidth + 'px',
-                            height: winHeight + 'px'
-                        });
-
-                    g = svg.append('g');
-
-                    g.append('rect')
-                            .attr({
-                                width: btnWidth + 'px',
-                                height: btnHeight + 'px',
-                                rx: '10px',
-                                'class': 'button'
-                            });
-
-                    g.append('text')
-                        .style('text-anchor', 'middle')
-                        .text('Click for better performance.')
-                        .attr({
-                            x: btnWidth / 2,
-                            y: (btnHeight / 2) + 5
-                        });
-
-                    g.append('rect')
-                        .attr({
-                            fill: 'none',
-                            'pointer-events': 'all',
-                            width: btnWidth + hoverZone + 'px',
-                            height: btnHeight + hoverZone + 'px',
-                            x: -(hoverZone / 2),
-                            y: -(hoverZone / 2)
-                        });
-                    g.attr('transform',
-                        gTranslate(centeredOnWindow(winWidth, btnWidth),
-                                   centeredOnWindow(winHeight, btnHeight)));
-
-                    addMouseListener();
-                }
-            };
-        }]);
-}());
\ No newline at end of file
diff --git a/web/gui/src/main/webapp/_dev/topojson/countrycodes.html b/web/gui/src/main/webapp/_dev/topojson/countrycodes.html
deleted file mode 100644
index 2915240..0000000
--- a/web/gui/src/main/webapp/_dev/topojson/countrycodes.html
+++ /dev/null
@@ -1,376 +0,0 @@
-<!DOCTYPE html>
-<!--
- *
- * Copyright 2016-present 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.
- *
--->
-<html lang="en">
-<head>
-    <title>2-Letter, 3-Letter, Country Codes for All Countries in the World</title>
-    <meta charset="utf-8">
-    <script charset="utf-8" src="../../tp/jquery-2.1.1.min.js"></script>
-</head>
-<body>
-
-<style type="text/css" scoped>
-    body {
-        font-family: Helvetica Neue, Helvetica, Arial, sans-serif ;
-        background-color: #eef;
-    }
-    .mainContent {
-        margin: auto;
-        width: 800px;
-        background-color: #ddf;
-        padding: 8px;
-    }
-
-    table {
-        margin: auto;
-    }
-    th {
-        font-style: italic;
-        text-align: left;
-        background-color: #aad;
-        color: #66c;
-        padding: 4px;
-    }
-    td {
-        padding: 4px;
-    }
-    td.code {
-        font-family: monospace;
-        font-size: 120%;
-    }
-    td.num {
-        text-align: right;
-    }
-    tr:nth-child(even) {
-        background-color: #dde;
-    }
-    tr:nth-child(odd) {
-        background-color: #eef;
-    }
-
-</style>
-
-<div class="content">
-    <div class="mainContent">
-        <div class="miscTxt">
-            <header>
-                <h1>Complete List of Country Codes </h1>
-            </header>
-            <p>
-                The 2-letter codes shown below are supplied by the ISO
-                (<i>International Organization for Standardization</i>).
-                It bases its list of country names and abbreviations on
-                the list of names published by the United Nations.
-                The UN also uses 3-letter codes, and numerical codes
-                to identify nations.
-            </p>
-
-            <table>
-                <thead>
-                <tr>
-                    <th> Country </th>
-                    <th> A2 (ISO) </th>
-                    <th> A3 (UN) </th>
-                    <th> NUM (UN) </th>
-                </tr>
-                </thead>
-                <tbody id="codes-body">
-                </tbody>
-            </table>
-        </div>
-    </div>
-</div>
-
-<script type="text/javascript">
-
-    var data = [
-    [ 'Afghanistan', 'AF', 'AFG', 4 ],
-    [ 'Albania', 'AL', 'ALB', 8 ],
-    [ 'Algeria', 'DZ', 'DZA', 12 ],
-    [ 'American Samoa', 'AS', 'ASM', 16 ],
-    [ 'Andorra', 'AD', 'AND', 20 ],
-    [ 'Angola', 'AO', 'AGO', 24 ],
-    [ 'Anguilla', 'AI', 'AIA', 660 ],
-    [ 'Antarctica', 'AQ', 'ATA', 10 ],
-    [ 'Antigua and Barbuda', 'AG', 'ATG', 28 ],
-    [ 'Argentina', 'AR', 'ARG', 32 ],
-    [ 'Armenia', 'AM', 'ARM', 51 ],
-    [ 'Aruba', 'AW', 'ABW', 533 ],
-    [ 'Australia', 'AU', 'AUS', 36 ],
-    [ 'Austria', 'AT', 'AUT', 40 ],
-    [ 'Azerbaijan', 'AZ', 'AZE', 31 ],
-    [ 'Bahamas', 'BS', 'BHS', 44 ],
-    [ 'Bahrain', 'BH', 'BHR', 48 ],
-    [ 'Bangladesh', 'BD', 'BGD', 50 ],
-    [ 'Barbados', 'BB', 'BRB', 52 ],
-    [ 'Belarus', 'BY', 'BLR', 112 ],
-    [ 'Belgium', 'BE', 'BEL', 56 ],
-    [ 'Belize', 'BZ', 'BLZ', 84 ],
-    [ 'Benin', 'BJ', 'BEN', 204 ],
-    [ 'Bermuda', 'BM', 'BMU', 60 ],
-    [ 'Bhutan', 'BT', 'BTN', 64 ],
-    [ 'Bolivia', 'BO', 'BOL', 68 ],
-    [ 'Bonaire', 'BQ', 'BES', 535 ],
-    [ 'Bosnia and Herzegovina', 'BA', 'BIH', 70 ],
-    [ 'Botswana', 'BW', 'BWA', 72 ],
-    [ 'Bouvet Island', 'BV', 'BVT', 74 ],
-    [ 'Brazil', 'BR', 'BRA', 76 ],
-    [ 'British Indian Ocean Territory', 'IO', 'IOT', 86 ],
-    [ 'Brunei Darussalam', 'BN', 'BRN', 96 ],
-    [ 'Bulgaria', 'BG', 'BGR', 100 ],
-    [ 'Burkina Faso', 'BF', 'BFA', 854 ],
-    [ 'Burundi', 'BI', 'BDI', 108 ],
-    [ 'Cambodia', 'KH', 'KHM', 116 ],
-    [ 'Cameroon', 'CM', 'CMR', 120 ],
-    [ 'Canada', 'CA', 'CAN', 124 ],
-    [ 'Cape Verde', 'CV', 'CPV', 132 ],
-    [ 'Cayman Islands', 'KY', 'CYM', 136 ],
-    [ 'Central African Republic', 'CF', 'CAF', 140 ],
-    [ 'Chad', 'TD', 'TCD', 148 ],
-    [ 'Chile', 'CL', 'CHL', 152 ],
-    [ 'China', 'CN', 'CHN', 156 ],
-    [ 'Christmas Island', 'CX', 'CXR', 162 ],
-    [ 'Cocos (Keeling) Islands', 'CC', 'CCK', 166 ],
-    [ 'Colombia', 'CO', 'COL', 170 ],
-    [ 'Comoros', 'KM', 'COM', 174 ],
-    [ 'Congo', 'CG', 'COG', 178 ],
-    [ 'Democratic Republic of the Congo', 'CD', 'COD', 180 ],
-    [ 'Cook Islands', 'CK', 'COK', 184 ],
-    [ 'Costa Rica', 'CR', 'CRI', 188 ],
-    [ 'Croatia', 'HR', 'HRV', 191 ],
-    [ 'Cuba', 'CU', 'CUB', 192 ],
-    [ 'Curaçao', 'CW', 'CUW', 531 ],
-    [ 'Cyprus', 'CY', 'CYP', 196 ],
-    [ 'Czech Republic', 'CZ', 'CZE', 203 ],
-    [ 'Côte dIvoire', 'CI', 'CIV', 384 ],
-    [ 'Denmark', 'DK', 'DNK', 208 ],
-    [ 'Djibouti', 'DJ', 'DJI', 262 ],
-    [ 'Dominica', 'DM', 'DMA', 212 ],
-    [ 'Dominican Republic', 'DO', 'DOM', 214 ],
-    [ 'Ecuador', 'EC', 'ECU', 218 ],
-    [ 'Egypt', 'EG', 'EGY', 818 ],
-    [ 'El Salvador', 'SV', 'SLV', 222 ],
-    [ 'Equatorial Guinea', 'GQ', 'GNQ', 226 ],
-    [ 'Eritrea', 'ER', 'ERI', 232 ],
-    [ 'Estonia', 'EE', 'EST', 233 ],
-    [ 'Ethiopia', 'ET', 'ETH', 231 ],
-    [ 'Falkland Islands (Malvinas)', 'FK', 'FLK', 238 ],
-    [ 'Faroe Islands', 'FO', 'FRO', 234 ],
-    [ 'Fiji', 'FJ', 'FJI', 242 ],
-    [ 'Finland', 'FI', 'FIN', 246 ],
-    [ 'France', 'FR', 'FRA', 250 ],
-    [ 'French Guiana', 'GF', 'GUF', 254 ],
-    [ 'French Polynesia', 'PF', 'PYF', 258 ],
-    [ 'French Southern Territories', 'TF', 'ATF', 260 ],
-    [ 'Gabon', 'GA', 'GAB', 266 ],
-    [ 'Gambia', 'GM', 'GMB', 270 ],
-    [ 'Georgia', 'GE', 'GEO', 268 ],
-    [ 'Germany', 'DE', 'DEU', 276 ],
-    [ 'Ghana', 'GH', 'GHA', 288 ],
-    [ 'Gibraltar', 'GI', 'GIB', 292 ],
-    [ 'Greece', 'GR', 'GRC', 300 ],
-    [ 'Greenland', 'GL', 'GRL', 304 ],
-    [ 'Grenada', 'GD', 'GRD', 308 ],
-    [ 'Guadeloupe', 'GP', 'GLP', 312 ],
-    [ 'Guam', 'GU', 'GUM', 316 ],
-    [ 'Guatemala', 'GT', 'GTM', 320 ],
-    [ 'Guernsey', 'GG', 'GGY', 831 ],
-    [ 'Guinea', 'GN', 'GIN', 324 ],
-    [ 'Guinea-Bissau', 'GW', 'GNB', 624 ],
-    [ 'Guyana', 'GY', 'GUY', 328 ],
-    [ 'Haiti', 'HT', 'HTI', 332 ],
-    [ 'Heard Island and McDonald Mcdonald Islands', 'HM', 'HMD', 334 ],
-    [ 'Holy See (Vatican City State)', 'VA', 'VAT', 336 ],
-    [ 'Honduras', 'HN', 'HND', 340 ],
-    [ 'Hong Kong', 'HK', 'HKG', 344 ],
-    [ 'Hungary', 'HU', 'HUN', 348 ],
-    [ 'Iceland', 'IS', 'ISL', 352 ],
-    [ 'India', 'IN', 'IND', 356 ],
-    [ 'Indonesia', 'ID', 'IDN', 360 ],
-    [ 'Iran, Islamic Republic of', 'IR', 'IRN', 364 ],
-    [ 'Iraq', 'IQ', 'IRQ', 368 ],
-    [ 'Ireland', 'IE', 'IRL', 372 ],
-    [ 'Isle of Man', 'IM', 'IMN', 833 ],
-    [ 'Israel', 'IL', 'ISR', 376 ],
-    [ 'Italy', 'IT', 'ITA', 380 ],
-    [ 'Jamaica', 'JM', 'JAM', 388 ],
-    [ 'Japan', 'JP', 'JPN', 392 ],
-    [ 'Jersey', 'JE', 'JEY', 832 ],
-    [ 'Jordan', 'JO', 'JOR', 400 ],
-    [ 'Kazakhstan', 'KZ', 'KAZ', 398 ],
-    [ 'Kenya', 'KE', 'KEN', 404 ],
-    [ 'Kiribati', 'KI', 'KIR', 296 ],
-    [ 'Korea, Democratic People\'s Republic of', 'KP', 'PRK', 408 ],
-    [ 'Korea, Republic of', 'KR', 'KOR', 410 ],
-    [ 'Kuwait', 'KW', 'KWT', 414 ],
-    [ 'Kyrgyzstan', 'KG', 'KGZ', 417 ],
-    [ 'Lao People\'s Democratic Republic', 'LA', 'LAO', 418 ],
-    [ 'Latvia', 'LV', 'LVA', 428 ],
-    [ 'Lebanon', 'LB', 'LBN', 422 ],
-    [ 'Lesotho', 'LS', 'LSO', 426 ],
-    [ 'Liberia', 'LR', 'LBR', 430 ],
-    [ 'Libya', 'LY', 'LBY', 434 ],
-    [ 'Liechtenstein', 'LI', 'LIE', 438 ],
-    [ 'Lithuania', 'LT', 'LTU', 440 ],
-    [ 'Luxembourg', 'LU', 'LUX', 442 ],
-    [ 'Macao', 'MO', 'MAC', 446 ],
-    [ 'Macedonia, the Former Yugoslav Republic of', 'MK', 'MKD', 807 ],
-    [ 'Madagascar', 'MG', 'MDG', 450 ],
-    [ 'Malawi', 'MW', 'MWI', 454 ],
-    [ 'Malaysia', 'MY', 'MYS', 458 ],
-    [ 'Maldives', 'MV', 'MDV', 462 ],
-    [ 'Mali', 'ML', 'MLI', 466 ],
-    [ 'Malta', 'MT', 'MLT', 470 ],
-    [ 'Marshall Islands', 'MH', 'MHL', 584 ],
-    [ 'Martinique', 'MQ', 'MTQ', 474 ],
-    [ 'Mauritania', 'MR', 'MRT', 478 ],
-    [ 'Mauritius', 'MU', 'MUS', 480 ],
-    [ 'Mayotte', 'YT', 'MYT', 175 ],
-    [ 'Mexico', 'MX', 'MEX', 484 ],
-    [ 'Micronesia, Federated States of', 'FM', 'FSM', 583 ],
-    [ 'Moldova, Republic of', 'MD', 'MDA', 498 ],
-    [ 'Monaco', 'MC', 'MCO', 492 ],
-    [ 'Mongolia', 'MN', 'MNG', 496 ],
-    [ 'Montenegro', 'ME', 'MNE', 499 ],
-    [ 'Montserrat', 'MS', 'MSR', 500 ],
-    [ 'Morocco', 'MA', 'MAR', 504 ],
-    [ 'Mozambique', 'MZ', 'MOZ', 508 ],
-    [ 'Myanmar', 'MM', 'MMR', 104 ],
-    [ 'Namibia', 'NA', 'NAM', 516 ],
-    [ 'Nauru', 'NR', 'NRU', 520 ],
-    [ 'Nepal', 'NP', 'NPL', 524 ],
-    [ 'Netherlands', 'NL', 'NLD', 528 ],
-    [ 'New Caledonia', 'NC', 'NCL', 540 ],
-    [ 'New Zealand', 'NZ', 'NZL', 554 ],
-    [ 'Nicaragua', 'NI', 'NIC', 558 ],
-    [ 'Niger', 'NE', 'NER', 562 ],
-    [ 'Nigeria', 'NG', 'NGA', 566 ],
-    [ 'Niue', 'NU', 'NIU', 570 ],
-    [ 'Norfolk Island', 'NF', 'NFK', 574 ],
-    [ 'Northern Mariana Islands', 'MP', 'MNP', 580 ],
-    [ 'Norway', 'NO', 'NOR', 578 ],
-    [ 'Oman', 'OM', 'OMN', 512 ],
-    [ 'Pakistan', 'PK', 'PAK', 586 ],
-    [ 'Palau', 'PW', 'PLW', 585 ],
-    [ 'Palestine, State of', 'PS', 'PSE', 275 ],
-    [ 'Panama', 'PA', 'PAN', 591 ],
-    [ 'Papua New Guinea', 'PG', 'PNG', 598 ],
-    [ 'Paraguay', 'PY', 'PRY', 600 ],
-    [ 'Peru', 'PE', 'PER', 604 ],
-    [ 'Philippines', 'PH', 'PHL', 608 ],
-    [ 'Pitcairn', 'PN', 'PCN', 612 ],
-    [ 'Poland', 'PL', 'POL', 616 ],
-    [ 'Portugal', 'PT', 'PRT', 620 ],
-    [ 'Puerto Rico', 'PR', 'PRI', 630 ],
-    [ 'Qatar', 'QA', 'QAT', 634 ],
-    [ 'Romania', 'RO', 'ROU', 642 ],
-    [ 'Russian Federation', 'RU', 'RUS', 643 ],
-    [ 'Rwanda', 'RW', 'RWA', 646 ],
-    [ 'Reunion', 'RE', 'REU', 638 ],
-    [ 'Saint Barthalemy', 'BL', 'BLM', 652 ],
-    [ 'Saint Helena', 'SH', 'SHN', 654 ],
-    [ 'Saint Kitts and Nevis', 'KN', 'KNA', 659 ],
-    [ 'Saint Lucia', 'LC', 'LCA', 662 ],
-    [ 'Saint Martin (French part)', 'MF', 'MAF', 663 ],
-    [ 'Saint Pierre and Miquelon', 'PM', 'SPM', 666 ],
-    [ 'Saint Vincent and the Grenadines', 'VC', 'VCT', 670 ],
-    [ 'Samoa', 'WS', 'WSM', 882 ],
-    [ 'San Marino', 'SM', 'SMR', 674 ],
-    [ 'Sao Tome and Principe', 'ST', 'STP', 678 ],
-    [ 'Saudi Arabia', 'SA', 'SAU', 682 ],
-    [ 'Senegal', 'SN', 'SEN', 686 ],
-    [ 'Serbia', 'RS', 'SRB', 688 ],
-    [ 'Seychelles', 'SC', 'SYC', 690 ],
-    [ 'Sierra Leone', 'SL', 'SLE', 694 ],
-    [ 'Singapore', 'SG', 'SGP', 702 ],
-    [ 'Sint Maarten (Dutch part)', 'SX', 'SXM', 534 ],
-    [ 'Slovakia', 'SK', 'SVK', 703 ],
-    [ 'Slovenia', 'SI', 'SVN', 705 ],
-    [ 'Solomon Islands', 'SB', 'SLB', 90 ],
-    [ 'Somalia', 'SO', 'SOM', 706 ],
-    [ 'South Africa', 'ZA', 'ZAF', 710 ],
-    [ 'South Georgia and the South Sandwich Islands', 'GS', 'SGS', 239 ],
-    [ 'South Sudan', 'SS', 'SSD', 728 ],
-    [ 'Spain', 'ES', 'ESP', 724 ],
-    [ 'Sri Lanka', 'LK', 'LKA', 144 ],
-    [ 'Sudan', 'SD', 'SDN', 729 ],
-    [ 'Suriname', 'SR', 'SUR', 740 ],
-    [ 'Svalbard and Jan Mayen', 'SJ', 'SJM', 744 ],
-    [ 'Swaziland', 'SZ', 'SWZ', 748 ],
-    [ 'Sweden', 'SE', 'SWE', 752 ],
-    [ 'Switzerland', 'CH', 'CHE', 756 ],
-    [ 'Syrian Arab Republic', 'SY', 'SYR', 760 ],
-    [ 'Taiwan, Province of China', 'TW', 'TWN', 158 ],
-    [ 'Tajikistan', 'TJ', 'TJK', 762 ],
-    [ 'United Republic of Tanzania', 'TZ', 'TZA', 834 ],
-    [ 'Thailand', 'TH', 'THA', 764 ],
-    [ 'Timor-Leste', 'TL', 'TLS', 626 ],
-    [ 'Togo', 'TG', 'TGO', 768 ],
-    [ 'Tokelau', 'TK', 'TKL', 772 ],
-    [ 'Tonga', 'TO', 'TON', 776 ],
-    [ 'Trinidad and Tobago', 'TT', 'TTO', 780 ],
-    [ 'Tunisia', 'TN', 'TUN', 788 ],
-    [ 'Turkey', 'TR', 'TUR', 792 ],
-    [ 'Turkmenistan', 'TM', 'TKM', 795 ],
-    [ 'Turks and Caicos Islands', 'TC', 'TCA', 796 ],
-    [ 'Tuvalu', 'TV', 'TUV', 798 ],
-    [ 'Uganda', 'UG', 'UGA', 800 ],
-    [ 'Ukraine', 'UA', 'UKR', 804 ],
-    [ 'United Arab Emirates', 'AE', 'ARE', 784 ],
-    [ 'United Kingdom', 'GB', 'GBR', 826 ],
-    [ 'United States', 'US', 'USA', 840 ],
-    [ 'United States Minor Outlying Islands', 'UM', 'UMI', 581 ],
-    [ 'Uruguay', 'UY', 'URY', 858 ],
-    [ 'Uzbekistan', 'UZ', 'UZB', 860 ],
-    [ 'Vanuatu', 'VU', 'VUT', 548 ],
-    [ 'Venezuela', 'VE', 'VEN', 862 ],
-    [ 'Viet Nam', 'VN', 'VNM', 704 ],
-    [ 'British Virgin Islands', 'VG', 'VGB', 92 ],
-    [ 'US Virgin Islands', 'VI', 'VIR', 850 ],
-    [ 'Wallis and Futuna', 'WF', 'WLF', 876 ],
-    [ 'Western Sahara', 'EH', 'ESH', 732 ],
-    [ 'Yemen', 'YE', 'YEM', 887 ],
-    [ 'Zambia', 'ZM', 'ZMB', 894 ],
-    [ 'Zimbabwe', 'ZW', 'ZWE', 716 ],
-    [ 'Aland Islands', 'AX', 'ALA', 248 ]
-    ];
-
-    var bod = $('#codes-body');
-
-    function addRow(name, a2, a3, num) {
-        bod.append('<tr>' +
-                '<td>'+ name + '</td>' +
-                '<td class="code">'+ a2 + '</td>' +
-                '<td class="code">'+ a3 + '</td>' +
-                '<td class="num">'+ num + '</td>' +
-                '</tr>');
-    }
-
-    function loadRows() {
-        data.forEach(function (d) {
-            if (d.length) {
-                addRow(d[0], d[1], d[2], d[3]);
-            }
-        });
-    }
-
-    loadRows();
-</script>
-
-</body>
-</html>
diff --git a/web/gui/src/main/webapp/_dev/topojson/samerica.html b/web/gui/src/main/webapp/_dev/topojson/samerica.html
deleted file mode 100644
index 15bb331..0000000
--- a/web/gui/src/main/webapp/_dev/topojson/samerica.html
+++ /dev/null
@@ -1,87 +0,0 @@
-<!--
-  -- Sample code to show extracting country data from a countries TopoJSON
-  -- file and projecting it into an SVG layer.
-  --
-  -- See: http://bl.ocks.org/pnavarrc/62047b5638d624cfa9cb
-  -->
-<html>
-<head>
-    <title>S America</title>
-
-    <script charset="utf-8" src="../../tp/d3.min.js"></script>
-    <script charset="utf-8" src="../../tp/topojson.v1.min.js"></script>
-
-    <style>
-        svg {
-            border: 1px solid #888;
-        }
-        .country {
-            fill: #bcd1ff;
-            stroke: #7c79e6;
-            stroke-width: 1;
-        }
-    </style>
-</head>
-
-<body>
-    <div id="map"></div>
-
-    <script>
-        var datapath = '../../data/map/countries.topojson',
-            height = 500,
-            width = 500;
-
-        // create geographic projection
-        var projection = d3.geo.mercator()
-                .translate([width/2, height/2]);
-
-        // configure path generator
-        var pathGenerator = d3.geo.path()
-                .projection(projection);
-
-        var div = d3.select('#map'),
-            svg = div.append('svg'),
-            grp = svg.append('g');
-
-        svg.attr('width', width).attr('height', height);
-
-        d3.json(datapath, function (error, data) {
-            if (error) {
-                console.error(error);
-                throw error;
-            }
-
-            var features = topojson.feature(data, data.objects.countries).features;
-
-            // S.America
-            var southAmerica = features.filter(function (country) {
-                return country.properties.continent === 'South America';
-            });
-
-            var southAmericaFeature = {
-                type: 'FeatureCollection',
-                features: southAmerica
-            };
-
-            // compute bounds and centroid
-            var bounds = d3.geo.bounds(southAmericaFeature),
-                center = d3.geo.centroid(southAmericaFeature);
-
-            // compute angular distance between bound corners
-            var distance = d3.geo.distance(bounds[0], bounds[1]),
-                scale = height / distance / Math.sqrt(2);
-
-            // update projection
-            projection.scale(scale).center(center);
-
-            // draw
-            var countries = grp.selectAll('path.country')
-                    .data([southAmericaFeature]);
-            countries.enter().append('path').classed('country', true);
-            countries.attr('d', pathGenerator);
-            countries.exit().remove();
-        });
-    </script>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/web/gui/src/main/webapp/_dev/trie-test.html b/web/gui/src/main/webapp/_dev/trie-test.html
deleted file mode 100644
index a6a5000..0000000
--- a/web/gui/src/main/webapp/_dev/trie-test.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE html>
-<!--
-  ~  Copyright 2016-present 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 -- Sample use of trie functions in fn.js
-  -->
-
-<html>
-<head lang="en">
-    <meta charset="UTF-8">
-    <title>Test Trie Functions</title>
-
-    <script type="text/javascript" src="../tp/angular.js"></script>
-    <script type="text/javascript" src="../tp/angular-route.js"></script>
-
-    <script type="text/javascript" src="../tp/d3.js"></script>
-
-    <script type="text/javascript" src="../app/fw/util/util.js"></script>
-    <script type="text/javascript" src="../app/fw/util/fn.js"></script>
-
-    <script type="text/javascript" src="trie-test.js"></script>
-
-    <link rel="stylesheet" href="../app/common.css">
-
-    <style>
-        html,
-        body {
-            background-color: #ddf;
-            font-family: Arial, Helvetica, sans-serif;
-            font-size: 9pt;
-        }
-
-        h2 {
-            color: darkred;
-        }
-
-        #output div {
-            font-family: monospace;
-            white-space: pre;
-        }
-    </style>
-
-</head>
-
-<!-- outline for using a controller in Angular -->
-<body class="light" ng-app="trie" ng-controller="OvTrieTest as ctrl">
-    <h2>Testing the Trie Functions</h2>
-    <div id="output"></div>
-</body>
-</html>
\ No newline at end of file
diff --git a/web/gui/src/main/webapp/_dev/trie-test.js b/web/gui/src/main/webapp/_dev/trie-test.js
deleted file mode 100644
index d4ca714..0000000
--- a/web/gui/src/main/webapp/_dev/trie-test.js
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- *  Copyright 2016-present 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 -- Test code illustrating use of trie functions
- */
-
-(function () {
-    'use strict';
-
-    // injected refs
-    var $log, fs;
-
-    // internal state
-    var out,
-        trie = {},
-        counter = 5000;
-
-    function write(string) {
-        out.append('div').text(string);
-    }
-
-    function lookup(word) {
-        var result = fs.trieLookup(trie, word),
-            f = fs.isF(result),
-            show = f ? '{function}' : result;
-
-
-        write('------> ' + word + ' ==> ' + show);
-
-        f && f();
-    }
-
-    function add(word, data) {
-        var result = fs.addToTrie(trie, word, data);
-        write('   ADD> ' + word + ' [' + data + '] ==> ' + result);
-    }
-
-    function remove(word) {
-        var result = fs.removeFromTrie(trie, word);
-        write('REMOVE> ' + word + ' ==> ' + result);
-    }
-
-    function func1() {
-        counter++;
-        write('** function call **  ' + counter);
-    }
-
-    function func2() {
-        counter += 11;
-        write('** alternate call **  ' + counter);
-    }
-
-    function runTests() {
-        lookup('cat');
-
-        add('cat', 101);
-
-        lookup('ca');
-        lookup('cat');
-        lookup('cats');
-
-        add('cab', 103);
-        add('cog', 105);
-
-        lookup('cut');
-        lookup('cab');
-
-        remove('cab');
-
-        lookup('cab');
-        lookup('cat');
-
-        add('fun', func1);
-
-        lookup('fun');
-        lookup('fun');
-        lookup('fun');
-        lookup('cat');
-        lookup('fun');
-
-        add('fun', func2);
-
-        lookup('fun');
-        lookup('fun');
-        lookup('fun');
-
-        remove('fun');
-
-        lookup('fun');
-    }
-
-    angular.module('trie', ['onosUtil'])
-    .controller('OvTrieTest', ['$log', 'FnService',
-
-        function (_$log_, _fs_) {
-            $log = _$log_;
-            fs = _fs_;
-            out = d3.select('#output');
-
-            runTests();
-        }]);
-}());