diff --git a/kernel/src/device_interface/block.rs b/ableos/src/device_interface/block.rs
similarity index 100%
rename from kernel/src/device_interface/block.rs
rename to ableos/src/device_interface/block.rs
diff --git a/kernel/src/device_interface/character/mod.rs b/ableos/src/device_interface/character/mod.rs
similarity index 100%
rename from kernel/src/device_interface/character/mod.rs
rename to ableos/src/device_interface/character/mod.rs
diff --git a/kernel/src/device_interface/mod.rs b/ableos/src/device_interface/mod.rs
similarity index 100%
rename from kernel/src/device_interface/mod.rs
rename to ableos/src/device_interface/mod.rs
diff --git a/ableos/src/devices/character_devs/dev_null.rs b/ableos/src/devices/character_devs/dev_null.rs
index 7688875..1643b49 100644
--- a/ableos/src/devices/character_devs/dev_null.rs
+++ b/ableos/src/devices/character_devs/dev_null.rs
@@ -1,4 +1,4 @@
-use kernel::device_interface::CharacterDevice;
+use crate::device_interface::CharacterDevice;
 
 #[derive(Debug, Clone, Copy, PartialEq, Eq)]
 pub struct DevNull;
diff --git a/ableos/src/devices/character_devs/dev_unicode.rs b/ableos/src/devices/character_devs/dev_unicode.rs
index 995e037..c3aafef 100644
--- a/ableos/src/devices/character_devs/dev_unicode.rs
+++ b/ableos/src/devices/character_devs/dev_unicode.rs
@@ -1,4 +1,4 @@
-use kernel::device_interface::CharacterDevice;
+use crate::device_interface::CharacterDevice;
 
 #[derive(Debug)]
 pub struct DevUnicode {
diff --git a/ableos/src/devices/character_devs/dev_zero.rs b/ableos/src/devices/character_devs/dev_zero.rs
index 07508b5..b6a6844 100644
--- a/ableos/src/devices/character_devs/dev_zero.rs
+++ b/ableos/src/devices/character_devs/dev_zero.rs
@@ -1,4 +1,4 @@
-use kernel::device_interface::CharacterDevice;
+use crate::device_interface::CharacterDevice;
 
 #[derive(Debug)]
 pub struct DevZero;
diff --git a/ableos/src/devices/character_devs/mod.rs b/ableos/src/devices/character_devs/mod.rs
index f63a064..806d284 100644
--- a/ableos/src/devices/character_devs/mod.rs
+++ b/ableos/src/devices/character_devs/mod.rs
@@ -2,4 +2,4 @@ pub mod dev_null;
 pub mod dev_unicode;
 pub mod dev_zero;
 
-pub use kernel::device_interface::CharacterDevice;
+pub use crate::device_interface::CharacterDevice;
diff --git a/ableos/src/devices/dev_vterm.rs b/ableos/src/devices/dev_vterm.rs
index e807cb4..ec4082c 100644
--- a/ableos/src/devices/dev_vterm.rs
+++ b/ableos/src/devices/dev_vterm.rs
@@ -1,9 +1,9 @@
 // ! A virtual terminal device.
 
+use crate::device_interface::CharacterDevice;
 use core::ops::Not;
 use core::sync::atomic::AtomicU32;
 use core::sync::atomic::Ordering;
-use kernel::device_interface::CharacterDevice;
 
 use crate::pixel_format::Rgba64;
 
diff --git a/ableos/src/devices/mod.rs b/ableos/src/devices/mod.rs
index ea102d6..d69885c 100644
--- a/ableos/src/devices/mod.rs
+++ b/ableos/src/devices/mod.rs
@@ -6,10 +6,10 @@ pub mod pci;
 
 pub use self::Device::*;
 
+use crate::device_interface::{BlockDevice, CharacterDevice};
 use crate::devices::dev_vterm::VTerm;
 use character_devs::{dev_null::DevNull, dev_unicode::DevUnicode, dev_zero::DevZero};
 use hashbrown::HashMap;
-use kernel::device_interface::{BlockDevice, CharacterDevice};
 use spin::Lazy;
 
 pub static DEVICE_TABLE: Lazy<spin::Mutex<DeviceTable>> =
diff --git a/ableos/src/driver_traits/serial.rs b/ableos/src/driver_traits/serial.rs
index 118f32f..336442e 100644
--- a/ableos/src/driver_traits/serial.rs
+++ b/ableos/src/driver_traits/serial.rs
@@ -1,4 +1,4 @@
-use kernel::device_interface::CharacterDevice;
+use crate::device_interface::CharacterDevice;
 
 pub struct Serial {
     pub base: usize,
diff --git a/ableos/src/lib.rs b/ableos/src/lib.rs
index 2b78b4b..b3df4dc 100644
--- a/ableos/src/lib.rs
+++ b/ableos/src/lib.rs
@@ -57,6 +57,7 @@ pub mod print;
 pub mod serial_print;
 
 pub mod boot_conf;
+pub mod device_interface;
 pub mod devices;
 pub mod driver_traits;
 pub mod experiments;
diff --git a/ableos/src/stdio.rs b/ableos/src/stdio.rs
index c5b127d..f94360d 100644
--- a/ableos/src/stdio.rs
+++ b/ableos/src/stdio.rs
@@ -1,7 +1,7 @@
 use {
+    crate::device_interface::CharacterDevice,
     crate::devices::Device::{Block, Character, Vterm},
     core::fmt::{Arguments, Error, Write},
-    kernel::device_interface::CharacterDevice,
 };
 
 #[derive(Debug, Clone)]
diff --git a/kernel/src/aalloc/aalloc.rs b/kernel/src/aalloc/aalloc.rs
deleted file mode 100644
index 54d5598..0000000
--- a/kernel/src/aalloc/aalloc.rs
+++ /dev/null
@@ -1,122 +0,0 @@
-//! The allocator to be implemented by ableOS
-//!
-//! NOTE: All memory regions are taken from https://wiki.osdev.org/Memory_Map_(x86)
-
-#![allow(missing_docs)]
-
-use alloc::alloc::{GlobalAlloc, Layout};
-use core::{fmt::Display, ptr::null_mut};
-use log::{debug, info};
-
-// const HEAP_START: usize = 600_000_000;
-const HEAP_START: usize = 0x00100000;
-const BLOCK_SIZE: usize = 1024;
-const BLOCK_COUNT: usize = 512;
-
-#[derive(Debug, Clone, Copy)]
-pub struct MemoryRegion {
-    start: usize,
-    end: usize,
-}
-impl Display for MemoryRegion {
-    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
-        writeln!(
-            f,
-            "MemoryRegion {{ start: {}, end: {}, size: {} bytes}}",
-            self.start,
-            self.end,
-            self.end - self.start
-        )
-    }
-}
-impl MemoryRegion {
-    pub fn new(start: usize, end: usize) -> MemoryRegion {
-        MemoryRegion { start, end }
-    }
-    pub fn test_region(&self) -> bool {
-        unsafe {
-            let mutptr = self.start as *mut u8;
-
-            core::ptr::write(mutptr, 0xFF);
-            // trace!("{}", core::ptr::read(mutptr));
-        }
-
-        true
-    }
-}
-
-#[derive(Debug, Clone, Copy)]
-pub struct AAlloc {
-    current_region: usize,
-    memory_regions: [Option<MemoryRegion>; 512],
-}
-
-impl AAlloc {
-    fn test_regions(&self) {
-        for x in 0..self.current_region {
-            if let Some(region) = self.memory_regions[x] {
-                debug!("Region {}: {:?}", x, region);
-            }
-        }
-    }
-
-    pub fn add_region(&mut self, mem: MemoryRegion) {
-        self.memory_regions[self.current_region] = Some(mem);
-        self.current_region += 1;
-    }
-
-    pub fn intialize() {
-        info!("Heap Start: {}", HEAP_START);
-        info!("Heap Size:  {}", BLOCK_SIZE * BLOCK_COUNT);
-        info!("Heap End:   {}", HEAP_START + BLOCK_SIZE * BLOCK_COUNT);
-
-        let mut aalloc = AAlloc {
-            current_region: 0,
-            memory_regions: [None; 512],
-        };
-
-        // BS MEMORY REGION
-        aalloc.add_region(MemoryRegion::new(HEAP_START, HEAP_START + 10));
-
-        aalloc.add_region(MemoryRegion::new(0x00007E00, 0x0007FFFF));
-
-        aalloc.add_region(MemoryRegion::new(0x00100000, 0x00EFFFFF));
-
-        // ISA Memory Hole
-        aalloc.add_region(MemoryRegion::new(0x00F00000, 0x00FFFFFF));
-
-        aalloc.add_region(MemoryRegion::new(0x0000000100000000, 0x0000000100000000));
-
-        aalloc.memory_regions[0].unwrap().test_region();
-        debug!("{}", aalloc);
-    }
-}
-
-impl Display for AAlloc {
-    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
-        write!(f, "AAlloc {{\n\tcurrent_region: {},\n", self.current_region)?;
-
-        for x in 0..self.current_region {
-            if let Some(region) = self.memory_regions[x] {
-                write!(f, "\tRegion {}: {}", x, region)?;
-            }
-        }
-        write!(f, "}}")?;
-        Ok(())
-    }
-}
-
-unsafe impl GlobalAlloc for AAlloc {
-    unsafe fn alloc(&self, _layout: Layout) -> *mut u8 {
-        info!("Allocating memory");
-
-        info!("{}", _layout.size());
-        info!("{}", _layout.align());
-
-        null_mut()
-    }
-
-    unsafe fn dealloc(&self, _ptr: *mut u8, _layout: Layout) {
-        panic!("dealloc should be never called")
-    }
-}
diff --git a/kernel/src/aalloc/mod.rs b/kernel/src/aalloc/mod.rs
deleted file mode 100644
index 74ba352..0000000
--- a/kernel/src/aalloc/mod.rs
+++ /dev/null
@@ -1,12 +0,0 @@
-#![allow(missing_docs)]
-
-pub mod aalloc;
-pub use aalloc::*;
-/*
-#[alloc_error_handler]
-fn alloc_error_handler(layout: alloc::alloc::Layout) -> ! {
-    panic!("allocation error: {:?}", layout)
-}
-
-
-*/
diff --git a/kernel/src/arch/mod.rs b/kernel/src/arch/mod.rs
deleted file mode 100644
index 1947fbc..0000000
--- a/kernel/src/arch/mod.rs
+++ /dev/null
@@ -1,6 +0,0 @@
-//! Architecture-specific code.
-
-/// X86 specific code
-#[cfg(target_arch = "x86_64")]
-#[path = "x86_64/mod.rs"]
-pub mod arch;
diff --git a/kernel/src/arch/x86_64/mod.rs b/kernel/src/arch/x86_64/mod.rs
deleted file mode 100644
index eee7ced..0000000
--- a/kernel/src/arch/x86_64/mod.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-///
-
-pub fn sloop() {
-    loop {
-        unsafe {
-            core::arch::asm!("hlt");
-        }
-    }
-}
diff --git a/kernel/src/lib.rs b/kernel/src/lib.rs
index 206cf4c..20de4ad 100644
--- a/kernel/src/lib.rs
+++ b/kernel/src/lib.rs
@@ -1,46 +1,19 @@
 //! The ableOS kernel.
 
