diff --git a/include/opendht/default_types.h b/include/opendht/default_types.h
index 33a2a3021b8de870445c08f175fdf5b88b67d5b1..04fb03610b51675d32b8f08d3431980a5bb0c0f4 100644
--- a/include/opendht/default_types.h
+++ b/include/opendht/default_types.h
@@ -166,7 +166,7 @@ public:
 #endif
     }
 
-    void msgpack_unpack(msgpack::object o)
+    virtual void msgpack_unpack(msgpack::object o)
     {
         if (o.type != msgpack::type::ARRAY) throw msgpack::type_error();
         if (o.via.array.size < 2) throw msgpack::type_error();
@@ -216,7 +216,7 @@ public:
         }
     }
 
-    void msgpack_unpack(msgpack::object o)
+    virtual void msgpack_unpack(msgpack::object o)
     {
         if (o.type != msgpack::type::ARRAY) throw msgpack::type_error();
         if (o.via.array.size < 2) throw msgpack::type_error();