diff --git a/layers/parameter_validation.cpp b/layers/parameter_validation.cpp
index 7070535..7e74d1e 100644
--- a/layers/parameter_validation.cpp
+++ b/layers/parameter_validation.cpp
@@ -81,7 +81,7 @@
     VkDebugReportCallbackCreateInfoEXT *tmp_dbg_create_infos = nullptr;
     VkDebugReportCallbackEXT *tmp_callbacks = nullptr;
     InstanceExtensions extensions = {};
-
+    std::unordered_set<std::string> enabled_extensions;
     VkLayerInstanceDispatchTable dispatch_table = {};
 };
 
@@ -94,6 +94,7 @@
     VkPhysicalDevice physical_device = VK_NULL_HANDLE;
     VkDevice device = VK_NULL_HANDLE;
     DeviceExtensions enables;
+    std::unordered_set<std::string> enabled_extensions;
 
     VkLayerDispatchTable dispatch_table = {};
 };
@@ -109,6 +110,8 @@
     layer_debug_actions(my_data->report_data, my_data->logging_callback, pAllocator, "lunarg_parameter_validation");
 }
 
+
+
 VKAPI_ATTR VkResult VKAPI_CALL CreateDebugReportCallbackEXT(VkInstance instance,
                                                             const VkDebugReportCallbackCreateInfoEXT *pCreateInfo,
                                                             const VkAllocationCallbacks *pAllocator,
@@ -144,6 +147,16 @@
     "VK_LAYER_LUNARG_parameter_validation", VK_LAYER_API_VERSION, 1, "LunarG Validation Layer",
 };
 
+bool ValidateRequiredExtensions(std::string api_name, const std::vector<std::string> required_extensions) {
+    bool skip = false;
+
+    for (auto reqd_ext = required_extensions.begin(); reqd_ext != required_extensions.end(); reqd_ext++) {
+        // Insert depency checks here
+    }
+
+    return skip;
+}
+
 static const int MaxParamCheckerStringLength = 256;
 
 static bool validate_string(debug_report_data *report_data, const char *apiName, const ParameterName &stringName,
@@ -248,6 +261,11 @@
         auto my_instance_data = GetLayerDataPtr(get_dispatch_key(*pInstance), instance_layer_data_map);
         assert(my_instance_data != nullptr);
 
+        // Save enabled instance extension names for validation extension APIs
+        for (uint32_t i = 0; i < pCreateInfo->enabledExtensionCount; i++) {
+            my_instance_data->enabled_extensions.emplace(pCreateInfo->ppEnabledExtensionNames[i]);
+        }
+
         layer_init_instance_dispatch_table(*pInstance, &my_instance_data->dispatch_table, fpGetInstanceProcAddr);
         my_instance_data->instance = *pInstance;
         my_instance_data->report_data =
@@ -607,6 +625,11 @@
             my_device_data->report_data = layer_debug_report_create_device(my_instance_data->report_data, *pDevice);
             layer_init_device_dispatch_table(*pDevice, &my_device_data->dispatch_table, fpGetDeviceProcAddr);
 
+            // Save enabled instance extension names for validation extension APIs
+            for (uint32_t i = 0; i < pCreateInfo->enabledExtensionCount; i++) {
+                my_instance_data->enabled_extensions.emplace(pCreateInfo->ppEnabledExtensionNames[i]);
+            }
+
             my_device_data->enables.InitFromDeviceCreateInfo(pCreateInfo);
 
             storeCreateDeviceData(*pDevice, pCreateInfo);
