diff --git a/attn/pel/extended_user_header.hpp b/attn/pel/extended_user_header.hpp
index fa4c7f6..31a4dec 100644
--- a/attn/pel/extended_user_header.hpp
+++ b/attn/pel/extended_user_header.hpp
@@ -12,7 +12,7 @@
 {
 
 constexpr uint8_t extendedUserHeaderVersion = 0x01;
-constexpr size_t firmwareVersionSize        = 16;
+constexpr size_t firmwareVersionSize = 16;
 
 /**
  * @class ExtendedUserHeader
@@ -43,12 +43,12 @@
 class ExtendedUserHeader : public Section
 {
   public:
-    ExtendedUserHeader()                                     = delete;
-    ~ExtendedUserHeader()                                    = default;
-    ExtendedUserHeader(const ExtendedUserHeader&)            = default;
+    ExtendedUserHeader() = delete;
+    ~ExtendedUserHeader() = default;
+    ExtendedUserHeader(const ExtendedUserHeader&) = default;
     ExtendedUserHeader& operator=(const ExtendedUserHeader&) = default;
-    ExtendedUserHeader(ExtendedUserHeader&&)                 = default;
-    ExtendedUserHeader& operator=(ExtendedUserHeader&&)      = default;
+    ExtendedUserHeader(ExtendedUserHeader&&) = default;
+    ExtendedUserHeader& operator=(ExtendedUserHeader&&) = default;
 
     /**
      * @brief Constructor
diff --git a/attn/pel/pel_common.hpp b/attn/pel/pel_common.hpp
index 1d99015..dab9ea7 100644
--- a/attn/pel/pel_common.hpp
+++ b/attn/pel/pel_common.hpp
@@ -9,9 +9,9 @@
 
 enum class SectionID
 {
-    privateHeader  = 0x5048, // 'PH'
-    userHeader     = 0x5548, // 'UH'
-    primarySRC     = 0x5053, // 'PS'
+    privateHeader = 0x5048,  // 'PH'
+    userHeader = 0x5548,     // 'UH'
+    primarySRC = 0x5053,     // 'PS'
     extendedHeader = 0x4548, // 'EH'
 };
 
@@ -22,16 +22,16 @@
 
 enum class CreatorID
 {
-    hostboot   = 'B',
+    hostboot = 'B',
     hypervisor = 'H',
-    openbmc    = 'O'
+    openbmc = 'O'
 };
 
 enum class SubsystemID
 {
     hypervisor = 0x82,
-    hostboot   = 0x8a,
-    openbmc    = 0x8d
+    hostboot = 0x8a,
+    openbmc = 0x8d
 };
 
 enum class Severity
@@ -42,16 +42,16 @@
 
 enum class EventType
 {
-    na    = 0x00,
+    na = 0x00,
     trace = 0x02
 };
 
 enum class ActionFlags
 {
     service = 0x8000,
-    hidden  = 0x4000,
-    report  = 0x2000,
-    call    = 0x0800
+    hidden = 0x4000,
+    report = 0x2000,
+    call = 0x0800
 };
 
 inline ActionFlags operator|(ActionFlags a, ActionFlags b)
@@ -66,7 +66,7 @@
 
 constexpr size_t numSrcWords = 8;  // number of SRC hex words
 const size_t asciiStringSize = 32; // size of SRC ascii string
-const size_t mtmsSize        = 20; // size of an mtms field
+const size_t mtmsSize = 20;        // size of an mtms field
 
 } // namespace pel
 } // namespace attn
diff --git a/attn/pel/pel_minimal.hpp b/attn/pel/pel_minimal.hpp
index 9678518..4116049 100644
--- a/attn/pel/pel_minimal.hpp
+++ b/attn/pel/pel_minimal.hpp
@@ -37,12 +37,12 @@
 class PelMinimal
 {
   public:
-    PelMinimal()                             = delete;
-    ~PelMinimal()                            = default;
-    PelMinimal(const PelMinimal&)            = delete;
+    PelMinimal() = delete;
+    ~PelMinimal() = default;
+    PelMinimal(const PelMinimal&) = delete;
     PelMinimal& operator=(const PelMinimal&) = delete;
-    PelMinimal(PelMinimal&&)                 = delete;
-    PelMinimal& operator=(PelMinimal&&)      = delete;
+    PelMinimal(PelMinimal&&) = delete;
+    PelMinimal& operator=(PelMinimal&&) = delete;
 
     /**
      * @brief Create a minimal PEL object from raw data
diff --git a/attn/pel/pel_section.hpp b/attn/pel/pel_section.hpp
index 6d18822..4ffe03e 100644
--- a/attn/pel/pel_section.hpp
+++ b/attn/pel/pel_section.hpp
@@ -16,12 +16,12 @@
 class Section
 {
   public:
-    Section()                          = default;
-    virtual ~Section()                 = default;
-    Section(const Section&)            = default;
+    Section() = default;
+    virtual ~Section() = default;
+    Section(const Section&) = default;
     Section& operator=(const Section&) = default;
-    Section(Section&&)                 = default;
-    Section& operator=(Section&&)      = default;
+    Section(Section&&) = default;
+    Section& operator=(Section&&) = default;
 
     /**
      * @brief Returns a reference to the SectionHeader
diff --git a/attn/pel/primary_src.hpp b/attn/pel/primary_src.hpp
index d69e3a6..23b843f 100644
--- a/attn/pel/primary_src.hpp
+++ b/attn/pel/primary_src.hpp
@@ -55,19 +55,19 @@
   public:
     enum HeaderFlags
     {
-        additionalSections  = 0x01,
-        powerFaultEvent     = 0x02,
-        hypDumpInit         = 0x04,
+        additionalSections = 0x01,
+        powerFaultEvent = 0x02,
+        hypDumpInit = 0x04,
         i5OSServiceEventBit = 0x10,
-        virtualProgressSRC  = 0x80
+        virtualProgressSRC = 0x80
     };
 
-    PrimarySrc()                             = delete;
-    ~PrimarySrc()                            = default;
-    PrimarySrc(const PrimarySrc&)            = delete;
+    PrimarySrc() = delete;
+    ~PrimarySrc() = default;
+    PrimarySrc(const PrimarySrc&) = delete;
     PrimarySrc& operator=(const PrimarySrc&) = delete;
-    PrimarySrc(PrimarySrc&&)                 = delete;
-    PrimarySrc& operator=(PrimarySrc&&)      = delete;
+    PrimarySrc(PrimarySrc&&) = delete;
+    PrimarySrc& operator=(PrimarySrc&&) = delete;
 
     /**
      * @brief Constructor
diff --git a/attn/pel/private_header.hpp b/attn/pel/private_header.hpp
index 011ade5..59380dd 100644
--- a/attn/pel/private_header.hpp
+++ b/attn/pel/private_header.hpp
@@ -45,12 +45,12 @@
 class PrivateHeader : public Section
 {
   public:
-    PrivateHeader()                                = delete;
-    ~PrivateHeader()                               = default;
-    PrivateHeader(const PrivateHeader&)            = default;
+    PrivateHeader() = delete;
+    ~PrivateHeader() = default;
+    PrivateHeader(const PrivateHeader&) = default;
     PrivateHeader& operator=(const PrivateHeader&) = default;
-    PrivateHeader(PrivateHeader&&)                 = default;
-    PrivateHeader& operator=(PrivateHeader&&)      = default;
+    PrivateHeader(PrivateHeader&&) = default;
+    PrivateHeader& operator=(PrivateHeader&&) = default;
 
     /**
      * @brief Constructor
diff --git a/attn/pel/stream.hpp b/attn/pel/stream.hpp
index 5a1462d..5c03adf 100644
--- a/attn/pel/stream.hpp
+++ b/attn/pel/stream.hpp
@@ -49,12 +49,12 @@
 class Stream
 {
   public:
-    Stream()                         = delete;
-    ~Stream()                        = default;
-    Stream(const Stream&)            = default;
+    Stream() = delete;
+    ~Stream() = default;
+    Stream(const Stream&) = default;
     Stream& operator=(const Stream&) = default;
-    Stream(Stream&&)                 = default;
-    Stream& operator=(Stream&&)      = default;
+    Stream(Stream&&) = default;
+    Stream& operator=(Stream&&) = default;
 
     /**
      * @brief Constructor
diff --git a/attn/pel/user_header.hpp b/attn/pel/user_header.hpp
index 87cad50..9c8f13d 100644
--- a/attn/pel/user_header.hpp
+++ b/attn/pel/user_header.hpp
@@ -33,12 +33,12 @@
 class UserHeader : public Section
 {
   public:
-    UserHeader()                             = delete;
-    ~UserHeader()                            = default;
-    UserHeader(const UserHeader&)            = default;
+    UserHeader() = delete;
+    ~UserHeader() = default;
+    UserHeader(const UserHeader&) = default;
     UserHeader& operator=(const UserHeader&) = default;
-    UserHeader(UserHeader&&)                 = default;
-    UserHeader& operator=(UserHeader&&)      = default;
+    UserHeader(UserHeader&&) = default;
+    UserHeader& operator=(UserHeader&&) = default;
 
     /**
      * @brief Constructor
