diff --git a/src/utils.cpp b/src/utils.cpp
index 2b77755..8fbbcd1 100644
--- a/src/utils.cpp
+++ b/src/utils.cpp
@@ -156,27 +156,27 @@
             "',path='" + std::string(power::path) + "',arg0='" +
             std::string(power::interface) + "'",
         [](sdbusplus::message_t& message) {
-            std::string objectName;
-            boost::container::flat_map<std::string, std::variant<std::string>>
-                values;
-            message.read(objectName, values);
-            auto findState = values.find(power::property);
-            if (findState != values.end())
-            {
-                powerStatusOn = boost::ends_with(
-                    std::get<std::string>(findState->second), "Running");
-            }
+        std::string objectName;
+        boost::container::flat_map<std::string, std::variant<std::string>>
+            values;
+        message.read(objectName, values);
+        auto findState = values.find(power::property);
+        if (findState != values.end())
+        {
+            powerStatusOn = boost::ends_with(
+                std::get<std::string>(findState->second), "Running");
+        }
         });
 
     conn->async_method_call(
         [](boost::system::error_code ec,
            const std::variant<std::string>& state) {
-            if (ec)
-            {
-                return;
-            }
-            powerStatusOn =
-                boost::ends_with(std::get<std::string>(state), "Running");
+        if (ec)
+        {
+            return;
+        }
+        powerStatusOn = boost::ends_with(std::get<std::string>(state),
+                                         "Running");
         },
         power::busname, power::path, properties::interface, properties::get,
         power::interface, power::property);
