diff --git a/include/mshtmdid.h b/include/mshtmdid.h
index 72a3e47..64ae3cc 100644
--- a/include/mshtmdid.h
+++ b/include/mshtmdid.h
@@ -21,6 +21,7 @@
 
 #define DISPID_NORMAL_FIRST     1000
 #define DISPID_OMDOCUMENT       DISPID_NORMAL_FIRST
+#define DISPID_DATATRANSFER     DISPID_NORMAL_FIRST
 #define DISPID_ANCHOR           DISPID_NORMAL_FIRST
 #define DISPID_BLOCK            DISPID_NORMAL_FIRST
 #define DISPID_BR               DISPID_NORMAL_FIRST
@@ -1356,6 +1357,23 @@
 #define DISPID_IHTMLWINDOW2_ONRESIZE             DISPID_EVPROP_ONRESIZE
 #define DISPID_IHTMLWINDOW2_ONSCROLL             DISPID_EVPROP_ONSCROLL
 
+/* IHTMLWindow3 */
+#define DISPID_IHTMLWINDOW3_SCREENLEFT          1170
+#define DISPID_IHTMLWINDOW3_SCREENTOP           1171
+#define DISPID_IHTMLWINDOW3_ATTACHEVENT         DISPID_HTMLOBJECT+7
+#define DISPID_IHTMLWINDOW3_DETACHEVENT         DISPID_HTMLOBJECT+8
+#define DISPID_IHTMLWINDOW3_SETTIMEOUT          1103
+#define DISPID_IHTMLWINDOW3_SETINTERVAL         1162
+#define DISPID_IHTMLWINDOW3_PRINT               1174
+#define DISPID_IHTMLWINDOW3_ONBEFOREPRINT       DISPID_EVPROP_ONBEFOREPRINT
+#define DISPID_IHTMLWINDOW3_ONAFTERPRINT        DISPID_EVPROP_ONAFTERPRINT
+#define DISPID_IHTMLWINDOW3_CLIPBOARDDATA       1175
+#define DISPID_IHTMLWINDOW3_SHOWMODELESSDIALOG  1176
+
+/* IHTMLWindow4 */
+#define DISPID_IHTMLWINDOW4_CREATEPOPUP   1180
+#define DISPID_IHTMLWINDOW4_FRAMEELEMENT  1181
+
 /* IHTMLImageElementFactory */
 #define DISPID_IHTMLIMAGEELEMENTFACTORY_CREATE                    DISPID_VALUE
 
@@ -1436,6 +1454,13 @@
 #define DISPID_IHTMLOPSPROFILE_DOREADREQUEST    8
 #define DISPID_IHTMLOPSPROFILE_DOWRITEREQUEST   9
 
+/* IHTMLDataTransfer */
+#define DISPID_IHTMLDATATRANSFER_SETDATA        DISPID_DATATRANSFER+1
+#define DISPID_IHTMLDATATRANSFER_GETDATA        DISPID_DATATRANSFER+2
+#define DISPID_IHTMLDATATRANSFER_CLEARDATA      DISPID_DATATRANSFER+3
+#define DISPID_IHTMLDATATRANSFER_DROPEFFECT     DISPID_DATATRANSFER+4
+#define DISPID_IHTMLDATATRANSFER_EFFECTALLOWED  DISPID_DATATRANSFER+5
+
 /* IHTMLEventObj */
 #define DISPID_IHTMLEVENTOBJ_SRCELEMENT     (DISPID_EVENTOBJ+1)
 #define DISPID_IHTMLEVENTOBJ_ALTKEY         (DISPID_EVENTOBJ+2)
@@ -2006,6 +2031,17 @@
 /* IHTMLScriptElement2 */
 #define DISPID_IHTMLSCRIPTELEMENT2_CHARSET  DISPID_SCRIPT+10
 
