diff --git a/sections/cper-section-ampere.c b/sections/cper-section-ampere.c
index 9fa5a8b..7604dc0 100644
--- a/sections/cper-section-ampere.c
+++ b/sections/cper-section-ampere.c
@@ -1,8 +1,8 @@
 #include <stdio.h>
 #include <json.h>
-#include "Cper.h"
-#include "../cper-utils.h"
-#include "cper-section-ampere.h"
+#include <libcper/Cper.h>
+#include <libcper/cper-utils.h>
+#include <libcper/sections/cper-section-ampere.h>
 
 //Converts the given processor-generic CPER section into JSON IR.
 json_object *cper_section_ampere_to_ir(void *section)
diff --git a/sections/cper-section-ampere.h b/sections/cper-section-ampere.h
deleted file mode 100644
index 978f6db..0000000
--- a/sections/cper-section-ampere.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#ifndef CPER_SECTION_AMPERE_H
-#define CPER_SECTION_AMPERE_H
-
-#include <json.h>
-#include "Cper.h"
-
-json_object *cper_section_ampere_to_ir(void *section);
-void ir_section_ampere_to_cper(json_object *section, FILE *out);
-
-#endif
diff --git a/sections/cper-section-arm.c b/sections/cper-section-arm.c
index db0f54c..119b30a 100644
--- a/sections/cper-section-arm.c
+++ b/sections/cper-section-arm.c
@@ -7,10 +7,10 @@
 
 #include <stdio.h>
 #include <json.h>
-#include "base64.h"
-#include "Cper.h"
-#include "../cper-utils.h"
-#include "cper-section-arm.h"
+#include <libcper/base64.h>
+#include <libcper/Cper.h>
+#include <libcper/cper-utils.h>
+#include <libcper/sections/cper-section-arm.h>
 
 //Private pre-definitions.
 json_object *
