diff --git a/.clang-format b/.clang-format
index ea71ad6..79a474d 100644
--- a/.clang-format
+++ b/.clang-format
@@ -5,7 +5,7 @@
 AlignAfterOpenBracket: Align
 AlignConsecutiveAssignments: false
 AlignConsecutiveDeclarations: false
-AlignEscapedNewlinesLeft: false
+AlignEscapedNewlines: Right
 AlignOperands:   true
 AlignTrailingComments: true
 AllowAllParametersOfDeclarationOnNextLine: true
@@ -14,13 +14,13 @@
 AllowShortFunctionsOnASingleLine: None
 AllowShortIfStatementsOnASingleLine: false
 AllowShortLoopsOnASingleLine: false
-AlwaysBreakAfterDefinitionReturnType: None
 AlwaysBreakAfterReturnType: None
 AlwaysBreakBeforeMultilineStrings: false
-AlwaysBreakTemplateDeclarations: true
+AlwaysBreakTemplateDeclarations: Yes
 BinPackArguments: true
 BinPackParameters: true
 BraceWrapping:
+  AfterCaseLabel:  true
   AfterClass:      true
   AfterControlStatement: true
   AfterEnum:       true
@@ -29,19 +29,27 @@
   AfterObjCDeclaration: true
   AfterStruct:     true
   AfterUnion:      true
+  AfterExternBlock: true
   BeforeCatch:     true
   BeforeElse:      true
   IndentBraces:    false
+  SplitEmptyFunction:   false
+  SplitEmptyRecord:     false
+  SplitEmptyNamespace:  false
 BreakBeforeBinaryOperators: None
 BreakBeforeBraces: Custom
 BreakBeforeTernaryOperators: true
 BreakConstructorInitializers: AfterColon
+BreakInheritanceList: AfterColon
+BreakStringLiterals: false
 ColumnLimit:     80
 CommentPragmas:  '^ IWYU pragma:'
+CompactNamespaces: false
 ConstructorInitializerAllOnOneLineOrOnePerLine: false
 ConstructorInitializerIndentWidth: 4
 ContinuationIndentWidth: 4
 Cpp11BracedListStyle: true
+DeriveLineEnding: false
 DerivePointerAlignment: false
 PointerAlignment: Left
 DisableFormat:   false
@@ -51,21 +59,25 @@
 IncludeBlocks: Regroup
 IncludeCategories:
   - Regex:           '^[<"](gtest|gmock)'
-    Priority:        5
+    Priority:        7
   - Regex:           '^"config.h"'
     Priority:        -1
-  - Regex:           '^".*\.hpp"'
+  - Regex:           '^".*\.h"'
     Priority:        1
-  - Regex:           '^<.*\.h>'
+  - Regex:           '^".*\.hpp"'
     Priority:        2
-  - Regex:           '^<.*'
+  - Regex:           '^<.*\.h>'
     Priority:        3
-  - Regex:           '.*'
+  - Regex:           '^<.*\.hpp>'
     Priority:        4
+  - Regex:           '^<.*'
+    Priority:        5
+  - Regex:           '.*'
+    Priority:        6
 IndentCaseLabels: true
 IndentWidth:     4
 IndentWrappedFunctionNames: true
-KeepEmptyLinesAtTheStartOfBlocks: true
+KeepEmptyLinesAtTheStartOfBlocks: false
 MacroBlockBegin: ''
 MacroBlockEnd:   ''
 MaxEmptyLinesToKeep: 1
@@ -83,8 +95,13 @@
 SortIncludes:    true
 SortUsingDeclarations: true
 SpaceAfterCStyleCast: false
+SpaceAfterTemplateKeyword: true
 SpaceBeforeAssignmentOperators: true
+SpaceBeforeCpp11BracedList: false
+SpaceBeforeCtorInitializerColon: true
+SpaceBeforeInheritanceColon: true
 SpaceBeforeParens: ControlStatements
+SpaceBeforeRangeBasedForLoopColon: true
 SpaceInEmptyParentheses: false
 SpacesBeforeTrailingComments: 1
 SpacesInAngles:  false
