diff --git a/CMakeLists.txt b/CMakeLists.txt
index 56793cd1..be2c185e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -10,11 +10,8 @@ set(CMAKE_CXX_STANDARD 14)
 set(CMAKE_CXX_STANDARD_REQUIRED True)
 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/modules/")
 
-# Initialize Project First.
-project(Dawn
-  VERSION 1.0.0
-  LANGUAGES C CXX
-)
+# Variable Caches
+set(DAWN_CACHE_TARGET "dawn-target")
 
 # Set Common Build Variables
 set(DAWN_ROOT_DIR "${CMAKE_SOURCE_DIR}")
@@ -26,12 +23,17 @@ set(DAWN_ASSETS_BUILD_DIR "${DAWN_BUILD_DIR}/assets")
 set(DAWN_GENERATED_DIR "${DAWN_BUILD_DIR}/generated")
 set(DAWN_TEMP_DIR "${DAWN_BUILD_DIR}/temp")
 
-# Variable Caches
-set(DAWN_CACHE_TARGET "Target")
-
 # Add CMake Tools
 add_subdirectory(cmake)
 
+set(DAWN_BUILD_BINARY ${DAWN_BUILD_DIR}/src/${DAWN_BUILDING}/${DAWN_TARGET_NAME})
+
+# Initialize Project First.
+project(Dawn
+  VERSION 1.0.0
+  LANGUAGES C CXX
+)
+
 # Add Libraries
 add_subdirectory(lib)
 
diff --git a/cmake/targets/CMakeLists.txt b/cmake/targets/CMakeLists.txt
index 93698f07..6646e984 100644
--- a/cmake/targets/CMakeLists.txt
+++ b/cmake/targets/CMakeLists.txt
@@ -12,6 +12,8 @@ if(NOT DEFINED DAWN_BUILD_TARGET)
   endif()
 endif()
 
+set(DAWN_BUILD_TARGET "target-helloworld-vita")
+
 # Now validate we have a build target for real
 if(NOT DEFINED DAWN_BUILD_TARGET)
   message(FATAL_ERROR "You need to define a DAWN_BUILD_TARGET")
