diff --git a/Cargo.lock b/Cargo.lock
index 536d960..5b028ce 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -11,21 +11,6 @@ dependencies = [
  "tock-registers",
 ]
 
-[[package]]
-name = "addr2line"
-version = "0.24.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1"
-dependencies = [
- "gimli",
-]
-
-[[package]]
-name = "adler2"
-version = "2.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627"
-
 [[package]]
 name = "allocator-api2"
 version = "0.2.18"
@@ -49,9 +34,9 @@ dependencies = [
 
 [[package]]
 name = "anyhow"
-version = "1.0.90"
+version = "1.0.91"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "37bf3594c4c988a53154954629820791dde498571819ae4ca50ca811e060cc95"
+checksum = "c042108f3ed77fd83760a5fd79b53be043192bb3b9dba91d8c574c0ada7850c8"
 
 [[package]]
 name = "autocfg"
@@ -59,21 +44,6 @@ version = "1.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
 
-[[package]]
-name = "backtrace"
-version = "0.3.74"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a"
-dependencies = [
- "addr2line",
- "cfg-if",
- "libc",
- "miniz_oxide",
- "object",
- "rustc-demangle",
- "windows-targets",
-]
-
 [[package]]
 name = "base64"
 version = "0.22.1"
@@ -115,6 +85,9 @@ name = "bumpalo"
 version = "3.16.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
+dependencies = [
+ "allocator-api2",
+]
 
 [[package]]
 name = "byteorder"
@@ -122,12 +95,6 @@ version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
 
-[[package]]
-name = "bytes"
-version = "1.7.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3"
-
 [[package]]
 name = "cc"
 version = "1.1.31"
@@ -255,56 +222,6 @@ dependencies = [
  "percent-encoding",
 ]
 
-[[package]]
-name = "futures-channel"
-version = "0.3.31"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10"
-dependencies = [
- "futures-core",
- "futures-sink",
-]
-
-[[package]]
-name = "futures-core"
-version = "0.3.31"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e"
-
-[[package]]
-name = "futures-io"
-version = "0.3.31"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6"
-
-[[package]]
-name = "futures-sink"
-version = "0.3.31"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7"
-
-[[package]]
-name = "futures-task"
-version = "0.3.31"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988"
-
-[[package]]
-name = "futures-util"
-version = "0.3.31"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81"
-dependencies = [
- "futures-core",
- "futures-io",
- "futures-sink",
- "futures-task",
- "memchr",
- "pin-project-lite",
- "pin-utils",
- "slab",
-]
-
 [[package]]
 name = "getrandom"
 version = "0.2.15"
@@ -317,10 +234,10 @@ dependencies = [
 ]
 
 [[package]]
-name = "gimli"
-version = "0.31.1"
+name = "hashbrown"
+version = "0.14.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f"
+checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
 
 [[package]]
 name = "hashbrown"
@@ -336,129 +253,28 @@ dependencies = [
 [[package]]
 name = "hbbytecode"
 version = "0.1.0"
-source = "git+https://git.ablecorp.us/AbleOS/holey-bytes.git#15e4762d4ac8993d12fe2dd54e2b2d842c8a034b"
+source = "git+https://git.ablecorp.us/AbleOS/holey-bytes.git#faa8dd2e6fabe2e0e4a375e677171856da491c61"
 
 [[package]]
 name = "hblang"
 version = "0.1.0"
-source = "git+https://git.ablecorp.us/AbleOS/holey-bytes.git#15e4762d4ac8993d12fe2dd54e2b2d842c8a034b"
+source = "git+https://git.ablecorp.us/AbleOS/holey-bytes.git#faa8dd2e6fabe2e0e4a375e677171856da491c61"
 dependencies = [
- "hashbrown",
+ "hashbrown 0.15.0",
  "hbbytecode",
  "hbvm",
  "log",
+ "regalloc2",
 ]
 
 [[package]]
 name = "hbvm"
 version = "0.1.0"
-source = "git+https://git.ablecorp.us/AbleOS/holey-bytes.git#15e4762d4ac8993d12fe2dd54e2b2d842c8a034b"
+source = "git+https://git.ablecorp.us/AbleOS/holey-bytes.git#faa8dd2e6fabe2e0e4a375e677171856da491c61"
 dependencies = [
  "hbbytecode",
 ]
 
-[[package]]
-name = "hermit-abi"
-version = "0.3.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
-
-[[package]]
-name = "http"
-version = "1.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258"
-dependencies = [
- "bytes",
- "fnv",
- "itoa",
-]
-
-[[package]]
-name = "http-body"
-version = "1.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"
-dependencies = [
- "bytes",
- "http",
-]
-
-[[package]]
-name = "http-body-util"
-version = "0.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f"
-dependencies = [
- "bytes",
- "futures-util",
- "http",
- "http-body",
- "pin-project-lite",
-]
-
-[[package]]
-name = "httparse"
-version = "1.9.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946"
-
-[[package]]
-name = "hyper"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bbbff0a806a4728c99295b254c8838933b5b082d75e3cb70c8dab21fdfbcfa9a"
-dependencies = [
- "bytes",
- "futures-channel",
- "futures-util",
- "http",
- "http-body",
- "httparse",
- "itoa",
- "pin-project-lite",
- "smallvec",
- "tokio",
- "want",
-]
-
-[[package]]
-name = "hyper-rustls"
-version = "0.27.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333"
-dependencies = [
- "futures-util",
- "http",
- "hyper",
- "hyper-util",
- "rustls",
- "rustls-pki-types",
- "tokio",
- "tokio-rustls",
- "tower-service",
- "webpki-roots",
-]
-
-[[package]]
-name = "hyper-util"
-version = "0.1.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b"
-dependencies = [
- "bytes",
- "futures-channel",
- "futures-util",
- "http",
- "http-body",
- "hyper",
- "pin-project-lite",
- "socket2",
- "tokio",
- "tower-service",
- "tracing",
-]
-
 [[package]]
 name = "iana-time-zone"
 version = "0.1.61"
@@ -499,21 +315,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da"
 dependencies = [
  "equivalent",
- "hashbrown",
+ "hashbrown 0.15.0",
 ]
 
-[[package]]
-name = "ipnet"
-version = "2.10.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708"
-
-[[package]]
-name = "itoa"
-version = "1.0.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
-
 [[package]]
 name = "js-sys"
 version = "0.3.72"
@@ -530,7 +334,7 @@ dependencies = [
  "aarch64-cpu",
  "crossbeam-queue",
  "derive_more",
- "hashbrown",
+ "hashbrown 0.15.0",
  "hbvm",
  "limine",
  "log",
@@ -617,33 +421,6 @@ version = "2.7.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
 
-[[package]]
-name = "mime"
-version = "0.3.17"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
-
-[[package]]
-name = "miniz_oxide"
-version = "0.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1"
-dependencies = [
- "adler2",
-]
-
-[[package]]
-name = "mio"
-version = "1.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec"
-dependencies = [
- "hermit-abi",
- "libc",
- "wasi",
- "windows-sys 0.52.0",
-]
-
 [[package]]
 name = "num-traits"
 version = "0.2.19"
@@ -653,15 +430,6 @@ dependencies = [
  "autocfg",
 ]
 
-[[package]]
-name = "object"
-version = "0.36.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e"
-dependencies = [
- "memchr",
-]
-
 [[package]]
 name = "once_cell"
 version = "1.20.2"
@@ -680,84 +448,15 @@ version = "2.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
 
-[[package]]
-name = "pin-project-lite"
-version = "0.2.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02"
-
-[[package]]
-name = "pin-utils"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
-
-[[package]]
-name = "ppv-lite86"
-version = "0.2.20"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04"
-dependencies = [
- "zerocopy",
-]
-
 [[package]]
 name = "proc-macro2"
-version = "1.0.88"
+version = "1.0.89"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7c3a7fc5db1e57d5a779a352c8cdb57b29aa4c40cc69c3a68a7fedc815fbf2f9"
+checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e"
 dependencies = [
  "unicode-ident",
 ]
 
-[[package]]
-name = "quinn"
-version = "0.11.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8c7c5fdde3cdae7203427dc4f0a68fe0ed09833edc525a03456b153b79828684"
-dependencies = [
- "bytes",
- "pin-project-lite",
- "quinn-proto",
- "quinn-udp",
- "rustc-hash",
- "rustls",
- "socket2",
- "thiserror",
- "tokio",
- "tracing",
-]
-
-[[package]]
-name = "quinn-proto"
-version = "0.11.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fadfaed2cd7f389d0161bb73eeb07b7b78f8691047a6f3e73caaeae55310a4a6"
-dependencies = [
- "bytes",
- "rand",
- "ring",
- "rustc-hash",
- "rustls",
- "slab",
- "thiserror",
- "tinyvec",
- "tracing",
-]
-
-[[package]]
-name = "quinn-udp"
-version = "0.5.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4fe68c2e9e1a1234e218683dbdf9f9dfcb094113c5ac2b938dfcb9bab4c4140b"
-dependencies = [
- "libc",
- "once_cell",
- "socket2",
- "tracing",
- "windows-sys 0.59.0",
-]
-
 [[package]]
 name = "quote"
 version = "1.0.37"
@@ -767,36 +466,6 @@ dependencies = [
  "proc-macro2",
 ]
 
-[[package]]
-name = "rand"
-version = "0.8.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
-dependencies = [
- "libc",
- "rand_chacha",
- "rand_core",
-]
-
-[[package]]
-name = "rand_chacha"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
-dependencies = [
- "ppv-lite86",
- "rand_core",
-]
-
-[[package]]
-name = "rand_core"
-version = "0.6.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
-dependencies = [
- "getrandom",
-]
-
 [[package]]
 name = "raw-cpuid"
 version = "10.7.0"
@@ -815,6 +484,19 @@ dependencies = [
  "bitflags 2.6.0",
 ]
 
+[[package]]
+name = "regalloc2"
+version = "0.10.2"
+source = "git+https://github.com/jakubDoka/regalloc2?branch=reuse-allocations#21c43e3ee182824e92e2b25f1d3c03ed47f9c02b"
+dependencies = [
+ "allocator-api2",
+ "bumpalo",
+ "hashbrown 0.14.5",
+ "log",
+ "rustc-hash",
+ "smallvec",
+]
+
 [[package]]
 name = "regex-syntax"
 version = "0.8.5"
@@ -831,52 +513,9 @@ dependencies = [
  "hblang",
  "log",
  "raw-cpuid 11.2.0",
- "reqwest",
  "str-reader",
  "toml",
-]
-
-[[package]]
-name = "reqwest"
-version = "0.12.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b"
-dependencies = [
- "base64",
- "bytes",
- "futures-channel",
- "futures-core",
- "futures-util",
- "http",
- "http-body",
- "http-body-util",
- "hyper",
- "hyper-rustls",
- "hyper-util",
- "ipnet",
- "js-sys",
- "log",
- "mime",
- "once_cell",
- "percent-encoding",
- "pin-project-lite",
- "quinn",
- "rustls",
- "rustls-pemfile",
- "rustls-pki-types",
- "serde",
- "serde_json",
- "serde_urlencoded",
- "sync_wrapper",
- "tokio",
- "tokio-rustls",
- "tower-service",
- "url",
- "wasm-bindgen",
- "wasm-bindgen-futures",
- "web-sys",
- "webpki-roots",
- "windows-registry",
+ "ureq",
 ]
 
 [[package]]
@@ -891,15 +530,9 @@ dependencies = [
  "libc",
  "spin",
  "untrusted",
- "windows-sys 0.52.0",
+ "windows-sys",
 ]
 
-[[package]]
-name = "rustc-demangle"
-version = "0.1.24"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
-
 [[package]]
 name = "rustc-hash"
 version = "2.0.0"
@@ -921,6 +554,7 @@ version = "0.23.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "5fbb44d7acc4e873d613422379f69f237a1b141928c02f6bc6ccfddddc2d7993"
 dependencies = [
+ "log",
  "once_cell",
  "ring",
  "rustls-pki-types",
@@ -929,15 +563,6 @@ dependencies = [
  "zeroize",
 ]
 
-[[package]]
-name = "rustls-pemfile"
-version = "2.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50"
-dependencies = [
- "rustls-pki-types",
-]
-
 [[package]]
 name = "rustls-pki-types"
 version = "1.10.0"
@@ -961,12 +586,6 @@ version = "1.0.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248"
 
-[[package]]
-name = "ryu"
-version = "1.0.18"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
-
 [[package]]
 name = "sbi"
 version = "0.2.0"
@@ -987,36 +606,24 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b"
 
 [[package]]
 name = "serde"
-version = "1.0.210"
+version = "1.0.213"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a"
+checksum = "3ea7893ff5e2466df8d720bb615088341b295f849602c6956047f8f80f0e9bc1"
 dependencies = [
  "serde_derive",
 ]
 
 [[package]]
 name = "serde_derive"
-version = "1.0.210"
+version = "1.0.213"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f"
+checksum = "7e85ad2009c50b58e87caa8cd6dac16bdf511bbfb7af6c33df902396aa480fa5"
 dependencies = [
  "proc-macro2",
  "quote",
  "syn",
 ]
 
-[[package]]
-name = "serde_json"
-version = "1.0.132"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03"
-dependencies = [
- "itoa",
- "memchr",
- "ryu",
- "serde",
-]
-
 [[package]]
 name = "serde_spanned"
 version = "0.6.8"
@@ -1026,18 +633,6 @@ dependencies = [
  "serde",
 ]
 
-[[package]]
-name = "serde_urlencoded"
-version = "0.7.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
-dependencies = [
- "form_urlencoded",
- "itoa",
- "ryu",
- "serde",
-]
-
 [[package]]
 name = "shlex"
 version = "1.3.0"
@@ -1059,16 +654,6 @@ version = "1.13.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
 
-[[package]]
-name = "socket2"
-version = "0.5.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c"
-dependencies = [
- "libc",
- "windows-sys 0.52.0",
-]
-
 [[package]]
 name = "spin"
 version = "0.9.8"
@@ -1092,44 +677,15 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
 
 [[package]]
 name = "syn"
-version = "2.0.79"
+version = "2.0.85"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590"
+checksum = "5023162dfcd14ef8f32034d8bcd4cc5ddc61ef7a247c024a33e24e1f24d21b56"
 dependencies = [
  "proc-macro2",
  "quote",
  "unicode-ident",
 ]
 
-[[package]]
-name = "sync_wrapper"
-version = "1.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394"
-dependencies = [
- "futures-core",
-]
-
-[[package]]
-name = "thiserror"
-version = "1.0.64"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84"
-dependencies = [
- "thiserror-impl",
-]
-
-[[package]]
-name = "thiserror-impl"
-version = "1.0.64"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
 [[package]]
 name = "tinyvec"
 version = "1.8.0"
@@ -1151,32 +707,6 @@ version = "0.8.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "696941a0aee7e276a165a978b37918fd5d22c55c3d6bda197813070ca9c0f21c"
 
-[[package]]
-name = "tokio"
-version = "1.40.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998"
-dependencies = [
- "backtrace",
- "bytes",
- "libc",
- "mio",
- "pin-project-lite",
- "socket2",
- "windows-sys 0.52.0",
-]
-
-[[package]]
-name = "tokio-rustls"
-version = "0.26.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4"
-dependencies = [
- "rustls",
- "rustls-pki-types",
- "tokio",
-]
-
 [[package]]
 name = "toml"
 version = "0.8.19"
@@ -1211,37 +741,6 @@ dependencies = [
  "winnow",
 ]
 
-[[package]]
-name = "tower-service"
-version = "0.3.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3"
-
-[[package]]
-name = "tracing"
-version = "0.1.40"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
-dependencies = [
- "pin-project-lite",
- "tracing-core",
-]
-
-[[package]]
-name = "tracing-core"
-version = "0.1.32"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54"
-dependencies = [
- "once_cell",
-]
-
-[[package]]
-name = "try-lock"
-version = "0.2.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
-
 [[package]]
 name = "uart_16550"
 version = "0.3.1"
@@ -1286,6 +785,21 @@ version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
 
+[[package]]
+name = "ureq"
+version = "2.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b74fc6b57825be3373f7054754755f03ac3a8f5d70015ccad699ba2029956f4a"
+dependencies = [
+ "base64",
+ "log",
+ "once_cell",
+ "rustls",
+ "rustls-pki-types",
+ "url",
+ "webpki-roots",
+]
+
 [[package]]
 name = "url"
 version = "2.5.2"
@@ -1311,15 +825,6 @@ version = "0.4.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "442887c63f2c839b346c192d047a7c87e73d0689c9157b00b53dcc27dd5ea793"
 
-[[package]]
-name = "want"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e"
-dependencies = [
- "try-lock",
-]
-
 [[package]]
 name = "wasi"
 version = "0.11.0+wasi-snapshot-preview1"
@@ -1352,18 +857,6 @@ dependencies = [
  "wasm-bindgen-shared",
 ]
 
-[[package]]
-name = "wasm-bindgen-futures"
-version = "0.4.45"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b"
-dependencies = [
- "cfg-if",
- "js-sys",
- "wasm-bindgen",
- "web-sys",
-]
-
 [[package]]
 name = "wasm-bindgen-macro"
 version = "0.2.95"
@@ -1393,16 +886,6 @@ version = "0.2.95"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d"
 
-[[package]]
-name = "web-sys"
-version = "0.3.72"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112"
-dependencies = [
- "js-sys",
- "wasm-bindgen",
-]
-
 [[package]]
 name = "webpki-roots"
 version = "0.26.6"
@@ -1421,36 +904,6 @@ dependencies = [
  "windows-targets",
 ]
 
-[[package]]
-name = "windows-registry"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0"
-dependencies = [
- "windows-result",
- "windows-strings",
- "windows-targets",
-]
-
-[[package]]
-name = "windows-result"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e"
-dependencies = [
- "windows-targets",
-]
-
-[[package]]
-name = "windows-strings"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10"
-dependencies = [
- "windows-result",
- "windows-targets",
-]
-
 [[package]]
 name = "windows-sys"
 version = "0.52.0"
@@ -1460,15 +913,6 @@ dependencies = [
  "windows-targets",
 ]
 
-[[package]]
-name = "windows-sys"
-version = "0.59.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
-dependencies = [
- "windows-targets",
-]
-
 [[package]]
 name = "windows-targets"
 version = "0.52.6"
@@ -1598,27 +1042,6 @@ dependencies = [
  "serde",
 ]
 
-[[package]]
-name = "zerocopy"
-version = "0.7.35"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
-dependencies = [
- "byteorder",
- "zerocopy-derive",
-]
-
-[[package]]
-name = "zerocopy-derive"
-version = "0.7.35"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
 [[package]]
 name = "zeroize"
 version = "1.8.1"
diff --git a/dev/src/main.rs b/dev/src/main.rs
index aaa017b..488c63b 100644
--- a/dev/src/main.rs
+++ b/dev/src/main.rs
@@ -1,4 +1,3 @@
-#![allow(unused)]
 use std::io::Write;
 
 use idl::build_idl;
@@ -139,8 +138,8 @@ fn build(name: String) {
     }
 }
 
-pub fn build_program(name: String) {}
-pub fn build_library(name: String) {}
+pub fn build_program(_name: String) {}
+pub fn build_library(_name: String) {}
 
 fn help() {
     println!(
diff --git a/kernel/src/holeybytes/ecah.rs b/kernel/src/holeybytes/ecah.rs
index 5535113..ab45e64 100644
--- a/kernel/src/holeybytes/ecah.rs
+++ b/kernel/src/holeybytes/ecah.rs
@@ -131,9 +131,13 @@ pub fn handler(vm: &mut Vm) {
                 3 => unimplemented!("TODO: implement whatever buffer 3 does for no x86_64"),
                 // source of rng
                 4 => {
-                    // limit to last 32 bits
-                    vm.registers[1] =
-                        hbvm::value::Value(crate::arch::hardware_random_u64() & 0xFFFFFFFF);
+                    let block = block_read(mem_addr, length);
+                    block.chunks_mut(8.min(length)).for_each(|chunk| {
+                        chunk.clone_from_slice(
+                            &crate::arch::hardware_random_u64().to_le_bytes()[..chunk.len()],
+                        );
+                    });
+                    vm.registers[1] = hbvm::value::Value(mem_addr);
                 }
                 5 => match dt_msg_handler(vm, mem_addr, length) {
                     Ok(()) => {}
diff --git a/kernel/src/holeybytes/kernel_services/mem_serve.rs b/kernel/src/holeybytes/kernel_services/mem_serve.rs
index 743440e..b769390 100644
--- a/kernel/src/holeybytes/kernel_services/mem_serve.rs
+++ b/kernel/src/holeybytes/kernel_services/mem_serve.rs
@@ -38,7 +38,7 @@ unsafe fn memset(mut dest: *mut u8, src: *const u8, count: usize, size: usize) {
     let mut buffer_size = size;
     src.copy_to_nonoverlapping(buffer.as_mut_ptr(), size);
 
-    while buffer_size * 2 <= BLOCK_SIZE {
+    while core::intrinsics::likely(buffer_size * 2 <= BLOCK_SIZE) {
         buffer
             .as_mut_ptr()
             .copy_to_nonoverlapping(buffer.as_mut_ptr().add(buffer_size), buffer_size);
@@ -53,7 +53,7 @@ unsafe fn memset(mut dest: *mut u8, src: *const u8, count: usize, size: usize) {
         remaining -= 1;
     }
 
-    while remaining >= 8 {
+    while core::intrinsics::likely(remaining >= 8) {
         *(dest as *mut u64) = *buffer_ptr;
         dest = dest.add(8);
         remaining -= 8;
@@ -122,18 +122,17 @@ pub fn memory_msg_handler(
             log::debug!(" {} pages", page_count);
         }
         4 => unsafe {
-            let count = u64::from_le_bytes(msg_vec[1..9].try_into().unwrap_unchecked()) as usize;
-            let src = u64::from_le_bytes(msg_vec[9..17].try_into().unwrap_unchecked()) as *const u8;
-            let dest = u64::from_le_bytes(msg_vec[17..25].try_into().unwrap_unchecked()) as *mut u8;
+            let count = u32::from_le_bytes(msg_vec[1..5].try_into().unwrap_unchecked()) as usize;
+            let src = u64::from_le_bytes(msg_vec[5..13].try_into().unwrap_unchecked()) as *const u8;
+            let dest = u64::from_le_bytes(msg_vec[13..21].try_into().unwrap_unchecked()) as *mut u8;
 
             src.copy_to_nonoverlapping(dest, count);
         },
         5 => unsafe {
-            let count = u64::from_le_bytes(msg_vec[1..9].try_into().unwrap_unchecked()) as usize;
-            let size = u64::from_le_bytes(msg_vec[9..17].try_into().unwrap_unchecked()) as usize;
-            let src =
-                u64::from_le_bytes(msg_vec[17..25].try_into().unwrap_unchecked()) as *const u8;
-            let dest = u64::from_le_bytes(msg_vec[25..33].try_into().unwrap_unchecked()) as *mut u8;
+            let count = u32::from_le_bytes(msg_vec[1..5].try_into().unwrap_unchecked()) as usize;
+            let size = u32::from_le_bytes(msg_vec[5..9].try_into().unwrap_unchecked()) as usize;
+            let src = u64::from_le_bytes(msg_vec[9..17].try_into().unwrap_unchecked()) as *const u8;
+            let dest = u64::from_le_bytes(msg_vec[17..25].try_into().unwrap_unchecked()) as *mut u8;
 
             memset(dest, src, count, size);
         },
diff --git a/kernel/src/lib.rs b/kernel/src/lib.rs
index 9a8060b..a94f94b 100644
--- a/kernel/src/lib.rs
+++ b/kernel/src/lib.rs
@@ -6,6 +6,7 @@
     slice_split_once,
     exclusive_wrapper,
     new_uninit,
+    core_intrinsics,
     abi_x86_interrupt,
     alloc_error_handler,
     ptr_sub_ptr,
@@ -14,8 +15,7 @@
     pointer_is_aligned_to
 )]
 #![test_runner(crate::test_runner)]
-#![cfg_attr(not(debug_assertions), allow(unused, deprecated))]
-#![allow(dead_code)]
+#![allow(dead_code, internal_features)]
 extern crate alloc;
 
 mod allocator;
diff --git a/repbuild/Cargo.toml b/repbuild/Cargo.toml
index 01e7755..ea41857 100644
--- a/repbuild/Cargo.toml
+++ b/repbuild/Cargo.toml
@@ -22,11 +22,13 @@ fatfs = "0.3"
 toml = "0.8"
 hblang = { git = "https://git.ablecorp.us/AbleOS/holey-bytes.git", features = [
 	"std",
+	"opts",
 ], default-features = false }
 log = "0.4"
 raw-cpuid = "11"
+ureq = { version = "2", default-features = false, features = ["tls"] }
 
-[dependencies.reqwest]
-version = "0.12"
-default-features = false
-features = ["rustls-tls", "blocking"]
+# [dependencies.reqwest]
+# version = "0.12"
+# default-features = false
+# features = ["rustls-tls", "blocking"]
diff --git a/repbuild/src/dev.rs b/repbuild/src/dev.rs
index 2e81228..7186d39 100644
--- a/repbuild/src/dev.rs
+++ b/repbuild/src/dev.rs
@@ -63,7 +63,7 @@ impl Package {
             build_cmd,
         }
     }
-    pub fn build(&self) {
+    pub fn build(&self) -> std::io::Result<()> {
         if self.binaries.contains(&"hblang".to_string()) {
             let file = self.build_cmd.split_ascii_whitespace().last().unwrap();
 
@@ -71,15 +71,24 @@ impl Package {
             let mut bytes = Vec::new();
             // compile here
 
-            let _ = hblang::run_compiler(
+            hblang::run_compiler(
                 &path,
                 Options {
                     fmt: true,
+                    optimize: true,
                     ..Default::default()
                 },
                 &mut bytes,
-            );
-            let _ = hblang::run_compiler(&path, Default::default(), &mut bytes);
+            )?;
+
+            hblang::run_compiler(
+                &path,
+                Options {
+                    optimize: true,
+                    ..Default::default()
+                },
+                &mut bytes,
+            )?;
 
             match std::fs::create_dir("target/programs") {
                 Ok(_) => (),
@@ -88,15 +97,17 @@ impl Package {
             }
             std::fs::write(format!("target/programs/{}.hbf", self.name), &bytes).unwrap();
             bytes.clear();
-            let _ = hblang::run_compiler(
+            hblang::run_compiler(
                 &path,
                 Options {
                     dump_asm: true,
+                    optimize: true,
                     ..Default::default()
                 },
                 &mut bytes,
-            );
+            )?;
             std::fs::write(format!("target/programs/{}.hba", self.name), &bytes).unwrap();
         }
+        Ok(())
     }
 }
diff --git a/repbuild/src/main.rs b/repbuild/src/main.rs
index f32f993..19f2d38 100644
--- a/repbuild/src/main.rs
+++ b/repbuild/src/main.rs
@@ -1,5 +1,3 @@
-// #![allow(unused)]
-
 mod dev;
 
 use {
@@ -8,7 +6,6 @@ use {
     error_stack::{bail, report, Context, Report, Result, ResultExt},
     fatfs::{FileSystem, FormatVolumeOptions, FsOptions, ReadWriteSeek},
     std::{
-        // fmt::Display,
         fs::{self, File},
         io::{self, Write},
         path::Path,
@@ -84,7 +81,7 @@ fn main() -> Result<(), Error> {
                 "        -r / --release: build in release mode\n",
                 "        -d / --debuginfo: build with debug info\n",
                 "        --noaccel: run without acceleration (e.g, no kvm)\n",
-                "[ rv64 / riscv64 / riscv64-virt / aarch64 / arm64 / aarch64-virt ]: sets target"
+                "[ rv64 / riscv64 / riscv64-virt / aarch64 / arm64 / aarch64-virt / avx2 ]: sets target"
             ),);
             Ok(())
         }
@@ -207,21 +204,25 @@ TERM_BACKDROP={}
         let modules = value.get_mut("modules").unwrap().as_table_mut().unwrap();
         // let mut real_modules = modules.clone();
 
-        modules.into_iter().for_each(|(_, value)| {
-            if value.is_table() {
-                let path = get_path_without_boot_prefix(
-                    value.get("path").expect("You must have `path` as a value"),
-                )
-                .unwrap()
-                .split(".")
-                .next()
-                .unwrap();
-                let p = Package::load_from_file(
-                    format!("sysdata/programs/{}/meta.toml", path).to_owned(),
-                );
-                p.build();
-            }
-        });
+        modules
+            .into_iter()
+            .map(|(_, value)| -> Result<(), io::Error> {
+                if value.is_table() {
+                    let path = get_path_without_boot_prefix(
+                        value.get("path").expect("You must have `path` as a value"),
+                    )
+                    .unwrap()
+                    .split(".")
+                    .next()
+                    .unwrap();
+                    let p = Package::load_from_file(
+                        format!("sysdata/programs/{}/meta.toml", path).to_owned(),
+                    );
+                    p.build()?;
+                }
+                Ok(())
+            })
+            .for_each(drop);
         modules.into_iter().for_each(|(_key, value)| {
             if value.is_table() {
                 let path = value.get("path").expect("You must have `path` as a value");
@@ -473,12 +474,12 @@ fn fetch_ovmf(target: Target) -> Result<String, OvmfFetchError> {
         Ok(_) => return Ok(ovmf_path.to_owned()),
         Err(e) => return Err(report!(e).change_context(OvmfFetchError::Io)),
     };
-    let mut bytes = reqwest::blocking::get(ovmf_url)
+    let req = ureq::get(ovmf_url)
+        .call()
         .map_err(Report::from)
         .change_context(OvmfFetchError::Fetch)?;
 
-    bytes
-        .copy_to(&mut file)
+    std::io::copy(&mut req.into_reader(), &mut file)
         .map_err(Report::from)
         .change_context(OvmfFetchError::Io)?;
 
diff --git a/sysdata/libraries/horizon_api/src/lib.hb b/sysdata/libraries/horizon_api/src/lib.hb
index e8d2460..c2e2f3d 100644
--- a/sysdata/libraries/horizon_api/src/lib.hb
+++ b/sysdata/libraries/horizon_api/src/lib.hb
@@ -23,7 +23,7 @@ create_window := fn(channel: int): ^render.Surface {
 	mem_buf := memory.request_page(1)
 
 	if windowing_system_buffer == 0 {
-		return 0
+		return @as(^render.Surface, idk)
 	} else {
 		// ! bad able, stop using string messages :ragey:
 		// msg := "\{01}\0"
@@ -43,6 +43,6 @@ create_window := fn(channel: int): ^render.Surface {
 			log.info("No messages\0")
 		}
 
-		return 0
+		return @as(^render.Surface, idk)
 	}
 }
\ No newline at end of file
diff --git a/sysdata/libraries/render/src/image.hb b/sysdata/libraries/render/src/image.hb
index fd683f5..46f5d7b 100644
--- a/sysdata/libraries/render/src/image.hb
+++ b/sysdata/libraries/render/src/image.hb
@@ -41,14 +41,13 @@ surface_from_bmp := fn(bmp: ^u8): Surface {
 	info_header := @as(^BitmapInfoHeader, @bitcast(bmp + @sizeof(BitmapFileHeader)))
 	bmp += file_header.offset
 
-	a := 0
 	px := info_header.width * info_header.height
 	ptr := @as(^Color, @bitcast(bmp))
 	tmp := @as(Color, idk)
-	row := 0
+	row := @as(i32, 0)
 
 	loop if row == info_header.height / 2 break else {
-		col := 0
+		col := @as(i32, 0)
 		loop if col == info_header.width break else {
 			top_index := row * info_header.width + col
 			bottom_index := (info_header.height - 1 - row) * info_header.width + col
@@ -62,7 +61,7 @@ surface_from_bmp := fn(bmp: ^u8): Surface {
 		row += 1
 	}
 
-	return .(@bitcast(bmp), @intcast(info_header.width), @intcast(info_header.height))
+	return .(@bitcast(bmp), info_header.width, info_header.height)
 }
 
 new_surface_from_bmp := fn(bmp: ^u8): Surface {
@@ -74,8 +73,8 @@ new_surface_from_bmp := fn(bmp: ^u8): Surface {
 	info_header := @as(^BitmapInfoHeader, @bitcast(bmp + @sizeof(BitmapFileHeader)))
 	bmp += file_header.offset
 
-	width := @as(int, @intcast(info_header.width))
-	height := @as(int, @intcast(info_header.height))
+	width := @as(uint, @intcast(info_header.width))
+	height := @as(uint, @intcast(info_header.height))
 
 	surface := new_surface(width, height)
 	top_start_idx := surface.buf
diff --git a/sysdata/libraries/render/src/software.hb b/sysdata/libraries/render/src/software.hb
index 7f577d3..ddf939f 100644
--- a/sysdata/libraries/render/src/software.hb
+++ b/sysdata/libraries/render/src/software.hb
@@ -4,11 +4,11 @@
 
 Surface := struct {
 	buf: ^Color,
-	width: int,
-	height: int,
+	width: uint,
+	height: uint,
 }
 
-new_surface := fn(width: int, height: int): Surface {
+new_surface := fn(width: uint, height: uint): Surface {
 	return .(
 		@inline(memory.alloc, Color, width * height),
 		width,
@@ -16,7 +16,7 @@ new_surface := fn(width: int, height: int): Surface {
 	)
 }
 
-surface_from_ptr := fn(ptr: ^Color, width: int, height: int): Surface {
+surface_from_ptr := fn(ptr: ^Color, width: uint, height: uint): Surface {
 	return .(
 		ptr,
 		width,
@@ -39,8 +39,8 @@ framebuffer := @as(^Color, idk)
 
 init := fn(doublebuffer: bool): Surface {
 	framebuffer = dt.get(^Color, "framebuffer/fb0/ptr\0")
-	width := dt.get(int, "framebuffer/fb0/width\0")
-	height := dt.get(int, "framebuffer/fb0/height\0")
+	width := dt.get(uint, "framebuffer/fb0/width\0")
+	height := dt.get(uint, "framebuffer/fb0/height\0")
 	if doublebuffer {
 		return new_surface(width, height)
 	} else {
@@ -49,7 +49,7 @@ init := fn(doublebuffer: bool): Surface {
 }
 
 clear := fn(surface: Surface, color: Color): void {
-	return @inline(memory.set, Color, &color, surface.buf, @bitcast(surface.width * surface.height))
+	return @inline(memory.set, Color, &color, surface.buf, surface.width * surface.height)
 }
 
 sync := fn(surface: Surface): void {
@@ -60,20 +60,20 @@ sync := fn(surface: Surface): void {
 	return @inline(memory.copy, Color, surface.buf, framebuffer, @bitcast(surface.width * surface.height))
 }
 
-index := fn(surface: Surface, x: int, y: int): int {
+index := fn(surface: Surface, x: uint, y: uint): uint {
 	return x + surface.width * y
 }
 
-indexptr := fn(surface: Surface, x: int, y: int): ^Color {
+indexptr := fn(surface: Surface, x: uint, y: uint): ^Color {
 	return surface.buf + @inline(index, surface, x, y)
 }
 
-put_pixel := fn(surface: Surface, pos: Vec2(int), color: Color): void {
+put_pixel := fn(surface: Surface, pos: Vec2(uint), color: Color): void {
 	*@inline(indexptr, surface, pos.x, pos.y) = color
 	return
 }
 
-put_filled_rect := fn(surface: Surface, pos: Vec2(int), tr: Vec2(int), color: Color): void {
+put_filled_rect := fn(surface: Surface, pos: Vec2(uint), tr: Vec2(uint), color: Color): void {
 	top_start_idx := @inline(indexptr, surface, pos.x, pos.y)
 	bottom_start_idx := @inline(indexptr, surface, pos.x, pos.y + tr.y - 1)
 	rows_to_fill := tr.y
@@ -94,7 +94,7 @@ put_filled_rect := fn(surface: Surface, pos: Vec2(int), tr: Vec2(int), color: Co
 	return
 }
 
-put_rect := fn(surface: Surface, pos: Vec2(int), tr: Vec2(int), color: Color): void {
+put_rect := fn(surface: Surface, pos: Vec2(uint), tr: Vec2(uint), color: Color): void {
 	start_idx := @inline(indexptr, surface, pos.x, pos.y)
 	end_idx := @inline(indexptr, surface, pos.x, pos.y + tr.y)
 	right_start_idx := @inline(indexptr, surface, pos.x + tr.x, pos.y)
@@ -112,15 +112,15 @@ put_rect := fn(surface: Surface, pos: Vec2(int), tr: Vec2(int), color: Color): v
 	return
 }
 
-put_line_low := fn(surface: Surface, p0: Vec2(int), p1: Vec2(int), color: Color): void {
-	dx := p1.x - p0.x
-	dy := p1.y - p0.y
+put_line_low := fn(surface: Surface, p0: Vec2(uint), p1: Vec2(uint), color: Color): void {
+	dx := @as(int, @bitcast(p1.x - p0.x))
+	dy := @as(int, @bitcast(p1.y - p0.y))
 	yi := 1
 	if dy < 0 {
 		yi = -1
 		dy = -dy
 	}
-	D := 2 * dy - dx
+	D := @as(int, 2) * dy - dx
 	y := p0.y
 	x := p0.x
 	loop if x == p1.x break else {
@@ -136,15 +136,15 @@ put_line_low := fn(surface: Surface, p0: Vec2(int), p1: Vec2(int), color: Color)
 	return
 }
 
-put_line_high := fn(surface: Surface, p0: Vec2(int), p1: Vec2(int), color: Color): void {
-	dx := p1.x - p0.x
-	dy := p1.y - p0.y
+put_line_high := fn(surface: Surface, p0: Vec2(uint), p1: Vec2(uint), color: Color): void {
+	dx := @as(int, @bitcast(p1.x - p0.x))
+	dy := @as(int, @bitcast(p1.y - p0.y))
 	xi := 1
 	if dy < 0 {
 		xi = -1
 		dx = -dx
 	}
-	D := 2 * dx - dy
+	D := @as(int, 2) * dx - dy
 	x := p0.x
 	y := p0.y
 	loop if y == p1.y break else {
@@ -160,8 +160,8 @@ put_line_high := fn(surface: Surface, p0: Vec2(int), p1: Vec2(int), color: Color
 	return
 }
 
-put_line := fn(surface: Surface, p0: Vec2(int), p1: Vec2(int), color: Color): void {
-	if math.abs(int, p1.y - p0.y) < math.abs(int, p1.x - p0.x) {
+put_line := fn(surface: Surface, p0: Vec2(uint), p1: Vec2(uint), color: Color): void {
+	if math.abs(uint, p1.y - p0.y) < math.abs(uint, p1.x - p0.x) {
 		if p0.x > p1.x {
 			@inline(put_line_low, surface, p1, p0, color)
 		} else {
@@ -177,7 +177,7 @@ put_line := fn(surface: Surface, p0: Vec2(int), p1: Vec2(int), color: Color): vo
 	return
 }
 
-put_surface := fn(surface: Surface, top: Surface, pos: Vec2(int), flip_v: bool): void {
+put_surface := fn(surface: Surface, top: Surface, pos: Vec2(uint), flip_v: bool): void {
 	top_start_idx := @inline(indexptr, surface, pos.x, pos.y)
 	bottom_start_idx := @inline(indexptr, surface, pos.x, pos.y + top.height - 1)
 	rows_to_copy := top.height
@@ -208,29 +208,29 @@ put_surface := fn(surface: Surface, top: Surface, pos: Vec2(int), flip_v: bool):
 }
 
 // peony-made
-put_trirect := fn(surface: Surface, pos: Vec2(int), size: Vec2(int), color0: Color, color1: Color): void {
+put_trirect := fn(surface: Surface, pos: Vec2(uint), size: Vec2(int), color0: Color, color1: Color): void {
 	step := Vec2(int).(1, 1)
 	if size.x < 0 {
 		step.x = -1
 	}
 	if size.y < 0 {
-		step.y = size.y / size.x
+		step.y /= @bitcast(size.x)
 	}
 
 	start_y := pos.y
-	target := pos + size
+	target := pos + @bitcast(size)
 
 	loop if pos.x == target.x break else {
 		@inline(put_vline, surface, pos.x, pos.y, target.y, color0)
 		@inline(put_vline, surface, pos.x, pos.y, start_y, color1)
-		pos += step
+		pos += @bitcast(step)
 	}
 
 	return
 }
 
 // peony-made
-put_vline := fn(surface: Surface, x: int, y0: int, y1: int, color: Color): void {
+put_vline := fn(surface: Surface, x: uint, y0: uint, y1: uint, color: Color): void {
 	if y1 < y0 {
 		tmp := y0
 		y0 = y1
@@ -247,7 +247,7 @@ put_vline := fn(surface: Surface, x: int, y0: int, y1: int, color: Color): void
 }
 
 // peony-made
-put_hline := fn(surface: Surface, y: int, x0: int, x1: int, color: Color): void {
+put_hline := fn(surface: Surface, y: uint, x0: uint, x1: uint, color: Color): void {
 	if x1 < x0 {
 		tmp := x0
 		x0 = x1
diff --git a/sysdata/libraries/stn/src/buffer.hb b/sysdata/libraries/stn/src/buffer.hb
index 23041dc..d4aa4e7 100644
--- a/sysdata/libraries/stn/src/buffer.hb
+++ b/sysdata/libraries/stn/src/buffer.hb
@@ -8,6 +8,14 @@ write := fn($Expr: type, msg: ^Expr, buffer_id: int): void {
 	return @eca(3, buffer_id, msg, @sizeof(Expr))
 }
 
+recv_length := fn(buffer_id: int, memory_map_location: ^u8, length: int): void {
+	return @eca(4, buffer_id, memory_map_location, length)
+}
+
+write_length := fn(msg: ^u8, buffer_id: int, length: int): void {
+	return @eca(3, buffer_id, msg, length)
+}
+
 BufferMsg := packed struct {operation: u8, msg: ^u8, msg_len: uint}
 
 create := fn(msg: ^u8): int {
diff --git a/sysdata/libraries/stn/src/log.hb b/sysdata/libraries/stn/src/log.hb
index 95d91c1..bd7d625 100644
--- a/sysdata/libraries/stn/src/log.hb
+++ b/sysdata/libraries/stn/src/log.hb
@@ -2,8 +2,8 @@ string := @use("string.hb")
 
 LogMsg := packed struct {level: u8, string: ^u8, strlen: uint}
 
-log := fn($Level: u8, message: ^u8): void {
-	return @eca(3, 1, LogMsg.(Level, message, @inline(string.length, message)), @sizeof(LogMsg))
+log := fn(level: u8, message: ^u8): void {
+	return @eca(3, 1, LogMsg.(level, message, @inline(string.length, message)), @sizeof(LogMsg))
 }
 
 error := fn(message: ^u8): void return @inline(log, 0, message)
diff --git a/sysdata/libraries/stn/src/memory.hb b/sysdata/libraries/stn/src/memory.hb
index 6022d5a..540d3d7 100644
--- a/sysdata/libraries/stn/src/memory.hb
+++ b/sysdata/libraries/stn/src/memory.hb
@@ -2,49 +2,27 @@ PAGE_SIZE := 4096
 MAX_ALLOC := 0xFF
 MAX_FREE := 0xFF
 
-calc_pages := fn($Expr: type, num: int): int {
-	return 1 + @bitcast(@sizeof(Expr)) * num / PAGE_SIZE
+calc_pages := fn($Expr: type, num: uint): uint {
+	return 1 + @sizeof(Expr) * num / PAGE_SIZE
 }
 
-alloc := fn($Expr: type, num: int): ^Expr {
+alloc := fn($Expr: type, num: uint): ^Expr {
 	pages := @inline(calc_pages, Expr, num)
 	if pages <= MAX_ALLOC {
 		return @bitcast(request_page(@intcast(pages)))
 	}
 	ptr := request_page(0xFF)
 	remaining := pages - MAX_ALLOC
-	loop if remaining <= 0 break else {
-		if remaining < MAX_ALLOC {
-			request_page(@intcast(remaining))
-		} else {
-			request_page(@intcast(MAX_ALLOC))
-		}
+	loop if remaining < MAX_ALLOC break else {
+		_ := request_page(@intcast(MAX_ALLOC))
 		remaining -= MAX_ALLOC
 	}
+	_ := request_page(@intcast(remaining))
 	return @bitcast(ptr)
 }
 
-// ! is broked, somebody fix please :(
-free := fn($Expr: type, ptr: ^Expr, num: int, nullify: bool): void {
-	if nullify {
-		null := @as(u8, 0)
-		set(u8, &null, @bitcast(ptr), @bitcast(num) * @bitcast(PAGE_SIZE))
-	}
-	pages := @inline(calc_pages, Expr, num)
-	if pages <= MAX_FREE {
-		return release_page(@bitcast(ptr), @intcast(pages))
-	}
-	page_ptr := @as(^[u8; PAGE_SIZE], @bitcast(ptr)) + 1
-	remaining := pages - MAX_FREE
-	loop if remaining <= 0 break else {
-		if remaining < MAX_FREE {
-			release_page(@bitcast(page_ptr), @intcast(remaining))
-		} else {
-			release_page(@bitcast(page_ptr), @intcast(MAX_FREE))
-		}
-		remaining -= MAX_FREE
-		page_ptr += 1
-	}
+// ! stub
+free := fn($Expr: type, ptr: ^Expr, num: uint, nullify: bool): void {
 	return
 }
 
@@ -78,12 +56,12 @@ inl := fn(addr: u16): u32 {
 	return @eca(3, 3, &InlMsg.(0, 2, addr), @sizeof(InlMsg))
 }
 
-CopyMsg := packed struct {a: u8, count: uint, src: uint, dest: ^u8}
+CopyMsg := packed struct {a: u8, count: u32, src: ^u8, dest: ^u8}
 copy := fn($Expr: type, src: ^Expr, dest: ^Expr, count: uint): void {
-	return @eca(3, 2, &CopyMsg.(4, count * @sizeof(Expr), @bitcast(src), @bitcast(dest)), @sizeof(CopyMsg))
+	return @eca(3, 2, &CopyMsg.(4, @intcast(count * @sizeof(Expr)), @bitcast(src), @bitcast(dest)), @sizeof(CopyMsg))
 }
 
-SetMsg := packed struct {a: u8, count: uint, size: uint, src: ^u8, dest: ^u8}
+SetMsg := packed struct {a: u8, count: u32, size: u32, src: ^u8, dest: ^u8}
 set := fn($Expr: type, src: ^Expr, dest: ^Expr, count: uint): void {
-	return @eca(3, 2, &SetMsg.(5, count, @sizeof(Expr), @bitcast(src), @bitcast(dest)), @sizeof(SetMsg))
+	return @eca(3, 2, &SetMsg.(5, @intcast(count), @intcast(@sizeof(Expr)), @bitcast(src), @bitcast(dest)), @sizeof(SetMsg))
 }
\ No newline at end of file
diff --git a/sysdata/libraries/stn/src/random.hb b/sysdata/libraries/stn/src/random.hb
index 9b4cdfc..4fb7b3f 100644
--- a/sysdata/libraries/stn/src/random.hb
+++ b/sysdata/libraries/stn/src/random.hb
@@ -1,8 +1,7 @@
 any := fn($Expr: type): Expr {
-	return @intcast(@eca(3, 4))
+	return *@eca(3, 4, &@as(Expr, idk), @sizeof(Expr))
 }
 
 range := fn($Expr: type, min: Expr, max: Expr): Expr {
-	// wtf is this
-	return @intcast(@as(int, @eca(3, 4)) % @as(int, @intcast(max) - @intcast(min)) + 1 + @intcast(min))
+	return @inline(any, Expr) % (max - min) + @intcast(1) + min
 }
\ No newline at end of file
diff --git a/sysdata/libraries/stn/src/string.hb b/sysdata/libraries/stn/src/string.hb
index c84ac55..3307199 100644
--- a/sysdata/libraries/stn/src/string.hb
+++ b/sysdata/libraries/stn/src/string.hb
@@ -1,10 +1,11 @@
 length := fn(ptr: ^u8): uint {
 	len := @as(uint, 0)
+	// loop if *(ptr + len) == 0 return len else len += 1
 	loop if *(ptr + len) == 0 break else len += 1
 	return len
 }
 
-display_int := fn(num: int, p: ^u8, radix: int): ^u8 {
+display_int := fn(num: int, p: ^u8, radix: uint): ^u8 {
 	ptr := p
 	negative := num < 0
 	if negative {
@@ -33,14 +34,14 @@ display_int := fn(num: int, p: ^u8, radix: int): ^u8 {
 		ptr += 1
 	} else {
 		loop if num == 0 break else {
-			digit := num % radix
+			digit := num % @bitcast(radix)
 			if digit < 10 {
-				*ptr = digit + 48
+				*ptr = @intcast(digit) + 48
 			} else {
-				*ptr = digit + 55
+				*ptr = @intcast(digit) + 55
 			}
 			ptr += 1
-			num /= radix
+			num /= @bitcast(radix)
 		}
 	}
 
@@ -55,11 +56,11 @@ display_int := fn(num: int, p: ^u8, radix: int): ^u8 {
 
 	return p
 }
+
 reverse := fn(s: ^u8): void {
-	len := @inline(length, s)
-	i := 0
-	j := len - 1
-	temp := 0
+	i := @as(uint, 0)
+	j := @inline(length, s) - 1
+	temp := @as(u8, 0)
 	loop if i >= j break else {
 		temp = *(s + i);
 		*(s + i) = *(s + j);
diff --git a/sysdata/programs/dt_buffer_test/src/main.hb b/sysdata/programs/dt_buffer_test/src/main.hb
index ce42ef0..7d37f6a 100644
--- a/sysdata/programs/dt_buffer_test/src/main.hb
+++ b/sysdata/programs/dt_buffer_test/src/main.hb
@@ -1,13 +1,13 @@
 .{dt} := @use("../../../libraries/stn/src/lib.hb")
 
-main := fn(): int {
-	dt.get(int, "framebuffer/fb0/width\0")
-	dt.get(int, "cpu/cpu0/architecture\0")
+main := fn(): void {
+	dt.get(void, "framebuffer/fb0/width\0")
+	dt.get(void, "cpu/cpu0/architecture\0")
 
 	// Checking if the first detected serial port is memory mapped or port mapped
 	// 0 -> memory mapped
 	// 1 -> port mapped
-	dt.get(int, "serial_ports/sp0/mapping\0")
+	dt.get(void, "serial_ports/sp0/mapping\0")
 
-	return 0
+	return
 }
\ No newline at end of file
diff --git a/sysdata/programs/filesystem_fat32/src/attributes.hb b/sysdata/programs/filesystem_fat32/src/attributes.hb
index 2c5c3ca..cd9dac6 100644
--- a/sysdata/programs/filesystem_fat32/src/attributes.hb
+++ b/sysdata/programs/filesystem_fat32/src/attributes.hb
@@ -1,7 +1,7 @@
-READ_ONLY := 0x1
-HIDDEN := 0x2
-SYSTEM := 0x4
-VOLUME_ID := 0x8
-DIRECTORY := 0x10
-ARCHIVE := 0x20
+READ_ONLY := @as(u32, 0x1)
+HIDDEN := @as(u32, 0x2)
+SYSTEM := @as(u32, 0x4)
+VOLUME_ID := @as(u32, 0x8)
+DIRECTORY := @as(u32, 0x10)
+ARCHIVE := @as(u32, 0x20)
 LFN := READ_ONLY | HIDDEN | SYSTEM | VOLUME_ID
\ No newline at end of file
diff --git a/sysdata/programs/filesystem_fat32/src/bios_parameter_block.hb b/sysdata/programs/filesystem_fat32/src/bios_parameter_block.hb
index fa9d8ca..8517c5b 100644
--- a/sysdata/programs/filesystem_fat32/src/bios_parameter_block.hb
+++ b/sysdata/programs/filesystem_fat32/src/bios_parameter_block.hb
@@ -63,7 +63,7 @@ VolumeName := [u8; 11]
 
 SystemIdentifierString := [u8; 8]
 VALID_SYSTEM_IDENTIFIER_STRING := [u8].(46, 41, 54, 33, 32, 20, 20, 20)
-BOOTABLE_PARTITION_SIGNATURE := 0xAA55
+BOOTABLE_PARTITION_SIGNATURE := @as(u32, 0xAA55)
 
 BootCode := [u8; 420]
 
@@ -100,9 +100,10 @@ ebr_sanity_check := fn(ebr: ExtendedBootRecord): int {
 		log.warn("EBR-Signature sanity check failed\0")
 	}
 
-	if ebr.system_identifier_string != VALID_SYSTEM_IDENTIFIER_STRING {
-		log.warn("EBR-Signature-Identifier-String sanity check failed\0")
-	}
+	// ! comparison between [u8] is not supported in hblang
+	// if ebr.system_identifier_string != VALID_SYSTEM_IDENTIFIER_STRING {
+	// log.warn("EBR-Signature-Identifier-String sanity check failed\0")
+	// }
 	return 0
 }
 
@@ -131,21 +132,21 @@ new_ebr := fn(): ExtendedBootRecord {
 	)
 }
 
-VALID_LEAD_FS_INFO := 0x41615252
-VALID_TRAIL_FS_INFO := 0xAA550000
+VALID_LEAD_FS_INFO := @as(u32, 0x41615252)
+VALID_TRAIL_FS_INFO := @as(u32, 0xAA550000)
 
 FSInfo := struct {
 	// Must be 0x41615252 to indicate a valid FSInfo structure
 	lead_signature: u32,
 	lead_reserved: [u8; 480],
-	// If the value is 0xFFFFFFFF, then the free count is unknown and must be computed. However, this value might be incorrect and should at least be range checked (<= volume cluster count) 
+	// If the value is 0xFFFFFFFF, then the free count is unknown and must be computed. However, this value might be incorrect and should at least be range checked (<= volume cluster count)
 	last_known_free_cluster_count: u32,
 	last_known_avalible_cluster: u32,
 	trail_reserved: [u8; 12],
 	trail_signature: u32,
 }
 
-fs_info_sanity_check := fn(fs_info: FSInfo): int {
+fs_info_sanity_check := fn(fs_info: FSInfo): uint {
 	ret := 0
 	if fs_info.lead_signature != VALID_LEAD_FS_INFO {
 		ret &= 1
diff --git a/sysdata/programs/filesystem_fat32/src/file.hb b/sysdata/programs/filesystem_fat32/src/file.hb
index c754845..175bff0 100644
--- a/sysdata/programs/filesystem_fat32/src/file.hb
+++ b/sysdata/programs/filesystem_fat32/src/file.hb
@@ -7,7 +7,7 @@ FileName := [u8; 11]
 FileEntry := struct {
 	file_name: FileName,
 	attributes: u8,
-	// We could use this byte for something but we likely will not 
+	// We could use this byte for something but we likely will not
 	nt_reserved: u8,
 	hundredths_seconds_creation: u8,
 	creation_time: datetime.time,
diff --git a/sysdata/programs/filesystem_fat32/src/main.hb b/sysdata/programs/filesystem_fat32/src/main.hb
index 6e88cbb..e15a16c 100644
--- a/sysdata/programs/filesystem_fat32/src/main.hb
+++ b/sysdata/programs/filesystem_fat32/src/main.hb
@@ -16,7 +16,7 @@ FAT12 := 1
 FAT16 := 2
 FAT32 := 3
 
-calculate_fat_type := fn(sector_size: int, total_clusters: int): int {
+calculate_fat_type := fn(sector_size: uint, total_clusters: uint): uint {
 	if sector_size == 0 {
 		return ExFAT
 	} else if total_clusters < 4085 {
diff --git a/sysdata/programs/horizon/src/main.hb b/sysdata/programs/horizon/src/main.hb
index 7722ef4..ed2c23f 100644
--- a/sysdata/programs/horizon/src/main.hb
+++ b/sysdata/programs/horizon/src/main.hb
@@ -25,14 +25,14 @@ main := fn(): int {
 
 	window := render.new_surface(screen.width / 3, screen.height / 3)
 
-	x := 10
+	x := 0
 
 	mem_buf := memory.request_page(1)
-	color := random.range(render.Color, render.black, render.white)
+	color := random.any(render.Color)
 	side := window.width / 8
 
 	vel_inner := Vec2(int).(1, 1)
-	pos_inner := Vec2(int).((window.width - side) / 2, (window.height - side) / 2)
+	pos_inner := Vec2(uint).((window.width - side) / 2, (window.height - side) / 2)
 
 	loop {
 		// Clear the screen
@@ -48,11 +48,11 @@ main := fn(): int {
 
 		if pos_inner.x == 0 | pos_inner.x == window.width - side {
 			vel_inner.x = -vel_inner.x
-			color = random.range(render.Color, render.black, render.white)
+			color = random.any(render.Color)
 		}
 		if pos_inner.y == 20 | pos_inner.y == window.height - side {
 			vel_inner.y = -vel_inner.y
-			color = random.range(render.Color, render.black, render.white)
+			color = random.any(render.Color)
 		}
 
 		// TODO: Get windows out of a collection and iter through
@@ -69,17 +69,17 @@ main := fn(): int {
 			render.put_filled_rect(window, pos_inner, .(side, side), color)
 
 			// Apply the image to the screen
-			pos := Vec2(int).(x, 100)
+			pos := Vec2(uint).(x, 100)
 
 			render.put_surface(screen, window, pos, false)
 			if window_count >= 1 {
-				x = 10
+				x = 0
 				break
 			}
 			window_count += 1
-			x += 400
+			x += screen.width / 2
 		}
-		pos_inner += vel_inner
+		pos_inner += @bitcast(vel_inner)
 
 		// Sync the screen
 		render.sync(screen)
diff --git a/sysdata/programs/ps2_driver/src/main.hb b/sysdata/programs/ps2_driver/src/main.hb
index bdd72f5..7256181 100644
--- a/sysdata/programs/ps2_driver/src/main.hb
+++ b/sysdata/programs/ps2_driver/src/main.hb
@@ -7,7 +7,7 @@ send_byte := fn(byte: u8): u8 {
 
 main := fn(): int {
 	buf := buffer.create("XKeyboard\0")
-	send_byte(238)
+	_ := send_byte(238)
 	log.info("PS/2 Driver Loaded\0")
 	if send_byte(238) == 238 {
 		log.info("PS/2 Keyboard Echoed\0")
diff --git a/sysdata/programs/render_example/src/examples/image.hb b/sysdata/programs/render_example/src/examples/image.hb
index b7e1ba0..25d6840 100644
--- a/sysdata/programs/render_example/src/examples/image.hb
+++ b/sysdata/programs/render_example/src/examples/image.hb
@@ -8,13 +8,13 @@ bmp_1 := @embed("./assets/able.bmp")
 bmp_2 := @embed("./assets/mini.bmp")
 
 example := fn(): void {
-	images := [render.Surface; 2].(
+	images := [render.Surface].(
 		render.image.surface_from_bmp(@bitcast(&bmp_1)),
 		render.image.surface_from_bmp(@bitcast(&bmp_2)),
 	)
 	screen := render.init(true)
 	vel := Vec2(int).(1, 1)
-	pos := Vec2(int).(100, 100)
+	pos := Vec2(uint).(100, 100)
 	n := 0
 	loop {
 		image := images[n]
@@ -31,7 +31,7 @@ example := fn(): void {
 			n = 1 - n
 		}
 
-		pos += vel
+		pos += @bitcast(vel)
 	}
 	return
 }
\ No newline at end of file
diff --git a/sysdata/programs/render_example/src/examples/lines.hb b/sysdata/programs/render_example/src/examples/lines.hb
index 386883d..346ca9e 100644
--- a/sysdata/programs/render_example/src/examples/lines.hb
+++ b/sysdata/programs/render_example/src/examples/lines.hb
@@ -8,8 +8,8 @@ render := @use("../../../../libraries/render/src/lib.hb")
 example := fn(): void {
 	screen := render.init(true)
 	render.clear(screen, .(100, 50, 0, 255))
-	p0 := Vec2(int).(0, 0)
-	p1 := Vec2(int).(0, screen.height)
+	p0 := Vec2(uint).(0, 0)
+	p1 := Vec2(uint).(0, screen.height)
 	loop if p0.y >= screen.height break else {
 		render.put_line(screen, p0, p1, .(255, 180, 100, 255))
 		render.put_line(screen, .(screen.width, screen.height) - p0, .(screen.width, screen.height) - p1, .(255, 180, 100, 255))
diff --git a/sysdata/programs/render_example/src/examples/random.hb b/sysdata/programs/render_example/src/examples/random.hb
index fed2790..6710c10 100644
--- a/sysdata/programs/render_example/src/examples/random.hb
+++ b/sysdata/programs/render_example/src/examples/random.hb
@@ -5,11 +5,11 @@ example := fn(): void {
 	screen := render.init(false)
 	render.clear(screen, render.black)
 	loop {
-		x := random.range(int, 0, 1024)
-		y := random.range(int, 0, 768)
-		r := random.range(int, 0, 255)
-		g := random.range(int, 0, 75)
-		b := random.range(int, 0, 155)
+		x := random.range(uint, 0, screen.width)
+		y := random.range(uint, 0, screen.height)
+		r := random.range(u8, 0, 255)
+		g := random.range(u8, 0, 75)
+		b := random.range(u8, 0, 155)
 		render.put_pixel(screen, .(x, y), .(b, g, r, 255))
 	}
 	return
diff --git a/sysdata/programs/render_example/src/examples/square.hb b/sysdata/programs/render_example/src/examples/square.hb
index 5f89495..b66723d 100644
--- a/sysdata/programs/render_example/src/examples/square.hb
+++ b/sysdata/programs/render_example/src/examples/square.hb
@@ -9,8 +9,8 @@ example := fn(): void {
 	screen := render.init(true)
 	vel := Vec2(int).(1, 1)
 	side := screen.width / 8
-	pos := Vec2(int).((screen.width - side) / 2, (screen.height - side) / 2)
-	color := random.range(render.Color, render.black, render.white)
+	pos := Vec2(uint).((screen.width - side) / 2, (screen.height - side) / 2)
+	color := random.any(render.Color)
 	loop {
 		render.put_filled_rect(screen, pos, .(side, side), color)
 		render.sync(screen)
@@ -18,14 +18,14 @@ example := fn(): void {
 
 		if pos.x == 0 | pos.x == screen.width - side {
 			vel.x = -vel.x
-			color = random.range(render.Color, render.black, render.white)
+			color = random.any(render.Color)
 		}
 		if pos.y == 0 | pos.y == screen.height - side {
 			vel.y = -vel.y
-			color = random.range(render.Color, render.black, render.white)
+			color = random.any(render.Color)
 		}
 
-		pos += vel
+		pos += @bitcast(vel)
 	}
 	return
 }
\ No newline at end of file
diff --git a/sysdata/programs/render_example/src/examples/surface.hb b/sysdata/programs/render_example/src/examples/surface.hb
index 003baec..5a3eefc 100644
--- a/sysdata/programs/render_example/src/examples/surface.hb
+++ b/sysdata/programs/render_example/src/examples/surface.hb
@@ -10,14 +10,12 @@ example := fn(): void {
 
 	image := render.new_surface(screen.width / 3, screen.height / 3)
 	vel := Vec2(int).(-1, -1)
-	pos := Vec2(int).(100, 100)
+	pos := Vec2(uint).(100, 100)
 	side := image.width / 8
 	vel_inner := Vec2(int).(1, 1)
-	pos_inner := Vec2(int).((image.width - side) / 2, (image.height - side) / 2)
-	// workaround for compiler bug
-	color := render.Color.(0, 0, 0, 0)
-	color = random.range(render.Color, render.black, render.white)
-	target_color := color
+	pos_inner := Vec2(uint).((image.width - side) / 2, (image.height - side) / 2)
+	color := random.any(render.Color)
+	target_color := random.any(render.Color)
 	loop {
 		render.clear(screen, render.black)
 		render.put_filled_rect(image, pos_inner, .(side, side), color)
@@ -30,11 +28,11 @@ example := fn(): void {
 
 		if pos_inner.x == 0 | pos_inner.x == image.width - side {
 			vel_inner.x = -vel_inner.x
-			target_color = random.range(render.Color, render.black, render.white)
+			target_color = random.any(render.Color)
 		}
 		if pos_inner.y == 0 | pos_inner.y == image.height - side {
 			vel_inner.y = -vel_inner.y
-			target_color = random.range(render.Color, render.black, render.white)
+			target_color = random.any(render.Color)
 		}
 
 		if pos.x == 0 | pos.x == screen.width - image.width {
@@ -45,13 +43,13 @@ example := fn(): void {
 		}
 
 		color += .(
-			@intcast(color.b < target_color.b) - @intcast(color.b > target_color.b),
-			@intcast(color.g < target_color.g) - @intcast(color.g > target_color.g),
-			@intcast(color.r < target_color.r) - @intcast(color.r > target_color.r),
+			@bitcast(color.b < target_color.b) - @bitcast(color.b > target_color.b),
+			@bitcast(color.g < target_color.g) - @bitcast(color.g > target_color.g),
+			@bitcast(color.r < target_color.r) - @bitcast(color.r > target_color.r),
 			0,
 		)
-		pos += vel
-		pos_inner += vel_inner
+		pos += @bitcast(vel)
+		pos_inner += @bitcast(vel_inner)
 	}
 	return
 }
\ No newline at end of file
diff --git a/sysdata/programs/render_example/src/examples/tactical_screen.hb b/sysdata/programs/render_example/src/examples/tactical_screen.hb
index 3fc1f16..b15792a 100644
--- a/sysdata/programs/render_example/src/examples/tactical_screen.hb
+++ b/sysdata/programs/render_example/src/examples/tactical_screen.hb
@@ -12,7 +12,7 @@ example := fn(): void {
 	width := screen.width
 	height := screen.height
 	cell_size := 0
-	range := Vec2(int).(0, 0)
+	range := Vec2(uint).(0, 0)
 	if width > height {
 		cell_size = width / 40
 		range = .(39, height / cell_size - 1)
@@ -24,19 +24,19 @@ example := fn(): void {
 	height -= 1
 
 	scroll := 0
-	target := Vec2(int).(random.range(int, 0, range.x), random.range(int, 0, range.y))
+	target := Vec2(uint).(random.range(uint, 0, range.x), random.range(uint, 0, range.y))
 
 	halfcell := cell_size / 2
 	octcell := cell_size / 8
 	sevenoctcell := cell_size - octcell
 
-	seeker := Vec2(int).(random.range(int, 0, range.x), random.range(int, 0, range.y))
+	seeker := Vec2(uint).(random.range(uint, 0, range.x), random.range(uint, 0, range.y))
 
 	loop {
 		render.clear(screen, render.black)
 
-		target_pixel_coord := target * .(cell_size, cell_size) + .(scroll, scroll)
-		render.put_trirect(screen, target_pixel_coord, .(cell_size, cell_size), render.red, render.light_red)
+		target_pixel_coord := target * .(@bitcast(cell_size), @bitcast(cell_size)) + .(scroll, scroll)
+		render.put_trirect(screen, target_pixel_coord, .(@bitcast(cell_size), @bitcast(cell_size)), render.red, render.light_red)
 
 		render.put_hline(screen, target_pixel_coord.y + halfcell, target_pixel_coord.x - octcell, target_pixel_coord.x - sevenoctcell, render.light_red)
 		render.put_hline(screen, target_pixel_coord.y + halfcell, target_pixel_coord.x + cell_size + octcell, target_pixel_coord.x + cell_size + sevenoctcell, render.light_red)
@@ -69,7 +69,7 @@ example := fn(): void {
 		} else if seeker.y > target.y {
 			seeker.y -= 1
 		} else {
-			target = .(random.range(int, 0, range.x), random.range(int, 0, range.y))
+			target = .(random.range(uint, 0, range.x), random.range(uint, 0, range.y))
 		}
 
 		scroll += 1
diff --git a/sysdata/programs/serial_driver/src/main.hb b/sysdata/programs/serial_driver/src/main.hb
index 0173b67..5134363 100644
--- a/sysdata/programs/serial_driver/src/main.hb
+++ b/sysdata/programs/serial_driver/src/main.hb
@@ -1,7 +1,7 @@
 .{memory, buffer} := @use("../../../libraries/stn/src/lib.hb")
 
 serial_print := fn(ptr: ^u8): void {
-	letter := 0
+	letter := @as(u8, 0)
 	loop if *ptr == 0 break else {
 		letter = *ptr
 		memory.outb(0xF803, letter)
diff --git a/sysdata/programs/tests/src/main.hb b/sysdata/programs/tests/src/main.hb
index b2eee5e..049e404 100644
--- a/sysdata/programs/tests/src/main.hb
+++ b/sysdata/programs/tests/src/main.hb
@@ -10,9 +10,9 @@ service_search := fn(): void {
 main := fn(): int {
 	//service_search()
 	buf := "\0\0\0\0"
-	x := 0
-	loop if x == 255 break else {
-		log.info(string.display_int(x, buf, 10))
+	x := @as(int, 0)
+	loop if x > 255 break else {
+		log.info(string.display_int(x, buf, 2))
 		x += 1
 	}
 	return 0
diff --git a/sysdata/system_config.toml b/sysdata/system_config.toml
index f556282..a97af89 100644
--- a/sysdata/system_config.toml
+++ b/sysdata/system_config.toml
@@ -28,8 +28,8 @@ resolution = "1024x768x24"
 # [boot.limine.ableos.modules.diskio_driver]
 # path = "boot:///diskio_driver.hbf"
 
-[boot.limine.ableos.modules.render_example]
-path = "boot:///render_example.hbf"
+# [boot.limine.ableos.modules.render_example]
+# path = "boot:///render_example.hbf"
 
 # [boot.limine.ableos.modules.serial_driver]
 # path = "boot:///serial_driver.hbf"
@@ -37,11 +37,11 @@ path = "boot:///render_example.hbf"
 # [boot.limine.ableos.modules.serial_driver_test]
 # path = "boot:///serial_driver_test.hbf"
 
-# [boot.limine.ableos.modules.horizon]
-# path = "boot:///horizon.hbf"
+[boot.limine.ableos.modules.horizon]
+path = "boot:///horizon.hbf"
 
-# [boot.limine.ableos.modules.horizon_testing_program]
-# path = "boot:///horizon_testing_program.hbf"
+[boot.limine.ableos.modules.horizon_testing_program]
+path = "boot:///horizon_testing_program.hbf"
 
 # [boot.limine.ableos.modules.dt_buffer_test]
 # path = "boot:///dt_buffer_test.hbf"