diff --git a/.gitmodules b/.gitmodules
index 2334931..c0205e7 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,4 +1,3 @@
-[submodule "include/c_cpp_aliases"]
-	path = include/c_cpp_aliases
-	url = https://git.thewizardapprentice.com/abdelrahman/c-cpp-aliases.git
-	branch = main
+[submodule "intern/wapp"]
+	path = intern/wapp
+	url = https://git.thewizardapprentice.com/abdelrahman/wizapp-stdlib.git
diff --git a/compile b/compile
index 0f40c13..1a38627 100755
--- a/compile
+++ b/compile
@@ -1,7 +1,10 @@
 #!/bin/bash
 
+WAPP_INCLUDE="$(find ./intern/wapp/src -type d | xargs -I{} echo -n "-I{} ")"
+WAPP_SRC="$(find ./intern/wapp/src -type f -name "*.c" | xargs -I{} echo -n "{} ")"
+
 CC=clang
-CFLAGS="-g -Wall -Werror -pedantic -Iinclude $(pkg-config --cflags sdl2)"
+CFLAGS="-g -Wall -Werror -pedantic -Iinclude $WAPP_INCLUDE $(pkg-config --cflags sdl2)"
 LIBS="$(pkg-config --libs sdl2) -lm"
 
 RAYTRACER_SRC="src/window/*.c \
@@ -17,6 +20,7 @@ RASTERISER_SRC="src/window/*.c \
 	src/list/*.c \
 	src/rasteriser/*.c \
 	src/math/*.c \
+	$WAPP_SRC \
 "
 
 BUILD=build_dir
diff --git a/include/c_cpp_aliases b/include/c_cpp_aliases
deleted file mode 160000
index 9f2e22e..0000000
--- a/include/c_cpp_aliases
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 9f2e22e6cfd3e90b155110f1914f46494a3b0e7c
diff --git a/include/math/math_utils.h b/include/math/math_utils.h
index d00f19d..9d41997 100644
--- a/include/math/math_utils.h
+++ b/include/math/math_utils.h
@@ -1,10 +1,16 @@
 #ifndef MATH_UTILS_H
 #define MATH_UTILS_H
 
-#include "c_cpp_aliases/aliases.h"
+#include "aliases.h"
 #include <math.h>
 
 #define RADIANS(DEG) (DEG * (f32)M_PI / 180.0f)
+#define swap(T, v1, v2)                                                        \
+  {                                                                            \
+    T tmp = v1;                                                                \
+    v1 = v2;                                                                   \
+    v2 = tmp;                                                                  \
+  }
 
 f32 clamp(f32 value, f32 min, f32 max);
 
diff --git a/include/raytracer/raytracer.h b/include/raytracer/raytracer.h
index 02da08e..3bfa8c5 100644
--- a/include/raytracer/raytracer.h
+++ b/include/raytracer/raytracer.h
@@ -1,7 +1,7 @@
 #ifndef RAYTRACER_H
 #define RAYTRACER_H
 
-#include "c_cpp_aliases/aliases.h"
+#include "aliases.h"
 #include "scene/scene.h"
 #include "vector/vec.h"
 #include "window/window.h"
diff --git a/include/scene/scene.h b/include/scene/scene.h
index b4f8477..f529eac 100644
--- a/include/scene/scene.h
+++ b/include/scene/scene.h
@@ -1,7 +1,7 @@
 #ifndef SCENE_H
 #define SCENE_H
 
-#include "c_cpp_aliases/aliases.h"
+#include "aliases.h"
 #include "window/window.h"
 
 typedef struct {
diff --git a/include/vector/vec.h b/include/vector/vec.h
index a40c18f..3718f60 100644
--- a/include/vector/vec.h
+++ b/include/vector/vec.h
@@ -1,7 +1,7 @@
 #ifndef VEC_H
 #define VEC_H
 
-#include "c_cpp_aliases/aliases.h"
+#include "aliases.h"
 
 typedef struct {
   i32 x;
@@ -33,12 +33,6 @@ typedef struct {
 #define vec_dot(T, v1, v2) vec_dot_##T(v1, v2)
 #define vec_magnitude(T, v) vec_magnitude_##T(v)
 #define vec_unit(T, v) vec_unit_##T(v)
-#define vec_swap(T, v1, v2)                                                    \
-  {                                                                            \
-    T tmp = v1;                                                                \
-    v1 = v2;                                                                   \
-    v2 = tmp;                                                                  \
-  }
 
 vec2i_t vec_add_vec2i_t(vec2i_t v1, vec2i_t v2);
 vec2i_t vec_sub_vec2i_t(vec2i_t v1, vec2i_t v2);
diff --git a/intern/wapp b/intern/wapp
new file mode 160000
index 0000000..8ed372d
--- /dev/null
+++ b/intern/wapp
@@ -0,0 +1 @@
+Subproject commit 8ed372d9388b65dd4d3651f8850a7a1f08d984de
diff --git a/src/math/math_utils.c b/src/math/math_utils.c
index 6307718..eea02ab 100644
--- a/src/math/math_utils.c
+++ b/src/math/math_utils.c
@@ -1,5 +1,5 @@
 #include "math/math_utils.h"
-#include "c_cpp_aliases/aliases.h"
+#include "aliases.h"
 
 f32 clamp(f32 value, f32 min, f32 max) {
   if (value < min) {
diff --git a/src/raytracer/main.c b/src/raytracer/main.c
index 5da8bcb..554853c 100644
--- a/src/raytracer/main.c
+++ b/src/raytracer/main.c
@@ -1,4 +1,4 @@
-#include "c_cpp_aliases/aliases.h"
+#include "aliases.h"
 #include "raytracer/raytracer.h"
 #include "scene/scene.h"
 #include "vector/vec.h"
diff --git a/src/raytracer/raytracer.c b/src/raytracer/raytracer.c
index 0c446fe..08b3c82 100644
--- a/src/raytracer/raytracer.c
+++ b/src/raytracer/raytracer.c
@@ -1,5 +1,5 @@
 #include "raytracer/raytracer.h"
-#include "c_cpp_aliases/aliases.h"
+#include "aliases.h"
 #include "vector/vec.h"
 #include "window/window.h"
 #include <math.h>
diff --git a/src/scene/scene.c b/src/scene/scene.c
index e1ceefe..2f200ca 100644
--- a/src/scene/scene.c
+++ b/src/scene/scene.c
@@ -1,5 +1,5 @@
 #include "scene/scene.h"
-#include "c_cpp_aliases/aliases.h"
+#include "aliases.h"
 #include "misc/misc_utils.h"
 
 internal const sphere_t spheres[] = {
diff --git a/src/window/window.c b/src/window/window.c
index 962bbcd..7fd7d8f 100644
--- a/src/window/window.c
+++ b/src/window/window.c
@@ -1,5 +1,5 @@
 #include "window/window.h"
-#include "c_cpp_aliases/aliases.h"
+#include "aliases.h"
 #include "math/math_utils.h"
 #include "vector/vec.h"
 #include <SDL2/SDL.h>