diff --git a/image_manager.cpp b/image_manager.cpp
index c9a958d..a7687c6 100644
--- a/image_manager.cpp
+++ b/image_manager.cpp
@@ -147,8 +147,8 @@
     }
 
     // Get machine name for image to be upgraded
-    std::string machineStr = Version::getValue(manifestPath.string(),
-                                               "MachineName");
+    std::string machineStr =
+        Version::getValue(manifestPath.string(), "MachineName");
     if (!machineStr.empty())
     {
         if (machineStr != currMachine)
@@ -193,8 +193,8 @@
     auto purpose = convertedPurpose.value_or(Version::VersionPurpose::Unknown);
 
     // Get ExtendedVersion
-    std::string extendedVersion = Version::getValue(manifestPath.string(),
-                                                    "ExtendedVersion");
+    std::string extendedVersion =
+        Version::getValue(manifestPath.string(), "ExtendedVersion");
 
     // Get CompatibleNames
     std::vector<std::string> compatibleNames =
@@ -213,8 +213,8 @@
     // active versions on D-Bus that is not managed by this service.
     // So check D-Bus if there is an existing version.
     auto allSoftwareObjs = getSoftwareObjects(bus);
-    auto it = std::find(allSoftwareObjs.begin(), allSoftwareObjs.end(),
-                        objPath);
+    auto it =
+        std::find(allSoftwareObjs.begin(), allSoftwareObjs.end(), objPath);
     if (versions.find(id) == versions.end() && it == allSoftwareObjs.end())
     {
         // Rename the temp dir to image dir
@@ -228,8 +228,8 @@
             imageDirPath.string(), compatibleNames,
             std::bind(&Manager::erase, this, std::placeholders::_1), id);
         versionPtr->deleteObject =
-            std::make_unique<phosphor::software::manager::Delete>(bus, objPath,
-                                                                  *versionPtr);
+            std::make_unique<phosphor::software::manager::Delete>(
+                bus, objPath, *versionPtr);
         versions.insert(std::make_pair(id, std::move(versionPtr)));
     }
     else
