incremetnal
diff --git a/static/CMakeLists.txt b/static/CMakeLists.txt
index 58bfdbb..b7371d1 100644
--- a/static/CMakeLists.txt
+++ b/static/CMakeLists.txt
@@ -1,15 +1,3 @@
-set(HTML_ASSETS
-    hello.html
-    login.html
-    partial-eventlog.html
-    partial-fruinfo.html
-    partial-home-list.html
-    partial-kvm.html
-    partial-systeminfo.html
-    websocket.html
-)
-
-
 set(JAVASCRIPT_ASSETS
     js/selController.js
     js/lodash.core.js
@@ -19,6 +7,7 @@
     js/angular-ui-router.js
     js/restangular.js
     js/kvm-controller.js
+    js/logincontroller.js
     js/angular-resource.js
     js/angular-sanitize.js
     js/bmcApp.js
@@ -54,29 +43,65 @@
     css/font-awesome.css
     css/bootstrap-theme.css
     css/prettify.css
-    noVNC/tests/viewport.css
     noVNC/include/base.css
     noVNC/include/blue.css
     noVNC/include/black.css
 )
 
+set(HTML_ASSETS
+    index.html
+    login.html
+    partial-eventlog.html
+    partial-fruinfo.html
+    partial-home-list.html
+    partial-kvm.html
+    partial-systeminfo.html
+    websocket.html
+)
+
+set(IMG_ASSETS
+    img/logo.png
+)
+
 set(STATIC_ASSETS_OUT "")
 foreach(JAVASCRIPT_ASSET ${JAVASCRIPT_ASSETS})
-    set(OUTPUT_FILENAME ${CMAKE_CURRENT_BINARY_DIR}/${JAVASCRIPT_ASSET})
-    get_filename_component(FOLDERNAME ${OUTPUT_FILENAME} DIRECTORY)
-    file(MAKE_DIRECTORY "${FOLDERNAME}")
-    # TODO only minify if not a debug build
-    add_custom_command(OUTPUT ${OUTPUT_FILENAME} 
-        COMMAND closure-compiler --language_in=ECMASCRIPT5
-        --js  "${CMAKE_CURRENT_SOURCE_DIR}/${JAVASCRIPT_ASSET}"
-        --js_output_file "${CMAKE_CURRENT_BINARY_DIR}/${JAVASCRIPT_ASSET}"
+    # if it's a debug build, don't minify
+    if (CMAKE_BUILD_TYPE STREQUAL "Debug")
+        list(APPEND STATIC_ASSETS_OUT ${CMAKE_CURRENT_SOURCE_DIR}/${JAVASCRIPT_ASSET})
+    else()
+        set(OUTPUT_FILENAME ${CMAKE_CURRENT_BINARY_DIR}/${JAVASCRIPT_ASSET})
+        get_filename_component(FOLDERNAME ${OUTPUT_FILENAME} DIRECTORY)
+        file(MAKE_DIRECTORY "${FOLDERNAME}")
+        # TODO only minify if not a debug build
+        add_custom_command(OUTPUT ${OUTPUT_FILENAME} 
+            COMMAND closure-compiler --language_in=ECMASCRIPT5
+            --js  "${CMAKE_CURRENT_SOURCE_DIR}/${JAVASCRIPT_ASSET}"
+            --js_output_file "${CMAKE_CURRENT_BINARY_DIR}/${JAVASCRIPT_ASSET}"
 
-        DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/${JAVASCRIPT_ASSET}"
-        COMMENT "Minifying ${JAVASCRIPT_ASSET}"
-    )
-    list(APPEND STATIC_ASSETS_OUT ${CMAKE_CURRENT_BINARY_DIR}/${JAVASCRIPT_ASSET})
+            DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/${JAVASCRIPT_ASSET}"
+            COMMENT "Minifying ${JAVASCRIPT_ASSET}"
+        )
+        list(APPEND STATIC_ASSETS_OUT ${CMAKE_CURRENT_BINARY_DIR}/${JAVASCRIPT_ASSET})
+    endif (CMAKE_BUILD_TYPE STREQUAL "Debug")
 endforeach(JAVASCRIPT_ASSET)
 
