diff --git a/static/activation_static.cpp b/static/activation_static.cpp
index a4cc6d1..2d42c6b 100644
--- a/static/activation_static.cpp
+++ b/static/activation_static.cpp
@@ -98,8 +98,8 @@
     std::replace(pnorFileEscaped.begin(), pnorFileEscaped.end(), '/', '-');
 
     constexpr auto updatePNORService = "openpower-pnor-update@";
-    pnorUpdateUnit = std::string(updatePNORService) + pnorFileEscaped +
-                     ".service";
+    pnorUpdateUnit =
+        std::string(updatePNORService) + pnorFileEscaped + ".service";
     auto method = bus.new_method_call(SYSTEMD_BUSNAME, SYSTEMD_PATH,
                                       SYSTEMD_INTERFACE, "StartUnit");
     method.append(pnorUpdateUnit, "replace");
@@ -139,8 +139,8 @@
     // Set Redundancy Priority before setting to Active
     if (!redundancyPriority)
     {
-        redundancyPriority = std::make_unique<RedundancyPriority>(bus, path,
-                                                                  *this, 0);
+        redundancyPriority =
+            std::make_unique<RedundancyPriority>(bus, path, *this, 0);
     }
 
     activationProgress->progress(100);
diff --git a/static/item_updater_static.cpp b/static/item_updater_static.cpp
index 24873fd..b931681 100644
--- a/static/item_updater_static.cpp
+++ b/static/item_updater_static.cpp
@@ -79,8 +79,8 @@
     fs::path versionFile = tmpDir;
     versionFile /= "version";
 
-    auto [rc, r] = pflash("-P VERSION -r", versionFile.string(),
-                          "2>&1 > /dev/null");
+    auto [rc, r] =
+        pflash("-P VERSION -r", versionFile.string(), "2>&1 > /dev/null");
     if (rc != 0)
     {
         log<level::ERR>("Failed to read VERSION", entry("RETURNCODE=%d", rc));
@@ -267,9 +267,9 @@
     if (activationState == server::Activation::Activations::Active)
     {
         // Create an association to the host inventory item
-        associations.emplace_back(std::make_tuple(ACTIVATION_FWD_ASSOCIATION,
-                                                  ACTIVATION_REV_ASSOCIATION,
-                                                  HOST_INVENTORY_PATH));
+        associations.emplace_back(
+            std::make_tuple(ACTIVATION_FWD_ASSOCIATION,
+                            ACTIVATION_REV_ASSOCIATION, HOST_INVENTORY_PATH));
 
         // Create an active association since this image is active
         createActiveAssociation(path);
@@ -280,10 +280,10 @@
     createUpdateableAssociation(path);
 
     // Create Activation instance for this version.
-    activations.insert(std::make_pair(
-        id, std::make_unique<ActivationStatic>(bus, path, *this, id,
-                                               extendedVersion, activationState,
-                                               associations)));
+    activations.insert(
+        std::make_pair(id, std::make_unique<ActivationStatic>(
+                               bus, path, *this, id, extendedVersion,
+                               activationState, associations)));
 
     // If Active, create RedundancyPriority instance for this version.
     if (activationState == server::Activation::Activations::Active)
diff --git a/static/item_updater_static.hpp b/static/item_updater_static.hpp
index f992994..77409ba 100644
--- a/static/item_updater_static.hpp
+++ b/static/item_updater_static.hpp
@@ -64,13 +64,12 @@
         AssociationList& assocs) override;
 
     /** @brief Create Version object */
-    std::unique_ptr<Version>
-        createVersionObject(const std::string& objPath,
-                            const std::string& versionId,
-                            const std::string& versionString,
-                            sdbusplus::xyz::openbmc_project::Software::server::
-                                Version::VersionPurpose versionPurpose,
-                            const std::string& filePath) override;
+    std::unique_ptr<Version> createVersionObject(
+        const std::string& objPath, const std::string& versionId,
+        const std::string& versionString,
+        sdbusplus::xyz::openbmc_project::Software::server::Version::
+            VersionPurpose versionPurpose,
+        const std::string& filePath) override;
 
     /** @brief Validate if image is valid or not */
     bool validateImage(const std::string& path);
