(1) give a CSSStyleDeclaration attributes Sure. (2) Give an iframe a contentWindow in addition to a contentDocument Yes but not as simple as it seems. The linkage in decorate.c is merely a placeholder until the frame is expanded. Look for contentDocument in http.c. Then, I'm not sure what contentWindo means, but I suppose the window of the frame, rather than the document of the frame, check for specifications. Even that doesn't work with your example js. doc = ( iframe[ 0 ].contentWindow || iframe[ 0 ].contentDocument ).document So we're grabbing window.document or document.document, the latter doesn't make any sense. Also beware, I do some magic with content$Document which is how we expand frames automatically when their objects are referenced. Do we need to do the same for contentWindow? Probably. This should probably be its own patch; it's a bit more involved. (3) Bring back the following definition for Event. Sure I guess. (4) Apply the Event definition from (3) to the addEventHandler Ok. (5) Implement childNodes.item. Sure. Probably down in Array.prototype. Then it's part of every childNodes, and every other array, but I don't think that's a problem. Otherwise you have to make it part of every childNodes, including those in decorate.c. (6) Covered by Array.prototype.item. (7) Following on from Karl's exclusion of @ from the CSS selectors, Yeah this is ugly but I started it, so you may as well continue it. I do think regular expressions are more readable / intuitive, and powerful. Karl Dahlke