@@ -92,8 +109,8 @@
 SpacesInCStyleCastParentheses: false
 SpacesInParentheses: false
 SpacesInSquareBrackets: false
-Standard:        Cpp11
+Standard:        Latest
 TabWidth:        4
+UseCRLF: false
 UseTab:          Never
 ...
-
diff --git a/mslverify/util.hpp b/mslverify/util.hpp
index 2d20392..3792908 100644
--- a/mslverify/util.hpp
+++ b/mslverify/util.hpp
@@ -5,9 +5,10 @@
 #include <phosphor-logging/log.hpp>
 #include <sdbusplus/bus.hpp>
 #include <sdbusplus/message.hpp>
-#include <string>
 #include <xyz/openbmc_project/Common/error.hpp>
 
+#include <string>
+
 namespace util
 {
 namespace detail
diff --git a/mslverify/verify.cpp b/mslverify/verify.cpp
index a4b3ece..f86ed1f 100644
--- a/mslverify/verify.cpp
+++ b/mslverify/verify.cpp
@@ -28,8 +28,7 @@
     std::string path;
 
     BusMeetsMSL(const std::string& p) : path(p)
-    {
-    }
+    {}
 
     auto operator()(const T& arg)
     {
diff --git a/src/callback.hpp b/src/callback.hpp
index 099cd7c..bc3ec48 100644
--- a/src/callback.hpp
+++ b/src/callback.hpp
@@ -2,12 +2,13 @@
 
 #include "data_types.hpp"
 
-#include <chrono>
-#include <cstddef>
 #include <sdeventplus/clock.hpp>
 #include <sdeventplus/event.hpp>
 #include <sdeventplus/utility/timer.hpp>
 
+#include <chrono>
+#include <cstddef>
+
 namespace phosphor
 {
 namespace dbus
@@ -83,8 +84,7 @@
 
     explicit IndexedConditional(const PropertyIndex& conditionIndex) :
         Conditional(), index(conditionIndex)
-    {
-    }
+    {}
 
     /** @brief Test the condition. */
     virtual bool operator()() override = 0;
@@ -108,8 +108,7 @@
     virtual ~IndexedCallback() = default;
     explicit IndexedCallback(const PropertyIndex& callbackIndex) :
         Callback(), index(callbackIndex)
-    {
-    }
+    {}
 
     /** @brief Run the callback. */
     virtual void operator()(Context ctx) override = 0;
@@ -141,8 +140,7 @@
     ~GroupOfCallbacks() = default;
     explicit GroupOfCallbacks(const std::vector<size_t>& graphEntry) :
         graph(graphEntry)
-    {
-    }
+    {}
 
     /** @brief Run the callbacks. */
     void operator()(Context ctx) override
@@ -175,8 +173,7 @@
                         Conditional& cond) :
         graph(graphEntry),
         condition(cond)
-    {
-    }
+    {}
 
     /** @brief Run the callback if the condition is satisfied. */
     virtual void operator()(Context ctx) override
@@ -225,8 +222,7 @@
                        const std::chrono::microseconds& delay) :
         ConditionalCallback<CallbackAccess>(graphEntry, cond),
         delayInterval(delay), timer(nullptr)
-    {
-    }
+    {}
 
     /** @brief Start internal timer if the condition is satisfied.
      *
diff --git a/src/count.hpp b/src/count.hpp
index 35bf5ed..f5c4bb3 100644
--- a/src/count.hpp
+++ b/src/count.hpp
@@ -49,8 +49,7 @@
                    bool oneshot = false) :
         IndexedConditional(conditionIndex),
         countOp(_countOp), propertyOp(_propertyOp), oneshot(oneshot)
-    {
-    }
+    {}
 
     bool operator()() override
     {
diff --git a/src/data_types.hpp b/src/data_types.hpp
index b266a29..731e7e8 100644
--- a/src/data_types.hpp
+++ b/src/data_types.hpp
@@ -2,14 +2,14 @@
 
 #include "tupleref.hpp"
 
-#include <any>
 #include <sdbusplus/message.hpp>
 #include <sdbusplus/utility/merge_variants.hpp>
-#include <string>
 #include <xyz/openbmc_project/Association/Definitions/server.hpp>
 #include <xyz/openbmc_project/Logging/Entry/server.hpp>
 #include <xyz/openbmc_project/Software/Version/server.hpp>
 
+#include <any>
+
 namespace phosphor
 {
 namespace dbus
diff --git a/src/elog.hpp b/src/elog.hpp
index 24a4582..4b3916e 100644
--- a/src/elog.hpp
+++ b/src/elog.hpp
@@ -4,6 +4,8 @@
 #include <phosphor-logging/elog-errors.hpp>
 #include <phosphor-logging/elog.hpp>
 #include <sdbusplus/exception.hpp>
+
+#include <experimental/tuple>
 #include <string>
 #include <tuple>
 
@@ -50,8 +52,7 @@
     ElogBase& operator=(ElogBase&&) = default;
     virtual ~ElogBase() = default;
     ElogBase() : Callback()
-    {
-    }
+    {}
 
     /** @brief Callback interface implementation. */
     void operator()(Context ctx) override;
@@ -100,8 +101,7 @@
     ~Elog() = default;
     Elog(Args&&... arguments) :
         ElogBase(), args(std::forward<Args>(arguments)...)
-    {
-    }
+    {}
 
   private:
     /** @brief elog interface implementation. */
@@ -150,8 +150,7 @@
     virtual ~ElogWithMetadataCapture() = default;
     explicit ElogWithMetadataCapture(const PropertyIndex& index) :
         IndexedCallback(index)
-    {
-    }
+    {}
 
     /**
      * @brief Callback interface implementation that
diff --git a/src/event.hpp b/src/event.hpp
index d8ab917..13c6d52 100644
--- a/src/event.hpp
+++ b/src/event.hpp
@@ -4,6 +4,7 @@
 #include "event_manager.hpp"
 
 #include <phosphor-logging/log.hpp>
+
 #include <sstream>
 #include <string>
 
@@ -31,8 +32,7 @@
     EventBase& operator=(EventBase&&) = default;
     virtual ~EventBase() = default;
     EventBase(const PropertyIndex& index) : IndexedCallback(index)
-    {
-    }
+    {}
 
     /** @brief Callback interface implementation. */
     void operator()(Context ctx) override
@@ -97,8 +97,7 @@
           const PropertyIndex& index) :
         EventBase(index),
         name(eventName), message(eventMessage)
