Index: game-gui-sdl.hpp
===================================================================
--- game-gui-sdl.hpp	(revision f286a10b0fd936a0e1df97cc55c91cf553d79902)
+++ game-gui-sdl.hpp	(revision 98f323268599a1afe306a1e43585e336f68683f6)
@@ -1,8 +1,5 @@
-//#include "game-gui.hpp"
+#include "game-gui.hpp"
 
-#define RTWO_SUCCESS true
-#define RTWO_ERROR false
-
-class GameGui_SDL {
+class GameGui_SDL : public GameGui {
    public:
       bool Init();
Index: game-gui.hpp
===================================================================
--- game-gui.hpp	(revision f286a10b0fd936a0e1df97cc55c91cf553d79902)
+++ game-gui.hpp	(revision 98f323268599a1afe306a1e43585e336f68683f6)
@@ -1,5 +1,10 @@
+#define RTWO_SUCCESS true
+#define RTWO_ERROR false
+
 class GameGui {
    public:
-      virtual void Init();
-      virtual void Shutdown();
+      virtual ~GameGui() {};
+
+      virtual bool Init() = 0;
+      virtual void Shutdown() = 0;
 };
Index: vulkan-game.cpp
===================================================================
--- vulkan-game.cpp	(revision f286a10b0fd936a0e1df97cc55c91cf553d79902)
+++ vulkan-game.cpp	(revision 98f323268599a1afe306a1e43585e336f68683f6)
@@ -91,5 +91,5 @@
       }
    private:
-      GameGui_SDL gui;
+      GameGui* gui = new GameGui_SDL();
       SDL_Window* window = nullptr;
 
@@ -106,5 +106,5 @@
       // both SDL and GLFW create window functions return NULL on failure
       bool initWindow() {
-         if (gui.Init() == RTWO_ERROR) {
+         if (gui->Init() == RTWO_ERROR) {
             cout << "UI library could not be initialized!" << endl;
             return RTWO_ERROR;
@@ -416,5 +416,6 @@
          SDL_DestroyWindow(window);
 
-         gui.Shutdown();
+         gui->Shutdown();
+         delete gui;
       }
 };
