diff --git a/Cargo.toml b/Cargo.toml
index 83006121c28e6e6d21185e594ae78b0ba6cf6751..66ecbe487ceb2f336d5f1ddb0714c3ebf620be9f 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,5 +1,8 @@
 [workspace]
 members = [
   "crates/support",
-  "crates/configuration"
+  "crates/configuration",
+  "crates/orchestrator",
+  "crates/provider",
+  "crates/test-runner"
 ]
diff --git a/crates/orchestrator/.gitignore b/crates/orchestrator/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..4fffb2f89cbd8f2169ce9914bd16bd43785bb368
--- /dev/null
+++ b/crates/orchestrator/.gitignore
@@ -0,0 +1,2 @@
+/target
+/Cargo.lock
diff --git a/crates/orchestrator/Cargo.toml b/crates/orchestrator/Cargo.toml
new file mode 100644
index 0000000000000000000000000000000000000000..98e8302afab8ebd70abddca007f1df71dc57283d
--- /dev/null
+++ b/crates/orchestrator/Cargo.toml
@@ -0,0 +1,8 @@
+[package]
+name = "orchestrator"
+version = "0.1.0"
+edition = "2021"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
diff --git a/crates/orchestrator/src/lib.rs b/crates/orchestrator/src/lib.rs
new file mode 100644
index 0000000000000000000000000000000000000000..7d12d9af8195bf5e19d10c7b592b359ccd014149
--- /dev/null
+++ b/crates/orchestrator/src/lib.rs
@@ -0,0 +1,14 @@
+pub fn add(left: usize, right: usize) -> usize {
+    left + right
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+
+    #[test]
+    fn it_works() {
+        let result = add(2, 2);
+        assert_eq!(result, 4);
+    }
+}
diff --git a/crates/provider/.gitignore b/crates/provider/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..4fffb2f89cbd8f2169ce9914bd16bd43785bb368
--- /dev/null
+++ b/crates/provider/.gitignore
@@ -0,0 +1,2 @@
+/target
+/Cargo.lock
diff --git a/crates/provider/Cargo.toml b/crates/provider/Cargo.toml
new file mode 100644
index 0000000000000000000000000000000000000000..d18aa43123e5c40328e17e7ea236034e702c2480
--- /dev/null
+++ b/crates/provider/Cargo.toml
@@ -0,0 +1,8 @@
+[package]
+name = "provider"
+version = "0.1.0"
+edition = "2021"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
diff --git a/crates/provider/src/lib.rs b/crates/provider/src/lib.rs
new file mode 100644
index 0000000000000000000000000000000000000000..7d12d9af8195bf5e19d10c7b592b359ccd014149
--- /dev/null
+++ b/crates/provider/src/lib.rs
@@ -0,0 +1,14 @@
+pub fn add(left: usize, right: usize) -> usize {
+    left + right
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+
+    #[test]
+    fn it_works() {
+        let result = add(2, 2);
+        assert_eq!(result, 4);
+    }
+}
diff --git a/crates/support/.gitignore b/crates/support/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..4fffb2f89cbd8f2169ce9914bd16bd43785bb368
--- /dev/null
+++ b/crates/support/.gitignore
@@ -0,0 +1,2 @@
+/target
+/Cargo.lock
diff --git a/crates/test-runner/.gitignore b/crates/test-runner/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..4fffb2f89cbd8f2169ce9914bd16bd43785bb368
--- /dev/null
+++ b/crates/test-runner/.gitignore
@@ -0,0 +1,2 @@
+/target
+/Cargo.lock
diff --git a/crates/test-runner/Cargo.toml b/crates/test-runner/Cargo.toml
new file mode 100644
index 0000000000000000000000000000000000000000..75d6a60a95acc8ab6ed131b570c264e979003ce0
--- /dev/null
+++ b/crates/test-runner/Cargo.toml
@@ -0,0 +1,8 @@
+[package]
+name = "test-runner"
+version = "0.1.0"
+edition = "2021"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
diff --git a/crates/test-runner/src/lib.rs b/crates/test-runner/src/lib.rs
new file mode 100644
index 0000000000000000000000000000000000000000..7d12d9af8195bf5e19d10c7b592b359ccd014149
--- /dev/null
+++ b/crates/test-runner/src/lib.rs
@@ -0,0 +1,14 @@
+pub fn add(left: usize, right: usize) -> usize {
+    left + right
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+
+    #[test]
+    fn it_works() {
+        let result = add(2, 2);
+        assert_eq!(result, 4);
+    }
+}