diff --git a/control/json/triggers/signal.cpp b/control/json/triggers/signal.cpp
index 28b2781..8b66c5f 100644
--- a/control/json/triggers/signal.cpp
+++ b/control/json/triggers/signal.cpp
@@ -50,8 +50,8 @@
     {
         // Signal subscription doesnt exist, add signal package and subscribe
         std::vector<SignalPkg> pkgs = {signalPkg};
-        std::unique_ptr<std::vector<SignalPkg>> dataPkgs =
-            std::make_unique<std::vector<SignalPkg>>(std::move(pkgs));
+        std::vector<SignalPkg> dataPkgs =
+            std::vector<SignalPkg>(std::move(pkgs));
         std::unique_ptr<sdbusplus::server::match::match> ptrMatch = nullptr;
         // TODO(ibm-openbmc/#3195) - Filter signal subscriptions to objects
         // owned by fan control?
@@ -61,7 +61,7 @@
             ptrMatch = std::make_unique<sdbusplus::server::match::match>(
                 mgr->getBus(), match.c_str(),
                 std::bind(std::mem_fn(&Manager::handleSignal), &(*mgr),
-                          std::placeholders::_1, dataPkgs.get()));
+                          std::placeholders::_1, dataPkgs));
         }
         signalData.emplace_back(std::move(dataPkgs), std::move(ptrMatch));
     }
@@ -69,9 +69,8 @@
     {
         // Signal subscription already exists
         // Only a single signal data entry tied to each match is supported
-        auto& pkgs = std::get<std::unique_ptr<std::vector<SignalPkg>>>(
-            signalData.front());
-        for (auto& pkg : *pkgs)
+        auto& pkgs = std::get<std::vector<SignalPkg>>(signalData.front());
+        for (auto& pkg : pkgs)
         {
             if (isSameSig(pkg))
             {
@@ -85,7 +84,7 @@
             else
             {
                 // Expected signal differs, add signal package
-                (*pkgs).emplace_back(std::move(signalPkg));
+                pkgs.emplace_back(std::move(signalPkg));
             }
         }
     }
