diff --git a/CMakeLists.txt b/CMakeLists.txt
index 31c5bfe7166bf42669cf4f0dd706ff3c2107afe1..fcddb20d5740a6141fe8a409e053ca1ca8b36f9d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -4,12 +4,28 @@ cmake_minimum_required(VERSION 2.8)
 set(CMAKE_VERBOSE_MAKEFILE ON)
 set(CMAKE_COLOR_MAKEFILE   ON)
 set(CMAKE_C_STANDARD 11)
-set(SUBMODULES_NO_BUILD ON)
 
-add_subdirectory(libdap)
-add_subdirectory(libdap-crypto)
+if(NOT (${SUBMODULES_NO_BUILD} MATCHES ON))
+    set(SUBMODULES_NO_BUILD ON)
+    if (NOT (TARGET dap_core))
+        add_subdirectory(libdap)
+        target_compile_options(
+            dap_core PRIVATE
+            "-fpic"
+        )
+    endif()
+    if (NOT (TARGET dap_crypto))
+       add_subdirectory(libdap-crypto)
+       target_compile_options(
+           dap_crypto PRIVATE
+           "-fpic"
+       )
+    endif()
+endif()
+
 add_subdirectory(libdap-server-core)
 
+
 file(GLOB SERVER_CORE_PYTHON_SRCS src/*.c)
 file(GLOB SERVER_CORE_PYTHON_HEADERS include/*.h)
 
@@ -28,18 +44,6 @@ target_compile_options(
     "-fpic"
 )
 
-target_compile_options(
-    dap_core PRIVATE
-    "-fpic"
-)
-target_compile_options(
-    dap_crypto PRIVATE
-    "-fpic"
-)
-
-
-#target_link_libraries(${PROJECT_NAME} dap_core dap_crypto)
-#targat_link_libraries(${PROJECT_NAME} dap_server_core)
 target_link_libraries(${PROJECT_NAME} dap_core dap_crypto dap_server_core)
 
 #if(BUILD_DAP_PYTHON_TESTS)
diff --git a/libdap b/libdap
index 67993d1f4cec44de464acee32a4d4f71d51c7e7d..6c5dd5a5b0de5573b03ed144c651352467a56101 160000
--- a/libdap
+++ b/libdap
@@ -1 +1 @@
-Subproject commit 67993d1f4cec44de464acee32a4d4f71d51c7e7d
+Subproject commit 6c5dd5a5b0de5573b03ed144c651352467a56101
diff --git a/libdap-crypto b/libdap-crypto
index 6249887fdd5c9ed88eb26c1e10f853ea9f7001b6..1acfbdd8f5f3caef4c2e584ae2c20ab584b22b4e 160000
--- a/libdap-crypto
+++ b/libdap-crypto
@@ -1 +1 @@
-Subproject commit 6249887fdd5c9ed88eb26c1e10f853ea9f7001b6
+Subproject commit 1acfbdd8f5f3caef4c2e584ae2c20ab584b22b4e
diff --git a/libdap-server-core b/libdap-server-core
index 6778521f9f646e2985994e63f470067b3e2c1e48..de9b4c77a021af36148515e3dbc56403ab45490f 160000
--- a/libdap-server-core
+++ b/libdap-server-core
@@ -1 +1 @@
-Subproject commit 6778521f9f646e2985994e63f470067b3e2c1e48
+Subproject commit de9b4c77a021af36148515e3dbc56403ab45490f
diff --git a/src/libdap-server-core-python.c b/src/libdap-server-core-python.c
index 7719952c0e95903862e63bd78faa40515c1adeb5..64b5682897afb4bb6ad527adb902e4b083eff803 100644
--- a/src/libdap-server-core-python.c
+++ b/src/libdap-server-core-python.c
@@ -4,9 +4,14 @@
 static PyObject *dap_server_core_init(PyObject *self, PyObject *args){
     uint32_t l_thread_cnt;
     size_t conn_t;
-    if (!PyArg_ParseTuple(args, "I|n", &l_thread_cnt, &conn_t)){
+    const char *app_name;
+    const char *app_log;
+    if (!PyArg_ParseTuple(args, "I|n|s|s", &l_thread_cnt, &conn_t, &app_name, &app_log)){
         return NULL;
     }
+    int32_t result_common_init = dap_common_init(app_name, app_log);
+    if (result_common_init != 0)
+        return PyLong_FromLong(result_common_init);
     int32_t result = dap_server_init(l_thread_cnt);
     if ( result != 0 ) {
        log_it( L_CRITICAL, "Can't init socket server module" );
diff --git a/test/test.py b/test/test.py
index 2780abb163e6d8cdd65d2ec4dc757b4af707f65c..4f48404824177add2a2bd50e4d5065967cb954a9 100644
--- a/test/test.py
+++ b/test/test.py
@@ -1,6 +1,6 @@
 import libDapServerCore as server
 
 print ("Start wrapping libdap server core python module")
-res_i = server.init(1, 0)
+res_i = server.init(1, 0, "TestServer", "TestServer.txt")
 rc = server.listen("0.0.0.0", 3307, 0)
 server.deinit()