+/* IHTMLFrameBase */
+#define DISPID_IHTMLFRAMEBASE_SRC           DISPID_FRAMESITE+0
+#define DISPID_IHTMLFRAMEBASE_NAME          STDPROPID_XOBJ_NAME
+#define DISPID_IHTMLFRAMEBASE_BORDER        DISPID_FRAMESITE+2
+#define DISPID_IHTMLFRAMEBASE_FRAMEBORDER   DISPID_FRAMESITE+3
+#define DISPID_IHTMLFRAMEBASE_FRAMESPACING  DISPID_FRAMESITE+4
+#define DISPID_IHTMLFRAMEBASE_MARGINWIDTH   DISPID_FRAMESITE+5
+#define DISPID_IHTMLFRAMEBASE_MARGINHEIGHT  DISPID_FRAMESITE+6
+#define DISPID_IHTMLFRAMEBASE_NORESIZE      DISPID_FRAMESITE+7
+#define DISPID_IHTMLFRAMEBASE_SCROLLING     DISPID_FRAMESITE+8
+
 /* IHTMLFrameBase2 */
 #define DISPID_IHTMLFRAMEBASE2_CONTENTWINDOW       DISPID_FRAMESITE+9
 #define DISPID_IHTMLFRAMEBASE2_ONLOAD              DISPID_EVPROP_ONLOAD
diff --git a/include/mshtml.idl b/include/mshtml.idl
index ecc9d9d..f82391d 100644
--- a/include/mshtml.idl
+++ b/include/mshtml.idl
@@ -34,6 +34,7 @@
 
 interface IHTMLDocument2;
 interface IHTMLStyleSheetsCollection;
