diff --git a/Cargo.toml b/Cargo.toml
index 62e0d78..1a67ef2 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,8 +1,6 @@
 [workspace]
 resolver = "2"
-members = [
-    "engine"
-]
+members = ["engine", "subcrates/zephyr"]
 
 [profile.dev]
 rpath = false
@@ -17,7 +15,7 @@ codegen-units = 512
 strip = "symbols"
 debug-assertions = false
 
-[profile.dev.package."*"]
+[profile.dev.package."*"]   
 opt-level = 0
 debug = false
 overflow-checks = false
@@ -31,4 +29,8 @@ opt-level = 0
 debug = false
 overflow-checks = false
 incremental = true
-codegen-units = 512
\ No newline at end of file
+codegen-units = 512
+
+[workspace.dependencies]
+anyhow = "1.0.93"
+zephyr = { path = "./subcrates/zephyr" }
diff --git a/engine/Cargo.toml b/engine/Cargo.toml
index a635866..de1bd1a 100644
--- a/engine/Cargo.toml
+++ b/engine/Cargo.toml
@@ -18,3 +18,4 @@ thiserror = "2.0.3"
 tokio = { version = "1.41.1", features = ["macros", "rt", "rt-multi-thread"] }
 wgpu = "23.0.1"
 winit = "0.30.5"
+zephyr.workspace = true
\ No newline at end of file
diff --git a/engine/src/main.rs b/engine/src/main.rs
index 089f508..923c56e 100644
--- a/engine/src/main.rs
+++ b/engine/src/main.rs
@@ -15,6 +15,8 @@ struct Cli {
 
 #[tokio::main]
 async fn main() -> Result<()> {
+    let t = zephyr::add(0, 2);
+    println!("{}", t);
     let cli = Cli::parse();
 
     log::set_logger(&*LOGGER).unwrap();
diff --git a/subcrates/zephyr/Cargo.toml b/subcrates/zephyr/Cargo.toml
new file mode 100644
index 0000000..739c027
--- /dev/null
+++ b/subcrates/zephyr/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "zephyr"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/subcrates/zephyr/src/lib.rs b/subcrates/zephyr/src/lib.rs
new file mode 100644
index 0000000..b93cf3f
--- /dev/null
+++ b/subcrates/zephyr/src/lib.rs
@@ -0,0 +1,14 @@
+pub fn add(left: u64, right: u64) -> u64 {
+    left + right
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+
+    #[test]
+    fn it_works() {
+        let result = add(2, 2);
+        assert_eq!(result, 4);
+    }
+}