diff --git a/service/src/mainapp.cpp b/service/src/mainapp.cpp
index fc3f75a..a7f2239 100644
--- a/service/src/mainapp.cpp
+++ b/service/src/mainapp.cpp
@@ -328,7 +328,7 @@
                 }
             }
         }
-        });
+    });
 }
 
 static void monitorPlatformStateChange(
@@ -405,7 +405,7 @@
             }
             checkAndSetCheckpoint(server, conn);
         });
-        },
+    },
         "org.freedesktop.systemd1", "/org/freedesktop/systemd1",
         "org.freedesktop.DBus.Properties", "Get",
         "org.freedesktop.systemd1.Manager", "FinishTimestamp");
@@ -429,7 +429,7 @@
                 "checkpoint 9.");
             setBMCBootCompleteChkPoint(bmcBootFinishedChkPoint);
         }
-        });
+    });
     checkAndSetCheckpoint(server, conn);
 
     // Capture the Chassis state and Start the monitor timer
@@ -472,7 +472,7 @@
             // Update the D-Bus properties when chassis state changes.
             updateDbusPropertiesCache();
         }
-        });
+    });
 
     // Capture the Host state and Start the monitor timer
     // if state changed to 'Running'. Run timer until OS boot.
@@ -516,7 +516,7 @@
             // Update the D-Bus properties when host state changes.
             updateDbusPropertiesCache();
         }
-        });
+    });
 
     // Capture the OS state change and stop monitor timer
     // if OS boots completly or becomes Inactive.
@@ -561,7 +561,7 @@
                 }
             }
         }
-        });
+    });
 
     // First time, check and log events if any.
     checkAndLogEvents(conn);
@@ -580,7 +580,7 @@
                 phosphor::logging::entry("MSG=%s", ec.message().c_str()));
             return;
         }
-        },
+    },
         "xyz.openbmc_project.Settings",
         "/xyz/openbmc_project/software/rot_fw_active",
         "org.freedesktop.DBus.Properties", "Set",
diff --git a/service/src/pfr_mgr.cpp b/service/src/pfr_mgr.cpp
index e6ec29d..57e121b 100644
--- a/service/src/pfr_mgr.cpp
+++ b/service/src/pfr_mgr.cpp
@@ -70,7 +70,7 @@
                 }
             }
             return 0;
-            });
+        });
 
         versionIface->initialize();
     }
@@ -278,7 +278,7 @@
                 }
             }
             return 0;
-            },
+        },
             [this](uint8_t& propertyValue) {
             updatePostcode();
             propertyValue = postcode;
