diff --git a/src/appcommands.cpp b/src/appcommands.cpp
index 870886e..8b37a1f 100644
--- a/src/appcommands.cpp
+++ b/src/appcommands.cpp
@@ -82,8 +82,7 @@
         sdbusplus::bus::match::rules::propertiesChanged(objInfo.first,
                                                         bmcStateIntf),
         [](sdbusplus::message::message& msg) {
-            std::map<std::string, sdbusplus::message::variant<std::string>>
-                props;
+            std::map<std::string, std::variant<std::string>> props;
             std::vector<std::string> inVal;
             std::string iface;
             try
diff --git a/src/smbioshandler.cpp b/src/smbioshandler.cpp
index 9ed05c2..aeaba5c 100644
--- a/src/smbioshandler.cpp
+++ b/src/smbioshandler.cpp
@@ -89,9 +89,9 @@
     return IPMI_CC_OK;
 }
 
-int sdplus_mdrv1_get_property(
-    const std::string& name,
-    sdbusplus::message::variant<uint8_t, uint16_t>& value, std::string& service)
+int sdplus_mdrv1_get_property(const std::string& name,
+                              std::variant<uint8_t, uint16_t>& value,
+                              std::string& service)
 {
     std::shared_ptr<sdbusplus::asio::connection> bus = getSdBus();
     auto method = bus->new_method_call(service.c_str(), MDRV1_PATH,
@@ -114,7 +114,7 @@
     std::shared_ptr<sdbusplus::asio::connection> bus = getSdBus();
     auto method = bus->new_method_call(service.c_str(), MDRV1_PATH,
                                        DBUS_PROPERTIES, "Set");
-    sdbusplus::message::variant<uint8_t> value{regionId};
+    std::variant<uint8_t> value{regionId};
     method.append(MDRV1_INTERFACE, "RegionId", value);
     auto region = bus->call(method);
     if (region.is_method_error())
@@ -133,7 +133,7 @@
     auto requestData = reinterpret_cast<const RegionCompleteRequest*>(request);
     uint8_t status;
 
-    sdbusplus::message::variant<uint8_t, uint16_t> value;
+    std::variant<uint8_t, uint16_t> value;
 
     if (*data_len != sizeof(RegionCompleteRequest))
     {
@@ -209,8 +209,8 @@
 {
     auto requestData = reinterpret_cast<const RegionReadRequest*>(request);
     auto responseData = reinterpret_cast<RegionReadResponse*>(response);
-    sdbusplus::message::variant<uint8_t, uint16_t> regUsedVal;
-    sdbusplus::message::variant<uint8_t, uint16_t> lockPolicyVal;
+    std::variant<uint8_t, uint16_t> regUsedVal;
+    std::variant<uint8_t, uint16_t> lockPolicyVal;
     std::vector<uint8_t> res;
 
     if (*data_len < sizeof(RegionReadRequest))
@@ -316,7 +316,7 @@
         return IPMI_CC_REQ_DATA_LEN_INVALID;
     }
 
-    sdbusplus::message::variant<uint8_t, uint16_t> value;
+    std::variant<uint8_t, uint16_t> value;
 
     *data_len = 0;
 
@@ -399,7 +399,7 @@
 {
     auto requestData = reinterpret_cast<const RegionLockRequest*>(request);
     uint8_t regionId = requestData->regionId - 1;
-    sdbusplus::message::variant<uint8_t, uint16_t> value;
+    std::variant<uint8_t, uint16_t> value;
     auto res = reinterpret_cast<uint8_t*>(response);
     uint8_t lockResponse;
 
diff --git a/src/smbiosmdrv2handler.cpp b/src/smbiosmdrv2handler.cpp
index 59390d1..425a890 100644
--- a/src/smbiosmdrv2handler.cpp
+++ b/src/smbiosmdrv2handler.cpp
@@ -59,7 +59,7 @@
 }
 
 int MDRV2::sdplusMdrv2GetProperty(const std::string &name,
-                                  sdbusplus::message::variant<uint8_t> &value,
+                                  std::variant<uint8_t> &value,
                                   const std::string &service)
 {
     std::shared_ptr<sdbusplus::asio::connection> bus = getSdBus();
