diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6421c173afc6dbe7fc5cf4dae7755148befae3b0..f7d0f9261d890e3c3b9672386116149c5865dd64 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -8,7 +8,7 @@ set(CMAKE_C_STANDARD 11)
 SET( CPACK_PACKAGE_NAME  "${PROJECT_NAME}")
 SET( CPACK_PACKAGE_VERSION_MAJOR 4)
 SET( CPACK_PACKAGE_VERSION_MINOR 3)
-SET( CPACK_PACKAGE_VERSION_PATCH 25)
+SET( CPACK_PACKAGE_VERSION_PATCH 27)
 
 #
 # init CellFrame SDK
@@ -16,18 +16,22 @@ SET( CPACK_PACKAGE_VERSION_PATCH 25)
 #
 add_definitions("-DDAP_VERSION=\"${CPACK_PACKAGE_VERSION_MAJOR}-${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}\"")
 set(SUBMODULES_NO_BUILD ON)
-
-if (NOT(WIN32))
-    set(CELLFRAME_MODULES "core chains mining network srv cs-blocks cs-dag-poa cs-dag-pos cs-none srv-app srv-app-db srv-datum srv-stake srv-xchange modules-dynamic srv-vpn")
-else()
-    set(CELLFRAME_MODULES "core chains mining network srv cs-blocks cs-dag-poa cs-block-poa cs-dag-pos cs-none srv-app srv-app-db srv-datum srv-stake srv-xchange modules-dynamic")
-endif()
+include (cellframe-sdk/cmake/OS_Detection.cmake)
 
 if(BUILD_WITH_GDB_DRIVER_MDBX)
 add_subdirectory(3rdparty/libmdbx)
 endif()
 
-include (cellframe-sdk/cmake/OS_Detection.cmake)
+if (WIN32)
+    set(CELLFRAME_MODULES "core chains mining network srv cs-blocks cs-dag-poa cs-block-poa cs-dag-pos cs-none srv-app srv-app-db srv-datum srv-stake srv-xchange modules-dynamic")
+elseif(BSD)
+    set(CELLFRAME_MODULES "core chains mining network srv cs-blocks cs-dag-poa cs-block-poa cs-dag-pos cs-none srv-app srv-app-db srv-datum srv-stake srv-xchange modules-dynamic")
+elseif(ANDROID)    
+    set(CELLFRAME_MODULES "core chains mining network srv cs-blocks cs-dag-poa cs-block-poa cs-dag-pos cs-none srv-app srv-app-db srv-datum srv-stake srv-xchange")
+elseif(LINUX)
+    set(CELLFRAME_MODULES "core chains mining network srv cs-blocks cs-dag-poa cs-block-poa cs-dag-pos cs-none srv-app srv-app-db srv-datum srv-stake srv-xchange modules-dynamic srv-vpn")
+endif()
+
 add_subdirectory(cellframe-sdk)
 
 
@@ -127,7 +131,10 @@ endif()
 
 if(UNIX AND NOT WIN32)
     set_property(TARGET ${PROJECT_NAME} APPEND_STRING PROPERTY LINK_FLAGS "-D_GNU_SOURCE")
-    set(NODE_LIBRARIES cellframe-sdk )
+
+    # the `pkg_check_modules` function is created with this call
+    
+    set(NODE_LIBRARIES cellframe-sdk ${JSONC_LIBRARIES} )
 
     set(NODE_CLI_LIBRARIES m dap_chain_net dap_cuttdb dap_app_cli)
 
@@ -161,6 +168,8 @@ endif()
 
 target_include_directories(${PROJECT_NAME} INTERFACE .)
 
+
+
 if(NOT ANDROID)
     target_include_directories(${NODE_CLI_TARGET} INTERFACE .)
     target_include_directories(${NODE_TOOL_TARGET} INTERFACE .)
