Index: vulkan-game.cpp
===================================================================
--- vulkan-game.cpp	(revision 90a424f183e0e112f04756dc489dfa92740d280d)
+++ vulkan-game.cpp	(revision fe5c3ba5dd5edf1cb22919bda8851243a2a67d6f)
@@ -90,9 +90,12 @@
       "VK_LAYER_KHRONOS_validation"
    };
+   const vector<const char*> deviceExtensions = {
+      VK_KHR_SWAPCHAIN_EXTENSION_NAME
+   };
 
    createVulkanInstance(validationLayers);
    setupDebugMessenger();
    createVulkanSurface();
-   pickPhysicalDevice();
+   pickPhysicalDevice(deviceExtensions);
 }
 
@@ -239,5 +242,5 @@
 }
 
-void VulkanGame::pickPhysicalDevice() {
+void VulkanGame::pickPhysicalDevice(const vector<const char*>& deviceExtensions) {
    uint32_t deviceCount = 0;
    vkEnumeratePhysicalDevices(instance, &deviceCount, nullptr);
@@ -252,5 +255,5 @@
    cout << endl << "Graphics cards:" << endl;
    for (const VkPhysicalDevice& device : devices) {
-      if (isDeviceSuitable(device)) {
+      if (isDeviceSuitable(device, deviceExtensions)) {
          physicalDevice = device;
          break;
@@ -264,9 +267,5 @@
 }
 
-bool VulkanGame::isDeviceSuitable(VkPhysicalDevice device) {
-   const vector<const char*> deviceExtensions = {
-      VK_KHR_SWAPCHAIN_EXTENSION_NAME
-   };
-
+bool VulkanGame::isDeviceSuitable(VkPhysicalDevice device, const vector<const char*>& deviceExtensions) {
    VkPhysicalDeviceProperties deviceProperties;
    vkGetPhysicalDeviceProperties(device, &deviceProperties);
Index: vulkan-game.hpp
===================================================================
--- vulkan-game.hpp	(revision 90a424f183e0e112f04756dc489dfa92740d280d)
+++ vulkan-game.hpp	(revision fe5c3ba5dd5edf1cb22919bda8851243a2a67d6f)
@@ -26,5 +26,5 @@
       VkInstance instance;
       VkDebugUtilsMessengerEXT debugMessenger;
-      VkSurfaceKHR surface;
+      VkSurfaceKHR surface; // TODO: Change the variable name to vulkanSurface
       VkPhysicalDevice physicalDevice = VK_NULL_HANDLE;
 
@@ -38,6 +38,6 @@
       void populateDebugMessengerCreateInfo(VkDebugUtilsMessengerCreateInfoEXT& createInfo);
       void createVulkanSurface();
-      void pickPhysicalDevice();
-      bool isDeviceSuitable(VkPhysicalDevice device);
+      void pickPhysicalDevice(const vector<const char*>& deviceExtensions);
+      bool isDeviceSuitable(VkPhysicalDevice device, const vector<const char*>& deviceExtensions);
 
       static VKAPI_ATTR VkBool32 VKAPI_CALL debugCallback(
Index: vulkan-utils.cpp
===================================================================
--- vulkan-utils.cpp	(revision 90a424f183e0e112f04756dc489dfa92740d280d)
+++ vulkan-utils.cpp	(revision fe5c3ba5dd5edf1cb22919bda8851243a2a67d6f)
@@ -1,5 +1,7 @@
 #include "vulkan-utils.hpp"
 
+#include <algorithm>
 #include <set>
+#include <stdexcept>
 #include <string>
 
@@ -52,12 +54,12 @@
 }
 
-QueueFamilyIndices VulkanUtils::findQueueFamilies(VkPhysicalDevice device, VkSurfaceKHR surface) {
+QueueFamilyIndices VulkanUtils::findQueueFamilies(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface) {
    QueueFamilyIndices indices;
 
    uint32_t queueFamilyCount = 0;
-   vkGetPhysicalDeviceQueueFamilyProperties(device, &queueFamilyCount, nullptr);
+   vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, &queueFamilyCount, nullptr);
 
    vector<VkQueueFamilyProperties> queueFamilies(queueFamilyCount);
-   vkGetPhysicalDeviceQueueFamilyProperties(device, &queueFamilyCount, queueFamilies.data());
+   vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, &queueFamilyCount, queueFamilies.data());
 
    int i = 0;
@@ -68,5 +70,5 @@
 
       VkBool32 presentSupport = false;
-      vkGetPhysicalDeviceSurfaceSupportKHR(device, i, surface, &presentSupport);
+      vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, i, surface, &presentSupport);
 
       if (queueFamily.queueCount > 0 && presentSupport) {
@@ -84,10 +86,10 @@
 }
 
-bool VulkanUtils::checkDeviceExtensionSupport(VkPhysicalDevice device, const vector<const char*>& deviceExtensions) {
+bool VulkanUtils::checkDeviceExtensionSupport(VkPhysicalDevice physicalDevice, const vector<const char*>& deviceExtensions) {
    uint32_t extensionCount;
-   vkEnumerateDeviceExtensionProperties(device, nullptr, &extensionCount, nullptr);
+   vkEnumerateDeviceExtensionProperties(physicalDevice, nullptr, &extensionCount, nullptr);
 
    vector<VkExtensionProperties> availableExtensions(extensionCount);
-   vkEnumerateDeviceExtensionProperties(device, nullptr, &extensionCount, availableExtensions.data());
+   vkEnumerateDeviceExtensionProperties(physicalDevice, nullptr, &extensionCount, availableExtensions.data());
 
    set<string> requiredExtensions(deviceExtensions.begin(), deviceExtensions.end());
@@ -100,23 +102,23 @@
 }
 
-SwapChainSupportDetails VulkanUtils::querySwapChainSupport(VkPhysicalDevice device, VkSurfaceKHR surface) {
+SwapChainSupportDetails VulkanUtils::querySwapChainSupport(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface) {
    SwapChainSupportDetails details;
 
-   vkGetPhysicalDeviceSurfaceCapabilitiesKHR(device, surface, &details.capabilities);
+   vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, &details.capabilities);
 
    uint32_t formatCount;
-   vkGetPhysicalDeviceSurfaceFormatsKHR(device, surface, &formatCount, nullptr);
+   vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, &formatCount, nullptr);
 
    if (formatCount != 0) {
       details.formats.resize(formatCount);
-      vkGetPhysicalDeviceSurfaceFormatsKHR(device, surface, &formatCount, details.formats.data());
+      vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, &formatCount, details.formats.data());
    }
 
    uint32_t presentModeCount;
-   vkGetPhysicalDeviceSurfacePresentModesKHR(device, surface, &presentModeCount, nullptr);
+   vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, &presentModeCount, nullptr);
 
    if (presentModeCount != 0) {
       details.presentModes.resize(presentModeCount);
-      vkGetPhysicalDeviceSurfacePresentModesKHR(device, surface, &presentModeCount, details.presentModes.data());
+      vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, &presentModeCount, details.presentModes.data());
    }
 
Index: vulkan-utils.hpp
===================================================================
--- vulkan-utils.hpp	(revision 90a424f183e0e112f04756dc489dfa92740d280d)
+++ vulkan-utils.hpp	(revision fe5c3ba5dd5edf1cb22919bda8851243a2a67d6f)
@@ -37,7 +37,7 @@
             const VkAllocationCallbacks* pAllocator);
 
-      static QueueFamilyIndices findQueueFamilies(VkPhysicalDevice device, VkSurfaceKHR surface);
-      static bool checkDeviceExtensionSupport(VkPhysicalDevice device, const vector<const char*>& deviceExtensions);
-      static SwapChainSupportDetails querySwapChainSupport(VkPhysicalDevice device, VkSurfaceKHR surface);
+      static QueueFamilyIndices findQueueFamilies(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface);
+      static bool checkDeviceExtensionSupport(VkPhysicalDevice physicalDevice, const vector<const char*>& deviceExtensions);
+      static SwapChainSupportDetails querySwapChainSupport(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface);
 };
 
