diff --git a/.clang-format b/.clang-format
index 309a9d6..bbc1bb1 100644
--- a/.clang-format
+++ b/.clang-format
@@ -50,7 +50,7 @@
 ForEachMacros:   [ foreach, Q_FOREACH, BOOST_FOREACH ]
 IndentCaseLabels: true
 IndentWidth:     4
-IndentWrappedFunctionNames: false
+IndentWrappedFunctionNames: true
 KeepEmptyLinesAtTheStartOfBlocks: true
 MacroBlockBegin: ''
 MacroBlockEnd:   ''
diff --git a/sdbusplus/message/append.hpp b/sdbusplus/message/append.hpp
index 6558fd9..85bb602 100644
--- a/sdbusplus/message/append.hpp
+++ b/sdbusplus/message/append.hpp
@@ -302,7 +302,7 @@
  */
 template <typename Tuple>
 std::enable_if_t<2 <= std::tuple_size<Tuple>::value>
-append_tuple(sd_bus_message* m, Tuple&& t)
+    append_tuple(sd_bus_message* m, Tuple&& t)
 {
     append_tuple(m, std::move(t),
                  std::make_index_sequence<std::tuple_size<Tuple>::value>());
@@ -320,7 +320,7 @@
  */
 template <typename Tuple>
 std::enable_if_t<1 == std::tuple_size<Tuple>::value>
-append_tuple(sd_bus_message* m, Tuple&& t)
+    append_tuple(sd_bus_message* m, Tuple&& t)
 {
     using itemType = decltype(std::get<0>(t));
     append_single_t<itemType>::op(m, std::forward<itemType>(std::get<0>(t)));
@@ -345,7 +345,7 @@
 template <typename Tuple, typename Arg>
 std::enable_if_t<
     can_append_multiple<types::details::type_id_downcast_t<Arg>>::value>
-append_grouping(sd_bus_message* m, Tuple&& t, Arg&& arg);
+    append_grouping(sd_bus_message* m, Tuple&& t, Arg&& arg);
 /** @brief Group a sequence of C++ types for appending into an sd_bus_message.
  *  @tparam Tuple - A tuple of previously analyzed types.
  *  @tparam Arg - The argument to analyze for grouping.
@@ -355,7 +355,7 @@
 template <typename Tuple, typename Arg>
 std::enable_if_t<
     !can_append_multiple<types::details::type_id_downcast_t<Arg>>::value>
-append_grouping(sd_bus_message* m, Tuple&& t, Arg&& arg);
+    append_grouping(sd_bus_message* m, Tuple&& t, Arg&& arg);
 /** @brief Group a sequence of C++ types for appending into an sd_bus_message.
  *  @tparam Tuple - A tuple of previously analyzed types.
  *  @tparam Arg - The argument to analyze for grouping.
@@ -366,7 +366,7 @@
 template <typename Tuple, typename Arg, typename... Rest>
 std::enable_if_t<
     can_append_multiple<types::details::type_id_downcast_t<Arg>>::value>
-append_grouping(sd_bus_message* m, Tuple&& t, Arg&& arg, Rest&&... rest);
+    append_grouping(sd_bus_message* m, Tuple&& t, Arg&& arg, Rest&&... rest);
 /** @brief Group a sequence of C++ types for appending into an sd_bus_message.
  *  @tparam Tuple - A tuple of previously analyzed types.
  *  @tparam Arg - The argument to analyze for grouping.
@@ -377,12 +377,12 @@
 template <typename Tuple, typename Arg, typename... Rest>
 std::enable_if_t<
     !can_append_multiple<types::details::type_id_downcast_t<Arg>>::value>
-append_grouping(sd_bus_message* m, Tuple&& t, Arg&& arg, Rest&&... rest);
+    append_grouping(sd_bus_message* m, Tuple&& t, Arg&& arg, Rest&&... rest);
 
 template <typename Tuple, typename Arg>
 std::enable_if_t<
     can_append_multiple<types::details::type_id_downcast_t<Arg>>::value>
-append_grouping(sd_bus_message* m, Tuple&& t, Arg&& arg)
+    append_grouping(sd_bus_message* m, Tuple&& t, Arg&& arg)
 {
     // Last element of a sequence and can_append_multiple, so add it to
     // the tuple and call append_tuple.
@@ -395,7 +395,7 @@
 template <typename Tuple, typename Arg>
 std::enable_if_t<
     !can_append_multiple<types::details::type_id_downcast_t<Arg>>::value>
-append_grouping(sd_bus_message* m, Tuple&& t, Arg&& arg)
+    append_grouping(sd_bus_message* m, Tuple&& t, Arg&& arg)
 {
     // Last element of a sequence but !can_append_multiple, so call
     // append_tuple on the previous elements and separately this single
@@ -408,7 +408,7 @@
 template <typename Tuple, typename Arg, typename... Rest>
 std::enable_if_t<
     can_append_multiple<types::details::type_id_downcast_t<Arg>>::value>
-append_grouping(sd_bus_message* m, Tuple&& t, Arg&& arg, Rest&&... rest)
+    append_grouping(sd_bus_message* m, Tuple&& t, Arg&& arg, Rest&&... rest)
 {
     // Not the last element of a sequence and can_append_multiple, so add it
     // to the tuple and keep grouping.
@@ -423,7 +423,7 @@
 template <typename Tuple, typename Arg, typename... Rest>
 std::enable_if_t<
     !can_append_multiple<types::details::type_id_downcast_t<Arg>>::value>
-append_grouping(sd_bus_message* m, Tuple&& t, Arg&& arg, Rest&&... rest)
+    append_grouping(sd_bus_message* m, Tuple&& t, Arg&& arg, Rest&&... rest)
 {
     // Not the last element of a sequence but !can_append_multiple, so call
     // append_tuple on the previous elements and separately this single
diff --git a/sdbusplus/message/read.hpp b/sdbusplus/message/read.hpp
index 31fd594..df4ebc6 100644
--- a/sdbusplus/message/read.hpp
+++ b/sdbusplus/message/read.hpp
@@ -313,7 +313,7 @@
  */
 template <typename Tuple>
 std::enable_if_t<2 <= std::tuple_size<Tuple>::value>
-read_tuple(sd_bus_message* m, Tuple&& t)
+    read_tuple(sd_bus_message* m, Tuple&& t)
 {
     read_tuple(m, std::move(t),
                std::make_index_sequence<std::tuple_size<Tuple>::value>());
@@ -331,7 +331,7 @@
  */
 template <typename Tuple>
 std::enable_if_t<1 == std::tuple_size<Tuple>::value>
-read_tuple(sd_bus_message* m, Tuple&& t)
+    read_tuple(sd_bus_message* m, Tuple&& t)
 {
     using itemType = decltype(std::get<0>(t));
     read_single_t<itemType>::op(m, std::forward<itemType>(std::get<0>(t)));
@@ -356,7 +356,7 @@
 template <typename Tuple, typename Arg>
 std::enable_if_t<
     can_read_multiple<types::details::type_id_downcast_t<Arg>>::value>
-read_grouping(sd_bus_message* m, Tuple&& t, Arg&& arg);
+    read_grouping(sd_bus_message* m, Tuple&& t, Arg&& arg);
 /** @brief Group a sequence of C++ types for reading from an sd_bus_message.
  *  @tparam Tuple - A tuple of previously analyzed types.
  *  @tparam Arg - The argument to analyze for grouping.
@@ -366,7 +366,7 @@
 template <typename Tuple, typename Arg>
 std::enable_if_t<
     !can_read_multiple<types::details::type_id_downcast_t<Arg>>::value>
-read_grouping(sd_bus_message* m, Tuple&& t, Arg&& arg);
+    read_grouping(sd_bus_message* m, Tuple&& t, Arg&& arg);
 /** @brief Group a sequence of C++ types for reading from an sd_bus_message.
  *  @tparam Tuple - A tuple of previously analyzed types.
  *  @tparam Arg - The argument to analyze for grouping.
@@ -377,7 +377,7 @@
 template <typename Tuple, typename Arg, typename... Rest>
 std::enable_if_t<
     can_read_multiple<types::details::type_id_downcast_t<Arg>>::value>
-read_grouping(sd_bus_message* m, Tuple&& t, Arg&& arg, Rest&&... rest);
+    read_grouping(sd_bus_message* m, Tuple&& t, Arg&& arg, Rest&&... rest);
 /** @brief Group a sequence of C++ types for reading from an sd_bus_message.
  *  @tparam Tuple - A tuple of previously analyzed types.
  *  @tparam Arg - The argument to analyze for grouping.
@@ -388,12 +388,12 @@
 template <typename Tuple, typename Arg, typename... Rest>
 std::enable_if_t<
     !can_read_multiple<types::details::type_id_downcast_t<Arg>>::value>
-read_grouping(sd_bus_message* m, Tuple&& t, Arg&& arg, Rest&&... rest);
+    read_grouping(sd_bus_message* m, Tuple&& t, Arg&& arg, Rest&&... rest);
 
 template <typename Tuple, typename Arg>
 std::enable_if_t<
     can_read_multiple<types::details::type_id_downcast_t<Arg>>::value>
-read_grouping(sd_bus_message* m, Tuple&& t, Arg&& arg)
+    read_grouping(sd_bus_message* m, Tuple&& t, Arg&& arg)
 {
     // Last element of a sequence and can_read_multiple, so add it to
     // the tuple and call read_tuple.
@@ -406,7 +406,7 @@
 template <typename Tuple, typename Arg>
 std::enable_if_t<
     !can_read_multiple<types::details::type_id_downcast_t<Arg>>::value>
-read_grouping(sd_bus_message* m, Tuple&& t, Arg&& arg)
+    read_grouping(sd_bus_message* m, Tuple&& t, Arg&& arg)
 {
     // Last element of a sequence but !can_read_multiple, so call
     // read_tuple on the previous elements and separately this single
@@ -419,7 +419,7 @@
 template <typename Tuple, typename Arg, typename... Rest>
 std::enable_if_t<
     can_read_multiple<types::details::type_id_downcast_t<Arg>>::value>
-read_grouping(sd_bus_message* m, Tuple&& t, Arg&& arg, Rest&&... rest)
+    read_grouping(sd_bus_message* m, Tuple&& t, Arg&& arg, Rest&&... rest)
 {
     // Not the last element of a sequence and can_read_multiple, so add it
     // to the tuple and keep grouping.
@@ -433,7 +433,7 @@
 template <typename Tuple, typename Arg, typename... Rest>
 std::enable_if_t<
     !can_read_multiple<types::details::type_id_downcast_t<Arg>>::value>
-read_grouping(sd_bus_message* m, Tuple&& t, Arg&& arg, Rest&&... rest)
+    read_grouping(sd_bus_message* m, Tuple&& t, Arg&& arg, Rest&&... rest)
 {
     // Not the last element of a sequence but !can_read_multiple, so call
     // read_tuple on the previous elements and separately this single