diff --git a/cmake/targets/target-helloworld-vita/CMakeLists.txt b/cmake/targets/target-helloworld-vita/CMakeLists.txt
new file mode 100644
index 00000000..8fb2231f
--- /dev/null
+++ b/cmake/targets/target-helloworld-vita/CMakeLists.txt
@@ -0,0 +1,21 @@
+# Copyright (c) 2023 Dominic Masters
+# 
+# This software is released under the MIT License.
+# https://opensource.org/licenses/MIT
+
+set(DAWN_BUILDING dawnhelloworld CACHE INTERNAL ${DAWN_CACHE_TARGET})
+set(DAWN_TARGET_VITA true CACHE INTERNAL ${DAWN_CACHE_TARGET})
+set(DAWN_BUILD_HOST_LIBS "" CACHE INTERNAL ${DAWN_CACHE_TARGET})
+set(DAWN_TARGET_NAME "HelloWorld" CACHE INTERNAL ${DAWN_CACHE_TARGET})
+
+# Properties
+set(DAWN_VITA_APP_NAME "Hello Vita" CACHE INTERNAL ${DAWN_CACHE_TARGET})
+set(DAWN_VITA_TITLEID  "DAWN00000" CACHE INTERNAL ${DAWN_CACHE_TARGET})
+set(DAWN_VITA_VERSION  "01.00" CACHE INTERNAL ${DAWN_CACHE_TARGET})
+
+# Toolchain
+if(DEFINED ENV{VITASDK})
+  set(CMAKE_TOOLCHAIN_FILE "$ENV{VITASDK}/share/vita.toolchain.cmake" CACHE INTERNAL ${DAWN_CACHE_TARGET})
+else()
+  message(FATAL_ERROR "Please define VITASDK to point to your SDK path!")
+endif()
\ No newline at end of file
diff --git a/cmake/targets/target-platformergame-win32-glfw/CMakeLists.txt b/cmake/targets/target-platformergame-win32-glfw/CMakeLists.txt
index e4d36e1e..49049e98 100644
--- a/cmake/targets/target-platformergame-win32-glfw/CMakeLists.txt
+++ b/cmake/targets/target-platformergame-win32-glfw/CMakeLists.txt
@@ -1,8 +1,9 @@
-# Copyright (c) 2022 Dominic Masters
-# 
-# This software is released under the MIT License.
-# https://opensource.org/licenses/MIT
-
-set(DAWN_BUILDING dawnplatformergame CACHE INTERNAL ${DAWN_CACHE_TARGET})
-set(DAWN_TARGET_WIN32 true CACHE INTERNAL ${DAWN_CACHE_TARGET})
-set(DAWN_TARGET_GLFW true CACHE INTERNAL ${DAWN_CACHE_TARGET})
\ No newline at end of file
+# Copyright (c) 2022 Dominic Masters
+# 
+# This software is released under the MIT License.
+# https://opensource.org/licenses/MIT
+
+set(DAWN_BUILDING dawnplatformergame CACHE INTERNAL ${DAWN_CACHE_TARGET})
+set(DAWN_TARGET_WIN32 true CACHE INTERNAL ${DAWN_CACHE_TARGET})
+set(DAWN_TARGET_GLFW true CACHE INTERNAL ${DAWN_CACHE_TARGET})
+set(DAWN_TARGET_NAME "PlatformerGame" CACHE INTERNAL ${DAWN_CACHE_TARGET})
\ No newline at end of file
diff --git a/cmake/targets/target-pokergame-linux64-glfw/CMakeLists.txt b/cmake/targets/target-pokergame-linux64-glfw/CMakeLists.txt
index c6854abc..f87856f4 100644
--- a/cmake/targets/target-pokergame-linux64-glfw/CMakeLists.txt
+++ b/cmake/targets/target-pokergame-linux64-glfw/CMakeLists.txt
@@ -1,8 +1,9 @@
-# Copyright (c) 2022 Dominic Masters
-# 
-# This software is released under the MIT License.
-# https://opensource.org/licenses/MIT
-
-set(DAWN_BUILDING dawnpokergame CACHE INTERNAL ${DAWN_CACHE_TARGET})
-set(DAWN_TARGET_LINUX64 true CACHE INTERNAL ${DAWN_CACHE_TARGET})
-set(DAWN_TARGET_GLFW true CACHE INTERNAL ${DAWN_CACHE_TARGET})
\ No newline at end of file
+# Copyright (c) 2022 Dominic Masters
+# 
+# This software is released under the MIT License.
+# https://opensource.org/licenses/MIT
+
+set(DAWN_BUILDING dawnpokergame CACHE INTERNAL ${DAWN_CACHE_TARGET})
+set(DAWN_TARGET_LINUX64 true CACHE INTERNAL ${DAWN_CACHE_TARGET})
+set(DAWN_TARGET_GLFW true CACHE INTERNAL ${DAWN_CACHE_TARGET})
+set(DAWN_TARGET_NAME "PlatformerGame" CACHE INTERNAL ${DAWN_CACHE_TARGET})
\ No newline at end of file
diff --git a/cmake/targets/target-pokergame-win32-glfw/CMakeLists.txt b/cmake/targets/target-pokergame-win32-glfw/CMakeLists.txt
index 7271c6db..8a507fff 100644
--- a/cmake/targets/target-pokergame-win32-glfw/CMakeLists.txt
+++ b/cmake/targets/target-pokergame-win32-glfw/CMakeLists.txt
@@ -1,8 +1,9 @@
-# Copyright (c) 2022 Dominic Masters
-# 
-# This software is released under the MIT License.
-# https://opensource.org/licenses/MIT
-
-set(DAWN_BUILDING dawnpokergame CACHE INTERNAL ${DAWN_CACHE_TARGET})
-set(DAWN_TARGET_WIN32 true CACHE INTERNAL ${DAWN_CACHE_TARGET})
-set(DAWN_TARGET_GLFW true CACHE INTERNAL ${DAWN_CACHE_TARGET})
\ No newline at end of file
+# Copyright (c) 2022 Dominic Masters
+# 
+# This software is released under the MIT License.
+# https://opensource.org/licenses/MIT
+
+set(DAWN_BUILDING dawnpokergame CACHE INTERNAL ${DAWN_CACHE_TARGET})
+set(DAWN_TARGET_WIN32 true CACHE INTERNAL ${DAWN_CACHE_TARGET})
+set(DAWN_TARGET_GLFW true CACHE INTERNAL ${DAWN_CACHE_TARGET})
+set(DAWN_TARGET_NAME "PokerGame" CACHE INTERNAL ${DAWN_CACHE_TARGET})
\ No newline at end of file
diff --git a/cmake/targets/target-pokergame-win32-sdl2/CMakeLists.txt b/cmake/targets/target-pokergame-win32-sdl2/CMakeLists.txt
index 5cb32aee..a8757c42 100644
--- a/cmake/targets/target-pokergame-win32-sdl2/CMakeLists.txt
+++ b/cmake/targets/target-pokergame-win32-sdl2/CMakeLists.txt
@@ -1,8 +1,9 @@
-# Copyright (c) 2022 Dominic Masters
-# 
-# This software is released under the MIT License.
-# https://opensource.org/licenses/MIT
-
-set(DAWN_BUILDING dawnpokergame CACHE INTERNAL ${DAWN_CACHE_TARGET})
-set(DAWN_TARGET_WIN32 true CACHE INTERNAL ${DAWN_CACHE_TARGET})
-set(DAWN_TARGET_SDL2 true CACHE INTERNAL ${DAWN_CACHE_TARGET})
\ No newline at end of file
+# Copyright (c) 2022 Dominic Masters
+# 
+# This software is released under the MIT License.
+# https://opensource.org/licenses/MIT
+
+set(DAWN_BUILDING dawnpokergame CACHE INTERNAL ${DAWN_CACHE_TARGET})
+set(DAWN_TARGET_WIN32 true CACHE INTERNAL ${DAWN_CACHE_TARGET})
+set(DAWN_TARGET_SDL2 true CACHE INTERNAL ${DAWN_CACHE_TARGET})
+set(DAWN_TARGET_NAME "PokerGame" CACHE INTERNAL ${DAWN_CACHE_TARGET})
\ No newline at end of file
diff --git a/cmake/targets/target-tictactoe-linux64-glfw/CMakeLists.txt b/cmake/targets/target-tictactoe-linux64-glfw/CMakeLists.txt
index 07a95c6e..d0f1b03f 100644
--- a/cmake/targets/target-tictactoe-linux64-glfw/CMakeLists.txt
+++ b/cmake/targets/target-tictactoe-linux64-glfw/CMakeLists.txt
@@ -5,4 +5,5 @@
 
 set(DAWN_BUILDING dawntictactoe CACHE INTERNAL ${DAWN_CACHE_TARGET})
 set(DAWN_TARGET_LINUX64 true CACHE INTERNAL ${DAWN_CACHE_TARGET})
