diff --git a/assets/games/liminal/CMakeLists.txt b/assets/games/liminal/CMakeLists.txt
new file mode 100644
index 00000000..94d64003
--- /dev/null
+++ b/assets/games/liminal/CMakeLists.txt
@@ -0,0 +1,9 @@
+# Copyright (c) 2023 Dominic Masters
+# 
+# This software is released under the MIT License.
+# https://opensource.org/licenses/MIT
+
+include("${CMAKE_CURRENT_LIST_DIR}/fonts/CMakeLists.txt")
+include("${CMAKE_CURRENT_LIST_DIR}/prefabs/CMakeLists.txt")
+include("${CMAKE_CURRENT_LIST_DIR}/scenes/CMakeLists.txt")
+include("${CMAKE_CURRENT_LIST_DIR}/textures/CMakeLists.txt")
\ No newline at end of file
diff --git a/assets/games/liminal/fonts/CMakeLists.txt b/assets/games/liminal/fonts/CMakeLists.txt
new file mode 100644
index 00000000..5cae8a2b
--- /dev/null
+++ b/assets/games/liminal/fonts/CMakeLists.txt
@@ -0,0 +1,11 @@
+# Copyright (c) 2023 Dominic Masters
+# 
+# This software is released under the MIT License.
+# https://opensource.org/licenses/MIT
+
+tool_truetype(font_main
+  REGULAR=${CMAKE_CURRENT_LIST_DIR}/Ysabeau-Medium.ttf
+  BOLD=${CMAKE_CURRENT_LIST_DIR}/Ysabeau-SemiBold.ttf
+  ITALICS=${CMAKE_CURRENT_LIST_DIR}/Ysabeau-MediumItalic.ttf
+  BOLD_ITALICS=${CMAKE_CURRENT_LIST_DIR}/Ysabeau-SemiBoldItalic.ttf
+)
\ No newline at end of file
diff --git a/assets/games/liminal/prefabs/CMakeLists.txt b/assets/games/liminal/prefabs/CMakeLists.txt
new file mode 100644
index 00000000..6445bbad
--- /dev/null
+++ b/assets/games/liminal/prefabs/CMakeLists.txt
@@ -0,0 +1,7 @@
+# Copyright (c) 2023 Dominic Masters
+# 
+# This software is released under the MIT License.
+# https://opensource.org/licenses/MIT
+
+tool_prefab(${CMAKE_CURRENT_LIST_DIR}/EthPrefab.xml)
+tool_prefab(${CMAKE_CURRENT_LIST_DIR}/VNTextbox.xml)
\ No newline at end of file
diff --git a/assets/games/liminal/prefabs/EthPrefab.xml b/assets/games/liminal/prefabs/EthPrefab.xml
index f706c104..aaffb9e6 100644
--- a/assets/games/liminal/prefabs/EthPrefab.xml
+++ b/assets/games/liminal/prefabs/EthPrefab.xml
@@ -1,49 +1,43 @@
 
-  
-  
+  
+  
+
+  
+  
 
   - 
     
     
-    
-    
+    
+    
   
 
 
   - 
     
-    
-    
-    
+    
+    
+    
   
 
 
   
     TilesetGrid gridFace;
     TilesetGrid gridBody;
-    StateProperty<float_t> alpha;
+    StateProperty<int32_t> faceTile;
   
 
   
-    alpha = 0.0f;
-
-    this->gridFace = TilesetGrid(
-      1, 9,
-      faceTexture->texture.getWidth(), faceTexture->texture.getHeight(),
-      0, 0,
-      0, 0
-    );
+    gridFace = TilesetGrid(faceDayHappy->texture, 1, 1);
     faceSprite->tileset = &gridFace;
 
