diff --git a/CMakeLists.txt b/CMakeLists.txt
index 099de02ae3942c4ed630282c8d12a190f1db5cf0..1fbbeaf64dbc01d6484b5274564411e77bce7fd3 100755
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -20,9 +20,27 @@ endif()
 file(GLOB DAP_SERVER_CORE_SOURCES src/*.c)
 file(GLOB DAP_SERVER_CORE_HEADERS include/*.h)
 
+if(WIN32)
+  include_directories(../libdap/src/win32/)
+  include_directories(../3rdparty/libmemcached/)
+  include_directories(../3rdparty/libmemcached/win32/)
+  include_directories(../3rdparty/wepoll/include/)
+  include_directories(../3rdparty/uthash/src/)
+  include_directories(../3rdparty/libjson-c/)
+  include_directories(../3rdparty/libmagic/src/)
+  include_directories(../3rdparty/curl/include/)
+endif()
+
 add_library(${PROJECT_NAME} STATIC ${DAP_SERVER_CORE_HEADERS} ${DAP_SERVER_CORE_SOURCES})
 
-target_link_libraries(${PROJECT_NAME} dap_core dap_crypto pthread memcached ev)
+if(WIN32)
+  target_link_libraries(${PROJECT_NAME} dap_core dap_crypto)
+endif()
+
+if(UNIX)
+  target_link_libraries(${PROJECT_NAME} dap_core dap_crypto pthread memcached ev)
+endif()
+
 target_include_directories(${PROJECT_NAME} PUBLIC include)
 target_include_directories(${PROJECT_NAME} PRIVATE src)
 
diff --git a/include/dap_memcached.h b/include/dap_memcached.h
index 169a1bf2d6126acaff65dc6dcd8599b80c9d2b8f..ba7c4fa65259bd7b78d471cf2d5771f9276c8aae 100755
--- a/include/dap_memcached.h
+++ b/include/dap_memcached.h
@@ -1,6 +1,5 @@
 #pragma once
 
-
 #include <stdint.h>
 #include <stdbool.h>
 
diff --git a/src/dap_client_remote.c b/src/dap_client_remote.c
index 6f60751ff90eee8ff93421a8558268648f8e5733..ae4f01f2d00ee9bd929835cac64d6af34c275674 100755
--- a/src/dap_client_remote.c
+++ b/src/dap_client_remote.c
@@ -36,7 +36,7 @@
 #include <mswsock.h>
 #include <ws2tcpip.h>
 #include <io.h>
-#include "wrappers.h"
+//#include "wrappers.h"
 #include <wepoll.h>
 #include <pthread.h>
 #endif
@@ -136,14 +136,20 @@ void dap_client_remote_remove( dap_client_remote_t *sc )
   HASH_DEL( t->hclients, sc );
   pthread_mutex_unlock( &t->mutex_on_hash );
 
-  if( sc->server->client_delete_callback )
+  if( sc->server->client_delete_callback ) {
     sc->server->client_delete_callback( sc, NULL ); // Init internal structure
+  }
 
-  if( sc->_inheritor )
+  if( sc->_inheritor ) {
     free( sc->_inheritor );
+  }
 
-  if( sc->socket )
-    close( sc->socket );
+  if( sc->socket ) {
+    log_it( L_INFO, "dap_client_remote_remove close( %d );", sc->socket );
+    Sleep( 100 );
+//    close( sc->socket );
+    closesocket( sc->socket );
+  }
 
   free( sc );
 }
@@ -259,7 +265,7 @@ size_t dap_client_remote_write_f( dap_client_remote_t *a_client, const char * a_
   va_list ap;
   va_start( ap, a_format );
 
-  int ret = vsnprintf( a_client->buf_out + a_client->buf_out_size, max_data_size, a_format, ap );
+  int ret = dap_vsnprintf( a_client->buf_out + a_client->buf_out_size, max_data_size, a_format, ap );
 
   va_end( ap );
 
diff --git a/src/dap_events.c b/src/dap_events.c
index 36d981f503a1434d2555a9c2de1fee2b37653fde..4de70b8e5b3a1e6f809e0831848bb5f6e27f8ba6 100755
--- a/src/dap_events.c
+++ b/src/dap_events.c
@@ -65,9 +65,6 @@
 #include "wrappers.h"
 #include <wepoll.h>
 #include <pthread.h>
-
-//#define NO_TIMER
-
 #endif
 
 #include <utlist.h>
diff --git a/src/dap_events_socket.c b/src/dap_events_socket.c
index c90b4139ab69a80d09fa14044e131e168f183d48..7e78cd00b8f6b0c695fa61b08c1d62eff6dff5bf 100755
--- a/src/dap_events_socket.c
+++ b/src/dap_events_socket.c
@@ -40,7 +40,6 @@
 #include <mswsock.h>
 #include <ws2tcpip.h>
 #include <io.h>
-#include "wrappers.h"
 #include <wepoll.h>
 #include <pthread.h>
 #endif
@@ -271,8 +270,10 @@ void dap_events_socket_delete( dap_events_socket_t *a_es, bool preserve_inherito
   if ( a_es->_inheritor && !preserve_inheritor )
     free( a_es->_inheritor );
 
-  if ( a_es->socket )
-    close( a_es->socket );
+  if ( a_es->socket ) {
+//    close( a_es->socket );
+    closesocket( a_es->socket );
+  }
 
   free( a_es );
 }
@@ -307,7 +308,7 @@ size_t dap_events_socket_write_f(dap_events_socket_t *sc, const char * format,..
     size_t max_data_size = sizeof(sc->buf_out)-sc->buf_out_size;
     va_list ap;
     va_start(ap,format);
-    int ret=vsnprintf((char*) sc->buf_out+sc->buf_out_size,max_data_size,format,ap);
+    int ret=dap_vsnprintf((char*) sc->buf_out+sc->buf_out_size,max_data_size,format,ap);
     va_end(ap);
     if(ret>0){
         sc->buf_out_size+=ret;
@@ -327,7 +328,7 @@ size_t dap_events_socket_write_f(dap_events_socket_t *sc, const char * format,..
  */
 size_t dap_events_socket_read(dap_events_socket_t *sc, void *data, size_t data_size)
 {
-    log_it(L_DEBUG,"dap_events_socket_read %u sock data %X size %u", sc->socket, data, data_size );
+//    log_it(L_DEBUG,"dap_events_socket_read %u sock data %X size %u", sc->socket, data, data_size );
 
     if(data_size<sc->buf_in_size){
         memcpy(data,sc->buf_in,data_size);
diff --git a/src/dap_memcached.c b/src/dap_memcached.c
index 924cf41e15f6472629e5dd9d03a35b16f7c7b7ff..746d63ad1a1fff5245a82ca1d40ac31c99b5a7d8 100755
--- a/src/dap_memcached.c
+++ b/src/dap_memcached.c
@@ -1,4 +1,17 @@
 
+#ifdef _WIN32
+#undef _WIN32_WINNT
+#define _WIN32_WINNT 0x0600
+#include <winsock2.h>
+#include <windows.h>
+#include <mswsock.h>
+#include <ws2tcpip.h>
+#include <io.h>
+#include <wepoll.h>
+#include <pthread.h>
+
+#endif
+
 #include "dap_memcached.h"
 
 #include <libmemcached/memcached.h>
diff --git a/src/dap_server.c b/src/dap_server.c
index cf0f38abb3dd787756755b58e3cb152a99d3672b..eb9321f09b634c878fe2b385b6025727785d068a 100755
--- a/src/dap_server.c
+++ b/src/dap_server.c
@@ -52,8 +52,8 @@
 #include <windows.h>
 #include <mswsock.h>
 #include <ws2tcpip.h>
-#include <io.h>
 #include "wrappers.h"
+#include <io.h>
 #include <wepoll.h>
 #include <pthread.h>
 #endif
@@ -105,7 +105,7 @@ static uint32_t  get_epoll_max_user_watches( void )
 
   FILE *fp = fopen( maxepollpath, "r" );
   if ( !fp ) {
-    printf("can't open %s\n", maxepollpath );
+//    printf("can't open %s\n", maxepollpath );
     return v;
   }
 
@@ -344,6 +344,7 @@ dap_client_remote_t  *dap_server_add_socket( int32_t fd, int32_t forced_thread_n
 
   pthread_mutex_lock( &dsth->mutex_dlist_add_remove );
 
+
   DL_APPEND( dsth->dap_remote_clients, dcr );
   dsth->connections_count ++;
   if ( epoll_ctl( dsth->epoll_fd, EPOLL_CTL_ADD, fd, &dcr->pevent) != 0 ) {
@@ -381,7 +382,7 @@ void  dap_server_remove_socket( dap_client_remote_t *dcr )
 
 //  pthread_mutex_unlock( &dsth->mutex_dlist_add_remove );
 
-  log_it( L_DEBUG, "dcr = %X", dcr );
+//  log_it( L_DEBUG, "dcr = %X", dcr );
 }
 
 static void s_socket_all_check_activity( uint32_t tn, time_t cur_time )
@@ -665,7 +666,6 @@ void  *thread_loop( void *arg )
         dap_server_remove_socket( dap_cur );
         dap_client_remote_remove( dap_cur );
 
-        log_it( L_INFO, "[ Thread %u ] coneections: %u, to kill: %u", tn, dsth->connections_count, dsth->to_kill_count  );
         pthread_mutex_unlock( &dsth->mutex_dlist_add_remove );
       }
 
diff --git a/src/dap_traffic_track.c b/src/dap_traffic_track.c
index 60e7822ab3ff1d1742745dcdf691827a047aabbf..872e3616e34b5286aeffb57fc6a26a3ea93778af 100755
--- a/src/dap_traffic_track.c
+++ b/src/dap_traffic_track.c
@@ -39,7 +39,6 @@
 #include <mswsock.h>
 #include <ws2tcpip.h>
 #include <io.h>
-#include "wrappers.h"
 #include <wepoll.h>
 #include <pthread.h>
 #endif