diff --git a/.clang-format b/.clang-format
index d43e884..28e3328 100644
--- a/.clang-format
+++ b/.clang-format
@@ -87,7 +87,7 @@
 IndentWrappedFunctionNames: true
 InsertNewlineAtEOF: true
 KeepEmptyLinesAtTheStartOfBlocks: false
-LambdaBodyIndentation: OuterScope
+LambdaBodyIndentation: Signature
 LineEnding: LF
 MacroBlockBegin: ''
 MacroBlockEnd:   ''
@@ -98,13 +98,14 @@
 ObjCSpaceBeforeProtocolList: true
 PackConstructorInitializers: BinPack
 PenaltyBreakAssignment: 25
-PenaltyBreakBeforeFirstCallParameter: 19
+PenaltyBreakBeforeFirstCallParameter: 50
 PenaltyBreakComment: 300
 PenaltyBreakFirstLessLess: 120
 PenaltyBreakString: 1000
+PenaltyBreakTemplateDeclaration: 10
 PenaltyExcessCharacter: 1000000
 PenaltyReturnTypeOnItsOwnLine: 60
-PenaltyIndentedWhitespace: 0
+PenaltyIndentedWhitespace: 1
 PointerAlignment: Left
 QualifierAlignment: Left
 ReferenceAlignment: Left
diff --git a/dump-extensions/openpower-dumps/dump_manager_system.cpp b/dump-extensions/openpower-dumps/dump_manager_system.cpp
index 19fb1b5..3bd2d7e 100644
--- a/dump-extensions/openpower-dumps/dump_manager_system.cpp
+++ b/dump-extensions/openpower-dumps/dump_manager_system.cpp
@@ -178,9 +178,9 @@
     {
         lg2::error("System dump can be initiated only when the host is up "
                    "or quiesced or starting to poweroff");
-        elog<NotAllowed>(
-            Reason("System dump can be initiated only when the host is up "
-                   "or quiesced or starting to poweroff"));
+        elog<NotAllowed>(Reason(
+            "System dump can be initiated only when the host is up "
+            "or quiesced or starting to poweroff"));
         return std::string();
     }
 