-    this->gridBody = TilesetGrid(
-      1, 5,
-      bodyTexture->texture.getWidth(), bodyTexture->texture.getHeight(),
-      0, 0,
-      0, 0
-    );
+    gridBody = TilesetGrid(poseDayBack->texture, 1, 1);
     bodySprite->tileset = &gridBody;
 
     useEffect([&]{
-      this->faceMaterial->color.a = alpha;
-      this->bodyMaterial->color.a = alpha;
-    }, alpha);
+      faceMaterial->texture = (
+        faceTile == 0 ? &faceDayHappy->texture :
+        faceTile == 1 ? &faceDayAnger->texture :
+        nullptr
+      );
+    }, faceTile)();
   
 
\ No newline at end of file
diff --git a/assets/games/liminal/scenes/CMakeLists.txt b/assets/games/liminal/scenes/CMakeLists.txt
new file mode 100644
index 00000000..2c80d7e9
--- /dev/null
+++ b/assets/games/liminal/scenes/CMakeLists.txt
@@ -0,0 +1,7 @@
+# Copyright (c) 2023 Dominic Masters
+# 
+# This software is released under the MIT License.
+# https://opensource.org/licenses/MIT
+
+tool_scene(${CMAKE_CURRENT_LIST_DIR}/SceneBase.xml)
+tool_vnscene(${CMAKE_CURRENT_LIST_DIR}/Scene1Prologue0.xml)
\ No newline at end of file
diff --git a/assets/games/liminal/scenes/Scene1Prologue0.xml b/assets/games/liminal/scenes/Scene1Prologue0.xml
index 6188d913..15c156bc 100644
--- a/assets/games/liminal/scenes/Scene1Prologue0.xml
+++ b/assets/games/liminal/scenes/Scene1Prologue0.xml
@@ -4,20 +4,19 @@
       There is a bucket.
     
 
-    
+    
 
     
       It sways above your head like the mouth of a god. You are on Angelwood's best stage, and they are cheering for you, calling you their Queen, their Prom Queen.
     
 
-    
+    
 
     
       And you are dead soon.
     
 
-    
+    
 
     
       It's Prom Day. The metal bucket is swaying. Over you. Drenching your white pristine dress in guts and gore red. They aren't cheering anymore. They're gasping. But not screaming: oh, no, not in respectable Angelwood.
diff --git a/assets/games/liminal/scenes/SceneBase.xml b/assets/games/liminal/scenes/SceneBase.xml
index 51ae2f00..41d6745e 100644
--- a/assets/games/liminal/scenes/SceneBase.xml
+++ b/assets/games/liminal/scenes/SceneBase.xml
@@ -6,9 +6,8 @@
    
   
   - 
-  
+  
     
