diff --git a/include/api/bootinfo_types.h b/include/api/bootinfo_types.h
new file mode 120000
index 0000000000000000000000000000000000000000..26fe18d1a2c8af55c55e13327cde4de80ba4219c
--- /dev/null
+++ b/include/api/bootinfo_types.h
@@ -0,0 +1 @@
+../../libsel4/include/sel4/bootinfo_types.h
\ No newline at end of file
diff --git a/include/api/types.h b/include/api/types.h
index b4a077c0f1cb6f8237c147dbfe473d822c42173c..080261d2b04c2006b7489b754cc0e1b8f7811e58 100644
--- a/include/api/types.h
+++ b/include/api/types.h
@@ -23,7 +23,6 @@
 /* cap_rights_t defined in api/types.bf */
 
 typedef word_t prio_t;
-typedef word_t  dom_t;
 
 enum domainConstants {
     minDom = 0,
diff --git a/include/arch/arm/arch/types.h b/include/arch/arm/arch/types.h
index 536bf70cc873c6d466ee50d88d9bc6722d9dc461..fa888db18410c161f0a65c2bcbe07691fc72a20f 100644
--- a/include/arch/arm/arch/types.h
+++ b/include/arch/arm/arch/types.h
@@ -22,6 +22,7 @@ typedef word_t paddr_t;
 typedef word_t pptr_t;
 typedef word_t cptr_t;
 typedef word_t node_id_t;
+typedef word_t dom_t;
 
 typedef uint8_t  hw_asid_t;
 
@@ -34,5 +35,9 @@ enum hwASIDConstants {
 typedef word_t seL4_Word;
 typedef cptr_t seL4_CPtr;
 typedef uint32_t seL4_Uint32;
+typedef uint8_t seL4_Uint8;
+typedef node_id_t seL4_NodeId;
+typedef dom_t seL4_Domain;
+typedef paddr_t seL4_PAddr;
 
 #endif
diff --git a/include/arch/x86/arch/types.h b/include/arch/x86/arch/types.h
index d74e7a51329e483b82756f81f4038551f9a4f082..f26434756a9a0fdd7ae8bb3989855f951c2798b8 100644
--- a/include/arch/x86/arch/types.h
+++ b/include/arch/x86/arch/types.h
@@ -24,10 +24,14 @@ typedef word_t cptr_t;
 typedef word_t dev_id_t;
 typedef word_t cpu_id_t;
 typedef word_t node_id_t;
+typedef word_t dom_t;
 
 /* for libsel4 headers that the kernel shares */
 typedef word_t seL4_Word;
 typedef cptr_t seL4_CPtr;
 typedef uint32_t seL4_Uint32;
-
+typedef uint8_t seL4_Uint8;
+typedef node_id_t seL4_NodeId;
+typedef paddr_t seL4_PAddr;
+typedef dom_t seL4_Domain;
 #endif
diff --git a/include/bootinfo.h b/include/bootinfo.h
index 37345dfe53ffc8b69a63422b1abeaec07c7d59fd..5b4a8e9382b28bddd0bee0e6d311c9eb7aef9063 100644
--- a/include/bootinfo.h
+++ b/include/bootinfo.h
@@ -13,65 +13,14 @@
 
 #include <config.h>
 #include <types.h>
+#include <api/bootinfo_types.h>
 
-#define BI_PTR(r) ((bi_t*)(r))
+#define BI_PTR(r) ((seL4_BootInfo*)(r))
 #define BI_REF(p) ((word_t)(p))
-
-/* bootinfo data structures (directly corresponding to abstract specification) */
-
 #define BI_FRAME_SIZE_BITS PAGE_BITS
-
-/* fixed cap positions in root CNode */
-#define BI_CAP_NULL          0 /* null cap */
-#define BI_CAP_IT_TCB        1 /* initial thread's TCB cap */
-#define BI_CAP_IT_CNODE      2 /* initial thread's root CNode cap */
-#define BI_CAP_IT_VSPACE     3 /* initial thread's vspace root cap */
-#define BI_CAP_IRQ_CTRL      4 /* global IRQ controller cap */
-#define BI_CAP_ASID_CTRL     5 /* global ASID controller cap */
-#define BI_CAP_IT_ASID_POOL  6 /* initial thread's ASID pool cap */
-#define BI_CAP_IO_PORT       7 /* global IO port cap (null cap if not supported) */
-#define BI_CAP_IO_SPACE      8 /* global IO space cap (null cap if no IOMMU support) */
-#define BI_CAP_BI_FRAME      9 /* bootinfo frame cap */
-#define BI_CAP_IT_IPCBUF    10 /* initial thread's IPC buffer frame cap */
-#define BI_CAP_DOM          11 /* domain cap */
-#define BI_CAP_DYN_START    12 /* slot where dynamically allocated caps start */
-
-/* type definitions */
-
-typedef word_t slot_pos_t;
-
-typedef struct slot_region {
-    slot_pos_t start;
-    slot_pos_t end;
-} slot_region_t;
-
-#define S_REG_EMPTY (slot_region_t){ .start = 0, .end = 0 }
-
-typedef struct bi_dev_reg {
-    paddr_t       base_paddr;      /* base physical address of device region */
-    uint32_t      frame_size_bits; /* size (2^n bytes) of a device-region frame */
-    slot_region_t frame_caps;      /* device-region frame caps */
-} bi_dev_reg_t;
-
-typedef struct bi {
-    node_id_t     node_id;
-    uint32_t      num_nodes;
-    uint32_t      num_iopt_levels; /* number of IOMMU PT levels (0 if no IOMMU support) */
-    vptr_t        ipcbuf_vptr;     /* vptr to initial thread's IPC buffer */
-    slot_region_t null_caps;       /* null caps (empty slots) */
-    slot_region_t sh_frame_caps;   /* shared-frame caps */
-    slot_region_t ui_frame_caps;   /* userland-image frame caps */
-    slot_region_t ui_paging_caps;  /* userland-image paging structure caps */
-    slot_region_t ut_obj_caps;     /* untyped-object caps (UT caps) */
-    paddr_t       ut_obj_paddr_list    [CONFIG_MAX_NUM_BOOTINFO_UNTYPED_CAPS]; /* physical address of each UT cap */
-    uint8_t       ut_obj_size_bits_list[CONFIG_MAX_NUM_BOOTINFO_UNTYPED_CAPS]; /* size (2^n) bytes of each UT cap */
-    uint8_t       it_cnode_size_bits; /* initial thread's root CNode size (2^n slots) */
-    uint32_t      num_dev_regs;       /* number of device regions */
-    bi_dev_reg_t  dev_reg_list[CONFIG_MAX_NUM_BOOTINFO_DEVICE_REGIONS]; /* device regions */
-    dom_t         it_domain;       /* initial thread's domain ID */
-} bi_t;
+#define S_REG_EMPTY (seL4_SlotRegion){ .start = 0, .end = 0 }
 
 /* adjust constants in config.h if this assert fails */
-compile_assert(bi_size, sizeof(bi_t) <= BIT(BI_FRAME_SIZE_BITS))
+compile_assert(bi_size, sizeof(seL4_BootInfo) <= BIT(BI_FRAME_SIZE_BITS))
 
 #endif
diff --git a/include/kernel/boot.h b/include/kernel/boot.h
index 28f23f36afc0e513a49d429aceb687d3fdf54a0c..791044587e9f6732f235cefd3737dfa3f9236a5d 100644
--- a/include/kernel/boot.h
+++ b/include/kernel/boot.h
@@ -32,9 +32,9 @@ typedef cte_t* slot_ptr_t;
 
 typedef struct ndks_boot {
     region_t   freemem[MAX_NUM_FREEMEM_REG];
-    bi_t*      bi_frame;
-    slot_pos_t slot_pos_cur;
-    slot_pos_t slot_pos_max;
+    seL4_BootInfo*      bi_frame;
+    seL4_SlotPos slot_pos_cur;
+    seL4_SlotPos slot_pos_max;
 } ndks_boot_t;
 
 extern ndks_boot_t ndks_boot;
@@ -67,7 +67,7 @@ pptr_t allocate_bi_frame(node_id_t node_id, word_t num_nodes, vptr_t ipcbuf_vptr
 void create_bi_frame_cap(cap_t root_cnode_cap, cap_t pd_cap, pptr_t pptr, vptr_t vptr);
 
 typedef struct create_frames_of_region_ret {
-    slot_region_t region;
+    seL4_SlotRegion region;
     bool_t success;
 } create_frames_of_region_ret_t;
 
diff --git a/libsel4/include/sel4/bootinfo.h b/libsel4/include/sel4/bootinfo.h
index 9390100edb26e2774b5ba6e1b3f4c5ddd3e7659e..e4fcb81c400951477d6bc019a2f30674c08f743c 100644
--- a/libsel4/include/sel4/bootinfo.h
+++ b/libsel4/include/sel4/bootinfo.h
@@ -12,61 +12,7 @@
 #define __LIBSEL4_BOOTINFO_H
 
 #include <sel4/types.h>
-
-/* caps with fixed slot potitions in the root CNode */
-
-enum {
-    seL4_CapNull                =  0, /* null cap */
-    seL4_CapInitThreadTCB       =  1, /* initial thread's TCB cap */
-    seL4_CapInitThreadCNode     =  2, /* initial thread's root CNode cap */
-    seL4_CapInitThreadVSpace    =  3, /* initial thread's VSpace cap */
-    seL4_CapIRQControl          =  4, /* global IRQ controller cap */
-    seL4_CapASIDControl         =  5, /* global ASID controller cap */
-    seL4_CapInitThreadASIDPool  =  6, /* initial thread's ASID pool cap */
-    seL4_CapIOPort              =  7, /* global IO port cap (null cap if not supported) */
-    seL4_CapIOSpace             =  8, /* global IO space cap (null cap if no IOMMU support) */
-    seL4_CapBootInfoFrame       =  9, /* bootinfo frame cap */
-    seL4_CapInitThreadIPCBuffer = 10, /* initial thread's IPC buffer frame cap */
-    seL4_CapDomain              = 11, /* global domain controller cap */
-    seL4_NumInitialCaps         = 12
-};
-
-/* Legacy code will have assumptions on the vspace root being a Page Directory
- * type, so for now we define one to the other */
-#define seL4_CapInitThreadPD seL4_CapInitThreadVSpace
-
-/* types */
-
-typedef struct {
-    seL4_Word start; /* first CNode slot position OF region */
-    seL4_Word end;   /* first CNode slot position AFTER region */
-} seL4_SlotRegion;
-
-typedef struct {
-    seL4_Word       basePaddr;     /* base physical address of device region */
-    seL4_Uint32     frameSizeBits; /* size (2^n bytes) of a device-region frame */
-    seL4_SlotRegion frames;        /* device-region frame caps */
-} seL4_DeviceRegion;
-
-typedef struct {
-    seL4_Word         nodeID;          /* ID [0..numNodes-1] of the seL4 node (0 if uniprocessor) */
-    seL4_Uint32       numNodes;        /* number of seL4 nodes (1 if uniprocessor) */
-    seL4_Uint32       numIOPTLevels;   /* number of IOMMU PT levels (0 if no IOMMU support) */
-    seL4_IPCBuffer*   ipcBuffer;       /* pointer to initial thread's IPC buffer */
-    seL4_SlotRegion   empty;           /* empty slots (null caps) */
-    seL4_SlotRegion   sharedFrames;    /* shared-frame caps (shared between seL4 nodes) */
-    seL4_SlotRegion   userImageFrames; /* userland-image frame caps */
-    seL4_SlotRegion   userImagePaging; /* userland-image paging structure caps */
-    seL4_SlotRegion   untyped;         /* untyped-object caps (untyped caps) */
-    seL4_Word         untypedPaddrList   [CONFIG_MAX_NUM_BOOTINFO_UNTYPED_CAPS]; /* physical address of each untyped cap */
-    seL4_Uint8        untypedSizeBitsList[CONFIG_MAX_NUM_BOOTINFO_UNTYPED_CAPS]; /* size (2^n) bytes of each untyped cap */
-    seL4_Uint8        initThreadCNodeSizeBits; /* initial thread's root CNode size (2^n slots) */
-    seL4_Uint32       numDeviceRegions;        /* number of device regions */
-    seL4_DeviceRegion deviceRegions[CONFIG_MAX_NUM_BOOTINFO_DEVICE_REGIONS]; /* device regions */
-    seL4_Uint32       initThreadDomain; /* Initial thread's domain ID */
-} seL4_BootInfo;
-
-/* function declarations */
+#include <sel4/bootinfo_types.h>
 
 void seL4_InitBootInfo(seL4_BootInfo* bi);
 seL4_BootInfo* seL4_GetBootInfo(void);
diff --git a/libsel4/include/sel4/bootinfo_types.h b/libsel4/include/sel4/bootinfo_types.h
new file mode 100644
index 0000000000000000000000000000000000000000..5b302022f44ea78ce887cbf5045894ae7abae8e0
--- /dev/null
+++ b/libsel4/include/sel4/bootinfo_types.h
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2014, NICTA
+ *
+ * This software may be distributed and modified according to the terms of
+ * the BSD 2-Clause license. Note that NO WARRANTY is provided.
+ * See "LICENSE_BSD2.txt" for details.
+ *
+ * @TAG(NICTA_BSD)
+ */
+
+#ifndef __LIBSEL4_BOOTINFO_TYPES_H
+#define __LIBSEL4_BOOTINFO_TYPES_H
+
+/* caps with fixed slot potitions in the root CNode */
+
+enum {
+    seL4_CapNull                =  0, /* null cap */
+    seL4_CapInitThreadTCB       =  1, /* initial thread's TCB cap */
+    seL4_CapInitThreadCNode     =  2, /* initial thread's root CNode cap */
+    seL4_CapInitThreadVSpace    =  3, /* initial thread's VSpace cap */
+    seL4_CapIRQControl          =  4, /* global IRQ controller cap */
+    seL4_CapASIDControl         =  5, /* global ASID controller cap */
+    seL4_CapInitThreadASIDPool  =  6, /* initial thread's ASID pool cap */
+    seL4_CapIOPort              =  7, /* global IO port cap (null cap if not supported) */
+    seL4_CapIOSpace             =  8, /* global IO space cap (null cap if no IOMMU support) */
+    seL4_CapBootInfoFrame       =  9, /* bootinfo frame cap */
+    seL4_CapInitThreadIPCBuffer = 10, /* initial thread's IPC buffer frame cap */
+    seL4_CapDomain              = 11, /* global domain controller cap */
+    seL4_NumInitialCaps         = 12
+};
+
+/* Legacy code will have assumptions on the vspace root being a Page Directory
+ * type, so for now we define one to the other */
+#define seL4_CapInitThreadPD seL4_CapInitThreadVSpace
+
+/* types */
+typedef seL4_Word seL4_SlotPos;
+
+typedef struct {
+    seL4_SlotPos start; /* first CNode slot position OF region */
+    seL4_SlotPos end;   /* first CNode slot position AFTER region */
+} seL4_SlotRegion;
+
+typedef struct {
+    seL4_Word       basePaddr;     /* base physical address of device region */
+    seL4_Word       frameSizeBits; /* size (2^n bytes) of a device-region frame */
+    seL4_SlotRegion frames;        /* device-region frame caps */
+} seL4_DeviceRegion;
+
+typedef struct {
+    seL4_NodeId       nodeID;          /* ID [0..numNodes-1] of the seL4 node (0 if uniprocessor) */
+    seL4_Word         numNodes;        /* number of seL4 nodes (1 if uniprocessor) */
+    seL4_Word         numIOPTLevels;   /* number of IOMMU PT levels (0 if no IOMMU support) */
+    seL4_IPCBuffer*   ipcBuffer;       /* pointer to initial thread's IPC buffer */
+    seL4_SlotRegion   empty;           /* empty slots (null caps) */
+    seL4_SlotRegion   sharedFrames;    /* shared-frame caps (shared between seL4 nodes) */
+    seL4_SlotRegion   userImageFrames; /* userland-image frame caps */
+    seL4_SlotRegion   userImagePaging; /* userland-image paging structure caps */
+    seL4_SlotRegion   untyped;         /* untyped-object caps (untyped caps) */
+    seL4_PAddr        untypedPaddrList   [CONFIG_MAX_NUM_BOOTINFO_UNTYPED_CAPS]; /* physical address of each untyped cap */
+    seL4_Uint8        untypedSizeBitsList[CONFIG_MAX_NUM_BOOTINFO_UNTYPED_CAPS]; /* size (2^n) bytes of each untyped cap */
+    seL4_Uint8        initThreadCNodeSizeBits; /* initial thread's root CNode size (2^n slots) */
+    seL4_Word         numDeviceRegions;        /* number of device regions */
+    seL4_DeviceRegion deviceRegions[CONFIG_MAX_NUM_BOOTINFO_DEVICE_REGIONS]; /* device regions */
+    seL4_Domain       initThreadDomain; /* Initial thread's domain ID */
+} seL4_BootInfo;
+
+
+#endif // __LIBSEL4_BOOTINFO_TYPES_H
diff --git a/libsel4/sel4_arch_include/aarch32/sel4/sel4_arch/types.h b/libsel4/sel4_arch_include/aarch32/sel4/sel4_arch/types.h
index b7edadd88b558f5fa13c59b78653f631cacd5658..d0ffc08d8a96dcb8cf94d34ce957a3ec32a1b5f0 100644
--- a/libsel4/sel4_arch_include/aarch32/sel4/sel4_arch/types.h
+++ b/libsel4/sel4_arch_include/aarch32/sel4/sel4_arch/types.h
@@ -15,6 +15,9 @@
 
 typedef seL4_Uint32 seL4_Word;
 typedef seL4_Word seL4_CPtr;
+typedef seL4_Word seL4_NodeId;
+typedef seL4_Word seL4_PAddr;
+typedef seL4_Word seL4_Domain;
 
 typedef struct seL4_UserContext_ {
     /* frame registers */
diff --git a/src/arch/arm/32/kernel/vspace.c b/src/arch/arm/32/kernel/vspace.c
index 19b91688dd7df28b0e6731f2a712880527ab0a96..1147b46cbade64cc16a74e32c5828db7505e4601 100644
--- a/src/arch/arm/32/kernel/vspace.c
+++ b/src/arch/arm/32/kernel/vspace.c
@@ -358,8 +358,8 @@ create_it_address_space(cap_t root_cnode_cap, v_region_t it_v_reg)
     cap_t      pd_cap;
     vptr_t     pt_vptr;
     pptr_t     pt_pptr;
-    slot_pos_t slot_pos_before;
-    slot_pos_t slot_pos_after;
+    seL4_SlotPos slot_pos_before;
+    seL4_SlotPos slot_pos_after;
     pptr_t pd_pptr;
 
     /* create PD obj and cap */
@@ -378,7 +378,7 @@ create_it_address_space(cap_t root_cnode_cap, v_region_t it_v_reg)
             pd_pptr  /* capPDBasePtr    */
         );
     slot_pos_before = ndks_boot.slot_pos_cur;
-    write_slot(SLOT_PTR(pptr_of_cap(root_cnode_cap), BI_CAP_IT_VSPACE), pd_cap);
+    write_slot(SLOT_PTR(pptr_of_cap(root_cnode_cap), seL4_CapInitThreadVSpace), pd_cap);
 
     /* create all PT objs and caps necessary to cover userland image */
 
@@ -398,7 +398,7 @@ create_it_address_space(cap_t root_cnode_cap, v_region_t it_v_reg)
     }
 
     slot_pos_after = ndks_boot.slot_pos_cur;
-    ndks_boot.bi_frame->ui_paging_caps = (slot_region_t) {
+    ndks_boot.bi_frame->userImagePaging = (seL4_SlotRegion) {
         slot_pos_before, slot_pos_after
     };
 
@@ -408,22 +408,22 @@ create_it_address_space(cap_t root_cnode_cap, v_region_t it_v_reg)
 BOOT_CODE bool_t
 create_device_frames(cap_t root_cnode_cap)
 {
-    slot_pos_t     slot_pos_before;
-    slot_pos_t     slot_pos_after;
+    seL4_SlotPos     slot_pos_before;
+    seL4_SlotPos     slot_pos_after;
     vm_page_size_t frame_size;
     region_t       dev_reg;
-    bi_dev_reg_t   bi_dev_reg;
+    seL4_DeviceRegion   bi_dev_reg;
     cap_t          frame_cap;
     word_t         i;
     pptr_t         f;
 
-    ndks_boot.bi_frame->num_dev_regs = get_num_dev_p_regs();
-    if (ndks_boot.bi_frame->num_dev_regs > CONFIG_MAX_NUM_BOOTINFO_DEVICE_REGIONS) {
+    ndks_boot.bi_frame->numDeviceRegions = get_num_dev_p_regs();
+    if (ndks_boot.bi_frame->numDeviceRegions > CONFIG_MAX_NUM_BOOTINFO_DEVICE_REGIONS) {
         printf("Kernel init: Too many device regions for boot info\n");
-        ndks_boot.bi_frame->num_dev_regs = CONFIG_MAX_NUM_BOOTINFO_DEVICE_REGIONS;
+        ndks_boot.bi_frame->numDeviceRegions = CONFIG_MAX_NUM_BOOTINFO_DEVICE_REGIONS;
     }
 
-    for (i = 0; i < ndks_boot.bi_frame->num_dev_regs; i++) {
+    for (i = 0; i < ndks_boot.bi_frame->numDeviceRegions; i++) {
         /* write the frame caps of this device region into the root CNode and update the bootinfo */
         dev_reg = paddr_to_pptr_reg(get_dev_p_reg(i));
         /* use 1M frames if possible, otherwise use 4K frames */
@@ -447,12 +447,12 @@ create_device_frames(cap_t root_cnode_cap)
         slot_pos_after = ndks_boot.slot_pos_cur;
 
         /* add device-region entry to bootinfo */
-        bi_dev_reg.base_paddr = pptr_to_paddr((void*)dev_reg.start);
-        bi_dev_reg.frame_size_bits = pageBitsForSize(frame_size);
-        bi_dev_reg.frame_caps = (slot_region_t) {
+        bi_dev_reg.basePaddr = pptr_to_paddr((void*)dev_reg.start);
+        bi_dev_reg.frameSizeBits = pageBitsForSize(frame_size);
+        bi_dev_reg.frames = (seL4_SlotRegion) {
             slot_pos_before, slot_pos_after
         };
-        ndks_boot.bi_frame->dev_reg_list[i] = bi_dev_reg;
+        ndks_boot.bi_frame->deviceRegions[i] = bi_dev_reg;
     }
 
     return true;
diff --git a/src/arch/arm/kernel/boot.c b/src/arch/arm/kernel/boot.c
index 7feeba8b893bd46190a9ceaa6ed415aa99df299f..3e7a63d1f2829f8cf111cbf2d6a5e8ccf5ba34f1 100644
--- a/src/arch/arm/kernel/boot.c
+++ b/src/arch/arm/kernel/boot.c
@@ -133,10 +133,9 @@ init_irqs(cap_t root_cnode_cap)
     setIRQState(IRQTimer, KERNEL_TIMER_IRQ);
 
     /* provide the IRQ control cap */
-    write_slot(SLOT_PTR(pptr_of_cap(root_cnode_cap), BI_CAP_IRQ_CTRL), cap_irq_control_cap_new());
+    write_slot(SLOT_PTR(pptr_of_cap(root_cnode_cap), seL4_CapIRQControl), cap_irq_control_cap_new());
 }
 
-
 /* This and only this function initialises the CPU. It does NOT initialise any kernel state. */
 
 BOOT_CODE static void
@@ -262,7 +261,7 @@ try_init_kernel(
     if (!create_frames_ret.success) {
         return false;
     }
-    ndks_boot.bi_frame->ui_frame_caps = create_frames_ret.region;
+    ndks_boot.bi_frame->userImageFrames = create_frames_ret.region;
 
     /* create/initialise the initial thread's ASID pool */
     it_ap_cap = create_it_asid_pool(root_cnode_cap);
@@ -310,7 +309,7 @@ try_init_kernel(
     }
 
     /* no shared-frame caps (ARM has no multikernel support) */
-    ndks_boot.bi_frame->sh_frame_caps = S_REG_EMPTY;
+    ndks_boot.bi_frame->sharedFrames = S_REG_EMPTY;
 
     /* finalise the bootinfo frame */
     bi_finalise();
diff --git a/src/arch/x86/32/kernel/vspace.c b/src/arch/x86/32/kernel/vspace.c
index 765cbcefb9588d13b37e7347e89f2516030d572c..6717a961da99d3b1381c0445dfe8942f60218d3f 100644
--- a/src/arch/x86/32/kernel/vspace.c
+++ b/src/arch/x86/32/kernel/vspace.c
@@ -439,8 +439,8 @@ create_it_address_space(cap_t root_cnode_cap, v_region_t it_v_reg)
     cap_t      vspace_cap;
     vptr_t     vptr;
     pptr_t     pptr;
-    slot_pos_t slot_pos_before;
-    slot_pos_t slot_pos_after;
+    seL4_SlotPos slot_pos_before;
+    seL4_SlotPos slot_pos_after;
 
     slot_pos_before = ndks_boot.slot_pos_cur;
     if (PDPT_BITS == 0) {
@@ -457,7 +457,7 @@ create_it_address_space(cap_t root_cnode_cap, v_region_t it_v_reg)
         if (!provide_cap(root_cnode_cap, pd_cap)) {
             return cap_null_cap_new();
         }
-        write_slot(SLOT_PTR(pptr_of_cap(root_cnode_cap), BI_CAP_IT_VSPACE), pd_cap);
+        write_slot(SLOT_PTR(pptr_of_cap(root_cnode_cap), seL4_CapInitThreadVSpace), pd_cap);
         vspace_cap = pd_cap;
     } else {
         cap_t pdpt_cap;
@@ -505,7 +505,7 @@ create_it_address_space(cap_t root_cnode_cap, v_region_t it_v_reg)
         }
         /* now that PDs exist we can copy the global mappings */
         copyGlobalMappings((vspace_root_t*)pdpt_pptr);
-        write_slot(SLOT_PTR(pptr_of_cap(root_cnode_cap), BI_CAP_IT_VSPACE), pdpt_cap);
+        write_slot(SLOT_PTR(pptr_of_cap(root_cnode_cap), seL4_CapInitThreadVSpace), pdpt_cap);
         vspace_cap = pdpt_cap;
     }
 
@@ -527,7 +527,7 @@ create_it_address_space(cap_t root_cnode_cap, v_region_t it_v_reg)
     }
 
     slot_pos_after = ndks_boot.slot_pos_cur;
-    ndks_boot.bi_frame->ui_paging_caps = (slot_region_t) {
+    ndks_boot.bi_frame->userImagePaging = (seL4_SlotRegion) {
         slot_pos_before, slot_pos_after
     };
 
diff --git a/src/arch/x86/kernel/boot.c b/src/arch/x86/kernel/boot.c
index 1098dab9372dfabc8153ccb1482e0acfd6e933a4..1322565169096810534539a27002f13dc7031c81 100644
--- a/src/arch/x86/kernel/boot.c
+++ b/src/arch/x86/kernel/boot.c
@@ -59,7 +59,7 @@ init_irqs(cap_t root_cnode_cap)
     }
     Arch_irqStateInit();
     /* provide the IRQ control cap */
-    write_slot(SLOT_PTR(pptr_of_cap(root_cnode_cap), BI_CAP_IRQ_CTRL), cap_irq_control_cap_new());
+    write_slot(SLOT_PTR(pptr_of_cap(root_cnode_cap), seL4_CapIRQControl), cap_irq_control_cap_new());
 }
 
 BOOT_CODE static bool_t
@@ -68,11 +68,11 @@ create_device_frames(
     dev_p_regs_t* dev_p_regs
 )
 {
-    slot_pos_t     slot_pos_before;
-    slot_pos_t     slot_pos_after;
+    seL4_SlotPos     slot_pos_before;
+    seL4_SlotPos     slot_pos_after;
     vm_page_size_t frame_size;
     region_t       dev_reg;
-    bi_dev_reg_t   bi_dev_reg;
+    seL4_DeviceRegion   bi_dev_reg;
     cap_t          frame_cap;
     uint32_t       i;
     pptr_t         f;
@@ -101,15 +101,15 @@ create_device_frames(
         slot_pos_after = ndks_boot.slot_pos_cur;
 
         /* add device-region entry to bootinfo */
-        bi_dev_reg.base_paddr = pptr_to_paddr((void*)dev_reg.start);
-        bi_dev_reg.frame_size_bits = pageBitsForSize(frame_size);
-        bi_dev_reg.frame_caps = (slot_region_t) {
+        bi_dev_reg.basePaddr = pptr_to_paddr((void*)dev_reg.start);
+        bi_dev_reg.frameSizeBits = pageBitsForSize(frame_size);
+        bi_dev_reg.frames = (seL4_SlotRegion) {
             slot_pos_before, slot_pos_after
         };
-        ndks_boot.bi_frame->dev_reg_list[i] = bi_dev_reg;
+        ndks_boot.bi_frame->deviceRegions[i] = bi_dev_reg;
     }
 
-    ndks_boot.bi_frame->num_dev_regs = dev_p_regs->count;
+    ndks_boot.bi_frame->numDeviceRegions = dev_p_regs->count;
     return true;
 }
 
@@ -219,7 +219,7 @@ init_sys_state(
 
     /* create the IO port cap */
     write_slot(
-        SLOT_PTR(pptr_of_cap(root_cnode_cap), BI_CAP_IO_PORT),
+        SLOT_PTR(pptr_of_cap(root_cnode_cap), seL4_CapIOPort),
         cap_io_port_cap_new(
             0,                /* first port */
             NUM_IO_PORTS - 1 /* last port  */
@@ -276,7 +276,7 @@ init_sys_state(
     if (!create_frames_ret.success) {
         return false;
     }
-    ndks_boot.bi_frame->ui_frame_caps = create_frames_ret.region;
+    ndks_boot.bi_frame->userImageFrames = create_frames_ret.region;
 
     /* create the initial thread's ASID pool */
     it_ap_cap = create_it_asid_pool(root_cnode_cap);
@@ -318,12 +318,12 @@ init_sys_state(
         }
 
         /* write number of IOMMU PT levels into bootinfo */
-        ndks_boot.bi_frame->num_iopt_levels = x86KSnumIOPTLevels;
+        ndks_boot.bi_frame->numIOPTLevels = x86KSnumIOPTLevels;
 
         /* write IOSpace master cap */
-        write_slot(SLOT_PTR(pptr_of_cap(root_cnode_cap), BI_CAP_IO_SPACE), master_iospace_cap());
+        write_slot(SLOT_PTR(pptr_of_cap(root_cnode_cap), seL4_CapIOSpace), master_iospace_cap());
     } else {
-        ndks_boot.bi_frame->num_iopt_levels = -1;
+        ndks_boot.bi_frame->numIOPTLevels = -1;
     }
 
     /* convert the remaining free memory into UT objects and provide the caps */
diff --git a/src/kernel/boot.c b/src/kernel/boot.c
index 60364e52345b44c9ab56b24160dc87b56ec301c6..31d9297540576d0e67c25cdb889150db9cef697c 100644
--- a/src/kernel/boot.c
+++ b/src/kernel/boot.c
@@ -131,7 +131,7 @@ write_slot(slot_ptr_t slot_ptr, cap_t cap)
  */
 compile_assert(root_cnode_size_valid,
                CONFIG_ROOT_CNODE_SIZE_BITS < 32 - seL4_SlotBits &&
-               (1U << CONFIG_ROOT_CNODE_SIZE_BITS) >= BI_CAP_DYN_START)
+               (1U << CONFIG_ROOT_CNODE_SIZE_BITS) >= seL4_NumInitialCaps)
 
 BOOT_CODE cap_t
 create_root_cnode(void)
@@ -158,7 +158,7 @@ create_root_cnode(void)
         );
 
     /* write the root CNode cap into the root CNode */
-    write_slot(SLOT_PTR(pptr, BI_CAP_IT_CNODE), cap);
+    write_slot(SLOT_PTR(pptr, seL4_CapInitThreadCNode), cap);
 
     return cap;
 }
@@ -200,7 +200,7 @@ create_domain_cap(cap_t root_cnode_cap)
     }
 
     cap = cap_domain_cap_new();
-    write_slot(SLOT_PTR(pptr_of_cap(root_cnode_cap), BI_CAP_DOM), cap);
+    write_slot(SLOT_PTR(pptr_of_cap(root_cnode_cap), seL4_CapDomain), cap);
 }
 
 
@@ -220,7 +220,7 @@ create_ipcbuf_frame(cap_t root_cnode_cap, cap_t pd_cap, vptr_t vptr)
 
     /* create a cap of it and write it into the root CNode */
     cap = create_mapped_it_frame_cap(pd_cap, pptr, vptr, IT_ASID, false, false);
-    write_slot(SLOT_PTR(pptr_of_cap(root_cnode_cap), BI_CAP_IT_IPCBUF), cap);
+    write_slot(SLOT_PTR(pptr_of_cap(root_cnode_cap), seL4_CapInitThreadIPCBuffer), cap);
 
     return cap;
 }
@@ -237,7 +237,7 @@ create_bi_frame_cap(
 
     /* create a cap of it and write it into the root CNode */
     cap = create_mapped_it_frame_cap(pd_cap, pptr, vptr, IT_ASID, false, false);
-    write_slot(SLOT_PTR(pptr_of_cap(root_cnode_cap), BI_CAP_BI_FRAME), cap);
+    write_slot(SLOT_PTR(pptr_of_cap(root_cnode_cap), seL4_CapBootInfoFrame), cap);
 }
 
 BOOT_CODE pptr_t
@@ -259,14 +259,14 @@ allocate_bi_frame(
 
     /* initialise bootinfo-related global state */
     ndks_boot.bi_frame = BI_PTR(pptr);
-    ndks_boot.slot_pos_cur = BI_CAP_DYN_START;
+    ndks_boot.slot_pos_cur = seL4_NumInitialCaps;
 
-    BI_PTR(pptr)->node_id = node_id;
-    BI_PTR(pptr)->num_nodes = num_nodes;
-    BI_PTR(pptr)->num_iopt_levels = 0;
-    BI_PTR(pptr)->ipcbuf_vptr = ipcbuf_vptr;
-    BI_PTR(pptr)->it_cnode_size_bits = CONFIG_ROOT_CNODE_SIZE_BITS;
-    BI_PTR(pptr)->it_domain = ksDomSchedule[ksDomScheduleIdx].domain;
+    BI_PTR(pptr)->nodeID = node_id;
+    BI_PTR(pptr)->numNodes = num_nodes;
+    BI_PTR(pptr)->numIOPTLevels = 0;
+    BI_PTR(pptr)->ipcBuffer = (seL4_IPCBuffer *) ipcbuf_vptr;
+    BI_PTR(pptr)->initThreadCNodeSizeBits = CONFIG_ROOT_CNODE_SIZE_BITS;
+    BI_PTR(pptr)->initThreadDomain = ksDomSchedule[ksDomScheduleIdx].domain;
 
     return pptr;
 }
@@ -294,8 +294,8 @@ create_frames_of_region(
 {
     pptr_t     f;
     cap_t      frame_cap;
-    slot_pos_t slot_pos_before;
-    slot_pos_t slot_pos_after;
+    seL4_SlotPos slot_pos_before;
+    seL4_SlotPos slot_pos_after;
 
     slot_pos_before = ndks_boot.slot_pos_cur;
 
@@ -314,7 +314,7 @@ create_frames_of_region(
     slot_pos_after = ndks_boot.slot_pos_cur;
 
     return (create_frames_of_region_ret_t) {
-        (slot_region_t) { slot_pos_before, slot_pos_after }, true
+        (seL4_SlotRegion) { slot_pos_before, slot_pos_after }, true
     };
 }
 
@@ -332,11 +332,11 @@ create_it_asid_pool(cap_t root_cnode_cap)
     }
     memzero(ASID_POOL_PTR(ap_pptr), 1 << seL4_ASIDPoolBits);
     ap_cap = cap_asid_pool_cap_new(IT_ASID >> asidLowBits, ap_pptr);
-    write_slot(SLOT_PTR(pptr_of_cap(root_cnode_cap), BI_CAP_IT_ASID_POOL), ap_cap);
+    write_slot(SLOT_PTR(pptr_of_cap(root_cnode_cap), seL4_CapInitThreadASIDPool), ap_cap);
 
     /* create ASID control cap */
     write_slot(
-        SLOT_PTR(pptr_of_cap(root_cnode_cap), BI_CAP_ASID_CTRL),
+        SLOT_PTR(pptr_of_cap(root_cnode_cap), seL4_CapASIDControl),
         cap_asid_control_cap_new()
     );
 
@@ -385,7 +385,7 @@ create_initial_thread(
     Arch_initContext(&tcb->tcbArch.tcbContext);
 
     /* derive a copy of the IPC buffer cap for inserting */
-    dc_ret = deriveCap(SLOT_PTR(pptr_of_cap(root_cnode_cap), BI_CAP_IT_IPCBUF), ipcbuf_cap);
+    dc_ret = deriveCap(SLOT_PTR(pptr_of_cap(root_cnode_cap), seL4_CapInitThreadIPCBuffer), ipcbuf_cap);
     if (dc_ret.status != EXCEPTION_NONE) {
         printf("Failed to derive copy of IPC Buffer\n");
         return false;
@@ -394,17 +394,17 @@ create_initial_thread(
     /* initialise TCB (corresponds directly to abstract specification) */
     cteInsert(
         root_cnode_cap,
-        SLOT_PTR(pptr_of_cap(root_cnode_cap), BI_CAP_IT_CNODE),
+        SLOT_PTR(pptr_of_cap(root_cnode_cap), seL4_CapInitThreadCNode),
         SLOT_PTR(pptr, tcbCTable)
     );
     cteInsert(
         it_pd_cap,
-        SLOT_PTR(pptr_of_cap(root_cnode_cap), BI_CAP_IT_VSPACE),
+        SLOT_PTR(pptr_of_cap(root_cnode_cap), seL4_CapInitThreadVSpace),
         SLOT_PTR(pptr, tcbVTable)
     );
     cteInsert(
         dc_ret.cap,
-        SLOT_PTR(pptr_of_cap(root_cnode_cap), BI_CAP_IT_IPCBUF),
+        SLOT_PTR(pptr_of_cap(root_cnode_cap), seL4_CapInitThreadIPCBuffer),
         SLOT_PTR(pptr, tcbBuffer)
     );
     tcb->tcbIPCBuffer = ipcbuf_vptr;
@@ -423,7 +423,7 @@ create_initial_thread(
 
     /* create initial thread's TCB cap */
     cap = cap_thread_cap_new(TCB_REF(tcb));
-    write_slot(SLOT_PTR(pptr_of_cap(root_cnode_cap), BI_CAP_IT_TCB), cap);
+    write_slot(SLOT_PTR(pptr_of_cap(root_cnode_cap), seL4_CapInitThreadTCB), cap);
 
 #ifdef DEBUG
     setThreadName(tcb, "rootserver");
@@ -437,14 +437,14 @@ provide_untyped_cap(
     cap_t      root_cnode_cap,
     pptr_t     pptr,
     word_t     size_bits,
-    slot_pos_t first_untyped_slot
+    seL4_SlotPos first_untyped_slot
 )
 {
     bool_t ret;
     word_t i = ndks_boot.slot_pos_cur - first_untyped_slot;
     if (i < CONFIG_MAX_NUM_BOOTINFO_UNTYPED_CAPS) {
-        ndks_boot.bi_frame->ut_obj_paddr_list[i] = pptr_to_paddr((void*)pptr);
-        ndks_boot.bi_frame->ut_obj_size_bits_list[i] = size_bits;
+        ndks_boot.bi_frame->untypedPaddrList[i] = pptr_to_paddr((void*)pptr);
+        ndks_boot.bi_frame->untypedSizeBitsList[i] = size_bits;
         ret = provide_cap(root_cnode_cap, cap_untyped_cap_new(0, size_bits, pptr));
     } else {
         printf("Kernel init: Too many untyped regions for boot info\n");
@@ -465,7 +465,7 @@ BOOT_CODE static bool_t
 create_untypeds_for_region(
     cap_t      root_cnode_cap,
     region_t   reg,
-    slot_pos_t first_untyped_slot
+    seL4_SlotPos first_untyped_slot
 )
 {
     word_t align_bits;
@@ -495,8 +495,8 @@ create_untypeds_for_region(
 BOOT_CODE bool_t
 create_untypeds(cap_t root_cnode_cap, region_t boot_mem_reuse_reg)
 {
-    slot_pos_t slot_pos_before;
-    slot_pos_t slot_pos_after;
+    seL4_SlotPos slot_pos_before;
+    seL4_SlotPos slot_pos_after;
     word_t     i;
     region_t   reg;
 
@@ -517,7 +517,7 @@ create_untypeds(cap_t root_cnode_cap, region_t boot_mem_reuse_reg)
     }
 
     slot_pos_after = ndks_boot.slot_pos_cur;
-    ndks_boot.bi_frame->ut_obj_caps = (slot_region_t) {
+    ndks_boot.bi_frame->untyped = (seL4_SlotRegion) {
         slot_pos_before, slot_pos_after
     };
     return true;
@@ -526,9 +526,9 @@ create_untypeds(cap_t root_cnode_cap, region_t boot_mem_reuse_reg)
 BOOT_CODE void
 bi_finalise(void)
 {
-    slot_pos_t slot_pos_start = ndks_boot.slot_pos_cur;
-    slot_pos_t slot_pos_end = ndks_boot.slot_pos_max;
-    ndks_boot.bi_frame->null_caps = (slot_region_t) {
+    seL4_SlotPos slot_pos_start = ndks_boot.slot_pos_cur;
+    seL4_SlotPos slot_pos_end = ndks_boot.slot_pos_max;
+    ndks_boot.bi_frame->empty = (seL4_SlotRegion) {
         slot_pos_start, slot_pos_end
     };
 }