diff --git a/dump-extensions/openpower-dumps/op_dump_util.cpp b/dump-extensions/openpower-dumps/op_dump_util.cpp
index 37cd8f7..fe3f236 100644
--- a/dump-extensions/openpower-dumps/op_dump_util.cpp
+++ b/dump-extensions/openpower-dumps/op_dump_util.cpp
@@ -37,8 +37,8 @@
     {
         auto service = phosphor::dump::getService(bus, policy, enable);
 
-        auto method = bus.new_method_call(service.c_str(), policy, property,
-                                          "Get");
+        auto method =
+            bus.new_method_call(service.c_str(), policy, property, "Get");
         method.append(enable, "Enabled");
         auto reply = bus.call(method);
         std::variant<bool> v;
diff --git a/dump_manager.hpp b/dump_manager.hpp
index c605cdc..2dda186 100644
--- a/dump_manager.hpp
+++ b/dump_manager.hpp
@@ -43,8 +43,8 @@
      */
     Manager(sdbusplus::bus_t& bus, const char* path,
             const std::string& baseEntryPath) :
-        Iface(bus, path, Iface::action::defer_emit),
-        bus(bus), lastEntryId(0), baseEntryPath(baseEntryPath)
+        Iface(bus, path, Iface::action::defer_emit), bus(bus), lastEntryId(0),
+        baseEntryPath(baseEntryPath)
     {}
 
     /** @brief Construct dump d-bus objects from their persisted
diff --git a/dump_manager_bmc.cpp b/dump_manager_bmc.cpp
index 1fa0acd..a6c64d6 100644
--- a/dump_manager_bmc.cpp
+++ b/dump_manager_bmc.cpp
@@ -275,8 +275,8 @@
         if ((std::filesystem::is_directory(p.path())) &&
             std::all_of(idStr.begin(), idStr.end(), ::isdigit))
         {
-            lastEntryId = std::max(lastEntryId,
-                                   static_cast<uint32_t>(std::stoul(idStr)));
+            lastEntryId =
+                std::max(lastEntryId, static_cast<uint32_t>(std::stoul(idStr)));
             for (const auto& file :
                  std::filesystem::directory_iterator(p.path()))
             {
@@ -288,9 +288,9 @@
 
                 // Entry Object path.
                 auto objPath = std::filesystem::path(baseEntryPath) / idStr;
-                auto entry = Entry::deserializeEntry(bus, std::stoul(idStr),
-                                                     objPath.string(),
-                                                     file.path(), *this);
+                auto entry = Entry::deserializeEntry(
+                    bus, std::stoul(idStr), objPath.string(), file.path(),
+                    *this);
 
                 if (entry != nullptr)
                 {
diff --git a/dump_manager_faultlog.cpp b/dump_manager_faultlog.cpp
index 8e0967e..516706e 100644
--- a/dump_manager_faultlog.cpp
+++ b/dump_manager_faultlog.cpp
@@ -58,8 +58,8 @@
     auto idString = std::to_string(id);
     auto objPath = std::filesystem::path(baseEntryPath) / idString;
 
-    std::filesystem::path faultLogFilePath(std::string(FAULTLOG_DUMP_PATH) +
-                                           idString);
+    std::filesystem::path faultLogFilePath(
+        std::string(FAULTLOG_DUMP_PATH) + idString);
     std::ofstream faultLogFile;
 
     errno = 0;
@@ -95,13 +95,13 @@
                 std::chrono::system_clock::now().time_since_epoch())
                 .count();
 
-        entries.insert(
-            std::make_pair(id, std::make_unique<faultlog::Entry>(
-                                   bus, objPath.c_str(), id, timestamp,
-                                   std::filesystem::file_size(faultLogFilePath),
-                                   faultLogFilePath,
-                                   phosphor::dump::OperationStatus::Completed,
-                                   originatorId, originatorType, *this)));
+        entries.insert(std::make_pair(
+            id,
+            std::make_unique<faultlog::Entry>(
+                bus, objPath.c_str(), id, timestamp,
+                std::filesystem::file_size(faultLogFilePath), faultLogFilePath,
+                phosphor::dump::OperationStatus::Completed, originatorId,
+                originatorType, *this)));
     }
     catch (const std::invalid_argument& e)
     {
diff --git a/dump_offload.cpp b/dump_offload.cpp
index bb647e5..4958b0c 100644
--- a/dump_offload.cpp
+++ b/dump_offload.cpp
@@ -72,8 +72,8 @@
                 }
                 lg2::error("writeOnUnixSocket: write() failed, errno: {ERRNO}",
                            "ERRNO", errno);
-                std::string msg = "write() on socket failed " +
-                                  std::string(strerror(errno));
+                std::string msg =
+                    "write() on socket failed " + std::string(strerror(errno));
                 throw std::runtime_error(msg);
             }
         }
@@ -98,8 +98,8 @@
         sizeof(socketAddr.sun_path))
     {
         lg2::error("UNIX socket path too long");
-        std::string msg = "UNIX socket path is too long " +
-                          std::string(strerror(errno));
+        std::string msg =
+            "UNIX socket path is too long " + std::string(strerror(errno));
         throw std::length_error(msg);
     }
     strncpy(socketAddr.sun_path, sockPath.c_str(),
@@ -168,8 +168,8 @@
                 lg2::error(
                     "accept() failed, errno: {ERRNO}, DUMP_ID: {DUMP_ID}",
                     "ERRNO", errno, "DUMP_ID", dumpId);
-                std::string msg = "accept() failed " +
-                                  std::string(strerror(errno));
+                std::string msg =
+                    "accept() failed " + std::string(strerror(errno));
                 throw std::runtime_error(msg);
             }
 
diff --git a/dump_utils.hpp b/dump_utils.hpp
index ce66a00..4e06bc0 100644
--- a/dump_utils.hpp
+++ b/dump_utils.hpp
@@ -109,9 +109,9 @@
     T retVal{};
     try
     {
-        auto properties = bus.new_method_call(service.c_str(), object.c_str(),
-                                              "org.freedesktop.DBus.Properties",
-                                              "Get");
+        auto properties =
+            bus.new_method_call(service.c_str(), object.c_str(),
+                                "org.freedesktop.DBus.Properties", "Get");
         properties.append(intf);
         properties.append(prop);
         auto result = bus.call(properties);
diff --git a/host-transport-extensions/pldm/common/pldm_utils.cpp b/host-transport-extensions/pldm/common/pldm_utils.cpp
index 220b8f8..c8cf1d0 100644
--- a/host-transport-extensions/pldm/common/pldm_utils.cpp
+++ b/host-transport-extensions/pldm/common/pldm_utils.cpp
@@ -27,9 +27,9 @@
         auto e = errno;
         lg2::error("pldm_open failed, errno: {ERRNO}, FD: FD", "ERRNO", e, "FD",
                    fd);
-        elog<NotAllowed>(
-            Reason("Required host dump action via pldm is not allowed due "
-                   "to pldm_open failed"));
+        elog<NotAllowed>(Reason(
+            "Required host dump action via pldm is not allowed due "
+            "to pldm_open failed"));
     }
     return fd;
 }
diff --git a/host-transport-extensions/pldm/oem/ibm/pldm_oem_cmds.cpp b/host-transport-extensions/pldm/oem/ibm/pldm_oem_cmds.cpp
index 3670c2d..8e7d2ec 100644
--- a/host-transport-extensions/pldm/oem/ibm/pldm_oem_cmds.cpp
+++ b/host-transport-extensions/pldm/oem/ibm/pldm_oem_cmds.cpp
@@ -86,9 +86,9 @@
         else
         {
             lg2::error("EID file was empty");
-            elog<NotAllowed>(
-                Reason("Required host dump action via pldm is not "
-                       "allowed due to mctp end point read failed"));
+            elog<NotAllowed>(Reason(
+                "Required host dump action via pldm is not "
+                "allowed due to mctp end point read failed"));
         }
     }
 
diff --git a/watch.cpp b/watch.cpp
index 37a0b6a..18c4dfd 100644
--- a/watch.cpp
+++ b/watch.cpp
@@ -27,8 +27,7 @@
 Watch::Watch(const EventPtr& eventObj, const int flags, const uint32_t mask,
              const uint32_t events, const std::filesystem::path& path,
              UserType userFunc) :
-    flags(flags),
-    mask(mask), events(events), path(path), fd(inotifyInit()),
+    flags(flags), mask(mask), events(events), path(path), fd(inotifyInit()),
     userFunc(userFunc)
 {
     // Check if watch DIR exists.
@@ -49,8 +48,8 @@
         elog<InternalFailure>();
     }
 
-    auto rc = sd_event_add_io(eventObj.get(), nullptr, fd(), events, callback,
-                              this);
+    auto rc =
+        sd_event_add_io(eventObj.get(), nullptr, fd(), events, callback, this);
     if (0 > rc)
     {
         // Failed to add to event loop
