diff --git a/CMakeLists.txt b/CMakeLists.txt
index 594add7601cfa7a16079a25449e65d476ff876eb..a94fa65197eecf4aa844b96b5a93b9b7a67e0497 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -34,6 +34,12 @@ list (APPEND dhtnet_SOURCES
 list (APPEND dhtnet_HEADERS
     include/connectionmanager.h
     include/multiplexed_socket.h
+    include/tls_session.h
+    include/certstore.h
+    include/ice_options.h
+    include/fileutils.h
+    include/string_utils.h
+    include/ip_utils.h
 )
 
 add_library(dhtnet ${dhtnet_SOURCES})
diff --git a/src/upnp/upnp_control.h b/include/upnp/upnp_control.h
similarity index 98%
rename from src/upnp/upnp_control.h
rename to include/upnp/upnp_control.h
index 183b4fb08f78f845273e2901ba77f7fdb5a78e15..10e44e3e2e5d6a5598f22cee0d500801e25a45a1 100644
--- a/src/upnp/upnp_control.h
+++ b/include/upnp/upnp_control.h
@@ -22,7 +22,7 @@
 
 #pragma once
 
-#include "upnp_context.h"
+#include "mapping.h"
 #include "ip_utils.h"
 
 #include <memory>
diff --git a/src/upnp/protocol/mapping.cpp b/src/upnp/protocol/mapping.cpp
index 9b3883106d1e714da13a8fb41ea89262502efaa4..8a2586488b76fe87767bb413914bc77ffeae9852 100644
--- a/src/upnp/protocol/mapping.cpp
+++ b/src/upnp/protocol/mapping.cpp
@@ -22,6 +22,7 @@
 
 #include "mapping.h"
 #include "logger.h"
+#include "igd.h"
 
 namespace jami {
 namespace upnp {
diff --git a/src/upnp/upnp_context.h b/src/upnp/upnp_context.h
index 30d50c034661a01b0c914aaeb0c504eff62c8112..8d4e8c49e6bb67f48f91b98b564d44da5e11bcaf 100644
--- a/src/upnp/upnp_context.h
+++ b/src/upnp/upnp_context.h
@@ -46,7 +46,7 @@
 #include <atomic>
 #include <cstdlib>
 
-//#include "upnp_thread_util.h"
+#include "upnp_thread_util.h"
 
 using random_device = dht::crypto::random_device;
 
@@ -59,7 +59,7 @@ class IpAddr;
 namespace jami {
 namespace upnp {
 
-class UPnPContext : public UpnpMappingObserver//, protected UpnpThreadUtil
+class UPnPContext : public UpnpMappingObserver, protected UpnpThreadUtil
 {
 private:
     struct MappingStatus