diff --git a/core/common.hpp b/core/common.hpp
index 38cf178..cc999d8 100644
--- a/core/common.hpp
+++ b/core/common.hpp
@@ -114,9 +114,9 @@
 namespace scheduler = ndn::scheduler;
 namespace signal = ndn::signal;
 namespace time = ndn::time;
-using namespace ndn::time_literals;
 
-using ndn::operator""_block;
+using namespace ndn::block_literals;
+using namespace ndn::time_literals;
 
 } // namespace nfd
 
diff --git a/core/network.cpp b/core/network.cpp
index 5e75b7f..08a1197 100644
--- a/core/network.cpp
+++ b/core/network.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2022,  Regents of the University of California,
+ * Copyright (c) 2014-2023,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -63,7 +63,7 @@
 }
 
 bool
-Network::isValidCidr(std::string_view cidr)
+Network::isValidCidr(std::string_view cidr) noexcept
 {
   auto pos = cidr.find('/');
   if (pos == std::string::npos) {
diff --git a/core/network.hpp b/core/network.hpp
index f9fbe4f..227ccfc 100644
--- a/core/network.hpp
+++ b/core/network.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2022,  Regents of the University of California,
+ * Copyright (c) 2014-2023,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -40,7 +40,7 @@
           const boost::asio::ip::address& maxAddress);
 
   bool
-  doesContain(const boost::asio::ip::address& address) const
+  doesContain(const boost::asio::ip::address& address) const noexcept
   {
     return m_minAddress <= address && address <= m_maxAddress;
   }
@@ -52,29 +52,31 @@
   getMaxRangeV6();
 
   static bool
-  isValidCidr(std::string_view cidr);
+  isValidCidr(std::string_view cidr) noexcept;
 
-  bool
-  operator==(const Network& rhs) const
+private: // non-member operators
+  friend bool
+  operator==(const Network& lhs, const Network& rhs) noexcept
   {
-    return m_minAddress == rhs.m_minAddress && m_maxAddress == rhs.m_maxAddress;
+    return lhs.m_minAddress == rhs.m_minAddress &&
+           lhs.m_maxAddress == rhs.m_maxAddress;
   }
 
-  bool
-  operator!=(const Network& rhs) const
+  friend bool
+  operator!=(const Network& lhs, const Network& rhs) noexcept
   {
-    return !(*this == rhs);
+    return !(lhs == rhs);
   }
 
-private:
-  boost::asio::ip::address m_minAddress;
-  boost::asio::ip::address m_maxAddress;
-
   friend std::ostream&
   operator<<(std::ostream& os, const Network& network);
 
   friend std::istream&
   operator>>(std::istream& is, Network& network);
+
+private:
+  boost::asio::ip::address m_minAddress;
+  boost::asio::ip::address m_maxAddress;
 };
 
 std::ostream&