-set(DAWN_TARGET_GLFW true CACHE INTERNAL ${DAWN_CACHE_TARGET})
\ No newline at end of file
+set(DAWN_TARGET_GLFW true CACHE INTERNAL ${DAWN_CACHE_TARGET})
+set(DAWN_TARGET_NAME "TicTacToe" CACHE INTERNAL ${DAWN_CACHE_TARGET})
\ No newline at end of file
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
index 473469e7..455c1816 100644
--- a/lib/CMakeLists.txt
+++ b/lib/CMakeLists.txt
@@ -1,31 +1,33 @@
-# Copyright (c) 2021 Dominic Msters
-# 
-# This software is released under the MIT License.
-# https://opensource.org/licenses/MIT
-
-# GLFW
-if(DAWN_TARGET_GLFW)
-  add_subdirectory(glad)
-  add_subdirectory(glfw)
-endif()
-
-# SDL
-if(DAWN_TARGET_SDL2)
-  add_subdirectory(glad)
-  add_subdirectory(SDL)
-endif()
-
-# GLM
-add_subdirectory(glm)
-
-# STB
-add_library(stb INTERFACE)
-target_include_directories(stb INTERFACE stb)
-
-# OpenAL
-set(LIBTYPE "STATIC")
-add_subdirectory(openal-soft)
-
-set(BUILD_TESTS OFF CACHE BOOL "Build tests" FORCE)
-set(BUILD_EXAMPLES OFF CACHE BOOL "Build examples" FORCE) 
-add_subdirectory(AudioFile)
\ No newline at end of file
+# Copyright (c) 2021 Dominic Msters
+# 
+# This software is released under the MIT License.
+# https://opensource.org/licenses/MIT
+
+# GLFW
+if(DAWN_TARGET_GLFW)
+  add_subdirectory(glad)
+  add_subdirectory(glfw)
+endif()
+
+# SDL
+if(DAWN_TARGET_SDL2)
+  add_subdirectory(glad)
+  add_subdirectory(SDL)
+endif()
+
+# GLM
+add_subdirectory(glm)
+
+# STB
+add_library(stb INTERFACE)
+target_include_directories(stb INTERFACE stb)
+
+# OpenAL
+if(DANW_TARGET_OPENAL)
+  set(LIBTYPE "STATIC")
+  add_subdirectory(openal-soft)
+
+  set(BUILD_TESTS OFF CACHE BOOL "Build tests" FORCE)
+  set(BUILD_EXAMPLES OFF CACHE BOOL "Build examples" FORCE) 
+  add_subdirectory(AudioFile)
+endif()
\ No newline at end of file
diff --git a/lib/SDL b/lib/SDL
index 87a83787..c9aec268 160000
--- a/lib/SDL
+++ b/lib/SDL
@@ -1 +1 @@
-Subproject commit 87a83787a3a0a9922b02b35ba809d9da86930fc8
+Subproject commit c9aec268fa7f892e183219683160599a4a2b86db
diff --git a/lib/openal-soft b/lib/openal-soft
index d66107e9..fde74453 160000
--- a/lib/openal-soft
+++ b/lib/openal-soft
@@ -1 +1 @@
-Subproject commit d66107e9f008770b48f0df4fce041ee3e501e1e8
+Subproject commit fde74453a62a1ce4b5efaac0ec1835b9f5731e25
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index ecdffda2..42438c00 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -13,7 +13,7 @@ set(
 add_subdirectory(dawnshared)
 
 # Include tools
-add_subdirectory(dawntools)
+# add_subdirectory(dawntools)
 
 # Change what we are building. Pulled from the cmake/targets dir.
 add_subdirectory(${DAWN_BUILDING})
@@ -24,13 +24,15 @@ if(NOT DEFINED DAWN_TARGET_NAME)
 endif()
 
 # Add in base library
-add_subdirectory(dawn)
+# add_subdirectory(dawn)
 
 # Compile entry targets
 if(DAWN_TARGET_WIN32)
   add_subdirectory(dawnwin32)
 elseif(DAWN_TARGET_LINUX64)
   add_subdirectory(dawnlinux64)
+elseif(DAWN_TARGET_VITA)
+  add_subdirectory(dawnvita)
 else()
   message(FATAL_ERROR "You need to define an entry target")
 endif()
@@ -52,11 +54,12 @@ if(DAWN_TARGET_SDL2)
   add_subdirectory(dawnopengl)
 endif()
 
-add_subdirectory(dawnopenal)
+if(false)
+  add_subdirectory(dawnopenal)
+endif()
 
 # Late definitions, used by tools
 if(NOT DAWN_TARGET_DEPENDENCIES_LAST)
-  # message(FATAL_ERROR "List empty")
 else()
   add_dependencies(${DAWN_TARGET_NAME} ${DAWN_TARGET_DEPENDENCIES_LAST})
 endif()
\ No newline at end of file
diff --git a/src/dawnhelloworld/CMakeLists.txt b/src/dawnhelloworld/CMakeLists.txt
new file mode 100644
index 00000000..0ffcd48a
--- /dev/null
+++ b/src/dawnhelloworld/CMakeLists.txt
@@ -0,0 +1,19 @@
+# Copyright (c) 2023 Dominic Masters
+# 
+# This software is released under the MIT License.
+# https://opensource.org/licenses/MIT
+
+# Add Common Engine Parts
+set(DAWN_VISUAL_NOVEL true CACHE INTERNAL ${DAWN_CACHE_TARGET})
+
+# Build Project
+add_executable(${DAWN_TARGET_NAME})
+
+# Includes
+target_include_directories(${DAWN_TARGET_NAME}
+  PUBLIC
+    ${CMAKE_CURRENT_LIST_DIR}
+)
+
+# Subdirs
+# add_subdirectory(game)
\ No newline at end of file
diff --git a/src/dawnhelloworld/HelloWorld.cpp b/src/dawnhelloworld/HelloWorld.cpp
new file mode 100644
index 00000000..55bff476
--- /dev/null
+++ b/src/dawnhelloworld/HelloWorld.cpp
@@ -0,0 +1,6 @@
+// Copyright (c) 2023 Dominic Masters
+// 
+// This software is released under the MIT License.
+// https://opensource.org/licenses/MIT
+
+#pragma once
diff --git a/src/dawnplatformergame/CMakeLists.txt b/src/dawnplatformergame/CMakeLists.txt
index ff479d63..7c5629d6 100644
--- a/src/dawnplatformergame/CMakeLists.txt
+++ b/src/dawnplatformergame/CMakeLists.txt
@@ -1,33 +1,30 @@
-# Copyright (c) 2022 Dominic Masters
-# 
-# This software is released under the MIT License.
-# https://opensource.org/licenses/MIT
-
-# Set up the executable
-set(DAWN_TARGET_NAME "PlatformerGame" CACHE INTERNAL ${DAWN_CACHE_TARGET})
-
-# Build Project
-add_executable(${DAWN_TARGET_NAME})
-
-# Includes
-target_include_directories(${DAWN_TARGET_NAME}
-  PUBLIC
-    ${CMAKE_CURRENT_LIST_DIR}
-)
-
-# Subdirs
-add_subdirectory(components)
-add_subdirectory(game)
-add_subdirectory(save)
-
-# Assets
-set(DIR_GAME_ASSETS games/platformergame)
-tool_language(language_en ${DIR_GAME_ASSETS}/locale/en.csv)
-tool_texture(texture_test texture_test.png)
-tool_tileset(tileset_aqua texture_aqua ${DIR_GAME_ASSETS}/tileset/s4m_ur4i_minivania_tilemap_aqua.png 32 32)
-
-add_dependencies(${DAWN_TARGET_NAME}
-  language_en
-  texture_test
-  tileset_aqua
+# Copyright (c) 2022 Dominic Masters
+# 
+# This software is released under the MIT License.
+# https://opensource.org/licenses/MIT
+
+# Build Project
+add_executable(${DAWN_TARGET_NAME})
+
+# Includes
+target_include_directories(${DAWN_TARGET_NAME}
+  PUBLIC
+    ${CMAKE_CURRENT_LIST_DIR}
+)
+
+# Subdirs
+add_subdirectory(components)
+add_subdirectory(game)
+add_subdirectory(save)
+
+# Assets
+set(DIR_GAME_ASSETS games/platformergame)
+tool_language(language_en ${DIR_GAME_ASSETS}/locale/en.csv)
+tool_texture(texture_test texture_test.png)
+tool_tileset(tileset_aqua texture_aqua ${DIR_GAME_ASSETS}/tileset/s4m_ur4i_minivania_tilemap_aqua.png 32 32)
+
+add_dependencies(${DAWN_TARGET_NAME}
+  language_en
+  texture_test
+  tileset_aqua
 )
\ No newline at end of file
diff --git a/src/dawnpokergame/CMakeLists.txt b/src/dawnpokergame/CMakeLists.txt
index 96a3a3ea..b9e995fe 100644
--- a/src/dawnpokergame/CMakeLists.txt
+++ b/src/dawnpokergame/CMakeLists.txt
@@ -3,9 +3,6 @@
 # This software is released under the MIT License.
 # https://opensource.org/licenses/MIT
 
-# Set up the executable
-set(DAWN_TARGET_NAME "PokerGame" CACHE INTERNAL ${DAWN_CACHE_TARGET})
-
 # Add Common Engine Parts
 set(DAWN_VISUAL_NOVEL true CACHE INTERNAL ${DAWN_CACHE_TARGET})
 
diff --git a/src/dawntictactoe/CMakeLists.txt b/src/dawntictactoe/CMakeLists.txt
index 387a9541..76276ba9 100644
--- a/src/dawntictactoe/CMakeLists.txt
+++ b/src/dawntictactoe/CMakeLists.txt
@@ -3,9 +3,6 @@
 # This software is released under the MIT License.
 # https://opensource.org/licenses/MIT
 
-# Set up the executable
-set(DAWN_TARGET_NAME "TicTacToe" CACHE INTERNAL ${DAWN_CACHE_TARGET})
-
 # Build Project
 add_executable(${DAWN_TARGET_NAME})
 
diff --git a/src/dawnvita/CMakeLists.txt b/src/dawnvita/CMakeLists.txt
new file mode 100644
index 00000000..3e89a352
--- /dev/null
+++ b/src/dawnvita/CMakeLists.txt
@@ -0,0 +1,48 @@
+# Copyright (c) 2022 Dominic Masters
+# 
+# This software is released under the MIT License.
+# https://opensource.org/licenses/MIT
+
+# Libraries
+target_link_libraries(${DAWN_TARGET_NAME}
+  SceLibKernel_stub
+  SceDisplay_stub
+  stdc++
+  pthread
+)
+
+# Includes
+target_include_directories(${DAWN_TARGET_NAME}
+  PUBLIC
+    ${CMAKE_CURRENT_LIST_DIR}
+)
+
+# Platform variables
+
+# Subdirs
+add_subdirectory(host)
+
+# Toolchain
+include("$ENV{VITASDK}/share/vita.cmake" REQUIRED)
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu11" CACHE INTERNAL ${DAWN_CACHE_TARGET})
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11" CACHE INTERNAL ${DAWN_CACHE_TARGET})
+set(VITA_MKSFOEX_FLAGS "${VITA_MKSFOEX_FLAGS} -d PARENTAL_LEVEL=1" CACHE INTERNAL ${DAWN_CACHE_TARGET})
+
+# VPK Packaging
+if(NOT DEFINED DAWN_VITA_APP_NAME)
+message(FATAL_ERROR "Please define DAWN_VITA_APP_NAME in your target.")
+endif()
+if(NOT DEFINED DAWN_VITA_TITLEID)
+  message(FATAL_ERROR "Please define DAWN_VITA_TITLEID in your target.")
+endif()
+if(NOT DEFINED DAWN_VITA_VERSION)
+  message(FATAL_ERROR "Please define DAWN_VITA_VERSION in your target.")
+endif()
+
+# The Vita SDK actually assumes that the binary is in the same dir as the build,
+# so we actually need to hijack this and point to a file instead.
+vita_create_self(${DAWN_TARGET_NAME}.self ${DAWN_BUILD_BINARY})
+vita_create_vpk(${DAWN_TARGET_NAME}.vpk ${DAWN_VITA_TITLEID} ${DAWN_TARGET_NAME}.self
+  VERSION ${DAWN_VITA_VERSION}
+  NAME ${DAWN_VITA_APP_NAME}
+)
\ No newline at end of file
diff --git a/src/dawnvita/host/CMakeLists.txt b/src/dawnvita/host/CMakeLists.txt
new file mode 100644
index 00000000..da9b940a
--- /dev/null
+++ b/src/dawnvita/host/CMakeLists.txt
@@ -0,0 +1,10 @@
+# Copyright (c) 2023 Dominic Masters
+# 
+# This software is released under the MIT License.
+# https://opensource.org/licenses/MIT
+
+# Sources
+target_sources(${DAWN_TARGET_NAME}
+  PRIVATE
+    DawnHostVita.cpp
+)
\ No newline at end of file
diff --git a/src/dawnvita/host/DawnHostVita.cpp b/src/dawnvita/host/DawnHostVita.cpp
new file mode 100644
index 00000000..33ef36f1
--- /dev/null
+++ b/src/dawnvita/host/DawnHostVita.cpp
@@ -0,0 +1,27 @@
+// Copyright (c) 2023 Dominic Masters
+// 
+// This software is released under the MIT License.
+// https://opensource.org/licenses/MIT
+
+#include "DawnHostVita.hpp"
+
+int main(int argc, char **args) {
+  // Success
+  std::stringstream output;
+	std::vector<std::string> hello = { "Hello" };
+	hello.push_back(",");
+	hello.push_back(" C++ ");
+	hello.push_back("world!");
+	for (auto &s : hello) {
+		// std::cout does't work ATM :(
+		output << s;
+	}
+	output << std::endl;
+	printf("%s\n", output.str().c_str());
+
+  while(1) {
+    
+  }
+	sceKernelExitProcess(0);
+  return 0;
+}
\ No newline at end of file
diff --git a/src/dawnvita/host/DawnHostVita.hpp b/src/dawnvita/host/DawnHostVita.hpp
new file mode 100644
index 00000000..38de107a
--- /dev/null
+++ b/src/dawnvita/host/DawnHostVita.hpp
@@ -0,0 +1,19 @@
+// Copyright (c) 2023 Dominic Masters
+// 
+// This software is released under the MIT License.
+// https://opensource.org/licenses/MIT
+
+#pragma once
+#include <sstream>
+#include <vector>
+#include <cstdio>
+#include <psp2/kernel/processmgr.h>
+
+/**
+ * Main entry function received by parent Win32 Operating System.
+ * 
+ * @param argc Count of arguments passed to the program.
+ * @param args Array of strings provided to the program.
+ * @return 0 for success, else for any issue/error.
+ */
+int main(int argc, char **args);
\ No newline at end of file