diff --git a/CMakeLists.txt b/CMakeLists.txt
index 40cc1570b78a7905b2a5ddbc2ddb78a5ee91978a..8bfdc475a7a1de720773c5fcf62b32bacb683385 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -17,6 +17,7 @@ option (OPENDHT_TOOLS "Build DHT tools" ON)
 option (OPENDHT_DEBUG "Build with debug flags" OFF)
 
 set (CMAKE_CXX_FLAGS "-pthread -std=c++11 -Wno-return-type -Wall -Wextra -Wnon-virtual-dtor ${CMAKE_CXX_FLAGS}")
+set (CMAKE_CXX_FLAGS "-DMSGPACK_DISABLE_LEGACY_NIL -DMSGPACK_DISABLE_LEGACY_CONVERT ${CMAKE_CXX_FLAGS}")
 
 find_package (GnuTLS 3.1 REQUIRED)
 find_package (Msgpack 1.2 REQUIRED)
diff --git a/configure.ac b/configure.ac
index c9be035e0e2d52942ebd6d5f9cab09f96695aa06..1f1674622764f06d7908c4564e952d2a7c09acff 100644
--- a/configure.ac
+++ b/configure.ac
@@ -78,6 +78,7 @@ PKG_PROG_PKG_CONFIG()
 PKG_CHECK_MODULES([nettle], [nettle >= 2.4])
 PKG_CHECK_MODULES([GNUTLS], [gnutls >= 3.1])
 PKG_CHECK_MODULES([msgpack], [msgpack >= 1.2])
+CXXFLAGS="${CXXFLAGS} -DMSGPACK_DISABLE_LEGACY_NIL -DMSGPACK_DISABLE_LEGACY_CONVERT"
 
 AC_ARG_ENABLE([tools], AS_HELP_STRING([--disable-tools],[Disable tools (CLI DHT node)]),,build_tools=yes)
 AM_CONDITIONAL(ENABLE_TOOLS, test x$build_tools == xyes)
diff --git a/include/opendht/value.h b/include/opendht/value.h
index 5211450004edd00c5593d74aa902d1e2b9fcab66..774e03581429ab2741e5d190bed644ae40aa1452 100644
--- a/include/opendht/value.h
+++ b/include/opendht/value.h
@@ -197,7 +197,7 @@ struct Value
 
         virtual void unpackValue(const Value& v) {
             auto msg = msgpack::unpack((const char*)v.data.data(), v.data.size());
-            msg.get().convert(static_cast<Derived*>(this));
+            msg.get().convert(*static_cast<Derived*>(this));
         }
 
         virtual Value packValue() const {
diff --git a/src/dht.cpp b/src/dht.cpp
index 9a9271f5f273458a8b2cb40532d7359c68905c41..35a82ade082ebd0342e129e104ae4a15a0a7ff69 100644
--- a/src/dht.cpp
+++ b/src/dht.cpp
@@ -2846,7 +2846,7 @@ Dht::importValues(const std::vector<ValuesExport>& import)
 
         try {
             msgpack::unpacked msg;
-            msgpack::unpack(&msg, (const char*)h.second.data(), h.second.size());
+            msgpack::unpack(msg, (const char*)h.second.data(), h.second.size());
             auto valarr = msg.get();
             if (valarr.type != msgpack::type::ARRAY)
                 throw msgpack::type_error();