diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt
index 81ddf56dc84ab8900038e8c42d02b11bc720bcf4..b34703452782aabc89c945b25f30463c3a0d9170 100644
--- a/cpp/CMakeLists.txt
+++ b/cpp/CMakeLists.txt
@@ -29,18 +29,25 @@ else()
 endif()
 
 if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
-  add_definitions(-D_WIN32_WINNT=0x0601)
-  set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Release>:Release>")
-  set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
+  # add_definitions(-D_WIN32_WINNT=0x0601)
+  add_definitions(-D_WIN32_WINNT=0x0A00)
+
+  # set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDLL$<$<CONFIG:Release>:Release>")
+  # set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDLL$<$<CONFIG:Debug>:Debug>")
+
+  set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDLL")
+  if (CMAKE_BUILD_TYPE STREQUAL "Debug")
+    set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDebugDLL")
+  endif()
 
   set(CMAKE_C_FLAGS "/DNDEBUG /DWIN32 /D_WINDOWS /W3")
   set(CMAKE_CXX_FLAGS "/DNDEBUG /DWIN32 /D_WINDOWS /W3 /GR /EHsc")
 
-  set(CMAKE_C_FLAGS_DEBUG "/MTd /Zi /Ob0 /Od /RTC1")
-  set(CMAKE_CXX_FLAGS_DEBUG "/MTd /Zi /Ob0 /Od /RTC1")
+  set(CMAKE_C_FLAGS_DEBUG "/MDd /Zi /Ob0 /Od /RTC1")
+  set(CMAKE_CXX_FLAGS_DEBUG "/MDd /Zi /Ob0 /Od /RTC1")
 
-  set(CMAKE_CXX_FLAGS_RELEASE "/Gd /MT /O2 /Oi /Ot /Gy /Zi /GL")
-  set(CMAKE_C_FLAGS_RELEASE "/Gd /MT /O2 /Oi /Ot /Gy /Zi /GL")
+  set(CMAKE_CXX_FLAGS_RELEASE "/Gd /MD /O2 /Oi /Ot /Gy /Zi /GL")
+  set(CMAKE_C_FLAGS_RELEASE "/Gd /MD /O2 /Oi /Ot /Gy /Zi /GL")
 
   if (CMAKE_BUILD_TYPE STREQUAL "Release")
     set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /DEBUG /OPT:REF /OPT:ICF /LTCG")
@@ -64,7 +71,7 @@ endif()
 
 set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
 
-set(CMAKE_CXX_STANDARD 14)
+set(CMAKE_CXX_STANDARD 17)
 set(CMAKE_CXX_EXTENSIONS OFF)
 
 message("Generator: " "${CMAKE_GENERATOR}")
@@ -81,7 +88,8 @@ message("CXX dll linker flags: " "${CMAKE_SHARED_LINKER_FLAGS}")
 message("CXX static linker flags: " "${CMAKE_STATIC_LINKER_FLAGS}")
 
 string(TOLOWER "${CMAKE_BUILD_TYPE}" _build_type)