+interface IHTMLFrameBase;
 
 /*****************************************************************************
  *    IHTMLFiltersCollection interface
@@ -4054,6 +4055,46 @@
 }
 
 /*****************************************************************************
+ *    IHTMLDataTransfer interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f4b3-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLDataTransfer : IDispatch
+{
+    [id(DISPID_IHTMLDATATRANSFER_SETDATA)]
+    HRESULT setData(
+            [in] BSTR format,
+            [in] VARIANT *data,
+            [out, retval] VARIANT_BOOL *pret);
+
+    [id(DISPID_IHTMLDATATRANSFER_GETDATA)]
+    HRESULT getData(
+            [in] BSTR format,
+            [out, retval] VARIANT *pvarRet);
+
+    [id(DISPID_IHTMLDATATRANSFER_CLEARDATA)]
+    HRESULT clearData(
+            [in] BSTR format,
+            [out, retval] VARIANT_BOOL *pret);
+
+    [propput, id(DISPID_IHTMLDATATRANSFER_DROPEFFECT)]
+    HRESULT dropEffect([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLDATATRANSFER_DROPEFFECT)]
+    HRESULT dropEffect([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLDATATRANSFER_EFFECTALLOWED)]
+    HRESULT effectAllowed([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLDATATRANSFER_EFFECTALLOWED)]
+    HRESULT effectAllowed([out, retval] BSTR *p);
+}
+
+/*****************************************************************************
  *    IHTMLEventObj interface
  */
 [
@@ -4447,6 +4488,291 @@
 }
 
 /*****************************************************************************
+ *    DispHTMLWindow2 dispinterface
+ */
+[
+    hidden,
+    uuid(3050f55d-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLWindow2
+{
+properties:
+methods:
+    [id(DISPID_IHTMLFRAMESCOLLECTION2_ITEM)]
+    VARIANT item([in] VARIANT *pvarIndex);
+
+    [propget, id(DISPID_IHTMLFRAMESCOLLECTION2_LENGTH)]
+    long length();
+
+    [propget, id(DISPID_IHTMLWINDOW2_FRAMES)]
+    IHTMLFramesCollection2 *frames();
+
+    [propput, id(DISPID_IHTMLWINDOW2_DEFAULTSTATUS)]
+    void defaultStatus(BSTR v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_DEFAULTSTATUS)]
+    BSTR defaultStatus();
+
+    [propput, id(DISPID_IHTMLWINDOW2_STATUS)]
+    void status(BSTR v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_STATUS)]
+    BSTR status();
+
+    [id(DISPID_IHTMLWINDOW2_CLEARTIMEOUT)]
+    void clearTimeout([in] long timerID);
+
+    [id(DISPID_IHTMLWINDOW2_ALERT)]
+    void alert([in, defaultvalue("")] BSTR message);
+
+    [id(DISPID_IHTMLWINDOW2_CONFIRM)]
+    VARIANT_BOOL confirm([in, defaultvalue("")] BSTR message);
+
+    [id(DISPID_IHTMLWINDOW2_PROMPT)]
+    VARIANT prompt(
+            [in, defaultvalue("")] BSTR message,
+            [in, defaultvalue("undefined")] BSTR defstr);
+
+    [propget, id(DISPID_IHTMLWINDOW2_IMAGE)]
+    IHTMLImageElementFactory *Image();
+
+    [propget, id(DISPID_IHTMLWINDOW2_LOCATION)]
+    IHTMLLocation *location();
+
+    [propget, id(DISPID_IHTMLWINDOW2_HISTORY)]
+    IOmHistory *history();
+
+    [id(DISPID_IHTMLWINDOW2_CLOSE)]
+    void close();
+
+    [propput, id(DISPID_IHTMLWINDOW2_OPENER)]
+    void opener(VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_OPENER)]
+    VARIANT opener();
+
+    [propget, id(DISPID_IHTMLWINDOW2_NAVIGATOR)]
+    IOmNavigator *navigator();
+
+    [propput, id(DISPID_IHTMLWINDOW2_NAME)]
+    void name(BSTR v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_NAME)]
+    BSTR name();
+
+    [propget, id(DISPID_IHTMLWINDOW2_PARENT)]
+    IHTMLWindow2 *parent();
+
+    [id(DISPID_IHTMLWINDOW2_OPEN)]
+    IHTMLWindow2 *open(
+            [in, defaultvalue("")] BSTR url,
+            [in, defaultvalue("")] BSTR name,
+            [in, defaultvalue("")] BSTR features,
+            [in, defaultvalue(0)]  VARIANT_BOOL replace);
+
+    [propget, id(DISPID_IHTMLWINDOW2_SELF)]
+    IHTMLWindow2 *self();
+
+    [propget, id(DISPID_IHTMLWINDOW2_TOP)]
+    IHTMLWindow2 *top();
+
+    [propget, id(DISPID_IHTMLWINDOW2_WINDOW)]
+    IHTMLWindow2 *window();
+
+    [id(DISPID_IHTMLWINDOW2_NAVIGATE)]
+    void navigate([in] BSTR url);
+
+    [propput, id(DISPID_IHTMLWINDOW2_ONFOCUS), displaybind, bindable]
+    void onfocus(VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_ONFOCUS), displaybind, bindable]
+    VARIANT onfocus();
+
+    [propput, id(DISPID_IHTMLWINDOW2_ONBLUR), displaybind, bindable]
+    void onblur(VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_ONBLUR), displaybind, bindable]
+    VARIANT onblur();
+
+    [propget, id(DISPID_IHTMLWINDOW2_ONLOAD), displaybind, bindable]
+    VARIANT onload();
+
+    [propput, id(DISPID_IHTMLWINDOW2_ONBEFOREUNLOAD), displaybind, bindable]
+    void onbeforeunload(VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_ONBEFOREUNLOAD), displaybind, bindable]
+    VARIANT onbeforeunload();
+
+    [propput, id(DISPID_IHTMLWINDOW2_ONUNLOAD), displaybind, bindable]
+    void onunload(VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_ONUNLOAD), displaybind, bindable]
+    VARIANT onunload();
+
+    [propput, id(DISPID_IHTMLWINDOW2_ONHELP), displaybind, bindable]
+    void onhelp(VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_ONHELP), displaybind, bindable]
+    VARIANT onhelp();
+
+    [propput, id(DISPID_IHTMLWINDOW2_ONERROR), displaybind, bindable]
+    void onerror(VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_ONERROR), displaybind, bindable]
+    VARIANT onerror();
+
+    [propput, id(DISPID_IHTMLWINDOW2_ONRESIZE), displaybind, bindable]
+    void onresize(VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_ONRESIZE), displaybind, bindable]
+    VARIANT onresize();
+
+    [propput, id(DISPID_IHTMLWINDOW2_ONSCROLL), displaybind, bindable]
+    void onscroll(VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_ONSCROLL), displaybind, bindable]
+    VARIANT onscroll();
+
+    [propget, id(DISPID_IHTMLWINDOW2_DOCUMENT), source]
+    IHTMLDocument2 *document();
+
+    [propget, id(DISPID_IHTMLWINDOW2_EVENT)]
+    IHTMLEventObj *event();
+
+    [propget, id(DISPID_IHTMLWINDOW2__NEWENUM), hidden, restricted]
+    IUnknown *_newEnum();
+
+    [id(DISPID_IHTMLWINDOW2_SHOWMODALDIALOG)]
+    VARIANT showModalDialog(
+            [in] BSTR dialog,
+            [in, optional] VARIANT *varArgIn,
+            [in, optional] VARIANT *varOptions);
+
+    [id(DISPID_IHTMLWINDOW2_SHOWHELP)]
+    void showHelp(
+            [in] BSTR helpURL,
+            [in, optional] VARIANT helpArg,
+            [in, defaultvalue("")] BSTR features);
+
+    [propget, id(DISPID_IHTMLWINDOW2_SCREEN)]
+    IHTMLScreen *screen();
+
+    [propget, id(DISPID_IHTMLWINDOW2_OPTION)]
+    IHTMLOptionElementFactory *Option();
+
+    [id(DISPID_IHTMLWINDOW2_FOCUS)]
+    void focus();
+
+    [propget, id(DISPID_IHTMLWINDOW2_CLOSED)]
+    VARIANT_BOOL closed();
+
+    [id(DISPID_IHTMLWINDOW2_BLUR)]
+    void blur();
+
+    [id(DISPID_IHTMLWINDOW2_SCROLL)]
+    void scroll([in] long x, [in] long y);
+
+    [propget, id(DISPID_IHTMLWINDOW2_CLIENTINFORMATION)]
+    IOmNavigator *clientInformation();
+
+    [id(DISPID_IHTMLWINDOW2_CLEARINTERVAL)]
+    void clearInterval([in] long timerID);
+
+    [propput, id(DISPID_IHTMLWINDOW2_OFFSCREENBUFFERING)]
+    void offscreenBuffering(VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_OFFSCREENBUFFERING)]
+    VARIANT offscreenBuffering();
+
+    [id(DISPID_IHTMLWINDOW2_EXECSCRIPT)]
+    VARIANT execScript(
+            [in] BSTR _code,
+            [in, defaultvalue("JScript")] BSTR language);
+
+    [id(DISPID_IHTMLWINDOW2_TOSTRING)]
+    BSTR toString();
+
+    [id(DISPID_IHTMLWINDOW2_SCROLLBY)]
+    void scrollBy([in] long x, [in] long y);
+
+    [id(DISPID_IHTMLWINDOW2_SCROLLTO)]
+    void scrollTo([in] long x, [in] long y);
+
+    [id(DISPID_IHTMLWINDOW2_MOVETO)]
+    void moveTo([in] long x, [in] long y);
+
+    [id(DISPID_IHTMLWINDOW2_MOVEBY)]
+    void moveBy([in] long x, [in] long y);
+
+    [id(DISPID_IHTMLWINDOW2_RESIZETO)]
+    void resizeTo([in] long x, [in] long y);
+
+    [id(DISPID_IHTMLWINDOW2_RESIZEBY)]
+    void resizeBy([in] long x, [in] long y);
+
+    [propget, id(DISPID_IHTMLWINDOW2_EXTERNAL)]
+    IDispatch *external();
+
+    [propget, id(DISPID_IHTMLWINDOW3_SCREENLEFT)]
+    long screenLeft();
+
+    [propget, id(DISPID_IHTMLWINDOW3_SCREENTOP)]
+    long screenTop();
+
+    [id(DISPID_IHTMLWINDOW3_ATTACHEVENT)]
+    VARIANT_BOOL attachEvent(
+             [in] BSTR event,
+             [in] IDispatch *pDisp);
+
+    [id(DISPID_IHTMLWINDOW3_DETACHEVENT)]
+    void detachEvent(
+            [in] BSTR event,
+            [in] IDispatch *pDisp);
+
+    [id(DISPID_IHTMLWINDOW3_SETTIMEOUT)]
+    long setTimeout(
+            [in] VARIANT *expression,
+            [in] long msec,
+            [in, optional] VARIANT *language);
+
+    [id(DISPID_IHTMLWINDOW3_SETINTERVAL)]
+    long setInterval(
+            [in] VARIANT *expression,
+            [in] long msec,
+            [in, optional] VARIANT *language);
+
+    [id(DISPID_IHTMLWINDOW3_PRINT)]
+    void print();
+
+    [propput, id(DISPID_IHTMLWINDOW3_ONBEFOREPRINT), displaybind, bindable]
+    void onbeforeprint(VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW3_ONBEFOREPRINT), displaybind, bindable]
+    VARIANT onbeforeprint();
+
+    [propput, id(DISPID_IHTMLWINDOW3_ONAFTERPRINT), displaybind, bindable]
+    void onafterprint(VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW3_ONAFTERPRINT), displaybind, bindable]
+    VARIANT onafterprint();
+
+    [propget, id(DISPID_IHTMLWINDOW3_CLIPBOARDDATA)]
+    IHTMLDataTransfer *clipboardData();
+
+    [id(DISPID_IHTMLWINDOW3_SHOWMODELESSDIALOG)]
+    IHTMLWindow2 *showModelessDialog(
+            [in, defaultvalue("")] BSTR url,
+            [in, optional] VARIANT *varArgIn,
+            [in, optional] VARIANT *options);
+
+    [id(DISPID_IHTMLWINDOW4_CREATEPOPUP)]
+    IDispatch *createPopup([in, optional] VARIANT *varArgIn);
+
+    [propget, id(DISPID_IHTMLWINDOW4_FRAMEELEMENT)]
+    IHTMLFrameBase *frameElement();
+}
+
+/*****************************************************************************
  *    HTMLDocumentEvents2 interface
  */
 [
@@ -6738,6 +7064,72 @@
 }
 
 /*****************************************************************************
+ *    IHTMLFrameBase interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f311-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLFrameBase : IDispatch
+{
+    [propput, id(DISPID_IHTMLFRAMEBASE_SRC)]
+    HRESULT src([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLFRAMEBASE_SRC)]
+    HRESULT src([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLFRAMEBASE_NAME)]
+    HRESULT name([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLFRAMEBASE_NAME)]
+    HRESULT name([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLFRAMEBASE_BORDER)]
+    HRESULT border([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLFRAMEBASE_BORDER)]
+    HRESULT border([out, retval] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLFRAMEBASE_FRAMEBORDER)]
+    HRESULT frameBorder([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLFRAMEBASE_FRAMEBORDER)]
+    HRESULT frameBorder([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLFRAMEBASE_FRAMESPACING)]
+    HRESULT frameSpacing([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLFRAMEBASE_FRAMESPACING)]
+    HRESULT frameSpacing([out, retval] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLFRAMEBASE_MARGINWIDTH)]
+    HRESULT marginWidth([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLFRAMEBASE_MARGINWIDTH)]
+    HRESULT marginWidth([out, retval] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLFRAMEBASE_MARGINHEIGHT)]
+    HRESULT marginHeight([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLFRAMEBASE_MARGINHEIGHT)]
+    HRESULT marginHeight([out, retval] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLFRAMEBASE_NORESIZE)]
+    HRESULT noResize([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLFRAMEBASE_NORESIZE)]
+    HRESULT noResize([out, retval] VARIANT_BOOL *p);
+
+    [propput, id(DISPID_IHTMLFRAMEBASE_SCROLLING)]
+    HRESULT scrolling([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLFRAMEBASE_SCROLLING)]
+    HRESULT scrolling([out, retval] BSTR *p);
+}
+
+/*****************************************************************************
  *    IHTMLFrameBase2 interface
  */
 [
