diff --git a/src/config_parser.hpp b/src/config_parser.hpp
index 2d0bb1f..d082b18 100644
--- a/src/config_parser.hpp
+++ b/src/config_parser.hpp
@@ -3,7 +3,6 @@
 #include <filesystem>
 #include <functional>
 #include <optional>
-#include <ostream>
 #include <string>
 #include <string_view>
 #include <unordered_map>
@@ -52,6 +51,13 @@
         return t;
     }
 
+    template <typename T2, typename Check2>
+    constexpr bool operator==(const Checked<T2, Check2>& rhs) const noexcept
+    {
+        static_assert(std::is_same_v<Check2, Check>);
+        return t == rhs.t;
+    }
+
     constexpr bool operator==(const auto& rhs) const noexcept
     {
         return t == rhs;
@@ -69,19 +75,6 @@
     }
 };
 
-template <typename T, typename Check>
-constexpr bool operator==(const auto& lhs,
-                          const Checked<T, Check>& rhs) noexcept
-{
-    return lhs == rhs.get();
-}
-
-template <typename T, typename Check>
-inline std::ostream& operator<<(std::ostream& s, const Checked<T, Check>& rhs)
-{
-    return s << rhs.get();
-}
-
 struct KeyCheck
 {
     void operator()(std::string_view s);
diff --git a/src/ethernet_interface.hpp b/src/ethernet_interface.hpp
index 0b6e21a..0e9c536 100644
--- a/src/ethernet_interface.hpp
+++ b/src/ethernet_interface.hpp
@@ -187,7 +187,7 @@
 
     /** @brief delete all dbus objects.
      */
-    void deleteAll();
+    void deleteAll() override;
 
     /** @brief set the default v4 gateway of the interface.
      *  @param[in] gateway - default v4 gateway of the interface.
diff --git a/src/ibm/hypervisor-network-mgr-src/hyp_sys_config.hpp b/src/ibm/hypervisor-network-mgr-src/hyp_sys_config.hpp
index 26f03f7..464ed64 100644
--- a/src/ibm/hypervisor-network-mgr-src/hyp_sys_config.hpp
+++ b/src/ibm/hypervisor-network-mgr-src/hyp_sys_config.hpp
@@ -27,7 +27,7 @@
 class HypSysConfig : public Iface
 {
   public:
-    HypSysConfig() = default;
+    HypSysConfig() = delete;
     HypSysConfig(const HypSysConfig&) = delete;
     HypSysConfig& operator=(const HypSysConfig&) = delete;
     HypSysConfig(HypSysConfig&&) = delete;
diff --git a/src/network_manager.cpp b/src/network_manager.cpp
index 26d3496..7db5f7f 100644
--- a/src/network_manager.cpp
+++ b/src/network_manager.cpp
@@ -20,14 +20,6 @@
 
 #include <filesystem>
 
-constexpr char SYSTEMD_BUSNAME[] = "org.freedesktop.systemd1";
-constexpr char SYSTEMD_PATH[] = "/org/freedesktop/systemd1";
-constexpr char SYSTEMD_INTERFACE[] = "org.freedesktop.systemd1.Manager";
-
-constexpr char NETWORKD_BUSNAME[] = "org.freedesktop.network1";
-constexpr char NETWORKD_PATH[] = "/org/freedesktop/network1";
-constexpr char NETWORKD_INTERFACE[] = "org.freedesktop.network1.Manager";
-
 namespace phosphor
 {
 namespace network
@@ -95,8 +87,9 @@
         try
         {
             bus.get()
-                .new_method_call(NETWORKD_BUSNAME, NETWORKD_PATH,
-                                 NETWORKD_INTERFACE, "Reload")
+                .new_method_call("org.freedesktop.network1",
+                                 "/org/freedesktop/network1",
+                                 "org.freedesktop.network1.Manager", "Reload")
                 .call();
             lg2::info("Reloaded systemd-networkd");
         }