-    
     
   
 
 
diff --git a/assets/games/liminal/textures/CMakeLists.txt b/assets/games/liminal/textures/CMakeLists.txt
new file mode 100644
index 00000000..e80f5ffa
--- /dev/null
+++ b/assets/games/liminal/textures/CMakeLists.txt
@@ -0,0 +1,12 @@
+# Copyright (c) 2023 Dominic Masters
+# 
+# This software is released under the MIT License.
+# https://opensource.org/licenses/MIT
+
+set(LIMINIAL_CHARACTER_SCALE 1.0)
+
+include("${CMAKE_CURRENT_LIST_DIR}/eth/CMakeLists.txt")
+
+tool_texture(texture_border
+  FILE=${CMAKE_CURRENT_LIST_DIR}/texture_test.png
+)
\ No newline at end of file
diff --git a/assets/games/liminal/textures/eth/CMakeLists.txt b/assets/games/liminal/textures/eth/CMakeLists.txt
new file mode 100644
index 00000000..a44f1334
--- /dev/null
+++ b/assets/games/liminal/textures/eth/CMakeLists.txt
@@ -0,0 +1,7 @@
+# Copyright (c) 2023 Dominic Masters
+# 
+# This software is released under the MIT License.
+# https://opensource.org/licenses/MIT
+
+include("${CMAKE_CURRENT_LIST_DIR}/faces/CMakeLists.txt")
+include("${CMAKE_CURRENT_LIST_DIR}/poses/CMakeLists.txt")
\ No newline at end of file
diff --git a/assets/games/liminal/textures/eth/faces/CMakeLists.txt b/assets/games/liminal/textures/eth/faces/CMakeLists.txt
new file mode 100644
index 00000000..a1310376
--- /dev/null
+++ b/assets/games/liminal/textures/eth/faces/CMakeLists.txt
@@ -0,0 +1,50 @@
+# Copyright (c) 2023 Dominic Masters
+# 
+# This software is released under the MIT License.
+# https://opensource.org/licenses/MIT
+
+
+tool_texture(texture_eth_face_day_anger
+  FILE="${CMAKE_CURRENT_LIST_DIR}/anger.png"
+  SCALE=${LIMINIAL_CHARACTER_SCALE}
+)
+
+tool_texture(texture_eth_face_day_confused
+  FILE="${CMAKE_CURRENT_LIST_DIR}/confused.png"
+  SCALE=${LIMINIAL_CHARACTER_SCALE}
+)
+
+tool_texture(texture_eth_face_day_eyeroll
+  FILE="${CMAKE_CURRENT_LIST_DIR}/eyeroll.png"
+  SCALE=${LIMINIAL_CHARACTER_SCALE}
+)
+
+tool_texture(texture_eth_face_day_fear
+  FILE="${CMAKE_CURRENT_LIST_DIR}/fear.png"
+  SCALE=${LIMINIAL_CHARACTER_SCALE}
+)
+
+tool_texture(texture_eth_face_day_happy
+  FILE="${CMAKE_CURRENT_LIST_DIR}/happy.png"
+  SCALE=${LIMINIAL_CHARACTER_SCALE}
+)
+
+tool_texture(texture_eth_face_day_haughty
+  FILE="${CMAKE_CURRENT_LIST_DIR}/haughty.png"
+  SCALE=${LIMINIAL_CHARACTER_SCALE}
+)
+
+tool_texture(texture_eth_face_day_neutral
+  FILE="${CMAKE_CURRENT_LIST_DIR}/neutral.png"
+  SCALE=${LIMINIAL_CHARACTER_SCALE}
+)
+
+tool_texture(texture_eth_face_day_sad
+  FILE="${CMAKE_CURRENT_LIST_DIR}/sad.png"
+  SCALE=${LIMINIAL_CHARACTER_SCALE}
+)
+
+tool_texture(texture_eth_face_day_surprised
+  FILE="${CMAKE_CURRENT_LIST_DIR}/surprised.png"
+  SCALE=${LIMINIAL_CHARACTER_SCALE}
+)
\ No newline at end of file
diff --git a/assets/games/liminal/textures/eth/faces/anger.png b/assets/games/liminal/textures/eth/faces/anger.png
new file mode 100644
index 00000000..8b494719
Binary files /dev/null and b/assets/games/liminal/textures/eth/faces/anger.png differ
diff --git a/assets/games/liminal/textures/eth/faces/confused.png b/assets/games/liminal/textures/eth/faces/confused.png
new file mode 100644
index 00000000..722e67ba
Binary files /dev/null and b/assets/games/liminal/textures/eth/faces/confused.png differ
diff --git a/assets/games/liminal/textures/eth/faces/eyeroll.png b/assets/games/liminal/textures/eth/faces/eyeroll.png
new file mode 100644
index 00000000..6c67b929
Binary files /dev/null and b/assets/games/liminal/textures/eth/faces/eyeroll.png differ
diff --git a/assets/games/liminal/textures/eth/faces/fear.png b/assets/games/liminal/textures/eth/faces/fear.png
new file mode 100644
index 00000000..bd767821
Binary files /dev/null and b/assets/games/liminal/textures/eth/faces/fear.png differ
diff --git a/assets/games/liminal/textures/eth/faces/happy.png b/assets/games/liminal/textures/eth/faces/happy.png
new file mode 100644
index 00000000..dff9735c
Binary files /dev/null and b/assets/games/liminal/textures/eth/faces/happy.png differ
diff --git a/assets/games/liminal/textures/eth/faces/haughty.png b/assets/games/liminal/textures/eth/faces/haughty.png
new file mode 100644
index 00000000..a9dbfebe
Binary files /dev/null and b/assets/games/liminal/textures/eth/faces/haughty.png differ
diff --git a/assets/games/liminal/textures/eth/faces/neutral.png b/assets/games/liminal/textures/eth/faces/neutral.png
new file mode 100644
index 00000000..a2267f7c
Binary files /dev/null and b/assets/games/liminal/textures/eth/faces/neutral.png differ
diff --git a/assets/games/liminal/textures/eth/faces/sad.png b/assets/games/liminal/textures/eth/faces/sad.png
new file mode 100644
index 00000000..debaf503
Binary files /dev/null and b/assets/games/liminal/textures/eth/faces/sad.png differ
diff --git a/assets/games/liminal/textures/eth/faces/surprised.png b/assets/games/liminal/textures/eth/faces/surprised.png
new file mode 100644
index 00000000..e34490ec
Binary files /dev/null and b/assets/games/liminal/textures/eth/faces/surprised.png differ
diff --git a/assets/games/liminal/textures/eth/faces_day.png b/assets/games/liminal/textures/eth/faces_day.png
deleted file mode 100644
index 60983fd8..00000000
Binary files a/assets/games/liminal/textures/eth/faces_day.png and /dev/null differ
diff --git a/assets/games/liminal/textures/eth/faces_day_alt.png b/assets/games/liminal/textures/eth/faces_day_alt.png
deleted file mode 100644
index 7b433a06..00000000
Binary files a/assets/games/liminal/textures/eth/faces_day_alt.png and /dev/null differ
diff --git a/assets/games/liminal/textures/eth/faces_night.png b/assets/games/liminal/textures/eth/faces_night.png
deleted file mode 100644
index ad3b4416..00000000
Binary files a/assets/games/liminal/textures/eth/faces_night.png and /dev/null differ
diff --git a/assets/games/liminal/textures/eth/faces_night_alt.png b/assets/games/liminal/textures/eth/faces_night_alt.png
deleted file mode 100644
index 3071a6aa..00000000
Binary files a/assets/games/liminal/textures/eth/faces_night_alt.png and /dev/null differ
diff --git a/assets/games/liminal/textures/eth/poses/CMakeLists.txt b/assets/games/liminal/textures/eth/poses/CMakeLists.txt
new file mode 100644
index 00000000..01b891ec
--- /dev/null
+++ b/assets/games/liminal/textures/eth/poses/CMakeLists.txt
@@ -0,0 +1,13 @@
+# Copyright (c) 2023 Dominic Masters
+# 
+# This software is released under the MIT License.
+# https://opensource.org/licenses/MIT
+
+tool_texture(texture_eth_pose_day_front
+FILE="${CMAKE_CURRENT_LIST_DIR}/day_front.png"
+  SCALE=${LIMINIAL_CHARACTER_SCALE}
+)
+tool_texture(texture_eth_pose_day_back
+  FILE="${CMAKE_CURRENT_LIST_DIR}/day_back.png"
+  SCALE=${LIMINIAL_CHARACTER_SCALE}
+)
\ No newline at end of file
diff --git a/assets/games/liminal/textures/eth/poses/day_back.png b/assets/games/liminal/textures/eth/poses/day_back.png
new file mode 100644
index 00000000..5628cb2b
Binary files /dev/null and b/assets/games/liminal/textures/eth/poses/day_back.png differ
diff --git a/assets/games/liminal/textures/eth/poses/day_cross.png b/assets/games/liminal/textures/eth/poses/day_cross.png
new file mode 100644
index 00000000..70506811
Binary files /dev/null and b/assets/games/liminal/textures/eth/poses/day_cross.png differ
diff --git a/assets/games/liminal/textures/eth/poses/day_front.png b/assets/games/liminal/textures/eth/poses/day_front.png
new file mode 100644
index 00000000..1b3648ca
Binary files /dev/null and b/assets/games/liminal/textures/eth/poses/day_front.png differ
diff --git a/assets/games/liminal/textures/eth/poses/day_hips.png b/assets/games/liminal/textures/eth/poses/day_hips.png
new file mode 100644
index 00000000..63b0479c
Binary files /dev/null and b/assets/games/liminal/textures/eth/poses/day_hips.png differ
diff --git a/assets/games/liminal/textures/eth/poses/day_neutral.png b/assets/games/liminal/textures/eth/poses/day_neutral.png
new file mode 100644
index 00000000..f224b3c9
Binary files /dev/null and b/assets/games/liminal/textures/eth/poses/day_neutral.png differ
diff --git a/assets/games/liminal/textures/eth/poses_day.png b/assets/games/liminal/textures/eth/poses_day.png
deleted file mode 100644
index 09f2fbb1..00000000
Binary files a/assets/games/liminal/textures/eth/poses_day.png and /dev/null differ
diff --git a/assets/games/liminal/textures/eth/poses_day_alt.png b/assets/games/liminal/textures/eth/poses_day_alt.png
deleted file mode 100644
index d2d0b847..00000000
Binary files a/assets/games/liminal/textures/eth/poses_day_alt.png and /dev/null differ
diff --git a/assets/games/liminal/textures/eth/poses_night.png b/assets/games/liminal/textures/eth/poses_night.png
deleted file mode 100644
index 3ab96855..00000000
Binary files a/assets/games/liminal/textures/eth/poses_night.png and /dev/null differ
diff --git a/assets/games/liminal/textures/eth/poses_night_alt.png b/assets/games/liminal/textures/eth/poses_night_alt.png
deleted file mode 100644
index 9abd1465..00000000
Binary files a/assets/games/liminal/textures/eth/poses_night_alt.png and /dev/null differ
diff --git a/assets/games/liminal/textures/eth/test.png b/assets/games/liminal/textures/eth/test.png
deleted file mode 100644
index 6b51cac4..00000000
Binary files a/assets/games/liminal/textures/eth/test.png and /dev/null differ
diff --git a/assets/prefabs/ui/debug/FPSLabel.xml b/assets/prefabs/ui/debug/FPSLabel.xml
deleted file mode 100644
index 923eccbb..00000000
--- a/assets/prefabs/ui/debug/FPSLabel.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-  
-  
-
\ No newline at end of file
diff --git a/src/dawn/CMakeLists.txt b/src/dawn/CMakeLists.txt
index ca965749..5f90aa66 100644
--- a/src/dawn/CMakeLists.txt
+++ b/src/dawn/CMakeLists.txt
@@ -43,7 +43,4 @@ target_compile_definitions(${DAWN_TARGET_NAME}
   PUBLIC
     ${DAWN_SHARED_DEFINITIONS}
     DAWN_DEBUG_BUILD=${DAWN_DEBUG_BUILD}
-)
-
-# Common Prefabs
-tool_prefab("prefabs/ui/debug/FPSLabel.xml")
\ No newline at end of file
+)
\ No newline at end of file
diff --git a/src/dawn/display/Tileset.cpp b/src/dawn/display/Tileset.cpp
index e24f3d37..a9cc605f 100644
--- a/src/dawn/display/Tileset.cpp
+++ b/src/dawn/display/Tileset.cpp
@@ -18,6 +18,33 @@ TilesetGrid::TilesetGrid() {
 }
 
 
