diff --git a/Cargo.lock b/Cargo.lock
index d50efe9..eb05733 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -125,6 +125,7 @@ dependencies = [
"bitflags 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
"clippy 0.0.182 (registry+https://github.com/rust-lang/crates.io-index)",
"goblin 0.0.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "linked_list_allocator 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
"raw-cpuid 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"redox_syscall 0.1.37",
"slab_allocator 0.3.0",
diff --git a/Cargo.toml b/Cargo.toml
index 6e33b58..56e09c5 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -11,10 +11,11 @@ crate-type = ["staticlib"]
[dependencies]
bitflags = "1"
clippy = { version = "*", optional = true }
-slab_allocator = { path = "slab_allocator" }
-spin = "0.4"
+linked_list_allocator = "0.5"
raw-cpuid = "3.0"
redox_syscall = { path = "syscall" }
+slab_allocator = { path = "slab_allocator" }
+spin = "0.4"
[dependencies.goblin]
version = "0.0.10"
@@ -31,3 +32,4 @@ doc = []
live = []
multi_core = []
pti = []
+slab = []
diff --git a/src/allocator/linked_list.rs b/src/allocator/linked_list.rs
new file mode 100644
index 0000000..989101c
--- /dev/null
+++ b/src/allocator/linked_list.rs
@@ -0,0 +1,70 @@
+use alloc::heap::{Alloc, AllocErr, Layout};
+use linked_list_allocator::Heap;
+use spin::Mutex;
+
+use paging::ActivePageTable;
+
+static HEAP: Mutex