diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..3ce3588
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..5bcabcf
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/sptprp.iml b/.idea/sptprp.iml
new file mode 100644
index 0000000..7071692
--- /dev/null
+++ b/.idea/sptprp.iml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Cargo.lock b/Cargo.lock
new file mode 100644
index 0000000..0f5db7b
--- /dev/null
+++ b/Cargo.lock
@@ -0,0 +1,84 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "blake2"
+version = "0.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe"
+dependencies = [
+ "digest",
+]
+
+[[package]]
+name = "block-buffer"
+version = "0.10.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "crypto-common"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
+dependencies = [
+ "generic-array",
+ "typenum",
+]
+
+[[package]]
+name = "digest"
+version = "0.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f"
+dependencies = [
+ "block-buffer",
+ "crypto-common",
+ "subtle",
+]
+
+[[package]]
+name = "generic-array"
+version = "0.14.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9"
+dependencies = [
+ "typenum",
+ "version_check",
+]
+
+[[package]]
+name = "libsptprp"
+version = "0.1.0"
+dependencies = [
+ "blake2",
+]
+
+[[package]]
+name = "sptprprelay"
+version = "0.1.0"
+dependencies = [
+ "libsptprp",
+]
+
+[[package]]
+name = "subtle"
+version = "2.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601"
+
+[[package]]
+name = "typenum"
+version = "1.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba"
+
+[[package]]
+name = "version_check"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
diff --git a/Cargo.toml b/Cargo.toml
new file mode 100644
index 0000000..9a7e155
--- /dev/null
+++ b/Cargo.toml
@@ -0,0 +1,5 @@
+[workspace]
+members = [
+ "libsptprp",
+ "relay"
+]
\ No newline at end of file
diff --git a/libsptprp/Cargo.lock b/libsptprp/Cargo.lock
new file mode 100644
index 0000000..01a8cb8
--- /dev/null
+++ b/libsptprp/Cargo.lock
@@ -0,0 +1,7 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "libsptprp"
+version = "0.1.0"
diff --git a/libsptprp/Cargo.toml b/libsptprp/Cargo.toml
new file mode 100644
index 0000000..ec83357
--- /dev/null
+++ b/libsptprp/Cargo.toml
@@ -0,0 +1,9 @@
+[package]
+name = "libsptprp"
+version = "0.1.0"
+edition = "2021"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
+blake2 = "0.10.6"
\ No newline at end of file
diff --git a/libsptprp/src/lib.rs b/libsptprp/src/lib.rs
new file mode 100644
index 0000000..83eb8b7
--- /dev/null
+++ b/libsptprp/src/lib.rs
@@ -0,0 +1,4 @@
+#[cfg(test)]
+pub mod tests;
+pub mod cryptography;
+pub mod packets;
\ No newline at end of file
diff --git a/relay/Cargo.lock b/relay/Cargo.lock
new file mode 100644
index 0000000..48c2395
--- /dev/null
+++ b/relay/Cargo.lock
@@ -0,0 +1,7 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "relay"
+version = "0.1.0"
diff --git a/relay/Cargo.toml b/relay/Cargo.toml
new file mode 100644
index 0000000..f5b52fe
--- /dev/null
+++ b/relay/Cargo.toml
@@ -0,0 +1,9 @@
+[package]
+name = "sptprprelay"
+version = "0.1.0"
+edition = "2021"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
+libsptprp = { version = "0.1.0", path = "../libsptprp" }
\ No newline at end of file
diff --git a/relay/src/main.rs b/relay/src/main.rs
new file mode 100644
index 0000000..e7a11a9
--- /dev/null
+++ b/relay/src/main.rs
@@ -0,0 +1,3 @@
+fn main() {
+ println!("Hello, world!");
+}