diff --git a/src/utils.hpp b/src/utils.hpp
index 2ce64f4..4b2d718 100644
--- a/src/utils.hpp
+++ b/src/utils.hpp
@@ -143,15 +143,15 @@
 
     virtual ~UtilsInterface() = default;
 
-    virtual std::vector<std::string>
-        getPSUInventoryPaths(sdbusplus::bus_t& bus) const = 0;
+    virtual std::vector<std::string> getPSUInventoryPaths(
+        sdbusplus::bus_t& bus) const = 0;
 
     virtual std::string getService(sdbusplus::bus_t& bus, const char* path,
                                    const char* interface) const = 0;
 
-    virtual std::vector<std::string>
-        getServices(sdbusplus::bus_t& bus, const char* path,
-                    const char* interface) const = 0;
+    virtual std::vector<std::string> getServices(
+        sdbusplus::bus_t& bus, const char* path,
+        const char* interface) const = 0;
 
     virtual std::string getVersionId(const std::string& version) const = 0;
 
@@ -159,8 +159,8 @@
 
     virtual std::string getModel(const std::string& inventoryPath) const = 0;
 
-    virtual std::string
-        getLatestVersion(const std::set<std::string>& versions) const = 0;
+    virtual std::string getLatestVersion(
+        const std::set<std::string>& versions) const = 0;
 
     virtual bool isAssociated(const std::string& psuInventoryPath,
                               const AssociationList& assocs) const = 0;
@@ -183,8 +183,8 @@
 class Utils : public UtilsInterface
 {
   public:
-    std::vector<std::string>
-        getPSUInventoryPaths(sdbusplus::bus_t& bus) const override;
+    std::vector<std::string> getPSUInventoryPaths(
+        sdbusplus::bus_t& bus) const override;
 
     std::string getService(sdbusplus::bus_t& bus, const char* path,
                            const char* interface) const override;
@@ -199,8 +199,8 @@
 
     std::string getModel(const std::string& inventoryPath) const override;
 
-    std::string
-        getLatestVersion(const std::set<std::string>& versions) const override;
+    std::string getLatestVersion(
+        const std::set<std::string>& versions) const override;
 
     bool isAssociated(const std::string& psuInventoryPath,
                       const AssociationList& assocs) const override;
@@ -216,8 +216,8 @@
     return getUtils().getService(bus, path, interface);
 }
 
-inline std::vector<std::string>
-    getServices(sdbusplus::bus_t& bus, const char* path, const char* interface)
+inline std::vector<std::string> getServices(
+    sdbusplus::bus_t& bus, const char* path, const char* interface)
 {
     return getUtils().getServices(bus, path, interface);
 }
