incremental
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 37aa601..e80c6c1 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -13,9 +13,17 @@
 
 
 #SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fsanitize=address -fno-omit-frame-pointer -fno-optimize-sibling-calls")
+#-fsanitize-memory-track-origins=2 -fno-omit-frame-pointer
+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(MSAN_CXX_FLAGS "-fsanitize=memory -fsanitize-memory-track-origins=2 -fno-omit-frame-pointer -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")
+#SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${MSAN_CXX_FLAGS}")
+#SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${MSAN_LINKER_EXE_FLAGS}")
+
+
+message("CMAKE_EXE_LINKER_FLAGS=${CMAKE_EXE_LINKER_FLAGS}")
+message("MSAN_CXX_FLAGS=${MSAN_CXX_FLAGS}")
+
 include("cmake/HunterGate.cmake")
 #HunterGate(
 #    URL "https://github.com/ruslo/hunter/archive/v0.16.31.tar.gz"
@@ -31,8 +39,7 @@
 
 project(bmc-webserver CXX C)
 
-SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${MSAN_CXX_FLAGS}")
-SET(CMAKE_EXE_LINKER_FLAGS "${MSAN_LINKER_EXE_FLAGS}")
+
 
 set(CMAKE_CXX_STANDARD 14)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
@@ -55,13 +62,13 @@
 #SET(CMAKE_EXE_LINKER_FLAGS  "${CMAKE_EXE_LINKER_FLAGS} -z noexecstack -z relro -z now")
 
 # Boost
-#add_definitions(-DBOOST_ERROR_CODE_HEADER_ONLY)
 #add_definitions(-DBOOST_ASIO_ENABLE_HANDLER_TRACKING)
-#add_definitions(-DBOOST_ERROR_CODE_HEADER_ONLY)
+add_definitions(-DBOOST_ERROR_CODE_HEADER_ONLY)
+add_definitions(-DBOOST_SYSTEM_NO_DEPRECATED)
 add_definitions(-DBOOST_ALL_NO_LIB)
 set(Boost_USE_STATIC_LIBS ON)
-hunter_add_package(Boost COMPONENTS system thread)
-find_package(Boost REQUIRED system thread REQUIRED)
+hunter_add_package(Boost)
+find_package(Boost)
 
 #Openssl
 hunter_add_package(OpenSSL)
@@ -171,6 +178,8 @@
     src/crow_getroutes_test.cpp
     src/ast_jpeg_decoder_test.cpp
 
+    src/msan_test.cpp
+
     ${CMAKE_BINARY_DIR}/generated/blns.hpp
 )
 
@@ -187,13 +196,13 @@
 
     # googletest
     enable_testing()
-    find_package(GTest REQUIRED)
-    find_package(GMock REQUIRED)
+    #hunter_add_package(GTest)
+    add_subdirectory(googletest)
+    #find_package(GMock CONFIG REQUIRED)
 
     add_executable(unittest ${HDR_FILES} ${SRC_FILES} ${UT_FILES})
-    target_link_libraries(unittest ${GMOCK_BOTH_LIBRARIES})
-    target_link_libraries(unittest Boost::system Boost::thread) 
-    target_link_libraries(unittest ${CMAKE_THREAD_LIBS_INIT})
+    target_link_libraries(unittest gmock gtest)
+    target_link_libraries(unittest pthread)
     target_link_libraries(unittest OpenSSL::SSL OpenSSL::Crypto)
     target_link_libraries(unittest g3logger)
     target_link_libraries(unittest ${ZLIB_LIBRARIES})
@@ -205,8 +214,7 @@
 
 # bmcweb
 add_executable(bmcweb ${WEBSERVER_MAIN} ${HDR_FILES} ${SRC_FILES})
-target_link_libraries(bmcweb  Boost::system Boost::thread)
-target_link_libraries(bmcweb ${CMAKE_THREAD_LIBS_INIT})
+target_link_libraries(bmcweb pthread)
 target_link_libraries(bmcweb OpenSSL::SSL OpenSSL::Crypto)
 target_link_libraries(bmcweb g3logger)
 target_link_libraries(bmcweb ${ZLIB_LIBRARIES})
@@ -214,16 +222,14 @@
 
 # udpclient
 add_executable(udpclient src/udpclient.cpp)
-
-target_link_libraries(udpclient Boost::system)
-target_link_libraries(udpclient ${CMAKE_THREAD_LIBS_INIT})
+target_link_libraries(udpclient pthread)
 
 add_executable(getvideo src/getvideo_main.cpp)
-target_link_libraries(getvideo ${CMAKE_THREAD_LIBS_INIT})
+target_link_libraries(getvideo pthread)
 target_link_libraries(getvideo g3logger)
 
 # Visual Studio Code helper
 # this needs to be at the end to make sure all includes are handled correctly
 
 get_property(C_INCLUDE_DIRS DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES)
-execute_process(COMMAND python3 ${CMAKE_CURRENT_SOURCE_DIR}/scripts/prime_vscode_compile_db.py ${C_INCLUDE_DIRS} ${C_SYSTEM_INCLUDE_DIRS})
\ No newline at end of file
+execute_process(COMMAND python3 ${CMAKE_CURRENT_SOURCE_DIR}/scripts/prime_vscode_compile_db.py ${C_INCLUDE_DIRS})
\ No newline at end of file
diff --git a/include/ast_video_puller.hpp b/include/ast_video_puller.hpp
index de75fdf..214e2df 100644
--- a/include/ast_video_puller.hpp
+++ b/include/ast_video_puller.hpp
@@ -1,7 +1,6 @@
 #pragma once
 
 #include <assert.h>
