diff --git a/Cargo.lock b/Cargo.lock
index 850b6b4b..71c1704f 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -31,6 +31,7 @@ dependencies = [
  "axel",
  "bootloader",
  "cpuio",
+ "embedded-graphics",
  "ext2",
  "externc-libm",
  "facepalm",
@@ -137,6 +138,12 @@ dependencies = [
  "versioning",
 ]
 
+[[package]]
+name = "az"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f771a5d1f5503f7f4279a30f3643d3421ba149848b89ecaaec0ea2acf04a5ac4"
+
 [[package]]
 name = "bare-metal"
 version = "1.0.0"
@@ -167,6 +174,12 @@ version = "0.9.22"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "de78decc37247c7cfac5dbf3495c7298c6ac97cb355161caa7e15969c6648e6c"
 
+[[package]]
+name = "byteorder"
+version = "1.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
+
 [[package]]
 name = "cfg-if"
 version = "1.0.0"
@@ -266,6 +279,29 @@ version = "1.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650"
 
+[[package]]
+name = "embedded-graphics"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "750082c65094fbcc4baf9ba31583ce9a8bb7f52cadfb96f6164b1bc7f922f32b"
+dependencies = [
+ "az",
+ "byteorder",
+ "embedded-graphics-core",
+ "float-cmp",
+ "micromath",
+]
+
+[[package]]
+name = "embedded-graphics-core"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b8b1239db5f3eeb7e33e35bd10bd014e7b2537b17e071f726a09351431337cfa"
+dependencies = [
+ "az",
+ "byteorder",
+]
+
 [[package]]
 name = "ext2"
 version = "0.1.1"
@@ -292,6 +328,15 @@ dependencies = [
  "log",
 ]
 
+[[package]]
+name = "float-cmp"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e1267f4ac4f343772758f7b1bdcbe767c218bbab93bb432acbf5162bbf85a6c4"
+dependencies = [
+ "num-traits",
+]
+
 [[package]]
 name = "fnv"
 version = "1.0.7"
@@ -481,6 +526,12 @@ version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "71d96e3f3c0b6325d8ccd83c33b28acb183edcb6c67938ba104ec546854b0882"
 
+[[package]]
+name = "micromath"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bc4010833aea396656c2f91ee704d51a6f1329ec2ab56ffd00bfd56f7481ea94"
+
 [[package]]
 name = "no-std-compat"
 version = "0.4.1"
diff --git a/ableos/Cargo.toml b/ableos/Cargo.toml
index 68c8e41b..19951fe8 100644
--- a/ableos/Cargo.toml
+++ b/ableos/Cargo.toml
@@ -53,6 +53,9 @@ rhai = "1.6.0"
 libwasm = {git="https://git.ablecorp.us:443/able/libwasm.git"}
 axel = { git = "https://git.ablecorp.us/able/aos_userland" }
 versioning = { git = "https://git.ablecorp.us/able/aos_userland" }
+embedded-graphics="*"
+
+
 
 [dependencies.logos]
 version = "0.12"
diff --git a/ableos/src/arch/riscv/mod.rs b/ableos/src/arch/riscv/mod.rs
index b49e0575..a201dd26 100644
--- a/ableos/src/arch/riscv/mod.rs
+++ b/ableos/src/arch/riscv/mod.rs
@@ -40,7 +40,7 @@ extern "C" fn _start() -> ! {
 
     let uart = crate::arch::drivers::uart::Uart::new(0x1000_0000);
     uart.init();
-    serial_println!("Hello, world!\r");
+    log!("Hello, world!\r");
 
     loop {
         if let Some(c) = uart.get() {
diff --git a/ableos/src/scratchpad.rs b/ableos/src/scratchpad.rs
index 6c36f288..529f4de9 100644
--- a/ableos/src/scratchpad.rs
+++ b/ableos/src/scratchpad.rs
@@ -1,7 +1,8 @@
 use core::alloc::Layout;
 
+use crate::arch::generate_process_pass;
 use crate::arch::interrupts::{reset_pit_for_cpu, set_pit_2};
-use crate::devices::{pci, pci_inner};
+use crate::devices::{self, pci, pci_inner};
 use crate::encoding::bin;
 use crate::port_io::{read32, read8, write8};
 use crate::rhai_shell::shell;
@@ -21,6 +22,14 @@ pub fn scratchpad() {
 }";
     let axel = axel::parse(axel_raw.to_string());
 
+    let xyz = devices::pci::brute_force_scan();
+    for dev in xyz {
+        trace!("{:?}", dev);
+        dev.bars.iter().for_each(|bar| {
+            trace!("{:?}", bar);
+        });
+    }
+
     for node in axel {
         info!("{:?}", node);
     }
@@ -41,12 +50,12 @@ pub fn scratchpad() {
     }
 
     */
-    // sound(1000);
-    // sound_off();
 
-    // acpi();
+    let abc = Path::new("/home/able".to_string());
 
-    Path::new("/".to_string());
+    for _ in 0..10 {
+        debug!("{}", generate_process_pass());
+    }
 
     real_shell();
 }
@@ -247,4 +256,27 @@ impl Path {
             path: path_vec_string,
         }
     }
+
+    pub fn get_path(&self) -> String {
+        let mut path = String::new();
+        for part in &self.path {
+            path.push_str(part);
+            path.push('/');
+        }
+        path
+    }
+}
+
+#[derive(Debug, Copy, Clone)]
+pub enum GpuFormats {
+    BGRA8Unorm = 1,
+    BGRX8Unorm = 2,
+    ARGB8Unorm = 3,
+    XRGB8Unorm = 4,
+
+    RGBA8Unorm = 67,
+    XBGR8Unorm = 68,
+
+    ABGR8Unorm = 121,
+    RGBX8Unorm = 134,
 }
diff --git a/ableos/src/utils.rs b/ableos/src/utils.rs
index b3e9e26d..183d6db1 100644
--- a/ableos/src/utils.rs
+++ b/ableos/src/utils.rs
@@ -22,3 +22,15 @@ mod tests {
         assert_eq!(type_of(&1), "i32");
     }
 }
+
+pub const fn kb(x: usize) -> usize {
+    x * 1024
+}
+
+pub const fn mb(x: usize) -> usize {
+    x * 1024 * 1024
+}
+
+pub const fn gb(x: usize) -> usize {
+    x * 1024 * 1024 * 1024
+}
diff --git a/numb.txt b/numb.txt
new file mode 100644
index 00000000..a44dd64c
--- /dev/null
+++ b/numb.txt
@@ -0,0 +1,11 @@
+
+331568558747636239054653976632901246101
+48288905519904217305554229999719318010
+277368580504891661412569302316981896415
+18566809782801922287076338139767918931
+23103957219706234160452062792550873334
+62880938080142049725728912049836558493
+282131992488267708548782739606642367699
+273527083064630779890783156924010103478
+95848032043557003344400482128815557376
+247727778155602114333610564115402907812