diff --git a/mingw-w64-headers/include/windows.storage.h b/mingw-w64-headers/include/windows.storage.h
index 6c34a02..ef88d30 100644
--- a/mingw-w64-headers/include/windows.storage.h
+++ b/mingw-w64-headers/include/windows.storage.h
@@ -116,14 +116,14 @@
 #endif /* __cplusplus */
 #endif
 
-#ifndef ____x_ABI_CWindows_CStorage_CApplicationDataSetVersionHandler_FWD_DEFINED__
-#define ____x_ABI_CWindows_CStorage_CApplicationDataSetVersionHandler_FWD_DEFINED__
-typedef interface __x_ABI_CWindows_CStorage_CApplicationDataSetVersionHandler __x_ABI_CWindows_CStorage_CApplicationDataSetVersionHandler;
+#ifndef ____x_ABI_CWindows_CStorage_CIApplicationDataSetVersionHandler_FWD_DEFINED__
+#define ____x_ABI_CWindows_CStorage_CIApplicationDataSetVersionHandler_FWD_DEFINED__
+typedef interface __x_ABI_CWindows_CStorage_CIApplicationDataSetVersionHandler __x_ABI_CWindows_CStorage_CIApplicationDataSetVersionHandler;
 #ifdef __cplusplus
 namespace ABI {
     namespace Windows {
         namespace Storage {
-            interface ApplicationDataSetVersionHandler;
+            interface IApplicationDataSetVersionHandler;
         }
     }
 }
@@ -312,20 +312,6 @@
 #endif /* __cplusplus */
 #endif
 
-#ifndef ____x_ABI_CWindows_CStorage_CApplicationDataSetVersionHandler_FWD_DEFINED__
-#define ____x_ABI_CWindows_CStorage_CApplicationDataSetVersionHandler_FWD_DEFINED__
-typedef interface __x_ABI_CWindows_CStorage_CApplicationDataSetVersionHandler __x_ABI_CWindows_CStorage_CApplicationDataSetVersionHandler;
-#ifdef __cplusplus
-namespace ABI {
-    namespace Windows {
-        namespace Storage {
-            interface ApplicationDataSetVersionHandler;
-        }
-    }
-}
-#endif /* __cplusplus */
-#endif
-
 #ifndef ____x_ABI_CWindows_CStorage_CISetVersionRequest_FWD_DEFINED__
 #define ____x_ABI_CWindows_CStorage_CISetVersionRequest_FWD_DEFINED__
 typedef interface __x_ABI_CWindows_CStorage_CISetVersionRequest __x_ABI_CWindows_CStorage_CISetVersionRequest;
