diff --git a/.clang-format b/.clang-format
index a75a2c2..e5530e6 100644
--- a/.clang-format
+++ b/.clang-format
@@ -104,7 +104,7 @@
 PenaltyBreakString: 1000
 PenaltyBreakTemplateDeclaration: 10
 PenaltyExcessCharacter: 1000000
-PenaltyReturnTypeOnItsOwnLine: 60
+PenaltyReturnTypeOnItsOwnLine: 150
 PenaltyIndentedWhitespace: 1
 PointerAlignment: Left
 QualifierAlignment: Left
diff --git a/functor.hpp b/functor.hpp
index 726c943..ca5db90 100644
--- a/functor.hpp
+++ b/functor.hpp
@@ -110,8 +110,8 @@
 }
 
 /** @brief Create objects action.  */
-inline auto
-    createObjects(std::map<sdbusplus::message::object_path, Object>&& objs)
+inline auto createObjects(
+    std::map<sdbusplus::message::object_path, Object>&& objs)
 {
     return [=](auto&, auto& m) { m.createObjects(objs); };
 }
@@ -193,8 +193,8 @@
     PropertyChangedCondition() = delete;
     ~PropertyChangedCondition() = default;
     PropertyChangedCondition(const PropertyChangedCondition&) = default;
-    PropertyChangedCondition&
-        operator=(const PropertyChangedCondition&) = default;
+    PropertyChangedCondition& operator=(const PropertyChangedCondition&) =
+        default;
     PropertyChangedCondition(PropertyChangedCondition&&) = default;
     PropertyChangedCondition& operator=(PropertyChangedCondition&&) = default;
     PropertyChangedCondition(const char* iface, const char* property,
diff --git a/manager.cpp b/manager.cpp
index 681c861..025808d 100644
--- a/manager.cpp
+++ b/manager.cpp
@@ -317,8 +317,8 @@
         const_cast<const Manager*>(this)->getInterfaceHolder(path, interface));
 }
 
-const std::any&
-    Manager::getInterfaceHolder(const char* path, const char* interface) const
+const std::any& Manager::getInterfaceHolder(const char* path,
+                                            const char* interface) const
 {
     std::string p{path};
     auto oit = _refs.find(_root + p);
diff --git a/manager.hpp b/manager.hpp
index ac9c834..6f68198 100644
--- a/manager.hpp
+++ b/manager.hpp
@@ -75,8 +75,8 @@
     void shutdown() noexcept;
 
     /** @brief sd_bus Notify method implementation callback. */
-    void
-        notify(std::map<sdbusplus::message::object_path, Object> objs) override;
+    void notify(
+        std::map<sdbusplus::message::object_path, Object> objs) override;
 
     /** @brief Event processing entry point. */
     void handleEvent(sdbusplus::message_t&, const Event& event,
