diff --git a/src/ADCSensorMain.cpp b/src/ADCSensorMain.cpp
index 1125c5f..9024eb9 100644
--- a/src/ADCSensorMain.cpp
+++ b/src/ADCSensorMain.cpp
@@ -69,13 +69,13 @@
     boost::container::flat_map<std::string, std::shared_ptr<ADCSensor>>&
         sensors,
     std::shared_ptr<sdbusplus::asio::connection>& dbusConnection,
-    const std::unique_ptr<boost::container::flat_set<std::string>>&
+    const std::shared_ptr<boost::container::flat_set<std::string>>&
         sensorsChanged)
 {
     auto getter = std::make_shared<GetSensorConfiguration>(
         dbusConnection,
         std::move([&io, &objectServer, &sensors, &dbusConnection,
-                   &sensorsChanged](
+                   sensorsChanged](
                       const ManagedObjectType& sensorConfigurations) {
             bool firstScan = sensorsChanged == nullptr;
             std::vector<fs::path> paths;
@@ -291,8 +291,8 @@
     sdbusplus::asio::object_server objectServer(systemBus);
     boost::container::flat_map<std::string, std::shared_ptr<ADCSensor>> sensors;
     std::vector<std::unique_ptr<sdbusplus::bus::match::match>> matches;
-    std::unique_ptr<boost::container::flat_set<std::string>> sensorsChanged =
-        std::make_unique<boost::container::flat_set<std::string>>();
+    auto sensorsChanged =
+        std::make_shared<boost::container::flat_set<std::string>>();
 
     io.post([&]() {
         createSensors(io, objectServer, sensors, systemBus, nullptr);
@@ -369,7 +369,7 @@
                     std::cerr << "timer error\n";
                     return;
                 }
-                createSensors(io, objectServer, sensors, systemBus, {});
+                createSensors(io, objectServer, sensors, systemBus, nullptr);
             });
         };
 
diff --git a/src/FanMain.cpp b/src/FanMain.cpp
index 8c47d76..73937cc 100644
--- a/src/FanMain.cpp
+++ b/src/FanMain.cpp
@@ -86,14 +86,14 @@
     boost::container::flat_map<std::string, std::unique_ptr<PwmSensor>>&
         pwmSensors,
     std::shared_ptr<sdbusplus::asio::connection>& dbusConnection,
-    const std::unique_ptr<boost::container::flat_set<std::string>>&
+    const std::shared_ptr<boost::container::flat_set<std::string>>&
         sensorsChanged)
 {
 
     auto getter = std::make_shared<GetSensorConfiguration>(
         dbusConnection,
         std::move([&io, &objectServer, &tachSensors, &pwmSensors,
-                   &dbusConnection, &sensorsChanged](
+                   &dbusConnection, sensorsChanged](
                       const ManagedObjectType& sensorConfigurations) {
             bool firstScan = sensorsChanged == nullptr;
             std::vector<fs::path> paths;
@@ -442,8 +442,8 @@
     boost::container::flat_map<std::string, std::unique_ptr<PwmSensor>>
         pwmSensors;
     std::vector<std::unique_ptr<sdbusplus::bus::match::match>> matches;
-    std::unique_ptr<boost::container::flat_set<std::string>> sensorsChanged =
-        std::make_unique<boost::container::flat_set<std::string>>();
+    auto sensorsChanged =
+        std::make_shared<boost::container::flat_set<std::string>>();
 
     io.post([&]() {
         createSensors(io, objectServer, tachSensors, pwmSensors, systemBus,
diff --git a/src/HwmonTempMain.cpp b/src/HwmonTempMain.cpp
index e84bf0e..ef38bae 100644
--- a/src/HwmonTempMain.cpp
+++ b/src/HwmonTempMain.cpp
@@ -58,13 +58,13 @@
     boost::container::flat_map<std::string, std::shared_ptr<HwmonTempSensor>>&
         sensors,
     std::shared_ptr<sdbusplus::asio::connection>& dbusConnection,
-    const std::unique_ptr<boost::container::flat_set<std::string>>&
+    const std::shared_ptr<boost::container::flat_set<std::string>>&
         sensorsChanged)
 {
     auto getter = std::make_shared<GetSensorConfiguration>(
         dbusConnection,
         std::move([&io, &objectServer, &sensors, &dbusConnection,
-                   &sensorsChanged](
+                   sensorsChanged](
                       const ManagedObjectType& sensorConfigurations) {
             bool firstScan = sensorsChanged == nullptr;
 
@@ -260,8 +260,8 @@
     boost::container::flat_map<std::string, std::shared_ptr<HwmonTempSensor>>
         sensors;
     std::vector<std::unique_ptr<sdbusplus::bus::match::match>> matches;
-    std::unique_ptr<boost::container::flat_set<std::string>> sensorsChanged =
-        std::make_unique<boost::container::flat_set<std::string>>();
+    auto sensorsChanged =
+        std::make_shared<boost::container::flat_set<std::string>>();
 
     io.post([&]() {
         createSensors(io, objectServer, sensors, systemBus, nullptr);
