incremental
diff --git a/static/CMakeLists.txt b/static/CMakeLists.txt
index 45795ef..7353ccc 100644
--- a/static/CMakeLists.txt
+++ b/static/CMakeLists.txt
@@ -16,26 +16,21 @@
     js/run_prettify.js
     js/angular.js
     js/versionController.js
-    noVNC/utils/parse.js
-    //noVNC/utils/inflator.partial.js
-    //noVNC/karma.conf.js
-    noVNC/include/inflator.js
-    noVNC/include/keysym.js
-    noVNC/include/chrome-app/tcp-client.js
-    noVNC/include/ui.js
-    noVNC/include/keysymdef.js
-    noVNC/include/websock.js
-    noVNC/include/util.js
-    noVNC/include/base64.js
-    noVNC/include/logo.js
-    noVNC/include/input.js
-    noVNC/include/rfb.js
-    noVNC/include/des.js
-    noVNC/include/playback.js
-    noVNC/include/xtscancodes.js
-    noVNC/include/keyboard.js
-    noVNC/include/webutil.js
-    noVNC/include/display.js
+    noVNC/core/inflator.js
+    noVNC/core/input/xtscancodes.js
+    noVNC/core/input/util.js
+    noVNC/core/input/devices.js
+    noVNC/core/input/keysym.js
+    noVNC/core/input/keysymdef.js
+    noVNC/core/websock.js
+    noVNC/core/util.js
+    noVNC/core/base64.js
+    noVNC/core/rfb.js
+    noVNC/core/des.js
+    noVNC/core/display.js
+    noVNC/app/ui.js
+    noVNC/app/webutil.js
+
 )
 
 set(CSS_ASSETS
@@ -44,9 +39,8 @@
     css/font-awesome.css
     css/bootstrap-theme.css
     css/prettify.css
-    //noVNC/include/base.css
-    //noVNC/include/blue.css
-    //noVNC/include/black.css
+    noVNC/app/styles/base.css
+    noVNC/app/styles/auto.css
 )
 
 set(HTML_ASSETS
diff --git a/static/index.html b/static/index.html
index 94bbf63..9f08b37 100644
--- a/static/index.html
+++ b/static/index.html
@@ -31,20 +31,21 @@
     <script src="static/js/loginController.js"></script>
     <script src="static/js/kvmController.js"></script>
     <script src="static/js/ipmiController.js"></script>
-    
-    <script src="static/noVNC/include/util.js"></script>
-    <script src="static/noVNC/include/webutil.js"></script>
-    <script src="static/noVNC/include/base64.js"></script>
-    <script src="static/noVNC/include/websock.js"></script>
-    <script src="static/noVNC/include/des.js"></script>
-    <script src="static/noVNC/include/keysymdef.js"></script>
-    <script src="static/noVNC/include/xtscancodes.js"></script>
-    <script src="static/noVNC/include/keyboard.js"></script>
-    <script src="static/noVNC/include/input.js"></script>
-    <script src="static/noVNC/include/display.js"></script>
-    <script src="static/noVNC/include/inflator.js"></script>
-    <script src="static/noVNC/include/rfb.js"></script>
-    <script src="static/noVNC/include/keysym.js"></script>
+ 
+    <script src="static/noVNC/core/util.js"></script>
+    <script src="static/noVNC/app/webutil.js"></script>  
+
+    <script src="static/noVNC/core/base64.js"></script>
+    <script src="static/noVNC/core/websock.js"></script>
+    <script src="static/noVNC/core/des.js"></script>
+    <script src="static/noVNC/core/input/keysymdef.js"></script>
+    <script src="static/noVNC/core/input/xtscancodes.js"></script>
+    <script src="static/noVNC/core/input/util.js"></script>
+    <script src="static/noVNC/core/input/devices.js"></script>
+    <script src="static/noVNC/core/display.js"></script>
+    <script src="static/noVNC/core/inflator.js"></script>
+    <script src="static/noVNC/core/rfb.js"></script>
+    <script src="static/noVNC/core/input/keysym.js"></script> 
 
     <script type="text/javascript">
         var INCLUDE_URI= "static/noVNC/include/";
diff --git a/static/js/kvmController.js b/static/js/kvmController.js
index b8b442e..d10a223 100644
--- a/static/js/kvmController.js
+++ b/static/js/kvmController.js
@@ -1,12 +1,14 @@
+"use strict";
 angular.module('bmcApp').controller('KvmController', 
 ['$scope', '$location', '$window',
 function($scope, $location, $window) {
 
-
     /*jslint white: false */
     /*global window, $, Util, RFB, */
-    "use strict";
 
+    var desktopName;
+
+    WebUtil.init_logging(WebUtil.getConfigVar('logging', 'debug'));
     var rfb;
     var host = $location.host();
     var port = $location.port();
@@ -22,12 +24,13 @@
                         'onUpdateState':  updateState,
                         //'onXvpInit':    xvpInit,
                         'onFBUComplete': FBUComplete,
-                        'resize': true});
+                        'onDesktopName': updateDesktopName
+                        });
         rfb.connect(host, port, password, path);
     } catch (exc) {
         updateState(null, 'fatal', null, 'Unable to create RFB client -- ' + exc);
         return; // don't continue trying to connect
-    }
+    };
 
     
 