+# for now CSS is included as is
+foreach(CSS_ASSET ${CSS_ASSETS})
+    list(APPEND STATIC_ASSETS_OUT ${CMAKE_CURRENT_SOURCE_DIR}/${CSS_ASSET})
+endforeach(CSS_ASSET)
+
+# for now HTML is included as is
+foreach(HTML_ASSET ${HTML_ASSETS})
+    list(APPEND STATIC_ASSETS_OUT ${CMAKE_CURRENT_SOURCE_DIR}/${HTML_ASSET})
+endforeach(HTML_ASSET)
+
+# for now IMG is included as is
+foreach(IMG_ASSET ${IMG_ASSETS})
+    list(APPEND STATIC_ASSETS_OUT ${CMAKE_CURRENT_SOURCE_DIR}/${IMG_ASSET})
+endforeach(IMG_ASSET)
+
+message(STATIC_ASSETS_OUT ${CMAKE_CURRENT_BINARY_DIR}/${STATIC_ASSETS_OUT})
+
 add_custom_target(minifyjs ALL DEPENDS ${STATIC_ASSETS_OUT})
 
 set(CXX_STATIC_ASSETS_OUTPUT_FILE ${CMAKE_BINARY_DIR}/generated/webassets.cpp)
diff --git a/static/hello.html b/static/index.html
similarity index 95%
rename from static/hello.html
rename to static/index.html
index c536317..14b22df 100644
--- a/static/hello.html
+++ b/static/index.html
@@ -7,7 +7,7 @@
     <meta name="viewport" content="width=device-width, initial-scale=1">
     <title>Integrated BMC Console</title>
 
-    <link href="css/bootstrap.min.css" rel="stylesheet">
+    <link href="css/bootstrap.css" rel="stylesheet">
     <link href="css/font-awesome.css" rel="stylesheet" >  
     <link href="css/intel.css" rel="stylesheet">
 
@@ -18,15 +18,16 @@
     <script src="js/angular-sanitize.js"></script>
     <script src="js/angular-cookies.js"></script>
     <script src="js/angular-resource.js"></script>
-    <script src="js/angular-ui-router.min.js"></script>
-    <script src="js/lodash.min.js"></script>
-    <script src="js/restangular.min.js"></script>
+    <script src="js/angular-ui-router.js"></script>
+    <script src="js/lodash.core.js"></script>
+    <script src="js/restangular.js"></script>
     <script src="js/ui-bootstrap-tpls-2.1.3.js"></script>
     <script src="js/bmcApp.js"></script>
     <script src="js/versionController.js"></script>
     <script src="js/selController.js"></script>
+    <script src="js/logincontroller.js"></script>
     <script src="js/kvm-controller.js"></script>
-    <script src="js/angular-websocket.min.js"></script>
+    <script src="js/angular-websocket.js"></script>
     <script src="js/kvm-controller.js"></script>
     <script src="noVNC/include/util.js"></script>
 
diff --git a/static/js/bmcApp.js b/static/js/bmcApp.js
index dfd4d4b..7392c47 100644
--- a/static/js/bmcApp.js
+++ b/static/js/bmcApp.js
@@ -130,42 +130,6 @@
 angular
     .module('Authentication')
 
