diff --git a/pid/builder.cpp b/pid/builder.cpp
index 9f27ed4..706585a 100644
--- a/pid/builder.cpp
+++ b/pid/builder.cpp
@@ -44,12 +44,12 @@
     return std::string(objectPath) + std::to_string(zone);
 }
 
-std::unordered_map<int64_t, std::unique_ptr<ZoneInterface>>
+std::unordered_map<int64_t, std::shared_ptr<ZoneInterface>>
     buildZones(const std::map<int64_t, conf::PIDConf>& zonePids,
                std::map<int64_t, struct conf::ZoneConfig>& zoneConfigs,
                SensorManager& mgr, sdbusplus::bus::bus& modeControlBus)
 {
-    std::unordered_map<int64_t, std::unique_ptr<ZoneInterface>> zones;
+    std::unordered_map<int64_t, std::shared_ptr<ZoneInterface>> zones;
 
     for (const auto& [zoneId, pidConfig] : zonePids)
     {
@@ -67,7 +67,7 @@
             throw std::runtime_error(err);
         }
 
-        auto zone = std::make_unique<DbusPidZone>(
+        auto zone = std::make_shared<DbusPidZone>(
             zoneId, zoneConf->second.minThermalOutput,
             zoneConf->second.failsafePercent, mgr, modeControlBus,
             getControlPath(zoneId).c_str(), deferSignals);
diff --git a/pid/builder.hpp b/pid/builder.hpp
index ff2f682..c07de74 100644
--- a/pid/builder.hpp
+++ b/pid/builder.hpp
@@ -12,7 +12,7 @@
 namespace pid_control
 {
 
-std::unordered_map<int64_t, std::unique_ptr<ZoneInterface>>
+std::unordered_map<int64_t, std::shared_ptr<ZoneInterface>>
     buildZones(const std::map<int64_t, conf::PIDConf>& zonePids,
                std::map<int64_t, struct conf::ZoneConfig>& zoneConfigs,
                SensorManager& mgr, sdbusplus::bus::bus& modeControlBus);
diff --git a/pid/pidloop.cpp b/pid/pidloop.cpp
index 1cdf019..711ba2f 100644
--- a/pid/pidloop.cpp
+++ b/pid/pidloop.cpp
@@ -33,7 +33,7 @@
 namespace pid_control
 {
 
-static void processThermals(ZoneInterface* zone)
+static void processThermals(std::shared_ptr<ZoneInterface> zone)
 {
     // Get the latest margins.
     zone->updateSensors();
@@ -46,7 +46,8 @@
     zone->determineMaxSetPointRequest();
 }
 
-void pidControlLoop(ZoneInterface* zone, boost::asio::steady_timer& timer,
+void pidControlLoop(std::shared_ptr<ZoneInterface> zone,
+                    std::shared_ptr<boost::asio::steady_timer> timer,
                     bool first, int ms100cnt)
 {
     if (first)
@@ -60,9 +61,9 @@
         processThermals(zone);
     }
 
-    timer.expires_after(std::chrono::milliseconds(100));
-    timer.async_wait(
-        [zone, &timer, ms100cnt](const boost::system::error_code& ec) mutable {
+    timer->expires_after(std::chrono::milliseconds(100));
+    timer->async_wait(
+        [zone, timer, ms100cnt](const boost::system::error_code& ec) mutable {
             if (ec == boost::asio::error::operation_aborted)
             {
                 return; // timer being canceled, stop loop
diff --git a/pid/pidloop.hpp b/pid/pidloop.hpp
index 0b8690b..b7d1b34 100644
--- a/pid/pidloop.hpp
+++ b/pid/pidloop.hpp
@@ -17,7 +17,8 @@
  * @param[in] first - boolean to denote if initialization needs to be run.
  * @param[in] ms100cnt - loop timer counter.
  */
-void pidControlLoop(ZoneInterface* zone, boost::asio::steady_timer& timer,
+void pidControlLoop(std::shared_ptr<ZoneInterface> zone,
+                    std::shared_ptr<boost::asio::steady_timer> timer,
                     bool first = true, int ms100cnt = 0);
 
 } // namespace pid_control