@@ -45,40 +48,58 @@
             if (innerW !== undefined && innerH !== undefined)
                 rfb.requestDesktopSize(innerW, innerH - controlbarH - padding);
         }
-    }
+    };
+    function updateDesktopName(rfb, name) {
+        desktopName = name;
+    };
     function FBUComplete(rfb, fbu) {
         UIresize();
         rfb.set_onFBUComplete(function() { });
-    }
+    };
     function sendCtrlAltDel() {
         rfb.sendCtrlAltDel();
         return false;
-    }
+    };
 
-    function updateState(rfb, state, oldstate, msg) {
-        var s, sb, cad, level;
-        s = angular.element(document.querySelector('#noVNC_status'))[0];
-        sb = angular.element(document.querySelector('#noVNC_status_bar'))[0];
+    function status(text, level) {
+        switch (level) {
+            case 'normal':
+            case 'warn':
+            case 'error':
+                break;
+            default:
+                level = "warn";
+        }
+        angular.element(document.querySelector('#noVNC_status'))[0].textContent = text;
+        angular.element(document.querySelector('#noVNC_status_bar'))[0].setAttribute("class", "noVNC_status_" + level);
+    };
+
+    function updateState(rfb, state, oldstate) {
         switch (state) {
-            case 'failed':       level = "error";  break;
-            case 'fatal':        level = "error";  break;
-            case 'normal':       level = "normal"; break;
-            case 'disconnected': level = "normal"; break;
-            case 'loaded':       level = "normal"; break;
-            default:             level = "warn";   break;
+            case 'connecting':
+                status("Connecting", "normal");
+                break;
+            case 'connected':
+                if (rfb && rfb.get_encrypt()) {
+                    status("Connected (encrypted) to " +
+                            desktopName, "normal");
+                } else {
+                    status("Connected (unencrypted) to " +
+                            desktopName, "normal");
+                }
+                break;
+            case 'disconnecting':
+                status("Disconnecting", "normal");
+                break;
+            case 'disconnected':
+                status("Disconnected", "normal");
+                break;
+            default:
+                status(state, "warn");
+                break;
         }
 
-        if (typeof(msg) !== 'undefined') {
-            // at this point, it's possible the window has already been destroyed, so make sure
-            // the handles exist before writing.
-            if (typeof(sb) !== 'undefined'){
-                sb.setAttribute("class", "noVNC_status_" + level);
-            }
-            if (typeof(sb) !== 'undefined'){
-                s.innerHTML = msg;
-            }
-        }
-    }
+    };
 
     var resizeTimeout;
     $window.onresize = function () {
diff --git a/static/noVNC b/static/noVNC
index 7a16304..b56d975 160000
--- a/static/noVNC
+++ b/static/noVNC
@@ -1 +1 @@
-Subproject commit 7a16304e52b3fbd466337601f05a7def2493c563
+Subproject commit b56d97524807b125d047730331031ddd00f9c61f