-    .controller('LoginController', [
-      '$scope', '$rootScope', '$location', '$state', 'AuthenticationService',
-      function($scope, $rootScope, $location, $state, AuthenticationService) {
-        $scope.logoutreason = AuthenticationService.logoutreason;
-
-        $scope.login = function() {
-          $scope.dataLoading = true;
-          AuthenticationService.Login(
-              $scope.username, $scope.password,
-              function(response) {
-                AuthenticationService.SetCredentials(
-                    $scope.username, response.token);
-                if (typeof $state.after_login_state === "undefined") {
-                  $state.after_login_state = "systeminfo";
-                }
-                $state.go($state.after_login_state);
-                delete $state.after_login_state;
-
-              },
-              function(response) {
-                if (response.status === 401) {
-                  // reset login status
-                  AuthenticationService.ClearCredentials(
-                      "Username or Password is incorrect");
-                }
-                $scope.logoutreason = AuthenticationService.logoutreason;
-                $scope.error = response.message;
-                $scope.dataLoading = false;
-              });
-        };
-      }
-    ]);
-
-angular
-    .module('Authentication')
-
     .factory(
         'AuthenticationService',
         [
diff --git a/static/js/logincontroller.js b/static/js/logincontroller.js
new file mode 100644
index 0000000..d0b7a7f
--- /dev/null
+++ b/static/js/logincontroller.js
@@ -0,0 +1,32 @@
+angular.module('Authentication').controller('LoginController', [
+    '$scope', '$rootScope', '$location', '$state', 'AuthenticationService',
+    function($scope, $rootScope, $location, $state, AuthenticationService) {
+    $scope.logoutreason = AuthenticationService.logoutreason;
+
+    $scope.login = function() {
+        $scope.dataLoading = true;
+        AuthenticationService.Login(
+            $scope.username, $scope.password,
+            function(response) {
+            AuthenticationService.SetCredentials(
+                $scope.username, response.token);
+            if (typeof $state.after_login_state === "undefined") {
+                $state.after_login_state = "systeminfo";
+            }
+            $state.go($state.after_login_state);
+            delete $state.after_login_state;
+
+            },
+            function(response) {
+            if (response.status === 401) {
+                // reset login status
+                AuthenticationService.ClearCredentials(
+                    "Username or Password is incorrect");
+            }
+            $scope.logoutreason = AuthenticationService.logoutreason;
+            $scope.error = response.message;
+            $scope.dataLoading = false;
+            });
+    };
+    }
+]);
\ No newline at end of file
diff --git a/static/js/run_prettify.js b/static/js/run_prettify.js
index 1aab571..8204930 100644
--- a/static/js/run_prettify.js
+++ b/static/js/run_prettify.js
@@ -31,7 +31,7 @@
 (function(){function ba(g){function k(){try{M.doScroll("left")}catch(g){t.setTimeout(k,50);return}z("poll")}function z(k){if("readystatechange"!=k.type||"complete"==A.readyState)("load"==k.type?t:A)[B](p+k.type,z,!1),!q&&(q=!0)&&g.call(t,k.type||k)}var Y=A.addEventListener,q=!1,C=!0,x=Y?"addEventListener":"attachEvent",B=Y?"removeEventListener":"detachEvent",p=Y?"":"on";if("complete"==A.readyState)g.call(t,"lazy");else{if(A.createEventObject&&M.doScroll){try{C=!t.frameElement}catch(da){}C&&k()}A[x](p+
 "DOMContentLoaded",z,!1);A[x](p+"readystatechange",z,!1);t[x](p+"load",z,!1)}}function U(){V&&ba(function(){var g=N.length;ca(g?function(){for(var k=0;k<g;++k)(function(g){t.setTimeout(function(){t.exports[N[g]].apply(t,arguments)},0)})(k)}:void 0)})}for(var t=window,A=document,M=A.documentElement,O=A.head||A.getElementsByTagName("head")[0]||M,B="",F=A.getElementsByTagName("script"),q=F.length;0<=--q;){var P=F[q],Z=P.src.match(/^[^?#]*\/run_prettify\.js(\?[^#]*)?(?:#.*)?$/);if(Z){B=Z[1]||"";P.parentNode.removeChild(P);
 break}}var V=!0,H=[],Q=[],N=[];B.replace(/[?&]([^&=]+)=([^&]+)/g,function(g,k,z){z=decodeURIComponent(z);k=decodeURIComponent(k);"autorun"==k?V=!/^[0fn]/i.test(z):"lang"==k?H.push(z):"skin"==k?Q.push(z):"callback"==k&&N.push(z)});q=0;for(B=H.length;q<B;++q)(function(){var g=A.createElement("script");g.onload=g.onerror=g.onreadystatechange=function(){!g||g.readyState&&!/loaded|complete/.test(g.readyState)||(g.onerror=g.onload=g.onreadystatechange=null,--T,T||t.setTimeout(U,0),g.parentNode&&g.parentNode.removeChild(g),
-g=null)};g.type="text/javascript";g.src="../static/css/loader/lang-"+encodeURIComponent(H[q])+".js";O.insertBefore(g,O.firstChild)})(H[q]);for(var T=H.length,F=[],q=0,B=Q.length;q<B;++q)F.push("https://cdn.rawgit.com/google/code-prettify/master/loader/skins/"+encodeURIComponent(Q[q])+".css");F.push("../static/css/prettify.css");(function(g){function k(q){if(q!==z){var t=A.createElement("link");t.rel="stylesheet";t.type=
+g=null)};g.type="text/javascript";g.src="../css/loader/lang-"+encodeURIComponent(H[q])+".js";O.insertBefore(g,O.firstChild)})(H[q]);for(var T=H.length,F=[],q=0,B=Q.length;q<B;++q)F.push("https://cdn.rawgit.com/google/code-prettify/master/loader/skins/"+encodeURIComponent(Q[q])+".css");F.push("../css/prettify.css");(function(g){function k(q){if(q!==z){var t=A.createElement("link");t.rel="stylesheet";t.type=
 "text/css";q+1<z&&(t.error=t.onerror=function(){k(q+1)});t.href=g[q];O.appendChild(t)}}var z=g.length;k(0)})(F);var ca=function(){window.PR_SHOULD_USE_CONTINUATION=!0;var g;(function(){function k(a){function d(e){var b=e.charCodeAt(0);if(92!==b)return b;var a=e.charAt(1);return(b=W[a])?b:"0"<=a&&"7">=a?parseInt(e.substring(1),8):"u"===a||"x"===a?parseInt(e.substring(2),16):e.charCodeAt(1)}function f(e){if(32>e)return(16>e?"\\x0":"\\x")+e.toString(16);e=String.fromCharCode(e);return"\\"===e||"-"===
 e||"]"===e||"^"===e?"\\"+e:e}function b(e){var b=e.substring(1,e.length-1).match(/\\u[0-9A-Fa-f]{4}|\\x[0-9A-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\s\S]|-|[^-\\]/g);e=[];var a="^"===b[0],c=["["];a&&c.push("^");for(var a=a?1:0,h=b.length;a<h;++a){var l=b[a];if(/\\[bdsw]/i.test(l))c.push(l);else{var l=d(l),n;a+2<h&&"-"===b[a+1]?(n=d(b[a+2]),a+=2):n=l;e.push([l,n]);65>n||122<l||(65>n||90<l||e.push([Math.max(65,l)|32,Math.min(n,90)|32]),97>n||122<l||e.push([Math.max(97,l)&-33,Math.min(n,122)&-33]))}}e.sort(function(e,
 a){return e[0]-a[0]||a[1]-e[1]});b=[];h=[];for(a=0;a<e.length;++a)l=e[a],l[0]<=h[1]+1?h[1]=Math.max(h[1],l[1]):b.push(h=l);for(a=0;a<b.length;++a)l=b[a],c.push(f(l[0])),l[1]>l[0]&&(l[1]+1>l[0]&&c.push("-"),c.push(f(l[1])));c.push("]");return c.join("")}function g(e){for(var a=e.source.match(/(?:\[(?:[^\x5C\x5D]|\\[\s\S])*\]|\\u[A-Fa-f0-9]{4}|\\x[A-Fa-f0-9]{2}|\\[0-9]+|\\[^ux0-9]|\(\?[:!=]|[\(\)\^]|[^\x5B\x5C\(\)\^]+)/g),c=a.length,d=[],h=0,l=0;h<c;++h){var n=a[h];"("===n?++l:"\\"===n.charAt(0)&&(n=