diff --git a/cmake/OS_Detection.cmake b/cmake/OS_Detection.cmake
deleted file mode 100644
index fe97e43b0201aa877fbebf8a1527089e54b6523f..0000000000000000000000000000000000000000
--- a/cmake/OS_Detection.cmake
+++ /dev/null
@@ -1,124 +0,0 @@
-if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
-    set(OS_TYPE_DESKTOP ON)
-    set(LINUX ON)
-    set(UNIX ON)
-    EXECUTE_PROCESS( COMMAND cat /etc/os-release COMMAND grep VERSION_CODENAME COMMAND sed s/VERSION_CODENAME=// COMMAND tr -d '\n' OUTPUT_VARIABLE L_DEBIAN_OS_NAME)
-    EXECUTE_PROCESS( COMMAND cat /etc/os-release COMMAND grep VERSION_ID COMMAND sed s/VERSION_ID=// COMMAND tr -d '\n' COMMAND sed s/\\x22// COMMAND sed s/\\x22// OUTPUT_VARIABLE L_DEBIAN_OS_VERSION)
-    SET(DEBIAN_OS_NAME "${L_DEBIAN_OS_NAME}")
-    SET(DEBIAN_OS_VERSION ${L_DEBIAN_OS_VERSION})
-    message("[ ] Debian OS ${DEBIAN_OS_VERSION} (${DEBIAN_OS_NAME})")
-# check if we're building natively on Android (TERMUX)
-    EXECUTE_PROCESS( COMMAND uname -o COMMAND tr -d '\n' OUTPUT_VARIABLE OPERATING_SYSTEM)
-elseif(${CMAKE_SYSTEM_NAME} MATCHES "Android")
-    set(ANDROID ON)
-    set(UNIX ON)
-    set(LINUX OFF)
-    set(OS_TYPE_MOBILE ON)
-    message("[*] ANDROID build")
-    add_definitions(-DANDROID -DDAP_OS_ANDROID)
-elseif(${CMAKE_SYSTEM_NAME} MATCHES "Win")
-    set(OS_TYPE_DESKTOP ON)
-endif()
-
-if((CMAKE_BUILD_TYPE STREQUAL "Debug") OR (DAP_DEBUG))
-    message("[!] Debug build")
-    SET(DAP_DEBUG ON)
-else()
-    message("[!] Release build")
-    SET(DAP_RELEASE ON)
-endif()
-
-if(CMAKE_SIZEOF_VOID_P EQUAL "8")
-  set(DEFAULT_BUILD_64 ON)
-else()
-  set(DEFAULT_BUILD_64 OFF)
-endif()
-option(BUILD_64 "Build for 64-bit? 'OFF' builds for 32-bit." ${DEFAULT_BUILD_64})
-
-if(BUILD_64)
-  set(ARCH_WIDTH "64")
-else()
-  set(ARCH_WIDTH "32")
-endif()
-message(STATUS "[*] Building for a ${ARCH_WIDTH}-bit system")
-
-if(UNIX)
-    add_definitions ("-DDAP_OS_UNIX")
-    if (APPLE)
-        add_definitions ("-DDAP_OS_DARWIN -DDARWIN -DDAP_OS_BSD")
-        set(DARWIN ON)
-    endif()
-    
-    if (${CMAKE_SYSTEM_NAME} MATCHES "BSD" )
-        add_definitions ("-DDAP_OS_BSD")
-        set(BSD ON)
-    endif()
-
-    if (${CMAKE_SYSTEM_NAME} MATCHES "Linux" )
-        add_definitions ("-DDAP_OS_LINUX")
-    endif()
-    
-    if (LINUX)
-        if(DAP_DEBUG)
-	  set(_CCOPT "-DDAP_DEBUG -Wall -Wno-deprecated-declarations -Wno-unused-local-typedefs -Wno-unused-function -Wno-implicit-fallthrough -Wno-unused-variable -Wno-unused-parameter -Wno-unused-but-set-variable -pg -g3 -ggdb -fno-eliminate-unused-debug-symbols -fno-strict-aliasing")
-          set(_LOPT "-pg")
-	  SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -pg")
-        else()
-	    set(_CCOPT "-Wno-deprecated-declarations -Wno-unused-local-typedefs -Wno-unused-function -Wno-implicit-fallthrough -Wno-unused-variable -Wno-unused-parameter -Wno-unused-but-set-variable -O3 -fPIC -fno-strict-aliasing -fno-ident -ffast-math -ftree-vectorize -fno-asynchronous-unwind-tables -ffunction-sections -Wl,--gc-sections -Wl,--strip-all -std=gnu11")
-        endif()
-    endif()
-    if (BSD)
-        if(DAP_DEBUG)
-	  set(_CCOPT "-DDAP_DEBUG -Wall -Wno-deprecated-declarations -Wno-unused-local-typedefs -Wno-unused-function -Wno-implicit-fallthrough -Wno-unused-variable -Wno-unused-parameter -pg -g3 -ggdb -fno-eliminate-unused-debug-symbols -fno-strict-aliasing")
-          set(_LOPT "-pg")
-	  SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -pg")
-        else()
-	    set(_CCOPT "-Wno-deprecated-declarations -Wno-unused-local-typedefs -Wno-unused-function -Wno-implicit-fallthrough -Wno-unused-variable -Wno-unused-parameter -O3 -fPIC -fno-strict-aliasing -fno-ident -ffast-math -ftree-vectorize -fno-asynchronous-unwind-tables -ffunction-sections -std=gnu11")
-        endif()
-    endif()
-
-    if (ANDROID)
-        set(_CCOPT "${_CCOPT} -fforce-enable-int128 -std=gnu11")
-        add_definitions ("-DDAP_OS_ANDROID")
-        add_definitions ("-DDAP_OS_LINUX")
-    endif()
-
-    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_CCOPT}")
-    set(CMAKE_LINKER_FLAGS "${CMAKE_LINKER_FLAGS} ${_LOPT}")
-
-endif()
-
-if(WIN32)
-    message(STATUS "[*] Building for Windows")
-    add_definitions("-DHAVE_PREAD")
-    add_definitions("-DHAVE_MMAP")
-    add_definitions("-DHAVE_STRNDUP")
-
-    add_definitions ("-DUNDEBUG")
-    add_definitions ("-DNDEBUG")
-    add_definitions ("-DWIN32")
-    add_definitions ("-D_WINDOWS")
-    add_definitions ("-D__WINDOWS__")
-    add_definitions ("-D_CRT_SECURE_NO_WARNINGS")
-    add_definitions ("-DCURL_STATICLIB")
-    add_definitions("-DHAVE_PREAD")
-    add_definitions("-DHAVE_MMAP")
-    add_definitions("-DHAVE_STRNDUP")
-    add_definitions("-DNGHTTP2_STATICLIB")
-    add_compile_definitions(WINVER=0x0600 _WIN32_WINNT=0x0600)
-    add_definitions ("-DDAP_OS_WINDOWS")
-
-     if(DAP_DEBUG)
-      set(_CCOPT "-mconsole -static -Wall -std=gnu11 -Wextra -Wno-deprecated-declarations -Wno-unused-local-typedefs -Wno-unused-function -Wno-implicit-fallthrough -Wno-unused-variable -Wno-unused-parameter -Wno-unused-but-set-variable -g3 -ggdb -fno-strict-aliasing -fno-eliminate-unused-debug-symbols -pg")
-      set(_LOPT "-mconsole -static -pg")
-    else()
-      set(_CCOPT "-static -std=gnu11 -Wall -Wextra -Wno-deprecated-declarations -Wno-unused-local-typedefs -Wno-unused-function -Wno-implicit-fallthrough -Wno-unused-variable -Wno-unused-parameter -Wno-unused-but-set-variable -O3 -fno-ident -ffast-math -fno-strict-aliasing -ftree-vectorize -mfpmath=sse -mmmx -msse2 -fno-asynchronous-unwind-tables -ffunction-sections -Wl,--gc-sections -Wl,--strip-all")
-    endif()
-
-    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_CCOPT} ")
-    set(CMAKE_LINKER_FLAGS "${CMAKE_LINKER_FLAGS} ${_LOPT}")
-
-    include_directories(3rdparty/uthash/src/)
-    include_directories(3rdparty/wepoll/)
-    #include_directories(libdap-chain-net-srv-vpn/)
-endif()
diff --git a/sources/main.c b/sources/main.c
index a878372420046495ac647a941e2f629c40aef898..cfee3293f2cb02b4299b5fb101d3396f164d7b6d 100755
--- a/sources/main.c
+++ b/sources/main.c
@@ -364,7 +364,7 @@ int main( int argc, const char **argv )
     }
 
 
-#ifndef _WIN32
+#ifdef DAP_OS_LINUX
     // vpn server
     if(dap_config_get_item_bool_default(g_config, "srv_vpn", "enabled", false)) {
         if(dap_chain_net_srv_vpn_init(g_config) != 0) {
diff --git a/sources/main_node_tool.c b/sources/main_node_tool.c
index 3d21d959c0297fbf27e73c5e03067f1ecc0d517e..b2945aa8a39a7ee0c9c6cf0164aa8b5b302a18e8 100644
--- a/sources/main_node_tool.c
+++ b/sources/main_node_tool.c
@@ -67,7 +67,7 @@
 #include "dap_chain_net_srv_app_db.h"
 #include "dap_chain_net_srv_datum.h"
 
-#ifndef _WIN32
+#ifdef DAP_OS_LINUX
 #include "dap_chain_net_srv_vpn.h"
 #endif