-    {
-    }
+    {}
 
   private:
     /** @brief Create the event Dbus Object.
diff --git a/src/event_entry.hpp b/src/event_entry.hpp
index 1f99d81..032099d 100644
--- a/src/event_entry.hpp
+++ b/src/event_entry.hpp
@@ -5,6 +5,7 @@
 
 #include <sdbusplus/bus.hpp>
 #include <sdbusplus/server/object.hpp>
+
 #include <string>
 
 namespace phosphor
diff --git a/src/event_manager.hpp b/src/event_manager.hpp
index c114000..261fa9f 100644
--- a/src/event_manager.hpp
+++ b/src/event_manager.hpp
@@ -2,10 +2,11 @@
 
 #include "event_entry.hpp"
 
+#include <sdbusplus/bus.hpp>
+
 #include <map>
 #include <memory>
 #include <queue>
-#include <sdbusplus/bus.hpp>
 #include <string>
 
 namespace phosphor
diff --git a/src/event_serialize.cpp b/src/event_serialize.cpp
index 780f8c4..9ff5308 100644
--- a/src/event_serialize.cpp
+++ b/src/event_serialize.cpp
@@ -5,9 +5,10 @@
 #include <cereal/archives/binary.hpp>
 #include <cereal/types/string.hpp>
 #include <cereal/types/vector.hpp>
-#include <fstream>
 #include <phosphor-logging/log.hpp>
 
+#include <fstream>
+
 // Register class version
 // From cereal documentation;
 // "This macro should be placed at global scope"
diff --git a/src/filters.hpp b/src/filters.hpp
index 13b1533..ba11673 100644
--- a/src/filters.hpp
+++ b/src/filters.hpp
@@ -50,8 +50,7 @@
     virtual ~OperandFilters() = default;
     explicit OperandFilters(const std::vector<std::function<bool(T)>>& _ops) :
         Filters(), ops(std::move(_ops))
-    {
-    }
+    {}
 
     bool operator()(const std::any& value) override
     {
diff --git a/src/format.hpp b/src/format.hpp
index 8fa6dc8..315fce9 100644
--- a/src/format.hpp
+++ b/src/format.hpp
@@ -16,8 +16,7 @@
 /** @brief Map format strings to undecorated C++ types. */
 template <typename T>
 struct GetFormatType
