incremental
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0a6e3ec..31f672b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -8,17 +8,30 @@
 
 #set(HUNTER_ROOT /home/ed/hunter)
 #SET(HUNTER_STATUS_DEBUG ON)
-include("cmake/HunterGate.cmake")
 
+
+#SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fsanitize=address -fno-omit-frame-pointer -fno-optimize-sibling-calls")
+
+#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")
+include("cmake/HunterGate.cmake")
+#HunterGate(
+#    URL "https://github.com/ruslo/hunter/archive/v0.16.31.tar.gz"
+#    SHA1 "8fcc0a2d6206e1f2c6fc011e3e694e388d030b53"
+#)
 HunterGate(
-    URL "https://github.com/ruslo/hunter/archive/v0.16.31.tar.gz"
-    SHA1 "8fcc0a2d6206e1f2c6fc011e3e694e388d030b53"
+    URL "https://github.com/ruslo/hunter/archive/v0.18.16.tar.gz"
+    SHA1 "6cbca2b0e7605ad8ea22ee3527850996436f71b8"
 )
 
+
 option(BUILD_FOR_EMBEDDED "Build for device target" ON)
 
 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)
 
@@ -32,8 +45,12 @@
 option(BUILD_SHARED_LIBS "Build as shared library" OFF)
 option(BUILD_UT "Enable Unit test" OFF)
 
+# security flags
+#SET(CMAKE_CXX_FLAGS  "${CMAKE_CXX_FLAGS} -fstack-protector-strong -fPIE -fPIC -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security" )
+#SET(CMAKE_EXE_LINKER_FLAGS  "${CMAKE_EXE_LINKER_FLAGS} -z noexecstack -z relro -z now")
+
 # Boost
-add_definitions(-DBOOST_ASIO_ENABLE_HANDLER_TRACKING)
+#add_definitions(-DBOOST_ASIO_ENABLE_HANDLER_TRACKING)
 add_definitions(-DBOOST_ALL_NO_LIB)
 set(Boost_USE_STATIC_LIBS ON)
 hunter_add_package(Boost COMPONENTS system thread)
@@ -49,17 +66,37 @@
 #add_subdirectory(crow)
 
 #g3 logging
