diff --git a/crypto/dap_enc_key.c b/crypto/dap_enc_key.c
index 498cf8b17b1d4110fc4d3b2a96a3675be6b210ef..8336daeb0f191961cd653215ea1ef09fe77678db 100644
--- a/crypto/dap_enc_key.c
+++ b/crypto/dap_enc_key.c
@@ -25,6 +25,7 @@
 
 #include "dap_enc_aes.h"
 #include "dap_enc_newhope.h"
+#include "dap_enc_sidh16.h"
 
 #include "dap_enc_key.h"
 
@@ -67,6 +68,17 @@ struct dap_enc_key_callbacks{
                             .new_from_data_callback = dap_enc_newhope_key_new_from_data,
                             .key_public_raw_callback = dap_enc_newhope_key_public_raw,
                             .new_from_data_public_callback = dap_enc_newhope_key_new_from_data_public
+                           },
+
+    [DAP_ENC_KEY_TYPE_SIDH_CLN16]={
+                            .name = "SIDHCLN16",
+                            .size_max = 64,
+                            .enc = dap_enc_sidh16_encode,
+                            .dec = dap_enc_sidh16_decode,
+                            .new_callback = NULL,
+                            .delete_callback = NULL,
+                            .new_generate_callback = dap_enc_sidh16_key_new_generate,
+                            .new_from_data_callback = dap_enc_sidh16_key_new_from_data
                            }
 };
 
diff --git a/crypto/dap_enc_key.h b/crypto/dap_enc_key.h
index 739d2a1dd680e3955192f565208ea4cc052578a5..449265b4c073d9e4adc89f9aa1335cdf398df55e 100644
--- a/crypto/dap_enc_key.h
+++ b/crypto/dap_enc_key.h
@@ -105,7 +105,6 @@ typedef struct dap_enc_key{
     dap_enc_callback_dataop_t enc;
     dap_enc_callback_dataop_t dec;
     dap_enc_callback_t delete_callback;
-
     void * _inheritor;
 } dap_enc_key_t;
 
diff --git a/crypto/dap_enc_sidh16.c b/crypto/dap_enc_sidh16.c
index 8a8305bd0260343d85e6a58648a48ee9d966346b..e9f56af21cff59372e40c291a161ae747e15391a 100644
--- a/crypto/dap_enc_sidh16.c
+++ b/crypto/dap_enc_sidh16.c
@@ -5,12 +5,12 @@
 #include <string.h>
 #include <stdbool.h>
 
-#include "dap_common.h"
 #include "dap_enc_sidh16.h"
-#include "kex_sidh_cln16.h"
 #include "dap_enc_key.h"
 
-#include "SIDH.h"
+#include <../libdap/core/dap_common.h>
+#include <../libdap/crypto/liboqs/kex_sidh_cln16/kex_sidh_cln16.h>
+#include <../libdap/crypto/liboqs/kex_sidh_cln16/SIDH.h>
 
 static const char *P751 = "p751";
 static const char *CompressedP751 = "compressedp751";
@@ -44,7 +44,7 @@ dap_enc_key_t *dap_enc_sidh16_key_new_generate(struct dap_enc_key *a_key, size_t
         oqs_sidh_cln16_curve_free(curveIsogeny);
         return NULL;
     }
-    k->data ;
+    k->data;
     k->data_size;
     k->type = DAP_ENC_KEY_TYPE_SIDH_CLN16;
     k->last_used_timestamp;
