incremental
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1fc7796..e9b3e75 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,7 +1,5 @@
 cmake_minimum_required(VERSION 2.8.10 FATAL_ERROR)
 
-cmake_policy(SET CMP0054 OLD)
-
 set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
 
 message("${CMAKE_MODULE_PATH}")
@@ -10,27 +8,18 @@
 
 #SET(HUNTER_STATUS_DEBUG ON)
 
-#SET(MSAN_CXX_FLAGS "-fsanitize=memory -stdlib=libc++ -I/home/ed/libcxx_msan/include -I/home/ed/libcxx_msan/include/c++/v1")
-#SET(MSAN_LINKER_EXE_FLAGS "${MSAN_CXX_FLAGS} -lc++abi -L/home/ed/libcxx_msan/lib -Wl,-rpath,I/home/ed/libcxx_msan/lib")
-
-#SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${MSAN_CXX_FLAGS}")
-#SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${MSAN_LINKER_EXE_FLAGS}")
 
 # Debug information
 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -fno-omit-frame-pointer")
 
 #SET(CMAKE_CXX_FLAGS  "${CMAKE_CXX_FLAGS} -fno-rtti")
 #SET(CMAKE_C_FLAGS  "${CMAKE_C_FLAGS} -fno-rtti")
-
 include("cmake/HunterGate.cmake")
 HunterGate(
     URL "https://github.com/ruslo/hunter/archive/v0.18.44.tar.gz"
     SHA1 "a78f0b377b8e53c038f12fc18b0c02564c4534c8"
 )
 
-
-option(BUILD_FOR_EMBEDDED "Build for device target" ON)
-
 project(bmc-webserver CXX C)
 
 set(CMAKE_CXX_STANDARD 14)
@@ -38,10 +27,52 @@
 
 set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
 
+if (MSAN)
+  if(NOT CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+    message(FATAL_ERROR "Cannot enable MSAN unless using Clang")
+  endif()
+
+  if (ASAN)
+    message(FATAL_ERROR "ASAN and MSAN are mutually exclusive")
+  endif()
+
+  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${MSAN_CXX_FLAGS}")
+  SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${MSAN_LINKER_EXE_FLAGS}")
+
+  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=memory -fsanitize-memory-track-origins -fno-omit-frame-pointer")
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=memory -fsanitize-memory-track-origins -fno-omit-frame-pointer")
+  set(OPENSSL_NO_ASM "1")
+  set(LIBC++ ON)
+endif()
+
+if (ASAN)
+  if(NOT CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+    message(FATAL_ERROR "Cannot enable ASAN unless using Clang")
+  endif()
+
+  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fsanitize-address-use-after-scope -fno-omit-frame-pointer")
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fsanitize-address-use-after-scope -fno-omit-frame-pointer")
+  set(OPENSSL_NO_ASM "1")
+endif()
+
+if (GCOV)
+  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fprofile-arcs -ftest-coverage")
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage")
+endif()
+
 if ( ${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR} )
     message( FATAL_ERROR "In-source builds not allowed. Please make a new directory (usually called build) and run CMake from there. You may need to remove CMakeCache.txt." )
 endif()
 
+if(LIBC++)
+  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
+  SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lc++abi")
+  if (MSAN)
+    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I/home/ed/libcxx_msan/include -I/home/ed/libcxx_msan/include/c++/v1")
+    SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L/home/ed/libcxx_msan/lib -Wl,-rpath,I/home/ed/libcxx_msan/lib")
+  endif(MSAN)
+endif(LIBC++)
+
 # general
 option(BUILD_SHARED_LIBS "Build as shared library" OFF)
 option(BUILD_UT "Enable Unit test" ON)
@@ -61,8 +92,8 @@
 add_definitions(-DBOOST_SYSTEM_NO_DEPRECATED)
 add_definitions(-DBOOST_ALL_NO_LIB)
 set(Boost_USE_STATIC_LIBS ON)
-hunter_add_package(Boost COMPONENTS system)
-find_package(Boost COMPONENTS system)
+hunter_add_package(Boost)
+find_package(Boost)
 
 #Openssl
 hunter_add_package(OpenSSL)
@@ -92,12 +123,6 @@
     set_source_files_properties(g3log/src/logworker.cpp PROPERTIES COMPILE_FLAGS -Wno-braced-scalar-init)
 endif()
 
-set_target_properties(g3logger PROPERTIES
-    LINKER_LANGUAGE CXX
-    OUTPUT_NAME g3logger
-    CLEAN_DIRECT_OUTPUT 1)
-target_link_libraries(g3logger ${PLATFORM_LINK_LIBRIES})
-
 #lib jpeg
 set(BUILD_STATIC ON)
 #include_directories(libjpeg)
@@ -212,7 +237,6 @@
 add_executable(bmcweb ${WEBSERVER_MAIN} ${HDR_FILES} ${SRC_FILES})
 target_link_libraries(bmcweb pthread)
 target_link_libraries(bmcweb OpenSSL::SSL OpenSSL::Crypto)
-target_link_libraries(bmcweb Boost::system)
 target_link_libraries(bmcweb g3logger)
 target_link_libraries(bmcweb ${ZLIB_LIBRARIES})
 add_dependencies(bmcweb packagestaticcpp)
diff --git a/include/web_kvm.hpp b/include/web_kvm.hpp
index df0bef5..10291ca 100644
--- a/include/web_kvm.hpp
+++ b/include/web_kvm.hpp
@@ -1,6 +1,6 @@
+#include <string>
 #include <crow/app.h>
 #include <boost/endian/arithmetic.hpp>
-#include <string>
 
 #include <ast_jpeg_decoder.hpp>
 #include <ast_video_puller.hpp>
@@ -51,12 +51,11 @@
   client_cut_text = 6
 };
 
-enum class server_to_client_message_type : uint8_t
-{
-    framebuffer_update = 0,
-    set_color_map_entries = 1,
-    bell_message = 2,
-    server_cut_text = 3
+enum class server_to_client_message_type : uint8_t {
+  framebuffer_update = 0,
+  set_color_map_entries = 1,
+  bell_message = 2,
+  server_cut_text = 3
 };
 
 struct set_pixel_format_msg {
@@ -143,8 +142,9 @@
   std::string serialized(vector_size, 0);
 
   size_t i = 0;
-  serialized[i++] = static_cast<char>(server_to_client_message_type::framebuffer_update);  // Type
-  serialized[i++] = 0;  // Pad byte
+  serialized[i++] = static_cast<char>(
+      server_to_client_message_type::framebuffer_update);  // Type
+  serialized[i++] = 0;                                     // Pad byte
   boost::endian::big_uint16_t number_of_rectangles = msg.rectangles.size();
   std::memcpy(&serialized[i], &number_of_rectangles,
               sizeof(number_of_rectangles));
diff --git a/static/noVNC b/static/noVNC
index b56d975..b69dda9 160000
--- a/static/noVNC
+++ b/static/noVNC
@@ -1 +1 @@
-Subproject commit b56d97524807b125d047730331031ddd00f9c61f
+Subproject commit b69dda9b19f538c648cb11faddc50f30b93bac47