-#![feature(alloc_error_handler)]
-#![feature(arbitrary_enum_discriminant)]
-#![feature(prelude_import)]
+#![feature(alloc_error_handler, prelude_import)]
 #![no_std]
 #![deny(missing_docs)]
 
 extern crate alloc;
 
-pub mod aalloc;
 pub mod allocator;
-pub mod arch;
-pub mod device_interface;
-// pub mod panic;
-pub mod proccess;
-pub mod syscalls;
 pub mod task;
-pub mod time;
 
-use core::arch::asm;
 use versioning::Version;
 
-/// The number of ticks since the first CPU was started
-// pub static TICK: AtomicU64 = AtomicU64::new(0);
-
 /// Kernel's version
 pub const KERNEL_VERSION: Version = Version {
     major: 0,
     minor: 1,
     patch: 2,
 };
-
-/*
-/// called by arch specific timers to tick up all kernel related functions
-pub fn tick() {
-    let mut data = TICK.load(Relaxed);
-    data = data.wrapping_add(1);
-
-    TICK.store(data, Relaxed)
-}
-*/
-/// Cause a software interrupt
-pub fn software_int() {
-    unsafe { asm!("int 54") }
-}
diff --git a/kernel/src/panic.rs b/kernel/src/panic.rs
deleted file mode 100644
index 2da2b00..0000000
--- a/kernel/src/panic.rs
+++ /dev/null
@@ -1,11 +0,0 @@
-//! Panic-related stuff
-
-use core::panic::PanicInfo;
-use log::error;
-
-#[panic_handler]
-fn panic_handler(info: &PanicInfo) -> ! {
-    error!("{}", info);
-
-    loop {}
-}
diff --git a/kernel/src/proccess.rs b/kernel/src/proccess.rs
deleted file mode 100644
index e8f94ce..0000000
--- a/kernel/src/proccess.rs
+++ /dev/null
@@ -1,14 +0,0 @@
-//! Platform agnostic process
-
-/// A process ID
-pub type PID = u64;
-
-/// Signals that can be sent to a process
-#[repr(C)]
-pub enum Signals {
-    /// Terminate the process
-    Terminate,
-
-    /// Shutdown the process and allow it to shutdown cleanly
-    Quit,
-}
diff --git a/kernel/src/syscalls.rs b/kernel/src/syscalls.rs
deleted file mode 100644
index 924201d..0000000
--- a/kernel/src/syscalls.rs
+++ /dev/null
@@ -1,26 +0,0 @@
-//!
-
-use crate::proccess::{Signals, PID};
-
-/// All possible system calls
-pub enum Syscall {
-    /// Create a new process and return its PID
-    CreateProcess,
-
-    /// Send a signal to a process
-    SendSignal(PID, Signals),
-
-    /// Get the current process ID
-    GetPID,
-
-    /// Get the current time
-    GetTime,
-
-    /// Set the time
-    SetTime,
-    // ListInodes,
-    // CreateInode,
-    // RemoveInode,
-    // OpenInode,
-    // CloseInode,
-}
diff --git a/kernel/src/time.rs b/kernel/src/time.rs
deleted file mode 100644
index f4f1ed9..0000000
--- a/kernel/src/time.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-//! Time
-
-/// An internal structure that is used to keep track of the time
-pub struct Time {
-    /// The number of seconds since the kernel was started
-    pub seconds: u64,
-
-    /// The number of nanoseconds since the kernel was started
-    pub nanoseconds: u32,
-}