-{
-};
+{};
 template <>
 struct GetFormatType<bool>
 {
diff --git a/src/journal.hpp b/src/journal.hpp
index ad792fb..c9c2d8b 100644
--- a/src/journal.hpp
+++ b/src/journal.hpp
@@ -4,6 +4,7 @@
 #include "format.hpp"
 
 #include <phosphor-logging/log.hpp>
+
 #include <string>
 
 namespace phosphor
@@ -31,8 +32,7 @@
     virtual ~JournalBase() = default;
     JournalBase(const char* msg, const PropertyIndex& index) :
         IndexedCallback(index), message(msg)
-    {
-    }
+    {}
 
     /** @brief Callback interface implementation. */
     void operator()(Context ctx) override;
@@ -89,8 +89,7 @@
     ~Journal() = default;
     Journal(const char* msg, const PropertyIndex& index) :
         JournalBase(msg, index)
-    {
-    }
+    {}
 
   private:
     /** @brief log interface implementation. */
diff --git a/src/median.hpp b/src/median.hpp
index 8498726..9976972 100644
--- a/src/median.hpp
+++ b/src/median.hpp
@@ -46,8 +46,7 @@
                     bool oneshot = false) :
         IndexedConditional(conditionIndex),
         medianOp(_medianOp), oneshot(oneshot)
-    {
-    }
+    {}
 
     bool operator()() override
     {
diff --git a/src/method.hpp b/src/method.hpp
index 92d6396..9aa86ba 100644
--- a/src/method.hpp
+++ b/src/method.hpp
@@ -3,6 +3,8 @@
 #include "callback.hpp"
 
 #include <phosphor-logging/log.hpp>
+
+#include <experimental/tuple>
 #include <string>
 #include <tuple>
 
@@ -69,8 +71,7 @@
                const std::string& m) :
         Callback(),
         bus(b), path(p), interface(i), method(m)
-    {
-    }
+    {}
 
     /** @brief Callback interface implementation. */
     void operator()(Context ctx) override = 0;
@@ -103,8 +104,7 @@
            MethodArgs&&... arguments) :
         MethodBase(bus, path, iface, method),
         args(std::forward<MethodArgs>(arguments)...)
-    {
-    }
+    {}
 
     /** @brief Callback interface implementation. */
     void operator()(Context ctx) override
diff --git a/src/pathwatch.hpp b/src/pathwatch.hpp
index 25fd6de..bc0cb3a 100644
--- a/src/pathwatch.hpp
+++ b/src/pathwatch.hpp
@@ -36,8 +36,7 @@
     virtual ~PathWatch() = default;
     PathWatch(const std::string& path, Callback& callback) :
         Watch(), objectPath(path), cb(callback), alreadyRan(false)