-//#include <video.h>
 #include <ast_video_types.hpp>
 #include <iostream>
 #include <vector>
@@ -78,11 +77,6 @@
 
     image_info.do_image_refresh = 1;  // full frame refresh
     image_info.qc_valid = 0;          // quick cursor disabled
-    image_info.parameter.features.w = 0;
-    image_info.parameter.features.h = 0;
-    image_info.parameter.features.chrom_tbl = 0;  // level
-    image_info.parameter.features.lumin_tbl = 0;
-    image_info.parameter.features.jpg_fmt = 1;
     image_info.parameter.features.buf =
         reinterpret_cast<unsigned char *>(raw.buffer.data());
     image_info.crypttype = -1;
diff --git a/include/ssl_key_handler.hpp b/include/ssl_key_handler.hpp
index 1c3e8f4..eef4d55 100644
--- a/include/ssl_key_handler.hpp
+++ b/include/ssl_key_handler.hpp
@@ -1,4 +1,5 @@
 #pragma once
+#ifdef CROW_ENABLE_SSL
 
 #include <openssl/bio.h>
 #include <openssl/dh.h>
@@ -191,7 +192,7 @@
   if (myecc) {
     EC_KEY_set_asn1_flag(myecc, OPENSSL_EC_NAMED_CURVE);
     EC_KEY_generate_key(myecc);
-    EVP_PKEY *pKey = EVP_PKEY_new();
+    pKey = EVP_PKEY_new();
     if (pKey) {
       if (EVP_PKEY_assign_EC_KEY(pKey, myecc)) {
         /* pKey owns pRSA from now */
@@ -199,11 +200,7 @@
           fprintf(stderr, "EC_check_key failed.\n");
         }
       }
-      EVP_PKEY_free(pKey);
-      pKey = NULL;
     }
-    EC_KEY_free(myecc);
-    myecc = NULL;
   }
   return pKey;
 }
@@ -314,4 +311,6 @@
   }
   return m_ssl_context;
 }
-}
\ No newline at end of file
+}
+
+#endif
\ No newline at end of file
diff --git a/include/web_kvm.hpp b/include/web_kvm.hpp
index 2512570..62be097 100644
--- a/include/web_kvm.hpp
+++ b/include/web_kvm.hpp
@@ -184,7 +184,7 @@
         if (meta.vnc_state == VncState::UNSTARTED) {
           meta.vnc_state = VncState::AWAITING_CLIENT_VERSION;
           conn.send_binary(rfb_3_8_version_string);
-        } else {
+        } else {  // SHould never happen
           conn.close();
         }
 
@@ -271,7 +271,6 @@
                     auto msg = reinterpret_cast<const frame_buffer_update_req*>(
                         data.data() + sizeof(client_to_server_msg_type));
 
-                    if (!msg->incremental) {
                       // Todo(ed) lifecycle of the video puller and decoder
                       // should be
                       // with the websocket, not recreated every time
@@ -313,7 +312,7 @@
                       auto serialized = serialize(buffer_update_msg);
 
                       conn.send_binary(serialized);
-                    }
+
                   }  // TODO(Ed) handle error
 
                 }
diff --git a/src/getvideo_main.cpp b/src/getvideo_main.cpp
index ad002c3..cd7f09c 100644
--- a/src/getvideo_main.cpp
+++ b/src/getvideo_main.cpp
@@ -11,7 +11,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 
-#define BUILD_CIMG
+//#define BUILD_CIMG
 #ifdef BUILD_CIMG
 #define cimg_display 0
 #include <CImg.h>
diff --git a/src/msan_test.cpp b/src/msan_test.cpp
new file mode 100644
index 0000000..047d3cf
--- /dev/null
+++ b/src/msan_test.cpp
@@ -0,0 +1,7 @@
+#include "gtest/gtest.h"
+#include <string>
+
+TEST(MemorySanitizer, TestIsWorking) {
+  std::string foo("foo");
+  EXPECT_STREQ("foo", foo.c_str());
+}
diff --git a/src/ssl_key_handler_test.cpp b/src/ssl_key_handler_test.cpp
new file mode 100644
index 0000000..818137c
--- /dev/null
+++ b/src/ssl_key_handler_test.cpp
@@ -0,0 +1 @@
+// TODO(ed) WRITE TESTS FOR THIS
\ No newline at end of file
diff --git a/src/webserver_main.cpp b/src/webserver_main.cpp
index 949bdc1..d77d822 100644
--- a/src/webserver_main.cpp
+++ b/src/webserver_main.cpp
@@ -1,7 +1,3 @@
-#include <web_kvm.hpp>
-#include <webassets.hpp>
-#include "ssl_key_handler.hpp"
-
 #include "crow/app.h"
 #include "crow/ci_map.h"
 #include "crow/common.h"
@@ -38,6 +34,10 @@
 #include <string>
 #include <unordered_set>
 
+#include <web_kvm.hpp>
+#include <webassets.hpp>
+#include "ssl_key_handler.hpp"
+
 int main(int argc, char** argv) {
   auto worker(g3::LogWorker::createLogWorker());
   std::string logger_name("bmcweb");
@@ -116,8 +116,7 @@
         conn.send_binary(str);
 
       });
-
-  app.port(18080)
-      //.ssl(std::move(ensuressl::get_ssl_context(ssl_pem_file)))
-      .run();
+  auto ssl_context = ensuressl::get_ssl_context(ssl_pem_file);
+  app.port(18080).ssl(std::move(ssl_context)).run();
 }
+