+
+TilesetGrid::TilesetGrid(
+  Texture *texture,
+  int32_t columns,
+  int32_t rows
+) : TilesetGrid(
+  columns, rows,
+  texture->getWidth(), texture->getHeight(),
+  0, 0,
+  0, 0
+) {
+
+}
+
+TilesetGrid::TilesetGrid(
+  Texture &texture,
+  int32_t columns,
+  int32_t rows
+) : TilesetGrid(
+  columns, rows,
+  texture.getWidth(), texture.getHeight(),
+  0, 0,
+  0, 0
+) {
+
+}
+
 TilesetGrid::TilesetGrid(
   int32_t columns,
   int32_t rows,
diff --git a/src/dawn/display/Tileset.hpp b/src/dawn/display/Tileset.hpp
index 4ffb33aa..34e69946 100644
--- a/src/dawn/display/Tileset.hpp
+++ b/src/dawn/display/Tileset.hpp
@@ -6,6 +6,7 @@
 #pragma once
 #include "dawnlibs.hpp"
 #include "assert/assert.hpp"
+#include "display/Texture.hpp"
 
 namespace Dawn {
   struct Tile {
@@ -53,6 +54,24 @@ namespace Dawn {
        * Constructs a new Tileset Grid.
        */
       TilesetGrid();
+
+      /**
+       * Constructs a new Tileset Grid from a texture.
+       * 
+       * @param texture Texture to use.
+       * @param columns Columns in the grid.
+       * @param rows Rows in the grid.
+       */
+      TilesetGrid(Texture *texture, int32_t columns, int32_t rows);
+
+      /**
+       * Constructs a new Tileset Grid from a texture.
+       * 
+       * @param texture Texture to use.
+       * @param columns Columns in the grid.
+       * @param rows Rows in the grid.
+       */
+      TilesetGrid(Texture &texture, int32_t columns, int32_t rows);
     
       /**
        * Constructs a new Tileset Grid.
diff --git a/src/dawnliminal/CMakeLists.txt b/src/dawnliminal/CMakeLists.txt
index 8efb7dbe..704d7567 100644
--- a/src/dawnliminal/CMakeLists.txt
+++ b/src/dawnliminal/CMakeLists.txt
@@ -17,39 +17,5 @@ add_subdirectory(game)
 add_subdirectory(save)
 
 # Assets
-set(LIMINAL_ASSETS_DIR ${DAWN_ASSETS_DIR}/games/liminal)
-
-set(LIMINIAL_CHARACTER_SCALE 0.2)
-tool_texture(texture_eth_faces_day
-  FILE="${LIMINAL_ASSETS_DIR}/textures/eth/faces_day.png"
-  SCALE=${LIMINIAL_CHARACTER_SCALE}
-)
-tool_texture(texture_eth_faces_night
-  FILE="${LIMINAL_ASSETS_DIR}/textures/eth/faces_night.png"
-  SCALE=${LIMINIAL_CHARACTER_SCALE}
-)
-tool_texture(texture_eth_poses_day
-  FILE="${LIMINAL_ASSETS_DIR}/textures/eth/poses_day.png"
-  SCALE=${LIMINIAL_CHARACTER_SCALE}
-)
-tool_texture(texture_eth_poses_night
-  FILE="${LIMINAL_ASSETS_DIR}/textures/eth/test.png"
-  SCALE=${LIMINIAL_CHARACTER_SCALE}
-)
-
-
-tool_texture(texture_border
-  FILE=${LIMINAL_ASSETS_DIR}/textures/texture_test.png
-)
-tool_truetype(font_main
-  REGULAR=${LIMINAL_ASSETS_DIR}/fonts/Ysabeau-Medium.ttf
-  BOLD=${LIMINAL_ASSETS_DIR}/fonts/Ysabeau-SemiBold.ttf
-  ITALICS=${LIMINAL_ASSETS_DIR}/fonts/Ysabeau-MediumItalic.ttf
-  BOLD_ITALICS=${LIMINAL_ASSETS_DIR}/fonts/Ysabeau-SemiBoldItalic.ttf
-)
-
-tool_scene(${LIMINAL_ASSETS_DIR}/scenes/SceneBase.xml)
-tool_vnscene(${LIMINAL_ASSETS_DIR}/scenes/Scene1Prologue0.xml)
-
-tool_prefab(${LIMINAL_ASSETS_DIR}/prefabs/EthPrefab.xml)
-tool_prefab(${LIMINAL_ASSETS_DIR}/prefabs/VNTextbox.xml)
\ No newline at end of file
+set(LIMINAL_ASSETS_DIR )
+include("${DAWN_ASSETS_SOURCE_DIR}/games/liminal/CMakeLists.txt")
\ No newline at end of file
diff --git a/src/dawnopengl/scene/components/display/material/SimpleTexturedMaterial.cpp b/src/dawnopengl/scene/components/display/material/SimpleTexturedMaterial.cpp
index 12dc52a1..801eeaa6 100644
--- a/src/dawnopengl/scene/components/display/material/SimpleTexturedMaterial.cpp
+++ b/src/dawnopengl/scene/components/display/material/SimpleTexturedMaterial.cpp
@@ -37,8 +37,8 @@ std::vector SimpleTexturedMaterial::getRenderPasses(IRend
   onlyPass.parameterBuffers[shader->bufferRenderPipeline] = &context.renderPipeline->shaderBuffer;
 
   onlyPass.renderFlags = (
-    RENDER_MANAGER_RENDER_FLAG_BLEND |
-    RENDER_MANAGER_RENDER_FLAG_DEPTH_TEST
+    RENDER_MANAGER_RENDER_FLAG_BLEND
+    // RENDER_MANAGER_RENDER_FLAG_DEPTH_TEST
   );
 
   if(this->texture != nullptr) {
diff --git a/src/dawnshared/util/Xml.cpp b/src/dawnshared/util/Xml.cpp
index cb5fa183..22d1dcc7 100644
--- a/src/dawnshared/util/Xml.cpp
+++ b/src/dawnshared/util/Xml.cpp
@@ -201,10 +201,17 @@ void Xml::load(Xml *xml, std::string data, size_t *j) {
               buffer += '\'';
             } else if(sc == "quot") {
               buffer += '"';
+            } else if(sc == "nbsp") {
+              buffer += ' ';
             } else {
-              // Unknown special char?
-              std::cout << "Unknown Special character: " << sc << std::endl;
-              assertUnreachable();
+              // Try parse as integer
+              if(sc.size() > 1 && sc[0] == '#') {
+                int code = std::stoi(sc.substr(1));
+                buffer += (char)code;
+              } else {
+                std::cout << "Unknown Special character: " << sc << std::endl;
+                assertUnreachable();
+              }
             }
           } else {
             buffer += c;
diff --git a/src/dawntools/prefabtool/CMakeLists.txt b/src/dawntools/prefabtool/CMakeLists.txt
index b1a0b818..b8115af4 100644
--- a/src/dawntools/prefabtool/CMakeLists.txt
+++ b/src/dawntools/prefabtool/CMakeLists.txt
@@ -48,7 +48,7 @@ function(tool_prefab in)
 
   STRING(REGEX REPLACE "[\.|\\|\/]" "-" prefab_name ${in})
   add_custom_target(prefab_${prefab_name}
-    COMMAND prefabtool --input="${DAWN_ASSETS_SOURCE_DIR}/${in}" --output="${DAWN_GENERATED_DIR}/generatedprefabs" --sources="${DAWN_SOURCES_DIR}"
+    COMMAND prefabtool --input="${in}" --output="${DAWN_GENERATED_DIR}/generatedprefabs" --sources="${DAWN_SOURCES_DIR}"
     COMMENT "Generating prefab from ${in}"
     DEPENDS ${DEPS}
   )
diff --git a/src/dawntools/scenetool/CMakeLists.txt b/src/dawntools/scenetool/CMakeLists.txt
index 8ae02b56..93cb94d7 100644
--- a/src/dawntools/scenetool/CMakeLists.txt
+++ b/src/dawntools/scenetool/CMakeLists.txt
@@ -49,7 +49,7 @@ function(tool_scene in)
 
   STRING(REGEX REPLACE "[\.|\\|\/]" "-" scene_name ${in})
   add_custom_target(scene_${scene_name}
-    COMMAND scenetool --input="${DAWN_ASSETS_SOURCE_DIR}/${in}" --output="${DAWN_GENERATED_DIR}/generatedscenes" --sources="${DAWN_SOURCES_DIR}"
+    COMMAND scenetool --input="${in}" --output="${DAWN_GENERATED_DIR}/generatedscenes" --sources="${DAWN_SOURCES_DIR}"
     COMMENT "Generating scene from ${in}"
     DEPENDS ${DEPS}
   )
diff --git a/src/dawntools/texturetool/CMakeLists.txt b/src/dawntools/texturetool/CMakeLists.txt
index 8c57f20e..4a598fa0 100644
--- a/src/dawntools/texturetool/CMakeLists.txt
+++ b/src/dawntools/texturetool/CMakeLists.txt
@@ -68,7 +68,7 @@ function(tool_texture target)
 
   add_custom_target(${target}
     COMMAND texturetool
-      --input="${DAWN_ASSETS_SOURCE_DIR}/${FILE}"
+      --input="${FILE}"
       --output="${DAWN_ASSETS_BUILD_DIR}/${target}"
       --wrapX="${WRAP_X}"
       --wrapY="${WRAP_Y}"
diff --git a/src/dawntools/truetypetool/CMakeLists.txt b/src/dawntools/truetypetool/CMakeLists.txt
index 960d3257..4a3bda50 100644
--- a/src/dawntools/truetypetool/CMakeLists.txt
+++ b/src/dawntools/truetypetool/CMakeLists.txt
@@ -53,19 +53,6 @@ function(tool_truetype target)
     set(DEPS truetypetool)
   endif()
 
-  if(DEFINED REGULAR)
-    set(REGULAR "${DAWN_ASSETS_SOURCE_DIR}/${REGULAR}")
-  endif()
-  if(DEFINED BOLD)
-    set(BOLD "${DAWN_ASSETS_SOURCE_DIR}/${BOLD}")
-  endif()
-  if(DEFINED ITALICS)
-    set(ITALICS "${DAWN_ASSETS_SOURCE_DIR}/${ITALICS}")
-  endif()
-  if(DEFINED BOLD_ITALICS)
-    set(BOLD_ITALICS "${DAWN_ASSETS_SOURCE_DIR}/${BOLD_ITALICS}")
-  endif()
-
   add_custom_target(${target}
     COMMAND truetypetool
       --output="${DAWN_ASSETS_BUILD_DIR}/${target}.truetype"
diff --git a/src/dawntools/util/generator/SceneAssetGenerator.cpp b/src/dawntools/util/generator/SceneAssetGenerator.cpp
index f8b47005..35d40d5b 100644
--- a/src/dawntools/util/generator/SceneAssetGenerator.cpp
+++ b/src/dawntools/util/generator/SceneAssetGenerator.cpp
@@ -10,6 +10,7 @@ using namespace Dawn;
 void SceneAssetGenerator::generate(
   std::map &assetMap,
   int32_t &assetNumber,
+  std::vector *publicProperties,
   std::vector *initBody,
   std::vector *assetsBody,
   struct SceneAsset *asset,
@@ -17,6 +18,7 @@ void SceneAssetGenerator::generate(
 ) {
   std::string assetType = "";
 
+  bool_t componentInit = true;
   if(asset->ref.empty()) {
     asset->usageName = "asset" + std::to_string(assetNumber++);
   } else {
@@ -40,6 +42,12 @@ void SceneAssetGenerator::generate(
       assertUnreachable();
   }
 
-  line(initBody, "auto " + asset->usageName + " = man->get<" + assetType + ">(\"" + asset->fileName + "\");", "");
+  if(!asset->ref.empty()) {
+    line(publicProperties, assetType + " *" + asset->usageName + " = nullptr;", "");
+    line(initBody, asset->usageName + " = man->get<" + assetType + ">(\"" + asset->fileName + "\");", "");
+  } else {
+    line(initBody, "auto " + asset->usageName + " = man->get<" + assetType + ">(\"" + asset->fileName + "\");", "");
+  }
+
   line(assetsBody, "assets.push_back(man->get<" + assetType + ">(\"" + asset->fileName + "\"));", "");
 }
\ No newline at end of file
diff --git a/src/dawntools/util/generator/SceneAssetGenerator.hpp b/src/dawntools/util/generator/SceneAssetGenerator.hpp
index 08eeb394..dbae2b27 100644
--- a/src/dawntools/util/generator/SceneAssetGenerator.hpp
+++ b/src/dawntools/util/generator/SceneAssetGenerator.hpp
@@ -13,6 +13,7 @@ namespace Dawn {
       static void generate(
         std::map &assetMap,
         int32_t &assetNumber,
+        std::vector *publicProperties,
         std::vector *initBody,
         std::vector *assetsBody,
         struct SceneAsset *asset,
diff --git a/src/dawntools/util/generator/SceneItemGenerator.cpp b/src/dawntools/util/generator/SceneItemGenerator.cpp
index 2679e5f6..54dce3fb 100644
--- a/src/dawntools/util/generator/SceneItemGenerator.cpp
+++ b/src/dawntools/util/generator/SceneItemGenerator.cpp
@@ -149,6 +149,7 @@ void SceneItemGenerator::generate(
     SceneAssetGenerator::generate(
       assetMap,
       assetNumber,
+      publicProperties,
       initBody,
       assetBody,
       &(*itAssets),
diff --git a/src/dawntools/vnscenetool/CMakeLists.txt b/src/dawntools/vnscenetool/CMakeLists.txt
index c0c43fe3..bf779c19 100644
--- a/src/dawntools/vnscenetool/CMakeLists.txt
+++ b/src/dawntools/vnscenetool/CMakeLists.txt
@@ -52,7 +52,7 @@ function(tool_vnscene in)
 
   STRING(REGEX REPLACE "[\.|\\|\/]" "-" scene_name ${in})
   add_custom_target(scene_${scene_name}
-    COMMAND vnscenetool --input="${DAWN_ASSETS_SOURCE_DIR}/${in}" --output="${DAWN_GENERATED_DIR}/generatedscenes"
+    COMMAND vnscenetool --input="${in}" --output="${DAWN_GENERATED_DIR}/generatedscenes"
     COMMENT "Generating vnscene from ${in}"
     DEPENDS ${DEPS}
   )