diff --git a/tools/package/etc/org.apache.karaf.features.cfg b/tools/package/etc/org.apache.karaf.features.cfg
index 88818f6..33cb5cf 100644
--- a/tools/package/etc/org.apache.karaf.features.cfg
+++ b/tools/package/etc/org.apache.karaf.features.cfg
@@ -53,12 +53,12 @@
     webconsole/4.2.1, \
     scr/4.2.1, \
     war/4.2.1, \
-    onos-api/1.15.0.SNAPSHOT, \
-    onos-core/1.15.0.SNAPSHOT, \
-    onos-incubator/1.15.0.SNAPSHOT, \
-    onos-cli/1.15.0.SNAPSHOT, \
-    onos-rest/1.15.0.SNAPSHOT
-    #onos-gui
+    onos-api/$ONOS_VERSION, \
+    onos-core/$ONOS_VERSION, \
+    onos-incubator/$ONOS_VERSION, \
+    onos-cli/$ONOS_VERSION, \
+    onos-rest/$ONOS_VERSION
+    #onos-gui/$ONOS_VERSION
 
 
 #
diff --git a/tools/package/features/BUILD b/tools/package/features/BUILD
index de3fd20..f4a68f8 100644
--- a/tools/package/features/BUILD
+++ b/tools/package/features/BUILD
@@ -134,12 +134,10 @@
     name = "onos-rest",
     description = "ONOS REST API components",
     included_bundles = [
-        "//utils/rest:onlab-rest",
         "//web/api:onos-rest",
     ],
     required_features = [
         "onos-api",
-        "onos-thirdparty-web",
     ],
     visibility = ["//visibility:public"],
 )
@@ -155,25 +153,13 @@
 )
 
 osgi_feature(
-    name = "onos-cli2",
-    description = "stripped down ONOS admin command console components",
-    included_bundles = [
-        "//cli2:onos-cli2",
-    ],
-    required_features = ["onos-api"],
-    visibility = ["//visibility:public"],
-)
-
-osgi_feature(
     name = "onos-gui",
     description = "ONOS GUI console components",
     included_bundles = [
         "//web/gui:onos-gui",
-        "//utils/rest:onlab-rest",
     ],
     required_features = [
         "onos-api",
-        "onos-thirdparty-web",
     ],
     visibility = ["//visibility:public"],
 )
@@ -183,22 +169,20 @@
     description = "ONOS GUI2 components",
     included_bundles = [
         "//web/gui2:onos-gui2",
-        "//utils/rest:onlab-rest",
     ],
     required_features = [
         "onos-api",
-        "onos-thirdparty-web",
     ],
     visibility = ["//visibility:public"],
 )
 
-osgi_feature(
-    name = "onos-security",
-    description = "Security-Mode ONOS",
-    included_bundles = [
-        "@org_apache_felix_framework_security//jar",
-        "//core/security:onos-security",
-    ],
-    required_features = ["onos-api"],
-    visibility = ["//visibility:public"],
-)
+#osgi_feature(
+#    name = "onos-security",
+#    description = "Security-Mode ONOS",
+#    included_bundles = [
+#        "@org_apache_felix_framework_security//jar",
+#        "//core/security:onos-security",
+#    ],
+#    required_features = ["onos-api"],
+#    visibility = ["//visibility:public"],
+#)
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/UiWebSocket.java b/web/gui/src/main/java/org/onosproject/ui/impl/UiWebSocket.java
index 77f0f1f..25c2f03 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/UiWebSocket.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/UiWebSocket.java
@@ -60,8 +60,7 @@
  */
 
 @WebSocket
-public class UiWebSocket
-        implements UiConnection {
+public class UiWebSocket implements UiConnection {
 
     private static final Logger log = LoggerFactory.getLogger(UiWebSocket.class);
 
@@ -88,10 +87,6 @@
 
     private static final long MAX_AGE_MS = 30_000;
 
-    private static final byte PING = 0x9;
-    private static final byte PONG = 0xA;
-    private static final byte[] PING_DATA = new byte[]{(byte) 0xde, (byte) 0xad};
-
     private final ObjectMapper mapper = new ObjectMapper();
     private final ServiceDirectory directory;
     private final UiTopoSession topoSession;
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/UiWebSocketServlet.java b/web/gui/src/main/java/org/onosproject/ui/impl/UiWebSocketServlet.java
index 4faae28..040e98a 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/UiWebSocketServlet.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/UiWebSocketServlet.java
@@ -18,15 +18,15 @@
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Sets;
+import org.eclipse.jetty.websocket.servlet.ServletUpgradeRequest;
+import org.eclipse.jetty.websocket.servlet.ServletUpgradeResponse;
+import org.eclipse.jetty.websocket.servlet.WebSocketCreator;
 import org.eclipse.jetty.websocket.servlet.WebSocketServlet;
 import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory;
 import org.onlab.osgi.DefaultServiceDirectory;
 import org.onlab.osgi.ServiceDirectory;
 
 import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
 import java.security.Principal;
 import java.util.Set;
 import java.util.Timer;
@@ -38,6 +38,7 @@
 public class UiWebSocketServlet extends WebSocketServlet {
 
     private static final long PING_DELAY_MS = 5000;
+    private static final long IDLE_TIMEOUT_MS = 10000;
 
     private static UiWebSocketServlet instance;
     private static final Object INSTANCE_LOCK = new Object();
@@ -45,13 +46,15 @@
     private static ServiceDirectory directory = new DefaultServiceDirectory();
 
     private final Set<UiWebSocket> sockets = Sets.newConcurrentHashSet();
+
     private final Timer timer = new Timer();
     private final TimerTask pruner = new Pruner();
     private static boolean isStopped = false;
 
     @Override
     public void configure(WebSocketServletFactory webSocketServletFactory) {
-
+        webSocketServletFactory.getPolicy().setIdleTimeout(IDLE_TIMEOUT_MS);
+        webSocketServletFactory.setCreator(new UiWebSocketCreator());
     }
 
     /**
@@ -78,25 +81,6 @@
         timer.schedule(pruner, PING_DELAY_MS, PING_DELAY_MS);
     }
 
-    @Override
-    public void service(HttpServletRequest request, HttpServletResponse response)
-           throws ServletException, IOException {
-        super.service(request, response);
-        if (isStopped) {
-            return;
-        }
-
-        // FIXME: Replace this with globally shared opaque token to allow secure failover
-        Principal p = request.getUserPrincipal();
-        String userName = p != null ? p.getName() : FAKE_USERNAME;
-
-        UiWebSocket socket = new UiWebSocket(directory, userName);
-        sockets.add(socket);
-    }
-
-    // FIXME: This should not be necessary
-    private static final String FAKE_USERNAME = "UI-user";
-
     /**
      * Sends the specified message to all the GUI clients.
      *
@@ -138,4 +122,22 @@
             });
         }
     }
+
+    // FIXME: This should not be necessary
+    private static final String FAKE_USERNAME = "UI-user";
+
+    public class UiWebSocketCreator implements WebSocketCreator {
+        @Override
+        public Object createWebSocket(ServletUpgradeRequest request, ServletUpgradeResponse response) {
+            if (!isStopped) {
+                // FIXME: Replace this with globally shared opaque token to allow secure failover
+                Principal p = request.getUserPrincipal();
+                String userName = p != null ? p.getName() : FAKE_USERNAME;
+
+                UiWebSocket socket = new UiWebSocket(directory, userName);
+                sockets.add(socket);
+            }
+            return null;
+        }
+    }
 }
