diff --git a/src/button_handler.cpp b/src/button_handler.cpp
index 99ce739..ab52c66 100644
--- a/src/button_handler.cpp
+++ b/src/button_handler.cpp
@@ -226,8 +226,9 @@
     try
     {
         auto result = bus.call(method);
-        std::map<std::string, std::vector<std::string>> objectData;
-        result.read(objectData);
+        auto objectData =
+            result.unpack<std::map<std::string, std::vector<std::string>>>();
+
         return objectData.begin()->first;
     }
     catch (const sdbusplus::exception_t& e)
@@ -252,8 +253,7 @@
         method.append(hostSelectorIface, "Position");
         auto result = bus.call(method);
 
-        std::variant<size_t> HSPositionVariant;
-        result.read(HSPositionVariant);
+        auto HSPositionVariant = result.unpack<std::variant<size_t>>();
 
         auto position = std::get<size_t>(HSPositionVariant);
         return position;
@@ -273,8 +273,7 @@
     method.append(hostIface, "CurrentHostState");
     auto result = bus.call(method);
 
-    std::variant<std::string> state;
-    result.read(state);
+    auto state = result.unpack<std::variant<std::string>>();
 
     return Host::HostState::Off !=
            Host::convertHostStateFromString(std::get<std::string>(state));
@@ -415,8 +414,7 @@
 {
     try
     {
-        uint64_t time;
-        msg.read(time);
+        auto time = msg.unpack<uint64_t>();
 
         handlePowerEvent(PowerEvent::powerReleased, msg.get_path(),
                          std::chrono::microseconds(time));
@@ -464,8 +462,7 @@
         method.append(ledGroupIface, "Asserted");
         auto result = bus.call(method);
 
-        std::variant<bool> state;
-        result.read(state);
+        auto state = result.unpack<std::variant<bool>>();
 
         state = !std::get<bool>(state);
 
@@ -503,8 +500,8 @@
                                 phosphor::button::propertyIface, "GetAll");
         method.append(phosphor::button::hostSelectorIface);
         auto result = bus.call(method);
-        std::unordered_map<std::string, std::variant<size_t>> properties;
-        result.read(properties);
+        auto properties = result.unpack<
+            std::unordered_map<std::string, std::variant<size_t>>>();
 
         auto maxPosition = std::get<size_t>(properties.at("MaxPosition"));
         auto position = std::get<size_t>(properties.at("Position"));
diff --git a/src/host_then_chassis_poweroff.cpp b/src/host_then_chassis_poweroff.cpp
index 4489364..54431c4 100644
--- a/src/host_then_chassis_poweroff.cpp
+++ b/src/host_then_chassis_poweroff.cpp
@@ -193,8 +193,7 @@
         method.append(interface::chassisState, "CurrentPowerState");
         auto result = bus.call(method);
 
-        std::variant<std::string> state;
-        result.read(state);
+        auto state = result.unpack<std::variant<std::string>>();
 
         chassisState =
             Chassis::convertPowerStateFromString(std::get<std::string>(state));
@@ -220,8 +219,7 @@
         method.append(interface::bmcState, "CurrentBMCState");
         auto result = bus.call(method);
 
-        std::variant<std::string> state;
-        result.read(state);
+        auto state = result.unpack<std::variant<std::string>>();
 
         bmcState = BMC::convertBMCStateFromString(std::get<std::string>(state));
     }
