diff --git a/loader/loader.c b/loader/loader.c
index 1dc69a4..c70d377 100644
--- a/loader/loader.c
+++ b/loader/loader.c
@@ -125,7 +125,7 @@
     size_t                      alignment,
     VkSystemAllocType           alloc_type)
 {
-    if (!instance && instance->alloc_callbacks.pfnAlloc) {
+    if (instance && instance->alloc_callbacks.pfnAlloc) {
         return instance->alloc_callbacks.pfnAlloc(instance->alloc_callbacks.pUserData, size, alignment, alloc_type);
     }
 #if defined(_WIN32)
@@ -139,7 +139,7 @@
     struct loader_instance     *instance,
     void                       *pMem)
 {
-    if (!instance && instance->alloc_callbacks.pfnFree) {
+    if (instance && instance->alloc_callbacks.pfnFree) {
         instance->alloc_callbacks.pfnFree(instance->alloc_callbacks.pUserData, pMem);
         return;
     }
@@ -2450,6 +2450,7 @@
     }
 
 
+    loader_destroy_ext_list(&ptr_instance->ext_list);
     return VK_SUCCESS;
 }
 
diff --git a/loader/loader.h b/loader/loader.h
index 15b78f5..5b66266 100644
--- a/loader/loader.h
+++ b/loader/loader.h
@@ -161,7 +161,7 @@
     uint32_t total_icd_count;
     struct loader_icd *icds;
     struct loader_instance *next;
-
+    struct loader_extension_list ext_list;
     /* TODO: Should keep track of application provided allocation functions */
 
     struct loader_msg_callback_map_entry *icd_msg_callback_map;
diff --git a/loader/trampoline.c b/loader/trampoline.c
index bfc0f12..3c779c7 100644
--- a/loader/trampoline.c
+++ b/loader/trampoline.c
@@ -42,7 +42,6 @@
         VkInstance* pInstance)
 {
     struct loader_instance *ptr_instance = NULL;
-    struct loader_extension_list icd_extensions;
 
     VkResult res = VK_ERROR_INITIALIZATION_FAILED;
     struct loader_layer_list instance_layer_list;
@@ -66,14 +65,6 @@
         }
     }
 
-    /* get extensions from all ICD's, merge so no duplicates, then validate */
-    memset(&icd_extensions, 0, sizeof(icd_extensions));
-    loader_get_icd_loader_instance_extensions(&icd_extensions);
-    res = loader_validate_instance_extensions(&icd_extensions, &instance_layer_list, pCreateInfo);
-    if (res != VK_SUCCESS) {
-        return res;
-    }
-
     if (pCreateInfo->pAllocCb
             && pCreateInfo->pAllocCb->pfnAlloc
             && pCreateInfo->pAllocCb->pfnFree) {
@@ -100,12 +91,24 @@
         ptr_instance->alloc_callbacks.pfnFree = pCreateInfo->pAllocCb->pfnFree;
     }
 
+    /* get extensions from all ICD's, merge so no duplicates, then validate */
+    loader_get_icd_loader_instance_extensions(&ptr_instance->ext_list);
+    res = loader_validate_instance_extensions(&ptr_instance->ext_list, &instance_layer_list, pCreateInfo);
+    if (res != VK_SUCCESS) {
+        loader_destroy_ext_list(&ptr_instance->ext_list);
+        loader_platform_thread_unlock_mutex(&loader_lock);
+        loader_heap_free(ptr_instance, ptr_instance);
+        return res;
+    }
+
     ptr_instance->disp = loader_heap_alloc(
                              ptr_instance,
                              sizeof(VkLayerInstanceDispatchTable),
                              VK_SYSTEM_ALLOC_TYPE_INTERNAL);
     if (ptr_instance->disp == NULL) {
+        loader_destroy_ext_list(&ptr_instance->ext_list);
         loader_platform_thread_unlock_mutex(&loader_lock);
+        loader_heap_free(ptr_instance, ptr_instance);
         return VK_ERROR_OUT_OF_HOST_MEMORY;
     }
     memcpy(ptr_instance->disp, &instance_disp, sizeof(instance_disp));
@@ -115,9 +118,11 @@
     /* activate any layers on instance chain */
     res = loader_enable_instance_layers(ptr_instance, pCreateInfo, &instance_layer_list);
     if (res != VK_SUCCESS) {
+        loader_destroy_ext_list(&ptr_instance->ext_list);
+        loader.instances = ptr_instance->next;
+        loader_platform_thread_unlock_mutex(&loader_lock);
         loader_heap_free(ptr_instance, ptr_instance->disp);
         loader_heap_free(ptr_instance, ptr_instance);
-        loader_platform_thread_unlock_mutex(&loader_lock);
         return res;
     }
     loader_activate_instance_layers(ptr_instance);
@@ -155,8 +160,8 @@
 
     struct loader_instance *ptr_instance = loader_instance(instance);
     loader_deactivate_instance_layers(ptr_instance);
-
-    free(ptr_instance);
+    loader_heap_free(ptr_instance, ptr_instance->disp);
+    loader_heap_free(ptr_instance, ptr_instance);
 
     loader_platform_thread_unlock_mutex(&loader_lock);
 
