diff --git a/include/ADCSensor.hpp b/include/ADCSensor.hpp
index d1edf6d..9ba0060 100644
--- a/include/ADCSensor.hpp
+++ b/include/ADCSensor.hpp
@@ -66,8 +66,8 @@
               std::shared_ptr<sdbusplus::asio::connection>& conn,
               boost::asio::io_service& io, const std::string& sensorName,
               std::vector<thresholds::Threshold>&& thresholds,
-              const double scaleFactor, PowerState readState,
-              const std::string& sensorConfiguration,
+              const double scaleFactor, const float pollRate,
+              PowerState readState, const std::string& sensorConfiguration,
               std::optional<BridgeGpio>&& bridgeGpio);
     ~ADCSensor() override;
     void setupRead(void);
@@ -79,6 +79,7 @@
     std::shared_ptr<boost::asio::streambuf> readBuf;
     std::string path;
     double scaleFactor;
+    unsigned int sensorPollMs;
     std::optional<BridgeGpio> bridgeGpio;
     thresholds::ThresholdTimer thresholdTimer;
     void handleResponse(const boost::system::error_code& err);
diff --git a/include/Thresholds.hpp b/include/Thresholds.hpp
index 559f4df..9b9799d 100644
--- a/include/Thresholds.hpp
+++ b/include/Thresholds.hpp
@@ -98,53 +98,8 @@
         }
     }
 
-    void startTimer(const Threshold& threshold, bool assert, double assertValue)
-    {
-        struct TimerUsed timerUsed = {};
-        constexpr const size_t waitTime = 5;
-        TimerPair* pair = nullptr;
-
-        for (TimerPair& timer : timers)
-        {
-            if (!timer.first.used)
-            {
-                pair = &timer;
-                break;
-            }
-        }
-        if (pair == nullptr)
-        {
-            pair = &timers.emplace_back(timerUsed,
-                                        boost::asio::deadline_timer(io));
-        }
-
-        pair->first.used = true;
-        pair->first.level = threshold.level;
-        pair->first.direction = threshold.direction;
-        pair->first.assert = assert;
-        pair->second.expires_from_now(boost::posix_time::seconds(waitTime));
-        pair->second.async_wait([this, pair, threshold, assert,
-                                 assertValue](boost::system::error_code ec) {
-            pair->first.used = false;
-
-            if (ec == boost::asio::error::operation_aborted)
-            {
-                return; // we're being canceled
-            }
-            if (ec)
-            {
-
-                std::cerr << "timer error: " << ec.message() << "\n";
-
-                return;
-            }
-            if (isPowerOn())
-            {
-                assertThresholds(sensor, assertValue, threshold.level,
-                                 threshold.direction, assert);
-            }
-        });
-    }
+    void startTimer(const Threshold& threshold, bool assert,
+                    double assertValue);
 
     boost::asio::io_service& io;
     std::list<TimerPair> timers;
