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