@@ -1334,7 +1320,7 @@
 
                 virtual HRESULT STDMETHODCALLTYPE SetVersionAsync(
                     int desiredVersion,
-                    ApplicationDataSetVersionHandler *handler,
+                    IApplicationDataSetVersionHandler *handler,
                     IInspectable **setVersionOperation) = 0;
 
                 virtual HRESULT STDMETHODCALLTYPE ClearAllAsync(
@@ -1414,7 +1400,7 @@
     HRESULT (STDMETHODCALLTYPE *SetVersionAsync)(
         __x_ABI_CWindows_CStorage_CIApplicationData *This,
         int desiredVersion,
-        __x_ABI_CWindows_CStorage_CApplicationDataSetVersionHandler *handler,
+        __x_ABI_CWindows_CStorage_CIApplicationDataSetVersionHandler *handler,
         IInspectable **setVersionOperation);
 
     HRESULT (STDMETHODCALLTYPE *ClearAllAsync)(
@@ -1512,7 +1498,7 @@
 static FORCEINLINE HRESULT __x_ABI_CWindows_CStorage_CIApplicationData_get_Version(__x_ABI_CWindows_CStorage_CIApplicationData* This,int *value) {
     return This->lpVtbl->get_Version(This,value);
 }
-static FORCEINLINE HRESULT __x_ABI_CWindows_CStorage_CIApplicationData_SetVersionAsync(__x_ABI_CWindows_CStorage_CIApplicationData* This,int desiredVersion,__x_ABI_CWindows_CStorage_CApplicationDataSetVersionHandler *handler,IInspectable **setVersionOperation) {
+static FORCEINLINE HRESULT __x_ABI_CWindows_CStorage_CIApplicationData_SetVersionAsync(__x_ABI_CWindows_CStorage_CIApplicationData* This,int desiredVersion,__x_ABI_CWindows_CStorage_CIApplicationDataSetVersionHandler *handler,IInspectable **setVersionOperation) {
     return This->lpVtbl->SetVersionAsync(This,desiredVersion,handler,setVersionOperation);
 }
 static FORCEINLINE HRESULT __x_ABI_CWindows_CStorage_CIApplicationData_ClearAllAsync(__x_ABI_CWindows_CStorage_CIApplicationData* This,IInspectable **clearOperation) {
@@ -1779,22 +1765,22 @@
 #endif  /* ____x_ABI_CWindows_CStorage_CIApplicationDataStatics_INTERFACE_DEFINED__ */
 
 /*****************************************************************************
- * ApplicationDataSetVersionHandler interface
+ * IApplicationDataSetVersionHandler interface
  *
  */
-#ifndef ____x_ABI_CWindows_CStorage_CApplicationDataSetVersionHandler_INTERFACE_DEFINED__
-#define ____x_ABI_CWindows_CStorage_CApplicationDataSetVersionHandler_INTERFACE_DEFINED__
+#ifndef ____x_ABI_CWindows_CStorage_CIApplicationDataSetVersionHandler_INTERFACE_DEFINED__
+#define ____x_ABI_CWindows_CStorage_CIApplicationDataSetVersionHandler_INTERFACE_DEFINED__
 
-DEFINE_GUID(IID___x_ABI_CWindows_CStorage_CApplicationDataSetVersionHandler, 0xa05791e6, 0xcc9f, 0x4687, 0xac,0xab, 0xa3,0x64,0xfd,0x78,0x54,0x63);
+DEFINE_GUID(IID___x_ABI_CWindows_CStorage_CIApplicationDataSetVersionHandler, 0xa05791e6, 0xcc9f, 0x4687, 0xac,0xab, 0xa3,0x64,0xfd,0x78,0x54,0x63);
 #if defined(__cplusplus) && !defined(CINTERFACE)
 } /* extern "C" */
 namespace ABI {
     namespace Windows {
         namespace Storage {
             MIDL_INTERFACE("a05791e6-cc9f-4687-acab-a364fd785463")
-            ApplicationDataSetVersionHandler : public IUnknown
+            IApplicationDataSetVersionHandler : public IUnknown
             {
-                virtual HRESULT STDMETHODCALLTYPE ApplicationDataSetVersionHandler(
+                virtual HRESULT STDMETHODCALLTYPE Invoke(
                     ISetVersionRequest *setVersionRequest) = 0;
 
             };
diff --git a/mingw-w64-headers/include/windows.storage.idl b/mingw-w64-headers/include/windows.storage.idl
index 0c7b006..f815aeb 100644
--- a/mingw-w64-headers/include/windows.storage.idl
+++ b/mingw-w64-headers/include/windows.storage.idl
@@ -30,7 +30,7 @@
     interface IApplicationDataStatics;
     interface IApplicationDataSetVersionHandler;
     interface ApplicationDataContainer;
-    interface ApplicationDataSetVersionHandler; //delegate
+    // delegate  ApplicationDataSetVersionHandler;
     interface ISetVersionRequest;
     interface ISetVersionDeferral;
     typedef enum StorageDeleteOption StorageDeleteOption;
@@ -143,7 +143,7 @@
     [uuid(C3DA6FB7-B744-4B45-B0B8-223A0938D0DC)]
     interface IApplicationData : IInspectable {
       [propget] HRESULT Version(int* value);
-      HRESULT SetVersionAsync(int desiredVersion, ApplicationDataSetVersionHandler* handler, /*IAsyncAction*/ IInspectable** setVersionOperation);
+      HRESULT SetVersionAsync(int desiredVersion, IApplicationDataSetVersionHandler* handler, /*IAsyncAction*/ IInspectable** setVersionOperation);
       HRESULT ClearAllAsync(/*IAsyncAction*/ IInspectable** clearOperation);
       HRESULT ClearAsync(ApplicationDataLocality locality, /*IAsyncAction*/ IInspectable** clearOperation);
       [propget] HRESULT LocalSettings(IApplicationDataContainer** value);
@@ -168,8 +168,8 @@
     }
 
     [uuid(A05791E6-CC9F-4687-ACAB-A364FD785463)]
-    interface ApplicationDataSetVersionHandler : IUnknown {
-      HRESULT ApplicationDataSetVersionHandler(ISetVersionRequest* setVersionRequest);
+    interface IApplicationDataSetVersionHandler : IUnknown {
+      HRESULT Invoke(ISetVersionRequest* setVersionRequest);
     }
 
     [uuid(B9C76B9B-1056-4E69-8330-162619956F9B)]