-    {
-    }
+    {}
 
     /** @brief Start the watch.
      *
diff --git a/src/pathwatchimpl.hpp b/src/pathwatchimpl.hpp
index 8b7e8ee..e1e8f97 100644
--- a/src/pathwatchimpl.hpp
+++ b/src/pathwatchimpl.hpp
@@ -11,6 +11,7 @@
 
 #include <sdbusplus/bus/match.hpp>
 #include <sdbusplus/message.hpp>
+
 #include <vector>
 
 namespace phosphor
diff --git a/src/propertywatch.hpp b/src/propertywatch.hpp
index 8a3c07b..1d88eae 100644
--- a/src/propertywatch.hpp
+++ b/src/propertywatch.hpp
@@ -44,8 +44,7 @@
         Watch(),
         index(watchIndex), cb(callback), alreadyRan(false),
         ignoreStartCallback(ignoreStartCallback)
-    {
-    }
+    {}
 
     /** @brief Start the watch.
      *
@@ -130,16 +129,14 @@
         PropertyWatch<DBusInterfaceType>(watchIndex, ignoreStartCallback,
                                          &callback),
         filterOps(filterOps)
-    {
-    }
+    {}
     PropertyWatchOfType(const PropertyIndex& watchIndex,
                         bool ignoreStartCallback = false,
                         Filters* filterOps = nullptr) :
         PropertyWatch<DBusInterfaceType>(watchIndex, ignoreStartCallback,
                                          nullptr),
         filterOps(filterOps)
-    {
-    }
+    {}
 
     /** @brief PropertyMatch implementation for PropertyWatchOfType.
      *
diff --git a/src/propertywatchimpl.hpp b/src/propertywatchimpl.hpp
index 0187bd1..ae0ed29 100644
--- a/src/propertywatchimpl.hpp
+++ b/src/propertywatchimpl.hpp
@@ -6,6 +6,7 @@
 
 #include <sdbusplus/bus/match.hpp>
 #include <sdbusplus/message.hpp>
+
 #include <string>
 #include <vector>
 
diff --git a/src/resolve_errors.hpp b/src/resolve_errors.hpp
index 979261a..d8038ba 100644
--- a/src/resolve_errors.hpp
+++ b/src/resolve_errors.hpp
@@ -34,8 +34,7 @@
      *                      Normally an inventory path.
      */
     explicit ResolveCallout(const std::string& callout) : callout(callout)
-    {
-    }
+    {}
 
     /**
      * @brief Callback interface to resolve errors
diff --git a/src/sdbusplus.hpp b/src/sdbusplus.hpp
index f7049ac..1ff38a8 100644
--- a/src/sdbusplus.hpp
+++ b/src/sdbusplus.hpp
@@ -7,6 +7,7 @@
 #include <sdbusplus/bus/match.hpp>
 #include <sdbusplus/exception.hpp>
 #include <sdbusplus/message.hpp>
+
 #include <string>
 
 struct Loop;
diff --git a/src/snmp_trap.hpp b/src/snmp_trap.hpp
index 4555e65..34169b8 100644
--- a/src/snmp_trap.hpp
+++ b/src/snmp_trap.hpp
@@ -57,15 +57,13 @@
     SNMPTrap& operator=(SNMPTrap&&) = default;
     virtual ~SNMPTrap() = default;
     SNMPTrap() : Callback()
-    {
-    }
+    {}
 
     /** @brief Callback interface implementation.
      *  @param[in] ctc - context.
      */
     void operator()(Context ctx)
-    {
-    }
+    {}
 
     /** @brief Callback interface implementation.
      *  @param[in] ctc - context.
diff --git a/src/test/propertywatchtest.cpp b/src/test/propertywatchtest.cpp
index 6ae36c9..1df64fb 100644
--- a/src/test/propertywatchtest.cpp
+++ b/src/test/propertywatchtest.cpp
@@ -52,8 +52,7 @@
 
 template <typename T>
 struct Values
-{
-};
+{};
 template <>
 struct Values<uint8_t>
 {
@@ -123,8 +122,7 @@
 
 template <typename T>
 struct FilteredValues
-{
-};
+{};
 
 template <>
 struct FilteredValues<uint8_t>
diff --git a/src/test/propertywatchtest.hpp b/src/test/propertywatchtest.hpp
index e27ba18..6fcf45f 100644
--- a/src/test/propertywatchtest.hpp
+++ b/src/test/propertywatchtest.hpp
@@ -295,8 +295,7 @@
  */
 template <typename T>
 struct Expect
-{
-};
+{};
 
 template <>
 struct Expect<uint64_t>
