diff --git a/.gitmodules b/.gitmodules
old mode 100755
new mode 100644
index 8fd1e53fb2c440728b8a390264f3f3817d606202..26ae5643e1726260fc7bb4764d96cc373eef1514
--- a/.gitmodules
+++ b/.gitmodules
@@ -2,3 +2,6 @@
 	path = test/libdap-test
 	url = https://github.com/kelvinblockchain/libdap-test
 	branch = master
+[submodule "libdap"]
+	path = libdap
+	url = https://github.com/cellframe/libdap
diff --git a/.travis.yml b/.travis.yml
index d09034d2bf073b6f7ea4384f99c4665df5c6b77a..a79b9f067d1021b51a94246a142a3dbcda6612d4 100755
--- a/.travis.yml
+++ b/.travis.yml
@@ -12,8 +12,8 @@ before_install:
 script:
     - sudo service network-manager start
     - mkdir build
-    - cd build 
-    - cmake -DBUILD_DAP_TESTS=ON ../
+    - cd build
+    - cmake -DBUILD_CRYPTO_TESTS=ON ../
     - make
     - ctest --verbose
 
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0dadb9ac6d7bb1a3ba00ef7b531738bced845827..5e3e825cfeb7bdf28c7a8cde3faee8390b7412fe 100755
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -6,6 +6,10 @@ add_definitions ("-D_GNU_SOURCE")
 
 set(CMAKE_C_FLAGS "-std=c11 -Wall -Wextra")
 
+if(NOT (${SUBMODULES_NO_BUILD} MATCHES ON))
+    add_subdirectory(libdap)
+endif()
+
 file(GLOB CRYPTO_SRCS src/*.c src/rand/*.c src/iaes/*.c src/oaes/*.c src/sha3/*.c src/msrln/*.c src/defeo_scheme/*.c src/sig_bliss/*.c src/sig_tesla/*.c src/sig_picnic/*.c)
 file(GLOB CRYPTO_HEADERS src/*.h src/rand/*.h src/iaes/*.h src/oaes/*.h src/sha3/*.h src/msrln/*.h src/defeo_scheme/*.h src/sig_bliss/*.h src/sig_tesla/*.h src/sig_picnic/*.c include/*.h)
 
@@ -17,8 +21,7 @@ target_include_directories(dap_crypto INTERFACE src/ src/sha3 include/)
 target_link_libraries(dap_crypto dap_core m)
 
 
-if(BUILD_DAP_TESTS)
+if(BUILD_CRYPTO_TESTS)
     enable_testing()
     add_subdirectory(test)
 endif()
-
diff --git a/libdap b/libdap
new file mode 160000
index 0000000000000000000000000000000000000000..78cc4a3aca1775288662ef7a9f49f7b747479e15
--- /dev/null
+++ b/libdap
@@ -0,0 +1 @@
+Subproject commit 78cc4a3aca1775288662ef7a9f49f7b747479e15
diff --git a/src/dap_enc_base58.c b/src/dap_enc_base58.c
index bb24777ce2e405e04c1462aea77dbd19499a6ee4..8549457a15969a8f279de36c18475ef5fd31efb1 100755
--- a/src/dap_enc_base58.c
+++ b/src/dap_enc_base58.c
@@ -58,7 +58,7 @@ size_t dap_enc_base58_decode(const char * a_in, void * a_out)
     size_t l_outi_size = (l_out_size_max + 3) / 4;
 
     uint32_t l_outi[l_outi_size];
-    memzero(l_outi,l_outi_size*sizeof(uint32_t));
+    memset(l_outi, 0, l_outi_size*sizeof(uint32_t));
     uint64_t t;
     uint32_t c;
     size_t i, j;
@@ -163,7 +163,7 @@ size_t dap_enc_base58_encode(const void * a_in, size_t a_in_size, char * a_out)
 
     size = (a_in_size - zcount) * 138 / 100 + 1;
     uint8_t buf[size];
-    memzero(buf, size);
+    memset(buf, 0, size);
 
     for (i = zcount, high = size - 1; i < (ssize_t)a_in_size; ++i, high = j)
     {
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 9e312e7b1d3d6d7f35b903ecf965bcaf2ebf1b43..2584ee36c93bcf38f955dc6dbc72623cde6fa8ff 100755
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -4,5 +4,4 @@ project(test)
 set(CMAKE_C_STANDARD 11)
 
 add_subdirectory(libdap-test)
-add_subdirectory(core)
 add_subdirectory(crypto)
diff --git a/test/crypto/CMakeLists.txt b/test/crypto/CMakeLists.txt
index 24dfae1cfd9b7790b1136fa5df4c4677c1f9ea39..95c5a71d37271253efceb5cb534c97b8cd2ecfb6 100755
--- a/test/crypto/CMakeLists.txt
+++ b/test/crypto/CMakeLists.txt
@@ -6,7 +6,7 @@ file(GLOB SRC *.h *.c)
 
 add_executable(${PROJECT_NAME} ${SRC})
 
-target_link_libraries(${PROJECT_NAME} dap_test dap_crypto -lm)
+target_link_libraries(${PROJECT_NAME} dap_test dap_core dap_crypto -lm)
 
 add_test(
     NAME crypto-test