diff --git a/Cargo.lock b/Cargo.lock
index ced2727fa994a4dd5d5ee008ba8c5de89630c012..3e2280ca704324414250ee490212b90c397c1d47 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -193,15 +193,26 @@ checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd"
 [[package]]
 name = "bevy"
 version = "0.5.0"
-source = "git+https://github.com/bevyengine/bevy?rev=081350916c39fc1c7c9d659ccb6d86413832b465#081350916c39fc1c7c9d659ccb6d86413832b465"
+source = "git+https://github.com/bevyengine/bevy?rev=1d0d8a3397bd6fc2c14d42ffd0668d2443748912#1d0d8a3397bd6fc2c14d42ffd0668d2443748912"
 dependencies = [
  "bevy_internal",
 ]
 
+[[package]]
+name = "bevy-crevice-derive"
+version = "0.5.0"
+source = "git+https://github.com/bevyengine/bevy?rev=1d0d8a3397bd6fc2c14d42ffd0668d2443748912#1d0d8a3397bd6fc2c14d42ffd0668d2443748912"
+dependencies = [
+ "bevy_macro_utils",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
 [[package]]
 name = "bevy_app"
 version = "0.5.0"
-source = "git+https://github.com/bevyengine/bevy?rev=081350916c39fc1c7c9d659ccb6d86413832b465#081350916c39fc1c7c9d659ccb6d86413832b465"
+source = "git+https://github.com/bevyengine/bevy?rev=1d0d8a3397bd6fc2c14d42ffd0668d2443748912#1d0d8a3397bd6fc2c14d42ffd0668d2443748912"
 dependencies = [
  "bevy_derive",
  "bevy_ecs",
@@ -214,7 +225,7 @@ dependencies = [
 [[package]]
 name = "bevy_asset"
 version = "0.5.0"
-source = "git+https://github.com/bevyengine/bevy?rev=081350916c39fc1c7c9d659ccb6d86413832b465#081350916c39fc1c7c9d659ccb6d86413832b465"
+source = "git+https://github.com/bevyengine/bevy?rev=1d0d8a3397bd6fc2c14d42ffd0668d2443748912#1d0d8a3397bd6fc2c14d42ffd0668d2443748912"
 dependencies = [
  "anyhow",
  "bevy_app",
@@ -241,7 +252,7 @@ dependencies = [
 [[package]]
 name = "bevy_audio"
 version = "0.5.0"
-source = "git+https://github.com/bevyengine/bevy?rev=081350916c39fc1c7c9d659ccb6d86413832b465#081350916c39fc1c7c9d659ccb6d86413832b465"
+source = "git+https://github.com/bevyengine/bevy?rev=1d0d8a3397bd6fc2c14d42ffd0668d2443748912#1d0d8a3397bd6fc2c14d42ffd0668d2443748912"
 dependencies = [
  "anyhow",
  "bevy_app",
@@ -256,7 +267,7 @@ dependencies = [
 [[package]]
 name = "bevy_core"
 version = "0.5.0"
-source = "git+https://github.com/bevyengine/bevy?rev=081350916c39fc1c7c9d659ccb6d86413832b465#081350916c39fc1c7c9d659ccb6d86413832b465"
+source = "git+https://github.com/bevyengine/bevy?rev=1d0d8a3397bd6fc2c14d42ffd0668d2443748912#1d0d8a3397bd6fc2c14d42ffd0668d2443748912"
 dependencies = [
  "bevy_app",
  "bevy_derive",
@@ -271,7 +282,7 @@ dependencies = [
 [[package]]
 name = "bevy_core_pipeline"
 version = "0.5.0"
-source = "git+https://github.com/bevyengine/bevy?rev=081350916c39fc1c7c9d659ccb6d86413832b465#081350916c39fc1c7c9d659ccb6d86413832b465"
+source = "git+https://github.com/bevyengine/bevy?rev=1d0d8a3397bd6fc2c14d42ffd0668d2443748912#1d0d8a3397bd6fc2c14d42ffd0668d2443748912"
 dependencies = [
  "bevy_app",
  "bevy_asset",
@@ -280,10 +291,21 @@ dependencies = [
  "bevy_render",
 ]
 
+[[package]]
+name = "bevy_crevice"
+version = "0.5.0"
+source = "git+https://github.com/bevyengine/bevy?rev=1d0d8a3397bd6fc2c14d42ffd0668d2443748912#1d0d8a3397bd6fc2c14d42ffd0668d2443748912"
+dependencies = [
+ "bevy-crevice-derive",
+ "bytemuck",
+ "glam",
+ "mint",
+]
+
 [[package]]
 name = "bevy_derive"
 version = "0.5.0"
-source = "git+https://github.com/bevyengine/bevy?rev=081350916c39fc1c7c9d659ccb6d86413832b465#081350916c39fc1c7c9d659ccb6d86413832b465"
+source = "git+https://github.com/bevyengine/bevy?rev=1d0d8a3397bd6fc2c14d42ffd0668d2443748912#1d0d8a3397bd6fc2c14d42ffd0668d2443748912"
 dependencies = [
  "Inflector",
  "bevy_macro_utils",
@@ -294,7 +316,7 @@ dependencies = [
 [[package]]
 name = "bevy_diagnostic"
 version = "0.5.0"
-source = "git+https://github.com/bevyengine/bevy?rev=081350916c39fc1c7c9d659ccb6d86413832b465#081350916c39fc1c7c9d659ccb6d86413832b465"
+source = "git+https://github.com/bevyengine/bevy?rev=1d0d8a3397bd6fc2c14d42ffd0668d2443748912#1d0d8a3397bd6fc2c14d42ffd0668d2443748912"
 dependencies = [
  "bevy_app",
  "bevy_core",
@@ -306,7 +328,7 @@ dependencies = [
 [[package]]
 name = "bevy_ecs"
 version = "0.5.0"
-source = "git+https://github.com/bevyengine/bevy?rev=081350916c39fc1c7c9d659ccb6d86413832b465#081350916c39fc1c7c9d659ccb6d86413832b465"
+source = "git+https://github.com/bevyengine/bevy?rev=1d0d8a3397bd6fc2c14d42ffd0668d2443748912#1d0d8a3397bd6fc2c14d42ffd0668d2443748912"
 dependencies = [
  "async-channel",
  "bevy_ecs_macros",
@@ -323,7 +345,7 @@ dependencies = [
 [[package]]
 name = "bevy_ecs_macros"
 version = "0.5.0"
-source = "git+https://github.com/bevyengine/bevy?rev=081350916c39fc1c7c9d659ccb6d86413832b465#081350916c39fc1c7c9d659ccb6d86413832b465"
+source = "git+https://github.com/bevyengine/bevy?rev=1d0d8a3397bd6fc2c14d42ffd0668d2443748912#1d0d8a3397bd6fc2c14d42ffd0668d2443748912"
 dependencies = [
  "bevy_macro_utils",
  "proc-macro2",
@@ -334,7 +356,7 @@ dependencies = [
 [[package]]
 name = "bevy_gilrs"
 version = "0.5.0"
-source = "git+https://github.com/bevyengine/bevy?rev=081350916c39fc1c7c9d659ccb6d86413832b465#081350916c39fc1c7c9d659ccb6d86413832b465"
+source = "git+https://github.com/bevyengine/bevy?rev=1d0d8a3397bd6fc2c14d42ffd0668d2443748912#1d0d8a3397bd6fc2c14d42ffd0668d2443748912"
 dependencies = [
  "bevy_app",
  "bevy_ecs",
@@ -346,7 +368,7 @@ dependencies = [
 [[package]]
 name = "bevy_gltf"
 version = "0.5.0"
-source = "git+https://github.com/bevyengine/bevy?rev=081350916c39fc1c7c9d659ccb6d86413832b465#081350916c39fc1c7c9d659ccb6d86413832b465"
+source = "git+https://github.com/bevyengine/bevy?rev=1d0d8a3397bd6fc2c14d42ffd0668d2443748912#1d0d8a3397bd6fc2c14d42ffd0668d2443748912"
 dependencies = [
  "anyhow",
  "base64",
@@ -370,7 +392,7 @@ dependencies = [
 [[package]]
 name = "bevy_input"
 version = "0.5.0"
-source = "git+https://github.com/bevyengine/bevy?rev=081350916c39fc1c7c9d659ccb6d86413832b465#081350916c39fc1c7c9d659ccb6d86413832b465"
+source = "git+https://github.com/bevyengine/bevy?rev=1d0d8a3397bd6fc2c14d42ffd0668d2443748912#1d0d8a3397bd6fc2c14d42ffd0668d2443748912"
 dependencies = [
  "bevy_app",
  "bevy_ecs",
@@ -381,7 +403,7 @@ dependencies = [
 [[package]]
 name = "bevy_internal"
 version = "0.5.0"
-source = "git+https://github.com/bevyengine/bevy?rev=081350916c39fc1c7c9d659ccb6d86413832b465#081350916c39fc1c7c9d659ccb6d86413832b465"
+source = "git+https://github.com/bevyengine/bevy?rev=1d0d8a3397bd6fc2c14d42ffd0668d2443748912#1d0d8a3397bd6fc2c14d42ffd0668d2443748912"
 dependencies = [
  "bevy_app",
  "bevy_asset",
@@ -416,8 +438,8 @@ name = "bevy_kayak_ui"
 version = "0.0.1"
 dependencies = [
  "bevy",
+ "bevy_crevice",
  "bytemuck",
- "crevice",
  "kayak_core",
  "kayak_font",
  "serde",
@@ -428,7 +450,7 @@ dependencies = [
 [[package]]
 name = "bevy_log"
 version = "0.5.0"
-source = "git+https://github.com/bevyengine/bevy?rev=081350916c39fc1c7c9d659ccb6d86413832b465#081350916c39fc1c7c9d659ccb6d86413832b465"
+source = "git+https://github.com/bevyengine/bevy?rev=1d0d8a3397bd6fc2c14d42ffd0668d2443748912#1d0d8a3397bd6fc2c14d42ffd0668d2443748912"
 dependencies = [
  "android_log-sys",
  "bevy_app",
@@ -442,7 +464,7 @@ dependencies = [
 [[package]]
 name = "bevy_macro_utils"
 version = "0.5.0"
-source = "git+https://github.com/bevyengine/bevy?rev=081350916c39fc1c7c9d659ccb6d86413832b465#081350916c39fc1c7c9d659ccb6d86413832b465"
+source = "git+https://github.com/bevyengine/bevy?rev=1d0d8a3397bd6fc2c14d42ffd0668d2443748912#1d0d8a3397bd6fc2c14d42ffd0668d2443748912"
 dependencies = [
  "cargo-manifest",
  "quote",
@@ -452,7 +474,7 @@ dependencies = [
 [[package]]
 name = "bevy_math"
 version = "0.5.0"
-source = "git+https://github.com/bevyengine/bevy?rev=081350916c39fc1c7c9d659ccb6d86413832b465#081350916c39fc1c7c9d659ccb6d86413832b465"
+source = "git+https://github.com/bevyengine/bevy?rev=1d0d8a3397bd6fc2c14d42ffd0668d2443748912#1d0d8a3397bd6fc2c14d42ffd0668d2443748912"
 dependencies = [
  "bevy_reflect",
  "glam",
@@ -461,7 +483,7 @@ dependencies = [
 [[package]]
 name = "bevy_pbr"
 version = "0.5.0"
-source = "git+https://github.com/bevyengine/bevy?rev=081350916c39fc1c7c9d659ccb6d86413832b465#081350916c39fc1c7c9d659ccb6d86413832b465"
+source = "git+https://github.com/bevyengine/bevy?rev=1d0d8a3397bd6fc2c14d42ffd0668d2443748912#1d0d8a3397bd6fc2c14d42ffd0668d2443748912"
 dependencies = [
  "bevy_app",
  "bevy_asset",
@@ -476,14 +498,12 @@ dependencies = [
  "bevy_window",
  "bitflags",
  "bytemuck",
- "crevice",
- "wgpu",
 ]
 
 [[package]]
 name = "bevy_reflect"
 version = "0.5.0"
-source = "git+https://github.com/bevyengine/bevy?rev=081350916c39fc1c7c9d659ccb6d86413832b465#081350916c39fc1c7c9d659ccb6d86413832b465"
+source = "git+https://github.com/bevyengine/bevy?rev=1d0d8a3397bd6fc2c14d42ffd0668d2443748912#1d0d8a3397bd6fc2c14d42ffd0668d2443748912"
 dependencies = [
  "bevy_reflect_derive",
  "bevy_utils",
@@ -499,7 +519,7 @@ dependencies = [
 [[package]]
 name = "bevy_reflect_derive"
 version = "0.5.0"
-source = "git+https://github.com/bevyengine/bevy?rev=081350916c39fc1c7c9d659ccb6d86413832b465#081350916c39fc1c7c9d659ccb6d86413832b465"
+source = "git+https://github.com/bevyengine/bevy?rev=1d0d8a3397bd6fc2c14d42ffd0668d2443748912#1d0d8a3397bd6fc2c14d42ffd0668d2443748912"
 dependencies = [
  "bevy_macro_utils",
  "proc-macro2",
@@ -511,12 +531,13 @@ dependencies = [
 [[package]]
 name = "bevy_render"
 version = "0.5.0"
-source = "git+https://github.com/bevyengine/bevy?rev=081350916c39fc1c7c9d659ccb6d86413832b465#081350916c39fc1c7c9d659ccb6d86413832b465"
+source = "git+https://github.com/bevyengine/bevy?rev=1d0d8a3397bd6fc2c14d42ffd0668d2443748912#1d0d8a3397bd6fc2c14d42ffd0668d2443748912"
 dependencies = [
  "anyhow",
  "bevy_app",
  "bevy_asset",
  "bevy_core",
+ "bevy_crevice",
  "bevy_derive",
  "bevy_ecs",
  "bevy_math",
@@ -526,7 +547,6 @@ dependencies = [
  "bevy_window",
  "bitflags",
  "codespan-reporting",
- "crevice",
  "downcast-rs",
  "futures-lite",
  "hex",
@@ -545,7 +565,7 @@ dependencies = [
 [[package]]
 name = "bevy_scene"
 version = "0.5.0"
-source = "git+https://github.com/bevyengine/bevy?rev=081350916c39fc1c7c9d659ccb6d86413832b465#081350916c39fc1c7c9d659ccb6d86413832b465"
+source = "git+https://github.com/bevyengine/bevy?rev=1d0d8a3397bd6fc2c14d42ffd0668d2443748912#1d0d8a3397bd6fc2c14d42ffd0668d2443748912"
 dependencies = [
  "anyhow",
  "bevy_app",
@@ -563,7 +583,7 @@ dependencies = [
 [[package]]
 name = "bevy_sprite"
 version = "0.5.0"
-source = "git+https://github.com/bevyengine/bevy?rev=081350916c39fc1c7c9d659ccb6d86413832b465#081350916c39fc1c7c9d659ccb6d86413832b465"
+source = "git+https://github.com/bevyengine/bevy?rev=1d0d8a3397bd6fc2c14d42ffd0668d2443748912#1d0d8a3397bd6fc2c14d42ffd0668d2443748912"
 dependencies = [
  "bevy_app",
  "bevy_asset",
@@ -577,7 +597,6 @@ dependencies = [
  "bevy_transform",
  "bevy_utils",
  "bytemuck",
- "crevice",
  "guillotiere",
  "rectangle-pack",
  "serde",
@@ -587,7 +606,7 @@ dependencies = [
 [[package]]
 name = "bevy_tasks"
 version = "0.5.0"
-source = "git+https://github.com/bevyengine/bevy?rev=081350916c39fc1c7c9d659ccb6d86413832b465#081350916c39fc1c7c9d659ccb6d86413832b465"
+source = "git+https://github.com/bevyengine/bevy?rev=1d0d8a3397bd6fc2c14d42ffd0668d2443748912#1d0d8a3397bd6fc2c14d42ffd0668d2443748912"
 dependencies = [
  "async-channel",
  "async-executor",
@@ -600,7 +619,7 @@ dependencies = [
 [[package]]
 name = "bevy_text"
 version = "0.5.0"
-source = "git+https://github.com/bevyengine/bevy?rev=081350916c39fc1c7c9d659ccb6d86413832b465#081350916c39fc1c7c9d659ccb6d86413832b465"
+source = "git+https://github.com/bevyengine/bevy?rev=1d0d8a3397bd6fc2c14d42ffd0668d2443748912#1d0d8a3397bd6fc2c14d42ffd0668d2443748912"
 dependencies = [
  "ab_glyph",
  "anyhow",
@@ -623,7 +642,7 @@ dependencies = [
 [[package]]
 name = "bevy_transform"
 version = "0.5.0"
-source = "git+https://github.com/bevyengine/bevy?rev=081350916c39fc1c7c9d659ccb6d86413832b465#081350916c39fc1c7c9d659ccb6d86413832b465"
+source = "git+https://github.com/bevyengine/bevy?rev=1d0d8a3397bd6fc2c14d42ffd0668d2443748912#1d0d8a3397bd6fc2c14d42ffd0668d2443748912"
 dependencies = [
  "bevy_app",
  "bevy_ecs",
@@ -636,7 +655,7 @@ dependencies = [
 [[package]]
 name = "bevy_ui"
 version = "0.5.0"
-source = "git+https://github.com/bevyengine/bevy?rev=081350916c39fc1c7c9d659ccb6d86413832b465#081350916c39fc1c7c9d659ccb6d86413832b465"
+source = "git+https://github.com/bevyengine/bevy?rev=1d0d8a3397bd6fc2c14d42ffd0668d2443748912#1d0d8a3397bd6fc2c14d42ffd0668d2443748912"
 dependencies = [
  "bevy_app",
  "bevy_asset",
@@ -655,7 +674,6 @@ dependencies = [
  "bevy_utils",
  "bevy_window",
  "bytemuck",
- "crevice",
  "serde",
  "smallvec",
  "stretch",
@@ -664,7 +682,7 @@ dependencies = [
 [[package]]
 name = "bevy_utils"
 version = "0.5.0"
-source = "git+https://github.com/bevyengine/bevy?rev=081350916c39fc1c7c9d659ccb6d86413832b465#081350916c39fc1c7c9d659ccb6d86413832b465"
+source = "git+https://github.com/bevyengine/bevy?rev=1d0d8a3397bd6fc2c14d42ffd0668d2443748912#1d0d8a3397bd6fc2c14d42ffd0668d2443748912"
 dependencies = [
  "ahash",
  "bevy_derive",
@@ -677,7 +695,7 @@ dependencies = [
 [[package]]
 name = "bevy_window"
 version = "0.5.0"
-source = "git+https://github.com/bevyengine/bevy?rev=081350916c39fc1c7c9d659ccb6d86413832b465#081350916c39fc1c7c9d659ccb6d86413832b465"
+source = "git+https://github.com/bevyengine/bevy?rev=1d0d8a3397bd6fc2c14d42ffd0668d2443748912#1d0d8a3397bd6fc2c14d42ffd0668d2443748912"
 dependencies = [
  "bevy_app",
  "bevy_math",
@@ -689,7 +707,7 @@ dependencies = [
 [[package]]
 name = "bevy_winit"
 version = "0.5.0"
-source = "git+https://github.com/bevyengine/bevy?rev=081350916c39fc1c7c9d659ccb6d86413832b465#081350916c39fc1c7c9d659ccb6d86413832b465"
+source = "git+https://github.com/bevyengine/bevy?rev=1d0d8a3397bd6fc2c14d42ffd0668d2443748912#1d0d8a3397bd6fc2c14d42ffd0668d2443748912"
 dependencies = [
  "approx",
  "bevy_app",
@@ -1092,27 +1110,6 @@ dependencies = [
  "cfg-if 1.0.0",
 ]
 
-[[package]]
-name = "crevice"
-version = "0.8.0"
-source = "git+https://github.com/bevyengine/bevy?rev=081350916c39fc1c7c9d659ccb6d86413832b465#081350916c39fc1c7c9d659ccb6d86413832b465"
-dependencies = [
- "bytemuck",
- "crevice-derive",
- "glam",
- "mint",
-]
-
-[[package]]
-name = "crevice-derive"
-version = "0.8.0"
-source = "git+https://github.com/bevyengine/bevy?rev=081350916c39fc1c7c9d659ccb6d86413832b465#081350916c39fc1c7c9d659ccb6d86413832b465"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
 [[package]]
 name = "crossbeam-channel"
 version = "0.5.1"
@@ -1531,6 +1528,7 @@ checksum = "9a5e5bb97bf9a0d9519a28cf38839cf1d6d9bb572b48e3c67202271fec2ed5e7"
 dependencies = [
  "core-foundation 0.6.4",
  "io-kit-sys",
+ "js-sys",
  "libc",
  "libudev-sys",
  "log",
@@ -1539,6 +1537,7 @@ dependencies = [
  "stdweb 0.4.20",
  "uuid",
  "vec_map",
+ "web-sys",
  "winapi",
 ]
 
@@ -1855,8 +1854,8 @@ version = "0.1.0"
 dependencies = [
  "anyhow",
  "bevy",
+ "bevy_crevice",
  "bytemuck",
- "crevice",
  "serde",
  "serde_json",
  "serde_path_to_error",
@@ -1928,6 +1927,17 @@ version = "1.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
 
+[[package]]
+name = "lewton"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "777b48df9aaab155475a83a7df3070395ea1ac6902f5cd062b8f2b028075c030"
+dependencies = [
+ "byteorder",
+ "ogg",
+ "tinyvec",
+]
+
 [[package]]
 name = "libc"
 version = "0.2.111"
@@ -2034,26 +2044,6 @@ dependencies = [
  "objc",
 ]
 
-[[package]]
-name = "minimp3"
-version = "0.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "985438f75febf74c392071a975a29641b420dd84431135a6e6db721de4b74372"
-dependencies = [
- "minimp3-sys",
- "slice-deque",
- "thiserror",
-]
-
-[[package]]
-name = "minimp3-sys"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e21c73734c69dc95696c9ed8926a2b393171d98b3f5f5935686a26a487ab9b90"
-dependencies = [
- "cc",
-]
-
 [[package]]
 name = "miniz_oxide"
 version = "0.3.7"
@@ -2421,6 +2411,15 @@ dependencies = [
  "cc",
 ]
 
+[[package]]
+name = "ogg"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6951b4e8bf21c8193da321bcce9c9dd2e13c858fe078bf9054a288b419ae5d6e"
+dependencies = [
+ "byteorder",
+]
+
 [[package]]
 name = "once_cell"
 version = "1.8.0"
@@ -2731,7 +2730,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4d98f5e557b61525057e2bc142c8cd7f0e70d75dc32852309bec440e6e046bf9"
 dependencies = [
  "cpal",
- "minimp3",
+ "lewton",
 ]
 
 [[package]]
@@ -2880,17 +2879,6 @@ version = "0.4.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5"
 
-[[package]]
-name = "slice-deque"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "31ef6ee280cdefba6d2d0b4b78a84a1c1a3f3a4cec98c2d4231c8bc225de0f25"
-dependencies = [
- "libc",
- "mach 0.3.2",
- "winapi",
-]
-
 [[package]]
 name = "slotmap"
 version = "1.0.6"
@@ -3053,6 +3041,21 @@ dependencies = [
  "once_cell",
 ]
 
+[[package]]
+name = "tinyvec"
+version = "1.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2c1c1d5a42b6245520c249549ec267180beaffcc0615401ac8e31853d4b6d8d2"
+dependencies = [
+ "tinyvec_macros",
+]
+
+[[package]]
+name = "tinyvec_macros"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
+
 [[package]]
 name = "toml"
 version = "0.5.8"
diff --git a/Cargo.toml b/Cargo.toml
index 03c5f86a9d880c1c42622158ba97b5f58730c5b2..f671f3511c4b8210c5422644c6de78e76b7c6aca 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -17,14 +17,14 @@ bevy_renderer = [
 ]
 
 [dependencies]
-bevy = { git = "https://github.com/bevyengine/bevy", rev = "081350916c39fc1c7c9d659ccb6d86413832b465", optional = true }
+bevy = { git = "https://github.com/bevyengine/bevy", rev = "1d0d8a3397bd6fc2c14d42ffd0668d2443748912", optional = true }
 kayak_core = { path = "kayak_core" }
 bevy_kayak_ui = { path = "bevy_kayak_ui", optional = true }
 kayak_font = { path = "kayak_font", optional = true }
 kayak_render_macros = { path = "kayak_render_macros" }
 
 [dev-dependencies]
-bevy = { git = "https://github.com/bevyengine/bevy", rev = "081350916c39fc1c7c9d659ccb6d86413832b465" }
+bevy = { git = "https://github.com/bevyengine/bevy", rev = "1d0d8a3397bd6fc2c14d42ffd0668d2443748912" }
 
 [[example]]
 name = "todo"
diff --git a/README.md b/README.md
index 446d7e121141daad3f02c14b98b14fc144dbd9f7..40f7e9f005981b0c7a9199ffaaea6b6e5cce0d0c 100644
--- a/README.md
+++ b/README.md
@@ -51,7 +51,7 @@ kayak_widgets = { git="https://github.com/StarArawn/kayak_ui", rev="{INSERT_COMM
 bevy = { git="https://github.com/bevyengine/bevy", rev="{INSERT_COMMIT_SHA_HERE}" }
 ```
 
-It's also worth mentioning that you will need to use the same bevy revision that this library uses which is currently: `081350916c39fc1c7c9d659ccb6d86413832b465`.
+It's also worth mentioning that you will need to use the same bevy revision that this library uses which is currently: `1d0d8a3397bd6fc2c14d42ffd0668d2443748912`.
 
 This is temporary and will change when bevy 0.6 is released.
 
diff --git a/bevy_kayak_ui/Cargo.toml b/bevy_kayak_ui/Cargo.toml
index 8b0e661c984176a6e9d9cf931c56af669a696385..f5b25b90ddabc06e8eef8f1f20e8199487d43faf 100644
--- a/bevy_kayak_ui/Cargo.toml
+++ b/bevy_kayak_ui/Cargo.toml
@@ -5,11 +5,10 @@ edition = "2021"
 
 [dependencies]
 bytemuck = "1.7.2"
-bevy = { git = "https://github.com/bevyengine/bevy", rev = "081350916c39fc1c7c9d659ccb6d86413832b465" }
+bevy = { git = "https://github.com/bevyengine/bevy", rev = "1d0d8a3397bd6fc2c14d42ffd0668d2443748912" }
+bevy_crevice = { git = "https://github.com/bevyengine/bevy", rev = "1d0d8a3397bd6fc2c14d42ffd0668d2443748912" }
 kayak_core = { path = "../kayak_core" }
 kayak_font = { path = "../kayak_font" }
-#kayak_font = { path = "../kayak_font" }
-crevice = { git = "https://github.com/bevyengine/bevy", rev = "081350916c39fc1c7c9d659ccb6d86413832b465" }
 serde = "1.0"
 serde_json = "1.0"
 serde_path_to_error = "0.1"
diff --git a/bevy_kayak_ui/src/render/mod.rs b/bevy_kayak_ui/src/render/mod.rs
index c70b7f900c321cae65424213b6b97edfe34dd4de..476057abc98ba36f255d7212d66015bfb258563d 100644
--- a/bevy_kayak_ui/src/render/mod.rs
+++ b/bevy_kayak_ui/src/render/mod.rs
@@ -41,7 +41,7 @@ pub struct BevyKayakUIRenderPlugin;
 
 impl Plugin for BevyKayakUIRenderPlugin {
     fn build(&self, app: &mut bevy::prelude::App) {
-        let render_app = app.sub_app(RenderApp);
+        let render_app = app.sub_app_mut(RenderApp);
         render_app
             .init_resource::<DrawFunctions<TransparentUI>>()
             .add_system_to_stage(RenderStage::Extract, extract_core_pipeline_camera_phases);
diff --git a/bevy_kayak_ui/src/render/unified/font/mod.rs b/bevy_kayak_ui/src/render/unified/font/mod.rs
index 4fdf406093070e17cfd0ace54686688d99919c43..657c25a178e1bf73725f949668bcec0d79ab4ea0 100644
--- a/bevy_kayak_ui/src/render/unified/font/mod.rs
+++ b/bevy_kayak_ui/src/render/unified/font/mod.rs
@@ -24,7 +24,7 @@ impl Plugin for TextRendererPlugin {
         app.add_plugin(KayakFontPlugin)
             .init_resource::<FontMapping>();
 
-        let render_app = app.sub_app(RenderApp);
+        let render_app = app.sub_app_mut(RenderApp);
         render_app.add_system_to_stage(RenderStage::Queue, create_and_update_font_cache_texture);
     }
 }
diff --git a/bevy_kayak_ui/src/render/unified/mod.rs b/bevy_kayak_ui/src/render/unified/mod.rs
index 4da94a1f417665d990ccc7b25b25294c328c0dff..5479b744e371bd2ab6857f2dcf7433752276eefe 100644
--- a/bevy_kayak_ui/src/render/unified/mod.rs
+++ b/bevy_kayak_ui/src/render/unified/mod.rs
@@ -42,7 +42,7 @@ impl Plugin for UnifiedRenderPlugin {
         app.add_plugin(font::TextRendererPlugin)
             .add_plugin(image::ImageRendererPlugin);
 
-        let render_app = app.sub_app(RenderApp);
+        let render_app = app.sub_app_mut(RenderApp);
         render_app
             .init_resource::<ImageBindGroups>()
             .init_resource::<UnifiedPipeline>()
diff --git a/bevy_kayak_ui/src/render/unified/pipeline.rs b/bevy_kayak_ui/src/render/unified/pipeline.rs
index 3ad10f29d064f685cb9ab7a4070759df86a0842e..df1c7b3ae27d1c7b9e0479b9a77b1f0bed107580 100644
--- a/bevy_kayak_ui/src/render/unified/pipeline.rs
+++ b/bevy_kayak_ui/src/render/unified/pipeline.rs
@@ -29,8 +29,8 @@ use bevy::{
     sprite::Rect,
     utils::HashMap,
 };
+use bevy_crevice::std140::AsStd140;
 use bytemuck::{Pod, Zeroable};
-use crevice::std140::AsStd140;
 use kayak_font::{FontRenderingPipeline, FontTextureCache, KayakFont};
 
 use super::{Dpi, UNIFIED_SHADER_HANDLE};
diff --git a/kayak_core/Cargo.toml b/kayak_core/Cargo.toml
index 1807e85bb4aa630d87c3692c3adf63abfb0259c1..792c504fa12a4b2fa36387996ea495658a27bf23 100644
--- a/kayak_core/Cargo.toml
+++ b/kayak_core/Cargo.toml
@@ -12,7 +12,7 @@ bevy_renderer = ["bevy"]
 [dependencies]
 as-any = "0.2"
 derivative = "2.2"
-bevy = { git = "https://github.com/bevyengine/bevy", rev = "081350916c39fc1c7c9d659ccb6d86413832b465", optional = true }
+bevy = { git = "https://github.com/bevyengine/bevy", rev = "1d0d8a3397bd6fc2c14d42ffd0668d2443748912", optional = true }
 flo_binding = { git = "https://github.com/StarArawn/flo_binding.git", rev = "c78431a56df5ec082b7e1c271871e6c0ac75e81e" }
 kayak_render_macros = { path = "../kayak_render_macros" }
 morphorm = { git = "https://github.com/geom3trik/morphorm", rev = "1243152d4cebea46fd3e5098df26402c73acae91" }
diff --git a/kayak_font/Cargo.toml b/kayak_font/Cargo.toml
index ee051c7279b62ad04b27ee61708e5e851b6d664c..ce61931afd086bc6cb6ed2a04ff9b6cd3f9ffc43 100644
--- a/kayak_font/Cargo.toml
+++ b/kayak_font/Cargo.toml
@@ -7,9 +7,9 @@ edition = "2021"
 
 [dependencies]
 anyhow = { version = "1.0" }
-bevy = { git = "https://github.com/bevyengine/bevy", rev = "081350916c39fc1c7c9d659ccb6d86413832b465" }
+bevy = { git = "https://github.com/bevyengine/bevy", rev = "1d0d8a3397bd6fc2c14d42ffd0668d2443748912" }
+bevy_crevice = { git = "https://github.com/bevyengine/bevy", rev = "1d0d8a3397bd6fc2c14d42ffd0668d2443748912" }
 bytemuck = "1.7.2"
-crevice = { git = "https://github.com/bevyengine/bevy", rev = "081350916c39fc1c7c9d659ccb6d86413832b465" }
 serde = "1.0"
 serde_json = "1.0"
 serde_path_to_error = "0.1"
diff --git a/kayak_font/examples/renderer/mod.rs b/kayak_font/examples/renderer/mod.rs
index 9a9f92fe487e01512cbaef170dbd7443cd12c071..ae223b2ee3b11c514c88d12d7f6d8b61cb0c2e06 100644
--- a/kayak_font/examples/renderer/mod.rs
+++ b/kayak_font/examples/renderer/mod.rs
@@ -32,7 +32,7 @@ impl Plugin for FontRenderPlugin {
         let unified_shader = Shader::from_wgsl(include_str!("shader.wgsl"));
         shaders.set_untracked(FONT_SHADER_HANDLE, unified_shader);
 
-        let render_app = app.sub_app(RenderApp);
+        let render_app = app.sub_app_mut(RenderApp);
         render_app
             .init_resource::<QuadMeta>()
             .init_resource::<FontPipeline>()
diff --git a/kayak_font/examples/renderer/pipeline.rs b/kayak_font/examples/renderer/pipeline.rs
index 66082d399379f9c61e5619cf6ef5e7116e3f250b..76d2452458a35c3dd7f5253c9b0cd0122c3939f3 100644
--- a/kayak_font/examples/renderer/pipeline.rs
+++ b/kayak_font/examples/renderer/pipeline.rs
@@ -26,8 +26,8 @@ use bevy::{
     },
     sprite::Rect,
 };
+use bevy_crevice::std140::AsStd140;
 use bytemuck::{Pod, Zeroable};
-use crevice::std140::AsStd140;
 use kayak_font::{FontRenderingPipeline, FontTextureCache, KayakFont};
 
 use super::FONT_SHADER_HANDLE;
diff --git a/kayak_font/src/lib.rs b/kayak_font/src/lib.rs
index 442b47bc5c5a3028013aa294f110418957ba3ced..bffc447beb64ed939cb81a2b7ff613b68ecb24b7 100644
--- a/kayak_font/src/lib.rs
+++ b/kayak_font/src/lib.rs
@@ -32,7 +32,7 @@ impl Plugin for KayakFontPlugin {
             .add_asset_loader(KayakFontLoader)
             .add_system(init_font_texture);
 
-        let render_app = app.sub_app(RenderApp);
+        let render_app = app.sub_app_mut(RenderApp);
         render_app
             .init_resource::<FontTextureCache>()
             .init_resource::<ExtractedFonts>()
diff --git a/kayak_render_macros/src/lib.rs b/kayak_render_macros/src/lib.rs
index 9706adc8d64fb2869570b1e500b2d156154b0137..f04c8488c6e9b6d9826dc41a6425ebcea147ba5a 100644
--- a/kayak_render_macros/src/lib.rs
+++ b/kayak_render_macros/src/lib.rs
@@ -8,9 +8,9 @@ mod attribute;
 mod child;
 mod children;
 mod partial_eq;
+mod use_effect;
 mod widget;
 mod widget_attributes;
-mod use_effect;
 
 use function_component::WidgetArguments;
 use partial_eq::impl_dyn_partial_eq;
@@ -18,8 +18,8 @@ use proc_macro::TokenStream;
 use proc_macro_error::proc_macro_error;
 use quote::quote;
 use syn::{parse_macro_input, parse_quote};
-use widget::ConstructedWidget;
 use use_effect::UseEffect;
+use widget::ConstructedWidget;
 
 use crate::widget::Widget;
 
@@ -154,8 +154,21 @@ pub fn dyn_partial_eq(_: TokenStream, input: TokenStream) -> TokenStream {
 #[proc_macro]
 pub fn use_state(initial_state: TokenStream) -> TokenStream {
     let initial_state = parse_macro_input!(initial_state as syn::Expr);
+    let found_crate = proc_macro_crate::crate_name("kayak_core");
+    let kayak_core = if let Ok(found_crate) = found_crate {
+        match found_crate {
+            proc_macro_crate::FoundCrate::Itself => quote! { crate },
+            proc_macro_crate::FoundCrate::Name(name) => {
+                let ident = syn::Ident::new(&name, proc_macro2::Span::call_site());
+                quote!(#ident)
+            }
+        }
+    } else {
+        quote!(kayak_ui::core)
+    };
+
     let result = quote! {{
-        use kayak_core::{Bound, MutableBound};
+        use #kayak_core::{Bound, MutableBound};
         let state = context.create_state(#initial_state).unwrap();
         let cloned_state = state.clone();
         let set_state = move |value| {