-set(VENDOR_INSTALL_DIR ${CMAKE_SOURCE_DIR}/cmake-install-vendor-${_build_type} CACHE STRING "vendor directory")
+set(VENDOR_INSTALL_DIR ${CMAKE_SOURCE_DIR}/cmake-install-vendor-debug CACHE STRING "vendor directory")
+# set(VENDOR_INSTALL_DIR ${CMAKE_SOURCE_DIR}/cmake-install-vendor-${_build_type} CACHE STRING "vendor directory")
 message(STATUS "Using vendor install dir: ${VENDOR_INSTALL_DIR}")
 #set(VENDOR_INSTALL_DIR /home/daniel/workspace/local)
 set(_cmake_prefix_paths
@@ -109,7 +117,7 @@ find_package(
   1.72.0
   EXACT
   REQUIRED
-  COMPONENTS regex thread system
+  COMPONENTS regex thread system date_time
 )
 
 find_package(Protobuf CONFIG REQUIRED)
@@ -161,6 +169,7 @@ message(STATUS "summary of build options:
     EXE_LINKER_FLAGS: ${CMAKE_EXE_LINKER_FLAGS_${_build_type}} ${CMAKE_EXE_LINKER_FLAGS}
     WARNCFLAGS:       ${WARNCFLAGS}
     CXX1XCXXFLAGS:    ${CXX1XCXXFLAGS}
+    CMAKE_MSVC_RUNTIME_LIBRARY: ${CMAKE_MSVC_RUNTIME_LIBRARY}
   Libs:
     fmt:            ${fmt_FOUND} [${fmt_VERSION}] (DIR='${fmt_DIR}')
     OpenSSL:        ${OpenSSL_FOUND} [${OPENSSL_VERSION}] (LIBS='${OPENSSL_LIBRARIES}')
diff --git a/cpp/src/CMakeLists.txt b/cpp/src/CMakeLists.txt
index 20c17f379bea11d4f5fe8d0ab9852508fb70f17f..ed746947b2c7f9315d61f596b12e5d1ebbc8f0f7 100644
--- a/cpp/src/CMakeLists.txt
+++ b/cpp/src/CMakeLists.txt
@@ -2,11 +2,15 @@ if (fmt_FOUND)
   get_target_property(FMT_INCLUDE_DIR fmt::fmt INTERFACE_INCLUDE_DIRECTORIES)
 endif()
 
+if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
+  add_definitions(-DNOGDI)
+endif()
+
 include_directories(
   ${CMAKE_CURRENT_BINARY_DIR}
   ${CMAKE_SOURCE_DIR}/src
   ${VENDOR_INSTALL_DIR}/include
-  ${VENDOR_INSTALL_DIR}/boost/include
+  ${Boost_INCLUDE_DIRS}
   ${FMT_INCLUDE_DIR}
   ${CMAKE_SOURCE_DIR}/proto/cpp
 )
@@ -55,7 +59,10 @@ list(APPEND VEREIGNLIB_SRC ${GENERATED_SERVICES_SRC})
 
 add_library(vereignlib STATIC ${VEREIGNLIB_SRC})
 set_property(TARGET vereignlib PROPERTY POSITION_INDEPENDENT_CODE ON)
-target_link_libraries(vereignlib PRIVATE nlohmann_json::nlohmann_json)
+target_link_libraries(vereignlib PRIVATE
+  nlohmann_json::nlohmann_json
+  fmt::fmt
+)
 target_link_libraries(vereignlib PUBLIC
   vereignproto
   gRPC::grpc++_reflection
@@ -68,7 +75,14 @@ add_library(vereign SHARED
 target_include_directories(vereign
   PRIVATE ${CMAKE_SOURCE_DIR}/include
 )
-target_link_libraries(vereign PRIVATE vereignlib)
+target_link_libraries(vereign PRIVATE
+  vereignlib
+  $<$<CXX_COMPILER_ID:MSVC>:Boost::date_time>
+)
+if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
+  # Set the DLLEXPORT variable to export symbols
+  target_compile_definitions(vereign PRIVATE WIN_EXPORT)
+endif()
 
 set(csandbox_sources
   csandbox.cc
@@ -80,7 +94,10 @@ set(csandbox_sources
 add_executable(csandbox ${csandbox_sources})
 
 target_link_libraries(csandbox
-  vereign
+  PRIVATE vereignlib
+  $<$<CXX_COMPILER_ID:MSVC>:Boost::date_time>
+  # Boost::thread
+  # vereign
   # fmt::fmt
   # Boost::regex
   # Threads::Threads
diff --git a/cpp/src/csandbox.cc b/cpp/src/csandbox.cc
index 7a1eb95ff82436b8f836f9d8e2bdf1e73651a087..561cf2123f21bd6b5ad1a9b6858d2fb5b2e83a7d 100644
--- a/cpp/src/csandbox.cc
+++ b/cpp/src/csandbox.cc
@@ -1,6 +1,4 @@
-#include <iostream>
 
 auto main(int argc, char* argv[]) -> int {
-  std::cout << "hello" << std::endl;
   return 0;
 }
diff --git a/cpp/src/vereign/restapi/post_result.hh b/cpp/src/vereign/restapi/post_result.hh
index 6d31f5bebb217b9c79d28435f5617a56a3607c81..a975f0efdac8f4fb509d45918bc7a5cf3d31cd56 100644
--- a/cpp/src/vereign/restapi/post_result.hh
+++ b/cpp/src/vereign/restapi/post_result.hh
@@ -12,12 +12,18 @@ struct PostResult {
   RequestPtr Request;
   ResponsePtr Response;
 
+  PostResult()
+    : Request{nullptr},
+      Response{nullptr}
+  {}
+
   PostResult(RequestPtr req, ResponsePtr resp)
     : Request{std::move(req)},
       Response{std::move(resp)}
   {}
 
   PostResult(PostResult&& other) = default;
+  PostResult& operator=(PostResult&& other) = default;
 
   PostResult(const PostResult&) = delete;
   PostResult& operator=(const PostResult&) = delete;
diff --git a/cpp/tests/integration/integration_test.cc b/cpp/tests/integration/integration_test.cc
index d89c6d269ff7a2bbdbcf86536e6a9575cd03fb7e..dddb58fa3515807d80a07f9d4207412efd73f091 100644
--- a/cpp/tests/integration/integration_test.cc
+++ b/cpp/tests/integration/integration_test.cc
@@ -107,7 +107,7 @@ TEST_CASE("vereign_service_start") {
   SECTION("invalid listen address") {
     vereign_error* err = nullptr;
     auto service = vereign_service_start(
-      "invalid",
+      "##$$",
       "",
       "",
       "",
diff --git a/cpp/vendor/CMakeLists.txt b/cpp/vendor/CMakeLists.txt
index 79268ffee9146d86480b59163c23d1ff08175689..3f640200fd7ac829980764522cbbad5e728c7b36 100644
--- a/cpp/vendor/CMakeLists.txt
+++ b/cpp/vendor/CMakeLists.txt
@@ -1,26 +1,29 @@
 cmake_minimum_required (VERSION 3.16.5)
 
-if(WIN32)
+if (WIN32)
   set(CMAKE_IGNORE_PATH "C:/Strawberry/c/bin")
 endif()
 
 project (vereign-vendor)
 
-if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
+if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
   add_definitions(-D_WIN32_WINNT=0x0601)
 
   set(CMAKE_C_FLAGS "/DNDEBUG /DWIN32 /D_WINDOWS /W3")
   set(CMAKE_CXX_FLAGS "/DNDEBUG /DWIN32 /D_WINDOWS /W3 /GR /EHsc")
 
-  set(CMAKE_C_FLAGS_DEBUG "/MTd /Zi /Ob0 /Od /RTC1")
-  set(CMAKE_CXX_FLAGS_DEBUG "/MTd /Zi /Ob0 /Od /RTC1")
+  set(CMAKE_C_FLAGS_DEBUG "/MDd /Zi /Ob0 /Od /RTC1")
+  set(CMAKE_CXX_FLAGS_DEBUG "/MDd /Zi /Ob0 /Od /RTC1")
 
-  set(CMAKE_CXX_FLAGS_RELEASE "/Gd /MT /O2 /Oi /Ot /Gy /Zi /GL")
-  set(CMAKE_C_FLAGS_RELEASE "/Gd /MT /O2 /Oi /Ot /Gy /Zi /GL")
+  set(CMAKE_CXX_FLAGS_RELEASE "/Gd /MD /O2 /Oi /Ot /Gy /Zi /GL")
+  set(CMAKE_C_FLAGS_RELEASE "/Gd /MD /O2 /Oi /Ot /Gy /Zi /GL")
 
-  set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded")
-  if(CMAKE_BUILD_TYPE STREQUAL "Debug")
-    set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDebug")
+  set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Release>:Release>")
+  set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
+
+  set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDLL")
+  if (CMAKE_BUILD_TYPE STREQUAL "Debug")
+    set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDebugDLL")
   endif()
 endif()
 
diff --git a/cpp/vendor/boost.cmake b/cpp/vendor/boost.cmake
index e0dfc1cea5f55db13e8fff25727588509cca87b9..430902d781c72e6b107b4709b13a84f7160a1220 100644
--- a/cpp/vendor/boost.cmake
+++ b/cpp/vendor/boost.cmake
@@ -1,6 +1,6 @@
 include(ExternalProject)
 
-set(_boost_libs regex system thread)
+set(_boost_libs regex system thread date_time)
 
 if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
   list(TRANSFORM _boost_libs PREPEND --with-)
diff --git a/cpp/vendor/grpc.cmake b/cpp/vendor/grpc.cmake
index db85269d94247a04ae1519e97730bffd8b9bedb8..a33a809c38cf41bcf9c0136dc51fab3f9bb4176a 100644
--- a/cpp/vendor/grpc.cmake
+++ b/cpp/vendor/grpc.cmake
@@ -18,6 +18,13 @@ ExternalProject_Add(grpclib
   -DCMAKE_CXX_COMPILER:STRING=${CMAKE_CXX_COMPILER}
   -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
   -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
+  -DCMAKE_MSVC_RUNTIME_LIBRARY:STRING=${CMAKE_MSVC_RUNTIME_LIBRARY}
+  -DCMAKE_C_FLAGS:STRING=${CMAKE_C_FLAGS}
+  -DCMAKE_CXX_FLAGS:STRING=${CMAKE_CXX_FLAGS}
+  -DCMAKE_C_FLAGS_DEBUG:STRING=${CMAKE_C_FLAGS_DEBUG}
+  -DCMAKE_CXX_FLAGS_DEBUG:STRING=${CMAKE_CXX_FLAGS_DEBUG}
+  -DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE}
+  -DCMAKE_CXX_FLAGS_RELEASE:STRING=${CMAKE_CXX_FLAGS_RELEASE}
   -DBUILD_SHARED_LIBS:BOOL=OFF
   -DgRPC_SSL_PROVIDER:STRING=package
   -DOPENSSL_USE_STATIC_LIBS:BOOL=ON