diff --git a/src/ringdht/ringaccount.h b/src/ringdht/ringaccount.h
index 27b65e1679935077c54e501407d37c580c495668..7782ef9b2cae5900877a874fe53fe8115e564572 100644
--- a/src/ringdht/ringaccount.h
+++ b/src/ringdht/ringaccount.h
@@ -32,6 +32,7 @@
 #include "noncopyable.h"
 #include "ip_utils.h"
 #include "ring_types.h" // enable_if_base_of
+#include "security/certstore.h"
 
 #include <opendht/dhtrunner.h>
 #include <opendht/default_types.h>
diff --git a/src/security/certstore.h b/src/security/certstore.h
index b3aa7757116fe33a8e5501179a76c0cf556fbebd..f49c664ceb8c37fb70607bcfcf6f99ec59205c63 100644
--- a/src/security/certstore.h
+++ b/src/security/certstore.h
@@ -32,9 +32,9 @@
 #include <future>
 #include <mutex>
 
-namespace ring { namespace tls {
+namespace crypto = ::dht::crypto;
 
-namespace crypto = dht::crypto;
+namespace ring { namespace tls {
 
 enum class TrustStatus {
     UNTRUSTED = 0,
diff --git a/src/security/tls_session.cpp b/src/security/tls_session.cpp
index d822237dd27e370312f34edb2c2b9a86c269b32e..0ab03f56e40f6771fb3946085d03ee6032493293 100644
--- a/src/security/tls_session.cpp
+++ b/src/security/tls_session.cpp
@@ -19,8 +19,7 @@
  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA.
  */
 
-#include <ip_utils.h>       // DO NOT CHANGE ORDER OF THIS INCLUDE
-#include <opendht/crypto.h> // OR MINGWIN FAILS TO BUILD
+#include <ip_utils.h>       // DO NOT CHANGE ORDER OF THIS INCLUDE OR MINGWIN FAILS TO BUILD
 
 #include "tls_session.h"
 
diff --git a/src/security/tlsvalidator.h b/src/security/tlsvalidator.h
index b84f593bc66138603ce2e168bf78b7d3dbbdffdf..5643531b0619fbd842bf378def57a32963e5d75c 100644
--- a/src/security/tlsvalidator.h
+++ b/src/security/tlsvalidator.h
@@ -26,13 +26,16 @@
 
 #include "enumclass_utils.h"
 
-#include <opendht/crypto.h>
-
 #include <string>
 #include <vector>
 #include <memory>
 
-namespace ring {namespace tls {
+// OpenDHT
+namespace dht { namespace crypto {
+struct Certificate;
+}} // namespace dht::crypto
+
+namespace ring { namespace tls {
 
 #if !defined (S_IRWXG)
 #define S_IRWXG 00070
diff --git a/src/sip/pres_sub_client.cpp b/src/sip/pres_sub_client.cpp
index 8c65b2e5fe5f7456081641a59f25129bc27d3554..682f93b0db3a0eba305b616e1ac6b3b595e40129 100644
--- a/src/sip/pres_sub_client.cpp
+++ b/src/sip/pres_sub_client.cpp
@@ -28,6 +28,7 @@
 #include <pjsip/sip_endpoint.h>
 #include <string>
 #include <sstream>
+#include <thread>
 #include <pj/pool.h>
 #include <pjsip/sip_ua_layer.h>
 #include <pjsip-simple/evsub.h>
diff --git a/src/sip/sipaccount.cpp b/src/sip/sipaccount.cpp
index ff20e246cc5234d12b2cd65cafbb55254942b56e..1e8aafec24e7d7eb04264b9cecccd5d0363483d0 100644
--- a/src/sip/sipaccount.cpp
+++ b/src/sip/sipaccount.cpp
@@ -62,6 +62,8 @@
 
 #include "im/instant_messaging.h"
 
+#include <opendht/crypto.h>
+
 #include <unistd.h>
 
 #include <algorithm>
diff --git a/src/sip/sipaccountbase.h b/src/sip/sipaccountbase.h
index 01e538b8630759a15a8dededf4d63f33fbaa8860..67d5c4daf29feb5e2c828915d36873bbf754ae56 100644
--- a/src/sip/sipaccountbase.h
+++ b/src/sip/sipaccountbase.h
@@ -30,17 +30,21 @@
 #include "sip_utils.h"
 #include "ip_utils.h"
 #include "noncopyable.h"
-#include "security/certstore.h"
 #include "im/message_engine.h"
 
 #include <pjsip/sip_types.h>
-#include <opendht/value.h>
 
 #include <array>
 #include <vector>
 #include <map>
 #include <memory>
 
+#ifdef _WIN32
+typedef uint16_t in_port_t;
+#else
+#include <netinet/in.h> // For in_port_t support
+#endif
+
 struct pjsip_dialog;
 struct pjsip_inv_session;
 struct pjmedia_sdp_session;
diff --git a/src/sip/sipcall.cpp b/src/sip/sipcall.cpp
index 62dcad06cc0a8b2563c886c9b61c4c45234e4fb6..d1a2e2eb17742323c2f6b953ba5aedf516ffb293 100644
--- a/src/sip/sipcall.cpp
+++ b/src/sip/sipcall.cpp
@@ -51,6 +51,8 @@
 
 #include "errno.h"
 
+#include <opendht/crypto.h>
+
 namespace ring {
 
 using sip_utils::CONST_PJ_STR;
diff --git a/src/sip/sippresence.cpp b/src/sip/sippresence.cpp
index f1a5b63442a48a30d43b8e0b283704310aa8ad0b..2fca3206ac49a8eac99084de9ba73db9137e5b99 100644
--- a/src/sip/sippresence.cpp
+++ b/src/sip/sippresence.cpp
@@ -30,6 +30,8 @@
 #include "client/ring_signal.h"
 #include "sip_utils.h"
 
+#include <opendht/crypto.h>
+
 #include <thread>
 #include <sstream>
 
diff --git a/src/sip/siptransport.cpp b/src/sip/siptransport.cpp
index dfd98291be324a38a7867bf9fac6d6f97d4cc83d..b7d8089e7179680b72ad93f8b9a2ec4b05d7d27f 100644
--- a/src/sip/siptransport.cpp
+++ b/src/sip/siptransport.cpp
@@ -40,6 +40,8 @@
 #include <pjlib.h>
 #include <pjlib-util.h>
 
+#include <opendht/crypto.h>
+
 #include <stdexcept>
 #include <sstream>
 #include <algorithm>
diff --git a/src/sip/siptransport.h b/src/sip/siptransport.h
index 5c24bcd3089cfe9be8bd586cc6ac9cc6588a33ae..4bece74f0cd96d9fd9e75381924cb41de329e516 100644
--- a/src/sip/siptransport.h
+++ b/src/sip/siptransport.h
@@ -31,8 +31,6 @@
 #include "noncopyable.h"
 #include "logger.h"
 
-#include <opendht/crypto.h>
-
 #include <pjsip.h>
 #include <pjnath/stun_config.h>
 
@@ -45,6 +43,11 @@
 #include <list>
 #include <memory>
 
+// OpenDHT
+namespace dht { namespace crypto {
+struct Certificate;
+}} // namespace dht::crypto
+
 namespace ring {
 
 struct SipTransportDescr