diff --git a/activation.cpp b/activation.cpp
index 53e29f7..d024d07 100644
--- a/activation.cpp
+++ b/activation.cpp
@@ -185,7 +185,7 @@
         {
             auto reply = bus.call(method);
 
-            sdbusplus::message::variant<std::string> result;
+            std::variant<std::string> result;
             reply.read(result);
             auto applyTime = std::get<std::string>(result);
             if (applyTime == applyTimeImmediate)
@@ -214,7 +214,7 @@
 
     auto method = bus.new_method_call(service.c_str(), hostStateObjPath,
                                       dbusPropIntf, "Set");
-    sdbusplus::message::variant<std::string> hostReboot = hostStateRebootVal;
+    std::variant<std::string> hostReboot = hostStateRebootVal;
     method.append(hostStateIntf, hostStateRebootProp, hostReboot);
 
     try
@@ -279,7 +279,7 @@
 
     method.append(FIELDMODE_INTERFACE, "FieldModeEnabled");
 
-    sdbusplus::message::variant<bool> fieldMode;
+    std::variant<bool> fieldMode;
 
     try
     {
diff --git a/item_updater.cpp b/item_updater.cpp
index 32e046c..141150f 100644
--- a/item_updater.cpp
+++ b/item_updater.cpp
@@ -237,7 +237,7 @@
                                       SYSTEMD_PROPERTY_INTERFACE, "Get");
     method.append(CHASSIS_STATE_OBJ, "CurrentPowerState");
 
-    sdbusplus::message::variant<std::string> currentChassisState;
+    std::variant<std::string> currentChassisState;
 
     try
     {
diff --git a/msl_verify.cpp b/msl_verify.cpp
index 0de9da3..d6b2ff7 100644
--- a/msl_verify.cpp
+++ b/msl_verify.cpp
@@ -87,7 +87,7 @@
     method.append(ASSOCIATIONS_INTERFACE, "Associations");
     auto response = bus.call(method);
 
-    sdbusplus::message::variant<AssociationList> associations;
+    std::variant<AssociationList> associations;
     try
     {
         response.read(associations);
@@ -116,7 +116,7 @@
             method.append(VERSION_IFACE, "Version");
             response = bus.call(method);
 
-            sdbusplus::message::variant<std::string> functionalVersion;
+            std::variant<std::string> functionalVersion;
             try
             {
                 response.read(functionalVersion);
diff --git a/version.cpp b/version.cpp
index 59d40da..f7471c2 100644
--- a/version.cpp
+++ b/version.cpp
@@ -145,7 +145,7 @@
 void Version::updateDeleteInterface(sdbusplus::message::message& msg)
 {
     std::string interface, chassisState;
-    std::map<std::string, sdbusplus::message::variant<std::string>> properties;
+    std::map<std::string, std::variant<std::string>> properties;
 
     msg.read(interface, properties);
 
