Index: sdl-game.cpp
===================================================================
--- sdl-game.cpp	(revision e469aed2b040a0363dcf04deeac96931497c6068)
+++ sdl-game.cpp	(revision 5081b9a818ca07c114b3f94c82df8bc279787da6)
@@ -196,5 +196,7 @@
    while (!done) {
 
+      prevTime = curTime;
       curTime = duration<float, seconds::period>(steady_clock::now() - startTime).count();
+      elapsedTime = curTime - prevTime;
 
       if (curTime - fpsStartTime >= 1.0f) {
@@ -215,12 +217,12 @@
 
          ImGui_ImplSDL2_ProcessEvent(&sdlEvent);
-         if (io.WantCaptureMouse &&
-            (e.type == UI_EVENT_MOUSEBUTTONDOWN || e.type == UI_EVENT_MOUSEBUTTONUP || e.type == UI_EVENT_UNKNOWN)) {
-            if (sdlEvent.type == SDL_MOUSEWHEEL || sdlEvent.type == SDL_MOUSEBUTTONDOWN || sdlEvent.type == SDL_MOUSEBUTTONUP) {
+         if ((e.type == UI_EVENT_MOUSEBUTTONDOWN || e.type == UI_EVENT_MOUSEBUTTONUP || e.type == UI_EVENT_UNKNOWN) &&
+             io.WantCaptureMouse) {
+            if (sdlEvent.type == SDL_MOUSEWHEEL || sdlEvent.type == SDL_MOUSEBUTTONDOWN ||
+                sdlEvent.type == SDL_MOUSEBUTTONUP) {
                continue;
             }
          }
-         if (io.WantCaptureKeyboard &&
-            (e.type == UI_EVENT_KEYDOWN || e.type == UI_EVENT_KEYUP)) {
+         if ((e.type == UI_EVENT_KEYDOWN || e.type == UI_EVENT_KEYUP) && io.WantCaptureKeyboard) {
             if (sdlEvent.type == SDL_KEYDOWN || sdlEvent.type == SDL_KEYUP) {
                continue;
@@ -232,21 +234,28 @@
 
          switch (e.type) {
-         case UI_EVENT_MOUSEMOTION:
-            // Currently unused
-            break;
-         case UI_EVENT_WINDOW:
-            // Currently unused
-            break;
-         case UI_EVENT_QUIT:
-            cout << "Quit event detected" << endl;
-            done = true;
-            break;
-         case UI_EVENT_UNHANDLED:
-            cout << "Unhandled event type: 0x" << hex << sdlEvent.type << dec << endl;
-            break;
-         case UI_EVENT_UNKNOWN:
-         default:
-            cout << "Unknown event type: 0x" << hex << sdlEvent.type << dec << endl;
-            break;
+            case UI_EVENT_QUIT:
+               cout << "Quit event detected" << endl;
+               done = true;
+               break;
+            case UI_EVENT_WINDOWRESIZE:
+               cout << "Window resize event detected" << endl;
+               shouldRecreateSwapChain = true;
+               break;
+            case UI_EVENT_KEYUP:
+               // START UNREVIEWED SECTION
+               // END UNREVIEWED SECTION
+               break;
+            case UI_EVENT_WINDOW:
+            case UI_EVENT_MOUSEBUTTONDOWN:
+            case UI_EVENT_MOUSEBUTTONUP:
+            case UI_EVENT_MOUSEMOTION:
+               break;
+            case UI_EVENT_UNHANDLED:
+               cout << "Unhandled event type: 0x" << hex << sdlEvent.type << dec << endl;
+               break;
+            case UI_EVENT_UNKNOWN:
+            default:
+               cout << "Unknown event type: 0x" << hex << sdlEvent.type << dec << endl;
+               break;
          }
       }
Index: sdl-game.hpp
===================================================================
--- sdl-game.hpp	(revision e469aed2b040a0363dcf04deeac96931497c6068)
+++ sdl-game.hpp	(revision 5081b9a818ca07c114b3f94c82df8bc279787da6)
@@ -122,5 +122,5 @@
       // TODO: Make a separate singleton Timer class
       time_point<steady_clock> startTime;
-      float fpsStartTime, curTime;
+      float fpsStartTime, curTime, prevTime, elapsedTime;
 
       int frameCount;
Index: vulkan-game.cpp
===================================================================
--- vulkan-game.cpp	(revision e469aed2b040a0363dcf04deeac96931497c6068)
+++ vulkan-game.cpp	(revision 5081b9a818ca07c114b3f94c82df8bc279787da6)
@@ -661,12 +661,12 @@
 
          ImGui_ImplSDL2_ProcessEvent(&sdlEvent);
-         if (io.WantCaptureMouse &&
-               (e.type == UI_EVENT_MOUSEBUTTONDOWN || e.type == UI_EVENT_MOUSEBUTTONUP || e.type == UI_EVENT_UNKNOWN)) {
-            if (sdlEvent.type == SDL_MOUSEWHEEL || sdlEvent.type == SDL_MOUSEBUTTONDOWN || sdlEvent.type == SDL_MOUSEBUTTONUP) {
+         if ((e.type == UI_EVENT_MOUSEBUTTONDOWN || e.type == UI_EVENT_MOUSEBUTTONUP || e.type == UI_EVENT_UNKNOWN) &&
+             io.WantCaptureMouse) {
+            if (sdlEvent.type == SDL_MOUSEWHEEL || sdlEvent.type == SDL_MOUSEBUTTONDOWN ||
+               sdlEvent.type == SDL_MOUSEBUTTONUP) {
                continue;
             }
          }
-         if (io.WantCaptureKeyboard &&
-               (e.type == UI_EVENT_KEYDOWN || e.type == UI_EVENT_KEYUP)) {
+         if ((e.type == UI_EVENT_KEYDOWN || e.type == UI_EVENT_KEYUP) && io.WantCaptureKeyboard) {
             if (sdlEvent.type == SDL_KEYDOWN || sdlEvent.type == SDL_KEYUP) {
                continue;
@@ -681,8 +681,4 @@
                cout << "Quit event detected" << endl;
                done = true;
-               break;
-            case UI_EVENT_WINDOW:
-               cout << "Window event detected" << endl;
-               // Currently unused
                break;
             case UI_EVENT_WINDOWRESIZE:
@@ -764,13 +760,16 @@
                }
                break;
+            case UI_EVENT_WINDOW:
             case UI_EVENT_MOUSEBUTTONDOWN:
             case UI_EVENT_MOUSEBUTTONUP:
             case UI_EVENT_MOUSEMOTION:
                break;
+            case UI_EVENT_UNHANDLED:
+               cout << "Unhandled event type: 0x" << hex << sdlEvent.type << dec << endl;
+               break;
             case UI_EVENT_UNKNOWN:
-               //cout << "Unknown event type: 0x" << hex << e.unknown.eventType << dec << endl;
+            default:
+               cout << "Unknown event type: 0x" << hex << sdlEvent.type << dec << endl;
                break;
-            default:
-               cout << "Unhandled UI event: " << e.type << endl;
          }
 
@@ -1574,15 +1573,12 @@
 
    for (size_t i = 0; i < swapChainImageCount; i++) {
-      if (vkCreateSemaphore(device, &semaphoreInfo, nullptr, &imageAcquiredSemaphores[i]) != VK_SUCCESS) {
-         throw runtime_error("failed to create image acquired sempahore for a frame!");
-      }
-
-      if (vkCreateSemaphore(device, &semaphoreInfo, nullptr, &renderCompleteSemaphores[i]) != VK_SUCCESS) {
-         throw runtime_error("failed to create render complete sempahore for a frame!");
-      }
-
-      if (vkCreateFence(device, &fenceInfo, nullptr, &inFlightFences[i]) != VK_SUCCESS) {
-         throw runtime_error("failed to create fence for a frame!");
-      }
+      VKUTIL_CHECK_RESULT(vkCreateSemaphore(device, &semaphoreInfo, nullptr, &imageAcquiredSemaphores[i]),
+         "failed to create image acquired sempahore for a frame!");
+
+      VKUTIL_CHECK_RESULT(vkCreateSemaphore(device, &semaphoreInfo, nullptr, &renderCompleteSemaphores[i]),
+         "failed to create render complete sempahore for a frame!");
+
+      VKUTIL_CHECK_RESULT(vkCreateFence(device, &fenceInfo, nullptr, &inFlightFences[i]),
+         "failed to create fence for a frame!");
    }
 }
