diff --git a/dbus/dbusconfiguration.cpp b/dbus/dbusconfiguration.cpp
index 9de25ad..7e34b55 100644
--- a/dbus/dbusconfiguration.cpp
+++ b/dbus/dbusconfiguration.cpp
@@ -303,7 +303,7 @@
 }
 
 void populatePidInfo(
-    [[maybe_unused]] sdbusplus::bus_t& bus,
+    sdbusplus::bus_t& bus,
     const std::unordered_map<std::string, DbusVariantType>& base,
     conf::ControllerInfo& info, const std::string* thresholdProperty,
     const std::map<std::string, conf::SensorConfig>& sensorConfig)
@@ -348,7 +348,7 @@
         const std::string& path =
             sensorConfig.at(info.inputs.front().name).readPath;
 
-        DbusHelper helper(sdbusplus::bus::new_system());
+        DbusHelper helper(bus);
         std::string service = helper.getService(interface, path);
         double reading = 0;
         try
diff --git a/dbus/dbushelper.hpp b/dbus/dbushelper.hpp
index 7d2be2d..9b73194 100644
--- a/dbus/dbushelper.hpp
+++ b/dbus/dbushelper.hpp
@@ -23,7 +23,8 @@
     static constexpr char availabilityIntf[] =
         "xyz.openbmc_project.State.Decorator.Availability";
 
-    explicit DbusHelper(sdbusplus::bus_t bus) : _bus(std::move(bus)) {}
+    explicit DbusHelper(sdbusplus::bus_t& bus) : _bus(bus) {}
+    DbusHelper() = delete;
     ~DbusHelper() = default;
 
     DbusHelper(const DbusHelper&) = delete;
@@ -70,7 +71,7 @@
     }
 
   private:
-    sdbusplus::bus_t _bus;
+    sdbusplus::bus_t& _bus;
 };
 
 } // namespace pid_control
diff --git a/sensors/builder.cpp b/sensors/builder.cpp
index e71e9ce..166977b 100644
--- a/sensors/builder.cpp
+++ b/sensors/builder.cpp
@@ -82,17 +82,15 @@
                 {
                     ri = DbusPassive::createDbusPassive(
                         passiveListeningBus, info->type, name,
-                        std::make_unique<DbusHelper>(
-                            sdbusplus::bus::new_system()),
-                        info, redundancy);
+                        std::make_unique<DbusHelper>(passiveListeningBus), info,
+                        redundancy);
                 }
                 else
                 {
                     ri = DbusPassive::createDbusPassive(
                         passiveListeningBus, info->type, name,
-                        std::make_unique<DbusHelper>(
-                            sdbusplus::bus::new_system()),
-                        info, nullptr);
+                        std::make_unique<DbusHelper>(passiveListeningBus), info,
+                        nullptr);
                 }
                 if (ri == nullptr)
                 {
@@ -134,15 +132,13 @@
                     {
                         wi = DbusWritePercent::createDbusWrite(
                             info->writePath, info->min, info->max,
-                            std::make_unique<DbusHelper>(
-                                sdbusplus::bus::new_system()));
+                            std::make_unique<DbusHelper>(passiveListeningBus));
                     }
                     else
                     {
                         wi = DbusWrite::createDbusWrite(
                             info->writePath, info->min, info->max,
-                            std::make_unique<DbusHelper>(
-                                sdbusplus::bus::new_system()));
+                            std::make_unique<DbusHelper>(passiveListeningBus));
                     }
 
                     if (wi == nullptr)
