diff --git a/src/smbioshandler.cpp b/src/smbioshandler.cpp
index e330e5a..cc882be 100644
--- a/src/smbioshandler.cpp
+++ b/src/smbioshandler.cpp
@@ -20,6 +20,7 @@
 #include <phosphor-logging/elog-errors.hpp>
 #include <phosphor-logging/log.hpp>
 #include <smbioshandler.hpp>
+#include <types.hpp>
 #include <xyz/openbmc_project/Common/error.hpp>
 
 #include <cstdint>
@@ -90,8 +91,7 @@
     return IPMI_CC_OK;
 }
 
-int sdplus_mdrv1_get_property(const std::string& name,
-                              std::variant<uint8_t, uint16_t>& value,
+int sdplus_mdrv1_get_property(const std::string& name, ipmi::DbusVariant& value,
                               std::string& service)
 {
     std::shared_ptr<sdbusplus::asio::connection> bus = getSdBus();
@@ -115,7 +115,7 @@
     std::shared_ptr<sdbusplus::asio::connection> bus = getSdBus();
     auto method = bus->new_method_call(service.c_str(), MDRV1_PATH,
                                        DBUS_PROPERTIES, "Set");
-    std::variant<uint8_t> value{regionId};
+    ipmi::DbusVariant value{regionId};
     method.append(MDRV1_INTERFACE, "RegionId", value);
     auto region = bus->call(method);
     if (region.is_method_error())
@@ -134,7 +134,7 @@
     auto requestData = reinterpret_cast<const RegionCompleteRequest*>(request);
     uint8_t status;
 
-    std::variant<uint8_t, uint16_t> value;
+    ipmi::DbusVariant value;
 
     if (*data_len != sizeof(RegionCompleteRequest))
     {
@@ -210,8 +210,8 @@
 {
     auto requestData = reinterpret_cast<const RegionReadRequest*>(request);
     auto responseData = reinterpret_cast<RegionReadResponse*>(response);
-    std::variant<uint8_t, uint16_t> regUsedVal;
-    std::variant<uint8_t, uint16_t> lockPolicyVal;
+    ipmi::DbusVariant regUsedVal;
+    ipmi::DbusVariant lockPolicyVal;
     std::vector<uint8_t> res;
 
     if (*data_len < sizeof(RegionReadRequest))
@@ -317,7 +317,7 @@
         return IPMI_CC_REQ_DATA_LEN_INVALID;
     }
 
-    std::variant<uint8_t, uint16_t> value;
+    ipmi::DbusVariant value;
 
     *data_len = 0;
 
@@ -400,7 +400,7 @@
 {
     auto requestData = reinterpret_cast<const RegionLockRequest*>(request);
     uint8_t regionId = requestData->regionId - 1;
-    std::variant<uint8_t, uint16_t> value;
+    ipmi::DbusVariant value;
     auto res = reinterpret_cast<uint8_t*>(response);
     uint8_t lockResponse;
 
