diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..cdf2bbc19792f45fa893864836fb1bb350775a37
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,7 @@
+project(libdap-server C)
+cmake_minimum_required(VERSION 2.8)
+
+add_subdirectory(core_server)
+add_subdirectory(http_server)
+add_subdirectory(enc_server)
+
diff --git a/core_server/CMakeLists.txt b/core_server/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..585d54f3e00c69387c58fa31291f1466d3e3804c
--- /dev/null
+++ b/core_server/CMakeLists.txt
@@ -0,0 +1,15 @@
+cmake_minimum_required(VERSION 2.8)
+project (dap_core_server C)
+  
+set(DAP_CORE_SERVER_SRCS  dap_server.c  )
+
+include_directories("${INCLUDE_DIRECTORIES} ${dap_core_INCLUDE_DIRS}")
+include_directories("${INCLUDE_DIRECTORIES} ${dap_crypto_INCLUDE_DIRS}")
+
+add_definitions ("${dap_core_DEFINITIONS}")
+add_definitions ("${dap_crypto_DEFINITIONS}")
+
+add_library(${PROJECT_NAME} STATIC ${DAP_CORE_SERVER_SRCS})
+set(${PROJECT_NAME}_DEFINITIONS CACHE INTERNAL "${PROJECT_NAME}: Definitions" FORCE)
+
+set(${PROJECT_NAME}_INCLUDE_DIRS ${PROJECT_SOURCE_DIR} CACHE INTERNAL "${PROJECT_NAME}: Include Directories" FORCE)
diff --git a/core/dap_server.c b/core_server/dap_server.c
similarity index 98%
rename from core/dap_server.c
rename to core_server/dap_server.c
index 62901056a91028c1d3bc6e5c24034ab6e3f6fe56..1dd86fd0aaae8baa85f947331d385cf35d5302eb 100644
--- a/core/dap_server.c
+++ b/core_server/dap_server.c
@@ -70,11 +70,6 @@ typedef struct ev_async_data
  */
 int dap_server_init()
 {
-    if(dap_client_init() != 0) {
-        log_it(CRITICAL, "Can't init client submodule");
-        return -1;
-    }
-
     signal(SIGPIPE, SIG_IGN);
     async_watcher.data = malloc(sizeof(ev_async_data_t));
 
diff --git a/core/dap_server.h b/core_server/dap_server.h
similarity index 100%
rename from core/dap_server.h
rename to core_server/dap_server.h
diff --git a/enc/CMakeLists.txt b/enc/CMakeLists.txt
deleted file mode 100644
index 78161c06ac69ffb8d41b0e4420b902829433a9eb..0000000000000000000000000000000000000000
--- a/enc/CMakeLists.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-cmake_minimum_required(VERSION 2.8)
-project (dapserverenc)
-  
-set(SERVERENC_SRCS  enc_http.c  enc_ks.c )
-
-include_directories("${INCLUDE_DIRECTORIES} ${dapcore_INCLUDE_DIRS}")
-include_directories("${INCLUDE_DIRECTORIES} ${dapcrypt_INCLUDE_DIRS}")
-include_directories("${INCLUDE_DIRECTORIES} ${daphttp_INCLUDE_DIRS}")
-
-add_definitions ("${dapcore_DEFINITIONS}")
-add_definitions ("${dapdb_DEFINITIONS}")
-add_definitions ("${dapcrypt_DEFINITIONS}")
-add_definitions ("${daphttp_DEFINITIONS}")
-
-add_library(${PROJECT_NAME} STATIC ${AUTH_SRCS})
-set(${PROJECT_NAME}_DEFINITIONS CACHE INTERNAL "${PROJECT_NAME}: Definitions" FORCE)
-
-set(${PROJECT_NAME}_INCLUDE_DIRS ${PROJECT_SOURCE_DIR} CACHE INTERNAL "${PROJECT_NAME}: Include Directories" FORCE)
diff --git a/enc_server/CMakeLists.txt b/enc_server/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6c7035ba76ce02f05946be79b1d539fb72e81305
--- /dev/null
+++ b/enc_server/CMakeLists.txt
@@ -0,0 +1,25 @@
+cmake_minimum_required(VERSION 2.8)
+project (dap_enc_server)
+  
+set(DAP_ENC_SERVER_SRCS  enc_http.c  enc_ks.c )
+
+include_directories("${INCLUDE_DIRECTORIES} ${dap_core_INCLUDE_DIRS}")
+include_directories("${INCLUDE_DIRECTORIES} ${dap_crypto_INCLUDE_DIRS}")
+include_directories("${INCLUDE_DIRECTORIES} ${dap_client_INCLUDE_DIRS}")
+include_directories("${INCLUDE_DIRECTORIES} ${dap_http_INCLUDE_DIRS}")
+include_directories("${INCLUDE_DIRECTORIES} ${dap_db_INCLUDE_DIRS}")
+include_directories("${INCLUDE_DIRECTORIES} ${dap_core_server_INCLUDE_DIRS}")
+include_directories("${INCLUDE_DIRECTORIES} ${dap_http_server_INCLUDE_DIRS}")
+
+add_definitions ("${dap_core_DEFINITIONS}")
+add_definitions ("${dap_db_DEFINITIONS}")
+add_definitions ("${dap_crypto_DEFINITIONS}")
+add_definitions ("${dap_client_DEFINITIONS}")
+add_definitions ("${dap_http_DEFINITIONS}")
+add_definitions ("${dap_core_server_DEFINITIONS}")
+add_definitions ("${dap_http_server_DEFINITIONS}")
+
+add_library(${PROJECT_NAME} STATIC ${DAP_ENC_SERVER_SRCS})
+set(${PROJECT_NAME}_DEFINITIONS CACHE INTERNAL "${PROJECT_NAME}: Definitions" FORCE)
+
+set(${PROJECT_NAME}_INCLUDE_DIRS ${PROJECT_SOURCE_DIR} CACHE INTERNAL "${PROJECT_NAME}: Include Directories" FORCE)
diff --git a/enc/enc_http.c b/enc_server/enc_http.c
similarity index 99%
rename from enc/enc_http.c
rename to enc_server/enc_http.c
index 25e385d49726b9f0ede03414fb70b4a81a02d8a0..a937ce2d86b8e04a399b99a5fcfcc492cedd6485 100644
--- a/enc/enc_http.c
+++ b/enc_server/enc_http.c
@@ -157,7 +157,7 @@ enc_http_delegate_t *enc_http_request_decode(struct dap_http_simple *cl_st)
 {
     enc_key_t * key= enc_ks_find_http(cl_st->http);
     if(key){
-        enc_http_delegate_t * dg = CALLOC(enc_http_delegate_t);
+        enc_http_delegate_t * dg = DAP_NEW_Z(enc_http_delegate_t);
         dg->key=key;
         dg->http=cl_st->http;
         dg->isOk=true;
diff --git a/enc/enc_http.h b/enc_server/enc_http.h
similarity index 100%
rename from enc/enc_http.h
rename to enc_server/enc_http.h
diff --git a/enc/enc_ks.c b/enc_server/enc_ks.c
similarity index 96%
rename from enc/enc_ks.c
rename to enc_server/enc_ks.c
index 7f5d6c7c36240ce3fd13155a8643acc29256ee35..97b3bd5aba69e4f5d144d6a2f2488e8d67f8dce5 100644
--- a/enc/enc_ks.c
+++ b/enc_server/enc_ks.c
@@ -77,7 +77,7 @@ enc_key_t * enc_ks_find_http(struct dap_http_client * http)
 
 /*enc_ks_key_t * enc_ks_new()
 {
-    enc_ks_key_t * ret = CALLOC(enc_ks_key_t);
+    enc_ks_key_t * ret = DAP_NEW_Z(enc_ks_key_t);
     ret->key=enc_key_new()
     int i;
     for(i=0;i<sizeof(ret->id)-1;i++)
@@ -88,7 +88,7 @@ enc_key_t * enc_ks_find_http(struct dap_http_client * http)
 
 enc_ks_key_t * enc_ks_add(struct enc_key * key)
 {
-    enc_ks_key_t * ret = CALLOC(enc_ks_key_t);
+    enc_ks_key_t * ret = DAP_NEW_Z(enc_ks_key_t);
     ret->key=key;
     pthread_mutex_init(&ret->mutex,NULL);
     int i;
diff --git a/enc/enc_ks.h b/enc_server/enc_ks.h
similarity index 100%
rename from enc/enc_ks.h
rename to enc_server/enc_ks.h
diff --git a/http/CMakeLists.txt b/http/CMakeLists.txt
deleted file mode 100644
index 96c26e08b074a82f7b4388d5dfa8f145f0602c38..0000000000000000000000000000000000000000
--- a/http/CMakeLists.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-cmake_minimum_required(VERSION 2.8)
-project (daphttp)
-  
-set(HTTP_SRCS dap_http.c  dap_http_client.c  dap_http_folder.c  dap_http_header.c dap_http_simple.c dap_http_simple.h )
-
-include_directories("${INCLUDE_DIRECTORIES} ${dapcore_INCLUDE_DIRS}")
-include_directories("${INCLUDE_DIRECTORIES} ${dapcrypt_INCLUDE_DIRS}")
-
-add_definitions ("${dapcore_DEFINITIONS}")
-add_definitions ("${dapcrypt_DEFINITIONS}")
-
-
-add_library(${PROJECT_NAME} STATIC ${HTTP_SRCS})
-set(${PROJECT_NAME}_DEFINITIONS CACHE INTERNAL "${PROJECT_NAME}: Definitions" FORCE)
-set(${PROJECT_NAME}_INCLUDE_DIRS ${PROJECT_SOURCE_DIR} CACHE INTERNAL "${PROJECT_NAME}: Include Directories" FORCE)
diff --git a/http_server/CMakeLists.txt b/http_server/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b0d2f241984d1f5277c43c0af88871ddf987679c
--- /dev/null
+++ b/http_server/CMakeLists.txt
@@ -0,0 +1,19 @@
+cmake_minimum_required(VERSION 2.8)
+project (dap_http_server C)
+  
+set(HTTP_SRCS dap_http.c dap_http_folder.c  dap_http_simple.c dap_http_simple.h )
+
+include_directories("${INCLUDE_DIRECTORIES} ${dap_core_INCLUDE_DIRS}")
+include_directories("${INCLUDE_DIRECTORIES} ${dap_crypto_INCLUDE_DIRS}")
+include_directories("${INCLUDE_DIRECTORIES} ${dap_client_INCLUDE_DIRS}")
+include_directories("${INCLUDE_DIRECTORIES} ${dap_core_server_INCLUDE_DIRS}")
+
+add_definitions ("${dap_core_DEFINITIONS}")
+add_definitions ("${dap_crypto_DEFINITIONS}")
+add_definitions ("${dap_client_DEFINITIONS}")
+add_definitions ("${dap_core_server_DEFINITIONS}")
+
+
+add_library(${PROJECT_NAME} STATIC ${HTTP_SRCS})
+set(${PROJECT_NAME}_DEFINITIONS CACHE INTERNAL "${PROJECT_NAME}: Definitions" FORCE)
+set(${PROJECT_NAME}_INCLUDE_DIRS ${PROJECT_SOURCE_DIR} CACHE INTERNAL "${PROJECT_NAME}: Include Directories" FORCE)
diff --git a/http/dap_http.c b/http_server/dap_http.c
similarity index 100%
rename from http/dap_http.c
rename to http_server/dap_http.c
diff --git a/http/dap_http.h b/http_server/dap_http.h
similarity index 100%
rename from http/dap_http.h
rename to http_server/dap_http.h
diff --git a/http/dap_http_folder.c b/http_server/dap_http_folder.c
similarity index 100%
rename from http/dap_http_folder.c
rename to http_server/dap_http_folder.c
diff --git a/http/dap_http_folder.h b/http_server/dap_http_folder.h
similarity index 100%
rename from http/dap_http_folder.h
rename to http_server/dap_http_folder.h
diff --git a/http/dap_http_simple.c b/http_server/dap_http_simple.c
similarity index 98%
rename from http/dap_http_simple.c
rename to http_server/dap_http_simple.c
index e7c30e57fc03a301622d2c6437c88afcede44efd..6c53bee67a59b7f213a38aebc530ff187d4bfcc1 100644
--- a/http/dap_http_simple.c
+++ b/http_server/dap_http_simple.c
@@ -109,7 +109,7 @@ static void* loop_http_simple_proc(void *arg)
  */
 void dap_http_simple_proc_add(dap_http_t *sh, const char * url_path, size_t reply_size_max, dap_http_simple_callback_t cb)
 {
-    dap_http_simple_url_proc_t * shs_up = CALLOC(dap_http_simple_url_proc_t);
+    dap_http_simple_url_proc_t * shs_up = DAP_NEW_Z(dap_http_simple_url_proc_t);
     shs_up->proc_callback=cb;
     shs_up->reply_size_max=reply_size_max;
     dap_http_add_proc(sh,url_path
@@ -196,7 +196,7 @@ void* dap_http_simple_proc(dap_http_simple_t * cl_sh)
  */
 void dap_http_simple_headers_read(dap_http_client_t * cl_ht, void * arg )
 {
-    cl_ht->internal = CALLOC(dap_http_simple_t);
+    cl_ht->internal = DAP_NEW_Z(dap_http_simple_t);
 
     DAP_HTTP_SIMPLE(cl_ht)->http = cl_ht;
     DAP_HTTP_SIMPLE(cl_ht)->reply_size_max = DAP_HTTP_SIMPLE_URL_PROC( cl_ht->proc )->reply_size_max;
diff --git a/http/dap_http_simple.h b/http_server/dap_http_simple.h
similarity index 100%
rename from http/dap_http_simple.h
rename to http_server/dap_http_simple.h