-option(ADD_FATAL_EXAMPLE "Disable g3 examples" OFF)
-add_subdirectory(g3log)
-include_directories(g3log/src)
+#option(ADD_FATAL_EXAMPLE "Disable g3 examples" OFF)
+#add_subdirectory(g3log)
+#include_directories(g3log/src)
+# G3logger does some unfortunate compile options, so cheat a little bit and copy/paste
+
+set(LOG_SRC ${CMAKE_CURRENT_SOURCE_DIR}/g3log/src)
+
+file(GLOB_RECURSE SRC_FILES ${LOG_SRC}/*.cpp ${LOG_SRC}/*.ipp)
+file(GLOB_RECURSE HEADER_FILES ${LOG_SRC}/*.hpp)
+
+IF (MSVC OR MINGW)
+        list(REMOVE_ITEM SRC_FILES  ${LOG_SRC}/crashhandler_unix.cpp)
+ELSE()
+        list(REMOVE_ITEM SRC_FILES  ${LOG_SRC}/crashhandler_windows.cpp ${LOG_SRC}/g3log/stacktrace_windows.hpp ${LOG_SRC}/stacktrace_windows.cpp)
+ENDIF (MSVC OR MINGW)
+
+# Create the g3log library
+include_directories(${LOG_SRC})
+#MESSAGE("  g3logger files: [${SRC_FILES}]")
+add_library(g3logger ${SRC_FILES})
+set_target_properties(g3logger PROPERTIES
+    LINKER_LANGUAGE CXX
+    OUTPUT_NAME g3logger
+    CLEAN_DIRECT_OUTPUT 1)
+target_link_libraries(g3logger ${PLATFORM_LINK_LIBRIES})
+SET(G3LOG_LIBRARY g3logger)
 
 #Zlib
 #hunter_add_package(ZLIB)
 #find_package(ZLIB REQUIRED)
 
-# Debug sanitizers
-find_package(Sanitizers)
-
 # C++ GSL (Guideline support libraries)
 include_directories(gsl-lite/include)
 
@@ -76,17 +113,6 @@
     ${CMAKE_BINARY_DIR}/generated/webassets.cpp
 )
 
-if (CMAKE_COMPILER_IS_GNUCC)
-    execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion
-                    OUTPUT_VARIABLE GCC_VERSION)
-    string(REGEX MATCHALL "[0-9]+" GCC_VERSION_COMPONENTS ${GCC_VERSION})
-    list(GET GCC_VERSION_COMPONENTS 0 GCC_MAJOR)
-    list(GET GCC_VERSION_COMPONENTS 1 GCC_MINOR)
-
-    message(STATUS ${GCC_MAJOR})
-    message(STATUS ${GCC_MINOR})
-endif()
-
 set_source_files_properties(${GENERATED_SRC_FILES} PROPERTIES GENERATED TRUE)
 
 set(SRC_FILES
@@ -104,26 +130,8 @@
 
 file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/generated")
 
-# avoid the "narrowing char to X" warning for negative numbers
-# TODO, make the python just do the right thing and turn the number negative
-# Background:  char is faster than unsigned char once compiled, so it is used 
-# extensively in the server for the "byte" type.  Unfortunately, this means that
-# the call std::string s{0xFF} fails, because 0xFF narrows to a negative number.
-# This line simply disables the warning, and the compiler does the right thing
-# we selectively only disable this warning on this specific file
-# http://stackoverflow.com/questions/28094263/create-array-of-chars-avoiding-narrowing
-if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
-    set_source_files_properties(${CMAKE_BINARY_DIR}/generated/webassets.cpp PROPERTIES COMPILE_FLAGS -Wno-c++11-narrowing)
-endif()
-if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
-    if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 5.2)
-        set_source_files_properties(${CMAKE_BINARY_DIR}/generated/webassets.cpp PROPERTIES COMPILE_FLAGS -Wno-narrowing)
-    endif(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 5.2)
-endif()
-
 # Unit Tests
 if(${BUILD_UT})
-
     # big list of naughty strings
     add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/generated/blns.hpp
         COMMAND xxd -i ${CMAKE_CURRENT_SOURCE_DIR}/src/blns.txt ${CMAKE_BINARY_DIR}/generated/blns.hpp)
@@ -134,7 +142,7 @@
 
     add_executable(unittest ${HDR_FILES} ${SRC_FILES} ${UT_FILES})
     target_link_libraries(unittest GTest::GTest GTest::Main)
-    target_link_libraries(unittest ${Boost_LIBRARIES} Boost::system)
+    target_link_libraries(unittest ${BOOST_LIBRARIES} Boost::system Boost::thread)
     target_link_libraries(unittest ${CMAKE_THREAD_LIBS_INIT})
     target_link_libraries(unittest OpenSSL::SSL OpenSSL::Crypto)
     target_link_libraries(unittest g3logger)
@@ -147,16 +155,27 @@
 
 # bmcweb
 add_executable(bmcweb ${WEBSERVER_MAIN} ${HDR_FILES} ${SRC_FILES})
-target_link_libraries(bmcweb ${Boost_LIBRARIES} Boost::system)
+target_link_libraries(bmcweb ${BOOST_LIBRARIES} Boost::system Boost::thread)
 target_link_libraries(bmcweb ${CMAKE_THREAD_LIBS_INIT})
 target_link_libraries(bmcweb OpenSSL::SSL OpenSSL::Crypto)
 target_link_libraries(bmcweb g3logger)
 target_link_libraries(bmcweb ${ZLIB_LIBRARIES})
 add_dependencies(bmcweb packagestaticcpp)
 
+# bmcweb
+#add_definitions(-DBOOST_ALL_NO_LIB)
+add_executable(udpclient src/udpclient.cpp)
+
+target_link_libraries(udpclient Boost::system)
+target_link_libraries(udpclient ${CMAKE_THREAD_LIBS_INIT})
+
+
+add_executable(getvideo src/getvideo_main.cpp)
+
+
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
 
 # 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})
+execute_process(COMMAND python3 ${CMAKE_CURRENT_SOURCE_DIR}/scripts/prime_vscode_compile_db.py ${C_INCLUDE_DIRS})
\ No newline at end of file