diff --git a/sections/cper-section-arm.h b/sections/cper-section-arm.h
deleted file mode 100644
index 8601992..0000000
--- a/sections/cper-section-arm.h
+++ /dev/null
@@ -1,470 +0,0 @@
-#ifndef CPER_SECTION_ARM_H
-#define CPER_SECTION_ARM_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <json.h>
-#include "Cper.h"
-
-#define ARM_ERROR_VALID_BITFIELD_NAMES                                         \
-	(const char *[])                                                       \
-	{                                                                      \
-		"mpidrValid", "errorAffinityLevelValid", "runningStateValid",  \
-			"vendorSpecificInfoValid"                              \
-	}
-#define ARM_ERROR_INFO_ENTRY_VALID_BITFIELD_NAMES                              \
-	(const char *[])                                                       \
-	{                                                                      \
-		"multipleErrorValid", "flagsValid", "errorInformationValid",   \
-			"virtualFaultAddressValid",                            \
-			"physicalFaultAddressValid"                            \
-	}
-#define ARM_ERROR_INFO_ENTRY_FLAGS_NAMES                                       \
-	(const char *[])                                                       \
-	{                                                                      \
-		"firstErrorCaptured", "lastErrorCaptured", "propagated",       \
-			"overflow"                                             \
-	}
-#define ARM_CACHE_TLB_ERROR_VALID_BITFIELD_NAMES                               \
-	(const char *[])                                                       \
-	{                                                                      \
-		"transactionTypeValid", "operationValid", "levelValid",        \
-			"processorContextCorruptValid", "correctedValid",      \
-			"precisePCValid", "restartablePCValid"                 \
-	}
-#define ARM_BUS_ERROR_VALID_BITFIELD_NAMES                                     \
-	(const char *[])                                                       \
-	{                                                                      \
-		"transactionTypeValid", "operationValid", "levelValid",        \
-			"processorContextCorruptValid", "correctedValid",      \
-			"precisePCValid", "restartablePCValid",                \
-			"participationTypeValid", "timedOutValid",             \
-			"addressSpaceValid", "memoryAttributesValid",          \
-			"accessModeValid"                                      \
-	}
-#define ARM_ERROR_TRANSACTION_TYPES_KEYS                                       \
-	(int[])                                                                \
-	{                                                                      \
-		0, 1, 2                                                        \
-	}
-#define ARM_ERROR_TRANSACTION_TYPES_VALUES                                     \
-	(const char *[])                                                       \
-	{                                                                      \
-		"Instruction", "Data Access", "Generic"                        \
-	}
-#define ARM_ERROR_INFO_ENTRY_INFO_TYPES_KEYS                                   \
-	(int[])                                                                \
-	{                                                                      \
-		0, 1, 2, 3                                                     \
-	}
-#define ARM_ERROR_INFO_ENTRY_INFO_TYPES_VALUES                                 \
-	(const char *[])                                                       \
-	{                                                                      \
-		"Cache Error", "TLB Error", "Bus Error",                       \
-			"Micro-Architectural Error"                            \
-	}
-#define ARM_CACHE_BUS_OPERATION_TYPES_KEYS                                     \
-	(int[])                                                                \
-	{                                                                      \
-		0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10                               \
-	}
-#define ARM_CACHE_BUS_OPERATION_TYPES_VALUES                                   \
-	(const char *[])                                                       \
-	{                                                                      \
-		"Generic Error", "Generic Read", "Generic Write", "Data Read", \
-			"Data Write", "Instruction Fetch", "Prefetch",         \
-			"Eviction", "Snooping", "Snooped", "Management"        \
-	}
-#define ARM_TLB_OPERATION_TYPES_KEYS                                           \
-	(int[])                                                                \
-	{                                                                      \
-		0, 1, 2, 3, 4, 5, 6, 7, 8                                      \
-	}
-#define ARM_TLB_OPERATION_TYPES_VALUES                                         \
-	(const char *[])                                                       \
-	{                                                                      \
-		"Generic Error", "Generic Read", "Generic Write", "Data Read", \
-			"Data Write", "Instruction Fetch", "Prefetch",         \
-			"Local Management Operation",                          \
-			"External Management Operation"                        \
-	}
-#define ARM_BUS_PARTICIPATION_TYPES_KEYS                                       \
-	(int[])                                                                \
-	{                                                                      \
-		0, 1, 2, 3                                                     \
-	}
-#define ARM_BUS_PARTICIPATION_TYPES_VALUES                                     \
-	(const char *[])                                                       \
-	{                                                                      \
-		"Local Processor Originated Request",                          \
-			"Local Processor Responded to Request",                \
-			"Local Processor Observed", "Generic"                  \
-	}
-#define ARM_BUS_ADDRESS_SPACE_TYPES_KEYS                                       \
-	(int[])                                                                \
-	{                                                                      \
-		0, 1, 3                                                        \
-	}
-#define ARM_BUS_ADDRESS_SPACE_TYPES_VALUES                                     \
-	(const char *[])                                                       \
-	{                                                                      \
-		"External Memory Access", "Internal Memory Access",            \
-			"Device Memory Access"                                 \
-	}
-#define ARM_PROCESSOR_INFO_REGISTER_CONTEXT_TYPES_KEYS                         \
-	(int[])                                                                \
-	{                                                                      \
-		0, 1, 2, 3, 4, 5, 6, 7, 8                                      \
-	}
-#define ARM_PROCESSOR_INFO_REGISTER_CONTEXT_TYPES_VALUES                       \
-	(const char *[])                                                       \
-	{                                                                      \
-		"AArch32 General Purpose Registers",                           \
-			"AArch32 EL1 Context Registers",                       \
-			"AArch32 EL2 Context Registers",                       \
-			"AArch32 Secure Context Registers",                    \
-			"AArch64 General Purpose Registers",                   \
-			"AArch64 EL1 Context Registers",                       \
-			"AArch64 EL2 Context Registers",                       \
-			"AArch64 EL3 Context Registers",                       \
-			"Miscellaneous System Register Structure"              \
-	}
-#define ARM_AARCH32_GPR_NAMES                                                  \
-	(const char *[])                                                       \
-	{                                                                      \
-		"r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9",    \
-			"r10", "r11", "r12", "r13_sp", "r14_lr", "r15_pc"      \
-	}
-#define ARM_AARCH32_EL1_REGISTER_NAMES                                         \
-	(const char *[])                                                       \
-	{                                                                      \
-		"dfar", "dfsr", "ifar", "isr", "mair0", "mair1", "midr",       \
-			"mpidr", "nmrr", "prrr", "sctlr_ns", "spsr",           \
-			"spsr_abt", "spsr_fiq", "spsr_irq", "spsr_svc",        \
-			"spsr_und", "tpidrprw", "tpidruro", "tpidrurw",        \
-			"ttbcr", "ttbr0", "ttbr1", "dacr"                      \
-	}
-#define ARM_AARCH32_EL2_REGISTER_NAMES                                         \
-	(const char *[])                                                       \
-	{                                                                      \
-		"elr_hyp", "hamair0", "hamair1", "hcr", "hcr2", "hdfar",       \
-			"hifar", "hpfar", "hsr", "htcr", "htpidr", "httbr",    \
-			"spsr_hyp", "vtcr", "vttbr", "dacr32_el2"              \
-	}
-#define ARM_AARCH32_SECURE_REGISTER_NAMES                                      \
-	(const char *[])                                                       \
-	{                                                                      \
-		"sctlr_s", "spsr_mon"                                          \
-	}
-#define ARM_AARCH64_GPR_NAMES                                                  \
-	(const char *[])                                                       \
-	{                                                                      \
-		"x0", "x1", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9",    \
-			"x10", "x11", "x12", "x13", "x14", "x15", "x16",       \
-			"x17", "x18", "x19", "x20", "x21", "x22", "x23",       \
-			"x24", "x25", "x26", "x27", "x28", "x29", "x30", "sp"  \
-	}
-#define ARM_AARCH64_EL1_REGISTER_NAMES                                         \
-	(const char *[])                                                       \
-	{                                                                      \
-		"elr_el1", "esr_el1", "far_el1", "isr_el1", "mair_el1",        \
-			"midr_el1", "mpidr_el1", "sctlr_el1", "sp_el0",        \
-			"sp_el1", "spsr_el1", "tcr_el1", "tpidr_el0",          \
-			"tpidr_el1", "tpidrro_el0", "ttbr0_el1", "ttbr1_el1"   \
-	}
-#define ARM_AARCH64_EL2_REGISTER_NAMES                                         \
-	(const char *[])                                                       \
-	{                                                                      \
-		"elr_el2", "esr_el2", "far_el2", "hacr_el2", "hcr_el2",        \
-			"hpfar_el2", "mair_el2", "sctlr_el2", "sp_el2",        \
-			"spsr_el2", "tcr_el2", "tpidr_el2", "ttbr0_el2",       \
-			"vtcr_el2", "vttbr_el2"                                \
-	}
-#define ARM_AARCH64_EL3_REGISTER_NAMES                                         \
-	(const char *[])                                                       \
-	{                                                                      \
-		"elr_el3", "esr_el3", "far_el3", "mair_el3", "sctlr_el3",      \
-			"sp_el3", "spsr_el3", "tcr_el3", "tpidr_el3",          \
-			"ttbr0_el3"                                            \
-	}
-
-///
-/// ARM Processor Error Record
-///
-typedef struct {
-	UINT32 ValidFields;
-	UINT16 ErrInfoNum;
-	UINT16 ContextInfoNum;
-	UINT32 SectionLength;
-	UINT32 ErrorAffinityLevel;
-	UINT64 MPIDR_EL1;
-	UINT64 MIDR_EL1;
-	UINT32 RunningState;
-	UINT32 PsciState;
-} __attribute__((packed, aligned(1))) EFI_ARM_ERROR_RECORD;
-
-///
-/// ARM Processor Error Information Structure
-///
-#define ARM_ERROR_INFORMATION_TYPE_CACHE     0
-#define ARM_ERROR_INFORMATION_TYPE_TLB	     1
-#define ARM_ERROR_INFORMATION_TYPE_BUS	     2
-#define ARM_ERROR_INFORMATION_TYPE_MICROARCH 3
-
-typedef struct {
-	UINT64 ValidationBits : 16;
-	UINT64 TransactionType : 2;
-	UINT64 Operation : 4;
-	UINT64 Level : 3;
-	UINT64 ProcessorContextCorrupt : 1;
-	UINT64 Corrected : 1;
-	UINT64 PrecisePC : 1;
-	UINT64 RestartablePC : 1;
-	UINT64 Reserved : 34;
-} EFI_ARM_CACHE_ERROR_STRUCTURE;
-
-typedef struct {
-	UINT64 ValidationBits : 16;
-	UINT64 TransactionType : 2;
-	UINT64 Operation : 4;
-	UINT64 Level : 3;
-	UINT64 ProcessorContextCorrupt : 1;
-	UINT64 Corrected : 1;
-	UINT64 PrecisePC : 1;
-	UINT64 RestartablePC : 1;
-	UINT64 Reserved : 34;
-} EFI_ARM_TLB_ERROR_STRUCTURE;
-
-typedef struct {
-	UINT64 ValidationBits : 16;
-	UINT64 TransactionType : 2;
-	UINT64 Operation : 4;
-	UINT64 Level : 3;
-	UINT64 ProcessorContextCorrupt : 1;
-	UINT64 Corrected : 1;
-	UINT64 PrecisePC : 1;
-	UINT64 RestartablePC : 1;
-	UINT64 ParticipationType : 2;
-	UINT64 TimeOut : 1;
-	UINT64 AddressSpace : 2;
-	UINT64 MemoryAddressAttributes : 8;
-	UINT64 AccessMode : 1;
-	UINT64 Reserved : 19;
-} EFI_ARM_BUS_ERROR_STRUCTURE;
-
-typedef union {
-	UINT64 Value;
-	EFI_ARM_CACHE_ERROR_STRUCTURE CacheError;
-	EFI_ARM_TLB_ERROR_STRUCTURE TlbError;
-	EFI_ARM_BUS_ERROR_STRUCTURE BusError;
-} EFI_ARM_ERROR_INFORMATION_STRUCTURE;
-
-typedef struct {
-	UINT8 Version;
-	UINT8 Length;
-	UINT16 ValidationBits;
-	UINT8 Type;
-	UINT16 MultipleError;
-	UINT8 Flags;
-	EFI_ARM_ERROR_INFORMATION_STRUCTURE ErrorInformation;
-	UINT64 VirtualFaultAddress;
-	UINT64 PhysicalFaultAddress;
-} __attribute__((packed, aligned(1))) EFI_ARM_ERROR_INFORMATION_ENTRY;
-
-///
-/// ARM Processor Context Information Structure
-///
-typedef struct {
-	UINT16 Version;
-	UINT16 RegisterContextType;
-	UINT32 RegisterArraySize;
-} __attribute__((packed, aligned(1))) EFI_ARM_CONTEXT_INFORMATION_HEADER;
-
-///
-/// ARM Processor Context Register Types
-///
-#define EFI_ARM_CONTEXT_TYPE_AARCH32_GPR    0
-#define EFI_ARM_CONTEXT_TYPE_AARCH32_EL1    1
-#define EFI_ARM_CONTEXT_TYPE_AARCH32_EL2    2
-#define EFI_ARM_CONTEXT_TYPE_AARCH32_SECURE 3
-#define EFI_ARM_CONTEXT_TYPE_AARCH64_GPR    4
-#define EFI_ARM_CONTEXT_TYPE_AARCH64_EL1    5
-#define EFI_ARM_CONTEXT_TYPE_AARCH64_EL2    6
-#define EFI_ARM_CONTEXT_TYPE_AARCH64_EL3    7
-#define EFI_ARM_CONTEXT_TYPE_MISC	    8
-
-typedef struct {
-	UINT32 R0;
-	UINT32 R1;
-	UINT32 R2;
-	UINT32 R3;
-	UINT32 R4;
-	UINT32 R5;
-	UINT32 R6;
-	UINT32 R7;
-	UINT32 R8;
-	UINT32 R9;
-	UINT32 R10;
-	UINT32 R11;
-	UINT32 R12;
-	UINT32 R13_sp;
-	UINT32 R14_lr;
-	UINT32 R15_pc;
-} EFI_ARM_V8_AARCH32_GPR;
-
-typedef struct {
-	UINT32 Dfar;
-	UINT32 Dfsr;
-	UINT32 Ifar;
-	UINT32 Isr;
-	UINT32 Mair0;
-	UINT32 Mair1;
-	UINT32 Midr;
-	UINT32 Mpidr;
-	UINT32 Nmrr;
-	UINT32 Prrr;
-	UINT32 Sctlr_Ns;
-	UINT32 Spsr;
-	UINT32 Spsr_Abt;
-	UINT32 Spsr_Fiq;
-	UINT32 Spsr_Irq;
-	UINT32 Spsr_Svc;
-	UINT32 Spsr_Und;
-	UINT32 Tpidrprw;
-	UINT32 Tpidruro;
-	UINT32 Tpidrurw;
-	UINT32 Ttbcr;
-	UINT32 Ttbr0;
-	UINT32 Ttbr1;
-	UINT32 Dacr;
-} EFI_ARM_AARCH32_EL1_CONTEXT_REGISTERS;
-
-typedef struct {
-	UINT32 Elr_Hyp;
-	UINT32 Hamair0;
-	UINT32 Hamair1;
-	UINT32 Hcr;
-	UINT32 Hcr2;
-	UINT32 Hdfar;
-	UINT32 Hifar;
-	UINT32 Hpfar;
-	UINT32 Hsr;
-	UINT32 Htcr;
-	UINT32 Htpidr;
-	UINT32 Httbr;
-	UINT32 Spsr_Hyp;
-	UINT32 Vtcr;
-	UINT32 Vttbr;
-	UINT32 Dacr32_El2;
-} EFI_ARM_AARCH32_EL2_CONTEXT_REGISTERS;
-
-typedef struct {
-	UINT32 Sctlr_S;
-	UINT32 Spsr_Mon;
-} EFI_ARM_AARCH32_SECURE_CONTEXT_REGISTERS;
-
-typedef struct {
-	UINT64 X0;
-	UINT64 X1;
-	UINT64 X2;
-	UINT64 X3;
-	UINT64 X4;
-	UINT64 X5;
-	UINT64 X6;
-	UINT64 X7;
-	UINT64 X8;
-	UINT64 X9;
-	UINT64 X10;
-	UINT64 X11;
-	UINT64 X12;
-	UINT64 X13;
-	UINT64 X14;
-	UINT64 X15;
-	UINT64 X16;
-	UINT64 X17;
-	UINT64 X18;
-	UINT64 X19;
-	UINT64 X20;
-	UINT64 X21;
-	UINT64 X22;
-	UINT64 X23;
-	UINT64 X24;
-	UINT64 X25;
-	UINT64 X26;
-	UINT64 X27;
-	UINT64 X28;
-	UINT64 X29;
-	UINT64 X30;
-	UINT64 Sp;
-} EFI_ARM_V8_AARCH64_GPR;
-
-typedef struct {
-	UINT64 Elr_El1;
-	UINT64 Esr_El1;
-	UINT64 Far_El1;
-	UINT64 Isr_El1;
-	UINT64 Mair_El1;
-	UINT64 Midr_El1;
-	UINT64 Mpidr_El1;
-	UINT64 Sctlr_El1;
-	UINT64 Sp_El0;
-	UINT64 Sp_El1;
-	UINT64 Spsr_El1;
-	UINT64 Tcr_El1;
-	UINT64 Tpidr_El0;
-	UINT64 Tpidr_El1;
-	UINT64 Tpidrro_El0;
-	UINT64 Ttbr0_El1;
-	UINT64 Ttbr1_El1;
-} EFI_ARM_AARCH64_EL1_CONTEXT_REGISTERS;
-
-typedef struct {
-	UINT64 Elr_El2;
-	UINT64 Esr_El2;
-	UINT64 Far_El2;
-	UINT64 Hacr_El2;
-	UINT64 Hcr_El2;
-	UINT64 Hpfar_El2;
-	UINT64 Mair_El2;
-	UINT64 Sctlr_El2;
-	UINT64 Sp_El2;
-	UINT64 Spsr_El2;
-	UINT64 Tcr_El2;
-	UINT64 Tpidr_El2;
-	UINT64 Ttbr0_El2;
-	UINT64 Vtcr_El2;
-	UINT64 Vttbr_El2;
-} EFI_ARM_AARCH64_EL2_CONTEXT_REGISTERS;
-
-typedef struct {
-	UINT64 Elr_El3;
-	UINT64 Esr_El3;
-	UINT64 Far_El3;
-	UINT64 Mair_El3;
-	UINT64 Sctlr_El3;
-	UINT64 Sp_El3;
-	UINT64 Spsr_El3;
-	UINT64 Tcr_El3;
-	UINT64 Tpidr_El3;
-	UINT64 Ttbr0_El3;
-} EFI_ARM_AARCH64_EL3_CONTEXT_REGISTERS;
-
-typedef struct {
-	UINT64 MrsOp2 : 3;
-	UINT64 MrsCrm : 4;
-	UINT64 MrsCrn : 4;
-	UINT64 MrsOp1 : 3;
-	UINT64 MrsO0 : 1;
-	UINT64 Value : 64;
-} EFI_ARM_MISC_CONTEXT_REGISTER;
-
-json_object *cper_section_arm_to_ir(void *section);
-void ir_section_arm_to_cper(json_object *section, FILE *out);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/sections/cper-section-ccix-per.c b/sections/cper-section-ccix-per.c
index 6e3fa96..9081fe2 100644
--- a/sections/cper-section-ccix-per.c
+++ b/sections/cper-section-ccix-per.c
@@ -7,10 +7,10 @@
 #include <stdio.h>
 #include <string.h>
 #include <json.h>
-#include "base64.h"
-#include "Cper.h"
-#include "../cper-utils.h"
-#include "cper-section-ccix-per.h"
+#include <libcper/base64.h>
+#include <libcper/Cper.h>
+#include <libcper/cper-utils.h>
+#include <libcper/sections/cper-section-ccix-per.h>
 
 //Converts a single CCIX PER log CPER section into JSON IR.
 json_object *cper_section_ccix_per_to_ir(void *section)
diff --git a/sections/cper-section-ccix-per.h b/sections/cper-section-ccix-per.h
deleted file mode 100644
index c8bfbb0..0000000
--- a/sections/cper-section-ccix-per.h
+++ /dev/null
@@ -1,35 +0,0 @@
-#ifndef CPER_SECTION_CCIX_PER_H
-#define CPER_SECTION_CCIX_PER_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <json.h>
-#include "Cper.h"
-
-#define CCIX_PER_ERROR_VALID_BITFIELD_NAMES                                    \
-	(const char *[])                                                       \
-	{                                                                      \
-		"ccixSourceIDValid", "ccixPortIDValid", "ccixPERLogValid"      \
-	}
-
-///
-/// CCIX PER Log Error Section
-///
-typedef struct {
-	UINT32 Length;
-	UINT64 ValidBits;
-	UINT8 CcixSourceId;
-	UINT8 CcixPortId;
-	UINT16 Reserved;
-} __attribute__((packed, aligned(1))) EFI_CCIX_PER_LOG_DATA;
-
-json_object *cper_section_ccix_per_to_ir(void *section);
-void ir_section_ccix_per_to_cper(json_object *section, FILE *out);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/sections/cper-section-cxl-component.c b/sections/cper-section-cxl-component.c
index d085189..a5c6846 100644
--- a/sections/cper-section-cxl-component.c
+++ b/sections/cper-section-cxl-component.c
@@ -6,10 +6,10 @@
  **/
 #include <stdio.h>
 #include <json.h>
-#include "base64.h"
-#include "Cper.h"
-#include "../cper-utils.h"
-#include "cper-section-cxl-component.h"
+#include <libcper/base64.h>
+#include <libcper/Cper.h>
+#include <libcper/cper-utils.h>
+#include <libcper/sections/cper-section-cxl-component.h>
 
 //Converts a single CXL component error CPER section into JSON IR.
 json_object *cper_section_cxl_component_to_ir(void *section)
diff --git a/sections/cper-section-cxl-component.h b/sections/cper-section-cxl-component.h
deleted file mode 100644
index 56b092c..0000000
--- a/sections/cper-section-cxl-component.h
+++ /dev/null
@@ -1,47 +0,0 @@
-#ifndef CPER_SECTION_CXL_COMPONENT_H
-#define CPER_SECTION_CXL_COMPONENT_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <json.h>
-#include "Cper.h"
-
-#define CXL_COMPONENT_ERROR_VALID_BITFIELD_NAMES                               \
-	(const char *[])                                                       \
-	{                                                                      \
-		"deviceIDValid", "deviceSerialValid",                          \
-			"cxlComponentEventLogValid"                            \
-	}
-
-///
-/// CXL Generic Component Error Section
-///
-typedef struct {
-	UINT64 VendorId : 16;
-	UINT64 DeviceId : 16;
-	UINT64 FunctionNumber : 8;
-	UINT64 DeviceNumber : 8;
-	UINT64 BusNumber : 8;
-	UINT64 SegmentNumber : 16;
-	UINT64 Resv1 : 3;
-	UINT64 SlotNumber : 13;
-	UINT64 Resv2 : 8;
-} __attribute__((packed, aligned(1))) EFI_CXL_DEVICE_ID_INFO;
-
-typedef struct {
-	UINT32 Length;
-	UINT64 ValidBits;
-	EFI_CXL_DEVICE_ID_INFO DeviceId;
-	UINT64 DeviceSerial;
-} __attribute__((packed, aligned(1))) EFI_CXL_COMPONENT_EVENT_HEADER;
-
-json_object *cper_section_cxl_component_to_ir(void *section);
-void ir_section_cxl_component_to_cper(json_object *section, FILE *out);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/sections/cper-section-cxl-protocol.c b/sections/cper-section-cxl-protocol.c
index fa01a8a..141f26b 100644
--- a/sections/cper-section-cxl-protocol.c
+++ b/sections/cper-section-cxl-protocol.c
@@ -6,10 +6,10 @@
  **/
 #include <stdio.h>
 #include <string.h>
-#include "base64.h"
-#include "Cper.h"
-#include "../cper-utils.h"
-#include "cper-section-cxl-protocol.h"
+#include <libcper/base64.h>
+#include <libcper/Cper.h>
+#include <libcper/cper-utils.h>
+#include <libcper/sections/cper-section-cxl-protocol.h>
 
 //Converts a single CXL protocol error CPER section into JSON IR.
 json_object *cper_section_cxl_protocol_to_ir(void *section)
diff --git a/sections/cper-section-cxl-protocol.h b/sections/cper-section-cxl-protocol.h
deleted file mode 100644
index 71166a2..0000000
--- a/sections/cper-section-cxl-protocol.h
+++ /dev/null
@@ -1,78 +0,0 @@
-#ifndef CPER_SECTION_CXL_PROTOCOL_H
-#define CPER_SECTION_CXL_PROTOCOL_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <json.h>
-#include "Cper.h"
-
-#define CXL_PROTOCOL_ERROR_VALID_BITFIELD_NAMES                                \
-	(const char *[])                                                       \
-	{                                                                      \
-		"cxlAgentTypeValid", "cxlAgentAddressValid", "deviceIDValid",  \
-			"deviceSerialValid", "capabilityStructureValid",       \
-			"cxlDVSECValid", "cxlErrorLogValid"                    \
-	}
-#define CXL_PROTOCOL_ERROR_AGENT_TYPES_KEYS                                    \
-	(int[])                                                                \
-	{                                                                      \
-		0, 1                                                           \
-	}
-#define CXL_PROTOCOL_ERROR_AGENT_TYPES_VALUES                                  \
-	(const char *[])                                                       \
-	{                                                                      \
-		"CXL 1.1 Device", "CXL 1.1 Host Downstream Port"               \
-	}
-#define CXL_PROTOCOL_ERROR_DEVICE_AGENT		      0
-#define CXL_PROTOCOL_ERROR_HOST_DOWNSTREAM_PORT_AGENT 1
-
-///
-/// CXL Protocol Error Section
-///
-typedef struct {
-	UINT64 VendorId : 16;
-	UINT64 DeviceId : 16;
-	UINT64 SubsystemVendorId : 16;
-	UINT64 SubsystemDeviceId : 16;
-	UINT64 ClassCode : 16;
-	UINT64 Reserved1 : 3;
-	UINT64 SlotNumber : 13;
-	UINT64 Reserved2 : 32;
-} EFI_CXL_DEVICE_ID;
-
-typedef struct {
-	UINT64 FunctionNumber : 8;
-	UINT64 DeviceNumber : 8;
-	UINT64 BusNumber : 8;
-	UINT64 SegmentNumber : 16;
-	UINT64 Reserved : 24;
-} EFI_CXL_DEVICE_AGENT_ADDRESS;
-
-typedef union {
-	EFI_CXL_DEVICE_AGENT_ADDRESS
-	DeviceAddress; //Active when the agent is a CXL1.1 device in CxlAgentType.
-	UINT64 PortRcrbBaseAddress; //Active when the agent is a CXL1.1 host downstream port in CxlAgentType.
-} EFI_CXL_AGENT_ADDRESS;
-
-typedef struct {
-	UINT64 ValidBits;
-	UINT64 CxlAgentType;
-	EFI_CXL_AGENT_ADDRESS CxlAgentAddress;
-	EFI_CXL_DEVICE_ID DeviceId;
-	UINT64 DeviceSerial;
-	EFI_PCIE_ERROR_DATA_CAPABILITY CapabilityStructure;
-	UINT16 CxlDvsecLength;
-	UINT16 CxlErrorLogLength;
-	UINT32 Reserved;
-} __attribute__((packed, aligned(1))) EFI_CXL_PROTOCOL_ERROR_DATA;
-
-json_object *cper_section_cxl_protocol_to_ir(void *section);
-void ir_section_cxl_protocol_to_cper(json_object *section, FILE *out);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/sections/cper-section-dmar-generic.c b/sections/cper-section-dmar-generic.c
index 6a28d88..9e5f06a 100644
--- a/sections/cper-section-dmar-generic.c
+++ b/sections/cper-section-dmar-generic.c
@@ -6,9 +6,9 @@
  **/
 #include <stdio.h>
 #include <json.h>
-#include "Cper.h"
-#include "../cper-utils.h"
-#include "cper-section-dmar-generic.h"
+#include <libcper/Cper.h>
+#include <libcper/cper-utils.h>
+#include <libcper/sections/cper-section-dmar-generic.h>
 
 //Converts a single generic DMAr CPER section into JSON IR.
 json_object *cper_section_dmar_generic_to_ir(void *section)
diff --git a/sections/cper-section-dmar-generic.h b/sections/cper-section-dmar-generic.h
deleted file mode 100644
index e305c86..0000000
--- a/sections/cper-section-dmar-generic.h
+++ /dev/null
@@ -1,79 +0,0 @@
-#ifndef CPER_SECTION_DMAR_GENERIC_H
-#define CPER_SECTION_DMAR_GENERIC_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <json.h>
-#include "Cper.h"
-
-#define DMAR_GENERIC_ERROR_FAULT_REASON_TYPES_KEYS                             \
-	(int[])                                                                \
-	{                                                                      \
-		0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB          \
-	}
-#define DMAR_GENERIC_ERROR_FAULT_REASON_TYPES_VALUES                           \
-	(const char *[])                                                       \
-	{                                                                      \
-		"DMT Entry Missing", "DMT Entry Invalid", "DMT Access Error",  \
-			"DMT Reserved Bit Invalid",                            \
-			"DMA Address Out of Bounds", "Invalid Read/Write",     \
-			"Invalid Device Request", "ATT Access Error",          \
-			"ATT Reserved Bit Invalid", "Illegal Command",         \
-			"Command Buffer Access Error"                          \
-	}
-#define DMAR_GENERIC_ERROR_FAULT_REASON_TYPES_DESCRIPTIONS                                                   \
-	(const char *[])                                                                                     \
-	{                                                                                                    \
-		"Domain mapping table entry is not present.",                                                \
-			"Invalid domain mapping table entry.",                                               \
-			"DMAr unit's attempt to access the domain mapping table resulted in an error.",      \
-			"Reserved bit set to non-zero value in the domain mapping table.",                   \
-			"DMA request to access an address beyond the device address width.",                 \
-			"Invalid read or write access.",                                                     \
-			"Invalid device request.",                                                           \
-			"DMAr unit's attempt to access the address translation table resulted in an error.", \
-			"Reserved bit set to non-zero value in the address translation table.",              \
-			"Illegal command error.",                                                            \
-			"DMAr unit's attempt to access the command buffer resulted in an error."             \
-	}
-#define DMAR_GENERIC_ERROR_ACCESS_TYPES_KEYS                                   \
-	(int[])                                                                \
-	{                                                                      \
-		0x0, 0x1                                                       \
-	}
-#define DMAR_GENERIC_ERROR_ACCESS_TYPES_VALUES                                 \
-	(const char *[])                                                       \
-	{                                                                      \
-		"DMA Write", "DMA Read"                                        \
-	}
-#define DMAR_GENERIC_ERROR_ADDRESS_TYPES_KEYS                                  \
-	(int[])                                                                \
-	{                                                                      \
-		0x0, 0x1                                                       \
-	}
-#define DMAR_GENERIC_ERROR_ADDRESS_TYPES_VALUES                                \
-	(const char *[])                                                       \
-	{                                                                      \
-		"Untranslated Request", "Translation Request"                  \
-	}
-#define DMAR_GENERIC_ERROR_ARCH_TYPES_KEYS                                     \
-	(int[])                                                                \
-	{                                                                      \
-		0x0, 0x1                                                       \
-	}
-#define DMAR_GENERIC_ERROR_ARCH_TYPES_VALUES                                   \
-	(const char *[])                                                       \
-	{                                                                      \
-		"VT-d", "IOMMU"                                                \
-	}
-
-json_object *cper_section_dmar_generic_to_ir(void *section);
-void ir_section_dmar_generic_to_cper(json_object *section, FILE *out);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/sections/cper-section-dmar-iommu.c b/sections/cper-section-dmar-iommu.c
index 3606021..1f08376 100644
--- a/sections/cper-section-dmar-iommu.c
+++ b/sections/cper-section-dmar-iommu.c
@@ -7,10 +7,10 @@
 #include <stdio.h>
 #include <string.h>
 #include <json.h>
-#include "base64.h"
-#include "Cper.h"
-#include "../cper-utils.h"
-#include "cper-section-dmar-iommu.h"
+#include <libcper/base64.h>
+#include <libcper/Cper.h>
+#include <libcper/cper-utils.h>
+#include <libcper/sections/cper-section-dmar-iommu.h>
 
 //Converts a single IOMMU specific DMAr CPER section into JSON IR.
 json_object *cper_section_dmar_iommu_to_ir(void *section)
diff --git a/sections/cper-section-dmar-iommu.h b/sections/cper-section-dmar-iommu.h
deleted file mode 100644
index 24204b7..0000000
--- a/sections/cper-section-dmar-iommu.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef CPER_SECTION_DMAR_IOMMU_H
-#define CPER_SECTION_DMAR_IOMMU_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <json.h>
-#include "Cper.h"
-
-json_object *cper_section_dmar_iommu_to_ir(void *section);
-void ir_section_dmar_iommu_to_cper(json_object *section, FILE *out);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/sections/cper-section-dmar-vtd.c b/sections/cper-section-dmar-vtd.c
index 88a4835..5c0016b 100644
--- a/sections/cper-section-dmar-vtd.c
+++ b/sections/cper-section-dmar-vtd.c
@@ -7,10 +7,10 @@
 #include <stdio.h>
 #include <string.h>
 #include <json.h>
-#include "base64.h"
-#include "Cper.h"
-#include "../cper-utils.h"
-#include "cper-section-dmar-vtd.h"
+#include <libcper/base64.h>
+#include <libcper/Cper.h>
+#include <libcper/cper-utils.h>
+#include <libcper/sections/cper-section-dmar-vtd.h>
 
 //Converts a single VT-d specific DMAr CPER section into JSON IR.
 json_object *cper_section_dmar_vtd_to_ir(void *section)
diff --git a/sections/cper-section-dmar-vtd.h b/sections/cper-section-dmar-vtd.h
deleted file mode 100644
index 1d1e91e..0000000
--- a/sections/cper-section-dmar-vtd.h
+++ /dev/null
@@ -1,44 +0,0 @@
-#ifndef CPER_SECTION_DMAR_VTD_H
-#define CPER_SECTION_DMAR_VTD_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <json.h>
-#include "Cper.h"
-
-#define VTD_FAULT_RECORD_TYPES_KEYS                                            \
-	(int[])                                                                \
-	{                                                                      \
-		0, 1                                                           \
-	}
-#define VTD_FAULT_RECORD_TYPES_VALUES                                          \
-	(const char *[])                                                       \
-	{                                                                      \
-		"Write Request", "Read/AtomicOp Request"                       \
-	}
-
-typedef struct {
-	UINT64 Resv1 : 12;
-	UINT64 FaultInformation : 52;
-	UINT64 SourceIdentifier : 16;
-	UINT64 Resv2 : 13;
-	UINT64 PrivelegeModeRequested : 1;
-	UINT64 ExecutePermissionRequested : 1;
-	UINT64 PasidPresent : 1;
-	UINT64 FaultReason : 8;
-	UINT64 PasidValue : 20;
-	UINT64 AddressType : 2;
-	UINT64 Type : 1;
-	UINT64 Resv3 : 1;
-} EFI_VTD_FAULT_RECORD;
-
-json_object *cper_section_dmar_vtd_to_ir(void *section);
-void ir_section_dmar_vtd_to_cper(json_object *section, FILE *out);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/sections/cper-section-firmware.c b/sections/cper-section-firmware.c
index 3f17fe7..7316295 100644
--- a/sections/cper-section-firmware.c
+++ b/sections/cper-section-firmware.c
@@ -6,9 +6,9 @@
  **/
 #include <stdio.h>
 #include <json.h>
-#include "Cper.h"
-#include "../cper-utils.h"
-#include "cper-section-firmware.h"
+#include <libcper/Cper.h>
+#include <libcper/cper-utils.h>
+#include <libcper/sections/cper-section-firmware.h>
 
 //Converts a single firmware CPER section into JSON IR.
 json_object *cper_section_firmware_to_ir(void *section)
diff --git a/sections/cper-section-firmware.h b/sections/cper-section-firmware.h
deleted file mode 100644
index c37ee1f..0000000
--- a/sections/cper-section-firmware.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef CPER_SECTION_FIRMWARE_H
-#define CPER_SECTION_FIRMWARE_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <json.h>
-#include "Cper.h"
-
-#define FIRMWARE_ERROR_RECORD_TYPES_KEYS                                       \
-	(int[])                                                                \
-	{                                                                      \
-		0, 1, 2                                                        \
-	}
-#define FIRMWARE_ERROR_RECORD_TYPES_VALUES                                     \
-	(const char *[])                                                       \
-	{                                                                      \
-		"IPF SAL Error Record",                                        \
-			"SOC Firmware Error Record (Type1 Legacy)",            \
-			"SOC Firmware Error Record (Type2)"                    \
-	}
-
-json_object *cper_section_firmware_to_ir(void *section);
-void ir_section_firmware_to_cper(json_object *section, FILE *out);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/sections/cper-section-generic.c b/sections/cper-section-generic.c
index b803bc1..ebbd628 100644
--- a/sections/cper-section-generic.c
+++ b/sections/cper-section-generic.c
@@ -8,9 +8,9 @@
 #include <stdio.h>
 #include <string.h>
 #include <json.h>
-#include "Cper.h"
-#include "../cper-utils.h"
-#include "cper-section-generic.h"
+#include <libcper/Cper.h>
+#include <libcper/cper-utils.h>
+#include <libcper/sections/cper-section-generic.h>
 
 //Converts the given processor-generic CPER section into JSON IR.
 json_object *cper_section_generic_to_ir(void *section)
diff --git a/sections/cper-section-generic.h b/sections/cper-section-generic.h
deleted file mode 100644
index 26fec69..0000000
--- a/sections/cper-section-generic.h
+++ /dev/null
@@ -1,76 +0,0 @@
-#ifndef CPER_SECTION_GENERIC_H
-#define CPER_SECTION_GENERIC_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <json.h>
-#include "Cper.h"
-
-#define GENERIC_PROC_TYPES_KEYS                                                \
-	(int[])                                                                \
-	{                                                                      \
-		0, 1, 2                                                        \
-	}
-#define GENERIC_PROC_TYPES_VALUES                                              \
-	(const char *[])                                                       \
-	{                                                                      \
-		"IA32/X64", "IA64", "ARM"                                      \
-	}
-#define GENERIC_ISA_TYPES_KEYS                                                 \
-	(int[])                                                                \
-	{                                                                      \
-		0, 1, 2, 3, 4                                                  \
-	}
-#define GENERIC_ISA_TYPES_VALUES                                               \
-	(const char *[])                                                       \
-	{                                                                      \
-		"IA32", "IA64", "X64", "ARM A32/T32", "ARM A64"                \
-	}
-#define GENERIC_ERROR_TYPES_KEYS                                               \
-	(int[])                                                                \
-	{                                                                      \
-		0, 1, 2, 4, 8                                                  \
-	}
-#define GENERIC_ERROR_TYPES_VALUES                                             \
-	(const char *[])                                                       \
-	{                                                                      \
-		"Unknown", "Cache Error", "TLB Error", "Bus Error",            \
-			"Micro-Architectural Error"                            \
-	}
-#define GENERIC_OPERATION_TYPES_KEYS                                           \
-	(int[])                                                                \
-	{                                                                      \
-		0, 1, 2, 3                                                     \
-	}
-#define GENERIC_OPERATION_TYPES_VALUES                                         \
-	(const char *[])                                                       \
-	{                                                                      \
-		"Unknown or Generic", "Data Read", "Data Write",               \
-			"Instruction Execution"                                \
-	}
-#define GENERIC_VALIDATION_BITFIELD_NAMES                                      \
-	(const char *[])                                                       \
-	{                                                                      \
-		"processorTypeValid", "processorISAValid",                     \
-			"processorErrorTypeValid", "operationValid",           \
-			"flagsValid", "levelValid", "cpuVersionValid",         \
-			"cpuBrandInfoValid", "cpuIDValid",                     \
-			"targetAddressValid", "requestorIDValid",              \
-			"responderIDValid", "instructionIPValid"               \
-	}
-#define GENERIC_FLAGS_BITFIELD_NAMES                                           \
-	(const char *[])                                                       \
-	{                                                                      \
-		"restartable", "preciseIP", "overflow", "corrected"            \
-	}
-
-json_object *cper_section_generic_to_ir(void *section);
-void ir_section_generic_to_cper(json_object *section, FILE *out);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/sections/cper-section-ia32x64.c b/sections/cper-section-ia32x64.c
index 2762867..bdeb4fa 100644
--- a/sections/cper-section-ia32x64.c
+++ b/sections/cper-section-ia32x64.c
@@ -7,10 +7,10 @@
 
 #include <stdio.h>
 #include <json.h>
-#include "base64.h"
-#include "Cper.h"
-#include "../cper-utils.h"
-#include "cper-section-ia32x64.h"
+#include <libcper/base64.h>
+#include <libcper/Cper.h>
+#include <libcper/cper-utils.h>
+#include <libcper/sections/cper-section-ia32x64.h>
 
 //Private pre-definitions.
 json_object *cper_ia32x64_processor_error_info_to_ir(
diff --git a/sections/cper-section-ia32x64.h b/sections/cper-section-ia32x64.h
deleted file mode 100644
index b087099..0000000
--- a/sections/cper-section-ia32x64.h
+++ /dev/null
@@ -1,119 +0,0 @@
-#ifndef CPER_SECTION_IA32X64_H
-#define CPER_SECTION_IA32X64_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <json.h>
-#include "Cper.h"
-
-#define IA32X64_PROCESSOR_ERROR_VALID_BITFIELD_NAMES                           \
-	(const char *[])                                                       \
-	{                                                                      \
-		"checkInfoValid", "targetAddressIDValid", "requestorIDValid",  \
-			"responderIDValid", "instructionPointerValid"          \
-	}
-#define IA32X64_CHECK_INFO_VALID_BITFIELD_NAMES                                \
-	(const char *[])                                                       \
-	{                                                                      \
-		"transactionTypeValid", "operationValid", "levelValid",        \
-			"processorContextCorruptValid", "uncorrectedValid",    \
-			"preciseIPValid", "restartableIPValid",                \
-			"overflowValid", "participationTypeValid",             \
-			"timedOutValid", "addressSpaceValid"                   \
-	}
-#define IA32X64_CHECK_INFO_MS_CHECK_VALID_BITFIELD_NAMES                       \
-	(const char *[])                                                       \
-	{                                                                      \
-		"errorTypeValid", "processorContextCorruptValid",              \
-			"uncorrectedValid", "preciseIPValid",                  \
-			"restartableIPValid", "overflowValid"                  \
-	}
-#define IA32X64_CHECK_INFO_TRANSACTION_TYPES_KEYS                              \
-	(int[])                                                                \
-	{                                                                      \
-		0, 1, 2                                                        \
-	}
-#define IA32X64_CHECK_INFO_TRANSACTION_TYPES_VALUES                            \
-	(const char *[])                                                       \
-	{                                                                      \
-		"Instruction", "Data Access", "Generic"                        \
-	}
-#define IA32X64_CHECK_INFO_OPERATION_TYPES_KEYS                                \
-	(int[])                                                                \
-	{                                                                      \
-		0, 1, 2, 3, 4, 5, 6, 7, 8                                      \
-	}
-#define IA32X64_CHECK_INFO_OPERATION_TYPES_VALUES                              \
-	(const char *[])                                                       \
-	{                                                                      \
-		"Generic Error", "Generic Read", "Generic Write", "Data Read", \
-			"Data Write", "Instruction Fetch", "Prefetch",         \
-			"Eviction", "Snoop"                                    \
-	}
-#define IA32X64_BUS_CHECK_INFO_PARTICIPATION_TYPES_KEYS                        \
-	(int[])                                                                \
-	{                                                                      \
-		0, 1, 2, 3                                                     \
-	}
-#define IA32X64_BUS_CHECK_INFO_PARTICIPATION_TYPES_VALUES                      \
-	(const char *[])                                                       \
-	{                                                                      \
-		"Local processor originated request",                          \
-			"Local processor responded to request",                \
-			"Local processor observed", "Generic"                  \
-	}
-#define IA32X64_BUS_CHECK_INFO_ADDRESS_SPACE_TYPES_KEYS                        \
-	(int[])                                                                \
-	{                                                                      \
-		0, 1, 2, 3                                                     \
-	}
-#define IA32X64_BUS_CHECK_INFO_ADDRESS_SPACE_TYPES_VALUES                      \
-	(const char *[])                                                       \
-	{                                                                      \
-		"Memory Access", "Reserved", "I/O", "Other Transaction"        \
-	}
-#define IA32X64_MS_CHECK_INFO_ERROR_TYPES_KEYS                                 \
-	(int[])                                                                \
-	{                                                                      \
-		0, 1, 2, 3, 4, 5                                               \
-	}
-#define IA32X64_MS_CHECK_INFO_ERROR_TYPES_VALUES                               \
-	(const char *[])                                                       \
-	{                                                                      \
-		"No Error", "Unclassified", "Microcode ROM Parity Error",      \
-			"External Error", "FRC Error", "Internal Unclassified" \
-	}
-#define IA32X64_REGISTER_CONTEXT_TYPES_KEYS                                    \
-	(int[])                                                                \
-	{                                                                      \
-		0, 1, 2, 3, 4, 5, 6, 7                                         \
-	}
-#define IA32X64_REGISTER_CONTEXT_TYPES_VALUES                                  \
-	(const char *[])                                                       \
-	{                                                                      \
-		"Unclassified Data", "MSR Registers",                          \
-			"32-bit Mode Execution Context",                       \
-			"64-bit Mode Execution Context", "FXSave Context",     \
-			"32-bit Mode Debug Registers",                         \
-			"64-bit Mode Debug Registers",                         \
-			"Memory Mapper Registers"                              \
-	}
-
-typedef struct {
-	UINT64 Eax;
-	UINT64 Ebx;
-	UINT64 Ecx;
-	UINT64 Edx;
-	UINT64 Reserved[2];
-} EFI_IA32_X64_CPU_ID;
-
-json_object *cper_section_ia32x64_to_ir(void *section);
-void ir_section_ia32x64_to_cper(json_object *section, FILE *out);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/sections/cper-section-ipf.c b/sections/cper-section-ipf.c
index 3c47504..a8a4e8f 100644
--- a/sections/cper-section-ipf.c
+++ b/sections/cper-section-ipf.c
@@ -6,9 +6,9 @@
  **/
 #include <stdio.h>
 #include <json.h>
-#include "Cper.h"
-#include "../cper-utils.h"
-#include "cper-section-ipf.h"
+#include <libcper/Cper.h>
+#include <libcper/cper-utils.h>
+#include <libcper/sections/cper-section-ipf.h>
 
 json_object *cper_ipf_mod_error_read_array(EFI_IPF_MOD_ERROR_INFO **cur_error,
 					   int num_to_read);
diff --git a/sections/cper-section-ipf.h b/sections/cper-section-ipf.h
deleted file mode 100644
index 02cc025..0000000
--- a/sections/cper-section-ipf.h
+++ /dev/null
@@ -1,80 +0,0 @@
-#ifndef CPER_SECTION_IPF_H
-#define CPER_SECTION_IPF_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <json.h>
-#include "Cper.h"
-
-#define IPF_MOD_ERROR_VALID_BITFIELD_NAMES                                     \
-	(const char *[])                                                       \
-	{                                                                      \
-		"checkInfoValid", "requestorIdentifierValid",                  \
-			"responderIdentifierValid", "targetIdentifierValid",   \
-			"preciseIPValid"                                       \
-	}
-#define IPF_PSI_STATIC_INFO_VALID_BITFIELD_NAMES                               \
-	(const char *[])                                                       \
-	{                                                                      \
-		"minstateValid", "brValid", "crValid", "arValid", "rrValid",   \
-			"frValid"                                              \
-	}
-
-///
-/// IPF Error Record Section
-/// Defined as according to B.2.3 of the ItaniumTM Processor Family System Abstraction Layer (SAL) Specification.
-///
-typedef struct {
-	UINT64 ProcErrorMapValid : 1;
-	UINT64 ProcStateParameterValid : 1;
-	UINT64 ProcCrLidValid : 1;
-	UINT64 PsiStaticStructValid : 1;
-	UINT64 CacheCheckNum : 4;
-	UINT64 TlbCheckNum : 4;
-	UINT64 BusCheckNum : 4;
-	UINT64 RegFileCheckNum : 4;
-	UINT64 MsCheckNum : 4;
-	UINT64 CpuIdInfoValid : 1;
-	UINT64 Reserved : 39;
-} EPI_IPF_ERROR_VALID_BITS;
-
-typedef struct {
-	EPI_IPF_ERROR_VALID_BITS ValidBits;
-	UINT64 ProcErrorMap;
-	UINT64 ProcStateParameter;
-	UINT64 ProcCrLid;
-} EFI_IPF_ERROR_INFO_HEADER;
-
-typedef struct {
-	UINT64 ValidBits;
-	UINT64 ModCheckInfo;
-	UINT64 ModTargetId;
-	UINT64 ModRequestorId; //NOTE: The Intel Itanium specification contains a typo which makes the order
-	UINT64 ModResponderId; // of these two fields undefined. This is a best guess and could be wrong.
-	UINT64 ModPreciseIp;
-} EFI_IPF_MOD_ERROR_INFO;
-
-typedef struct {
-	UINT8 CpuIdInfo[40];
-	UINT8 Reserved1[8];
-} EFI_IPF_CPU_INFO;
-
-typedef struct {
-	UINT64 ValidBits;
-	UINT8 MinimalSaveStateInfo[1024];
-	UINT64 Brs[8];
-	UINT64 Crs[128];
-	UINT64 Ars[128];
-	UINT64 Rrs[8];
-	UINT64 Frs[256];
-} EFI_IPF_PSI_STATIC;
-
-json_object *cper_section_ipf_to_ir(void *section);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/sections/cper-section-memory.c b/sections/cper-section-memory.c
index 073041d..68e63af 100644
--- a/sections/cper-section-memory.c
+++ b/sections/cper-section-memory.c
@@ -6,9 +6,9 @@
  **/
 #include <stdio.h>
 #include <json.h>
-#include "Cper.h"
-#include "../cper-utils.h"
-#include "cper-section-memory.h"
+#include <libcper/Cper.h>
+#include <libcper/cper-utils.h>
+#include <libcper/sections/cper-section-memory.h>
 
 //Converts a single memory error CPER section into JSON IR.
 json_object *cper_section_platform_memory_to_ir(void *section)
diff --git a/sections/cper-section-memory.h b/sections/cper-section-memory.h
deleted file mode 100644
index ed2bc70..0000000
--- a/sections/cper-section-memory.h
+++ /dev/null
@@ -1,65 +0,0 @@
-#ifndef CPER_SECTION_MEMORY_H
-#define CPER_SECTION_MEMORY_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <json.h>
-#include "Cper.h"
-
-#define MEMORY_ERROR_VALID_BITFIELD_NAMES                                      \
-	(const char *[])                                                       \
-	{                                                                      \
-		"errorStatusValid", "physicalAddressValid",                    \
-			"physicalAddressMaskValid", "nodeValid", "cardValid",  \
-			"moduleValid", "bankValid", "deviceValid", "rowValid", \
-			"columnValid", "bitPositionValid",                     \
-			"platformRequestorIDValid",                            \
-			"platformResponderIDValid",                            \
-			"memoryPlatformTargetValid", "memoryErrorTypeValid",   \
-			"rankNumberValid", "cardHandleValid",                  \
-			"moduleHandleValid", "extendedRowBitsValid",           \
-			"bankGroupValid", "bankAddressValid",                  \
-			"chipIdentificationValid"                              \
-	}
-#define MEMORY_ERROR_TYPES_KEYS                                                \
-	(int[])                                                                \
-	{                                                                      \
-		0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15           \
-	}
-#define MEMORY_ERROR_TYPES_VALUES                                              \
-	(const char *[])                                                       \
-	{                                                                      \
-		"Unknown", "No Error", "Single-bit ECC", "Multi-bit ECC",      \
-			"Single-symbol ChipKill ECC",                          \
-			"Multi-symbol ChipKill ECC", "Master Abort",           \
-			"Target Abort", "Parity Error", "Watchdog Timeout",    \
-			"Invalid Address", "Mirror Broken", "Memory Sparing",  \
-			"Scrub Corrected Error", "Scrub Uncorrected Error",    \
-			"Physical Memory Map-out Event"                        \
-	}
-#define MEMORY_ERROR_2_VALID_BITFIELD_NAMES                                    \
-	(const char *[])                                                       \
-	{                                                                      \
-		"errorStatusValid", "physicalAddressValid",                    \
-			"physicalAddressMaskValid", "nodeValid", "cardValid",  \
-			"moduleValid", "bankValid", "deviceValid", "rowValid", \
-			"columnValid", "rankValid", "bitPositionValid",        \
-			"chipIDValid", "memoryErrorTypeValid", "statusValid",  \
-			"requestorIDValid", "responderIDValid",                \
-			"targetIDValid", "cardHandleValid",                    \
-			"moduleHandleValid", "bankGroupValid",                 \
-			"bankAddressValid"                                     \
-	}
-
-json_object *cper_section_platform_memory_to_ir(void *section);
-json_object *cper_section_platform_memory2_to_ir(void *section);
-void ir_section_memory_to_cper(json_object *section, FILE *out);
-void ir_section_memory2_to_cper(json_object *section, FILE *out);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/sections/cper-section-nvidia.c b/sections/cper-section-nvidia.c
index 259eef1..d5587c5 100644
--- a/sections/cper-section-nvidia.c
+++ b/sections/cper-section-nvidia.c
@@ -7,9 +7,9 @@
 #include <stddef.h>
 #include <string.h>
 #include <json.h>
-#include "Cper.h"
-#include "../cper-utils.h"
-#include "cper-section-nvidia.h"
+#include <libcper/Cper.h>
+#include <libcper/cper-utils.h>
+#include <libcper/sections/cper-section-nvidia.h>
 
 //Converts a single NVIDIA CPER section into JSON IR.
 json_object *cper_section_nvidia_to_ir(void *section)
diff --git a/sections/cper-section-nvidia.h b/sections/cper-section-nvidia.h
deleted file mode 100644
index c3b9deb..0000000
--- a/sections/cper-section-nvidia.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef CPER_SECTION_NVIDIA_H
-#define CPER_SECTION_NVIDIA_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <json.h>
-#include "Cper.h"
-
-json_object *cper_section_nvidia_to_ir(void *section);
-void ir_section_nvidia_to_cper(json_object *section, FILE *out);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/sections/cper-section-pci-bus.c b/sections/cper-section-pci-bus.c
index a4fc3c8..154c1cf 100644
--- a/sections/cper-section-pci-bus.c
+++ b/sections/cper-section-pci-bus.c
@@ -7,9 +7,9 @@
 #include <stdio.h>
 #include <string.h>
 #include <json.h>
-#include "Cper.h"
-#include "../cper-utils.h"
-#include "cper-section-pci-bus.h"
+#include <libcper/Cper.h>
+#include <libcper/cper-utils.h>
+#include <libcper/sections/cper-section-pci-bus.h>
 
 //Converts a single PCI/PCI-X bus CPER section into JSON IR.
 json_object *cper_section_pci_bus_to_ir(void *section)
diff --git a/sections/cper-section-pci-bus.h b/sections/cper-section-pci-bus.h
deleted file mode 100644
index 69e2522..0000000
--- a/sections/cper-section-pci-bus.h
+++ /dev/null
@@ -1,41 +0,0 @@
-#ifndef CPER_SECTION_PCI_BUS_H
-#define CPER_SECTION_PCI_BUS_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <json.h>
-#include "Cper.h"
-
-#define PCI_BUS_ERROR_VALID_BITFIELD_NAMES                                     \
-	(const char *[])                                                       \
-	{                                                                      \
-		"errorStatusValid", "errorTypeValid", "busIDValid",            \
-			"busAddressValid", "busDataValid", "commandValid",     \
-			"requestorIDValid", "completerIDValid",                \
-			"targetIDValid"                                        \
-	}
-#define PCI_BUS_ERROR_TYPES_KEYS                                               \
-	(int[])                                                                \
-	{                                                                      \
-		0, 1, 2, 3, 4, 5, 6, 7                                         \
-	}
-#define PCI_BUS_ERROR_TYPES_VALUES                                             \
-	(const char *[])                                                       \
-	{                                                                      \
-		"Unknown/OEM Specific Error", "Data Parity Error",             \
-			"System Error", "Master Abort",                        \
-			"Bus Timeout/No Device Present (No DEVSEL#)",          \
-			"Master Data Parity Error", "Address Parity Error",    \
-			"Command Parity Error"                                 \
-	}
-
-json_object *cper_section_pci_bus_to_ir(void *section);
-void ir_section_pci_bus_to_cper(json_object *section, FILE *out);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/sections/cper-section-pci-dev.c b/sections/cper-section-pci-dev.c
index 5245e3f..ccf9f0c 100644
--- a/sections/cper-section-pci-dev.c
+++ b/sections/cper-section-pci-dev.c
@@ -6,9 +6,9 @@
  **/
 #include <stdio.h>
 #include <json.h>
-#include "Cper.h"
-#include "../cper-utils.h"
-#include "cper-section-pci-dev.h"
+#include <libcper/Cper.h>
+#include <libcper/cper-utils.h>
+#include <libcper/sections/cper-section-pci-dev.h>
 
 //Converts a single PCI/PCI-X device CPER section into JSON IR.
 json_object *cper_section_pci_dev_to_ir(void *section)
diff --git a/sections/cper-section-pci-dev.h b/sections/cper-section-pci-dev.h
deleted file mode 100644
index 3ceba5a..0000000
--- a/sections/cper-section-pci-dev.h
+++ /dev/null
@@ -1,47 +0,0 @@
-#ifndef CPER_SECTION_PCI_DEV_H
-#define CPER_SECTION_PCI_DEV_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <json.h>
-#include "Cper.h"
-
-#define PCI_DEV_ERROR_VALID_BITFIELD_NAMES                                     \
-	(const char *[])                                                       \
-	{                                                                      \
-		"errorStatusValid", "idInfoValid", "memoryNumberValid",        \
-			"ioNumberValid", "registerDataPairsValid"              \
-	}
-
-///
-/// PCI/PCI-X Device Error Section
-///
-typedef struct {
-	UINT64 VendorId : 16;
-	UINT64 DeviceId : 16;
-	UINT64 ClassCode : 24;
-	UINT64 FunctionNumber : 8;
-	UINT64 DeviceNumber : 8;
-	UINT64 BusNumber : 8;
-	UINT64 SegmentNumber : 8;
-	UINT64 Reserved : 40;
-} EFI_PCI_PCIX_DEVICE_ID_INFO;
-
-typedef struct {
-	UINT64 ValidFields;
-	EFI_GENERIC_ERROR_STATUS ErrorStatus;
-	EFI_PCI_PCIX_DEVICE_ID_INFO IdInfo;
-	UINT32 MemoryNumber;
-	UINT32 IoNumber;
-} __attribute__((packed, aligned(1))) EFI_PCI_PCIX_DEVICE_ERROR_DATA;
-
-json_object *cper_section_pci_dev_to_ir(void *section);
-void ir_section_pci_dev_to_cper(json_object *section, FILE *out);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/sections/cper-section-pcie.c b/sections/cper-section-pcie.c
index fa6b0b2..ecf6d52 100644
--- a/sections/cper-section-pcie.c
+++ b/sections/cper-section-pcie.c
@@ -7,10 +7,10 @@
 #include <stdio.h>
 #include <string.h>
 #include <json.h>
-#include "base64.h"
-#include "Cper.h"
-#include "../cper-utils.h"
-#include "cper-section-pcie.h"
+#include <libcper/base64.h>
+#include <libcper/Cper.h>
+#include <libcper/cper-utils.h>
+#include <libcper/sections/cper-section-pcie.h>
 
 //Converts a single PCIe CPER section into JSON IR.
 json_object *cper_section_pcie_to_ir(void *section)
diff --git a/sections/cper-section-pcie.h b/sections/cper-section-pcie.h
deleted file mode 100644
index 1a2d729..0000000
--- a/sections/cper-section-pcie.h
+++ /dev/null
@@ -1,43 +0,0 @@
-#ifndef CPER_SECTION_PCIE_H
-#define CPER_SECTION_PCIE_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <json.h>
-#include "Cper.h"
-
-#define PCIE_ERROR_VALID_BITFIELD_NAMES                                        \
-	(const char *[])                                                       \
-	{                                                                      \
-		"portTypeValid", "versionValid", "commandStatusValid",         \
-			"deviceIDValid", "deviceSerialNumberValid",            \
-			"bridgeControlStatusValid",                            \
-			"capabilityStructureStatusValid", "aerInfoValid"       \
-	}
-#define PCIE_ERROR_PORT_TYPES_KEYS                                             \
-	(int[])                                                                \
-	{                                                                      \
-		0, 1, 4, 5, 6, 7, 8, 9, 10                                     \
-	}
-#define PCIE_ERROR_PORT_TYPES_VALUES                                           \
-	(const char *[])                                                       \
-	{                                                                      \
-		"PCI Express End Point", "Legacy PCI End Point Device",        \
-			"Root Port", "Upstream Switch Port",                   \
-			"Downstream Switch Port",                              \
-			"PCI Express to PCI/PCI-X Bridge",                     \
-			"PCI/PCI-X Bridge to PCI Express Bridge",              \
-			"Root Complex Integrated Endpoint Device",             \
-			"Root Complex Event Collector"                         \
-	}
-
-json_object *cper_section_pcie_to_ir(void *section);
-void ir_section_pcie_to_cper(json_object *section, FILE *out);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/sections/cper-section.c b/sections/cper-section.c
index 11832c8..f027c2d 100644
--- a/sections/cper-section.c
+++ b/sections/cper-section.c
@@ -3,25 +3,25 @@
  *
  * Author: Lawrence.Tang@arm.com
  **/
-#include "Cper.h"
-#include "cper-section.h"
-#include "cper-section-arm.h"
-#include "cper-section-generic.h"
-#include "cper-section-ia32x64.h"
-#include "cper-section-ipf.h"
-#include "cper-section-memory.h"
-#include "cper-section-pcie.h"
-#include "cper-section-firmware.h"
-#include "cper-section-pci-bus.h"
-#include "cper-section-pci-dev.h"
-#include "cper-section-dmar-generic.h"
-#include "cper-section-dmar-vtd.h"
-#include "cper-section-dmar-iommu.h"
-#include "cper-section-ccix-per.h"
-#include "cper-section-cxl-protocol.h"
-#include "cper-section-cxl-component.h"
-#include "cper-section-nvidia.h"
-#include "cper-section-ampere.h"
+#include <libcper/Cper.h>
+#include <libcper/sections/cper-section.h>
+#include <libcper/sections/cper-section-arm.h>
+#include <libcper/sections/cper-section-generic.h>
+#include <libcper/sections/cper-section-ia32x64.h>
+#include <libcper/sections/cper-section-ipf.h>
+#include <libcper/sections/cper-section-memory.h>
+#include <libcper/sections/cper-section-pcie.h>
+#include <libcper/sections/cper-section-firmware.h>
+#include <libcper/sections/cper-section-pci-bus.h>
+#include <libcper/sections/cper-section-pci-dev.h>
+#include <libcper/sections/cper-section-dmar-generic.h>
+#include <libcper/sections/cper-section-dmar-vtd.h>
+#include <libcper/sections/cper-section-dmar-iommu.h>
+#include <libcper/sections/cper-section-ccix-per.h>
+#include <libcper/sections/cper-section-cxl-protocol.h>
+#include <libcper/sections/cper-section-cxl-component.h>
+#include <libcper/sections/cper-section-nvidia.h>
+#include <libcper/sections/cper-section-ampere.h>
 
 //Definitions of all sections available to the CPER parser.
 CPER_SECTION_DEFINITION section_definitions[] = {
diff --git a/sections/cper-section.h b/sections/cper-section.h
deleted file mode 100644
index dec0b1b..0000000
--- a/sections/cper-section.h
+++ /dev/null
@@ -1,29 +0,0 @@
-#ifndef CPER_SECTION_H
-#define CPER_SECTION_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <json.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include "Cper.h"
-
-//Definition structure for a single CPER section type.
-typedef struct {
-	EFI_GUID *Guid;
-	const char *ReadableName;
-	const char *ShortName;
-	json_object *(*ToIR)(void *);
-	void (*ToCPER)(json_object *, FILE *);
-} CPER_SECTION_DEFINITION;
-
-extern CPER_SECTION_DEFINITION section_definitions[];
-extern const size_t section_definitions_len;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
