diff --git a/include/ADCSensor.hpp b/include/ADCSensor.hpp
index 2b5cdd4..2397093 100644
--- a/include/ADCSensor.hpp
+++ b/include/ADCSensor.hpp
@@ -4,11 +4,6 @@
 #include <sdbusplus/asio/object_server.hpp>
 #include <sensor.hpp>
 
-enum class PowerState : bool
-{
-    on,
-    always
-};
 class ADCSensor : public Sensor
 {
   public:
diff --git a/include/IpmbSensor.hpp b/include/IpmbSensor.hpp
new file mode 100644
index 0000000..d5b0290
--- /dev/null
+++ b/include/IpmbSensor.hpp
@@ -0,0 +1,49 @@
+#pragma once
+#include "sensor.hpp"
+
+#include <boost/asio/deadline_timer.hpp>
+#include <boost/container/flat_map.hpp>
+#include <chrono>
+#include <limits>
+#include <vector>
+
+enum class IpmbType
+{
+    meSensor,
+    PXE1410CVR,
+    IR38363VR,
+    mpsVR
+};
+
+struct IpmbSensor : public Sensor
+{
+    IpmbSensor(std::shared_ptr<sdbusplus::asio::connection> &conn,
+               boost::asio::io_service &io, const std::string &name,
+               const std::string &sensorConfiguration,
+               sdbusplus::asio::object_server &objectServer,
+               std::vector<thresholds::Threshold> &&thresholds,
+               uint8_t deviceAddress);
+    ~IpmbSensor();
+
+    void checkThresholds(void) override;
+    void read(void);
+    void init(void);
+    void loadDefaults(void);
+
+    IpmbType type;
+    uint8_t commandAddress;
+    uint8_t netfn;
+    uint8_t command;
+    uint8_t deviceAddress;
+    std::vector<uint8_t> commandData;
+    std::optional<uint8_t> initCommand;
+    std::vector<uint8_t> initData;
+
+    // to date all ipmb sensors are power on only
+    PowerState readState = PowerState::on;
+
+  private:
+    sdbusplus::asio::object_server &objectServer;
+    std::shared_ptr<sdbusplus::asio::connection> dbusConnection;
+    boost::asio::deadline_timer waitTimer;
+};
\ No newline at end of file
diff --git a/include/Utils.hpp b/include/Utils.hpp
index 006c2bc..598662a 100644
--- a/include/Utils.hpp
+++ b/include/Utils.hpp
@@ -45,6 +45,12 @@
 void findLimits(std::pair<double, double>& limits,
                 const SensorBaseConfiguration* data);
 
+enum class PowerState : bool
+{
+    on,
+    always
+};
+
 template <typename T>
 inline T loadVariant(
     const boost::container::flat_map<std::string, BasicVariantType>& data,
@@ -61,6 +67,11 @@
         return sdbusplus::message::variant_ns::visit(VariantToDoubleVisitor(),
                                                      it->second);
     }
+    else if constexpr (std::is_unsigned_v<T>)
+    {
+        return sdbusplus::message::variant_ns::visit(
+            VariantToUnsignedIntVisitor(), it->second);
+    }
     else if constexpr (std::is_same_v<T, std::string>)
     {
         return sdbusplus::message::variant_ns::visit(VariantToStringVisitor(),