@@ -139,7 +139,7 @@ size_t dap_enc_sidh16_encode(struct dap_enc_key *a_key, const void *a_in, size_t
 
 // int OQS_KEX_sidh_cln16_bob(OQS_KEX *k, const uint8_t *alice_msg, const size_t alice_msg_len, uint8_t **bob_msg, size_t *bob_msg_len, uint8_t **key, size_t *key_len)
 size_t dap_enc_sidh16_decode(struct dap_enc_key *a_key, const void *a_in, size_t a_in_size, void *a_out) {
-    int ret;
+    size_t ret;
     dap_enc_sidh16_key_t *sidh_a_key = DAP_ENC_SIDH16_KEY(a_key);
     uint8_t *bob_priv = NULL;
     // non-compressed public key
diff --git a/crypto/dap_enc_sidh16.h b/crypto/dap_enc_sidh16.h
index 606780b1243f3fc9996af4288535f93f92b5558d..169cea09bd92b0e12d1e0784f25c456431336bd6 100644
--- a/crypto/dap_enc_sidh16.h
+++ b/crypto/dap_enc_sidh16.h
@@ -10,19 +10,35 @@
 
 #include "dap_common.h"
 #include "dap_enc_key.h"
+#include <../libdap/crypto/liboqs/kex_sidh_cln16/SIDH.h>
+#include <../libdap/crypto/liboqs/kex/kex.h>
+
 
-#include "SIDH.h"
 
 struct dap_enc_key;
 
+extern bool dap_sidh16_CurveIsogenyStruct_isnull(PCurveIsogenyStruct pCurveIsogeny);
+
 typedef struct dap_enc_sidh16_key{
     OQS_RAND *rand;
     void * user_curveIsogeny;
     unsigned int alice_msg_len;
     unsigned int bob_msg_len;
     unsigned int key_len;
+    uint16_t estimated_classical_security;
+    uint16_t estimated_quantum_security;
 } dap_enc_sidh16_key_t;
 
+struct dapenc_testcase {
+    enum OQS_KEX_alg_name alg_name;
+    unsigned char *seed;
+    size_t seed_len;
+    char *named_parameters;
+    char *id;
+    int run;
+    int iter;
+};
+
 #define DAP_ENC_SIDH16_KEY(a) ((dap_enc_sidh16_key_t *)((a)->_inheritor))
 
 dap_enc_key_t *dap_enc_sidh16_key_new_generate(struct dap_enc_key* a_key, size_t a_size);                            // new
diff --git a/crypto/liboqs/kex/kex.h b/crypto/liboqs/kex/kex.h
index 0decdf874b9a1a815738832f183f4a0b6ab479d1..ea8948ae13950666190be456d7670ae59bf50556 100644
--- a/crypto/liboqs/kex/kex.h
+++ b/crypto/liboqs/kex/kex.h
@@ -9,10 +9,13 @@
 #include <stddef.h>
 #include <stdint.h>
 
-#include <oqs/rand.h>
+//#include <oqs/rand.h>
+#include <../libdap/crypto/liboqs/crypto/rand/rand.h>
+
 
 #if !defined(WINDOWS)
-#include <oqs/config.h>
+//#include <oqs/config.h>
+#include <../libdap/crypto/liboqs/config.h>
 #endif
 
 enum OQS_KEX_alg_name {
@@ -93,7 +96,7 @@ typedef struct OQS_KEX {
 	 * @param alice_msg_len    Alice's message length
 	 * @return                 1 on success, or 0 on failure
 	 */
-	int (*alice_0)(OQS_KEX *k, void **alive_priv, uint8_t **alice_msg, size_t *alice_msg_len);
+        int (*alice_0)(OQS_KEX *k, void **alice_priv, uint8_t **alice_msg, size_t *alice_msg_len);
 
 	/**
 	 * Pointer to a function for shared key generation by Bob.
diff --git a/crypto/liboqs/kex_sidh_cln16/SIDH.h b/crypto/liboqs/kex_sidh_cln16/SIDH.h
index 762ea99b60e3704075d269f3f66f45e4f91e7934..5f0ba90b915a4fdc367fdcada502bb7a9d0917b4 100644
--- a/crypto/liboqs/kex_sidh_cln16/SIDH.h
+++ b/crypto/liboqs/kex_sidh_cln16/SIDH.h
@@ -17,7 +17,8 @@
 extern "C" {
 #endif
 
-#include <oqs/rand.h>
+//#include <../libdap/crypto/rand.h>  //<oqs/rand.h>
+#include <../libdap/crypto/liboqs/crypto/rand/rand.h>
 #include <stdint.h>
 #include <stdbool.h>
 #include <stddef.h>
diff --git a/crypto/liboqs/kex_sidh_cln16/SIDH_internal.h b/crypto/liboqs/kex_sidh_cln16/SIDH_internal.h
index 82a4a101b9a157c777042b23a8ff5de58b587329..97fdde84c30f7752f74b9f457a0f97b1a5cc3d14 100644
--- a/crypto/liboqs/kex_sidh_cln16/SIDH_internal.h
+++ b/crypto/liboqs/kex_sidh_cln16/SIDH_internal.h
@@ -23,7 +23,7 @@ extern "C" {
 #define UNUSED __attribute__((unused))
 #endif
 
-#include "SIDH.h"
+#include <../libdap/crypto/liboqs/kex_sidh_cln16/SIDH.h>
 
 // Basic constants
 
diff --git a/crypto/liboqs/kex_sidh_cln16/kex_sidh_cln16.h b/crypto/liboqs/kex_sidh_cln16/kex_sidh_cln16.h
index 4409db7a6f9f0292ac6343066fc755ff75db21f1..15385d6f9ae50fc315e0a00f5697aa57df1ca6a3 100644
--- a/crypto/liboqs/kex_sidh_cln16/kex_sidh_cln16.h
+++ b/crypto/liboqs/kex_sidh_cln16/kex_sidh_cln16.h
@@ -9,8 +9,10 @@
 #include <stddef.h>
 #include <stdint.h>
 
-#include <oqs/kex.h>
-#include <oqs/rand.h>
+//#include <oqs/kex.h>
+#include <../libdap/crypto/liboqs/kex/kex.h>
+//#include <oqs/rand.h>
+#include <../libdap/crypto/liboqs/crypto/rand/rand.h>
 
 OQS_KEX *OQS_KEX_sidh_cln16_new(OQS_RAND *rand, const char *named_parameters);