diff --git a/src/infohash.cpp b/src/infohash.cpp
index 5f291508667a751aeed62b460a8029a30867f3b6..84d04ae2e35446cccf3bc5b32b04389462f4b49b 100644
--- a/src/infohash.cpp
+++ b/src/infohash.cpp
@@ -22,6 +22,8 @@
 #include <sstream>
 #include <cstdio>
 
+using namespace std::literals;
+
 namespace dht {
 
 const HexMap hex_map = {};
@@ -33,9 +35,9 @@ NodeExport::msgpack_unpack(msgpack::object o)
         throw msgpack::type_error();
     if (o.via.map.size < 2)
         throw msgpack::type_error();
-    if (o.via.map.ptr[0].key.as<std::string>() != "id")
+    if (o.via.map.ptr[0].key.as<std::string_view>() != "id"sv)
         throw msgpack::type_error();
-    if (o.via.map.ptr[1].key.as<std::string>() != "addr")
+    if (o.via.map.ptr[1].key.as<std::string_view>() != "addr"sv)
         throw msgpack::type_error();
     const auto& addr = o.via.map.ptr[1].val;
     if (addr.type != msgpack::type::BIN)
diff --git a/src/peer_discovery.cpp b/src/peer_discovery.cpp
index 1700c35b360cef36d14c10eaca31718b9c53d748..a25da780eccf25f2da33431d18bd1cd3ad1ac6eb 100644
--- a/src/peer_discovery.cpp
+++ b/src/peer_discovery.cpp
@@ -24,6 +24,8 @@
 
 #include <asio.hpp>
 
+using namespace std::literals;
+
 namespace dht {
 
 // Organization-local Scope multicast
@@ -61,7 +63,7 @@ private:
 
     msgpack::sbuffer sbuf_;
     std::map<std::string, msgpack::sbuffer> messages_;
-    std::map<std::string, ServiceDiscoveredCallback> callbackmap_;
+    std::map<std::string, ServiceDiscoveredCallback, std::less<>> callbackmap_;
     bool lrunning_ {false};
     bool drunning_ {false};
 
@@ -133,19 +135,18 @@ PeerDiscovery::DomainPeerDiscovery::loopListener()
             msgpack::object obj = rcv.get();
 
             if (obj.type == msgpack::type::STR) {
-                if (lrunning_ and obj.as<std::string>() == "q")
+                if (lrunning_ and obj.as<std::string_view>() == "q"sv)
                     publish(receiveFrom_);
             } else if (obj.type == msgpack::type::MAP) {
                 for (unsigned i = 0; i < obj.via.map.size; i++) {
                     auto& o = obj.via.map.ptr[i];
                     if (o.key.type != msgpack::type::STR)
                         continue;
-                    auto key = o.key.as<std::string>();
                     ServiceDiscoveredCallback cb;
                     {
                         std::lock_guard<std::mutex> lck(dmtx_);
                         if (drunning_) {
-                            auto callback = callbackmap_.find(key);
+                            auto callback = callbackmap_.find(o.key.as<std::string_view>());
                             if (callback != callbackmap_.end())
                                 cb = callback->second;
                         } else